@lyse-labs/lyse 0.1.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +45 -0
- package/PRIVACY.md +181 -0
- package/README.md +34 -0
- package/SECURITY.md +43 -0
- package/dist/bench/evidence-pack/anti-dummy.d.ts +11 -0
- package/dist/bench/evidence-pack/anti-dummy.js +20 -0
- package/dist/bench/evidence-pack/anti-dummy.js.map +1 -0
- package/dist/bench/evidence-pack/builder.d.ts +14 -0
- package/dist/bench/evidence-pack/builder.js +77 -0
- package/dist/bench/evidence-pack/builder.js.map +1 -0
- package/dist/bench/evidence-pack/histograms.d.ts +2 -0
- package/dist/bench/evidence-pack/histograms.js +131 -0
- package/dist/bench/evidence-pack/histograms.js.map +1 -0
- package/dist/bench/evidence-pack/manifest-detector.d.ts +2 -0
- package/dist/bench/evidence-pack/manifest-detector.js +65 -0
- package/dist/bench/evidence-pack/manifest-detector.js.map +1 -0
- package/dist/bench/evidence-pack/package-json-digest.d.ts +2 -0
- package/dist/bench/evidence-pack/package-json-digest.js +51 -0
- package/dist/bench/evidence-pack/package-json-digest.js.map +1 -0
- package/dist/bench/evidence-pack/sampler.d.ts +2 -0
- package/dist/bench/evidence-pack/sampler.js +140 -0
- package/dist/bench/evidence-pack/sampler.js.map +1 -0
- package/dist/bench/evidence-pack/types.d.ts +127 -0
- package/dist/bench/evidence-pack/types.js +2 -0
- package/dist/bench/evidence-pack/types.js.map +1 -0
- package/dist/bench/evidence-pack/verifier-corpus.d.ts +5 -0
- package/dist/bench/evidence-pack/verifier-corpus.js +13 -0
- package/dist/bench/evidence-pack/verifier-corpus.js.map +1 -0
- package/dist/bench/taxonomy-loader.d.ts +20 -0
- package/dist/bench/taxonomy-loader.js +28 -0
- package/dist/bench/taxonomy-loader.js.map +1 -0
- package/dist/bench/taxonomy.v3.json +20 -0
- package/dist/cli/__tests__/version-migration.test.d.ts +1 -0
- package/dist/cli/__tests__/version-migration.test.js +69 -0
- package/dist/cli/__tests__/version-migration.test.js.map +1 -0
- package/dist/cli/output/__tests__/eslint-style.test.d.ts +1 -0
- package/dist/cli/output/__tests__/eslint-style.test.js +205 -0
- package/dist/cli/output/__tests__/eslint-style.test.js.map +1 -0
- package/dist/cli/output/__tests__/limit.test.d.ts +1 -0
- package/dist/cli/output/__tests__/limit.test.js +65 -0
- package/dist/cli/output/__tests__/limit.test.js.map +1 -0
- package/dist/cli/output/eslint-style.d.ts +18 -0
- package/dist/cli/output/eslint-style.js +42 -0
- package/dist/cli/output/eslint-style.js.map +1 -0
- package/dist/cli/output/limit.d.ts +5 -0
- package/dist/cli/output/limit.js +32 -0
- package/dist/cli/output/limit.js.map +1 -0
- package/dist/cli/output/score-gauge.d.ts +4 -0
- package/dist/cli/output/score-gauge.js +15 -0
- package/dist/cli/output/score-gauge.js.map +1 -0
- package/dist/cli/version-migration.d.ts +18 -0
- package/dist/cli/version-migration.js +49 -0
- package/dist/cli/version-migration.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +856 -0
- package/dist/cli.js.map +1 -0
- package/dist/codemods/diff.d.ts +17 -0
- package/dist/codemods/diff.js +77 -0
- package/dist/codemods/diff.js.map +1 -0
- package/dist/codemods/git-helpers.d.ts +10 -0
- package/dist/codemods/git-helpers.js +75 -0
- package/dist/codemods/git-helpers.js.map +1 -0
- package/dist/codemods/index.d.ts +27 -0
- package/dist/codemods/index.js +40 -0
- package/dist/codemods/index.js.map +1 -0
- package/dist/codemods/naming-component-pascalcase.d.ts +13 -0
- package/dist/codemods/naming-component-pascalcase.js +106 -0
- package/dist/codemods/naming-component-pascalcase.js.map +1 -0
- package/dist/codemods/naming-hook-prefix.d.ts +13 -0
- package/dist/codemods/naming-hook-prefix.js +86 -0
- package/dist/codemods/naming-hook-prefix.js.map +1 -0
- package/dist/codemods/safety.d.ts +50 -0
- package/dist/codemods/safety.js +109 -0
- package/dist/codemods/safety.js.map +1 -0
- package/dist/codemods/safety.test.d.ts +1 -0
- package/dist/codemods/safety.test.js +154 -0
- package/dist/codemods/safety.test.js.map +1 -0
- package/dist/codemods/shadow-native.d.ts +2 -0
- package/dist/codemods/shadow-native.js +103 -0
- package/dist/codemods/shadow-native.js.map +1 -0
- package/dist/codemods/tokens-color.d.ts +2 -0
- package/dist/codemods/tokens-color.js +69 -0
- package/dist/codemods/tokens-color.js.map +1 -0
- package/dist/codemods/tokens-spacing.d.ts +2 -0
- package/dist/codemods/tokens-spacing.js +66 -0
- package/dist/codemods/tokens-spacing.js.map +1 -0
- package/dist/commands/__tests__/email-prompt.test.d.ts +1 -0
- package/dist/commands/__tests__/email-prompt.test.js +126 -0
- package/dist/commands/__tests__/email-prompt.test.js.map +1 -0
- package/dist/commands/__tests__/explain-score.test.d.ts +1 -0
- package/dist/commands/__tests__/explain-score.test.js +88 -0
- package/dist/commands/__tests__/explain-score.test.js.map +1 -0
- package/dist/commands/__tests__/feedback.test.d.ts +1 -0
- package/dist/commands/__tests__/feedback.test.js +186 -0
- package/dist/commands/__tests__/feedback.test.js.map +1 -0
- package/dist/commands/audit-flags.d.ts +49 -0
- package/dist/commands/audit-flags.js +17 -0
- package/dist/commands/audit-flags.js.map +1 -0
- package/dist/commands/audit-pipeline.d.ts +31 -0
- package/dist/commands/audit-pipeline.js +342 -0
- package/dist/commands/audit-pipeline.js.map +1 -0
- package/dist/commands/bench-pack.d.ts +5 -0
- package/dist/commands/bench-pack.js +61 -0
- package/dist/commands/bench-pack.js.map +1 -0
- package/dist/commands/ci-setup.d.ts +9 -0
- package/dist/commands/ci-setup.js +42 -0
- package/dist/commands/ci-setup.js.map +1 -0
- package/dist/commands/email-prompt.d.ts +36 -0
- package/dist/commands/email-prompt.js +160 -0
- package/dist/commands/email-prompt.js.map +1 -0
- package/dist/commands/explain-score.d.ts +35 -0
- package/dist/commands/explain-score.js +137 -0
- package/dist/commands/explain-score.js.map +1 -0
- package/dist/commands/explain.d.ts +6 -0
- package/dist/commands/explain.js +93 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/feedback.d.ts +31 -0
- package/dist/commands/feedback.js +155 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/fix.d.ts +48 -0
- package/dist/commands/fix.js +191 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/init-detect.d.ts +20 -0
- package/dist/commands/init-detect.js +124 -0
- package/dist/commands/init-detect.js.map +1 -0
- package/dist/commands/init-write-agents-md.d.ts +14 -0
- package/dist/commands/init-write-agents-md.js +71 -0
- package/dist/commands/init-write-agents-md.js.map +1 -0
- package/dist/commands/init-write-lyse-md.d.ts +14 -0
- package/dist/commands/init-write-lyse-md.js +253 -0
- package/dist/commands/init-write-lyse-md.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.js +147 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp-entry.d.ts +33 -0
- package/dist/commands/mcp-entry.js +47 -0
- package/dist/commands/mcp-entry.js.map +1 -0
- package/dist/commands/mcp-setup.d.ts +10 -0
- package/dist/commands/mcp-setup.js +74 -0
- package/dist/commands/mcp-setup.js.map +1 -0
- package/dist/commands/share.d.ts +4 -0
- package/dist/commands/share.js +60 -0
- package/dist/commands/share.js.map +1 -0
- package/dist/commands/telemetry.d.ts +4 -0
- package/dist/commands/telemetry.js +27 -0
- package/dist/commands/telemetry.js.map +1 -0
- package/dist/commands/templates/lyse-workflow.yml.template +30 -0
- package/dist/config/schema.d.ts +158 -0
- package/dist/config/schema.js +136 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/credentials/keychain.d.ts +20 -0
- package/dist/credentials/keychain.js +35 -0
- package/dist/credentials/keychain.js.map +1 -0
- package/dist/credentials/keychain.test.d.ts +1 -0
- package/dist/credentials/keychain.test.js +32 -0
- package/dist/credentials/keychain.test.js.map +1 -0
- package/dist/credentials/paths.d.ts +1 -0
- package/dist/credentials/paths.js +6 -0
- package/dist/credentials/paths.js.map +1 -0
- package/dist/credentials/store.d.ts +17 -0
- package/dist/credentials/store.js +60 -0
- package/dist/credentials/store.js.map +1 -0
- package/dist/credentials/store.test.d.ts +1 -0
- package/dist/credentials/store.test.js +48 -0
- package/dist/credentials/store.test.js.map +1 -0
- package/dist/detection/from-filesystem.d.ts +2 -0
- package/dist/detection/from-filesystem.js +26 -0
- package/dist/detection/from-filesystem.js.map +1 -0
- package/dist/detection/from-git.d.ts +2 -0
- package/dist/detection/from-git.js +53 -0
- package/dist/detection/from-git.js.map +1 -0
- package/dist/detection/from-package-json.d.ts +2 -0
- package/dist/detection/from-package-json.js +194 -0
- package/dist/detection/from-package-json.js.map +1 -0
- package/dist/detection/pre-flight.d.ts +5 -0
- package/dist/detection/pre-flight.js +47 -0
- package/dist/detection/pre-flight.js.map +1 -0
- package/dist/detection/types.d.ts +27 -0
- package/dist/detection/types.js +2 -0
- package/dist/detection/types.js.map +1 -0
- package/dist/entitlement/check.d.ts +7 -0
- package/dist/entitlement/check.js +37 -0
- package/dist/entitlement/check.js.map +1 -0
- package/dist/entitlement/index.d.ts +1 -0
- package/dist/entitlement/index.js +2 -0
- package/dist/entitlement/index.js.map +1 -0
- package/dist/entitlement/keys.d.ts +10 -0
- package/dist/entitlement/keys.js +14 -0
- package/dist/entitlement/keys.js.map +1 -0
- package/dist/history/ndjson-store.d.ts +70 -0
- package/dist/history/ndjson-store.js +102 -0
- package/dist/history/ndjson-store.js.map +1 -0
- package/dist/identity/index.d.ts +1 -0
- package/dist/identity/index.js +2 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/repo-bucket.d.ts +22 -0
- package/dist/identity/repo-bucket.js +78 -0
- package/dist/identity/repo-bucket.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/layer4-stage.d.ts +18 -0
- package/dist/llm/layer4-stage.js +12 -0
- package/dist/llm/layer4-stage.js.map +1 -0
- package/dist/loaders/components.d.ts +26 -0
- package/dist/loaders/components.js +285 -0
- package/dist/loaders/components.js.map +1 -0
- package/dist/loaders/stories.d.ts +2 -0
- package/dist/loaders/stories.js +231 -0
- package/dist/loaders/stories.js.map +1 -0
- package/dist/loaders/token-graph.d.ts +39 -0
- package/dist/loaders/token-graph.js +146 -0
- package/dist/loaders/token-graph.js.map +1 -0
- package/dist/loaders/tokens.d.ts +2 -0
- package/dist/loaders/tokens.js +521 -0
- package/dist/loaders/tokens.js.map +1 -0
- package/dist/mcp/_find-root.d.ts +12 -0
- package/dist/mcp/_find-root.js +28 -0
- package/dist/mcp/_find-root.js.map +1 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +42 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/audit-file.d.ts +25 -0
- package/dist/mcp/tools/audit-file.js +147 -0
- package/dist/mcp/tools/audit-file.js.map +1 -0
- package/dist/mcp/tools/suggest-fix.d.ts +13 -0
- package/dist/mcp/tools/suggest-fix.js +100 -0
- package/dist/mcp/tools/suggest-fix.js.map +1 -0
- package/dist/menu/action-menu.d.ts +6 -0
- package/dist/menu/action-menu.js +15 -0
- package/dist/menu/action-menu.js.map +1 -0
- package/dist/menu/prompts.d.ts +7 -0
- package/dist/menu/prompts.js +30 -0
- package/dist/menu/prompts.js.map +1 -0
- package/dist/menu/repl.d.ts +17 -0
- package/dist/menu/repl.js +77 -0
- package/dist/menu/repl.js.map +1 -0
- package/dist/parsers/css-in-js.d.ts +2 -0
- package/dist/parsers/css-in-js.js +69 -0
- package/dist/parsers/css-in-js.js.map +1 -0
- package/dist/parsers/css.d.ts +2 -0
- package/dist/parsers/css.js +32 -0
- package/dist/parsers/css.js.map +1 -0
- package/dist/parsers/scss-transform.d.ts +25 -0
- package/dist/parsers/scss-transform.js +55 -0
- package/dist/parsers/scss-transform.js.map +1 -0
- package/dist/parsers/tailwind-v4.d.ts +8 -0
- package/dist/parsers/tailwind-v4.js +90 -0
- package/dist/parsers/tailwind-v4.js.map +1 -0
- package/dist/parsers/ts-morph-project.d.ts +16 -0
- package/dist/parsers/ts-morph-project.js +77 -0
- package/dist/parsers/ts-morph-project.js.map +1 -0
- package/dist/parsers/ts.d.ts +2 -0
- package/dist/parsers/ts.js +61 -0
- package/dist/parsers/ts.js.map +1 -0
- package/dist/reliability/__tests__/types.test.d.ts +1 -0
- package/dist/reliability/__tests__/types.test.js +14 -0
- package/dist/reliability/__tests__/types.test.js.map +1 -0
- package/dist/reliability/catalogue/__tests__/promotion.test.d.ts +1 -0
- package/dist/reliability/catalogue/__tests__/promotion.test.js +23 -0
- package/dist/reliability/catalogue/__tests__/promotion.test.js.map +1 -0
- package/dist/reliability/catalogue/__tests__/sub-axes.test.d.ts +1 -0
- package/dist/reliability/catalogue/__tests__/sub-axes.test.js +27 -0
- package/dist/reliability/catalogue/__tests__/sub-axes.test.js.map +1 -0
- package/dist/reliability/catalogue/promotion.d.ts +8 -0
- package/dist/reliability/catalogue/promotion.js +25 -0
- package/dist/reliability/catalogue/promotion.js.map +1 -0
- package/dist/reliability/catalogue/sub-axes.d.ts +3 -0
- package/dist/reliability/catalogue/sub-axes.js +18 -0
- package/dist/reliability/catalogue/sub-axes.js.map +1 -0
- package/dist/reliability/confidence/__tests__/manifest-loader.test.d.ts +1 -0
- package/dist/reliability/confidence/__tests__/manifest-loader.test.js +103 -0
- package/dist/reliability/confidence/__tests__/manifest-loader.test.js.map +1 -0
- package/dist/reliability/confidence/bundled-manifest.d.ts +2 -0
- package/dist/reliability/confidence/bundled-manifest.js +8 -0
- package/dist/reliability/confidence/bundled-manifest.js.map +1 -0
- package/dist/reliability/confidence/index.d.ts +3 -0
- package/dist/reliability/confidence/index.js +3 -0
- package/dist/reliability/confidence/index.js.map +1 -0
- package/dist/reliability/confidence/manifest-loader.d.ts +8 -0
- package/dist/reliability/confidence/manifest-loader.js +53 -0
- package/dist/reliability/confidence/manifest-loader.js.map +1 -0
- package/dist/reliability/feedback/__tests__/interactive.test.d.ts +1 -0
- package/dist/reliability/feedback/__tests__/interactive.test.js +85 -0
- package/dist/reliability/feedback/__tests__/interactive.test.js.map +1 -0
- package/dist/reliability/feedback/__tests__/repo-bucket.test.d.ts +1 -0
- package/dist/reliability/feedback/__tests__/repo-bucket.test.js +18 -0
- package/dist/reliability/feedback/__tests__/repo-bucket.test.js.map +1 -0
- package/dist/reliability/feedback/__tests__/sender.test.d.ts +1 -0
- package/dist/reliability/feedback/__tests__/sender.test.js +101 -0
- package/dist/reliability/feedback/__tests__/sender.test.js.map +1 -0
- package/dist/reliability/feedback/interactive.d.ts +20 -0
- package/dist/reliability/feedback/interactive.js +150 -0
- package/dist/reliability/feedback/interactive.js.map +1 -0
- package/dist/reliability/feedback/repo-bucket.d.ts +2 -0
- package/dist/reliability/feedback/repo-bucket.js +9 -0
- package/dist/reliability/feedback/repo-bucket.js.map +1 -0
- package/dist/reliability/feedback/sender.d.ts +16 -0
- package/dist/reliability/feedback/sender.js +28 -0
- package/dist/reliability/feedback/sender.js.map +1 -0
- package/dist/reliability/index.d.ts +1 -0
- package/dist/reliability/index.js +2 -0
- package/dist/reliability/index.js.map +1 -0
- package/dist/reliability/llm-eval/__tests__/budget.test.d.ts +1 -0
- package/dist/reliability/llm-eval/__tests__/budget.test.js +39 -0
- package/dist/reliability/llm-eval/__tests__/budget.test.js.map +1 -0
- package/dist/reliability/llm-eval/budget.d.ts +14 -0
- package/dist/reliability/llm-eval/budget.js +43 -0
- package/dist/reliability/llm-eval/budget.js.map +1 -0
- package/dist/reliability/score/__tests__/formula-v1.test.d.ts +1 -0
- package/dist/reliability/score/__tests__/formula-v1.test.js +29 -0
- package/dist/reliability/score/__tests__/formula-v1.test.js.map +1 -0
- package/dist/reliability/score/formula-v1.d.ts +13 -0
- package/dist/reliability/score/formula-v1.js +19 -0
- package/dist/reliability/score/formula-v1.js.map +1 -0
- package/dist/reliability/score/version-pin.d.ts +1 -0
- package/dist/reliability/score/version-pin.js +2 -0
- package/dist/reliability/score/version-pin.js.map +1 -0
- package/dist/reliability/score/weight.d.ts +1 -0
- package/dist/reliability/score/weight.js +5 -0
- package/dist/reliability/score/weight.js.map +1 -0
- package/dist/reliability/types.d.ts +39 -0
- package/dist/reliability/types.js +2 -0
- package/dist/reliability/types.js.map +1 -0
- package/dist/reporters/coverage-footer.d.ts +2 -0
- package/dist/reporters/coverage-footer.js +7 -0
- package/dist/reporters/coverage-footer.js.map +1 -0
- package/dist/reporters/json.d.ts +5 -0
- package/dist/reporters/json.js +51 -0
- package/dist/reporters/json.js.map +1 -0
- package/dist/reporters/markdown.d.ts +7 -0
- package/dist/reporters/markdown.js +35 -0
- package/dist/reporters/markdown.js.map +1 -0
- package/dist/reporters/sarif.d.ts +5 -0
- package/dist/reporters/sarif.js +109 -0
- package/dist/reporters/sarif.js.map +1 -0
- package/dist/reporters/terminal-format.d.ts +34 -0
- package/dist/reporters/terminal-format.js +97 -0
- package/dist/reporters/terminal-format.js.map +1 -0
- package/dist/reporters/terminal.d.ts +4 -0
- package/dist/reporters/terminal.js +201 -0
- package/dist/reporters/terminal.js.map +1 -0
- package/dist/rule-runner.d.ts +8 -0
- package/dist/rule-runner.js +22 -0
- package/dist/rule-runner.js.map +1 -0
- package/dist/rules/_codemod-adapter.d.ts +16 -0
- package/dist/rules/_codemod-adapter.js +49 -0
- package/dist/rules/_codemod-adapter.js.map +1 -0
- package/dist/rules/_exclude.d.ts +11 -0
- package/dist/rules/_exclude.js +17 -0
- package/dist/rules/_exclude.js.map +1 -0
- package/dist/rules/_function-body-analysis.d.ts +82 -0
- package/dist/rules/_function-body-analysis.js +379 -0
- package/dist/rules/_function-body-analysis.js.map +1 -0
- package/dist/rules/_rule-module.d.ts +31 -0
- package/dist/rules/_rule-module.js +32 -0
- package/dist/rules/_rule-module.js.map +1 -0
- package/dist/rules/_skip-context.d.ts +36 -0
- package/dist/rules/_skip-context.js +128 -0
- package/dist/rules/_skip-context.js.map +1 -0
- package/dist/rules/a11y-essentials.d.ts +1 -0
- package/dist/rules/a11y-essentials.js +140 -0
- package/dist/rules/a11y-essentials.js.map +1 -0
- package/dist/rules/ai-surface-agents-md-quality.d.ts +22 -0
- package/dist/rules/ai-surface-agents-md-quality.js +233 -0
- package/dist/rules/ai-surface-agents-md-quality.js.map +1 -0
- package/dist/rules/ai-surface-component-manifest-json.d.ts +19 -0
- package/dist/rules/ai-surface-component-manifest-json.js +232 -0
- package/dist/rules/ai-surface-component-manifest-json.js.map +1 -0
- package/dist/rules/ai-surface-ds-index-exported.d.ts +19 -0
- package/dist/rules/ai-surface-ds-index-exported.js +239 -0
- package/dist/rules/ai-surface-ds-index-exported.js.map +1 -0
- package/dist/rules/components-shadow-native.d.ts +2 -0
- package/dist/rules/components-shadow-native.js +118 -0
- package/dist/rules/components-shadow-native.js.map +1 -0
- package/dist/rules/manifest.d.ts +5 -0
- package/dist/rules/manifest.js +20 -0
- package/dist/rules/manifest.js.map +1 -0
- package/dist/rules/naming-component-pascalcase.d.ts +7 -0
- package/dist/rules/naming-component-pascalcase.js +197 -0
- package/dist/rules/naming-component-pascalcase.js.map +1 -0
- package/dist/rules/naming-hook-prefix.d.ts +6 -0
- package/dist/rules/naming-hook-prefix.js +185 -0
- package/dist/rules/naming-hook-prefix.js.map +1 -0
- package/dist/rules/pack-loader.d.ts +30 -0
- package/dist/rules/pack-loader.js +60 -0
- package/dist/rules/pack-loader.js.map +1 -0
- package/dist/rules/pack-validator.d.ts +8 -0
- package/dist/rules/pack-validator.js +97 -0
- package/dist/rules/pack-validator.js.map +1 -0
- package/dist/rules/registry.d.ts +3 -0
- package/dist/rules/registry.js +28 -0
- package/dist/rules/registry.js.map +1 -0
- package/dist/rules/storybook-coverage.d.ts +1 -0
- package/dist/rules/storybook-coverage.js +49 -0
- package/dist/rules/storybook-coverage.js.map +1 -0
- package/dist/rules/templates/_regex-utils.d.ts +5 -0
- package/dist/rules/templates/_regex-utils.js +8 -0
- package/dist/rules/templates/_regex-utils.js.map +1 -0
- package/dist/rules/templates/a11y-jsx-template.d.ts +15 -0
- package/dist/rules/templates/a11y-jsx-template.js +69 -0
- package/dist/rules/templates/a11y-jsx-template.js.map +1 -0
- package/dist/rules/templates/css-property-token-compliance.d.ts +18 -0
- package/dist/rules/templates/css-property-token-compliance.js +56 -0
- package/dist/rules/templates/css-property-token-compliance.js.map +1 -0
- package/dist/rules/templates/import-source-restriction.d.ts +18 -0
- package/dist/rules/templates/import-source-restriction.js +60 -0
- package/dist/rules/templates/import-source-restriction.js.map +1 -0
- package/dist/rules/templates/js-call-token-compliance.d.ts +18 -0
- package/dist/rules/templates/js-call-token-compliance.js +61 -0
- package/dist/rules/templates/js-call-token-compliance.js.map +1 -0
- package/dist/rules/templates/js-prop-token-compliance.d.ts +21 -0
- package/dist/rules/templates/js-prop-token-compliance.js +56 -0
- package/dist/rules/templates/js-prop-token-compliance.js.map +1 -0
- package/dist/rules/templates/naming-convention.d.ts +18 -0
- package/dist/rules/templates/naming-convention.js +76 -0
- package/dist/rules/templates/naming-convention.js.map +1 -0
- package/dist/rules/templates/registry.d.ts +5 -0
- package/dist/rules/templates/registry.js +30 -0
- package/dist/rules/templates/registry.js.map +1 -0
- package/dist/rules/templates/storybook-coverage-template.d.ts +15 -0
- package/dist/rules/templates/storybook-coverage-template.js +58 -0
- package/dist/rules/templates/storybook-coverage-template.js.map +1 -0
- package/dist/rules/templates/tailwind-utility-class-compliance.d.ts +15 -0
- package/dist/rules/templates/tailwind-utility-class-compliance.js +70 -0
- package/dist/rules/templates/tailwind-utility-class-compliance.js.map +1 -0
- package/dist/rules/templates/types.d.ts +16 -0
- package/dist/rules/templates/types.js +2 -0
- package/dist/rules/templates/types.js.map +1 -0
- package/dist/rules/tokens-description-coverage.d.ts +15 -0
- package/dist/rules/tokens-description-coverage.js +193 -0
- package/dist/rules/tokens-description-coverage.js.map +1 -0
- package/dist/rules/tokens-dtcg-conformance.d.ts +47 -0
- package/dist/rules/tokens-dtcg-conformance.js +363 -0
- package/dist/rules/tokens-dtcg-conformance.js.map +1 -0
- package/dist/rules/tokens-no-hardcoded-color.d.ts +18 -0
- package/dist/rules/tokens-no-hardcoded-color.js +436 -0
- package/dist/rules/tokens-no-hardcoded-color.js.map +1 -0
- package/dist/rules/tokens-no-hardcoded-spacing.d.ts +8 -0
- package/dist/rules/tokens-no-hardcoded-spacing.js +193 -0
- package/dist/rules/tokens-no-hardcoded-spacing.js.map +1 -0
- package/dist/scorer.d.ts +38 -0
- package/dist/scorer.js +126 -0
- package/dist/scorer.js.map +1 -0
- package/dist/share/clipboard.d.ts +26 -0
- package/dist/share/clipboard.js +76 -0
- package/dist/share/clipboard.js.map +1 -0
- package/dist/suppression/__tests__/inline.test.d.ts +1 -0
- package/dist/suppression/__tests__/inline.test.js +25 -0
- package/dist/suppression/__tests__/inline.test.js.map +1 -0
- package/dist/suppression/__tests__/lyseignore.test.d.ts +1 -0
- package/dist/suppression/__tests__/lyseignore.test.js +32 -0
- package/dist/suppression/__tests__/lyseignore.test.js.map +1 -0
- package/dist/suppression/defaults.d.ts +1 -0
- package/dist/suppression/defaults.js +14 -0
- package/dist/suppression/defaults.js.map +1 -0
- package/dist/suppression/inline.d.ts +7 -0
- package/dist/suppression/inline.js +32 -0
- package/dist/suppression/inline.js.map +1 -0
- package/dist/suppression/lyseignore.d.ts +2 -0
- package/dist/suppression/lyseignore.js +22 -0
- package/dist/suppression/lyseignore.js.map +1 -0
- package/dist/telemetry/consent.d.ts +48 -0
- package/dist/telemetry/consent.js +139 -0
- package/dist/telemetry/consent.js.map +1 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.js +3 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/local-log.d.ts +64 -0
- package/dist/telemetry/local-log.js +123 -0
- package/dist/telemetry/local-log.js.map +1 -0
- package/dist/tokens/dtcg-model.d.ts +53 -0
- package/dist/tokens/dtcg-model.js +18 -0
- package/dist/tokens/dtcg-model.js.map +1 -0
- package/dist/tokens/normalizer.d.ts +17 -0
- package/dist/tokens/normalizer.js +360 -0
- package/dist/tokens/normalizer.js.map +1 -0
- package/dist/types.d.ts +300 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/util/git.d.ts +6 -0
- package/dist/util/git.js +40 -0
- package/dist/util/git.js.map +1 -0
- package/dist/util/git.test.d.ts +5 -0
- package/dist/util/git.test.js +42 -0
- package/dist/util/git.test.js.map +1 -0
- package/dist/util/gitignore.d.ts +9 -0
- package/dist/util/gitignore.js +39 -0
- package/dist/util/gitignore.js.map +1 -0
- package/dist/util/hash-deps.d.ts +6 -0
- package/dist/util/hash-deps.js +24 -0
- package/dist/util/hash-deps.js.map +1 -0
- package/dist/util/spinner.d.ts +41 -0
- package/dist/util/spinner.js +126 -0
- package/dist/util/spinner.js.map +1 -0
- package/dist/util/with-spinner.d.ts +11 -0
- package/dist/util/with-spinner.js +19 -0
- package/dist/util/with-spinner.js.map +1 -0
- package/dist/walker.d.ts +14 -0
- package/dist/walker.js +91 -0
- package/dist/walker.js.map +1 -0
- package/package.json +83 -0
- package/rules-manifest.json +289 -0
- package/schemas/v1/lyse-config.json +82 -0
- package/schemas/v1/lyse-event.json +68 -0
- package/schemas/v1/lyse-license.json +19 -0
- package/schemas/v1/lyse-llm-payload.json +53 -0
- package/schemas/v1/lyse-llm-response.json +45 -0
- package/schemas/v1/lyse-result.json +98 -0
- package/schemas/v1/lyse-rules.json +42 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import prompts from "prompts";
|
|
5
|
+
const CONSENT_DIR = ".lyse";
|
|
6
|
+
const CONSENT_FILE = "consent.json";
|
|
7
|
+
const SCHEMA_VERSION = "1.0.0";
|
|
8
|
+
function resolveHome(deps) {
|
|
9
|
+
return (deps.homeDir ?? homedir)();
|
|
10
|
+
}
|
|
11
|
+
export function consentFilePath(deps = {}) {
|
|
12
|
+
return join(resolveHome(deps), CONSENT_DIR, CONSENT_FILE);
|
|
13
|
+
}
|
|
14
|
+
function isValidRecord(value) {
|
|
15
|
+
if (typeof value !== "object" || value === null)
|
|
16
|
+
return false;
|
|
17
|
+
const v = value;
|
|
18
|
+
return (typeof v["accepted"] === "boolean" &&
|
|
19
|
+
(v["attempt"] === 1 || v["attempt"] === 2) &&
|
|
20
|
+
typeof v["decided_at"] === "string" &&
|
|
21
|
+
v["version"] === SCHEMA_VERSION);
|
|
22
|
+
}
|
|
23
|
+
export function readConsent(deps = {}) {
|
|
24
|
+
const path = consentFilePath(deps);
|
|
25
|
+
if (!existsSync(path))
|
|
26
|
+
return null;
|
|
27
|
+
try {
|
|
28
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
29
|
+
return isValidRecord(parsed) ? parsed : null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function writeConsent(record, deps = {}) {
|
|
36
|
+
const path = consentFilePath(deps);
|
|
37
|
+
mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
|
|
38
|
+
const tmpPath = `${path}.tmp.${process.pid}`;
|
|
39
|
+
writeFileSync(tmpPath, JSON.stringify(record, null, 2) + "\n", { mode: 0o600 });
|
|
40
|
+
renameSync(tmpPath, path);
|
|
41
|
+
}
|
|
42
|
+
const CONSENT_MESSAGE = `Lyse can send anonymous benchmark data to help improve the tool and
|
|
43
|
+
power the public Health Score bench. Data sent (only on audit completion):
|
|
44
|
+
- Your Health Score (0-100)
|
|
45
|
+
- Per-axis scores
|
|
46
|
+
- Audit duration
|
|
47
|
+
- Hashed repo identifier (irreversible)
|
|
48
|
+
What is never sent: source code, file paths, file content, IP, User-Agent.
|
|
49
|
+
Full notice: https://github.com/lyse-labs/lyse/blob/main/PRIVACY.md`;
|
|
50
|
+
export async function promptForConsent() {
|
|
51
|
+
if (!process.stdout.isTTY)
|
|
52
|
+
return "skip";
|
|
53
|
+
process.stdout.write(CONSENT_MESSAGE + "\n");
|
|
54
|
+
const result = await prompts({
|
|
55
|
+
type: "confirm",
|
|
56
|
+
name: "accepted",
|
|
57
|
+
message: "Enable anonymous bench?",
|
|
58
|
+
initial: false,
|
|
59
|
+
});
|
|
60
|
+
if (typeof result["accepted"] !== "boolean")
|
|
61
|
+
return "skip";
|
|
62
|
+
return result["accepted"] ? "yes" : "no";
|
|
63
|
+
}
|
|
64
|
+
let _cachedConsent = false;
|
|
65
|
+
let _cacheInitialised = false;
|
|
66
|
+
export function resetConsentCache() {
|
|
67
|
+
_cachedConsent = false;
|
|
68
|
+
_cacheInitialised = false;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Test-only: seed the per-process consent cache directly, bypassing disk
|
|
72
|
+
* I/O. Used by consumer-side tests (ndjson-store, sender, local-log) that
|
|
73
|
+
* need to assert behavior under "consent accepted" or "consent declined"
|
|
74
|
+
* without writing a consent.json to disk.
|
|
75
|
+
*
|
|
76
|
+
* CONCURRENCY: writes module-level mutable state. Safe under vitest's
|
|
77
|
+
* default per-file isolation, but UNSAFE inside `describe.concurrent` /
|
|
78
|
+
* `test.concurrent` (multiple tests in the same worker would race on the
|
|
79
|
+
* cache). For new tests that need concurrent execution, use the
|
|
80
|
+
* `{ homeDir: () => tmpHome }` deps-injection path instead.
|
|
81
|
+
*
|
|
82
|
+
* PRODUCTION GUARD: throws if called outside a test runner — privacy-
|
|
83
|
+
* sensitive code must never bypass disk-resident consent silently.
|
|
84
|
+
*/
|
|
85
|
+
export function __setCacheForTest(state) {
|
|
86
|
+
if (process.env["VITEST"] !== "true" && process.env["NODE_ENV"] !== "test") {
|
|
87
|
+
throw new Error("__setCacheForTest may only be called from a test runner (VITEST or NODE_ENV=test). " +
|
|
88
|
+
"Production code must use writeConsent / readConsent / ensureConsentDecision.");
|
|
89
|
+
}
|
|
90
|
+
_cachedConsent = state.accepted;
|
|
91
|
+
_cacheInitialised = state.initialised;
|
|
92
|
+
}
|
|
93
|
+
export function getCachedConsent(deps = {}) {
|
|
94
|
+
if (_cacheInitialised)
|
|
95
|
+
return _cachedConsent;
|
|
96
|
+
const existing = readConsent(deps);
|
|
97
|
+
if (existing) {
|
|
98
|
+
_cachedConsent = existing.accepted;
|
|
99
|
+
_cacheInitialised = true;
|
|
100
|
+
}
|
|
101
|
+
return _cachedConsent;
|
|
102
|
+
}
|
|
103
|
+
export async function ensureConsentDecision(deps = {}) {
|
|
104
|
+
const existing = readConsent(deps);
|
|
105
|
+
if (!existing && process.env["LYSE_TELEMETRY"] === "1") {
|
|
106
|
+
writeConsent({
|
|
107
|
+
accepted: true,
|
|
108
|
+
attempt: 1,
|
|
109
|
+
decided_at: new Date().toISOString(),
|
|
110
|
+
version: "1.0.0",
|
|
111
|
+
}, deps);
|
|
112
|
+
_cachedConsent = true;
|
|
113
|
+
_cacheInitialised = true;
|
|
114
|
+
return { accepted: true, justAsked: false };
|
|
115
|
+
}
|
|
116
|
+
if (existing && (existing.accepted || existing.attempt === 2)) {
|
|
117
|
+
_cachedConsent = existing.accepted;
|
|
118
|
+
_cacheInitialised = true;
|
|
119
|
+
return { accepted: existing.accepted, justAsked: false };
|
|
120
|
+
}
|
|
121
|
+
if (!process.stdout.isTTY) {
|
|
122
|
+
_cachedConsent = false;
|
|
123
|
+
_cacheInitialised = true;
|
|
124
|
+
return { accepted: false, justAsked: false };
|
|
125
|
+
}
|
|
126
|
+
const outcome = await promptForConsent();
|
|
127
|
+
const accepted = outcome === "yes";
|
|
128
|
+
const nextAttempt = existing ? 2 : 1;
|
|
129
|
+
writeConsent({
|
|
130
|
+
accepted,
|
|
131
|
+
attempt: nextAttempt,
|
|
132
|
+
decided_at: new Date().toISOString(),
|
|
133
|
+
version: "1.0.0",
|
|
134
|
+
}, deps);
|
|
135
|
+
_cachedConsent = accepted;
|
|
136
|
+
_cacheInitialised = true;
|
|
137
|
+
return { accepted, justAsked: true };
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=consent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent.js","sourceRoot":"","sources":["../../src/telemetry/consent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { AuditResult, Finding } from "../types.js";
|
|
2
|
+
export declare const EVENT_SCHEMA_VERSION = "1.0.0";
|
|
3
|
+
export declare function telemetryEnabled(): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Compact ID: strip dashes from UUID v4 and take first 26 chars.
|
|
6
|
+
* Fits the schema's event_id / session_id constraint (minLength: 16, maxLength: 32).
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateId(): string;
|
|
9
|
+
interface BaseEvent {
|
|
10
|
+
schema_version: string;
|
|
11
|
+
source: "user";
|
|
12
|
+
event_id: string;
|
|
13
|
+
event_type: "audit.started" | "audit.completed" | "finding.discovered";
|
|
14
|
+
ts: string;
|
|
15
|
+
session_id: string;
|
|
16
|
+
repo_bucket: string;
|
|
17
|
+
sdk_version: string;
|
|
18
|
+
}
|
|
19
|
+
export interface AuditStartedEvent extends BaseEvent {
|
|
20
|
+
event_type: "audit.started";
|
|
21
|
+
rules_version: string;
|
|
22
|
+
stack: {
|
|
23
|
+
framework?: string;
|
|
24
|
+
ds_detected?: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface AuditCompletedEvent extends BaseEvent {
|
|
28
|
+
event_type: "audit.completed";
|
|
29
|
+
audit: {
|
|
30
|
+
duration_ms: number;
|
|
31
|
+
score: number | null;
|
|
32
|
+
axes: Record<string, number | "N/A">;
|
|
33
|
+
violations: {
|
|
34
|
+
error: number;
|
|
35
|
+
warning: number;
|
|
36
|
+
info: number;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface FindingDiscoveredEvent extends BaseEvent {
|
|
41
|
+
event_type: "finding.discovered";
|
|
42
|
+
finding: {
|
|
43
|
+
rule_id: string;
|
|
44
|
+
severity: "error" | "warning" | "info";
|
|
45
|
+
/** sha256(filepath + "|" + salt)[:8] — no path leakage */
|
|
46
|
+
file_hash: string;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export type TelemetryEvent = AuditStartedEvent | AuditCompletedEvent | FindingDiscoveredEvent;
|
|
50
|
+
export interface LogContext {
|
|
51
|
+
repoRoot: string;
|
|
52
|
+
sessionId: string;
|
|
53
|
+
repoBucket: string;
|
|
54
|
+
sdkVersion: string;
|
|
55
|
+
rulesVersion: string;
|
|
56
|
+
/** Salt used for file_hash. Pass BUCKET_SALT from identity module for consistency. */
|
|
57
|
+
salt: string;
|
|
58
|
+
}
|
|
59
|
+
export declare function logAuditStarted(ctx: LogContext, stack: AuditStartedEvent["stack"]): void;
|
|
60
|
+
export declare function logAuditCompleted(ctx: LogContext, durationMs: number, result: AuditResult): void;
|
|
61
|
+
export declare function logFindingDiscovered(ctx: LogContext, finding: Finding): void;
|
|
62
|
+
/** Test helper: read all events back from the NDJSON log. */
|
|
63
|
+
export declare function readEvents(repoRoot: string): TelemetryEvent[];
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join, dirname } from "node:path";
|
|
3
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
4
|
+
import { getCachedConsent } from "./consent.js";
|
|
5
|
+
export const EVENT_SCHEMA_VERSION = "1.0.0";
|
|
6
|
+
const EVENTS_DIR = ".lyse";
|
|
7
|
+
const EVENTS_FILE = "events.ndjson";
|
|
8
|
+
export function telemetryEnabled() {
|
|
9
|
+
return getCachedConsent();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Compact ID: strip dashes from UUID v4 and take first 26 chars.
|
|
13
|
+
* Fits the schema's event_id / session_id constraint (minLength: 16, maxLength: 32).
|
|
14
|
+
*/
|
|
15
|
+
export function generateId() {
|
|
16
|
+
return randomUUID().replace(/-/g, "").slice(0, 26);
|
|
17
|
+
}
|
|
18
|
+
function fileHash(filepath, salt) {
|
|
19
|
+
return createHash("sha256")
|
|
20
|
+
.update(filepath)
|
|
21
|
+
.update("|")
|
|
22
|
+
.update(salt)
|
|
23
|
+
.digest("hex")
|
|
24
|
+
.slice(0, 8);
|
|
25
|
+
}
|
|
26
|
+
function eventsFilePath(repoRoot) {
|
|
27
|
+
return join(repoRoot, EVENTS_DIR, EVENTS_FILE);
|
|
28
|
+
}
|
|
29
|
+
function ensureGitignored(repoRoot) {
|
|
30
|
+
const gitignorePath = join(repoRoot, ".gitignore");
|
|
31
|
+
const entry = ".lyse/";
|
|
32
|
+
if (!existsSync(gitignorePath)) {
|
|
33
|
+
writeFileSync(gitignorePath, `# Lyse local telemetry\n${entry}\n`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const current = readFileSync(gitignorePath, "utf8");
|
|
37
|
+
if (current.includes(entry) || current.includes(".lyse"))
|
|
38
|
+
return;
|
|
39
|
+
appendFileSync(gitignorePath, `\n# Lyse local telemetry\n${entry}\n`);
|
|
40
|
+
}
|
|
41
|
+
function writeEvent(repoRoot, event) {
|
|
42
|
+
const filepath = eventsFilePath(repoRoot);
|
|
43
|
+
mkdirSync(dirname(filepath), { recursive: true });
|
|
44
|
+
appendFileSync(filepath, JSON.stringify(event) + "\n");
|
|
45
|
+
}
|
|
46
|
+
export function logAuditStarted(ctx, stack) {
|
|
47
|
+
if (!telemetryEnabled())
|
|
48
|
+
return;
|
|
49
|
+
ensureGitignored(ctx.repoRoot);
|
|
50
|
+
const event = {
|
|
51
|
+
schema_version: EVENT_SCHEMA_VERSION,
|
|
52
|
+
source: "user",
|
|
53
|
+
event_id: generateId(),
|
|
54
|
+
event_type: "audit.started",
|
|
55
|
+
ts: new Date().toISOString(),
|
|
56
|
+
session_id: ctx.sessionId,
|
|
57
|
+
repo_bucket: ctx.repoBucket,
|
|
58
|
+
sdk_version: ctx.sdkVersion,
|
|
59
|
+
rules_version: ctx.rulesVersion,
|
|
60
|
+
stack,
|
|
61
|
+
};
|
|
62
|
+
writeEvent(ctx.repoRoot, event);
|
|
63
|
+
}
|
|
64
|
+
export function logAuditCompleted(ctx, durationMs, result) {
|
|
65
|
+
if (!telemetryEnabled())
|
|
66
|
+
return;
|
|
67
|
+
const violations = { error: 0, warning: 0, info: 0 };
|
|
68
|
+
for (const f of result.findings)
|
|
69
|
+
violations[f.severity]++;
|
|
70
|
+
const axes = {};
|
|
71
|
+
for (const a of result.axes)
|
|
72
|
+
axes[a.axis] = a.score;
|
|
73
|
+
const event = {
|
|
74
|
+
schema_version: EVENT_SCHEMA_VERSION,
|
|
75
|
+
source: "user",
|
|
76
|
+
event_id: generateId(),
|
|
77
|
+
event_type: "audit.completed",
|
|
78
|
+
ts: new Date().toISOString(),
|
|
79
|
+
session_id: ctx.sessionId,
|
|
80
|
+
repo_bucket: ctx.repoBucket,
|
|
81
|
+
sdk_version: ctx.sdkVersion,
|
|
82
|
+
audit: {
|
|
83
|
+
duration_ms: durationMs,
|
|
84
|
+
score: typeof result.finalScore === "number" ? result.finalScore : null,
|
|
85
|
+
axes,
|
|
86
|
+
violations,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
writeEvent(ctx.repoRoot, event);
|
|
90
|
+
}
|
|
91
|
+
export function logFindingDiscovered(ctx, finding) {
|
|
92
|
+
if (!telemetryEnabled())
|
|
93
|
+
return;
|
|
94
|
+
const event = {
|
|
95
|
+
schema_version: EVENT_SCHEMA_VERSION,
|
|
96
|
+
source: "user",
|
|
97
|
+
event_id: generateId(),
|
|
98
|
+
event_type: "finding.discovered",
|
|
99
|
+
ts: new Date().toISOString(),
|
|
100
|
+
session_id: ctx.sessionId,
|
|
101
|
+
repo_bucket: ctx.repoBucket,
|
|
102
|
+
sdk_version: ctx.sdkVersion,
|
|
103
|
+
finding: {
|
|
104
|
+
rule_id: finding.ruleId,
|
|
105
|
+
severity: finding.severity,
|
|
106
|
+
file_hash: fileHash(finding.location.file, ctx.salt),
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
writeEvent(ctx.repoRoot, event);
|
|
110
|
+
}
|
|
111
|
+
/** Test helper: read all events back from the NDJSON log. */
|
|
112
|
+
export function readEvents(repoRoot) {
|
|
113
|
+
const filepath = eventsFilePath(repoRoot);
|
|
114
|
+
if (!existsSync(filepath))
|
|
115
|
+
return [];
|
|
116
|
+
const content = readFileSync(filepath, "utf8");
|
|
117
|
+
return content
|
|
118
|
+
.trim()
|
|
119
|
+
.split("\n")
|
|
120
|
+
.filter(Boolean)
|
|
121
|
+
.map((line) => JSON.parse(line));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=local-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-log.js","sourceRoot":"","sources":["../../src/telemetry/local-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type DtcgType = "color" | "dimension" | "fontFamily" | "fontWeight" | "duration" | "cubicBezier" | "shadow" | "gradient" | "typography" | "transition" | "border" | "strokeStyle" | "number" | "string";
|
|
2
|
+
export type DtcgAlias = string;
|
|
3
|
+
export interface DtcgTokenBase {
|
|
4
|
+
$type?: DtcgType;
|
|
5
|
+
$description?: string;
|
|
6
|
+
$extensions?: Record<string, unknown>;
|
|
7
|
+
$deprecated?: boolean | string;
|
|
8
|
+
}
|
|
9
|
+
export interface DtcgToken<TValue = unknown> extends DtcgTokenBase {
|
|
10
|
+
$value: TValue | DtcgAlias;
|
|
11
|
+
}
|
|
12
|
+
export interface DtcgShadowValue {
|
|
13
|
+
color: string;
|
|
14
|
+
offsetX: string;
|
|
15
|
+
offsetY: string;
|
|
16
|
+
blur: string;
|
|
17
|
+
spread?: string;
|
|
18
|
+
inset?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface DtcgTypographyValue {
|
|
21
|
+
fontFamily?: string | string[];
|
|
22
|
+
fontSize?: string;
|
|
23
|
+
fontWeight?: string | number;
|
|
24
|
+
lineHeight?: string | number;
|
|
25
|
+
letterSpacing?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface DtcgTransitionValue {
|
|
28
|
+
duration: string;
|
|
29
|
+
delay?: string;
|
|
30
|
+
timingFunction: number[] | string;
|
|
31
|
+
}
|
|
32
|
+
export interface DtcgBorderValue {
|
|
33
|
+
color: string;
|
|
34
|
+
width: string;
|
|
35
|
+
style: string;
|
|
36
|
+
}
|
|
37
|
+
export interface DtcgGradientStop {
|
|
38
|
+
color: string;
|
|
39
|
+
position: number;
|
|
40
|
+
}
|
|
41
|
+
export type DtcgGradientValue = DtcgGradientStop[];
|
|
42
|
+
export type DtcgCubicBezierValue = [number, number, number, number];
|
|
43
|
+
export interface DtcgGroup {
|
|
44
|
+
$type?: DtcgType;
|
|
45
|
+
$description?: string;
|
|
46
|
+
$extensions?: Record<string, unknown>;
|
|
47
|
+
[key: string]: DtcgGroup | DtcgToken<unknown> | DtcgType | string | Record<string, unknown> | undefined;
|
|
48
|
+
}
|
|
49
|
+
export type DtcgDocument = DtcgGroup;
|
|
50
|
+
export declare function isDtcgToken(entry: unknown): entry is DtcgToken<unknown>;
|
|
51
|
+
export declare function isDtcgGroup(entry: unknown): entry is DtcgGroup;
|
|
52
|
+
export declare function isDtcgAlias(value: unknown): value is DtcgAlias;
|
|
53
|
+
export declare function parseAliasPath(alias: DtcgAlias): string[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function isDtcgToken(entry) {
|
|
2
|
+
return typeof entry === "object" && entry !== null && "$value" in entry;
|
|
3
|
+
}
|
|
4
|
+
export function isDtcgGroup(entry) {
|
|
5
|
+
return (typeof entry === "object" &&
|
|
6
|
+
entry !== null &&
|
|
7
|
+
!Array.isArray(entry) &&
|
|
8
|
+
!("$value" in entry));
|
|
9
|
+
}
|
|
10
|
+
const ALIAS_RE = /^\{[^{}]+\}$/;
|
|
11
|
+
export function isDtcgAlias(value) {
|
|
12
|
+
return typeof value === "string" && ALIAS_RE.test(value.trim());
|
|
13
|
+
}
|
|
14
|
+
export function parseAliasPath(alias) {
|
|
15
|
+
const inner = alias.trim().slice(1, -1);
|
|
16
|
+
return inner.split(".").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=dtcg-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dtcg-model.js","sourceRoot":"","sources":["../../src/tokens/dtcg-model.ts"],"names":[],"mappings":"AA4EA,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAK,KAAiC,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,QAAQ,IAAK,KAAiC,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEhC,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DtcgDocument, DtcgType } from "./dtcg-model.js";
|
|
2
|
+
export type NormalizerSource = "tailwind-v3" | "tailwind-v4" | "css-vars" | "theme-ts" | "dtcg";
|
|
3
|
+
export interface NormalizerInput {
|
|
4
|
+
source: NormalizerSource;
|
|
5
|
+
data: unknown;
|
|
6
|
+
}
|
|
7
|
+
export interface NormalizedTokens {
|
|
8
|
+
document: DtcgDocument;
|
|
9
|
+
source: NormalizerSource;
|
|
10
|
+
warnings: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare function classifyTailwindV4Prop(prop: string): {
|
|
13
|
+
group: string;
|
|
14
|
+
type: DtcgType;
|
|
15
|
+
name: string;
|
|
16
|
+
} | null;
|
|
17
|
+
export declare function normalizeToDtcg(input: NormalizerInput): NormalizedTokens;
|