@endora-commerce/cli 0.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +37 -0
- package/dist/bin/endora.d.ts +28 -0
- package/dist/bin/endora.d.ts.map +1 -0
- package/dist/bin/endora.js +926 -0
- package/dist/bin/endora.js.map +1 -0
- package/dist/check/estate.d.ts +189 -0
- package/dist/check/estate.d.ts.map +1 -0
- package/dist/check/estate.js +1037 -0
- package/dist/check/estate.js.map +1 -0
- package/dist/check/hosts.d.ts +25 -0
- package/dist/check/hosts.d.ts.map +1 -0
- package/dist/check/hosts.js +1347 -0
- package/dist/check/hosts.js.map +1 -0
- package/dist/check/index.d.ts +60 -0
- package/dist/check/index.d.ts.map +1 -0
- package/dist/check/index.js +111 -0
- package/dist/check/index.js.map +1 -0
- package/dist/check/layout.d.ts +136 -0
- package/dist/check/layout.d.ts.map +1 -0
- package/dist/check/layout.js +262 -0
- package/dist/check/layout.js.map +1 -0
- package/dist/check/ledger.d.ts +98 -0
- package/dist/check/ledger.d.ts.map +1 -0
- package/dist/check/ledger.js +173 -0
- package/dist/check/ledger.js.map +1 -0
- package/dist/check/peer-owners.d.ts +116 -0
- package/dist/check/peer-owners.d.ts.map +1 -0
- package/dist/check/peer-owners.js +225 -0
- package/dist/check/peer-owners.js.map +1 -0
- package/dist/check/report.d.ts +33 -0
- package/dist/check/report.d.ts.map +1 -0
- package/dist/check/report.js +107 -0
- package/dist/check/report.js.map +1 -0
- package/dist/check/run.d.ts +147 -0
- package/dist/check/run.d.ts.map +1 -0
- package/dist/check/run.js +111 -0
- package/dist/check/run.js.map +1 -0
- package/dist/checks.d.ts +17 -0
- package/dist/checks.d.ts.map +1 -0
- package/dist/checks.js +17 -0
- package/dist/checks.js.map +1 -0
- package/dist/dev/index.d.ts +83 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +298 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/generate/divergence.d.ts +38 -0
- package/dist/generate/divergence.d.ts.map +1 -0
- package/dist/generate/divergence.js +237 -0
- package/dist/generate/divergence.js.map +1 -0
- package/dist/generate/index.d.ts +90 -0
- package/dist/generate/index.d.ts.map +1 -0
- package/dist/generate/index.js +369 -0
- package/dist/generate/index.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/inputs/declaration.d.ts +18 -0
- package/dist/inputs/declaration.d.ts.map +1 -0
- package/dist/inputs/declaration.js +64 -0
- package/dist/inputs/declaration.js.map +1 -0
- package/dist/inputs/env-file.d.ts +73 -0
- package/dist/inputs/env-file.d.ts.map +1 -0
- package/dist/inputs/env-file.js +134 -0
- package/dist/inputs/env-file.js.map +1 -0
- package/dist/inputs/prompt.d.ts +21 -0
- package/dist/inputs/prompt.d.ts.map +1 -0
- package/dist/inputs/prompt.js +59 -0
- package/dist/inputs/prompt.js.map +1 -0
- package/dist/inputs/resolve.d.ts +163 -0
- package/dist/inputs/resolve.d.ts.map +1 -0
- package/dist/inputs/resolve.js +290 -0
- package/dist/inputs/resolve.js.map +1 -0
- package/dist/install/host.d.ts +27 -0
- package/dist/install/host.d.ts.map +1 -0
- package/dist/install/host.js +90 -0
- package/dist/install/host.js.map +1 -0
- package/dist/install/index.d.ts +173 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +793 -0
- package/dist/install/index.js.map +1 -0
- package/dist/install/wizard.d.ts +144 -0
- package/dist/install/wizard.d.ts.map +1 -0
- package/dist/install/wizard.js +362 -0
- package/dist/install/wizard.js.map +1 -0
- package/dist/lib/admin-artefacts.d.ts +70 -0
- package/dist/lib/admin-artefacts.d.ts.map +1 -0
- package/dist/lib/admin-artefacts.js +354 -0
- package/dist/lib/admin-artefacts.js.map +1 -0
- package/dist/lib/admin-surfaces.d.ts +298 -0
- package/dist/lib/admin-surfaces.d.ts.map +1 -0
- package/dist/lib/admin-surfaces.js +669 -0
- package/dist/lib/admin-surfaces.js.map +1 -0
- package/dist/lib/delegated-composer.d.ts +85 -0
- package/dist/lib/delegated-composer.d.ts.map +1 -0
- package/dist/lib/delegated-composer.js +241 -0
- package/dist/lib/delegated-composer.js.map +1 -0
- package/dist/lib/divergence-artefacts.d.ts +305 -0
- package/dist/lib/divergence-artefacts.d.ts.map +1 -0
- package/dist/lib/divergence-artefacts.js +828 -0
- package/dist/lib/divergence-artefacts.js.map +1 -0
- package/dist/lib/divergence.d.ts +337 -0
- package/dist/lib/divergence.d.ts.map +1 -0
- package/dist/lib/divergence.js +1005 -0
- package/dist/lib/divergence.js.map +1 -0
- package/dist/lib/docs-artefacts.d.ts +395 -0
- package/dist/lib/docs-artefacts.d.ts.map +1 -0
- package/dist/lib/docs-artefacts.js +781 -0
- package/dist/lib/docs-artefacts.js.map +1 -0
- package/dist/lib/emitted-exports.d.ts +21 -0
- package/dist/lib/emitted-exports.d.ts.map +1 -0
- package/dist/lib/emitted-exports.js +96 -0
- package/dist/lib/emitted-exports.js.map +1 -0
- package/dist/lib/emitted-freshness.d.ts +112 -0
- package/dist/lib/emitted-freshness.d.ts.map +1 -0
- package/dist/lib/emitted-freshness.js +288 -0
- package/dist/lib/emitted-freshness.js.map +1 -0
- package/dist/lib/entity-index-artefact.d.ts +95 -0
- package/dist/lib/entity-index-artefact.d.ts.map +1 -0
- package/dist/lib/entity-index-artefact.js +210 -0
- package/dist/lib/entity-index-artefact.js.map +1 -0
- package/dist/lib/instance-build-inputs.d.ts +108 -0
- package/dist/lib/instance-build-inputs.d.ts.map +1 -0
- package/dist/lib/instance-build-inputs.js +165 -0
- package/dist/lib/instance-build-inputs.js.map +1 -0
- package/dist/lib/module-docs.d.ts +473 -0
- package/dist/lib/module-docs.d.ts.map +1 -0
- package/dist/lib/module-docs.js +711 -0
- package/dist/lib/module-docs.js.map +1 -0
- package/dist/lib/module-package-subpaths.d.ts +56 -0
- package/dist/lib/module-package-subpaths.d.ts.map +1 -0
- package/dist/lib/module-package-subpaths.js +223 -0
- package/dist/lib/module-package-subpaths.js.map +1 -0
- package/dist/lib/module-packages.d.ts +200 -0
- package/dist/lib/module-packages.d.ts.map +1 -0
- package/dist/lib/module-packages.js +580 -0
- package/dist/lib/module-packages.js.map +1 -0
- package/dist/lib/module-population.d.ts +129 -0
- package/dist/lib/module-population.d.ts.map +1 -0
- package/dist/lib/module-population.js +172 -0
- package/dist/lib/module-population.js.map +1 -0
- package/dist/lib/module-roots.d.ts +337 -0
- package/dist/lib/module-roots.d.ts.map +1 -0
- package/dist/lib/module-roots.js +586 -0
- package/dist/lib/module-roots.js.map +1 -0
- package/dist/lib/nested-checkouts.d.ts +33 -0
- package/dist/lib/nested-checkouts.d.ts.map +1 -0
- package/dist/lib/nested-checkouts.js +160 -0
- package/dist/lib/nested-checkouts.js.map +1 -0
- package/dist/lib/platform-root.d.ts +43 -0
- package/dist/lib/platform-root.d.ts.map +1 -0
- package/dist/lib/platform-root.js +134 -0
- package/dist/lib/platform-root.js.map +1 -0
- package/dist/lib/platform-surface.d.ts +235 -0
- package/dist/lib/platform-surface.d.ts.map +1 -0
- package/dist/lib/platform-surface.js +393 -0
- package/dist/lib/platform-surface.js.map +1 -0
- package/dist/lib/port-registrations.d.ts +223 -0
- package/dist/lib/port-registrations.d.ts.map +1 -0
- package/dist/lib/port-registrations.js +532 -0
- package/dist/lib/port-registrations.js.map +1 -0
- package/dist/lib/read-size.d.ts +154 -0
- package/dist/lib/read-size.d.ts.map +1 -0
- package/dist/lib/read-size.js +182 -0
- package/dist/lib/read-size.js.map +1 -0
- package/dist/lib/registration-owners.d.ts +79 -0
- package/dist/lib/registration-owners.d.ts.map +1 -0
- package/dist/lib/registration-owners.js +77 -0
- package/dist/lib/registration-owners.js.map +1 -0
- package/dist/lib/release-index.d.ts +53 -0
- package/dist/lib/release-index.d.ts.map +1 -0
- package/dist/lib/release-index.js +162 -0
- package/dist/lib/release-index.js.map +1 -0
- package/dist/lib/repeating-timers.d.ts +79 -0
- package/dist/lib/repeating-timers.d.ts.map +1 -0
- package/dist/lib/repeating-timers.js +189 -0
- package/dist/lib/repeating-timers.js.map +1 -0
- package/dist/lib/source-text.d.ts +34 -0
- package/dist/lib/source-text.d.ts.map +1 -0
- package/dist/lib/source-text.js +80 -0
- package/dist/lib/source-text.js.map +1 -0
- package/dist/lib/specifiers.d.ts +20 -0
- package/dist/lib/specifiers.d.ts.map +1 -0
- package/dist/lib/specifiers.js +130 -0
- package/dist/lib/specifiers.js.map +1 -0
- package/dist/lib/sql-tables.d.ts +166 -0
- package/dist/lib/sql-tables.d.ts.map +1 -0
- package/dist/lib/sql-tables.js +464 -0
- package/dist/lib/sql-tables.js.map +1 -0
- package/dist/lib/switchable-modules.d.ts +54 -0
- package/dist/lib/switchable-modules.d.ts.map +1 -0
- package/dist/lib/switchable-modules.js +104 -0
- package/dist/lib/switchable-modules.js.map +1 -0
- package/dist/lib/tailwind-sources.d.ts +136 -0
- package/dist/lib/tailwind-sources.d.ts.map +1 -0
- package/dist/lib/tailwind-sources.js +307 -0
- package/dist/lib/tailwind-sources.js.map +1 -0
- package/dist/lib/ui-layer.d.ts +54 -0
- package/dist/lib/ui-layer.d.ts.map +1 -0
- package/dist/lib/ui-layer.js +57 -0
- package/dist/lib/ui-layer.js.map +1 -0
- package/dist/lib/workspace-packages.d.ts +186 -0
- package/dist/lib/workspace-packages.d.ts.map +1 -0
- package/dist/lib/workspace-packages.js +351 -0
- package/dist/lib/workspace-packages.js.map +1 -0
- package/dist/new-instance/deploy.d.ts +211 -0
- package/dist/new-instance/deploy.d.ts.map +1 -0
- package/dist/new-instance/deploy.js +1381 -0
- package/dist/new-instance/deploy.js.map +1 -0
- package/dist/new-instance/docs-toolchain.d.ts +66 -0
- package/dist/new-instance/docs-toolchain.d.ts.map +1 -0
- package/dist/new-instance/docs-toolchain.js +69 -0
- package/dist/new-instance/docs-toolchain.js.map +1 -0
- package/dist/new-instance/host.d.ts +124 -0
- package/dist/new-instance/host.d.ts.map +1 -0
- package/dist/new-instance/host.js +276 -0
- package/dist/new-instance/host.js.map +1 -0
- package/dist/new-instance/index.d.ts +118 -0
- package/dist/new-instance/index.d.ts.map +1 -0
- package/dist/new-instance/index.js +567 -0
- package/dist/new-instance/index.js.map +1 -0
- package/dist/new-instance/modules.d.ts +188 -0
- package/dist/new-instance/modules.d.ts.map +1 -0
- package/dist/new-instance/modules.js +392 -0
- package/dist/new-instance/modules.js.map +1 -0
- package/dist/new-instance/template.d.ts +505 -0
- package/dist/new-instance/template.d.ts.map +1 -0
- package/dist/new-instance/template.js +1886 -0
- package/dist/new-instance/template.js.map +1 -0
- package/dist/new-module/emit.d.ts +67 -0
- package/dist/new-module/emit.d.ts.map +1 -0
- package/dist/new-module/emit.js +1393 -0
- package/dist/new-module/emit.js.map +1 -0
- package/dist/new-module/host.d.ts +67 -0
- package/dist/new-module/host.d.ts.map +1 -0
- package/dist/new-module/host.js +224 -0
- package/dist/new-module/host.js.map +1 -0
- package/dist/new-module/index.d.ts +32 -0
- package/dist/new-module/index.d.ts.map +1 -0
- package/dist/new-module/index.js +193 -0
- package/dist/new-module/index.js.map +1 -0
- package/dist/new-module/spec.d.ts +188 -0
- package/dist/new-module/spec.d.ts.map +1 -0
- package/dist/new-module/spec.js +404 -0
- package/dist/new-module/spec.js.map +1 -0
- package/dist/new-module/text.d.ts +15 -0
- package/dist/new-module/text.d.ts.map +1 -0
- package/dist/new-module/text.js +22 -0
- package/dist/new-module/text.js.map +1 -0
- package/dist/new-storefront/dockerfile.d.ts +20 -0
- package/dist/new-storefront/dockerfile.d.ts.map +1 -0
- package/dist/new-storefront/dockerfile.js +131 -0
- package/dist/new-storefront/dockerfile.js.map +1 -0
- package/dist/new-storefront/gitignore.d.ts +23 -0
- package/dist/new-storefront/gitignore.d.ts.map +1 -0
- package/dist/new-storefront/gitignore.js +39 -0
- package/dist/new-storefront/gitignore.js.map +1 -0
- package/dist/new-storefront/index.d.ts +93 -0
- package/dist/new-storefront/index.d.ts.map +1 -0
- package/dist/new-storefront/index.js +329 -0
- package/dist/new-storefront/index.js.map +1 -0
- package/dist/new-storefront/npmrc.d.ts +98 -0
- package/dist/new-storefront/npmrc.d.ts.map +1 -0
- package/dist/new-storefront/npmrc.js +217 -0
- package/dist/new-storefront/npmrc.js.map +1 -0
- package/dist/new-storefront/reference.d.ts +189 -0
- package/dist/new-storefront/reference.d.ts.map +1 -0
- package/dist/new-storefront/reference.js +430 -0
- package/dist/new-storefront/reference.js.map +1 -0
- package/dist/new-storefront/rewrite.d.ts +171 -0
- package/dist/new-storefront/rewrite.d.ts.map +1 -0
- package/dist/new-storefront/rewrite.js +701 -0
- package/dist/new-storefront/rewrite.js.map +1 -0
- package/dist/release-index.json +284 -0
- package/dist/rules/action-route-permissions.d.ts +141 -0
- package/dist/rules/action-route-permissions.d.ts.map +1 -0
- package/dist/rules/action-route-permissions.js +556 -0
- package/dist/rules/action-route-permissions.js.map +1 -0
- package/dist/rules/bundle-pairing.d.ts +74 -0
- package/dist/rules/bundle-pairing.d.ts.map +1 -0
- package/dist/rules/bundle-pairing.js +281 -0
- package/dist/rules/bundle-pairing.js.map +1 -0
- package/dist/rules/channel-resolution.d.ts +17 -0
- package/dist/rules/channel-resolution.d.ts.map +1 -0
- package/dist/rules/channel-resolution.js +382 -0
- package/dist/rules/channel-resolution.js.map +1 -0
- package/dist/rules/command-coverage.d.ts +210 -0
- package/dist/rules/command-coverage.d.ts.map +1 -0
- package/dist/rules/command-coverage.js +714 -0
- package/dist/rules/command-coverage.js.map +1 -0
- package/dist/rules/container-imports.d.ts +60 -0
- package/dist/rules/container-imports.d.ts.map +1 -0
- package/dist/rules/container-imports.js +158 -0
- package/dist/rules/container-imports.js.map +1 -0
- package/dist/rules/default-language-prose.d.ts +212 -0
- package/dist/rules/default-language-prose.d.ts.map +1 -0
- package/dist/rules/default-language-prose.js +710 -0
- package/dist/rules/default-language-prose.js.map +1 -0
- package/dist/rules/diacritic-folds.d.ts +238 -0
- package/dist/rules/diacritic-folds.d.ts.map +1 -0
- package/dist/rules/diacritic-folds.js +681 -0
- package/dist/rules/diacritic-folds.js.map +1 -0
- package/dist/rules/entity-tenant-classification.d.ts +171 -0
- package/dist/rules/entity-tenant-classification.d.ts.map +1 -0
- package/dist/rules/entity-tenant-classification.js +323 -0
- package/dist/rules/entity-tenant-classification.js.map +1 -0
- package/dist/rules/entry-presence.d.ts +142 -0
- package/dist/rules/entry-presence.d.ts.map +1 -0
- package/dist/rules/entry-presence.js +339 -0
- package/dist/rules/entry-presence.js.map +1 -0
- package/dist/rules/entry-scope.d.ts +91 -0
- package/dist/rules/entry-scope.d.ts.map +1 -0
- package/dist/rules/entry-scope.js +404 -0
- package/dist/rules/entry-scope.js.map +1 -0
- package/dist/rules/env-inputs.d.ts +222 -0
- package/dist/rules/env-inputs.d.ts.map +1 -0
- package/dist/rules/env-inputs.js +951 -0
- package/dist/rules/env-inputs.js.map +1 -0
- package/dist/rules/kernel-boundary.d.ts +37 -0
- package/dist/rules/kernel-boundary.d.ts.map +1 -0
- package/dist/rules/kernel-boundary.js +195 -0
- package/dist/rules/kernel-boundary.js.map +1 -0
- package/dist/rules/nul-bytes.d.ts +233 -0
- package/dist/rules/nul-bytes.d.ts.map +1 -0
- package/dist/rules/nul-bytes.js +332 -0
- package/dist/rules/nul-bytes.js.map +1 -0
- package/dist/rules/platform-surface.d.ts +479 -0
- package/dist/rules/platform-surface.d.ts.map +1 -0
- package/dist/rules/platform-surface.js +749 -0
- package/dist/rules/platform-surface.js.map +1 -0
- package/dist/rules/port-catches.d.ts +225 -0
- package/dist/rules/port-catches.d.ts.map +1 -0
- package/dist/rules/port-catches.js +1374 -0
- package/dist/rules/port-catches.js.map +1 -0
- package/dist/rules/port-shape.d.ts +213 -0
- package/dist/rules/port-shape.d.ts.map +1 -0
- package/dist/rules/port-shape.js +670 -0
- package/dist/rules/port-shape.js.map +1 -0
- package/dist/rules/queue-names.d.ts +108 -0
- package/dist/rules/queue-names.d.ts.map +1 -0
- package/dist/rules/queue-names.js +395 -0
- package/dist/rules/queue-names.js.map +1 -0
- package/dist/rules/singleton-identity.d.ts +205 -0
- package/dist/rules/singleton-identity.d.ts.map +1 -0
- package/dist/rules/singleton-identity.js +830 -0
- package/dist/rules/singleton-identity.js.map +1 -0
- package/dist/rules/subscribe-seam.d.ts +121 -0
- package/dist/rules/subscribe-seam.d.ts.map +1 -0
- package/dist/rules/subscribe-seam.js +594 -0
- package/dist/rules/subscribe-seam.js.map +1 -0
- package/dist/rules/transaction-context.d.ts +40 -0
- package/dist/rules/transaction-context.d.ts.map +1 -0
- package/dist/rules/transaction-context.js +294 -0
- package/dist/rules/transaction-context.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-inputs.js","sourceRoot":"","sources":["../../src/rules/env-inputs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type HostResidentModules } from '../lib/module-population.js';
|
|
2
|
+
/**
|
|
3
|
+
* Who owns the entity declared in `file`: a module id, `kernel`, or `core` for
|
|
4
|
+
* the entities that predate the module split and live under `src/db`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function ownerOf(file: string, hostResident?: HostResidentModules): string | null;
|
|
7
|
+
/**
|
|
8
|
+
* Every `.ts` under `dir` except tests and declaration files.
|
|
9
|
+
*
|
|
10
|
+
* Rule A used to walk `*.entity.ts` only. Nothing enforces that naming — an
|
|
11
|
+
* entity declared in `entities/index.ts`, or a relation added to a class in an
|
|
12
|
+
* ordinary file, was simply not scanned, and a scan that does not look is
|
|
13
|
+
* indistinguishable from one that finds nothing. The file list is now the whole
|
|
14
|
+
* tree and {@link RELATION_DECORATOR_HINT} decides what is worth parsing, so the
|
|
15
|
+
* rule's scope is a property of the code rather than of a filename.
|
|
16
|
+
*/
|
|
17
|
+
export declare function collectSources(dir: string, out?: string[]): string[];
|
|
18
|
+
/**
|
|
19
|
+
* A cheap pre-filter: only a file that spells one of the four relation
|
|
20
|
+
* decorators can produce a rule-A finding, and parsing 2 600 files to learn that
|
|
21
|
+
* is wasted work. It over-matches deliberately (a mention in a comment passes
|
|
22
|
+
* it) — {@link analyzeSource} is the parse that decides.
|
|
23
|
+
*/
|
|
24
|
+
export declare const RELATION_DECORATOR_HINT: RegExp;
|
|
25
|
+
export interface RelationFinding {
|
|
26
|
+
readonly file: string;
|
|
27
|
+
readonly className: string;
|
|
28
|
+
readonly property: string;
|
|
29
|
+
readonly decorator: string;
|
|
30
|
+
readonly targetName: string;
|
|
31
|
+
readonly sourceOwner: string;
|
|
32
|
+
readonly targetOwner: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function analyzeSource(source: string, file: string, hostResident?: HostResidentModules): RelationFinding[];
|
|
35
|
+
export declare function findingKey(finding: RelationFinding): string;
|
|
36
|
+
export declare function isViolation(finding: RelationFinding): boolean;
|
|
37
|
+
//# sourceMappingURL=kernel-boundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel-boundary.d.ts","sourceRoot":"","sources":["../../src/rules/kernel-boundary.ts"],"names":[],"mappings":"AA4CA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAIrC;;;GAGG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,mBAA8C,GAC3D,MAAM,GAAG,IAAI,CAWf;AAOD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAWxE;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAwD,CAAC;AAsC7F,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,YAAY,GAAE,mBAA8C,GAC3D,eAAe,EAAE,CAoCnB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAE3D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAO7D"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI check — ORM relations respect the module boundary (feature 072, D-32).
|
|
3
|
+
*
|
|
4
|
+
* Rule A of `check:kernel-boundary`: a `@ManyToOne` / `@OneToMany` /
|
|
5
|
+
* `@OneToOne` / `@ManyToMany` relation may point **inside its own module** or
|
|
6
|
+
* **at the platform** (the kernel and the pre-split `core` entities), and
|
|
7
|
+
* nowhere else. A relation from one module's entity into another module's is a
|
|
8
|
+
* foreign key the ORM will create, in a schema neither module can be detached
|
|
9
|
+
* from — Principle I with a database constraint behind it.
|
|
10
|
+
*
|
|
11
|
+
* Static analysis through the TypeScript compiler API. A decorator's target is
|
|
12
|
+
* read as the capitalised identifiers inside the decorator's arguments, mapped
|
|
13
|
+
* back through the file's own relative imports, so a mention in a comment or a
|
|
14
|
+
* string is not a finding and a target declared in the same file is same-owner
|
|
15
|
+
* by construction.
|
|
16
|
+
*
|
|
17
|
+
* ## One analysis, two hosts, and why only rule A travels
|
|
18
|
+
*
|
|
19
|
+
* This file is rule A (`specs/101-endora-check/contracts/package-scope-layout.md`
|
|
20
|
+
* §6). `backend/scripts/check-kernel-boundary.ts` hosts it over this
|
|
21
|
+
* repository's module walk roots, alongside its own **rules B and C** — the
|
|
22
|
+
* specifiers a platform root names, and the kernel's transitive import closure.
|
|
23
|
+
* Those two stay with that host rather than travelling, and not as an omission:
|
|
24
|
+
* their subject is *the platform's own roots*, and a module package holds none,
|
|
25
|
+
* so there is nothing in a package for them to read. `endora check` declares
|
|
26
|
+
* them unevaluated on the rule's own line rather than counting them zero — a
|
|
27
|
+
* signal that reports nothing because it had no subject and a signal that
|
|
28
|
+
* reports nothing because the tree is clean are the two states this estate
|
|
29
|
+
* exists to keep apart.
|
|
30
|
+
*
|
|
31
|
+
* ## Attribution, and the one derivation that had to learn a second source
|
|
32
|
+
*
|
|
33
|
+
* `ownerOf` reads the owner off a `/src/modules/<id>/` path segment, which is
|
|
34
|
+
* this repository's convention (D-141) and a stranger's checkout has no reason
|
|
35
|
+
* to hold. It therefore takes the same `HostResidentModules` map every other
|
|
36
|
+
* relocated rule takes: a package-scope host hands it the one mapping its
|
|
37
|
+
* `endora.id` declares, and attribution keys on the declaration rather than on
|
|
38
|
+
* a directory name.
|
|
39
|
+
*/
|
|
40
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
41
|
+
import { dirname, join, resolve } from 'node:path';
|
|
42
|
+
import ts from 'typescript';
|
|
43
|
+
import { moduleIdOf, NO_HOST_RESIDENT_MODULES, } from '../lib/module-population.js';
|
|
44
|
+
const RELATION_DECORATORS = new Set(['ManyToOne', 'OneToMany', 'OneToOne', 'ManyToMany']);
|
|
45
|
+
/**
|
|
46
|
+
* Who owns the entity declared in `file`: a module id, `kernel`, or `core` for
|
|
47
|
+
* the entities that predate the module split and live under `src/db`.
|
|
48
|
+
*/
|
|
49
|
+
export function ownerOf(file, hostResident = NO_HOST_RESIDENT_MODULES) {
|
|
50
|
+
const moduleMatch = /\/src\/modules\/([^/]+)\//.exec(file);
|
|
51
|
+
if (moduleMatch)
|
|
52
|
+
return moduleMatch[1] ?? null;
|
|
53
|
+
if (file.includes('/src/kernel/'))
|
|
54
|
+
return 'kernel';
|
|
55
|
+
if (file.includes('/src/db/'))
|
|
56
|
+
return 'core';
|
|
57
|
+
// The package half of the derivation, and the reason it is here: without it a
|
|
58
|
+
// module package's entities are read by the walk, satisfy the floor, and are
|
|
59
|
+
// then attributed to nobody — which for `analyzeSource` means "not an entity
|
|
60
|
+
// this rule judges", so every relation in the package is skipped and the run
|
|
61
|
+
// reports clean. That is issue #215's failure one layer in.
|
|
62
|
+
return moduleIdOf(file, hostResident);
|
|
63
|
+
}
|
|
64
|
+
/** `kernel` and `core` are the parts every deployment has; a module may point at them. */
|
|
65
|
+
function isPlatformOwner(owner) {
|
|
66
|
+
return owner === 'kernel' || owner === 'core';
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Every `.ts` under `dir` except tests and declaration files.
|
|
70
|
+
*
|
|
71
|
+
* Rule A used to walk `*.entity.ts` only. Nothing enforces that naming — an
|
|
72
|
+
* entity declared in `entities/index.ts`, or a relation added to a class in an
|
|
73
|
+
* ordinary file, was simply not scanned, and a scan that does not look is
|
|
74
|
+
* indistinguishable from one that finds nothing. The file list is now the whole
|
|
75
|
+
* tree and {@link RELATION_DECORATOR_HINT} decides what is worth parsing, so the
|
|
76
|
+
* rule's scope is a property of the code rather than of a filename.
|
|
77
|
+
*/
|
|
78
|
+
export function collectSources(dir, out = []) {
|
|
79
|
+
for (const name of readdirSync(dir)) {
|
|
80
|
+
const full = join(dir, name);
|
|
81
|
+
if (statSync(full).isDirectory()) {
|
|
82
|
+
if (name === 'node_modules' || name === 'dist')
|
|
83
|
+
continue;
|
|
84
|
+
collectSources(full, out);
|
|
85
|
+
}
|
|
86
|
+
else if (name.endsWith('.ts') && !name.endsWith('.test.ts') && !name.endsWith('.d.ts')) {
|
|
87
|
+
out.push(full);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A cheap pre-filter: only a file that spells one of the four relation
|
|
94
|
+
* decorators can produce a rule-A finding, and parsing 2 600 files to learn that
|
|
95
|
+
* is wasted work. It over-matches deliberately (a mention in a comment passes
|
|
96
|
+
* it) — {@link analyzeSource} is the parse that decides.
|
|
97
|
+
*/
|
|
98
|
+
export const RELATION_DECORATOR_HINT = /@(?:ManyToOne|OneToMany|OneToOne|ManyToMany)\s*[(<]/;
|
|
99
|
+
function decoratorName(decorator) {
|
|
100
|
+
const expr = decorator.expression;
|
|
101
|
+
const callee = ts.isCallExpression(expr) ? expr.expression : expr;
|
|
102
|
+
return ts.isIdentifier(callee) ? callee.text : undefined;
|
|
103
|
+
}
|
|
104
|
+
/** Every capitalised identifier appearing anywhere inside the decorator's arguments. */
|
|
105
|
+
function referencedTypeNames(decorator) {
|
|
106
|
+
const expr = decorator.expression;
|
|
107
|
+
if (!ts.isCallExpression(expr))
|
|
108
|
+
return [];
|
|
109
|
+
const names = [];
|
|
110
|
+
const visit = (node) => {
|
|
111
|
+
if (ts.isIdentifier(node) && /^[A-Z]/.test(node.text))
|
|
112
|
+
names.push(node.text);
|
|
113
|
+
node.forEachChild(visit);
|
|
114
|
+
};
|
|
115
|
+
for (const arg of expr.arguments)
|
|
116
|
+
visit(arg);
|
|
117
|
+
return names;
|
|
118
|
+
}
|
|
119
|
+
/** Map local import name → the file it was imported from, resolved to a `.ts` path. */
|
|
120
|
+
function importedFrom(sf, file) {
|
|
121
|
+
const map = new Map();
|
|
122
|
+
for (const statement of sf.statements) {
|
|
123
|
+
if (!ts.isImportDeclaration(statement))
|
|
124
|
+
continue;
|
|
125
|
+
const spec = statement.moduleSpecifier;
|
|
126
|
+
if (!ts.isStringLiteral(spec))
|
|
127
|
+
continue;
|
|
128
|
+
if (!spec.text.startsWith('.'))
|
|
129
|
+
continue;
|
|
130
|
+
const target = resolve(dirname(file), spec.text.replace(/\.js$/, '.ts'));
|
|
131
|
+
if (!existsSync(target))
|
|
132
|
+
continue;
|
|
133
|
+
const bindings = statement.importClause?.namedBindings;
|
|
134
|
+
if (!bindings || !ts.isNamedImports(bindings))
|
|
135
|
+
continue;
|
|
136
|
+
for (const element of bindings.elements)
|
|
137
|
+
map.set(element.name.text, target);
|
|
138
|
+
}
|
|
139
|
+
return map;
|
|
140
|
+
}
|
|
141
|
+
export function analyzeSource(source, file, hostResident = NO_HOST_RESIDENT_MODULES) {
|
|
142
|
+
const sf = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, true);
|
|
143
|
+
const sourceOwner = ownerOf(file, hostResident);
|
|
144
|
+
if (!sourceOwner)
|
|
145
|
+
return [];
|
|
146
|
+
const imports = importedFrom(sf, file);
|
|
147
|
+
const findings = [];
|
|
148
|
+
sf.forEachChild((node) => {
|
|
149
|
+
if (!ts.isClassDeclaration(node))
|
|
150
|
+
return;
|
|
151
|
+
const className = node.name?.text ?? '<anonymous>';
|
|
152
|
+
for (const member of node.members) {
|
|
153
|
+
if (!ts.isPropertyDeclaration(member))
|
|
154
|
+
continue;
|
|
155
|
+
for (const decorator of ts.getDecorators(member) ?? []) {
|
|
156
|
+
const name = decoratorName(decorator);
|
|
157
|
+
if (!name || !RELATION_DECORATORS.has(name))
|
|
158
|
+
continue;
|
|
159
|
+
for (const targetName of referencedTypeNames(decorator)) {
|
|
160
|
+
// A target declared in this very file is same-owner by construction.
|
|
161
|
+
const targetFile = imports.get(targetName);
|
|
162
|
+
if (!targetFile)
|
|
163
|
+
continue;
|
|
164
|
+
const targetOwner = ownerOf(targetFile, hostResident);
|
|
165
|
+
if (!targetOwner)
|
|
166
|
+
continue;
|
|
167
|
+
findings.push({
|
|
168
|
+
file,
|
|
169
|
+
className,
|
|
170
|
+
property: member.name.getText(sf),
|
|
171
|
+
decorator: name,
|
|
172
|
+
targetName,
|
|
173
|
+
sourceOwner,
|
|
174
|
+
targetOwner,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
return findings;
|
|
181
|
+
}
|
|
182
|
+
export function findingKey(finding) {
|
|
183
|
+
return `${finding.sourceOwner}.${finding.className}.${finding.property} -> ${finding.targetOwner}`;
|
|
184
|
+
}
|
|
185
|
+
export function isViolation(finding) {
|
|
186
|
+
const { sourceOwner, targetOwner } = finding;
|
|
187
|
+
if (sourceOwner === targetOwner)
|
|
188
|
+
return false;
|
|
189
|
+
// A module may point at the platform.
|
|
190
|
+
if (!isPlatformOwner(sourceOwner) && isPlatformOwner(targetOwner))
|
|
191
|
+
return false;
|
|
192
|
+
// Everything else — module → other module, and platform → module — is out.
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=kernel-boundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel-boundary.js","sourceRoot":"","sources":["../../src/rules/kernel-boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI check — no source file in this repository carries a raw NUL byte (issue #190).
|
|
3
|
+
*
|
|
4
|
+
* ## Why a byte deserves its own check
|
|
5
|
+
*
|
|
6
|
+
* The artefact that would reveal this defect **is the diff itself**. Git's
|
|
7
|
+
* content filter classifies a blob as binary when it finds a NUL in it, and from
|
|
8
|
+
* that moment every diff of the file reads `Binary files a/… and b/… differ`.
|
|
9
|
+
* The file stops being reviewable: `git diff`, `git blame -L`, the MR widget and
|
|
10
|
+
* every review UI show nothing at all. So the one thing that would have caught
|
|
11
|
+
* the byte during review is the thing the byte switches off.
|
|
12
|
+
*
|
|
13
|
+
* That is not hypothetical. Six files in this tree spelled a NUL separator as a
|
|
14
|
+
* raw byte inside a template literal — `media-ingestor.ts` (issue #182) plus the
|
|
15
|
+
* five issue #190 names — and each survived every review of every commit that
|
|
16
|
+
* touched it, because none of those commits could be read.
|
|
17
|
+
*
|
|
18
|
+
* The separator itself is correct in all six: NUL is the one byte the joined
|
|
19
|
+
* fields cannot contain, which is exactly what a join separator has to be. The
|
|
20
|
+
* defect is never the byte's *value*, only how the **source** spells it. Write
|
|
21
|
+
* `\0` (or `\x00`) and the compiled string is identical to the last bit while
|
|
22
|
+
* the source stays text.
|
|
23
|
+
*
|
|
24
|
+
* ## Anywhere in the file, not just where git looks
|
|
25
|
+
*
|
|
26
|
+
* Git only reads the **first 8000 bytes** when it decides binary-or-not. The NUL
|
|
27
|
+
* in `admin_actions/services/admin-actions-service.ts` sat at byte 8032, so git
|
|
28
|
+
* kept diffing that file as text and only `file(1)` disagreed — the byte was
|
|
29
|
+
* still there, still one edit away from crossing the window, and still invisible
|
|
30
|
+
* to every tool that does not share git's heuristic. A rule that copied git's
|
|
31
|
+
* window would have declared that file clean. This check reads the whole file.
|
|
32
|
+
*
|
|
33
|
+
* ## Only NUL
|
|
34
|
+
*
|
|
35
|
+
* The other C0 control characters are not in scope, deliberately. A raw `\x1f`
|
|
36
|
+
* is unpleasant but it does not change how any tool classifies the file: the
|
|
37
|
+
* diff still renders, review still works, and the ratchet this check installs
|
|
38
|
+
* would be claiming more than the failure it was written for. NUL is the byte
|
|
39
|
+
* with the tooling consequence, so NUL is the byte with the rule.
|
|
40
|
+
*
|
|
41
|
+
* ## The population, and how it fails
|
|
42
|
+
*
|
|
43
|
+
* Every file under the repository root **except** the two exclusions declared
|
|
44
|
+
* below, each with its reason:
|
|
45
|
+
*
|
|
46
|
+
* - `SKIPPED_DIRECTORIES` — trees that are not this repository's source.
|
|
47
|
+
* - `GENERATED_FILE_EXTENSIONS` — tool output written beside the source it
|
|
48
|
+
* came from, so no directory prune reaches it.
|
|
49
|
+
* - `BINARY_EXTENSIONS` and `BINARY_FILENAMES` — file types whose content is
|
|
50
|
+
* bytes by definition. A PNG is not a source file with a NUL problem; it is
|
|
51
|
+
* not a source file.
|
|
52
|
+
*
|
|
53
|
+
* The exclusion is a **deny-list on purpose**. An allow-list of known-text
|
|
54
|
+
* extensions fails open: the next `.sql`, `.toml` or extension-less script to
|
|
55
|
+
* arrive would be silently unscanned, and nothing would report it. With a
|
|
56
|
+
* deny-list a new file type is scanned by default, and a genuinely binary one
|
|
57
|
+
* announces itself by failing this check once — at which point it is added here
|
|
58
|
+
* with a reason rather than to a silent skip.
|
|
59
|
+
*
|
|
60
|
+
* The cost of a *missing* exclusion is therefore work rather than correctness,
|
|
61
|
+
* and it is real work: `.docusaurus` and `backend/var/assets` were not declared,
|
|
62
|
+
* so a working tree that had built the docs site and served one upload scanned
|
|
63
|
+
* 8288 files where a clean checkout scans 5165 — three thousand reads of output
|
|
64
|
+
* nobody wrote, and a NUL among them would have been reported against a path no
|
|
65
|
+
* merge request can change (issue #248). The candidates come from `.gitignore`:
|
|
66
|
+
* a tree git is told not to track is a tree this repository does not author.
|
|
67
|
+
*
|
|
68
|
+
* **Which of the two tables an exclusion belongs in is decided by its name.**
|
|
69
|
+
* `SKIPPED_DIRECTORIES` prunes a *name* wherever it occurs, so a name earns a
|
|
70
|
+
* place there only when it names its own producer (`node_modules`, `.next`,
|
|
71
|
+
* `storybook-static`) or is a dot-prefixed tool directory (`.turbo`, `.vite`).
|
|
72
|
+
* A generic word is somebody's plausible source directory too, and pruning it
|
|
73
|
+
* everywhere would take a subtree out of the scan for a name rather than for a
|
|
74
|
+
* reason — so `backend/var` is anchored at the one path it occupies, in
|
|
75
|
+
* `SKIPPED_PATH_PREFIXES`.
|
|
76
|
+
*
|
|
77
|
+
* Three `.gitignore` entries from the same sweep are deliberately **not**
|
|
78
|
+
* declared: `out/`, `tmp/` and `uploads/`. Each is a bare generic word, none
|
|
79
|
+
* held a single file in the measured tree, and an exclusion that buys no reads
|
|
80
|
+
* buys only the chance of taking a future source directory out of the scan. The
|
|
81
|
+
* deny-list is what makes that the safe order to be wrong in: an undeclared
|
|
82
|
+
* tree costs reads, a wrongly declared one costs coverage, so a name arrives
|
|
83
|
+
* here when it has been measured to matter and not before.
|
|
84
|
+
*
|
|
85
|
+
* A text file that genuinely must keep a NUL — a fixture whose whole point is a
|
|
86
|
+
* real NUL arriving in real data — goes in `NUL_BYTES_ALLOWED` with a reason.
|
|
87
|
+
* That ledger is **two-way**: an unledgered NUL fails the build, and a ledger
|
|
88
|
+
* entry naming a file that no longer has one fails it too. It is empty; the five
|
|
89
|
+
* issue #190 files were all repaired rather than ledgered, because in every one
|
|
90
|
+
* of them the escape produces the same string at runtime and loses nothing.
|
|
91
|
+
*
|
|
92
|
+
* ## One analysis, two hosts
|
|
93
|
+
*
|
|
94
|
+
* This file is the analysis. `backend/scripts/check-nul-bytes.ts` hosts it over
|
|
95
|
+
* this repository, and `endora check` hosts it over one module package
|
|
96
|
+
* (`specs/101-endora-check/contracts/package-scope-layout.md` §6). Neither host
|
|
97
|
+
* re-derives the other's population, and the walk each performs is its own —
|
|
98
|
+
* what they share is {@link isScannablePath}, which is the rule.
|
|
99
|
+
*/
|
|
100
|
+
/**
|
|
101
|
+
* Directory names pruned wherever they occur, and why each is not source.
|
|
102
|
+
*
|
|
103
|
+
* Declared rather than hard-coded into the walk so that the reason travels with
|
|
104
|
+
* the exclusion: a directory skipped here is a directory this check makes no
|
|
105
|
+
* claim about, and the next reader gets to see which claim was dropped.
|
|
106
|
+
*/
|
|
107
|
+
export declare const SKIPPED_DIRECTORIES: Readonly<Record<string, string>>;
|
|
108
|
+
/**
|
|
109
|
+
* Repo-relative directory prefixes that are not this checkout, keyed by prefix
|
|
110
|
+
* with the reason as the value — the same discipline as `SKIPPED_DIRECTORIES`,
|
|
111
|
+
* but path-anchored rather than name-anchored.
|
|
112
|
+
*
|
|
113
|
+
* `SKIPPED_DIRECTORIES` matches a *name* anywhere in the tree, which is right
|
|
114
|
+
* for `node_modules` and wrong here: `.claude/` also holds `agents/` and
|
|
115
|
+
* `skills/`, which are tracked repository source and must stay scanned. Only
|
|
116
|
+
* the worktree root is excluded. The same reasoning puts every generic-word
|
|
117
|
+
* exclusion here rather than there — see the header.
|
|
118
|
+
*/
|
|
119
|
+
export declare const SKIPPED_PATH_PREFIXES: Readonly<Record<string, string>>;
|
|
120
|
+
/**
|
|
121
|
+
* Extensions whose content is bytes by definition, and why.
|
|
122
|
+
*
|
|
123
|
+
* A file here is out of the population entirely — not exempted from the rule but
|
|
124
|
+
* outside it, because "a source file must not contain a NUL" says nothing about
|
|
125
|
+
* a PNG. Adding an entry is cheap and visible; the cost of getting it wrong is
|
|
126
|
+
* one file that stops being checked, which is why each carries a reason.
|
|
127
|
+
*/
|
|
128
|
+
export declare const BINARY_EXTENSIONS: Readonly<Record<string, string>>;
|
|
129
|
+
/**
|
|
130
|
+
* Exact file names that are binary, for the files that carry no extension.
|
|
131
|
+
*
|
|
132
|
+
* Separate from `BINARY_EXTENSIONS` because a leading dot is a dotfile marker,
|
|
133
|
+
* not an extension: `.gitignore` is text and must stay in the population, so a
|
|
134
|
+
* dot-named file cannot be classified by the same rule. Matched on the basename
|
|
135
|
+
* anywhere in the tree.
|
|
136
|
+
*/
|
|
137
|
+
export declare const BINARY_FILENAMES: Readonly<Record<string, string>>;
|
|
138
|
+
/**
|
|
139
|
+
* Extensions of **generated** files that a tool writes beside the source it was
|
|
140
|
+
* generated from, and why each is not this repository's source.
|
|
141
|
+
*
|
|
142
|
+
* A fourth category, and it exists because the other three cannot hold these
|
|
143
|
+
* honestly. `SKIPPED_DIRECTORIES` prunes a directory, and these files sit in a
|
|
144
|
+
* source directory rather than under a `dist/`. `BINARY_EXTENSIONS` says
|
|
145
|
+
* "bytes by definition", and a `.tsbuildinfo` is JSON — filing it there would
|
|
146
|
+
* put a false sentence in a reason field, which is the one thing this file's
|
|
147
|
+
* discipline cannot afford. `NUL_BYTES_ALLOWED` is for a file that *carries* a
|
|
148
|
+
* NUL and is right to.
|
|
149
|
+
*
|
|
150
|
+
* This is `.docusaurus`' case one granularity down. That entry exists because a
|
|
151
|
+
* tree that had built the docs site scanned it as source (issue #248); this one
|
|
152
|
+
* exists because a tree that has type-checked the storefront scans
|
|
153
|
+
* `tsconfig.tsbuildinfo` as source. Both are gitignored output a tool drops
|
|
154
|
+
* where it works.
|
|
155
|
+
*
|
|
156
|
+
* **The cost is not a false green** — a `.tsbuildinfo` holds no NUL, so nothing
|
|
157
|
+
* was being missed. It is that the file count moved on any tree where a
|
|
158
|
+
* type-check had run, and the estate's `read:` lines are what four Wave 4 merge
|
|
159
|
+
* requests used to prove a change touched nothing it should not. Two agents
|
|
160
|
+
* chased this `+1` to ground independently before it was written down. A
|
|
161
|
+
* verification tool whose baseline shifts under you is worth less than one that
|
|
162
|
+
* does not, which is the whole argument for the entry.
|
|
163
|
+
*/
|
|
164
|
+
export declare const GENERATED_FILE_EXTENSIONS: Readonly<Record<string, string>>;
|
|
165
|
+
/**
|
|
166
|
+
* Text files allowed to keep a raw NUL, with the reason it is right.
|
|
167
|
+
*
|
|
168
|
+
* **Two-way**, in the idiom of `BARE_SUBSCRIPTIONS_TO_DRAIN`: an unledgered NUL
|
|
169
|
+
* fails the build, and an entry that no longer describes one fails it too.
|
|
170
|
+
*
|
|
171
|
+
* It is empty, and it should stay hard to add to. The obvious candidate — a
|
|
172
|
+
* hostile-input fixture — is not one: a fixture builds a JavaScript string, and
|
|
173
|
+
* `'\x00'` and a raw NUL byte produce the same string with the same code point,
|
|
174
|
+
* so escaping costs the fixture nothing and buys back the diff. An entry here
|
|
175
|
+
* has to name something the *file's bytes* do, not something its values do.
|
|
176
|
+
*/
|
|
177
|
+
export declare const NUL_BYTES_ALLOWED: Readonly<Record<string, string>>;
|
|
178
|
+
/** A file handed to the analysis: repo-relative POSIX path plus its raw bytes. */
|
|
179
|
+
export interface ScannedFile {
|
|
180
|
+
readonly path: string;
|
|
181
|
+
readonly bytes: Uint8Array;
|
|
182
|
+
}
|
|
183
|
+
export interface NulByteFinding {
|
|
184
|
+
/** Repo-relative path, POSIX separators — also the ledger key. */
|
|
185
|
+
readonly path: string;
|
|
186
|
+
/** Byte offset of the first NUL. */
|
|
187
|
+
readonly byteOffset: number;
|
|
188
|
+
/** 1-based line, counting `\n`. */
|
|
189
|
+
readonly line: number;
|
|
190
|
+
/** 1-based **byte** column within that line. */
|
|
191
|
+
readonly column: number;
|
|
192
|
+
/** Total NUL bytes in the file, so a repair that fixes one of six is visible. */
|
|
193
|
+
readonly count: number;
|
|
194
|
+
/** True when git's own 8000-byte window would have missed it. */
|
|
195
|
+
readonly beyondGitBinaryWindow: boolean;
|
|
196
|
+
}
|
|
197
|
+
/** How many bytes of a blob git reads before deciding binary-or-text. */
|
|
198
|
+
export declare const GIT_BINARY_WINDOW = 8000;
|
|
199
|
+
/** The extension of a path, lower-cased, including the dot; `''` when there is none. */
|
|
200
|
+
export declare function extensionOf(path: string): string;
|
|
201
|
+
/**
|
|
202
|
+
* Whether a path is in the population.
|
|
203
|
+
*
|
|
204
|
+
* Path-based rather than walk-based so the two exclusions are provable from a
|
|
205
|
+
* synthetic path: the pruning a real run does for speed and the exclusion the
|
|
206
|
+
* rule makes are then the same decision, taken in one place.
|
|
207
|
+
*/
|
|
208
|
+
/**
|
|
209
|
+
* Is this repo-relative path at, or under, a `SKIPPED_PATH_PREFIXES` entry?
|
|
210
|
+
*
|
|
211
|
+
* **One function, called from both places on purpose.** The walk prunes for
|
|
212
|
+
* speed and `isScannablePath` states the rule, and while those were two
|
|
213
|
+
* expressions of the same predicate the walk's copy kept the check reporting
|
|
214
|
+
* `violations=0` after the rule's copy went missing — so the red proof, which
|
|
215
|
+
* enters at `findNulBytes`, could not see its own exclusion disappear. A
|
|
216
|
+
* duplicated decision is one that can go half-missing without anything
|
|
217
|
+
* noticing.
|
|
218
|
+
*/
|
|
219
|
+
export declare function isUnderSkippedPrefix(relativePath: string): boolean;
|
|
220
|
+
export declare function isScannablePath(path: string): boolean;
|
|
221
|
+
/** Every NUL-carrying file among the scannable ones, first occurrence located. */
|
|
222
|
+
export declare function findNulBytes(files: Iterable<ScannedFile>): NulByteFinding[];
|
|
223
|
+
export interface CheckResult {
|
|
224
|
+
/** Files the analysis actually inspected — the vacuous-pass guard reads this. */
|
|
225
|
+
readonly scanned: number;
|
|
226
|
+
readonly total: number;
|
|
227
|
+
readonly violations: readonly NulByteFinding[];
|
|
228
|
+
readonly ledgered: readonly NulByteFinding[];
|
|
229
|
+
/** Ledger keys that no longer describe a NUL-carrying file. */
|
|
230
|
+
readonly stale: readonly string[];
|
|
231
|
+
}
|
|
232
|
+
export declare function checkNulBytes(files: Iterable<ScannedFile>, ledger?: Readonly<Record<string, string>>): CheckResult;
|
|
233
|
+
//# sourceMappingURL=nul-bytes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nul-bytes.d.ts","sourceRoot":"","sources":["../../src/rules/nul-bytes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkGG;AACH;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBhE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYlE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB9D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKtE,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,CAAC;AAEtE,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;CACzC;AAED,yEAAyE;AACzE,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAItC,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;;;;;GAMG;AACH;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAIlE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWrD;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,cAAc,EAAE,CAsC3E;AAED,MAAM,WAAW,WAAW;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,EAC5B,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAqB,GAC3D,WAAW,CAWb"}
|