@zxyycom/vibe-check 0.0.1 → 0.0.3
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/README.md +79 -75
- package/dist/esm/check/check.mjs +4 -0
- package/dist/esm/check/check.mjs.map +1 -1
- package/dist/esm/check/flag-enablement.mjs +32 -0
- package/dist/esm/check/flag-enablement.mjs.map +1 -0
- package/dist/esm/check/handoff-provider-identity.mjs +18 -0
- package/dist/esm/check/handoff-provider-identity.mjs.map +1 -0
- package/dist/esm/check/inherited-collection.mjs +2 -2
- package/dist/esm/check/inherited-collection.mjs.map +1 -1
- package/dist/esm/check/project-changes.mjs +2 -0
- package/dist/esm/check/project-changes.mjs.map +1 -0
- package/dist/esm/check/project-context.mjs +2 -0
- package/dist/esm/check/project-context.mjs.map +1 -0
- package/dist/esm/check-settlement/fact-validation.mjs +17 -23
- package/dist/esm/check-settlement/fact-validation.mjs.map +1 -1
- package/dist/esm/check-settlement/facts.mjs.map +1 -1
- package/dist/esm/check-settlement/outcome-normalization.mjs +9 -19
- package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -1
- package/dist/esm/check-settlement/reason-shape.mjs +12 -0
- package/dist/esm/check-settlement/reason-shape.mjs.map +1 -0
- package/dist/esm/check-settlement/record-store.mjs +14 -17
- package/dist/esm/check-settlement/record-store.mjs.map +1 -1
- package/dist/esm/check-settlement/session.mjs +8 -2
- package/dist/esm/check-settlement/session.mjs.map +1 -1
- package/dist/esm/data-boundary/canonical-data.mjs +36 -7
- package/dist/esm/data-boundary/canonical-data.mjs.map +1 -1
- package/dist/esm/data-boundary/canonical-json.mjs.map +1 -1
- package/dist/esm/data-boundary/closed-values.mjs +43 -3
- package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
- package/dist/esm/{package-checks/project-files → data-boundary}/config-glob.mjs +3 -3
- package/dist/esm/data-boundary/config-glob.mjs.map +1 -0
- package/dist/esm/data-boundary/project-path.mjs +19 -0
- package/dist/esm/data-boundary/project-path.mjs.map +1 -0
- package/dist/esm/data-boundary/value-shapes.mjs +9 -0
- package/dist/esm/data-boundary/value-shapes.mjs.map +1 -1
- package/dist/esm/index.mjs +16 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/machine-output/v4/atomic-publication.mjs +5 -16
- package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
- package/dist/esm/package-checks/check-authoring.mjs +69 -0
- package/dist/esm/package-checks/check-authoring.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs +40 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs +48 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/policy.mjs +20 -0
- package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -1
- package/dist/esm/package-checks/command-check/command-check.mjs +55 -0
- package/dist/esm/package-checks/command-check/command-check.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/contract.mjs +2 -0
- package/dist/esm/package-checks/command-check/contract.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/execution.mjs +134 -0
- package/dist/esm/package-checks/command-check/execution.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/options.mjs +284 -0
- package/dist/esm/package-checks/command-check/options.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/transcript.mjs +26 -0
- package/dist/esm/package-checks/command-check/transcript.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +15 -7
- package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs +10 -12
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/execution.mjs +44 -20
- package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +59 -0
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs +55 -0
- package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +2 -2
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +15 -5
- package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +5 -4
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +22 -47
- package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +20 -25
- package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/records.mjs +27 -6
- package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/constructor.mjs +9 -11
- package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/execution.mjs +11 -20
- package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs +22 -0
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/options-resolution.mjs +11 -43
- package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/options-validation.mjs +15 -25
- package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/records.mjs +2 -9
- package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs +2 -2
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs +38 -0
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs +35 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/parser.mjs +4 -4
- package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +104 -31
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analysis.mjs +61 -15
- package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs +550 -0
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +332 -0
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs +7 -0
- package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +22 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs +113 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs +180 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs +121 -0
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +218 -0
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs +96 -0
- package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs +76 -0
- package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs +88 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +466 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +289 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs +38 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs +44 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs +113 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs +247 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs +16 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs +103 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs +55 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +106 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs +367 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +265 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs +53 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +306 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +404 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +216 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs +75 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs +32 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs +47 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs +22 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs +142 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs +94 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs +149 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +85 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +612 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs +31 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +25 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs +492 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +544 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs +141 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +69 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs +154 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs +36 -0
- package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs +56 -0
- package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs +2 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +120 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs +24 -0
- package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/constructor.mjs +10 -12
- package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/execution.mjs +51 -35
- package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs +75 -0
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs +28 -0
- package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/measurement.mjs +163 -26
- package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options-resolution.mjs +30 -63
- package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options-validation.mjs +27 -32
- package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/records.mjs +31 -1
- package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/target-files.mjs +6 -67
- package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -1
- package/dist/esm/package-checks/{function-metrics/lizard → host-environment}/csv.mjs +1 -0
- package/dist/esm/package-checks/host-environment/csv.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/git.mjs +12 -1
- package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/path.mjs +1 -17
- package/dist/esm/package-checks/host-environment/path.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/result.mjs +43 -17
- package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/runner.mjs +7 -5
- package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process.mjs +5 -0
- package/dist/esm/package-checks/host-environment/process.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +15 -17
- package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +6 -2
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +11 -3
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/options-validation.mjs +4 -10
- package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/local-cache-options.mjs +28 -0
- package/dist/esm/package-checks/local-cache-options.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +37 -45
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +3 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +19 -27
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs +27 -24
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +82 -53
- package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +36 -0
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +2 -2
- package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +1 -3
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +10 -3
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +12 -11
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +184 -0
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs +131 -0
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +58 -57
- package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs +54 -0
- package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs +16 -0
- package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/adapter.mjs +125 -0
- package/dist/esm/package-checks/markdown-lint/adapter.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs +37 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs +202 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs +16 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs +72 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs +110 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs +74 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs +13 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs +65 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs +14 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/collection.mjs +24 -20
- package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/configuration.mjs +3 -11
- package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs +3 -6
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +23 -7
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/public-collection.mjs +56 -0
- package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/revision-paths.mjs +3 -3
- package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +12 -16
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/classification.mjs +15 -0
- package/dist/esm/package-checks/secret-detection/classification.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/default-check.mjs +37 -0
- package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/execution.mjs +172 -0
- package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/final-data.mjs +33 -0
- package/dist/esm/package-checks/secret-detection/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs +30 -0
- package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs +192 -0
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/options-resolution.mjs +40 -0
- package/dist/esm/package-checks/secret-detection/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/options-validation.mjs +22 -0
- package/dist/esm/package-checks/secret-detection/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/options.mjs +2 -0
- package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/records.mjs +31 -0
- package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -0
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +84 -0
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -0
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs +10 -0
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs.map +1 -0
- package/dist/esm/package-tools/cache/cache-json-by-key.mjs +188 -0
- package/dist/esm/package-tools/cache/cache-json-by-key.mjs.map +1 -0
- package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs +40 -0
- package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs.map +1 -0
- package/dist/esm/{finding-waivers → package-tools/finding-waivers}/reconciliation.mjs +14 -5
- package/dist/esm/package-tools/finding-waivers/reconciliation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs +46 -0
- package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs +56 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs +122 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs +43 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs +109 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs +187 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs +27 -0
- package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/static-decision.mjs +55 -0
- package/dist/esm/package-tools/learned-critical-path/static-decision.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/strategy.mjs +179 -0
- package/dist/esm/package-tools/learned-critical-path/strategy.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/authoring.mjs +19 -176
- package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +184 -0
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/collection-authoring.mjs +16 -0
- package/dist/esm/project-definition/check-tree/collection-authoring.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/flag-conditions.mjs +71 -0
- package/dist/esm/project-definition/check-tree/flag-conditions.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/materialization.mjs +22 -9
- package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/resolution.mjs +52 -19
- package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs +73 -0
- package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs.map +1 -0
- package/dist/esm/project-definition/declarative-snapshot.mjs +74 -0
- package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -0
- package/dist/esm/project-definition/output-defaults.mjs +18 -1
- package/dist/esm/project-definition/output-defaults.mjs.map +1 -1
- package/dist/esm/project-definition/output-validation.mjs +15 -15
- package/dist/esm/project-definition/output-validation.mjs.map +1 -1
- package/dist/esm/project-definition/progress-rendering-output.mjs +52 -0
- package/dist/esm/project-definition/progress-rendering-output.mjs.map +1 -0
- package/dist/esm/project-definition/project-changes.mjs +70 -0
- package/dist/esm/project-definition/project-changes.mjs.map +1 -0
- package/dist/esm/project-definition/project-definition-validation.mjs +132 -16
- package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
- package/dist/esm/project-definition/project-definition.mjs +62 -50
- package/dist/esm/project-definition/project-definition.mjs.map +1 -1
- package/dist/esm/project-definition/resource-unit-mapping.mjs +21 -0
- package/dist/esm/project-definition/resource-unit-mapping.mjs.map +1 -0
- package/dist/esm/project-definition/scheduler-policy.mjs +2 -0
- package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -0
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +57 -0
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -0
- package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs +2 -0
- package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -0
- package/dist/esm/project-run/admission-strategy-provider/provider.mjs +23 -0
- package/dist/esm/project-run/admission-strategy-provider/provider.mjs.map +1 -0
- package/dist/esm/project-run/aggregation.mjs +42 -57
- package/dist/esm/project-run/aggregation.mjs.map +1 -1
- package/dist/esm/project-run/changes/git.mjs +161 -0
- package/dist/esm/project-run/changes/git.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs +41 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/callback.mjs +37 -9
- package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/console-capture.mjs +220 -0
- package/dist/esm/project-run/check-execution/console-capture.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/dependencies.mjs +99 -6
- package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-finalization.mjs +57 -14
- package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-settlement.mjs +44 -19
- package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/flag-controls.mjs +95 -0
- package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/lifecycle.mjs +2 -0
- package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/messages.mjs +5 -0
- package/dist/esm/project-run/check-execution/messages.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/plan.mjs +9 -5
- package/dist/esm/project-run/check-execution/plan.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/{preflight-result.mjs → preparation-result.mjs} +24 -24
- package/dist/esm/project-run/check-execution/preparation-result.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/preparation.mjs +172 -0
- package/dist/esm/project-run/check-execution/preparation.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs +71 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/resolved-checks.mjs +44 -139
- package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/resolved-execution-result.mjs +2 -0
- package/dist/esm/project-run/check-execution/resolved-execution-result.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/scheduled-check-run.mjs +79 -0
- package/dist/esm/project-run/check-execution/scheduled-check-run.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/terminal-result.mjs +70 -25
- package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -1
- package/dist/esm/project-run/{completion.mjs → completion/completion.mjs} +34 -39
- package/dist/esm/project-run/completion/completion.mjs.map +1 -0
- package/dist/esm/project-run/{machine-publication.mjs → completion/machine-publication.mjs} +1 -1
- package/dist/esm/project-run/completion/machine-publication.mjs.map +1 -0
- package/dist/esm/project-run/completion/result-resolver.mjs +36 -0
- package/dist/esm/project-run/completion/result-resolver.mjs.map +1 -0
- package/dist/esm/project-run/controls/contract.mjs.map +1 -1
- package/dist/esm/project-run/controls/outputs-override-validation.mjs +67 -47
- package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -1
- package/dist/esm/project-run/controls/validation-result.mjs.map +1 -1
- package/dist/esm/project-run/controls/validation.mjs +79 -62
- package/dist/esm/project-run/controls/validation.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +3 -3
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/logger.mjs +100 -161
- package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +159 -0
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -0
- package/dist/esm/project-run/invocation/candidate.mjs +65 -0
- package/dist/esm/project-run/invocation/candidate.mjs.map +1 -0
- package/dist/esm/project-run/invocation/candidates.mjs +26 -0
- package/dist/esm/project-run/invocation/candidates.mjs.map +1 -0
- package/dist/esm/project-run/invocation/creation.mjs +83 -0
- package/dist/esm/project-run/invocation/creation.mjs.map +1 -0
- package/dist/esm/project-run/invocation/execution.mjs +98 -0
- package/dist/esm/project-run/invocation/execution.mjs.map +1 -0
- package/dist/esm/project-run/invocation/paths.mjs +77 -0
- package/dist/esm/project-run/invocation/paths.mjs.map +1 -0
- package/dist/esm/project-run/invocation/progress.mjs +30 -0
- package/dist/esm/project-run/invocation/progress.mjs.map +1 -0
- package/dist/esm/project-run/invocation/run.mjs +82 -0
- package/dist/esm/project-run/invocation/run.mjs.map +1 -0
- package/dist/esm/project-run/invocation/scheduler.mjs +64 -0
- package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -0
- package/dist/esm/project-run/{output-configuration.mjs → outputs/configuration.mjs} +3 -2
- package/dist/esm/project-run/outputs/configuration.mjs.map +1 -0
- package/dist/esm/project-run/outputs/status.mjs +105 -0
- package/dist/esm/project-run/outputs/status.mjs.map +1 -0
- package/dist/esm/project-run/progress-rendering/presentation.mjs +140 -26
- package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +118 -22
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +50 -10
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer.mjs +11 -4
- package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
- package/dist/esm/project-run/project-context.mjs +3 -2
- package/dist/esm/project-run/project-context.mjs.map +1 -1
- package/dist/esm/project-run/result.mjs +2 -0
- package/dist/esm/project-run/result.mjs.map +1 -1
- package/dist/esm/project-run/run.mjs +1 -1
- package/dist/esm/project-run/run.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs +45 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +171 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/core.mjs +163 -0
- package/dist/esm/project-run/task-scheduler/admission-core/core.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/input.mjs +119 -0
- package/dist/esm/project-run/task-scheduler/admission-core/input.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs +124 -0
- package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs +99 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +196 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +168 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +121 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs +65 -0
- package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs +25 -0
- package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs +55 -0
- package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs +110 -0
- package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/execution-state.mjs +34 -5
- package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs +46 -0
- package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/graph-validation.mjs +54 -26
- package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/graph.mjs +79 -3
- package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +211 -0
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs +116 -0
- package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/policy.mjs +67 -0
- package/dist/esm/project-run/task-scheduler/measurement/policy.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/summary.mjs +123 -0
- package/dist/esm/project-run/task-scheduler/measurement/summary.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +164 -0
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +90 -62
- package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +20 -6
- package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +5 -105
- package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +0 -9
- package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +48 -28
- package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +91 -0
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs +94 -0
- package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +66 -0
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler.mjs +183 -114
- package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
- package/docs/api-mechanics.md +167 -121
- package/docs/changelog.md +300 -0
- package/docs/checks/duplicate-detection.md +131 -60
- package/docs/checks/file-metrics.md +68 -46
- package/docs/checks/function-metrics.md +119 -163
- package/docs/checks/json-schema-validation.md +65 -37
- package/docs/checks/json-validation.md +59 -27
- package/docs/checks/maintenance-reminders.md +68 -32
- package/docs/checks/markdown-link-validation.md +104 -56
- package/docs/checks/markdown-lint.md +167 -0
- package/docs/checks/secret-detection.md +153 -0
- package/docs/examples/artifacts/mixed-outcomes/definition.ts +14 -14
- package/docs/guides/building-project-gate.md +706 -0
- package/docs/guides/cache-results.md +63 -0
- package/docs/guides/callbacks.md +93 -0
- package/docs/guides/check-dependencies.md +152 -0
- package/docs/guides/collecting-project-files.md +59 -0
- package/docs/guides/command-check.md +155 -0
- package/docs/guides/data-boundaries.md +140 -0
- package/docs/guides/extending-check-lifecycle.md +164 -0
- package/docs/guides/finding-waivers.md +87 -0
- package/docs/guides/learned-scheduling.md +83 -0
- package/docs/guides/presenting-findings.md +54 -0
- package/docs/guides/run-outputs.md +171 -0
- package/docs/guides/scheduling.md +208 -0
- package/docs/guides/simulating-admission.md +55 -0
- package/docs/output.md +13 -21
- package/licenses/Lizard-1.24.0-MIT.txt +30 -0
- package/{third-party-licenses/momoa-3.3.12-LICENSE → licenses/Lizard-1.24.0-lizard.py-Apache-2.0.txt} +1 -0
- package/licenses/Pygments-2.18.0-BSD-2-Clause.txt +25 -0
- package/licenses/analyzer-translations-NOTICE.md +24 -0
- package/licenses/lizard-1.24.0-provenance.json +957 -0
- package/package.json +19 -6
- package/src/check/check.ts +382 -92
- package/src/check/flag-enablement.ts +76 -0
- package/src/check/handoff-provider-identity.ts +34 -0
- package/src/check/inherited-collection.ts +2 -2
- package/src/check/project-changes.ts +14 -0
- package/src/check/project-context.ts +11 -0
- package/src/check-settlement/fact-validation.ts +29 -39
- package/src/check-settlement/facts.ts +1 -1
- package/src/check-settlement/outcome-normalization.ts +17 -35
- package/src/check-settlement/reason-shape.ts +20 -0
- package/src/check-settlement/record-store.ts +18 -15
- package/src/check-settlement/session.ts +12 -3
- package/src/data-boundary/canonical-data.ts +36 -9
- package/src/data-boundary/canonical-json.ts +18 -1
- package/src/data-boundary/closed-values.ts +54 -5
- package/src/data-boundary/config-glob.ts +17 -0
- package/src/data-boundary/project-path.ts +21 -0
- package/src/data-boundary/value-shapes.ts +12 -0
- package/src/index.ts +134 -5
- package/src/machine-output/v4/atomic-publication.ts +4 -17
- package/src/package-checks/check-authoring.ts +136 -0
- package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +46 -0
- package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +95 -0
- package/src/package-checks/code-quality-findings/policy.ts +23 -0
- package/src/package-checks/command-check/command-check.ts +152 -0
- package/src/package-checks/command-check/contract.ts +168 -0
- package/src/package-checks/command-check/execution.ts +211 -0
- package/src/package-checks/command-check/options.ts +331 -0
- package/src/package-checks/command-check/transcript.ts +35 -0
- package/src/package-checks/duplicate-detection/area-policy.ts +24 -13
- package/src/package-checks/duplicate-detection/cache/identity.ts +1 -1
- package/src/package-checks/duplicate-detection/default-check.ts +38 -7
- package/src/package-checks/duplicate-detection/execution.ts +82 -24
- package/src/package-checks/duplicate-detection/finding-messages.ts +75 -0
- package/src/package-checks/duplicate-detection/finding-waiver-identity.ts +68 -0
- package/src/package-checks/duplicate-detection/jscpd/availability.ts +2 -2
- package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +1 -1
- package/src/package-checks/duplicate-detection/jscpd/json-report.ts +24 -5
- package/src/package-checks/duplicate-detection/jscpd/scanner.ts +6 -7
- package/src/package-checks/duplicate-detection/options-resolution.ts +32 -57
- package/src/package-checks/duplicate-detection/options-validation.ts +23 -31
- package/src/package-checks/duplicate-detection/options.ts +26 -3
- package/src/package-checks/duplicate-detection/records.ts +65 -12
- package/src/package-checks/file-metrics/constructor.ts +29 -6
- package/src/package-checks/file-metrics/execution.ts +17 -20
- package/src/package-checks/file-metrics/finding-messages.ts +29 -0
- package/src/package-checks/file-metrics/options-resolution.ts +19 -52
- package/src/package-checks/file-metrics/options-validation.ts +23 -32
- package/src/package-checks/file-metrics/options.ts +6 -3
- package/src/package-checks/file-metrics/records.ts +11 -23
- package/src/package-checks/file-metrics/scc/availability.ts +2 -2
- package/src/package-checks/file-metrics/scc/batch-planner.ts +56 -0
- package/src/package-checks/file-metrics/scc/logical-scan-resources.ts +59 -0
- package/src/package-checks/file-metrics/scc/parser.ts +4 -4
- package/src/package-checks/file-metrics/scc/scanner.ts +135 -33
- package/src/package-checks/function-metrics/analysis.ts +81 -21
- package/src/package-checks/function-metrics/analyzer/analysis-context.ts +749 -0
- package/src/package-checks/function-metrics/analyzer/analysis-model.ts +421 -0
- package/src/package-checks/function-metrics/analyzer/contracts.ts +54 -0
- package/src/package-checks/function-metrics/analyzer/extension-output.ts +269 -0
- package/src/package-checks/function-metrics/analyzer/extensions/extension-base.ts +33 -0
- package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +25 -0
- package/src/package-checks/function-metrics/analyzer/extensions/lizardnd.ts +144 -0
- package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +345 -0
- package/src/package-checks/function-metrics/analyzer/extensions/registry.ts +157 -0
- package/src/package-checks/function-metrics/analyzer/pipeline.ts +313 -0
- package/src/package-checks/function-metrics/analyzer/port-facade.ts +142 -0
- package/src/package-checks/function-metrics/analyzer/reader-registry.ts +84 -0
- package/src/package-checks/function-metrics/analyzer/readers/csharp.ts +110 -0
- package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +501 -0
- package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +294 -0
- package/src/package-checks/function-metrics/analyzer/readers/gdscript.ts +42 -0
- package/src/package-checks/function-metrics/analyzer/readers/go.ts +53 -0
- package/src/package-checks/function-metrics/analyzer/readers/java-body-states.ts +141 -0
- package/src/package-checks/function-metrics/analyzer/readers/java.ts +270 -0
- package/src/package-checks/function-metrics/analyzer/readers/javascript.ts +19 -0
- package/src/package-checks/function-metrics/analyzer/readers/kotlin.ts +120 -0
- package/src/package-checks/function-metrics/analyzer/readers/lua.ts +68 -0
- package/src/package-checks/function-metrics/analyzer/readers/objc.ts +113 -0
- package/src/package-checks/function-metrics/analyzer/readers/perl.ts +340 -0
- package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +253 -0
- package/src/package-checks/function-metrics/analyzer/readers/php.ts +63 -0
- package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +310 -0
- package/src/package-checks/function-metrics/analyzer/readers/python.ts +432 -0
- package/src/package-checks/function-metrics/analyzer/readers/r.ts +235 -0
- package/src/package-checks/function-metrics/analyzer/readers/ruby.ts +88 -0
- package/src/package-checks/function-metrics/analyzer/readers/rust.ts +47 -0
- package/src/package-checks/function-metrics/analyzer/readers/scala.ts +60 -0
- package/src/package-checks/function-metrics/analyzer/readers/solidity.ts +32 -0
- package/src/package-checks/function-metrics/analyzer/readers/st.ts +161 -0
- package/src/package-checks/function-metrics/analyzer/readers/swift.ts +116 -0
- package/src/package-checks/function-metrics/analyzer/readers/tsx.ts +165 -0
- package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +96 -0
- package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +599 -0
- package/src/package-checks/function-metrics/analyzer/readers/vue.ts +43 -0
- package/src/package-checks/function-metrics/analyzer/readers/zig.ts +36 -0
- package/src/package-checks/function-metrics/analyzer/shared/clike.ts +541 -0
- package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +684 -0
- package/src/package-checks/function-metrics/analyzer/shared/golike.ts +143 -0
- package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +80 -0
- package/src/package-checks/function-metrics/analyzer/shared/rubylike.ts +161 -0
- package/src/package-checks/function-metrics/analyzer/shared/script-language.ts +50 -0
- package/src/package-checks/function-metrics/analyzer-adapter.ts +84 -0
- package/src/package-checks/function-metrics/analyzer-worker-contract.ts +10 -0
- package/src/package-checks/function-metrics/analyzer-worker-port.ts +164 -0
- package/src/package-checks/function-metrics/analyzer-worker.ts +31 -0
- package/src/package-checks/function-metrics/constructor.ts +32 -9
- package/src/package-checks/function-metrics/execution.ts +94 -41
- package/src/package-checks/function-metrics/finding-messages.ts +95 -0
- package/src/package-checks/function-metrics/finding-waiver-identity.ts +36 -0
- package/src/package-checks/function-metrics/measurement-model.ts +15 -1
- package/src/package-checks/function-metrics/measurement.ts +223 -36
- package/src/package-checks/function-metrics/options-resolution.ts +39 -75
- package/src/package-checks/function-metrics/options-validation.ts +30 -39
- package/src/package-checks/function-metrics/options.ts +32 -13
- package/src/package-checks/function-metrics/records.ts +73 -7
- package/src/package-checks/function-metrics/target-files.ts +10 -70
- package/src/package-checks/{file-metrics/scc → host-environment}/csv.ts +1 -2
- package/src/package-checks/host-environment/git.ts +13 -2
- package/src/package-checks/host-environment/path.ts +1 -20
- package/src/package-checks/host-environment/process/contract.ts +17 -9
- package/src/package-checks/host-environment/process/result.ts +48 -20
- package/src/package-checks/host-environment/process/runner.ts +8 -4
- package/src/package-checks/host-environment/process.ts +10 -0
- package/src/package-checks/json-schema-validation/default-check.ts +38 -5
- package/src/package-checks/json-schema-validation/final-data.ts +8 -0
- package/src/package-checks/json-schema-validation/options-validation.ts +16 -23
- package/src/package-checks/json-schema-validation/options.ts +27 -1
- package/src/package-checks/json-schema-validation/reference-resolver.ts +6 -2
- package/src/package-checks/json-schema-validation/schema-policy.ts +10 -5
- package/src/package-checks/json-validation/default-check.ts +27 -6
- package/src/package-checks/json-validation/final-data.ts +5 -0
- package/src/package-checks/json-validation/options-validation.ts +4 -18
- package/src/package-checks/json-validation/options.ts +4 -1
- package/src/package-checks/local-cache-options.ts +40 -0
- package/src/package-checks/maintenance-reminders/final-data.ts +18 -0
- package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +89 -9
- package/src/package-checks/maintenance-reminders/maintenance-support.ts +3 -3
- package/src/package-checks/markdown-link-validation/default-check.ts +57 -8
- package/src/package-checks/markdown-link-validation/execution.ts +51 -57
- package/src/package-checks/markdown-link-validation/filesystem-probes.ts +108 -51
- package/src/package-checks/markdown-link-validation/final-data.ts +5 -0
- package/src/package-checks/markdown-link-validation/finding-messages.ts +48 -0
- package/src/package-checks/markdown-link-validation/local-resolution.ts +17 -9
- package/src/package-checks/markdown-link-validation/local-resolver.ts +5 -2
- package/src/package-checks/markdown-link-validation/markdown-parser.ts +1 -5
- package/src/package-checks/markdown-link-validation/options-resolution.ts +14 -3
- package/src/package-checks/markdown-link-validation/options-validation.ts +12 -19
- package/src/package-checks/markdown-link-validation/options.ts +15 -1
- package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +245 -0
- package/src/package-checks/markdown-link-validation/parse-facts-cache.ts +154 -0
- package/src/package-checks/markdown-link-validation/resolver-engine.ts +75 -65
- package/src/package-checks/markdown-link-validation/source-reader.ts +86 -0
- package/src/package-checks/markdown-link-validation/unavailable-reasons.ts +42 -0
- package/src/package-checks/markdown-lint/adapter.ts +167 -0
- package/src/package-checks/markdown-lint/default-check.ts +92 -0
- package/src/package-checks/markdown-lint/execution.ts +266 -0
- package/src/package-checks/markdown-lint/final-data.ts +33 -0
- package/src/package-checks/markdown-lint/finding-messages.ts +87 -0
- package/src/package-checks/markdown-lint/finding-waiver-identity.ts +54 -0
- package/src/package-checks/markdown-lint/findings-cache.ts +141 -0
- package/src/package-checks/markdown-lint/options-resolution.ts +102 -0
- package/src/package-checks/markdown-lint/options-validation.ts +50 -0
- package/src/package-checks/markdown-lint/options.ts +82 -0
- package/src/package-checks/markdown-lint/records.ts +132 -0
- package/src/package-checks/markdown-lint/unavailable-reasons.ts +33 -0
- package/src/package-checks/project-files/collection.ts +39 -23
- package/src/package-checks/project-files/config-glob.ts +1 -17
- package/src/package-checks/project-files/configuration.ts +4 -15
- package/src/package-checks/project-files/gitlink-revision.ts +5 -7
- package/src/package-checks/project-files/gitlink-worktree.ts +36 -8
- package/src/package-checks/project-files/public-collection.ts +92 -0
- package/src/package-checks/project-files/revision-paths.ts +3 -3
- package/src/package-checks/project-files/revision-worktree-files.ts +17 -17
- package/src/package-checks/secret-detection/classification.ts +30 -0
- package/src/package-checks/secret-detection/default-check.ts +73 -0
- package/src/package-checks/secret-detection/execution.ts +247 -0
- package/src/package-checks/secret-detection/final-data.ts +57 -0
- package/src/package-checks/secret-detection/finding-waiver-identity.ts +37 -0
- package/src/package-checks/secret-detection/input-preparation.ts +290 -0
- package/src/package-checks/secret-detection/options-resolution.ts +65 -0
- package/src/package-checks/secret-detection/options-validation.ts +27 -0
- package/src/package-checks/secret-detection/options.ts +39 -0
- package/src/package-checks/secret-detection/records.ts +77 -0
- package/src/package-checks/secret-detection/secretlint/adapter.ts +122 -0
- package/src/package-tools/admission-policy/define-admission-policy.ts +54 -0
- package/src/package-tools/cache/cache-json-by-key.ts +300 -0
- package/src/package-tools/finding-presentation/finding-presentation.ts +69 -0
- package/src/{finding-waivers → package-tools/finding-waivers}/reconciliation.ts +16 -8
- package/src/package-tools/learned-critical-path/critical-path-ranking.ts +76 -0
- package/src/package-tools/learned-critical-path/duration-model/bounded-history.ts +108 -0
- package/src/package-tools/learned-critical-path/duration-model/prediction.ts +184 -0
- package/src/package-tools/learned-critical-path/duration-model/preparation.ts +79 -0
- package/src/package-tools/learned-critical-path/duration-model/recording.ts +209 -0
- package/src/package-tools/learned-critical-path/duration-model/storage.ts +251 -0
- package/src/package-tools/learned-critical-path/selection-layers.ts +71 -0
- package/src/package-tools/learned-critical-path/static-decision.ts +105 -0
- package/src/package-tools/learned-critical-path/strategy.ts +302 -0
- package/src/project-definition/check-tree/authoring.ts +40 -234
- package/src/project-definition/check-tree/check-fields-authoring.ts +242 -0
- package/src/project-definition/check-tree/collection-authoring.ts +13 -0
- package/src/project-definition/check-tree/flag-conditions.ts +99 -0
- package/src/project-definition/check-tree/materialization.ts +21 -9
- package/src/project-definition/check-tree/resolution.ts +84 -28
- package/src/project-definition/check-tree/scheduling-authoring.ts +114 -0
- package/src/project-definition/declarative-snapshot.ts +94 -0
- package/src/project-definition/output-defaults.ts +32 -1
- package/src/project-definition/output-validation.ts +15 -15
- package/src/project-definition/progress-rendering-output.ts +121 -0
- package/src/project-definition/project-changes.ts +112 -0
- package/src/project-definition/project-definition-validation.ts +166 -19
- package/src/project-definition/project-definition.ts +177 -67
- package/src/project-definition/resource-unit-mapping.ts +25 -0
- package/src/project-definition/scheduler-policy.ts +556 -0
- package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +83 -0
- package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +27 -0
- package/src/project-run/admission-strategy-provider/provider.ts +45 -0
- package/src/project-run/aggregation.ts +52 -70
- package/src/project-run/changes/git.ts +206 -0
- package/src/project-run/check-execution/admitted-check-execution.ts +62 -0
- package/src/project-run/check-execution/callback.ts +52 -9
- package/src/project-run/check-execution/console-capture.ts +262 -0
- package/src/project-run/check-execution/dependencies.ts +161 -10
- package/src/project-run/check-execution/execution-finalization.ts +103 -27
- package/src/project-run/check-execution/execution-settlement.ts +99 -32
- package/src/project-run/check-execution/flag-controls.ts +146 -0
- package/src/project-run/check-execution/lifecycle.ts +29 -0
- package/src/project-run/check-execution/messages.ts +8 -0
- package/src/project-run/check-execution/plan.ts +12 -8
- package/src/project-run/check-execution/{preflight-result.ts → preparation-result.ts} +34 -32
- package/src/project-run/check-execution/preparation.ts +309 -0
- package/src/project-run/check-execution/ready-check-execution.ts +97 -0
- package/src/project-run/check-execution/resolved-checks.ts +92 -232
- package/src/project-run/check-execution/resolved-execution-result.ts +22 -0
- package/src/project-run/check-execution/scheduled-check-run.ts +119 -0
- package/src/project-run/check-execution/terminal-result.ts +108 -29
- package/src/project-run/{completion.ts → completion/completion.ts} +33 -59
- package/src/project-run/{machine-publication.ts → completion/machine-publication.ts} +4 -4
- package/src/project-run/completion/result-resolver.ts +60 -0
- package/src/project-run/controls/contract.ts +22 -9
- package/src/project-run/controls/outputs-override-validation.ts +83 -60
- package/src/project-run/controls/validation-result.ts +17 -6
- package/src/project-run/controls/validation.ts +110 -68
- package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +1 -2
- package/src/project-run/diagnostic-logging/logger.ts +132 -207
- package/src/project-run/diagnostic-logging/observation-rendering.ts +203 -0
- package/src/project-run/invocation/candidate.ts +99 -0
- package/src/project-run/invocation/candidates.ts +56 -0
- package/src/project-run/invocation/creation.ts +120 -0
- package/src/project-run/invocation/execution.ts +136 -0
- package/src/project-run/invocation/paths.ts +154 -0
- package/src/project-run/invocation/progress.ts +38 -0
- package/src/project-run/invocation/run.ts +144 -0
- package/src/project-run/invocation/scheduler.ts +82 -0
- package/src/project-run/{output-configuration.ts → outputs/configuration.ts} +6 -5
- package/src/project-run/outputs/status.ts +161 -0
- package/src/project-run/progress-rendering/presentation.ts +150 -36
- package/src/project-run/progress-rendering/renderer-formatting.ts +185 -25
- package/src/project-run/progress-rendering/renderer-lifecycle.ts +61 -9
- package/src/project-run/progress-rendering/renderer.ts +23 -6
- package/src/project-run/project-context.ts +10 -5
- package/src/project-run/result.ts +50 -4
- package/src/project-run/run.ts +7 -6
- package/src/project-run/task-scheduler/admission-core/compiled-graph-lookup.ts +71 -0
- package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +321 -0
- package/src/project-run/task-scheduler/admission-core/core.ts +278 -0
- package/src/project-run/task-scheduler/admission-core/input.ts +138 -0
- package/src/project-run/task-scheduler/admission-core/projection.ts +164 -0
- package/src/project-run/task-scheduler/admission-core/selection-index.ts +165 -0
- package/src/project-run/task-scheduler/admission-core/selection-query.ts +297 -0
- package/src/project-run/task-scheduler/admission-core/selection-seed.ts +282 -0
- package/src/project-run/task-scheduler/admission-core/selection-transition.ts +245 -0
- package/src/project-run/task-scheduler/admission-core/selection.ts +140 -0
- package/src/project-run/task-scheduler/admission-core/trace.ts +177 -0
- package/src/project-run/task-scheduler/admission-scope-layers.ts +44 -0
- package/src/project-run/task-scheduler/admission-selection-policy.ts +116 -0
- package/src/project-run/task-scheduler/custom-admission-policy.ts +128 -0
- package/src/project-run/task-scheduler/execution-state.ts +97 -6
- package/src/project-run/task-scheduler/forced-block-effect-replay.ts +68 -0
- package/src/project-run/task-scheduler/graph-validation.ts +77 -31
- package/src/project-run/task-scheduler/graph.ts +111 -3
- package/src/project-run/task-scheduler/measurement/diagnostics.ts +267 -0
- package/src/project-run/task-scheduler/measurement/integrals.ts +177 -0
- package/src/project-run/task-scheduler/measurement/policy.ts +105 -0
- package/src/project-run/task-scheduler/measurement/summary.ts +175 -0
- package/src/project-run/task-scheduler/measurement/timing.ts +198 -0
- package/src/project-run/task-scheduler/scheduler-admission-decision.ts +143 -134
- package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +34 -9
- package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +28 -170
- package/src/project-run/task-scheduler/scheduler-decision-model.ts +36 -40
- package/src/project-run/task-scheduler/scheduler-decision.ts +68 -36
- package/src/project-run/task-scheduler/scheduler-observation.ts +126 -0
- package/src/project-run/task-scheduler/scheduler-task-lifecycle.ts +150 -0
- package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +97 -0
- package/src/project-run/task-scheduler/scheduler.ts +233 -171
- package/types/check/check.d.ts +225 -69
- package/types/check/flag-enablement.d.ts +42 -0
- package/types/check/handoff-provider-identity.d.ts +12 -0
- package/types/check/inherited-collection.d.ts +1 -1
- package/types/check/project-changes.d.ts +13 -0
- package/types/check/project-context.d.ts +10 -0
- package/types/check-settlement/facts.d.ts +1 -1
- package/types/check-settlement/reason-shape.d.ts +5 -0
- package/types/check-settlement/record-store.d.ts +2 -2
- package/types/check-settlement/session.d.ts +3 -1
- package/types/data-boundary/canonical-data.d.ts +28 -5
- package/types/data-boundary/canonical-json.d.ts +18 -1
- package/types/data-boundary/closed-values.d.ts +24 -0
- package/types/data-boundary/config-glob.d.ts +5 -0
- package/types/data-boundary/project-path.d.ts +4 -0
- package/types/data-boundary/value-shapes.d.ts +3 -0
- package/types/index.d.ts +40 -9
- package/types/package-checks/check-authoring.d.ts +45 -0
- package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +7 -0
- package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +34 -0
- package/types/package-checks/code-quality-findings/policy.d.ts +4 -0
- package/types/package-checks/command-check/command-check.d.ts +48 -0
- package/types/package-checks/command-check/contract.d.ts +108 -0
- package/types/package-checks/command-check/execution.d.ts +7 -0
- package/types/package-checks/command-check/options.d.ts +11 -0
- package/types/package-checks/command-check/transcript.d.ts +8 -0
- package/types/package-checks/duplicate-detection/area-policy.d.ts +1 -1
- package/types/package-checks/duplicate-detection/default-check.d.ts +5 -2
- package/types/package-checks/duplicate-detection/finding-messages.d.ts +7 -0
- package/types/package-checks/duplicate-detection/finding-waiver-identity.d.ts +3 -0
- package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +1 -1
- package/types/package-checks/duplicate-detection/options.d.ts +21 -3
- package/types/package-checks/duplicate-detection/records.d.ts +20 -3
- package/types/package-checks/file-metrics/constructor.d.ts +5 -2
- package/types/package-checks/file-metrics/finding-messages.d.ts +4 -0
- package/types/package-checks/file-metrics/options.d.ts +4 -3
- package/types/package-checks/file-metrics/records.d.ts +5 -10
- package/types/package-checks/file-metrics/scc/batch-planner.d.ts +18 -0
- package/types/package-checks/file-metrics/scc/logical-scan-resources.d.ts +14 -0
- package/types/package-checks/file-metrics/scc/parser.d.ts +4 -4
- package/types/package-checks/function-metrics/analysis.d.ts +1 -1
- package/types/package-checks/function-metrics/analyzer/analysis-context.d.ts +174 -0
- package/types/package-checks/function-metrics/analyzer/analysis-model.d.ts +135 -0
- package/types/package-checks/function-metrics/analyzer/contracts.d.ts +48 -0
- package/types/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.d.ts +13 -0
- package/types/package-checks/function-metrics/analyzer/extensions/lizardnd.d.ts +28 -0
- package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +99 -0
- package/types/package-checks/function-metrics/analyzer/extensions/registry.d.ts +34 -0
- package/types/package-checks/function-metrics/analyzer/pipeline.d.ts +67 -0
- package/types/package-checks/function-metrics/analyzer/port-facade.d.ts +38 -0
- package/types/package-checks/function-metrics/analyzer/reader-registry.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/csharp.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/erlang.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/fortran.d.ts +29 -0
- package/types/package-checks/function-metrics/analyzer/readers/gdscript.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/go.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/java-body-states.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/java.d.ts +44 -0
- package/types/package-checks/function-metrics/analyzer/readers/javascript.d.ts +14 -0
- package/types/package-checks/function-metrics/analyzer/readers/kotlin.d.ts +23 -0
- package/types/package-checks/function-metrics/analyzer/readers/lua.d.ts +16 -0
- package/types/package-checks/function-metrics/analyzer/readers/objc.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/perl.d.ts +28 -0
- package/types/package-checks/function-metrics/analyzer/readers/php-states.d.ts +41 -0
- package/types/package-checks/function-metrics/analyzer/readers/php.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/plsql.d.ts +24 -0
- package/types/package-checks/function-metrics/analyzer/readers/python.d.ts +50 -0
- package/types/package-checks/function-metrics/analyzer/readers/r.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/ruby.d.ts +16 -0
- package/types/package-checks/function-metrics/analyzer/readers/rust.d.ts +20 -0
- package/types/package-checks/function-metrics/analyzer/readers/scala.d.ts +20 -0
- package/types/package-checks/function-metrics/analyzer/readers/solidity.d.ts +19 -0
- package/types/package-checks/function-metrics/analyzer/readers/st.d.ts +37 -0
- package/types/package-checks/function-metrics/analyzer/readers/swift.d.ts +30 -0
- package/types/package-checks/function-metrics/analyzer/readers/tsx.d.ts +15 -0
- package/types/package-checks/function-metrics/analyzer/readers/ttcn.d.ts +22 -0
- package/types/package-checks/function-metrics/analyzer/readers/typescript.d.ts +35 -0
- package/types/package-checks/function-metrics/analyzer/readers/vue.d.ts +18 -0
- package/types/package-checks/function-metrics/analyzer/readers/zig.d.ts +19 -0
- package/types/package-checks/function-metrics/analyzer/shared/clike.d.ts +101 -0
- package/types/package-checks/function-metrics/analyzer/shared/code-reader.d.ts +176 -0
- package/types/package-checks/function-metrics/analyzer/shared/golike.d.ts +39 -0
- package/types/package-checks/function-metrics/analyzer/shared/js-style-regex.d.ts +16 -0
- package/types/package-checks/function-metrics/analyzer/shared/rubylike.d.ts +40 -0
- package/types/package-checks/function-metrics/analyzer/shared/script-language.d.ts +17 -0
- package/types/package-checks/function-metrics/analyzer-adapter.d.ts +26 -0
- package/types/package-checks/function-metrics/analyzer-worker-contract.d.ts +5 -0
- package/types/package-checks/function-metrics/analyzer-worker-port.d.ts +24 -0
- package/types/package-checks/function-metrics/analyzer-worker.d.ts +1 -0
- package/types/package-checks/function-metrics/constructor.d.ts +6 -3
- package/types/package-checks/function-metrics/execution.d.ts +5 -2
- package/types/package-checks/function-metrics/finding-messages.d.ts +9 -0
- package/types/package-checks/function-metrics/finding-waiver-identity.d.ts +2 -0
- package/types/package-checks/function-metrics/measurement-model.d.ts +13 -1
- package/types/package-checks/function-metrics/measurement.d.ts +22 -7
- package/types/package-checks/function-metrics/options.d.ts +26 -12
- package/types/package-checks/function-metrics/records.d.ts +24 -5
- package/types/package-checks/function-metrics/target-files.d.ts +4 -3
- package/types/package-checks/host-environment/csv.d.ts +2 -0
- package/types/package-checks/host-environment/git.d.ts +3 -1
- package/types/package-checks/host-environment/path.d.ts +1 -3
- package/types/package-checks/host-environment/process/contract.d.ts +17 -9
- package/types/package-checks/host-environment/process.d.ts +5 -0
- package/types/package-checks/json-schema-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-schema-validation/final-data.d.ts +8 -0
- package/types/package-checks/json-schema-validation/options.d.ts +33 -4
- package/types/package-checks/json-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-validation/final-data.d.ts +5 -0
- package/types/package-checks/json-validation/options.d.ts +2 -1
- package/types/package-checks/local-cache-options.d.ts +9 -0
- package/types/package-checks/maintenance-reminders/final-data.d.ts +18 -0
- package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +11 -2
- package/types/package-checks/markdown-link-validation/default-check.d.ts +13 -4
- package/types/package-checks/markdown-link-validation/execution.d.ts +1 -3
- package/types/package-checks/markdown-link-validation/final-data.d.ts +5 -0
- package/types/package-checks/markdown-link-validation/finding-messages.d.ts +4 -0
- package/types/package-checks/markdown-link-validation/local-resolution.d.ts +12 -6
- package/types/package-checks/markdown-link-validation/local-resolver.d.ts +2 -1
- package/types/package-checks/markdown-link-validation/options.d.ts +13 -1
- package/types/package-checks/markdown-link-validation/parse-facts-cache-payload.d.ts +24 -0
- package/types/package-checks/markdown-link-validation/parse-facts-cache.d.ts +13 -0
- package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +6 -4
- package/types/package-checks/markdown-link-validation/source-reader.d.ts +11 -0
- package/types/package-checks/markdown-link-validation/unavailable-reasons.d.ts +4 -0
- package/types/package-checks/markdown-lint/adapter.d.ts +10 -0
- package/types/package-checks/markdown-lint/default-check.d.ts +37 -0
- package/types/package-checks/markdown-lint/execution.d.ts +24 -0
- package/types/package-checks/markdown-lint/final-data.d.ts +8 -0
- package/types/package-checks/markdown-lint/finding-messages.d.ts +6 -0
- package/types/package-checks/markdown-lint/finding-waiver-identity.d.ts +3 -0
- package/types/package-checks/markdown-lint/findings-cache.d.ts +17 -0
- package/types/package-checks/markdown-lint/options-resolution.d.ts +3 -0
- package/types/package-checks/markdown-lint/options-validation.d.ts +2 -0
- package/types/package-checks/markdown-lint/options.d.ts +65 -0
- package/types/package-checks/markdown-lint/records.d.ts +39 -0
- package/types/package-checks/markdown-lint/unavailable-reasons.d.ts +3 -0
- package/types/package-checks/project-files/public-collection.d.ts +16 -0
- package/types/package-checks/secret-detection/classification.d.ts +12 -0
- package/types/package-checks/secret-detection/default-check.d.ts +14 -0
- package/types/package-checks/secret-detection/execution.d.ts +14 -0
- package/types/package-checks/secret-detection/final-data.d.ts +15 -0
- package/types/package-checks/secret-detection/finding-waiver-identity.d.ts +5 -0
- package/types/package-checks/secret-detection/input-preparation.d.ts +24 -0
- package/types/package-checks/secret-detection/options-resolution.d.ts +6 -0
- package/types/package-checks/secret-detection/options-validation.d.ts +3 -0
- package/types/package-checks/secret-detection/options.d.ts +33 -0
- package/types/package-checks/secret-detection/records.d.ts +35 -0
- package/types/package-checks/secret-detection/secretlint/adapter.d.ts +28 -0
- package/types/package-tools/admission-policy/define-admission-policy.d.ts +26 -0
- package/types/package-tools/cache/cache-json-by-key.d.ts +53 -0
- package/types/package-tools/finding-presentation/finding-presentation.d.ts +27 -0
- package/types/{finding-waivers → package-tools/finding-waivers}/reconciliation.d.ts +3 -3
- package/types/package-tools/learned-critical-path/critical-path-ranking.d.ts +19 -0
- package/types/package-tools/learned-critical-path/duration-model/bounded-history.d.ts +34 -0
- package/types/package-tools/learned-critical-path/duration-model/prediction.d.ts +32 -0
- package/types/package-tools/learned-critical-path/duration-model/preparation.d.ts +28 -0
- package/types/package-tools/learned-critical-path/duration-model/recording.d.ts +28 -0
- package/types/package-tools/learned-critical-path/duration-model/storage.d.ts +12 -0
- package/types/package-tools/learned-critical-path/selection-layers.d.ts +14 -0
- package/types/package-tools/learned-critical-path/static-decision.d.ts +3 -0
- package/types/package-tools/learned-critical-path/strategy.d.ts +35 -0
- package/types/project-definition/check-tree/authoring.d.ts +13 -14
- package/types/project-definition/check-tree/check-fields-authoring.d.ts +30 -0
- package/types/project-definition/check-tree/collection-authoring.d.ts +2 -0
- package/types/project-definition/check-tree/flag-conditions.d.ts +5 -0
- package/types/project-definition/check-tree/resolution.d.ts +13 -6
- package/types/project-definition/check-tree/scheduling-authoring.d.ts +19 -0
- package/types/project-definition/declarative-snapshot.d.ts +10 -0
- package/types/project-definition/output-defaults.d.ts +7 -0
- package/types/project-definition/output-validation.d.ts +2 -1
- package/types/project-definition/progress-rendering-output.d.ts +41 -0
- package/types/project-definition/project-changes.d.ts +30 -0
- package/types/project-definition/project-definition.d.ts +49 -19
- package/types/project-definition/resource-unit-mapping.d.ts +4 -0
- package/types/project-definition/scheduler-policy.d.ts +497 -0
- package/types/project-run/admission-strategy-provider/custom-strategy-preparation.d.ts +9 -0
- package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +23 -0
- package/types/project-run/admission-strategy-provider/provider.d.ts +13 -0
- package/types/project-run/aggregation.d.ts +8 -6
- package/types/project-run/changes/git.d.ts +14 -0
- package/types/project-run/check-execution/admitted-check-execution.d.ts +18 -0
- package/types/project-run/check-execution/callback.d.ts +5 -1
- package/types/project-run/check-execution/console-capture.d.ts +18 -0
- package/types/project-run/check-execution/dependencies.d.ts +4 -1
- package/types/project-run/check-execution/execution-finalization.d.ts +18 -8
- package/types/project-run/check-execution/execution-settlement.d.ts +18 -7
- package/types/project-run/check-execution/flag-controls.d.ts +27 -0
- package/types/project-run/check-execution/lifecycle.d.ts +24 -0
- package/types/project-run/check-execution/messages.d.ts +2 -0
- package/types/project-run/check-execution/plan.d.ts +2 -3
- package/types/project-run/check-execution/{preflight-result.d.ts → preparation-result.d.ts} +3 -3
- package/types/project-run/check-execution/preparation.d.ts +29 -0
- package/types/project-run/check-execution/ready-check-execution.d.ts +18 -0
- package/types/project-run/check-execution/resolved-checks.d.ts +37 -44
- package/types/project-run/check-execution/resolved-execution-result.d.ts +21 -0
- package/types/project-run/check-execution/scheduled-check-run.d.ts +10 -0
- package/types/project-run/check-execution/terminal-result.d.ts +13 -1
- package/types/project-run/{completion.d.ts → completion/completion.d.ts} +7 -5
- package/types/project-run/{machine-publication.d.ts → completion/machine-publication.d.ts} +3 -3
- package/types/project-run/completion/result-resolver.d.ts +4 -0
- package/types/project-run/controls/contract.d.ts +22 -9
- package/types/project-run/controls/outputs-override-validation.d.ts +2 -1
- package/types/project-run/controls/validation-result.d.ts +12 -4
- package/types/project-run/diagnostic-logging/logger.d.ts +34 -4
- package/types/project-run/diagnostic-logging/observation-rendering.d.ts +7 -0
- package/types/project-run/invocation/candidate.d.ts +12 -0
- package/types/project-run/invocation/candidates.d.ts +8 -0
- package/types/project-run/{invocation-creation.d.ts → invocation/creation.d.ts} +3 -3
- package/types/project-run/invocation/execution.d.ts +5 -0
- package/types/project-run/invocation/paths.d.ts +40 -0
- package/types/project-run/invocation/progress.d.ts +11 -0
- package/types/project-run/invocation/run.d.ts +43 -0
- package/types/project-run/invocation/scheduler.d.ts +16 -0
- package/types/project-run/outputs/configuration.d.ts +3 -0
- package/types/project-run/outputs/status.d.ts +48 -0
- package/types/project-run/progress-rendering/presentation.d.ts +12 -7
- package/types/project-run/progress-rendering/renderer-formatting.d.ts +13 -2
- package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +8 -1
- package/types/project-run/progress-rendering/renderer.d.ts +11 -3
- package/types/project-run/project-context.d.ts +5 -4
- package/types/project-run/result.d.ts +38 -4
- package/types/project-run/run.d.ts +6 -5
- package/types/project-run/task-scheduler/admission-core/compiled-graph-lookup.d.ts +10 -0
- package/types/project-run/task-scheduler/admission-core/compiled-graph.d.ts +31 -0
- package/types/project-run/task-scheduler/admission-core/core.d.ts +57 -0
- package/types/project-run/task-scheduler/admission-core/input.d.ts +4 -0
- package/types/project-run/task-scheduler/admission-core/projection.d.ts +22 -0
- package/types/project-run/task-scheduler/admission-core/selection-index.d.ts +61 -0
- package/types/project-run/task-scheduler/admission-core/selection-query.d.ts +28 -0
- package/types/project-run/task-scheduler/admission-core/selection-seed.d.ts +9 -0
- package/types/project-run/task-scheduler/admission-core/selection-transition.d.ts +4 -0
- package/types/project-run/task-scheduler/admission-core/selection.d.ts +20 -0
- package/types/project-run/task-scheduler/admission-scope-layers.d.ts +8 -0
- package/types/project-run/task-scheduler/admission-selection-policy.d.ts +31 -0
- package/types/project-run/task-scheduler/custom-admission-policy.d.ts +6 -0
- package/types/project-run/task-scheduler/execution-state.d.ts +43 -1
- package/types/project-run/task-scheduler/forced-block-effect-replay.d.ts +9 -0
- package/types/project-run/task-scheduler/graph-validation.d.ts +3 -2
- package/types/project-run/task-scheduler/graph.d.ts +15 -0
- package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +47 -0
- package/types/project-run/task-scheduler/measurement/integrals.d.ts +27 -0
- package/types/project-run/task-scheduler/measurement/policy.d.ts +10 -0
- package/types/project-run/task-scheduler/measurement/summary.d.ts +3 -0
- package/types/project-run/task-scheduler/measurement/timing.d.ts +33 -0
- package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +13 -1
- package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +20 -19
- package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +38 -22
- package/types/project-run/task-scheduler/scheduler-decision.d.ts +4 -1
- package/types/project-run/task-scheduler/scheduler-observation.d.ts +14 -0
- package/types/project-run/task-scheduler/scheduler-task-lifecycle.d.ts +18 -0
- package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +9 -0
- package/dist/esm/finding-waivers/reconciliation.mjs.map +0 -1
- package/dist/esm/package-checks/file-metrics/scc/csv.mjs +0 -17
- package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +0 -64
- package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +0 -138
- package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +0 -1
- package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +0 -35
- package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +0 -1
- package/dist/esm/package-checks/host-environment/process/command.mjs +0 -13
- package/dist/esm/package-checks/host-environment/process/command.mjs.map +0 -1
- package/dist/esm/package-checks/project-files/config-glob.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight-result.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight.mjs +0 -186
- package/dist/esm/project-run/check-execution/preflight.mjs.map +0 -1
- package/dist/esm/project-run/completion.mjs.map +0 -1
- package/dist/esm/project-run/invocation-creation.mjs +0 -111
- package/dist/esm/project-run/invocation-creation.mjs.map +0 -1
- package/dist/esm/project-run/invocation.mjs +0 -195
- package/dist/esm/project-run/invocation.mjs.map +0 -1
- package/dist/esm/project-run/machine-publication.mjs.map +0 -1
- package/dist/esm/project-run/output-configuration.mjs.map +0 -1
- package/dist/esm/project-run/output-status.mjs +0 -43
- package/dist/esm/project-run/output-status.mjs.map +0 -1
- package/src/package-checks/function-metrics/lizard/availability.ts +0 -90
- package/src/package-checks/function-metrics/lizard/csv.ts +0 -20
- package/src/package-checks/function-metrics/lizard/parser.ts +0 -179
- package/src/package-checks/function-metrics/lizard/scanner.ts +0 -62
- package/src/package-checks/host-environment/process/command.ts +0 -21
- package/src/project-run/check-execution/preflight.ts +0 -321
- package/src/project-run/invocation-creation.ts +0 -160
- package/src/project-run/invocation.ts +0 -303
- package/src/project-run/output-status.ts +0 -69
- package/types/package-checks/file-metrics/scc/csv.d.ts +0 -1
- package/types/package-checks/function-metrics/lizard/availability.d.ts +0 -11
- package/types/package-checks/function-metrics/lizard/csv.d.ts +0 -1
- package/types/package-checks/function-metrics/lizard/parser.d.ts +0 -17
- package/types/package-checks/function-metrics/lizard/scanner.d.ts +0 -15
- package/types/package-checks/host-environment/process/command.d.ts +0 -7
- package/types/package-checks/project-files/config-glob.d.ts +0 -5
- package/types/project-run/check-execution/preflight.d.ts +0 -27
- package/types/project-run/invocation.d.ts +0 -34
- package/types/project-run/output-configuration.d.ts +0 -3
- package/types/project-run/output-status.d.ts +0 -21
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
/** Project-root file discovery and selection helpers. */
|
|
2
2
|
import { lstatSync } from "node:fs";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
|
-
import { matchesAnyConfigGlob } from "
|
|
4
|
+
import { matchesAnyConfigGlob } from "../../data-boundary/config-glob.mjs";
|
|
5
5
|
import { collectSubmoduleWorktreeFiles } from "./revision-worktree-files.mjs";
|
|
6
6
|
import { errorMessage } from "../host-environment/error-message.mjs";
|
|
7
|
-
import { processFailed } from "../host-environment/process
|
|
8
|
-
import { runGit, splitNulDelimitedGitFileList } from "../host-environment/git.mjs";
|
|
7
|
+
import { processFailed } from "../host-environment/process.mjs";
|
|
8
|
+
import { gitFailureDetail, runGit, splitNulDelimitedGitFileList } from "../host-environment/git.mjs";
|
|
9
9
|
import { toSlashPath } from "../host-environment/path.mjs";
|
|
10
10
|
import { walkFiles } from "../host-environment/filesystem.mjs";
|
|
11
|
+
const sourceCandidateCollectors = Object.freeze({
|
|
12
|
+
filesystem: collectFilesystemCandidates,
|
|
13
|
+
"git-worktree": collectGitWorktreeCandidates
|
|
14
|
+
});
|
|
11
15
|
const CONFIG_GLOB_MAGIC = /[\\*?[\]{}()!+@]/u;
|
|
12
16
|
/**
|
|
13
17
|
* Resolves multiple named file sets while enumerating each distinct candidate source once.
|
|
@@ -45,19 +49,22 @@ function groupSelectionsBySource(selections) {
|
|
|
45
49
|
return new Map([...mutableGroups].map(([source, group]) => [source, Object.freeze(group)]));
|
|
46
50
|
}
|
|
47
51
|
function collectSourceCandidates(rootDir, source, selections) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
return sourceCandidateCollectorFor(source)(rootDir, selections);
|
|
53
|
+
}
|
|
54
|
+
function sourceCandidateCollectorFor(source) {
|
|
55
|
+
const collector = sourceCandidateCollectors[source];
|
|
56
|
+
if (collector === undefined)
|
|
57
|
+
return unsupportedProjectFileSource(source);
|
|
58
|
+
return collector;
|
|
59
|
+
}
|
|
60
|
+
function unsupportedProjectFileSource(source) {
|
|
61
|
+
throw new TypeError(`unsupported project file source: ${source}`);
|
|
62
|
+
}
|
|
63
|
+
function collectFilesystemCandidates(rootDir, selections) {
|
|
64
|
+
return uniqueSorted(walkFiles({
|
|
65
|
+
ignoredDirs: commonExcludedDirectoryNames(selections),
|
|
66
|
+
rootDir
|
|
67
|
+
}).map(toSlashPath));
|
|
61
68
|
}
|
|
62
69
|
function collectGitWorktreeCandidates(rootDir, selections) {
|
|
63
70
|
const result = runGit({
|
|
@@ -65,10 +72,7 @@ function collectGitWorktreeCandidates(rootDir, selections) {
|
|
|
65
72
|
cwd: rootDir
|
|
66
73
|
});
|
|
67
74
|
if (processFailed(result)) {
|
|
68
|
-
|
|
69
|
-
result.error?.message ||
|
|
70
|
-
(result.signal === null ? `exit status ${result.status}` : `signal ${result.signal}`);
|
|
71
|
-
throw new Error(`could not enumerate git-worktree files in ${rootDir}: ${detail}`);
|
|
75
|
+
throw new Error(`could not enumerate git-worktree files in ${rootDir}: ${gitFailureDetail(result)}`);
|
|
72
76
|
}
|
|
73
77
|
const include = uniqueSorted(selections.flatMap(({ selection }) => [...selection.include]));
|
|
74
78
|
return uniqueSorted([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/collection.ts"],"names":[],"mappings":"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","sourcesContent":["/** Project-root file discovery and selection helpers. */\n\nimport { lstatSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { matchesAnyConfigGlob } from \"./config-glob.ts\";\nimport { collectSubmoduleWorktreeFiles } from \"./revision-worktree-files.ts\";\nimport { errorMessage } from \"../host-environment/error-message.ts\";\nimport { processFailed } from \"../host-environment/process/command.ts\";\nimport { runGit, splitNulDelimitedGitFileList } from \"../host-environment/git.ts\";\nimport { toSlashPath } from \"../host-environment/path.ts\";\nimport { walkFiles } from \"../host-environment/filesystem.ts\";\nimport type { ProjectFileSelection, ProjectFileSource } from \"./configuration.ts\";\n\ntype NamedProjectFileSelection = Readonly<{\n readonly id: string;\n readonly selection: ProjectFileSelection;\n}>;\n\nconst CONFIG_GLOB_MAGIC = /[\\\\*?[\\]{}()!+@]/u;\n\n/**\n * Resolves multiple named file sets while enumerating each distinct candidate source once.\n */\nexport function collectProjectFileSets(\n rootDir: string,\n selections: Readonly<Record<string, ProjectFileSelection>>\n): ReadonlyMap<string, readonly string[]> {\n const bySource = groupSelectionsBySource(selections);\n const selectedFiles = new Map<string, readonly string[]>();\n\n for (const [source, sourceSelections] of bySource) {\n const candidates = collectSourceCandidates(rootDir, source, sourceSelections);\n for (const { id, selection } of sourceSelections) {\n selectedFiles.set(id, Object.freeze(filterProjectFiles(candidates, selection)));\n }\n }\n\n return selectedFiles;\n}\n\nexport function collectProjectFiles(rootDir: string, selection: ProjectFileSelection): string[] {\n return [...requireProjectFileSet(collectProjectFileSets(rootDir, { selection }), \"selection\")];\n}\n\n/** 返回已收集的命名文件集合;缺失表示收集完整性失效,不能解释为空集合。 */\nexport function requireProjectFileSet(\n fileSets: ReadonlyMap<string, readonly string[]>,\n selectionId: string\n): readonly string[] {\n const selectedFiles = fileSets.get(selectionId);\n if (selectedFiles === undefined) {\n throw new Error(`project file collection did not produce selection ${selectionId}`);\n }\n return selectedFiles;\n}\n\nfunction groupSelectionsBySource(\n selections: Readonly<Record<string, ProjectFileSelection>>\n): ReadonlyMap<ProjectFileSource, readonly NamedProjectFileSelection[]> {\n const mutableGroups = new Map<ProjectFileSource, NamedProjectFileSelection[]>();\n const entries = Object.entries(selections).sort(([left], [right]) => compareText(left, right));\n\n for (const [id, selection] of entries) {\n const group = mutableGroups.get(selection.source) ?? [];\n group.push({ id, selection });\n mutableGroups.set(selection.source, group);\n }\n\n return new Map(\n [...mutableGroups].map(([source, group]) => [source, Object.freeze(group)] as const)\n );\n}\n\nfunction collectSourceCandidates(\n rootDir: string,\n source: ProjectFileSource,\n selections: readonly NamedProjectFileSelection[]\n): readonly string[] {\n switch (source) {\n case \"filesystem\":\n return uniqueSorted(\n walkFiles({\n ignoredDirs: commonExcludedDirectoryNames(selections),\n rootDir\n }).map(toSlashPath)\n );\n case \"git-worktree\":\n return collectGitWorktreeCandidates(rootDir, selections);\n default: {\n const unsupportedSource: never = source;\n throw new TypeError(`unsupported project file source: ${String(unsupportedSource)}`);\n }\n }\n}\n\nfunction collectGitWorktreeCandidates(\n rootDir: string,\n selections: readonly NamedProjectFileSelection[]\n): readonly string[] {\n const result = runGit({\n args: [\"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\", \"--\"],\n cwd: rootDir\n });\n if (processFailed(result)) {\n const detail =\n result.stderr.trim() ||\n result.error?.message ||\n (result.signal === null ? `exit status ${result.status}` : `signal ${result.signal}`);\n throw new Error(`could not enumerate git-worktree files in ${rootDir}: ${detail}`);\n }\n\n const include = uniqueSorted(selections.flatMap(({ selection }) => [...selection.include]));\n return uniqueSorted(\n [\n ...splitNulDelimitedGitFileList(result.stdout),\n ...collectSubmoduleWorktreeFiles({ repository: rootDir, scanInputPaths: include })\n ]\n .map(toSlashPath)\n .filter((filePath) => isGitWorktreeFile({ filePath, rootDir }))\n );\n}\n\nfunction isGitWorktreeFile({\n filePath,\n rootDir\n}: Readonly<{ readonly filePath: string; readonly rootDir: string }>): boolean {\n try {\n const stats = lstatSync(resolve(rootDir, filePath));\n return stats.isFile() || stats.isSymbolicLink();\n } catch (error: unknown) {\n if (missingPath(error)) return false;\n throw new Error(\n `could not inspect git-worktree candidate ${filePath} in ${rootDir}: ${errorMessage(error)}`,\n { cause: error }\n );\n }\n}\n\nfunction missingPath(error: unknown): boolean {\n const code = error instanceof Error && \"code\" in error ? error.code : undefined;\n return code === \"ENOENT\" || code === \"ENOTDIR\";\n}\n\nfunction filterProjectFiles(\n candidates: readonly string[],\n selection: ProjectFileSelection\n): string[] {\n return uniqueSorted(candidates.filter((filePath) => isProjectFile(filePath, selection)));\n}\n\nfunction isProjectFile(filePath: string, selection: ProjectFileSelection): boolean {\n const normalized = toSlashPath(filePath);\n return (\n matchesAnyConfigGlob(normalized, selection.include) &&\n !matchesAnyConfigGlob(normalized, selection.exclude)\n );\n}\n\n/**\n * Recognizes only whole-directory exclusions with one literal directory segment. The\n * intersection is a traversal optimization; public semantics remain in `isProjectFile`.\n */\nfunction commonExcludedDirectoryNames(\n selections: readonly NamedProjectFileSelection[]\n): readonly string[] {\n let common: Set<string> | undefined;\n for (const { selection } of selections) {\n const names = new Set(selection.exclude.map(literalExcludedDirectoryName).filter(isString));\n common =\n common === undefined\n ? names\n : new Set([...common].filter((directoryName) => names.has(directoryName)));\n }\n return common === undefined ? [] : [...common].sort();\n}\n\nfunction literalExcludedDirectoryName(configGlob: string): string | undefined {\n const prefix = \"**/\";\n const suffix = \"/**\";\n if (!configGlob.startsWith(prefix) || !configGlob.endsWith(suffix)) return undefined;\n const directoryName = configGlob.slice(prefix.length, -suffix.length);\n if (directoryName.length === 0 || directoryName.includes(\"/\")) return undefined;\n return CONFIG_GLOB_MAGIC.test(directoryName) ? undefined : directoryName;\n}\n\nfunction isString(value: string | undefined): value is string {\n return value !== undefined;\n}\n\nfunction uniqueSorted(files: readonly string[]): string[] {\n return [...new Set(files)].sort(compareText);\n}\n\nfunction compareText(left: string, right: string): number {\n if (left < right) return -1;\n if (left > right) return 1;\n return 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"collection.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/collection.ts"],"names":[],"mappings":"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","sourcesContent":["/** Project-root file discovery and selection helpers. */\n\nimport { lstatSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { matchesAnyConfigGlob } from \"../../data-boundary/config-glob.ts\";\nimport { collectSubmoduleWorktreeFiles } from \"./revision-worktree-files.ts\";\nimport { errorMessage } from \"../host-environment/error-message.ts\";\nimport { processFailed } from \"../host-environment/process.ts\";\nimport { gitFailureDetail, runGit, splitNulDelimitedGitFileList } from \"../host-environment/git.ts\";\nimport { toSlashPath } from \"../host-environment/path.ts\";\nimport { walkFiles } from \"../host-environment/filesystem.ts\";\nimport type { ProjectFileSelection, ProjectFileSource } from \"./configuration.ts\";\n\ntype NamedProjectFileSelection = Readonly<{\n readonly id: string;\n readonly selection: ProjectFileSelection;\n}>;\n\ntype SourceCandidateCollector = (\n rootDir: string,\n selections: readonly NamedProjectFileSelection[]\n) => readonly string[];\n\nconst sourceCandidateCollectors = Object.freeze({\n filesystem: collectFilesystemCandidates,\n \"git-worktree\": collectGitWorktreeCandidates\n}) satisfies Readonly<Partial<Record<ProjectFileSource, SourceCandidateCollector>>>;\n\nconst CONFIG_GLOB_MAGIC = /[\\\\*?[\\]{}()!+@]/u;\n\n/**\n * Resolves multiple named file sets while enumerating each distinct candidate source once.\n */\nexport function collectProjectFileSets(\n rootDir: string,\n selections: Readonly<Record<string, ProjectFileSelection>>\n): ReadonlyMap<string, readonly string[]> {\n const bySource = groupSelectionsBySource(selections);\n const selectedFiles = new Map<string, readonly string[]>();\n\n for (const [source, sourceSelections] of bySource) {\n const candidates = collectSourceCandidates(rootDir, source, sourceSelections);\n for (const { id, selection } of sourceSelections) {\n selectedFiles.set(id, Object.freeze(filterProjectFiles(candidates, selection)));\n }\n }\n\n return selectedFiles;\n}\n\nexport function collectProjectFiles(rootDir: string, selection: ProjectFileSelection): string[] {\n return [...requireProjectFileSet(collectProjectFileSets(rootDir, { selection }), \"selection\")];\n}\n\n/** 返回已收集的命名文件集合;缺失表示收集完整性失效,不能解释为空集合。 */\nexport function requireProjectFileSet(\n fileSets: ReadonlyMap<string, readonly string[]>,\n selectionId: string\n): readonly string[] {\n const selectedFiles = fileSets.get(selectionId);\n if (selectedFiles === undefined) {\n throw new Error(`project file collection did not produce selection ${selectionId}`);\n }\n return selectedFiles;\n}\n\nfunction groupSelectionsBySource(\n selections: Readonly<Record<string, ProjectFileSelection>>\n): ReadonlyMap<ProjectFileSource, readonly NamedProjectFileSelection[]> {\n const mutableGroups = new Map<ProjectFileSource, NamedProjectFileSelection[]>();\n const entries = Object.entries(selections).sort(([left], [right]) => compareText(left, right));\n\n for (const [id, selection] of entries) {\n const group = mutableGroups.get(selection.source) ?? [];\n group.push({ id, selection });\n mutableGroups.set(selection.source, group);\n }\n\n return new Map(\n [...mutableGroups].map(([source, group]) => [source, Object.freeze(group)] as const)\n );\n}\n\nfunction collectSourceCandidates(\n rootDir: string,\n source: ProjectFileSource,\n selections: readonly NamedProjectFileSelection[]\n): readonly string[] {\n return sourceCandidateCollectorFor(source)(rootDir, selections);\n}\n\nfunction sourceCandidateCollectorFor(source: ProjectFileSource): SourceCandidateCollector {\n const collector = sourceCandidateCollectors[source];\n if (collector === undefined) return unsupportedProjectFileSource(source);\n return collector;\n}\n\nfunction unsupportedProjectFileSource(source: ProjectFileSource): never {\n throw new TypeError(`unsupported project file source: ${source}`);\n}\n\nfunction collectFilesystemCandidates(\n rootDir: string,\n selections: readonly NamedProjectFileSelection[]\n): readonly string[] {\n return uniqueSorted(\n walkFiles({\n ignoredDirs: commonExcludedDirectoryNames(selections),\n rootDir\n }).map(toSlashPath)\n );\n}\n\nfunction collectGitWorktreeCandidates(\n rootDir: string,\n selections: readonly NamedProjectFileSelection[]\n): readonly string[] {\n const result = runGit({\n args: [\"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\", \"--\"],\n cwd: rootDir\n });\n if (processFailed(result)) {\n throw new Error(\n `could not enumerate git-worktree files in ${rootDir}: ${gitFailureDetail(result)}`\n );\n }\n\n const include = uniqueSorted(selections.flatMap(({ selection }) => [...selection.include]));\n return uniqueSorted(\n [\n ...splitNulDelimitedGitFileList(result.stdout),\n ...collectSubmoduleWorktreeFiles({ repository: rootDir, scanInputPaths: include })\n ]\n .map(toSlashPath)\n .filter((filePath) => isGitWorktreeFile({ filePath, rootDir }))\n );\n}\n\nfunction isGitWorktreeFile({\n filePath,\n rootDir\n}: Readonly<{ readonly filePath: string; readonly rootDir: string }>): boolean {\n try {\n const stats = lstatSync(resolve(rootDir, filePath));\n return stats.isFile() || stats.isSymbolicLink();\n } catch (error: unknown) {\n if (missingPath(error)) return false;\n throw new Error(\n `could not inspect git-worktree candidate ${filePath} in ${rootDir}: ${errorMessage(error)}`,\n { cause: error }\n );\n }\n}\n\nfunction missingPath(error: unknown): boolean {\n const code = error instanceof Error && \"code\" in error ? error.code : undefined;\n return code === \"ENOENT\" || code === \"ENOTDIR\";\n}\n\nfunction filterProjectFiles(\n candidates: readonly string[],\n selection: ProjectFileSelection\n): string[] {\n return uniqueSorted(candidates.filter((filePath) => isProjectFile(filePath, selection)));\n}\n\nfunction isProjectFile(filePath: string, selection: ProjectFileSelection): boolean {\n const normalized = toSlashPath(filePath);\n return (\n matchesAnyConfigGlob(normalized, selection.include) &&\n !matchesAnyConfigGlob(normalized, selection.exclude)\n );\n}\n\n/**\n * Recognizes only whole-directory exclusions with one literal directory segment. The\n * intersection is a traversal optimization; public semantics remain in `isProjectFile`.\n */\nfunction commonExcludedDirectoryNames(\n selections: readonly NamedProjectFileSelection[]\n): readonly string[] {\n let common: Set<string> | undefined;\n for (const { selection } of selections) {\n const names = new Set(selection.exclude.map(literalExcludedDirectoryName).filter(isString));\n common =\n common === undefined\n ? names\n : new Set([...common].filter((directoryName) => names.has(directoryName)));\n }\n return common === undefined ? [] : [...common].sort();\n}\n\nfunction literalExcludedDirectoryName(configGlob: string): string | undefined {\n const prefix = \"**/\";\n const suffix = \"/**\";\n if (!configGlob.startsWith(prefix) || !configGlob.endsWith(suffix)) return undefined;\n const directoryName = configGlob.slice(prefix.length, -suffix.length);\n if (directoryName.length === 0 || directoryName.includes(\"/\")) return undefined;\n return CONFIG_GLOB_MAGIC.test(directoryName) ? undefined : directoryName;\n}\n\nfunction isString(value: string | undefined): value is string {\n return value !== undefined;\n}\n\nfunction uniqueSorted(files: readonly string[]): string[] {\n return [...new Set(files)].sort(compareText);\n}\n\nfunction compareText(left: string, right: string): number {\n if (left < right) return -1;\n if (left > right) return 1;\n return 0;\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { hasRequiredAndOptionalRecordKeys, snapshotClosedArray, snapshotClosedRecord } from "../../data-boundary/closed-values.mjs";
|
|
1
|
+
import { hasRequiredAndOptionalRecordKeys, snapshotClosedArray, snapshotClosedRecord, snapshotExactClosedRecord } from "../../data-boundary/closed-values.mjs";
|
|
2
2
|
export const PROJECT_FILE_SOURCES = Object.freeze(["filesystem", "git-worktree"]);
|
|
3
3
|
/**
|
|
4
4
|
* Package-provided Checks 共用的通用文件选择基线。
|
|
@@ -62,7 +62,7 @@ export function snapshotProjectFileSelection(selection) {
|
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
export function validProjectFileSelection(value) {
|
|
65
|
-
const selection =
|
|
65
|
+
const selection = snapshotExactClosedRecord(value, ["exclude", "include", "source"]);
|
|
66
66
|
return (selection !== undefined &&
|
|
67
67
|
validStringArray(selection.exclude) &&
|
|
68
68
|
validStringArray(selection.include) &&
|
|
@@ -81,19 +81,11 @@ function resolveStringArray(value, fallback) {
|
|
|
81
81
|
}
|
|
82
82
|
function validStringArray(value) {
|
|
83
83
|
const items = snapshotClosedArray(value);
|
|
84
|
-
return items
|
|
84
|
+
return items?.every(isString) === true;
|
|
85
85
|
}
|
|
86
86
|
function isString(value) {
|
|
87
87
|
return typeof value === "string";
|
|
88
88
|
}
|
|
89
|
-
function exactRecord(value, keys) {
|
|
90
|
-
const record = snapshotClosedRecord(value);
|
|
91
|
-
return record !== undefined &&
|
|
92
|
-
Object.keys(record).length === keys.length &&
|
|
93
|
-
keys.every((key) => Object.hasOwn(record, key))
|
|
94
|
-
? record
|
|
95
|
-
: undefined;
|
|
96
|
-
}
|
|
97
89
|
function deepFreeze(value) {
|
|
98
90
|
if (typeof value !== "object" || value === null || Object.isFrozen(value))
|
|
99
91
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"configuration.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/configuration.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedArray,\n snapshotClosedRecord,\n snapshotExactClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\n\nexport const PROJECT_FILE_SOURCES = Object.freeze([\"filesystem\", \"git-worktree\"] as const);\n\n/** 文件选择可使用的显式候选来源。 */\nexport type ProjectFileSource = (typeof PROJECT_FILE_SOURCES)[number];\n\n/** 读取项目文件的 Check 所拥有的文件选择输入。 */\nexport interface ProjectFileSelectionOptions {\n /** 候选文件来源;省略时使用 owning Check 的来源默认值,当前随包 Check 均为 `filesystem`。 */\n readonly source?: ProjectFileSource;\n /** 相对项目根目录且使用 `/` 的 glob;省略时使用 owning Check 的 include 默认值,显式数组完整替换。 */\n readonly include?: readonly string[];\n /** 优先于 `include` 的 glob;省略时使用 owning Check 的 exclude 默认值,显式数组完整替换。 */\n readonly exclude?: readonly string[];\n}\n\n/** Check execution 消费的完整项目文件选择。 */\nexport interface ProjectFileSelection {\n readonly exclude: readonly string[];\n readonly include: readonly string[];\n readonly source: ProjectFileSource;\n}\n\n/**\n * Package-provided Checks 共用的通用文件选择基线。\n *\n * 对象与数组均不可变;需要保留默认排除并追加项目规则时,使用对象与数组 spread 建立新值。\n * 个别 Check 会从此 baseline 派生更精准的默认 include;显式组合此 value 仍表示通配全部路径。\n */\nexport const defaultProjectFileSelection: ProjectFileSelection = deepFreeze({\n exclude: [\n \"**/.cache/**\",\n \"**/.git\",\n \"**/.git/**\",\n \"**/.log/**\",\n \"**/.pytest_cache/**\",\n \"**/.tmp/**\",\n \"**/.venv/**\",\n \"**/.vibe-check/**\",\n \"**/__pycache__/**\",\n \"**/artifacts/**\",\n \"**/build/**\",\n \"**/coverage/**\",\n \"**/dist/**\",\n \"**/generated/**\",\n \"**/*.generated.*\",\n \"**/node_modules/**\",\n \"**/target/**\",\n \"**/tmp/**\",\n \"**/vendor/**\",\n \"**/venv/**\"\n ],\n include: [\"**/*\"],\n source: \"filesystem\"\n});\n\n/** 按 owning Check 提供的可信完整 defaults 解析并冻结一份 authoring selection。 */\nexport function resolveProjectFileSelection(\n value: unknown,\n defaults: ProjectFileSelection = defaultProjectFileSelection\n): ProjectFileSelection | undefined {\n const selection = snapshotClosedRecord(value);\n if (\n selection === undefined ||\n !hasRequiredAndOptionalRecordKeys(selection, {\n optional: [\"exclude\", \"include\", \"source\"],\n required: []\n })\n ) {\n return undefined;\n }\n\n const exclude = resolveStringArray(selection.exclude, defaults.exclude);\n const include = resolveStringArray(selection.include, defaults.include);\n const source = selection.source ?? defaults.source;\n if (exclude === undefined || include === undefined || !isProjectFileSource(source)) {\n return undefined;\n }\n\n return Object.freeze({ exclude, include, source });\n}\n\nexport function snapshotDefaultProjectFileSelection(): ProjectFileSelection {\n return snapshotProjectFileSelection(defaultProjectFileSelection);\n}\n\n/** 为 owning Check 对可信的完整 selection 建立 detached、冻结快照。 */\nexport function snapshotProjectFileSelection(\n selection: ProjectFileSelection\n): ProjectFileSelection {\n return Object.freeze({\n exclude: Object.freeze([...selection.exclude]),\n include: Object.freeze([...selection.include]),\n source: selection.source\n });\n}\n\nexport function validProjectFileSelection(value: unknown): value is ProjectFileSelection {\n const selection = snapshotExactClosedRecord(value, [\"exclude\", \"include\", \"source\"]);\n return (\n selection !== undefined &&\n validStringArray(selection.exclude) &&\n validStringArray(selection.include) &&\n isProjectFileSource(selection.source)\n );\n}\n\nfunction isProjectFileSource(value: unknown): value is ProjectFileSource {\n return PROJECT_FILE_SOURCES.some((source) => source === value);\n}\n\nfunction resolveStringArray(\n value: unknown,\n fallback: readonly string[]\n): readonly string[] | undefined {\n if (value === undefined) return Object.freeze([...fallback]);\n const items = snapshotClosedArray(value);\n if (items === undefined || !items.every(isString)) return undefined;\n return Object.freeze([...items]);\n}\n\nfunction validStringArray(value: unknown): boolean {\n const items = snapshotClosedArray(value);\n return items?.every(isString) === true;\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction deepFreeze<T>(value: T): T {\n if (typeof value !== \"object\" || value === null || Object.isFrozen(value)) return value;\n for (const nested of Object.values(value)) deepFreeze(nested);\n return Object.freeze(value);\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Reads canonical gitlink entries from a named Git tree revision. */
|
|
2
|
-
import { processFailed } from "../host-environment/process
|
|
3
|
-
import { runGit } from "../host-environment/git.mjs";
|
|
2
|
+
import { processFailed } from "../host-environment/process.mjs";
|
|
3
|
+
import { gitFailureDetail, runGit } from "../host-environment/git.mjs";
|
|
4
4
|
import { toSlashPath } from "../host-environment/path.mjs";
|
|
5
5
|
export function gitlinksAtRevision({ repository, revision }) {
|
|
6
6
|
const result = runGit({
|
|
@@ -8,10 +8,7 @@ export function gitlinksAtRevision({ repository, revision }) {
|
|
|
8
8
|
cwd: repository
|
|
9
9
|
});
|
|
10
10
|
if (processFailed(result)) {
|
|
11
|
-
|
|
12
|
-
result.error?.message ||
|
|
13
|
-
(result.signal === null ? `exit status ${result.status}` : `signal ${result.signal}`);
|
|
14
|
-
throw new Error(`could not inspect gitlinks at ${revision} in ${repository}: ${detail}`);
|
|
11
|
+
throw new Error(`could not inspect gitlinks at ${revision} in ${repository}: ${gitFailureDetail(result)}`);
|
|
15
12
|
}
|
|
16
13
|
const gitlinks = [];
|
|
17
14
|
for (const entry of result.stdout.split("\0")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlink-revision.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/gitlink-revision.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"gitlink-revision.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/gitlink-revision.ts"],"names":[],"mappings":"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","sourcesContent":["/** Reads canonical gitlink entries from a named Git tree revision. */\n\nimport { processFailed } from \"../host-environment/process.ts\";\nimport { gitFailureDetail, runGit } from \"../host-environment/git.ts\";\nimport { toSlashPath } from \"../host-environment/path.ts\";\n\nexport type Gitlink = Readonly<{\n readonly path: string;\n readonly sha: string;\n}>;\n\nexport function gitlinksAtRevision({\n repository,\n revision\n}: Readonly<{\n readonly repository: string;\n readonly revision: string;\n}>): readonly Gitlink[] {\n const result = runGit({\n args: [\"ls-tree\", \"-r\", \"-z\", revision],\n cwd: repository\n });\n if (processFailed(result)) {\n throw new Error(\n `could not inspect gitlinks at ${revision} in ${repository}: ${gitFailureDetail(result)}`\n );\n }\n\n const gitlinks: Gitlink[] = [];\n for (const entry of result.stdout.split(\"\\0\")) {\n if (!entry) continue;\n const gitlink = parseGitlinkEntry({ entry, repository, revision });\n if (gitlink !== null) gitlinks.push(gitlink);\n }\n return Object.freeze(gitlinks);\n}\n\nfunction parseGitlinkEntry({\n entry,\n repository,\n revision\n}: Readonly<{\n readonly entry: string;\n readonly repository: string;\n readonly revision: string;\n}>): Gitlink | null {\n const parsed = gitTreeEntryParts(entry);\n if (parsed === undefined) throw invalidTreeOutput(revision, repository);\n const [mode, type, sha] = parsed.metadata;\n if (!validGitTreeMetadata(mode, type, sha)) throw invalidTreeOutput(revision, repository);\n if (mode !== \"160000\") return null;\n if (type !== \"commit\") {\n throw new Error(`invalid gitlink output at ${revision} in ${repository}`);\n }\n return Object.freeze({ path: toSlashPath(parsed.path), sha });\n}\n\nfunction gitTreeEntryParts(entry: string): { metadata: string[]; path: string } | undefined {\n const separator = entry.indexOf(\"\\t\");\n if (separator < 0) return undefined;\n const metadata = entry.slice(0, separator).split(/\\s+/u);\n const path = entry.slice(separator + 1);\n return metadata.length === 3 && path.length > 0 ? { metadata, path } : undefined;\n}\n\nfunction validGitTreeMetadata(\n mode: string | undefined,\n type: string | undefined,\n sha: string | undefined\n): sha is string {\n return mode !== undefined && type !== undefined && sha !== undefined && isFullGitObjectId(sha);\n}\n\nfunction invalidTreeOutput(revision: string, repository: string): Error {\n return new Error(`invalid git tree output at ${revision} in ${repository}`);\n}\n\nfunction isFullGitObjectId(value: string): boolean {\n return /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u.test(value);\n}\n"]}
|
|
@@ -2,39 +2,55 @@
|
|
|
2
2
|
import { realpathSync, statSync } from "node:fs";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { errorMessage } from "../host-environment/error-message.mjs";
|
|
5
|
-
import { processFailed } from "../host-environment/process
|
|
5
|
+
import { processFailed } from "../host-environment/process.mjs";
|
|
6
6
|
import { runGit } from "../host-environment/git.mjs";
|
|
7
7
|
export function canonicalRepositoryPath(repository) {
|
|
8
8
|
return realpathSync(resolve(repository));
|
|
9
9
|
}
|
|
10
10
|
export function inspectGitlinkWorktree({ gitlinkPath, repository }) {
|
|
11
|
+
const localWorktree = inspectLocalGitlinkWorktree({ gitlinkPath, repository });
|
|
12
|
+
if (localWorktree.kind !== "found")
|
|
13
|
+
return localWorktree;
|
|
14
|
+
return inspectGitRepositoryRoot({
|
|
15
|
+
gitlinkPath,
|
|
16
|
+
canonicalSubmoduleRepository: localWorktree.repository
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function inspectLocalGitlinkWorktree({ gitlinkPath, repository }) {
|
|
11
20
|
const submoduleRepository = resolve(repository, gitlinkPath);
|
|
12
|
-
let canonicalSubmoduleRepository;
|
|
13
21
|
try {
|
|
14
22
|
if (!statSync(submoduleRepository).isDirectory())
|
|
15
23
|
return { kind: "missing" };
|
|
16
|
-
|
|
24
|
+
return { kind: "found", repository: canonicalRepositoryPath(submoduleRepository) };
|
|
17
25
|
}
|
|
18
26
|
catch (error) {
|
|
19
27
|
return missingPath(error)
|
|
20
28
|
? { kind: "missing" }
|
|
21
29
|
: inspectionFailure(`could not inspect submodule worktree ${gitlinkPath}`, error);
|
|
22
30
|
}
|
|
31
|
+
}
|
|
32
|
+
function inspectGitRepositoryRoot({ gitlinkPath, canonicalSubmoduleRepository }) {
|
|
23
33
|
const topLevelResult = runGit({
|
|
24
34
|
args: ["rev-parse", "--show-toplevel"],
|
|
25
35
|
cwd: canonicalSubmoduleRepository
|
|
26
36
|
});
|
|
27
37
|
if (processFailed(topLevelResult)) {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
const processErrorMessage = topLevelResult.error?.message;
|
|
39
|
+
const stderr = topLevelResult.stderr.trim();
|
|
40
|
+
let topLevelFailureDetail = `exit ${topLevelResult.status}`;
|
|
41
|
+
if (processErrorMessage !== undefined && processErrorMessage.length > 0) {
|
|
42
|
+
topLevelFailureDetail = processErrorMessage;
|
|
43
|
+
}
|
|
44
|
+
else if (stderr.length > 0) {
|
|
45
|
+
topLevelFailureDetail = stderr;
|
|
46
|
+
}
|
|
31
47
|
return {
|
|
32
48
|
kind: "inspection-failed",
|
|
33
49
|
error: `git rev-parse --show-toplevel failed while inspecting submodule ${gitlinkPath}: ${topLevelFailureDetail}`
|
|
34
50
|
};
|
|
35
51
|
}
|
|
36
52
|
const topLevel = topLevelResult.stdout.trim();
|
|
37
|
-
if (
|
|
53
|
+
if (topLevel.length === 0) {
|
|
38
54
|
return {
|
|
39
55
|
kind: "inspection-failed",
|
|
40
56
|
error: `git rev-parse --show-toplevel returned no repository path for submodule ${gitlinkPath}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlink-worktree.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/gitlink-worktree.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAE3D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"gitlink-worktree.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/gitlink-worktree.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAE3D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQpD,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACxD,OAAO,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,WAAW,EACX,UAAU,EAIV;IACA,MAAM,aAAa,GAAG,2BAA2B,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IAC/E,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,aAAa,CAAC;IACzD,OAAO,wBAAwB,CAAC;QAC9B,WAAW;QACX,4BAA4B,EAAE,aAAa,CAAC,UAAU;KACvD,CAAC,CAAC;AACL,CAAC;AAID,SAAS,2BAA2B,CAAC,EACnC,WAAW,EACX,UAAU,EAIV;IACA,MAAM,mBAAmB,GAAG,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,uBAAuB,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACrF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC,KAAK,CAAC;YACvB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE;YACrB,CAAC,CAAC,iBAAiB,CAAC,wCAAwC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,EAChC,WAAW,EACX,4BAA4B,EAI5B;IACA,MAAM,cAAc,GAAG,MAAM,CAAC;QAC5B,IAAI,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC;QACtC,GAAG,EAAE,4BAA4B;KAClC,CAAC,CAAC;IACH,IAAI,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,MAAM,mBAAmB,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;QAC1D,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,qBAAqB,GAAG,QAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;QAC5D,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,qBAAqB,GAAG,mBAAmB,CAAC;QAC9C,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,qBAAqB,GAAG,MAAM,CAAC;QACjC,CAAC;QACD,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,mEAAmE,WAAW,KAAK,qBAAqB,EAAE;SAClH,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,2EAA2E,WAAW,EAAE;SAChG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,uBAAuB,CAAC,OAAO,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;YAC7E,4BAA4B;YAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,4BAA4B,EAAE;YACnE,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,iDAAiD,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IAClG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,EAClD,WAAW,EACX,UAAU,EACV,mBAAmB,EAKnB;IACA,MAAM,UAAU,GAAG,sBAAsB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;IACvE,IAAI,UAAU,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;QACzF,CAAC,CAAC,UAAU,CAAC,UAAU;QACvB,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,EACV,mBAAmB,EAInB;IACA,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,mBAAmB,EAAE,UAAU,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,CAAC;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,KAAc;IACxD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,OAAO,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACpF,CAAC","sourcesContent":["/** Canonical Git worktree checks for gitlink traversal. */\n\nimport { realpathSync, statSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\nimport { errorMessage } from \"../host-environment/error-message.ts\";\nimport { processFailed } from \"../host-environment/process.ts\";\nimport { runGit } from \"../host-environment/git.ts\";\n\nexport type GitlinkWorktreeInspection =\n | { readonly kind: \"initialized\"; readonly repository: string }\n | { readonly kind: \"inspection-failed\"; readonly error: string }\n | { readonly kind: \"missing\" }\n | { readonly kind: \"not-independent\" };\n\nexport function canonicalRepositoryPath(repository: string): string {\n return realpathSync(resolve(repository));\n}\n\nexport function inspectGitlinkWorktree({\n gitlinkPath,\n repository\n}: Readonly<{\n readonly gitlinkPath: string;\n readonly repository: string;\n}>): GitlinkWorktreeInspection {\n const localWorktree = inspectLocalGitlinkWorktree({ gitlinkPath, repository });\n if (localWorktree.kind !== \"found\") return localWorktree;\n return inspectGitRepositoryRoot({\n gitlinkPath,\n canonicalSubmoduleRepository: localWorktree.repository\n });\n}\n\ntype LocalGitlinkWorktree = Readonly<{ readonly kind: \"found\"; readonly repository: string }>;\n\nfunction inspectLocalGitlinkWorktree({\n gitlinkPath,\n repository\n}: Readonly<{\n readonly gitlinkPath: string;\n readonly repository: string;\n}>): GitlinkWorktreeInspection | LocalGitlinkWorktree {\n const submoduleRepository = resolve(repository, gitlinkPath);\n try {\n if (!statSync(submoduleRepository).isDirectory()) return { kind: \"missing\" };\n return { kind: \"found\", repository: canonicalRepositoryPath(submoduleRepository) };\n } catch (error: unknown) {\n return missingPath(error)\n ? { kind: \"missing\" }\n : inspectionFailure(`could not inspect submodule worktree ${gitlinkPath}`, error);\n }\n}\n\nfunction inspectGitRepositoryRoot({\n gitlinkPath,\n canonicalSubmoduleRepository\n}: Readonly<{\n readonly gitlinkPath: string;\n readonly canonicalSubmoduleRepository: string;\n}>): GitlinkWorktreeInspection {\n const topLevelResult = runGit({\n args: [\"rev-parse\", \"--show-toplevel\"],\n cwd: canonicalSubmoduleRepository\n });\n if (processFailed(topLevelResult)) {\n const processErrorMessage = topLevelResult.error?.message;\n const stderr = topLevelResult.stderr.trim();\n let topLevelFailureDetail = `exit ${topLevelResult.status}`;\n if (processErrorMessage !== undefined && processErrorMessage.length > 0) {\n topLevelFailureDetail = processErrorMessage;\n } else if (stderr.length > 0) {\n topLevelFailureDetail = stderr;\n }\n return {\n kind: \"inspection-failed\",\n error: `git rev-parse --show-toplevel failed while inspecting submodule ${gitlinkPath}: ${topLevelFailureDetail}`\n };\n }\n\n const topLevel = topLevelResult.stdout.trim();\n if (topLevel.length === 0) {\n return {\n kind: \"inspection-failed\",\n error: `git rev-parse --show-toplevel returned no repository path for submodule ${gitlinkPath}`\n };\n }\n\n try {\n return canonicalRepositoryPath(resolve(canonicalSubmoduleRepository, topLevel)) ===\n canonicalSubmoduleRepository\n ? { kind: \"initialized\", repository: canonicalSubmoduleRepository }\n : { kind: \"not-independent\" };\n } catch (error: unknown) {\n return inspectionFailure(`could not resolve Git top-level for submodule ${gitlinkPath}`, error);\n }\n}\n\nexport function resolveDescendableGitlinkRepository({\n gitlinkPath,\n repository,\n visitedRepositories\n}: Readonly<{\n readonly gitlinkPath: string;\n readonly repository: string;\n readonly visitedRepositories: ReadonlySet<string>;\n}>): string | null {\n const inspection = inspectGitlinkWorktree({ gitlinkPath, repository });\n if (inspection.kind === \"inspection-failed\") {\n throw new Error(inspection.error);\n }\n return inspection.kind === \"initialized\" && !visitedRepositories.has(inspection.repository)\n ? inspection.repository\n : null;\n}\n\nexport function visitRepository({\n repository,\n visitedRepositories\n}: Readonly<{\n readonly repository: string;\n readonly visitedRepositories: ReadonlySet<string>;\n}>): ReadonlySet<string> {\n return new Set([...visitedRepositories, repository]);\n}\n\nfunction missingPath(error: unknown): boolean {\n const code = error instanceof Error && \"code\" in error ? error.code : undefined;\n return code === \"ENOENT\" || code === \"ENOTDIR\";\n}\n\nfunction inspectionFailure(message: string, error: unknown): GitlinkWorktreeInspection {\n return { kind: \"inspection-failed\", error: `${message}: ${errorMessage(error)}` };\n}\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** Public validation and immutable snapshot boundary for one project-file selection. */
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { snapshotClosedArray, snapshotExactClosedRecord } from "../../data-boundary/closed-values.mjs";
|
|
4
|
+
import { collectProjectFiles as collectTrustedProjectFiles } from "./collection.mjs";
|
|
5
|
+
import { PROJECT_FILE_SOURCES } from "./configuration.mjs";
|
|
6
|
+
/**
|
|
7
|
+
* 按一份完整的显式 selection 同步收集 project-root-relative slash paths。
|
|
8
|
+
*
|
|
9
|
+
* 成功结果是冻结的稳定去重排序快照,空数组表示没有匹配路径。非法参数同步抛出
|
|
10
|
+
* `TypeError`;选定 filesystem 或 Git source 的收集失败继续抛出普通 `Error`,不会回退来源。
|
|
11
|
+
*/
|
|
12
|
+
export function collectProjectFiles(authoredOptions) {
|
|
13
|
+
const options = parseOptions(authoredOptions);
|
|
14
|
+
return Object.freeze([...collectTrustedProjectFiles(options.projectRoot, options.selection)]);
|
|
15
|
+
}
|
|
16
|
+
function parseOptions(value) {
|
|
17
|
+
const options = snapshotExactClosedRecord(value, ["projectRoot", "selection"]);
|
|
18
|
+
if (options === undefined) {
|
|
19
|
+
throw new TypeError("collectProjectFiles requires an options record with exactly projectRoot and selection");
|
|
20
|
+
}
|
|
21
|
+
const projectRoot = parseProjectRoot(options.projectRoot);
|
|
22
|
+
if (projectRoot === undefined) {
|
|
23
|
+
throw new TypeError("collectProjectFiles projectRoot must be a non-empty string without U+0000");
|
|
24
|
+
}
|
|
25
|
+
const selection = parseSelection(options.selection);
|
|
26
|
+
if (selection === undefined) {
|
|
27
|
+
throw new TypeError("collectProjectFiles selection must be a complete record with source, include, and exclude");
|
|
28
|
+
}
|
|
29
|
+
return Object.freeze({ projectRoot, selection });
|
|
30
|
+
}
|
|
31
|
+
function parseProjectRoot(value) {
|
|
32
|
+
return typeof value === "string" && value.length > 0 && !value.includes("\0")
|
|
33
|
+
? resolve(value)
|
|
34
|
+
: undefined;
|
|
35
|
+
}
|
|
36
|
+
function parseSelection(value) {
|
|
37
|
+
const selection = snapshotExactClosedRecord(value, ["source", "include", "exclude"]);
|
|
38
|
+
if (selection === undefined)
|
|
39
|
+
return undefined;
|
|
40
|
+
const include = snapshotStringArray(selection.include);
|
|
41
|
+
const exclude = snapshotStringArray(selection.exclude);
|
|
42
|
+
if (include === undefined || exclude === undefined || !isProjectFileSource(selection.source)) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
return Object.freeze({ exclude, include, source: selection.source });
|
|
46
|
+
}
|
|
47
|
+
function snapshotStringArray(value) {
|
|
48
|
+
const items = snapshotClosedArray(value);
|
|
49
|
+
return items?.every((item) => typeof item === "string") === true
|
|
50
|
+
? Object.freeze([...items])
|
|
51
|
+
: undefined;
|
|
52
|
+
}
|
|
53
|
+
function isProjectFileSource(value) {
|
|
54
|
+
return PROJECT_FILE_SOURCES.some((source) => source === value);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=public-collection.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-collection.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/public-collection.ts"],"names":[],"mappings":"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","sourcesContent":["/** Public validation and immutable snapshot boundary for one project-file selection. */\n\nimport { resolve } from \"node:path\";\n\nimport {\n snapshotClosedArray,\n snapshotExactClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\nimport { collectProjectFiles as collectTrustedProjectFiles } from \"./collection.ts\";\nimport { PROJECT_FILE_SOURCES } from \"./configuration.ts\";\nimport type { ProjectFileSelection, ProjectFileSource } from \"./configuration.ts\";\n\n/** 调用方请求一次项目文件收集时必须完整提供的 root 与 selection。 */\nexport interface CollectProjectFilesOptions {\n /** 显式 project root;relative path 相对当前工作目录解析,不能为空或含 U+0000。 */\n readonly projectRoot: string;\n /** 完整的显式 selection;本工具不推断任何 Check 默认值。 */\n readonly selection: ProjectFileSelection;\n}\n\ntype ResolvedCollectProjectFilesOptions = Readonly<{\n readonly projectRoot: string;\n readonly selection: ProjectFileSelection;\n}>;\n\n/**\n * 按一份完整的显式 selection 同步收集 project-root-relative slash paths。\n *\n * 成功结果是冻结的稳定去重排序快照,空数组表示没有匹配路径。非法参数同步抛出\n * `TypeError`;选定 filesystem 或 Git source 的收集失败继续抛出普通 `Error`,不会回退来源。\n */\nexport function collectProjectFiles(\n authoredOptions: CollectProjectFilesOptions\n): readonly string[] {\n const options = parseOptions(authoredOptions);\n return Object.freeze([...collectTrustedProjectFiles(options.projectRoot, options.selection)]);\n}\n\nfunction parseOptions(value: unknown): ResolvedCollectProjectFilesOptions {\n const options = snapshotExactClosedRecord(value, [\"projectRoot\", \"selection\"]);\n if (options === undefined) {\n throw new TypeError(\n \"collectProjectFiles requires an options record with exactly projectRoot and selection\"\n );\n }\n\n const projectRoot = parseProjectRoot(options.projectRoot);\n if (projectRoot === undefined) {\n throw new TypeError(\n \"collectProjectFiles projectRoot must be a non-empty string without U+0000\"\n );\n }\n\n const selection = parseSelection(options.selection);\n if (selection === undefined) {\n throw new TypeError(\n \"collectProjectFiles selection must be a complete record with source, include, and exclude\"\n );\n }\n\n return Object.freeze({ projectRoot, selection });\n}\n\nfunction parseProjectRoot(value: unknown): string | undefined {\n return typeof value === \"string\" && value.length > 0 && !value.includes(\"\\0\")\n ? resolve(value)\n : undefined;\n}\n\nfunction parseSelection(value: unknown): ProjectFileSelection | undefined {\n const selection = snapshotExactClosedRecord(value, [\"source\", \"include\", \"exclude\"]);\n if (selection === undefined) return undefined;\n\n const include = snapshotStringArray(selection.include);\n const exclude = snapshotStringArray(selection.exclude);\n if (include === undefined || exclude === undefined || !isProjectFileSource(selection.source)) {\n return undefined;\n }\n\n return Object.freeze({ exclude, include, source: selection.source });\n}\n\nfunction snapshotStringArray(value: unknown): readonly string[] | undefined {\n const items = snapshotClosedArray(value);\n return items?.every((item): item is string => typeof item === \"string\") === true\n ? Object.freeze([...items])\n : undefined;\n}\n\nfunction isProjectFileSource(value: unknown): value is ProjectFileSource {\n return PROJECT_FILE_SOURCES.some((source) => source === value);\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Path and Git-output projections shared by revision traversal helpers. */
|
|
2
2
|
import { toSlashPath } from "../host-environment/path.mjs";
|
|
3
|
-
import { matchesAnyConfigGlob } from "
|
|
3
|
+
import { matchesAnyConfigGlob } from "../../data-boundary/config-glob.mjs";
|
|
4
4
|
export function uniqueSortedPaths(files) {
|
|
5
5
|
return [...new Set(files.map(toSlashPath))].sort();
|
|
6
6
|
}
|
|
@@ -13,7 +13,7 @@ export function joinSlash({ path, prefix }) {
|
|
|
13
13
|
return prefix ? `${toSlashPath(prefix)}/${toSlashPath(path)}` : toSlashPath(path);
|
|
14
14
|
}
|
|
15
15
|
export function nonEmptyGitOutput(stdout) {
|
|
16
|
-
const value = (stdout
|
|
17
|
-
return value
|
|
16
|
+
const value = (stdout ?? "").trim();
|
|
17
|
+
return value.length > 0 ? value : null;
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=revision-paths.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revision-paths.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/revision-paths.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"revision-paths.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/revision-paths.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,UAAU,iBAAiB,CAAC,KAAwB;IACxD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,MAAM,EACN,cAAc,EAKd;IACA,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;SAChD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EACxB,IAAI,EACJ,MAAM,EACuD;IAC7D,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAiC;IACjE,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC","sourcesContent":["/** Path and Git-output projections shared by revision traversal helpers. */\n\nimport { toSlashPath } from \"../host-environment/path.ts\";\nimport { matchesAnyConfigGlob } from \"../../data-boundary/config-glob.ts\";\n\nexport function uniqueSortedPaths(files: readonly string[]): string[] {\n return [...new Set(files.map(toSlashPath))].sort();\n}\n\nexport function prefixAndFilter({\n files,\n prefix,\n scanInputPaths\n}: Readonly<{\n readonly files: readonly string[];\n readonly prefix: string;\n readonly scanInputPaths: readonly string[];\n}>): string[] {\n return files\n .map((file) => joinSlash({ path: file, prefix }))\n .filter((file) => scanInputPaths.length === 0 || matchesAnyConfigGlob(file, scanInputPaths));\n}\n\nexport function joinSlash({\n path,\n prefix\n}: Readonly<{ readonly path: string; readonly prefix: string }>): string {\n return prefix ? `${toSlashPath(prefix)}/${toSlashPath(path)}` : toSlashPath(path);\n}\n\nexport function nonEmptyGitOutput(stdout: string | null | undefined): string | null {\n const value = (stdout ?? \"\").trim();\n return value.length > 0 ? value : null;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Enumerates files from initialized, non-cyclic submodule working trees. */
|
|
2
|
-
import { processFailed } from "../host-environment/process
|
|
3
|
-
import { runGit, splitNulDelimitedGitFileList } from "../host-environment/git.mjs";
|
|
2
|
+
import { processFailed } from "../host-environment/process.mjs";
|
|
3
|
+
import { gitFailureDetail, runGit, splitNulDelimitedGitFileList } from "../host-environment/git.mjs";
|
|
4
4
|
import { canonicalRepositoryPath, resolveDescendableGitlinkRepository, visitRepository } from "./gitlink-worktree.mjs";
|
|
5
5
|
import { gitlinksAtRevision } from "./gitlink-revision.mjs";
|
|
6
6
|
import { joinSlash, nonEmptyGitOutput, prefixAndFilter, uniqueSortedPaths } from "./revision-paths.mjs";
|
|
@@ -16,7 +16,7 @@ export function collectSubmoduleWorktreeFiles({ repository, scanInputPaths }) {
|
|
|
16
16
|
repository,
|
|
17
17
|
visitedRepositories
|
|
18
18
|
});
|
|
19
|
-
if (
|
|
19
|
+
if (submoduleRepository === null)
|
|
20
20
|
continue;
|
|
21
21
|
files.push(...collectWorktreeFiles({
|
|
22
22
|
prefix: gitlink.path,
|
|
@@ -36,10 +36,7 @@ function collectWorktreeFiles({ prefix, repository, scanInputPaths, visitedRepos
|
|
|
36
36
|
cwd: repository
|
|
37
37
|
});
|
|
38
38
|
if (processFailed(result)) {
|
|
39
|
-
|
|
40
|
-
result.error?.message ||
|
|
41
|
-
(result.signal === null ? `exit status ${result.status}` : `signal ${result.signal}`);
|
|
42
|
-
throw new Error(`could not enumerate git-worktree files in ${repository}: ${detail}`);
|
|
39
|
+
throw new Error(`could not enumerate git-worktree files in ${repository}: ${gitFailureDetail(result)}`);
|
|
43
40
|
}
|
|
44
41
|
const files = prefixAndFilter({
|
|
45
42
|
files: splitNulDelimitedGitFileList(result.stdout),
|
|
@@ -66,7 +63,7 @@ function collectNestedWorktreeFiles({ prefix, repository, revision, scanInputPat
|
|
|
66
63
|
repository,
|
|
67
64
|
visitedRepositories
|
|
68
65
|
});
|
|
69
|
-
if (
|
|
66
|
+
if (submoduleRepository === null)
|
|
70
67
|
continue;
|
|
71
68
|
files.push(...collectWorktreeFiles({
|
|
72
69
|
prefix: joinSlash({ path: gitlink.path, prefix }),
|
|
@@ -88,15 +85,14 @@ function worktreeRevision(repository) {
|
|
|
88
85
|
return revision;
|
|
89
86
|
throw new Error(`git-worktree revision inspection returned no revision in ${repository}`);
|
|
90
87
|
}
|
|
91
|
-
|
|
88
|
+
if (headDoesNotExist(result))
|
|
89
|
+
return null;
|
|
90
|
+
throw new Error(`could not inspect git-worktree revision in ${repository}: ${gitFailureDetail(result)}`);
|
|
91
|
+
}
|
|
92
|
+
function headDoesNotExist(result) {
|
|
93
|
+
return (result.error === undefined &&
|
|
92
94
|
result.signal === null &&
|
|
93
95
|
result.status === 1 &&
|
|
94
|
-
result.stderr.trim() === "";
|
|
95
|
-
if (headDoesNotExist)
|
|
96
|
-
return null;
|
|
97
|
-
const detail = result.stderr.trim() ||
|
|
98
|
-
result.error?.message ||
|
|
99
|
-
(result.signal === null ? `exit status ${result.status}` : `signal ${result.signal}`);
|
|
100
|
-
throw new Error(`could not inspect git-worktree revision in ${repository}: ${detail}`);
|
|
96
|
+
result.stderr.trim() === "");
|
|
101
97
|
}
|
|
102
98
|
//# sourceMappingURL=revision-worktree-files.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revision-worktree-files.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/revision-worktree-files.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"revision-worktree-files.mjs","sourceRoot":"","sources":["../../../../src/package-checks/project-files/revision-worktree-files.ts"],"names":[],"mappings":"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","sourcesContent":["/** Enumerates files from initialized, non-cyclic submodule working trees. */\n\nimport { processFailed } from \"../host-environment/process.ts\";\nimport { gitFailureDetail, runGit, splitNulDelimitedGitFileList } from \"../host-environment/git.ts\";\nimport {\n canonicalRepositoryPath,\n resolveDescendableGitlinkRepository,\n visitRepository\n} from \"./gitlink-worktree.ts\";\nimport { gitlinksAtRevision } from \"./gitlink-revision.ts\";\nimport {\n joinSlash,\n nonEmptyGitOutput,\n prefixAndFilter,\n uniqueSortedPaths\n} from \"./revision-paths.ts\";\n\nexport function collectSubmoduleWorktreeFiles({\n repository,\n scanInputPaths\n}: Readonly<{\n readonly repository: string;\n readonly scanInputPaths: readonly string[];\n}>): string[] {\n const files: string[] = [];\n const visitedRepositories = new Set([canonicalRepositoryPath(repository)]);\n const revision = worktreeRevision(repository);\n if (revision === null) return files;\n\n for (const gitlink of gitlinksAtRevision({ repository, revision })) {\n const submoduleRepository = resolveDescendableGitlinkRepository({\n gitlinkPath: gitlink.path,\n repository,\n visitedRepositories\n });\n if (submoduleRepository === null) continue;\n files.push(\n ...collectWorktreeFiles({\n prefix: gitlink.path,\n repository: submoduleRepository,\n scanInputPaths,\n visitedRepositories: visitRepository({\n repository: submoduleRepository,\n visitedRepositories\n })\n })\n );\n }\n return uniqueSortedPaths(files);\n}\n\nfunction collectWorktreeFiles({\n prefix,\n repository,\n scanInputPaths,\n visitedRepositories\n}: Readonly<{\n readonly prefix: string;\n readonly repository: string;\n readonly scanInputPaths: readonly string[];\n readonly visitedRepositories: ReadonlySet<string>;\n}>): string[] {\n const result = runGit({\n args: [\"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\", \"--\"],\n cwd: repository\n });\n if (processFailed(result)) {\n throw new Error(\n `could not enumerate git-worktree files in ${repository}: ${gitFailureDetail(result)}`\n );\n }\n\n const files = prefixAndFilter({\n files: splitNulDelimitedGitFileList(result.stdout),\n prefix,\n scanInputPaths\n });\n const revision = worktreeRevision(repository);\n if (revision === null) return uniqueSortedPaths(files);\n files.push(\n ...collectNestedWorktreeFiles({\n prefix,\n repository,\n revision,\n scanInputPaths,\n visitedRepositories\n })\n );\n return uniqueSortedPaths(files);\n}\n\nfunction collectNestedWorktreeFiles({\n prefix,\n repository,\n revision,\n scanInputPaths,\n visitedRepositories\n}: Readonly<{\n readonly prefix: string;\n readonly repository: string;\n readonly revision: string;\n readonly scanInputPaths: readonly string[];\n readonly visitedRepositories: ReadonlySet<string>;\n}>): string[] {\n const files: string[] = [];\n for (const gitlink of gitlinksAtRevision({ repository, revision })) {\n const submoduleRepository = resolveDescendableGitlinkRepository({\n gitlinkPath: gitlink.path,\n repository,\n visitedRepositories\n });\n if (submoduleRepository === null) continue;\n files.push(\n ...collectWorktreeFiles({\n prefix: joinSlash({ path: gitlink.path, prefix }),\n repository: submoduleRepository,\n scanInputPaths,\n visitedRepositories: visitRepository({\n repository: submoduleRepository,\n visitedRepositories\n })\n })\n );\n }\n return files;\n}\n\nfunction worktreeRevision(repository: string): string | null {\n const result = runGit({ args: [\"rev-parse\", \"--verify\", \"--quiet\", \"HEAD\"], cwd: repository });\n if (!processFailed(result)) {\n const revision = nonEmptyGitOutput(result.stdout);\n if (revision !== null) return revision;\n throw new Error(`git-worktree revision inspection returned no revision in ${repository}`);\n }\n if (headDoesNotExist(result)) return null;\n throw new Error(\n `could not inspect git-worktree revision in ${repository}: ${gitFailureDetail(result)}`\n );\n}\n\nfunction headDoesNotExist(result: ReturnType<typeof runGit>): boolean {\n return (\n result.error === undefined &&\n result.signal === null &&\n result.status === 1 &&\n result.stderr.trim() === \"\"\n );\n}\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const UTF8_DECODER = new TextDecoder("utf-8", { fatal: true });
|
|
2
|
+
/** Classifies already-read bytes without retaining or publishing their content on non-text branches. */
|
|
3
|
+
export function classifySecretDetectionBytes(bytes, maximumFileBytes) {
|
|
4
|
+
if (bytes.byteLength > maximumFileBytes)
|
|
5
|
+
return Object.freeze({ kind: "coverage-gap", reason: "file-byte-limit" });
|
|
6
|
+
if (bytes.includes(0))
|
|
7
|
+
return Object.freeze({ kind: "coverage-gap", reason: "contains-nul" });
|
|
8
|
+
try {
|
|
9
|
+
return Object.freeze({ content: UTF8_DECODER.decode(bytes), kind: "text" });
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return Object.freeze({ kind: "coverage-gap", reason: "invalid-utf8" });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=classification.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classification.mjs","sourceRoot":"","sources":["../../../../src/package-checks/secret-detection/classification.ts"],"names":[],"mappings":"AAcA,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAE/D,wGAAwG;AACxG,MAAM,UAAU,4BAA4B,CAC1C,KAAiB,EACjB,gBAAwB;IAExB,IAAI,KAAK,CAAC,UAAU,GAAG,gBAAgB;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC5E,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC","sourcesContent":["/** A bounded, non-secret classification result for one explicitly selected file. */\nexport type SecretDetectionInputClassification = Readonly<\n | { readonly kind: \"coverage-gap\"; readonly reason: SecretDetectionCoverageGapReason }\n | { readonly content: string; readonly kind: \"text\" }\n>;\n\n/** Deterministic reasons why an explicitly selected file did not receive detector coverage. */\nexport type SecretDetectionCoverageGapReason =\n | \"contains-nul\"\n | \"file-count-limit\"\n | \"file-byte-limit\"\n | \"invalid-utf8\"\n | \"total-byte-limit\";\n\nconst UTF8_DECODER = new TextDecoder(\"utf-8\", { fatal: true });\n\n/** Classifies already-read bytes without retaining or publishing their content on non-text branches. */\nexport function classifySecretDetectionBytes(\n bytes: Uint8Array,\n maximumFileBytes: number\n): SecretDetectionInputClassification {\n if (bytes.byteLength > maximumFileBytes)\n return Object.freeze({ kind: \"coverage-gap\", reason: \"file-byte-limit\" });\n if (bytes.includes(0)) return Object.freeze({ kind: \"coverage-gap\", reason: \"contains-nul\" });\n try {\n return Object.freeze({ content: UTF8_DECODER.decode(bytes), kind: \"text\" });\n } catch {\n return Object.freeze({ kind: \"coverage-gap\", reason: \"invalid-utf8\" });\n }\n}\n"]}
|