Repository Analysis

strapi/strapi

🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.

1.0 Likely human-written View on GitHub
1.0
Adjusted Score
1.0
Raw Score
100%
Time Factor
2026-05-29
Last Push
72,275
Stars
TypeScript
Language
621,472
Lines of Code
5373
Files
281
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 15HIGH 3MEDIUM 28LOW 235

Pattern Findings

281 matches across 12 categories. Click a row to expand file-level details.

Hallucination Indicators15 hits · 180 pts
SeverityFileLineSnippet
CRITICALtests/api/plugins/graphql/crud.test.api.js143 data.posts = res.body.data.posts_connection.data.map(({ documentId, attributes }) => ({
CRITICALpackages/core/database/src/dialects/postgresql/index.ts21 this.db.connection.client.driver.types.setTypeParser(
CRITICALpackages/core/database/src/dialects/postgresql/index.ts27 this.db.connection.client.driver.types.setTypeParser(
CRITICALpackages/core/database/src/dialects/postgresql/index.ts32 this.db.connection.client.driver.types.setTypeParser(
CRITICALpackages/core/core/src/providers/registries.ts38 strapi.db.migrations.providers.internal.register(discardDocumentDrafts);
CRITICAL…server/src/services/__tests__/persisted-tables.test.ts16 strapiMock.db.dialect.schemaInspector.getTables.mockReturnValueOnce([
CRITICAL…server/src/services/__tests__/persisted-tables.test.ts25 strapiMock.db.dialect.schemaInspector.getTables.mockReturnValueOnce([
CRITICALpackages/core/admin/server/src/register.ts10 strapi.db.migrations.providers.internal.register(migrateAdminPreferedLanguageDkToDa);
CRITICALpackages/core/admin/server/src/bootstrap.ts94 const validPermissions = strapi.contentAPI.permissions.providers.action.keys();
CRITICALpackages/core/admin/server/src/services/api-token.ts147 const validPermissions = strapi.contentAPI.permissions.providers.action.keys();
CRITICALpackages/core/content-releases/server/src/register.ts19 strapi.db.migrations.providers.internal.register(addEntryDocumentToReleaseActions);
CRITICAL…ListConfiguration/tests/ListConfigurationPage.test.tsx59 mockData.contentManager.collectionTypeConfiguration.contentType.layouts.list.forEach(
CRITICALpackages/core/strapi/src/node/vite/watch.ts153 const existingRoutes = ctx.strapi.server.router.stack.filter(
CRITICALpackages/core/strapi/src/node/vite/watch.ts157 const index = ctx.strapi.server.router.stack.indexOf(route);
CRITICALpackages/core/strapi/src/node/vite/watch.ts159 ctx.strapi.server.router.stack.splice(index, 1);
Verbosity Indicators64 hits · 129 pts
SeverityFileLineSnippet
LOW…service/relations/unidirectional-relations.test.api.ts246 // Step 1: Create Product with component tag relation (draft)
LOW…service/relations/unidirectional-relations.test.api.ts263 // Step 2: Publish Tag FIRST - this triggers ghost relation creation
LOW…service/relations/unidirectional-relations.test.api.ts273 // Step 3: Publish Product - creates published component version
LOW…service/relations/unidirectional-relations.test.api.ts294 // Step 1: Create and publish a tag
LOW…service/relations/unidirectional-relations.test.api.ts304 // Step 2: Create Product with component tag relation (published)
LOW…service/relations/unidirectional-relations.test.api.ts314 // Step 3: Poublish the product
LOW…service/relations/unidirectional-relations.test.api.ts324 // Step 4: Update the tag and publish
LOW…service/relations/unidirectional-relations.test.api.ts335 // Step 5: Republish the parent
LOW…service/relations/unidirectional-relations.test.api.ts366 // Step 1: Create Product with nested component tag relation (draft)
LOW…service/relations/unidirectional-relations.test.api.ts386 // Step 2: Publish Tag FIRST
LOW…service/relations/unidirectional-relations.test.api.ts400 // Step 3: Publish Product - creates published component version
LOW…service/relations/unidirectional-relations.test.api.ts421 // Step 1: Create and publish a tag
LOW…service/relations/unidirectional-relations.test.api.ts429 // Step 2: Create Product with nested component tag relation (published)
LOW…service/relations/unidirectional-relations.test.api.ts437 // Step 3: Publish the product
LOW…service/relations/unidirectional-relations.test.api.ts447 // Step 4: Update the tag and publish
LOW…service/relations/unidirectional-relations.test.api.ts466 // Step 5: Republish the parent
LOW…-service/relations/bidirectional-relations.test.api.ts135 // Step 2: Create Article with relations to all three authors in order (not creation order)
LOW…-service/relations/bidirectional-relations.test.api.ts147 // Step 3: Publish everything (authors in non-alphabetical publish order, then article)
LOW…-service/relations/bidirectional-relations.test.api.ts153 // Step 4: Verify Article published shows A, B, C in order
LOW…-service/relations/bidirectional-relations.test.api.ts167 // Step 5: Unpublish Author B
LOW…-service/relations/bidirectional-relations.test.api.ts170 // Step 6: Republish Author B
LOW…-service/relations/bidirectional-relations.test.api.ts173 // Step 7: Verify Article published relations still show A, B, C in correct order
LOWtests/e2e/tests/settings/rbac/actions/see-role.spec.ts22 // Step 1: click the "Editor" role row
LOWtests/e2e/tests/settings/rbac/actions/edit-role.spec.ts32 // Step 1: click the "Editor" role row
LOWtests/e2e/tests/settings/rbac/actions/edit-role.spec.ts36 // Step 2: fill in the new role name and description
LOWtests/e2e/tests/settings/rbac/actions/edit-role.spec.ts40 // Step 3: modify the public permissions for articles
LOWtests/e2e/tests/settings/rbac/actions/edit-role.spec.ts49 // Step 4: save the updated role
LOWtests/e2e/tests/settings/rbac/actions/edit-role.spec.ts52 // Step 5: verify the changes in the role list
LOW…ts/e2e/tests/settings/rbac/actions/delete-role.spec.ts37 // Step 1: locate the "Author" role row
LOW…ts/e2e/tests/settings/rbac/actions/delete-role.spec.ts40 // Step 2: delete the role
LOW…ts/e2e/tests/settings/rbac/actions/delete-role.spec.ts43 // Step 3: confirm deletion in the alert dialog
LOW…ts/e2e/tests/settings/rbac/actions/delete-role.spec.ts49 // Step 4: verify the role no longer appears in the list
LOW…ests/settings/rbac/actions/assign-role-to-user.spec.ts28 // Step 1: find the "Editor" user
LOW…ests/settings/rbac/actions/assign-role-to-user.spec.ts31 // Step 2: go to the user view, wait for the page to load
LOW…ests/settings/rbac/actions/assign-role-to-user.spec.ts34 // Step 3: update the user's roles
LOW…ests/settings/rbac/actions/assign-role-to-user.spec.ts45 // Step 3: save the modifications
LOW…ests/settings/rbac/actions/assign-role-to-user.spec.ts48 // Step 4: navigate back to the Users management page
LOW…ests/settings/rbac/actions/assign-role-to-user.spec.ts51 // Step 5: make sure the user has the correct role and that the old one has been removed
LOW…ts/e2e/tests/settings/rbac/actions/create-role.spec.ts32 // Step 1: click "Create new role"
LOW…ts/e2e/tests/settings/rbac/actions/create-role.spec.ts35 // Step 2: fill in the role name and description
LOW…ts/e2e/tests/settings/rbac/actions/create-role.spec.ts39 // Step 3: assign the public "publish" permission for articles
LOW…ts/e2e/tests/settings/rbac/actions/create-role.spec.ts43 // Step 4: save the newly created role
LOW…ts/e2e/tests/settings/rbac/actions/create-role.spec.ts46 // Step 5: verify the newly created role in the list
LOW…ttings/rbac/scenarios/create-new-role.scenario.spec.ts37 // Step 1: create a new role
LOW…ttings/rbac/scenarios/create-new-role.scenario.spec.ts49 // Step 2: assign the new role to a user
LOW…ttings/rbac/scenarios/create-new-role.scenario.spec.ts59 // Step 3: edit the permissions of the role
LOW…ttings/rbac/scenarios/create-new-role.scenario.spec.ts67 // Step 4: revert the roles' assignment for the user
LOW…ttings/rbac/scenarios/create-new-role.scenario.spec.ts70 // Step 5: delete the created role
LOWexamples/complex/scripts/bench.js390 // Step 1: wipe DB (destructive; explicit per plan)
LOWexamples/complex/scripts/bench.js397 // Step 2: run v4 seed via the v4 project's seed-with-db wrapper.
LOWexamples/complex/scripts/bench.js405 // Step 3: snapshot
LOW…ages/core/content-manager/admin/src/utils/relations.ts7 * so we need to check if the mainFieldKey is defined and if the relation has a value
LOW…re/content-manager/server/src/controllers/relations.ts218 // We need to check if the entity exists
LOWpackages/core/strapi/src/node/core/plugins.ts162 * This variable stores the import paths for plugins.
LOWpackages/core/strapi/src/node/core/plugins.ts209 // This plugin is a module, so we need to check if it has a strapi-admin export
LOWpackages/core/email/shared/email-address-parser.ts224 // Step 1: Decode any RFC 2047 encoded-words
LOWpackages/core/email/shared/email-address-parser.ts227 // Step 2: Extract and remove comments, but save them
LOWpackages/core/email/shared/email-address-parser.ts231 // Step 3: Try to parse "Name <email>" format
LOWpackages/core/email/shared/email-address-parser.ts258 // Step 4: Try "email (comment)" format - use comment as name
LOWpackages/core/email/shared/email-address-parser.ts271 // Step 5: If nothing matched, treat the whole thing as email
4 more matches not shown…
Fake / Example Data78 hits · 90 pts
SeverityFileLineSnippet
LOW…manager/model/components/tests/AssigneeFilter.test.tsx24 await screen.findByRole('option', { name: 'John Doe' });
LOW…manager/model/components/tests/AssigneeFilter.test.tsx34 await screen.findByRole('option', { name: 'John Doe' });
LOW…manager/model/components/tests/AssigneeFilter.test.tsx36 await user.click(screen.getByRole('option', { name: 'John Doe' }));
LOW…manager/model/components/tests/AssigneeFilter.test.tsx38 expect(screen.getByRole('combobox')).toHaveValue('John Doe');
LOW…ager/model/id/components/tests/AssigneeSelect.test.tsx51 await waitFor(() => expect(screen.queryByText('John Doe')).not.toBeInTheDocument());
LOW…ager/model/id/components/tests/AssigneeSelect.test.tsx56 await screen.findByText('John Doe');
LOW…ager/model/id/components/tests/AssigneeSelect.test.tsx232 await waitFor(() => expect(screen.getByRole('combobox')).toHaveValue('John Doe'));
LOW…ager/model/id/components/tests/AssigneeSelect.test.tsx325 await user.click(screen.getByText('John Doe'));
LOW…s/core/types/src/modules/entity-service/params/data.ts48 * author: 'John Doe', // Optional author property
LOW…ckages/core/types/src/modules/documents/params/data.ts49 * author: 'John Doe', // Optional author property
LOW…ages/AuditLogs/utils/tests/getDisplayedFilters.test.ts8 email: 'test@test.com',
LOWpackages/core/admin/admin/src/utils/tests/users.test.ts15 expect(getDisplayName({ firstname: 'John', lastname: 'Doe' })).toBe('John Doe');
LOWpackages/core/admin/admin/src/utils/tests/users.test.ts23 expect(getDisplayName({ email: 'user@example.com' })).toBe('user@example.com');
LOWpackages/core/admin/admin/src/utils/tests/users.test.ts45 expect(getInitials({ email: 'user@example.com' })).toBe('U');
LOW…in/admin/src/components/MainNav/tests/NavUser.test.tsx7 getDisplayName: jest.fn(() => 'John Doe'),
LOW…in/admin/src/components/MainNav/tests/NavUser.test.tsx27 const userName = screen.getByText('John Doe');
LOWpackages/core/admin/admin/src/translations/no.json35 "Auth.form.username.placeholder": "John Doe",
LOWpackages/core/admin/admin/src/translations/da.json45 "Auth.form.username.placeholder": "John Doe",
LOW…re/content-manager/admin/src/utils/tests/users.test.ts22 ).toEqual('John Doe');
LOW…re/content-manager/admin/src/history/tests/mockData.ts15 'Certainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend. Nu
LOW…re/content-manager/admin/src/history/tests/mockData.ts15 'Certainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend. Nu
LOW…re/content-manager/admin/src/history/tests/mockData.ts17 '\nCertainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend.
LOW…re/content-manager/admin/src/history/tests/mockData.ts17 '\nCertainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend.
LOW…re/content-manager/admin/src/history/tests/mockData.ts449 'Certainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend. Nu
LOW…re/content-manager/admin/src/history/tests/mockData.ts449 'Certainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend. Nu
LOW…re/content-manager/admin/src/history/tests/mockData.ts451 '\nCertainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend.
LOW…re/content-manager/admin/src/history/tests/mockData.ts451 '\nCertainly! Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ac libero ac urna dictum eleifend.
LOW…ger/admin/src/pages/EditView/utils/tests/forms.test.ts54 default: 'test@test.com',
LOW…ger/admin/src/pages/EditView/utils/tests/forms.test.ts63 email: 'test@test.com',
LOW…e/email/documentation/1.0.0/overrides/email-Email.json39 "example": "Lorem ipsum title"
LOW…e/email/documentation/1.0.0/overrides/email-Email.json43 "example": "Lorem ipsum"
LOW…e/email/documentation/1.0.0/overrides/email-Email.json48 "example": "<h1>Lorem ipsum</h1>"
LOWpackages/core/email/shared/email-address-parser.ts156 * - "\"John Doe\"" -> "John Doe"
LOW…ugins/users-permissions/admin/src/translations/da.json38 "PopUpForm.Email.options.from.name.placeholder": "John Doe",
LOW…server/src/services/__tests__/ai-localizations.test.ts120 author: { id: 5, name: 'John Doe' },
LOW…server/src/services/__tests__/ai-localizations.test.ts126 expect(result.author).toEqual({ id: 5, name: 'John Doe' });
LOW…server/src/services/__tests__/ai-localizations.test.ts420 author: { id: 5, name: 'John Doe', email: 'john@example.com' },
LOW…server/src/services/__tests__/ai-localizations.test.ts432 expect(result.author).toEqual({ id: 5, name: 'John Doe', email: 'john@example.com' });
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts81 to: 'user@example.com',
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts124 to: 'user@example.com',
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts139 to: 'user@example.com',
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts156 to: 'user@example.com',
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts171 to: 'user@example.com',
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts187 to: 'user@example.com',
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts209 to: 'user@example.com',
LOW…azon-ses/src/__tests__/backwards-compat.vitest.test.ts224 to: 'user@example.com',
LOWpackages/providers/email-nodemailer/README.md754// { name: 'John Doe', email: 'john@example.com', original: '...' }
LOWpackages/providers/email-nodemailer/README.md775formatEmailAddress('John Doe', 'john@example.com');
LOWpackages/providers/email-nodemailer/README.md823isValidEmail('user@example.com'); // true
LOWpackages/providers/email-nodemailer/README.md833// { name: null, email: 'user@example.com', original: 'User@Example.COM' }
LOW…/providers/email-nodemailer/src/utils/email-address.ts372 * isValidEmail('user@example.com')
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts25 expect(result.name).toBe('John Doe');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts87 expect(result.email).toBe('admin@example.com');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts154 expect(result.email).toBe('user@example.com');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts160 expect(result.name).toBe('John Doe');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts172 expect(result.email).toBe('user@example.com');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts186 expect(normalizeEmail('User@Example.COM')).toBe('user@example.com');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts190 expect(normalizeEmail('user@example.com')).toBe('user@example.com');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts236 const result = formatEmailAddress('John Doe', 'john@example.com');
LOW…s/email-nodemailer/src/__tests__/email-address.test.ts265 const result = formatEmailAddress('John Doe', 'John.Doe@Example.COM');
18 more matches not shown…
Decorative Section Separators27 hits · 81 pts
SeverityFileLineSnippet
MEDIUMtests/e2e/tests/admin/admin-tokens.spec.ts101// ─────────────────────────────────────────────────────────────────────────────
MEDIUMtests/e2e/tests/admin/admin-tokens.spec.ts103// ─────────────────────────────────────────────────────────────────────────────
MEDIUMtests/e2e/tests/admin/admin-tokens.spec.ts151// ─────────────────────────────────────────────────────────────────────────────
MEDIUMtests/e2e/tests/admin/admin-tokens.spec.ts153// ─────────────────────────────────────────────────────────────────────────────
MEDIUMtests/e2e/tests/admin/admin-tokens.spec.ts215// ─────────────────────────────────────────────────────────────────────────────
MEDIUMtests/e2e/tests/admin/admin-tokens.spec.ts217// ─────────────────────────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js37// ─── arg parsing ──────────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js69// ─── environment capture ──────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js176// ─── snapshot helpers ─────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js194// ─── row count collection ─────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js222// ─── migrate-then-exit runner ─────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js278// ─── subcommand: run ──────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js366// ─── subcommand: seed ─────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js416// ─── subcommand: suite ────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench.js449// ─── main ─────────────────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js29// ─── argument parsing ────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js71// ─── result loading ──────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js150// ─── formatting helpers ──────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js192// ─── per-cell detail ─────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js205// ─── representative pick (for setup block) ───────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js237// ─── markdown rendering ──────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js343// ─── HTML rendering ──────────────────────────────────────────────────────────
MEDIUMexamples/complex/scripts/bench-compare.js655// ─── emit ────────────────────────────────────────────────────────────────────
MEDIUM…rc/mcp/__tests__/derive-content-type-mcp-tools.test.ts939 // ── relation fixtures ─────────────────────────────────────────────────────
MEDIUM…rc/mcp/__tests__/derive-content-type-mcp-tools.test.ts949 // ── xOne relation tests ───────────────────────────────────────────────────
MEDIUM…rc/mcp/__tests__/derive-content-type-mcp-tools.test.ts1013 // ── xMany relation tests ──────────────────────────────────────────────────
MEDIUM…rc/mcp/__tests__/derive-content-type-mcp-tools.test.ts1136 // ── JSON Schema regression tests ──────────────────────────────────────────
Hyper-Verbose Identifiers56 hits · 56 pts
SeverityFileLineSnippet
LOWtests/utils/cli-transfer-remote-e2e/seed-media.js13function createDeterministicTransferTestFile(fileIndex, byteLength) {
LOW…pi/api/populate/query-array-limit-populate.test.api.js40function buildIndexedPopulateQuery(count) {
LOW…core/upload/content-api/upload-concurrency.test.api.js24function attachUploadConcurrencyInstrumentation() {
LOW…core/upload/content-api/upload-concurrency.test.api.js76function postPlainTextMultipartUpload(strapiInstance, fixtures) {
LOW…core/upload/content-api/upload-concurrency.test.api.js95function createDistinctTextFixtures(count) {
LOW…rc/api/config/utils/resync-super-admin-after-import.js14module.exports = async function resyncSuperAdminAfterImport(strapi) {
LOWexamples/complex/scripts/validate-migration.js256async function validateDocumentStructure(strapi, expected) {
LOWexamples/complex/scripts/validate-migration.js341async function validateRelationsPresence(strapi) {
LOWexamples/complex/scripts/validate-migration.js371function buildPopulateFromAttributes(attributes) {
LOWexamples/complex/scripts/validate-migration.js521function areRelationSummariesEqual(a, b) {
LOWexamples/complex/scripts/validate-migration.js599async function validateNestedComponentRelationParity(strapi) {
LOWexamples/complex/scripts/validate-migration.js653async function verifyMigrationFixAtDbLevel(strapi) {
LOWexamples/complex/scripts/validate-migration.js936async function validateRelationParityForDp(strapi, uid) {
LOWscripts/release.js145function rewriteInternalPeerDependencies(version, dryRun) {
LOWpackages/core/review-workflows/server/src/register.ts45function extendReviewWorkflowContentTypes({ strapi }: { strapi: Core.Strapi }) {
LOW…e/review-workflows/server/src/controllers/workflows.ts18function getWorkflowsPermissionChecker({ strapi }: { strapi: Core.Strapi }, userAbility: unknown) {
LOW…es/core/review-workflows/server/src/services/stages.ts438function assertAtLeastOneStageRemain(workflowStages: any, diffStages: any) {
LOW…rc/services/document-service/transform/id-transform.ts12async function transformParamsDocumentId(
LOWpackages/core/utils/src/content-api-route-params.ts18export function getExtraQueryKeysFromRoute(route?: RouteLike): string[] {
LOWpackages/core/utils/src/content-api-route-params.ts25export function getExtraRootKeysFromRouteBody(route?: RouteLike): string[] {
LOW…/content-manager/admin/src/preview/utils/fieldUtils.ts50export function getAttributeSchemaFromPath({
LOW…ew/components/FormInputs/Wysiwyg/utils/continueList.ts19function newlineAndIndentContinueMarkdownList(cm: CodeMirror.Editor) {
LOW…ew/components/FormInputs/Wysiwyg/utils/continueList.ts68function incrementRemainingMarkdownListNumbers(cm: CodeMirror.Editor, pos: CodeMirror.Position) {
LOW…/content-manager/server/src/mcp/schemas/data-schema.ts29export function buildComponentInputSchema(
LOW…nager/server/src/services/utils/configuration/index.ts18async function createDefaultConfiguration(schema: any) {
LOW…/strapi/src/cli/commands/export/validate-dir-format.ts16export function prepareExportDirFormatCli(command: Command) {
LOW…/strapi/src/cli/commands/export/validate-dir-format.ts43export function normalizeExportDirFormatOpts(opts: {
LOW…e/upload/admin/src/utils/findRecursiveFolderByValue.ts11export function findRecursiveFolderByValue(
LOW…server/src/controllers/validation/admin/folder-file.ts63 async function validateMoveFoldersNotInsideThemselves(value) {
LOW…server/src/controllers/validation/admin/folder-file.ts97export async function validateMoveManyFoldersFiles(body: unknown) {
LOW…s/core/data-transfer/src/utils/transfer-asset-chunk.ts5export function createTransferAssetStreamChunk(
LOW…s/core/data-transfer/src/utils/transfer-asset-chunk.ts27export function decodeTransferAssetStreamItem(item: {
LOW…s/core/data-transfer/src/utils/transfer-asset-chunk.ts64export function decodeTransferAssetStreamData(data: unknown, encoding?: 'base64'): Buffer {
LOW…s/core/data-transfer/src/utils/transfer-asset-chunk.ts89export function transferAssetStreamChunkByteLength(chunk: {
LOW…ore/data-transfer/src/utils/transfer-websocket-json.ts57export function stringifyTransferWebSocketPayload(payload: Record<string, unknown>): string {
LOW…/core/data-transfer/src/utils/__tests__/stream.test.ts14 source.pause = function trackPauseForBackpressureTest() {
LOW…/core/data-transfer/src/utils/__tests__/stream.test.ts78 source.pause = function trackPauseForBackpressureTest() {
LOWpackages/core/data-transfer/src/__tests__/test-utils.ts43 stream.pause = function pauseWithBackpressureTracking(this: Readable) {
LOWpackages/core/data-transfer/src/__tests__/test-utils.ts74 source.pause = function pauseWithBackpressureTracking(this: Readable) {
LOW…core/data-transfer/src/engine/__tests__/engine.test.ts28function expectHeapGrowthWithinNoise(heapGrowth: number, totalBytes: number) {
LOW…core/data-transfer/src/engine/__tests__/engine.test.ts1610 stream.pause = function trackConfigurationStreamPause() {
LOW…iders/local-destination/assets-destination-writable.ts22export function createAssetsDestinationWritable(
LOW…a-transfer/src/strapi/providers/local-source/assets.ts74export async function signUploadFileForTransfer(strapi: Core.Strapi, file: IFile) {
LOW…min/src/components/AIChat/providers/SchemaProvider.tsx25function extractSchemaChangesFromMessage(message: AIMessage): SchemaChange[] {
LOWpackages/providers/email-nodemailer/src/index.ts136function getCapabilitiesFromOptions(opts: ProviderOptions): ProviderCapabilities {
LOW…li/create-strapi-app/templates/example/scripts/seed.js112async function checkFileExistsBeforeUpload(files) {
LOW…create-strapi-app/templates/example-js/scripts/seed.js112async function checkFileExistsBeforeUpload(files) {
LOWpackages/cli/create-strapi-app/src/utils/usage.ts9function addPackageJsonStrapiMetadata(metadata: Record<string, unknown>, scope: Scope) {
LOWpackages/cli/cloud/src/deploy-project/action.ts255function hasPendingOrLiveDeployment(
LOWpackages/cli/cloud/src/services/notification.ts25export function notificationServiceFactory({ logger }: CLIContext) {
LOW…/src/create-project/utils/get-project-name-from-pkg.ts4export async function getProjectNameFromPackageJson(ctx: CLIContext): Promise<string> {
LOW…ud/src/create-project/utils/project-questions.utils.ts8export function questionDefaultValuesMapper(
LOW…ud/src/create-project/utils/project-questions.utils.ts63export function getProjectNodeVersionDefault(question: DistinctQuestion<ProjectAnswers>): string {
LOW…es/admin-test-utils/src/patches/response-json-realm.ts41 return function teardownResponseJsonRealm() {
LOW.github/actions/community-pr-triage/src/lib/linear.ts139export async function fetchAllTicketsByPRNumber(
LOWtemplates/website/src/bootstrap.ts221async function importLeadFormSubmissionData() {
Over-Commented Block30 hits · 30 pts
SeverityFileLineSnippet
LOW…sts/api/core/admin/admin-strategy-sessions.test.api.ts141 it.todo(
LOW…sts/api/core/admin/admin-strategy-sessions.test.api.ts161 // .setToken(accessToken)
LOWtests/api/core/admin/admin-logout-sessions.test.api.ts141 // expect(loginB.statusCode).toBe(200);
LOWtests/app-template/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOWexamples/experimental-dev/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOWexamples/empty/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOWexamples/kitchensink-ts/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOWexamples/kitchensink-ts/src/admin/app.example.tsx1import type { StrapiApp } from '@strapi/strapi/admin';
LOWexamples/kitchensink-ts/src/admin/app.example.tsx21 // 'pt-BR',
LOWexamples/getstarted/config/src/cron-tasks.js21 // 'myJob': {
LOWexamples/getstarted/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOWexamples/kitchensink/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOWscripts/front/utils/search-files-content.js101
LOW…ntent-manager/admin/src/preview/utils/previewScript.ts1061 const matchedElements = Array.from(getElementsByPath(field)).filter(
LOW…/plugins/graphql/server/src/services/builders/utils.ts41 // builders/resolvers/association.ts + rootQueryArgsByPath). Omitting them broke
LOWpackages/utils/upgrade/src/modules/version/range.ts21 // patch, or build version to be taken in the range.
LOW…eate-strapi-app/templates/vanilla-js/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOW…rapi-app/templates/vanilla-js/src/admin/app.example.js1const config = {
LOW…/create-strapi-app/templates/example/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOW…strapi-app/templates/example/src/admin/app.example.tsx1import type { StrapiApp } from '@strapi/strapi/admin';
LOW…strapi-app/templates/example/src/admin/app.example.tsx21 // 'pt-BR',
LOW…eate-strapi-app/templates/example-js/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOW…rapi-app/templates/example-js/src/admin/app.example.js1const config = {
LOW…/create-strapi-app/templates/vanilla/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOW…strapi-app/templates/vanilla/src/admin/app.example.tsx1import type { StrapiApp } from '@strapi/strapi/admin';
LOW…strapi-app/templates/vanilla/src/admin/app.example.tsx21 // 'pt-BR',
LOW.github/actions/yarn-nm-install/action.yml1########################################################################################
LOWtemplates/website/public/robots.txt1# To prevent search engines from seeing the site altogether, uncomment the next two lines:
LOWtemplates/website/src/admin/app.example.tsx1import type { StrapiApp } from '@strapi/strapi/admin';
LOWtemplates/website/src/admin/app.example.tsx21 // 'pt-BR',
Synthetic Comment Markers3 hits · 18 pts
SeverityFileLineSnippet
HIGH…/core/upload/admin/src/ai/components/AIUploadModal.tsx188 '{count, plural, one {# asset uploaded} other {# assets uploaded}}, review AI generated metadata',
HIGHpackages/core/upload/admin/src/translations/en.json224 "ai.modal.title": "{count, plural, one {# asset uploaded} other {# assets uploaded}}, review AI generated metadata",
HIGH.github/workflows/needs-qa-checklist.yml49 ## AI-generated QA checklist
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippet
LOWscripts/remove-dist-tag.sh18# Check if dist tag is latest, beta, alpha or next and reject
LOW.github/actions/pr_diff/script.sh200 # Check if the pull request is merged
LOW.github/actions/pr_diff/script.sh236# Check if there are merged PRs
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippet
MEDIUM.github/workflows/pr-reviewer.yml74 # Tools for comprehensive PR review
Slop Phrases2 hits · 2 pts
SeverityFileLineSnippet
LOW…omponents/GuidedTour/Steps/ContentTypeBuilderSteps.tsx204 defaultMessage="Don't forget to add a field to your content type"
LOWpackages/core/admin/admin/src/translations/en.json417 "app.components.GuidedTour.CM.create.content": "<p>Create and manage all the content here in the Content Manager.</p><
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWscripts/front/utils/search-files-content.js100// Usage example
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippet
LOWpackages/core/core/src/services/server/http-server.ts15 const listener: http.RequestListener = function handleRequest(req, res) {