Detector::Specification::Strapi
Strapi generates its REST surface from the content-type schemas the
Content-Type Builder writes to
src/api/<name>/content-types/<name>/schema.json, plus any custom
routes declared in src/api/<name>/routes/*.{ts,js}.
Scoped to v4+. Strapi v3's config/routes.json is EOL since 2023 and
its shape is indistinguishable from an APISIX route export.
Constants
Strapi route objects always carry handler; Express/Fastify/
SvelteKit route modules never do.
"kind": "collectionType" is a Strapi-only literal, and the
singular/plural name pair under info appears in no other schema
format.
Class methods
The tech name without needing an instance, so the registry can be read off the classes themselves rather than from a parallel list.
Instance methods
Cheap filename-only filter the detector pass uses to skip
detect on files the detector cannot possibly match. The
default true preserves prior behavior (every detector runs on
every file). Override with the same predicate the body of
detect starts with — e.g., filename.ends_with?(".py") for a
Python framework detector — so the detector loop avoids the
detect dispatch on files outside the detector's language.
On large codebases (saleor's 4255 .py files) this lifts ~100
virtual detect calls per file out of the hot loop because
most detectors' inner first-line is exactly this kind of cheap
filename check.
Memo safety: applicable? consults the path
(/content-types/ gate), not just the basename.