@calibrate-ds/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/check-component.test.d.ts +2 -0
- package/dist/__tests__/check-component.test.d.ts.map +1 -0
- package/dist/__tests__/check-component.test.js +103 -0
- package/dist/__tests__/check-component.test.js.map +1 -0
- package/dist/__tests__/compare-components.test.d.ts +2 -0
- package/dist/__tests__/compare-components.test.d.ts.map +1 -0
- package/dist/__tests__/compare-components.test.js +145 -0
- package/dist/__tests__/compare-components.test.js.map +1 -0
- package/dist/__tests__/naming-strategy.test.d.ts +2 -0
- package/dist/__tests__/naming-strategy.test.d.ts.map +1 -0
- package/dist/__tests__/naming-strategy.test.js +71 -0
- package/dist/__tests__/naming-strategy.test.js.map +1 -0
- package/dist/ai/index.d.ts +3 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +3 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/provider.d.ts +14 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +63 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/resolve-provider.d.ts +3 -0
- package/dist/ai/resolve-provider.d.ts.map +1 -0
- package/dist/ai/resolve-provider.js +61 -0
- package/dist/ai/resolve-provider.js.map +1 -0
- package/dist/bootstrap/generate-library-files.d.ts +7 -0
- package/dist/bootstrap/generate-library-files.d.ts.map +1 -0
- package/dist/bootstrap/generate-library-files.js +97 -0
- package/dist/bootstrap/generate-library-files.js.map +1 -0
- package/dist/bootstrap/index.d.ts +4 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +4 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/types.d.ts +27 -0
- package/dist/bootstrap/types.d.ts.map +1 -0
- package/dist/bootstrap/types.js +2 -0
- package/dist/bootstrap/types.js.map +1 -0
- package/dist/bootstrap/write-library-bootstrap.d.ts +7 -0
- package/dist/bootstrap/write-library-bootstrap.d.ts.map +1 -0
- package/dist/bootstrap/write-library-bootstrap.js +35 -0
- package/dist/bootstrap/write-library-bootstrap.js.map +1 -0
- package/dist/config/config-schema.d.ts +131 -0
- package/dist/config/config-schema.d.ts.map +1 -0
- package/dist/config/config-schema.js +93 -0
- package/dist/config/config-schema.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load-config.d.ts +7 -0
- package/dist/config/load-config.d.ts.map +1 -0
- package/dist/config/load-config.js +63 -0
- package/dist/config/load-config.js.map +1 -0
- package/dist/context/compressed-context.d.ts +3 -0
- package/dist/context/compressed-context.d.ts.map +1 -0
- package/dist/context/compressed-context.js +145 -0
- package/dist/context/compressed-context.js.map +1 -0
- package/dist/context/context-index.d.ts +18 -0
- package/dist/context/context-index.d.ts.map +1 -0
- package/dist/context/context-index.js +59 -0
- package/dist/context/context-index.js.map +1 -0
- package/dist/context/export-context.d.ts +61 -0
- package/dist/context/export-context.d.ts.map +1 -0
- package/dist/context/export-context.js +191 -0
- package/dist/context/export-context.js.map +1 -0
- package/dist/context/get-component-context.d.ts +3 -0
- package/dist/context/get-component-context.d.ts.map +1 -0
- package/dist/context/get-component-context.js +898 -0
- package/dist/context/get-component-context.js.map +1 -0
- package/dist/context/hashing.d.ts +14 -0
- package/dist/context/hashing.d.ts.map +1 -0
- package/dist/context/hashing.js +53 -0
- package/dist/context/hashing.js.map +1 -0
- package/dist/context/metadata-extraction.d.ts +15 -0
- package/dist/context/metadata-extraction.d.ts.map +1 -0
- package/dist/context/metadata-extraction.js +47 -0
- package/dist/context/metadata-extraction.js.map +1 -0
- package/dist/design-tool/figma-adapter.d.ts +20 -0
- package/dist/design-tool/figma-adapter.d.ts.map +1 -0
- package/dist/design-tool/figma-adapter.js +46 -0
- package/dist/design-tool/figma-adapter.js.map +1 -0
- package/dist/design-tool/index.d.ts +4 -0
- package/dist/design-tool/index.d.ts.map +1 -0
- package/dist/design-tool/index.js +3 -0
- package/dist/design-tool/index.js.map +1 -0
- package/dist/design-tool/registry.d.ts +12 -0
- package/dist/design-tool/registry.d.ts.map +1 -0
- package/dist/design-tool/registry.js +23 -0
- package/dist/design-tool/registry.js.map +1 -0
- package/dist/design-tool/types.d.ts +28 -0
- package/dist/design-tool/types.d.ts.map +1 -0
- package/dist/design-tool/types.js +2 -0
- package/dist/design-tool/types.js.map +1 -0
- package/dist/diff/compare-components.d.ts +3 -0
- package/dist/diff/compare-components.d.ts.map +1 -0
- package/dist/diff/compare-components.js +198 -0
- package/dist/diff/compare-components.js.map +1 -0
- package/dist/diff/compare-dependencies.d.ts +3 -0
- package/dist/diff/compare-dependencies.d.ts.map +1 -0
- package/dist/diff/compare-dependencies.js +30 -0
- package/dist/diff/compare-dependencies.js.map +1 -0
- package/dist/diff/compare-tokens.d.ts +3 -0
- package/dist/diff/compare-tokens.d.ts.map +1 -0
- package/dist/diff/compare-tokens.js +52 -0
- package/dist/diff/compare-tokens.js.map +1 -0
- package/dist/diff/compute-design-diff.d.ts +3 -0
- package/dist/diff/compute-design-diff.d.ts.map +1 -0
- package/dist/diff/compute-design-diff.js +27 -0
- package/dist/diff/compute-design-diff.js.map +1 -0
- package/dist/diff/format-diff-summary.d.ts +3 -0
- package/dist/diff/format-diff-summary.d.ts.map +1 -0
- package/dist/diff/format-diff-summary.js +59 -0
- package/dist/diff/format-diff-summary.js.map +1 -0
- package/dist/diff/index.d.ts +6 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +6 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/docs/generate-component-doc.d.ts +34 -0
- package/dist/docs/generate-component-doc.d.ts.map +1 -0
- package/dist/docs/generate-component-doc.js +269 -0
- package/dist/docs/generate-component-doc.js.map +1 -0
- package/dist/docs/generate-component-stories.d.ts +3 -0
- package/dist/docs/generate-component-stories.d.ts.map +1 -0
- package/dist/docs/generate-component-stories.js +116 -0
- package/dist/docs/generate-component-stories.js.map +1 -0
- package/dist/docs/generate-system-doc.d.ts +23 -0
- package/dist/docs/generate-system-doc.d.ts.map +1 -0
- package/dist/docs/generate-system-doc.js +337 -0
- package/dist/docs/generate-system-doc.js.map +1 -0
- package/dist/docs/index.d.ts +5 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +5 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/docs/setup-storybook.d.ts +26 -0
- package/dist/docs/setup-storybook.d.ts.map +1 -0
- package/dist/docs/setup-storybook.js +216 -0
- package/dist/docs/setup-storybook.js.map +1 -0
- package/dist/doctor/check-component.d.ts +5 -0
- package/dist/doctor/check-component.d.ts.map +1 -0
- package/dist/doctor/check-component.js +120 -0
- package/dist/doctor/check-component.js.map +1 -0
- package/dist/doctor/check-config.d.ts +4 -0
- package/dist/doctor/check-config.d.ts.map +1 -0
- package/dist/doctor/check-config.js +65 -0
- package/dist/doctor/check-config.js.map +1 -0
- package/dist/doctor/check-tokens.d.ts +4 -0
- package/dist/doctor/check-tokens.d.ts.map +1 -0
- package/dist/doctor/check-tokens.js +17 -0
- package/dist/doctor/check-tokens.js.map +1 -0
- package/dist/doctor/index.d.ts +5 -0
- package/dist/doctor/index.d.ts.map +1 -0
- package/dist/doctor/index.js +5 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/types.d.ts +30 -0
- package/dist/doctor/types.d.ts.map +1 -0
- package/dist/doctor/types.js +2 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/filesystem/ensure-dir.d.ts +5 -0
- package/dist/filesystem/ensure-dir.d.ts.map +1 -0
- package/dist/filesystem/ensure-dir.js +17 -0
- package/dist/filesystem/ensure-dir.js.map +1 -0
- package/dist/filesystem/index.d.ts +6 -0
- package/dist/filesystem/index.d.ts.map +1 -0
- package/dist/filesystem/index.js +6 -0
- package/dist/filesystem/index.js.map +1 -0
- package/dist/filesystem/resolve-component-path.d.ts +10 -0
- package/dist/filesystem/resolve-component-path.d.ts.map +1 -0
- package/dist/filesystem/resolve-component-path.js +32 -0
- package/dist/filesystem/resolve-component-path.js.map +1 -0
- package/dist/filesystem/resolve-ds-paths.d.ts +15 -0
- package/dist/filesystem/resolve-ds-paths.d.ts.map +1 -0
- package/dist/filesystem/resolve-ds-paths.js +51 -0
- package/dist/filesystem/resolve-ds-paths.js.map +1 -0
- package/dist/filesystem/workspace-root.d.ts +6 -0
- package/dist/filesystem/workspace-root.d.ts.map +1 -0
- package/dist/filesystem/workspace-root.js +21 -0
- package/dist/filesystem/workspace-root.js.map +1 -0
- package/dist/filesystem/write-json.d.ts +6 -0
- package/dist/filesystem/write-json.d.ts.map +1 -0
- package/dist/filesystem/write-json.js +10 -0
- package/dist/filesystem/write-json.js.map +1 -0
- package/dist/filesystem/write-text.d.ts +10 -0
- package/dist/filesystem/write-text.d.ts.map +1 -0
- package/dist/filesystem/write-text.js +22 -0
- package/dist/filesystem/write-text.js.map +1 -0
- package/dist/generators/components/generate-component-css.d.ts +6 -0
- package/dist/generators/components/generate-component-css.d.ts.map +1 -0
- package/dist/generators/components/generate-component-css.js +92 -0
- package/dist/generators/components/generate-component-css.js.map +1 -0
- package/dist/generators/components/generate-component-file.d.ts +8 -0
- package/dist/generators/components/generate-component-file.d.ts.map +1 -0
- package/dist/generators/components/generate-component-file.js +209 -0
- package/dist/generators/components/generate-component-file.js.map +1 -0
- package/dist/generators/components/generate-composite-file.d.ts +3 -0
- package/dist/generators/components/generate-composite-file.d.ts.map +1 -0
- package/dist/generators/components/generate-composite-file.js +77 -0
- package/dist/generators/components/generate-composite-file.js.map +1 -0
- package/dist/generators/components/generate-composite-types.d.ts +7 -0
- package/dist/generators/components/generate-composite-types.d.ts.map +1 -0
- package/dist/generators/components/generate-composite-types.js +43 -0
- package/dist/generators/components/generate-composite-types.js.map +1 -0
- package/dist/generators/components/generate-types-file.d.ts +8 -0
- package/dist/generators/components/generate-types-file.d.ts.map +1 -0
- package/dist/generators/components/generate-types-file.js +64 -0
- package/dist/generators/components/generate-types-file.js.map +1 -0
- package/dist/generators/components/helpers.d.ts +33 -0
- package/dist/generators/components/helpers.d.ts.map +1 -0
- package/dist/generators/components/helpers.js +124 -0
- package/dist/generators/components/helpers.js.map +1 -0
- package/dist/generators/components/index.d.ts +9 -0
- package/dist/generators/components/index.d.ts.map +1 -0
- package/dist/generators/components/index.js +10 -0
- package/dist/generators/components/index.js.map +1 -0
- package/dist/generators/components/layout-jsx.d.ts +14 -0
- package/dist/generators/components/layout-jsx.d.ts.map +1 -0
- package/dist/generators/components/layout-jsx.js +271 -0
- package/dist/generators/components/layout-jsx.js.map +1 -0
- package/dist/generators/components/prune-components.d.ts +15 -0
- package/dist/generators/components/prune-components.d.ts.map +1 -0
- package/dist/generators/components/prune-components.js +88 -0
- package/dist/generators/components/prune-components.js.map +1 -0
- package/dist/generators/components/token-helpers.d.ts +32 -0
- package/dist/generators/components/token-helpers.d.ts.map +1 -0
- package/dist/generators/components/token-helpers.js +188 -0
- package/dist/generators/components/token-helpers.js.map +1 -0
- package/dist/generators/components/write-components.d.ts +17 -0
- package/dist/generators/components/write-components.d.ts.map +1 -0
- package/dist/generators/components/write-components.js +212 -0
- package/dist/generators/components/write-components.js.map +1 -0
- package/dist/generators/components/write-composites.d.ts +4 -0
- package/dist/generators/components/write-composites.d.ts.map +1 -0
- package/dist/generators/components/write-composites.js +116 -0
- package/dist/generators/components/write-composites.js.map +1 -0
- package/dist/generators/composites/generate-composite-file.d.ts +3 -0
- package/dist/generators/composites/generate-composite-file.d.ts.map +1 -0
- package/dist/generators/composites/generate-composite-file.js +101 -0
- package/dist/generators/composites/generate-composite-file.js.map +1 -0
- package/dist/generators/composites/generate-composite-types.d.ts +7 -0
- package/dist/generators/composites/generate-composite-types.d.ts.map +1 -0
- package/dist/generators/composites/generate-composite-types.js +43 -0
- package/dist/generators/composites/generate-composite-types.js.map +1 -0
- package/dist/generators/composites/index.d.ts +4 -0
- package/dist/generators/composites/index.d.ts.map +1 -0
- package/dist/generators/composites/index.js +4 -0
- package/dist/generators/composites/index.js.map +1 -0
- package/dist/generators/composites/write-composites.d.ts +4 -0
- package/dist/generators/composites/write-composites.d.ts.map +1 -0
- package/dist/generators/composites/write-composites.js +116 -0
- package/dist/generators/composites/write-composites.js.map +1 -0
- package/dist/generators/registry.d.ts +9 -0
- package/dist/generators/registry.d.ts.map +1 -0
- package/dist/generators/registry.js +11 -0
- package/dist/generators/registry.js.map +1 -0
- package/dist/generators/scaffold/generate-placeholder-component-content.d.ts +9 -0
- package/dist/generators/scaffold/generate-placeholder-component-content.d.ts.map +1 -0
- package/dist/generators/scaffold/generate-placeholder-component-content.js +68 -0
- package/dist/generators/scaffold/generate-placeholder-component-content.js.map +1 -0
- package/dist/generators/scaffold/index.d.ts +3 -0
- package/dist/generators/scaffold/index.d.ts.map +1 -0
- package/dist/generators/scaffold/index.js +3 -0
- package/dist/generators/scaffold/index.js.map +1 -0
- package/dist/generators/scaffold/write-scaffold.d.ts +14 -0
- package/dist/generators/scaffold/write-scaffold.d.ts.map +1 -0
- package/dist/generators/scaffold/write-scaffold.js +87 -0
- package/dist/generators/scaffold/write-scaffold.js.map +1 -0
- package/dist/generators/tokens/generate-token-css.d.ts +6 -0
- package/dist/generators/tokens/generate-token-css.d.ts.map +1 -0
- package/dist/generators/tokens/generate-token-css.js +31 -0
- package/dist/generators/tokens/generate-token-css.js.map +1 -0
- package/dist/generators/tokens/generate-token-file-content.d.ts +6 -0
- package/dist/generators/tokens/generate-token-file-content.d.ts.map +1 -0
- package/dist/generators/tokens/generate-token-file-content.js +27 -0
- package/dist/generators/tokens/generate-token-file-content.js.map +1 -0
- package/dist/generators/tokens/index.d.ts +3 -0
- package/dist/generators/tokens/index.d.ts.map +1 -0
- package/dist/generators/tokens/index.js +3 -0
- package/dist/generators/tokens/index.js.map +1 -0
- package/dist/generators/tokens/write-tokens.d.ts +14 -0
- package/dist/generators/tokens/write-tokens.d.ts.map +1 -0
- package/dist/generators/tokens/write-tokens.js +96 -0
- package/dist/generators/tokens/write-tokens.js.map +1 -0
- package/dist/generators/types.d.ts +11 -0
- package/dist/generators/types.d.ts.map +1 -0
- package/dist/generators/types.js +2 -0
- package/dist/generators/types.js.map +1 -0
- package/dist/icons/enrich-icon-svgs.d.ts +10 -0
- package/dist/icons/enrich-icon-svgs.d.ts.map +1 -0
- package/dist/icons/enrich-icon-svgs.js +88 -0
- package/dist/icons/enrich-icon-svgs.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/index.d.ts +8 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +80 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/mappings/build-file-mappings.d.ts +6 -0
- package/dist/mappings/build-file-mappings.d.ts.map +1 -0
- package/dist/mappings/build-file-mappings.js +37 -0
- package/dist/mappings/build-file-mappings.js.map +1 -0
- package/dist/mappings/index.d.ts +3 -0
- package/dist/mappings/index.d.ts.map +1 -0
- package/dist/mappings/index.js +3 -0
- package/dist/mappings/index.js.map +1 -0
- package/dist/mappings/naming-strategy.d.ts +20 -0
- package/dist/mappings/naming-strategy.d.ts.map +1 -0
- package/dist/mappings/naming-strategy.js +78 -0
- package/dist/mappings/naming-strategy.js.map +1 -0
- package/dist/model/build-design-system-model.d.ts +7 -0
- package/dist/model/build-design-system-model.d.ts.map +1 -0
- package/dist/model/build-design-system-model.js +78 -0
- package/dist/model/build-design-system-model.js.map +1 -0
- package/dist/model/index.d.ts +2 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +2 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/resolve-component.d.ts +11 -0
- package/dist/model/resolve-component.d.ts.map +1 -0
- package/dist/model/resolve-component.js +110 -0
- package/dist/model/resolve-component.js.map +1 -0
- package/dist/normalizer/classify-entities.d.ts +12 -0
- package/dist/normalizer/classify-entities.d.ts.map +1 -0
- package/dist/normalizer/classify-entities.js +62 -0
- package/dist/normalizer/classify-entities.js.map +1 -0
- package/dist/normalizer/helpers.d.ts +13 -0
- package/dist/normalizer/helpers.d.ts.map +1 -0
- package/dist/normalizer/helpers.js +27 -0
- package/dist/normalizer/helpers.js.map +1 -0
- package/dist/normalizer/index.d.ts +7 -0
- package/dist/normalizer/index.d.ts.map +1 -0
- package/dist/normalizer/index.js +7 -0
- package/dist/normalizer/index.js.map +1 -0
- package/dist/normalizer/instance-resolver.d.ts +13 -0
- package/dist/normalizer/instance-resolver.d.ts.map +1 -0
- package/dist/normalizer/instance-resolver.js +747 -0
- package/dist/normalizer/instance-resolver.js.map +1 -0
- package/dist/normalizer/layout-tree.d.ts +12 -0
- package/dist/normalizer/layout-tree.d.ts.map +1 -0
- package/dist/normalizer/layout-tree.js +312 -0
- package/dist/normalizer/layout-tree.js.map +1 -0
- package/dist/normalizer/naming.d.ts +11 -0
- package/dist/normalizer/naming.d.ts.map +1 -0
- package/dist/normalizer/naming.js +44 -0
- package/dist/normalizer/naming.js.map +1 -0
- package/dist/normalizer/normalize-components.d.ts +13 -0
- package/dist/normalizer/normalize-components.d.ts.map +1 -0
- package/dist/normalizer/normalize-components.js +520 -0
- package/dist/normalizer/normalize-components.js.map +1 -0
- package/dist/normalizer/normalize-composites.d.ts +8 -0
- package/dist/normalizer/normalize-composites.d.ts.map +1 -0
- package/dist/normalizer/normalize-composites.js +22 -0
- package/dist/normalizer/normalize-composites.js.map +1 -0
- package/dist/normalizer/normalize-instances.d.ts +9 -0
- package/dist/normalizer/normalize-instances.d.ts.map +1 -0
- package/dist/normalizer/normalize-instances.js +32 -0
- package/dist/normalizer/normalize-instances.js.map +1 -0
- package/dist/normalizer/types.d.ts +22 -0
- package/dist/normalizer/types.d.ts.map +1 -0
- package/dist/normalizer/types.js +2 -0
- package/dist/normalizer/types.js.map +1 -0
- package/dist/normalizer/variant-diff.d.ts +101 -0
- package/dist/normalizer/variant-diff.d.ts.map +1 -0
- package/dist/normalizer/variant-diff.js +307 -0
- package/dist/normalizer/variant-diff.js.map +1 -0
- package/dist/plan/implementation-plan.d.ts +28 -0
- package/dist/plan/implementation-plan.d.ts.map +1 -0
- package/dist/plan/implementation-plan.js +60 -0
- package/dist/plan/implementation-plan.js.map +1 -0
- package/dist/plan/index.d.ts +3 -0
- package/dist/plan/index.d.ts.map +1 -0
- package/dist/plan/index.js +3 -0
- package/dist/plan/index.js.map +1 -0
- package/dist/plan/resolve-affected-files.d.ts +11 -0
- package/dist/plan/resolve-affected-files.d.ts.map +1 -0
- package/dist/plan/resolve-affected-files.js +73 -0
- package/dist/plan/resolve-affected-files.js.map +1 -0
- package/dist/prompt/generate-component-prompt.d.ts +6 -0
- package/dist/prompt/generate-component-prompt.d.ts.map +1 -0
- package/dist/prompt/generate-component-prompt.js +1644 -0
- package/dist/prompt/generate-component-prompt.js.map +1 -0
- package/dist/registry/ai-provider-registry.d.ts +7 -0
- package/dist/registry/ai-provider-registry.d.ts.map +1 -0
- package/dist/registry/ai-provider-registry.js +21 -0
- package/dist/registry/ai-provider-registry.js.map +1 -0
- package/dist/registry/build-component-registry.d.ts +6 -0
- package/dist/registry/build-component-registry.d.ts.map +1 -0
- package/dist/registry/build-component-registry.js +43 -0
- package/dist/registry/build-component-registry.js.map +1 -0
- package/dist/registry/build-dependency-graph.d.ts +7 -0
- package/dist/registry/build-dependency-graph.d.ts.map +1 -0
- package/dist/registry/build-dependency-graph.js +36 -0
- package/dist/registry/build-dependency-graph.js.map +1 -0
- package/dist/registry/generator-registry.d.ts +12 -0
- package/dist/registry/generator-registry.d.ts.map +1 -0
- package/dist/registry/generator-registry.js +22 -0
- package/dist/registry/generator-registry.js.map +1 -0
- package/dist/registry/index.d.ts +3 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +3 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/scaffold-plan/build-scaffold-plan.d.ts +16 -0
- package/dist/scaffold-plan/build-scaffold-plan.d.ts.map +1 -0
- package/dist/scaffold-plan/build-scaffold-plan.js +91 -0
- package/dist/scaffold-plan/build-scaffold-plan.js.map +1 -0
- package/dist/scaffold-plan/index.d.ts +2 -0
- package/dist/scaffold-plan/index.d.ts.map +1 -0
- package/dist/scaffold-plan/index.js +2 -0
- package/dist/scaffold-plan/index.js.map +1 -0
- package/dist/scanner/collect-components.d.ts +10 -0
- package/dist/scanner/collect-components.d.ts.map +1 -0
- package/dist/scanner/collect-components.js +103 -0
- package/dist/scanner/collect-components.js.map +1 -0
- package/dist/scanner/collect-instances.d.ts +6 -0
- package/dist/scanner/collect-instances.d.ts.map +1 -0
- package/dist/scanner/collect-instances.js +31 -0
- package/dist/scanner/collect-instances.js.map +1 -0
- package/dist/scanner/index.d.ts +6 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/index.js +6 -0
- package/dist/scanner/index.js.map +1 -0
- package/dist/scanner/scan-file.d.ts +6 -0
- package/dist/scanner/scan-file.d.ts.map +1 -0
- package/dist/scanner/scan-file.js +28 -0
- package/dist/scanner/scan-file.js.map +1 -0
- package/dist/scanner/traverse-nodes.d.ts +15 -0
- package/dist/scanner/traverse-nodes.d.ts.map +1 -0
- package/dist/scanner/traverse-nodes.js +18 -0
- package/dist/scanner/traverse-nodes.js.map +1 -0
- package/dist/scanner/types.d.ts +89 -0
- package/dist/scanner/types.d.ts.map +1 -0
- package/dist/scanner/types.js +2 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/snapshots/index.d.ts +6 -0
- package/dist/snapshots/index.d.ts.map +1 -0
- package/dist/snapshots/index.js +6 -0
- package/dist/snapshots/index.js.map +1 -0
- package/dist/snapshots/load-imported-tokens.d.ts +8 -0
- package/dist/snapshots/load-imported-tokens.d.ts.map +1 -0
- package/dist/snapshots/load-imported-tokens.js +27 -0
- package/dist/snapshots/load-imported-tokens.js.map +1 -0
- package/dist/snapshots/load-latest-snapshot.d.ts +3 -0
- package/dist/snapshots/load-latest-snapshot.d.ts.map +1 -0
- package/dist/snapshots/load-latest-snapshot.js +16 -0
- package/dist/snapshots/load-latest-snapshot.js.map +1 -0
- package/dist/snapshots/load-previous-snapshot.d.ts +7 -0
- package/dist/snapshots/load-previous-snapshot.d.ts.map +1 -0
- package/dist/snapshots/load-previous-snapshot.js +39 -0
- package/dist/snapshots/load-previous-snapshot.js.map +1 -0
- package/dist/snapshots/save-imported-tokens.d.ts +4 -0
- package/dist/snapshots/save-imported-tokens.d.ts.map +1 -0
- package/dist/snapshots/save-imported-tokens.js +16 -0
- package/dist/snapshots/save-imported-tokens.js.map +1 -0
- package/dist/snapshots/save-snapshot.d.ts +3 -0
- package/dist/snapshots/save-snapshot.d.ts.map +1 -0
- package/dist/snapshots/save-snapshot.js +49 -0
- package/dist/snapshots/save-snapshot.js.map +1 -0
- package/dist/test-null-safety.d.ts +2 -0
- package/dist/test-null-safety.d.ts.map +1 -0
- package/dist/test-null-safety.js +67 -0
- package/dist/test-null-safety.js.map +1 -0
- package/dist/test-regex.d.ts +2 -0
- package/dist/test-regex.d.ts.map +1 -0
- package/dist/test-regex.js +25 -0
- package/dist/test-regex.js.map +1 -0
- package/dist/test-token-resolution.d.ts +2 -0
- package/dist/test-token-resolution.d.ts.map +1 -0
- package/dist/test-token-resolution.js +54 -0
- package/dist/test-token-resolution.js.map +1 -0
- package/dist/test-typography.d.ts +2 -0
- package/dist/test-typography.d.ts.map +1 -0
- package/dist/test-typography.js +69 -0
- package/dist/test-typography.js.map +1 -0
- package/dist/tokens/adapters/generic-adapter.d.ts +13 -0
- package/dist/tokens/adapters/generic-adapter.d.ts.map +1 -0
- package/dist/tokens/adapters/generic-adapter.js +74 -0
- package/dist/tokens/adapters/generic-adapter.js.map +1 -0
- package/dist/tokens/adapters/index.d.ts +3 -0
- package/dist/tokens/adapters/index.d.ts.map +1 -0
- package/dist/tokens/adapters/index.js +3 -0
- package/dist/tokens/adapters/index.js.map +1 -0
- package/dist/tokens/adapters/ptb-adapter.d.ts +13 -0
- package/dist/tokens/adapters/ptb-adapter.d.ts.map +1 -0
- package/dist/tokens/adapters/ptb-adapter.js +13 -0
- package/dist/tokens/adapters/ptb-adapter.js.map +1 -0
- package/dist/tokens/build-token-model.d.ts +12 -0
- package/dist/tokens/build-token-model.d.ts.map +1 -0
- package/dist/tokens/build-token-model.js +50 -0
- package/dist/tokens/build-token-model.js.map +1 -0
- package/dist/tokens/classify-token-kind.d.ts +7 -0
- package/dist/tokens/classify-token-kind.d.ts.map +1 -0
- package/dist/tokens/classify-token-kind.js +24 -0
- package/dist/tokens/classify-token-kind.js.map +1 -0
- package/dist/tokens/detect-format.d.ts +6 -0
- package/dist/tokens/detect-format.d.ts.map +1 -0
- package/dist/tokens/detect-format.js +23 -0
- package/dist/tokens/detect-format.js.map +1 -0
- package/dist/tokens/import-schema.d.ts +111 -0
- package/dist/tokens/import-schema.d.ts.map +1 -0
- package/dist/tokens/import-schema.js +45 -0
- package/dist/tokens/import-schema.js.map +1 -0
- package/dist/tokens/import-tokens.d.ts +16 -0
- package/dist/tokens/import-tokens.d.ts.map +1 -0
- package/dist/tokens/import-tokens.js +40 -0
- package/dist/tokens/import-tokens.js.map +1 -0
- package/dist/tokens/index.d.ts +12 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +12 -0
- package/dist/tokens/index.js.map +1 -0
- package/dist/tokens/naming.d.ts +19 -0
- package/dist/tokens/naming.d.ts.map +1 -0
- package/dist/tokens/naming.js +27 -0
- package/dist/tokens/naming.js.map +1 -0
- package/dist/tokens/normalize-token-collections.d.ts +7 -0
- package/dist/tokens/normalize-token-collections.d.ts.map +1 -0
- package/dist/tokens/normalize-token-collections.js +68 -0
- package/dist/tokens/normalize-token-collections.js.map +1 -0
- package/dist/tokens/resolution.d.ts +7 -0
- package/dist/tokens/resolution.d.ts.map +1 -0
- package/dist/tokens/resolution.js +223 -0
- package/dist/tokens/resolution.js.map +1 -0
- package/dist/tokens/resolve-token-source.d.ts +12 -0
- package/dist/tokens/resolve-token-source.d.ts.map +1 -0
- package/dist/tokens/resolve-token-source.js +37 -0
- package/dist/tokens/resolve-token-source.js.map +1 -0
- package/dist/tokens/types.d.ts +40 -0
- package/dist/tokens/types.d.ts.map +1 -0
- package/dist/tokens/types.js +2 -0
- package/dist/tokens/types.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-component.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/check-component.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { checkComponent, gradeComponent } from "../doctor/check-component.js";
|
|
3
|
+
function ctx(overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
metadata: {
|
|
6
|
+
schemaVersion: "1", componentId: "c1", componentName: "Button",
|
|
7
|
+
sourceSnapshotId: "s1", contextHash: "h1", generatedAt: "2024-01-01T00:00:00Z",
|
|
8
|
+
dependencyContextHashes: {},
|
|
9
|
+
},
|
|
10
|
+
component: {
|
|
11
|
+
id: "c1", name: "Button",
|
|
12
|
+
kind: { value: "atomic", inferred: false },
|
|
13
|
+
category: "atoms", framework: "react",
|
|
14
|
+
description: "A clickable button",
|
|
15
|
+
},
|
|
16
|
+
variantAxes: [{ name: "size", options: ["sm", "md", "lg"], defaultValue: "md" }],
|
|
17
|
+
properties: [],
|
|
18
|
+
dependencies: [],
|
|
19
|
+
slots: [],
|
|
20
|
+
tokenBindings: [{ property: "fill", tokenId: "color-primary" }],
|
|
21
|
+
resolvedBindings: [],
|
|
22
|
+
layout: { direction: "row" },
|
|
23
|
+
size: { width: { rawValue: 120 }, height: { rawValue: 40 } },
|
|
24
|
+
renderTree: { type: "frame", name: "Button", children: [] },
|
|
25
|
+
stateContract: { controller: { kind: "hover" }, stateAxis: "state", stateDefaults: {}, overridePriority: [] },
|
|
26
|
+
prototypeInteractionContract: { interactions: [{ trigger: "click", action: "navigate" }] },
|
|
27
|
+
...overrides,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
describe("checkComponent", () => {
|
|
31
|
+
it("all-pass component: score equals maxScore", () => {
|
|
32
|
+
const result = checkComponent(ctx());
|
|
33
|
+
expect(result.score).toBe(result.maxScore);
|
|
34
|
+
expect(result.issues.every(i => i.severity === "pass")).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
it("missing layout → warning issue", () => {
|
|
37
|
+
const result = checkComponent(ctx({ layout: undefined }));
|
|
38
|
+
const issue = result.issues.find(i => i.check === "layout");
|
|
39
|
+
expect(issue?.severity).toBe("warning");
|
|
40
|
+
});
|
|
41
|
+
it("missing size → warning issue", () => {
|
|
42
|
+
const result = checkComponent(ctx({ size: undefined }));
|
|
43
|
+
const issue = result.issues.find(i => i.check === "sizing");
|
|
44
|
+
expect(issue?.severity).toBe("warning");
|
|
45
|
+
});
|
|
46
|
+
it("no token bindings → warning issue", () => {
|
|
47
|
+
const result = checkComponent(ctx({ tokenBindings: [] }));
|
|
48
|
+
const issue = result.issues.find(i => i.check === "token-bindings");
|
|
49
|
+
expect(issue?.severity).toBe("warning");
|
|
50
|
+
});
|
|
51
|
+
it("no variant axes → info issue", () => {
|
|
52
|
+
const result = checkComponent(ctx({ variantAxes: [] }));
|
|
53
|
+
const issue = result.issues.find(i => i.check === "variants");
|
|
54
|
+
expect(issue?.severity).toBe("info");
|
|
55
|
+
});
|
|
56
|
+
it("no state contract → warning issue", () => {
|
|
57
|
+
const result = checkComponent(ctx({ stateContract: undefined }));
|
|
58
|
+
const issue = result.issues.find(i => i.check === "state-contract");
|
|
59
|
+
expect(issue?.severity).toBe("warning");
|
|
60
|
+
});
|
|
61
|
+
it("no render tree → warning issue", () => {
|
|
62
|
+
const result = checkComponent(ctx({ renderTree: undefined }));
|
|
63
|
+
const issue = result.issues.find(i => i.check === "render-tree");
|
|
64
|
+
expect(issue?.severity).toBe("warning");
|
|
65
|
+
});
|
|
66
|
+
it("missing dependency → critical issue", () => {
|
|
67
|
+
const result = checkComponent(ctx({
|
|
68
|
+
dependencies: [{ name: "Icon", status: "missing" }],
|
|
69
|
+
}));
|
|
70
|
+
const issue = result.issues.find(i => i.check === "dependencies");
|
|
71
|
+
expect(issue?.severity).toBe("critical");
|
|
72
|
+
});
|
|
73
|
+
it("external dependency → info issue", () => {
|
|
74
|
+
const result = checkComponent(ctx({
|
|
75
|
+
dependencies: [{ name: "ReactDOM", status: "external" }],
|
|
76
|
+
}));
|
|
77
|
+
const issue = result.issues.find(i => i.check === "dependencies");
|
|
78
|
+
expect(issue?.severity).toBe("info");
|
|
79
|
+
});
|
|
80
|
+
it("no description → info issue", () => {
|
|
81
|
+
const result = checkComponent(ctx({ component: { id: "c1", name: "Button", kind: { value: "atomic", inferred: false }, category: "atoms", framework: "react" } }));
|
|
82
|
+
const issue = result.issues.find(i => i.check === "description");
|
|
83
|
+
expect(issue?.severity).toBe("info");
|
|
84
|
+
});
|
|
85
|
+
it("inferred kind → warning issue", () => {
|
|
86
|
+
const result = checkComponent(ctx({ component: { id: "c1", name: "Button", kind: { value: "atomic", inferred: true }, category: "atoms", framework: "react", description: "A button" } }));
|
|
87
|
+
const issue = result.issues.find(i => i.check === "kind");
|
|
88
|
+
expect(issue?.severity).toBe("warning");
|
|
89
|
+
});
|
|
90
|
+
it("score decreases with each missing field", () => {
|
|
91
|
+
const full = checkComponent(ctx());
|
|
92
|
+
const partial = checkComponent(ctx({ layout: undefined, size: undefined, tokenBindings: [] }));
|
|
93
|
+
expect(partial.score).toBe(full.score - 3);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe("gradeComponent", () => {
|
|
97
|
+
it("10/10 → healthy", () => expect(gradeComponent(10, 10)).toBe("healthy"));
|
|
98
|
+
it("9/10 → healthy (≥ 0.9)", () => expect(gradeComponent(9, 10)).toBe("healthy"));
|
|
99
|
+
it("6/10 → warning (≥ 0.6)", () => expect(gradeComponent(6, 10)).toBe("warning"));
|
|
100
|
+
it("5/10 → critical (< 0.6)", () => expect(gradeComponent(5, 10)).toBe("critical"));
|
|
101
|
+
it("0/10 → critical", () => expect(gradeComponent(0, 10)).toBe("critical"));
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=check-component.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-component.test.js","sourceRoot":"","sources":["../../src/__tests__/check-component.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare-components.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/compare-components.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { compareComponents } from "../diff/compare-components.js";
|
|
3
|
+
function comp(overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
id: "c1",
|
|
6
|
+
name: "Button",
|
|
7
|
+
kind: { value: "atomic", inferred: false },
|
|
8
|
+
variantAxes: [],
|
|
9
|
+
properties: [],
|
|
10
|
+
...overrides,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
describe("compareComponents", () => {
|
|
14
|
+
it("returns empty array when nothing changed", () => {
|
|
15
|
+
const c = comp();
|
|
16
|
+
expect(compareComponents([c], [c])).toEqual([]);
|
|
17
|
+
});
|
|
18
|
+
it("detects identical objects with different key order as unchanged (deepEqual)", () => {
|
|
19
|
+
const a = comp({ styleMetadata: { color: "red", bg: "white" } });
|
|
20
|
+
const b = comp({ styleMetadata: { bg: "white", color: "red" } });
|
|
21
|
+
expect(compareComponents([a], [b])).toHaveLength(0);
|
|
22
|
+
});
|
|
23
|
+
it("detects added component", () => {
|
|
24
|
+
const c = comp({ id: "new" });
|
|
25
|
+
const changes = compareComponents([], [c]);
|
|
26
|
+
expect(changes).toHaveLength(1);
|
|
27
|
+
expect(changes[0].changeType).toBe("added");
|
|
28
|
+
expect(changes[0].entityId).toBe("new");
|
|
29
|
+
});
|
|
30
|
+
it("detects deleted component", () => {
|
|
31
|
+
const c = comp({ id: "gone" });
|
|
32
|
+
const changes = compareComponents([c], []);
|
|
33
|
+
expect(changes).toHaveLength(1);
|
|
34
|
+
expect(changes[0].changeType).toBe("deleted");
|
|
35
|
+
expect(changes[0].entityId).toBe("gone");
|
|
36
|
+
});
|
|
37
|
+
it("only reports changed components when multiple are present", () => {
|
|
38
|
+
const stable = comp({ id: "stable" });
|
|
39
|
+
const before = comp({ id: "x", variantAxes: [] });
|
|
40
|
+
const after = comp({ id: "x", variantAxes: [{ name: "size", type: "string", options: ["sm"], defaultValue: "sm" }] });
|
|
41
|
+
const changes = compareComponents([stable, before], [stable, after]);
|
|
42
|
+
expect(changes).toHaveLength(1);
|
|
43
|
+
expect(changes[0].entityId).toBe("x");
|
|
44
|
+
});
|
|
45
|
+
describe("variant axes", () => {
|
|
46
|
+
it("detects added variant axis", () => {
|
|
47
|
+
const prev = comp({ variantAxes: [] });
|
|
48
|
+
const curr = comp({ variantAxes: [{ name: "size", type: "string", options: ["sm", "md"], defaultValue: "md" }] });
|
|
49
|
+
const [change] = compareComponents([prev], [curr]);
|
|
50
|
+
expect(change.changeType).toBe("modified");
|
|
51
|
+
expect(change.details).toContain("variant axis added: size (options: sm, md)");
|
|
52
|
+
});
|
|
53
|
+
it("detects removed variant axis", () => {
|
|
54
|
+
const prev = comp({ variantAxes: [{ name: "type", type: "string", options: ["primary"] }] });
|
|
55
|
+
const curr = comp({ variantAxes: [] });
|
|
56
|
+
const [change] = compareComponents([prev], [curr]);
|
|
57
|
+
expect(change.details).toContain("variant axis removed: type");
|
|
58
|
+
});
|
|
59
|
+
it("detects new variant option", () => {
|
|
60
|
+
const prev = comp({ variantAxes: [{ name: "size", type: "string", options: ["sm", "md"], defaultValue: "md" }] });
|
|
61
|
+
const curr = comp({ variantAxes: [{ name: "size", type: "string", options: ["sm", "md", "lg"], defaultValue: "md" }] });
|
|
62
|
+
const [change] = compareComponents([prev], [curr]);
|
|
63
|
+
expect(change.details).toContain('variant added to size: "lg"');
|
|
64
|
+
});
|
|
65
|
+
it("detects removed variant option", () => {
|
|
66
|
+
const prev = comp({ variantAxes: [{ name: "size", type: "string", options: ["sm", "md", "lg"], defaultValue: "md" }] });
|
|
67
|
+
const curr = comp({ variantAxes: [{ name: "size", type: "string", options: ["sm", "md"], defaultValue: "md" }] });
|
|
68
|
+
const [change] = compareComponents([prev], [curr]);
|
|
69
|
+
expect(change.details).toContain('variant removed from size: "lg"');
|
|
70
|
+
});
|
|
71
|
+
it("detects changed default value", () => {
|
|
72
|
+
const prev = comp({ variantAxes: [{ name: "size", type: "string", options: ["sm", "md"], defaultValue: "sm" }] });
|
|
73
|
+
const curr = comp({ variantAxes: [{ name: "size", type: "string", options: ["sm", "md"], defaultValue: "md" }] });
|
|
74
|
+
const [change] = compareComponents([prev], [curr]);
|
|
75
|
+
expect(change.details).toContain("variant default changed: size (sm -> md)");
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("properties", () => {
|
|
79
|
+
it("detects added property", () => {
|
|
80
|
+
const prev = comp({ properties: [] });
|
|
81
|
+
const curr = comp({ properties: [{ name: "disabled", type: "boolean", defaultValue: false }] });
|
|
82
|
+
const [change] = compareComponents([prev], [curr]);
|
|
83
|
+
expect(change.details).toContain("property added: disabled (boolean)");
|
|
84
|
+
});
|
|
85
|
+
it("detects removed property", () => {
|
|
86
|
+
const prev = comp({ properties: [{ name: "label", type: "text", defaultValue: "Click" }] });
|
|
87
|
+
const curr = comp({ properties: [] });
|
|
88
|
+
const [change] = compareComponents([prev], [curr]);
|
|
89
|
+
expect(change.details).toContain("property removed: label");
|
|
90
|
+
});
|
|
91
|
+
it("detects changed property type", () => {
|
|
92
|
+
const prev = comp({ properties: [{ name: "size", type: "text" }] });
|
|
93
|
+
const curr = comp({ properties: [{ name: "size", type: "enum" }] });
|
|
94
|
+
const [change] = compareComponents([prev], [curr]);
|
|
95
|
+
expect(change.details).toContain("property kind changed: size (text -> enum)");
|
|
96
|
+
});
|
|
97
|
+
it("detects added enum option", () => {
|
|
98
|
+
const prev = comp({ properties: [{ name: "variant", type: "enum", options: ["primary"] }] });
|
|
99
|
+
const curr = comp({ properties: [{ name: "variant", type: "enum", options: ["primary", "danger"] }] });
|
|
100
|
+
const [change] = compareComponents([prev], [curr]);
|
|
101
|
+
expect(change.details).toContain("option added to variant: danger");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe("layout", () => {
|
|
105
|
+
it("detects added layout", () => {
|
|
106
|
+
const prev = comp({ layout: undefined });
|
|
107
|
+
const curr = comp({ layout: { direction: "row" } });
|
|
108
|
+
const [change] = compareComponents([prev], [curr]);
|
|
109
|
+
expect(change.details).toContain("layout added: row");
|
|
110
|
+
});
|
|
111
|
+
it("detects removed layout", () => {
|
|
112
|
+
const prev = comp({ layout: { direction: "row" } });
|
|
113
|
+
const curr = comp({ layout: undefined });
|
|
114
|
+
const [change] = compareComponents([prev], [curr]);
|
|
115
|
+
expect(change.details).toContain("layout removed");
|
|
116
|
+
});
|
|
117
|
+
it("detects changed direction", () => {
|
|
118
|
+
const prev = comp({ layout: { direction: "row" } });
|
|
119
|
+
const curr = comp({ layout: { direction: "column" } });
|
|
120
|
+
const [change] = compareComponents([prev], [curr]);
|
|
121
|
+
expect(change.details).toContain("layout direction changed: row -> column");
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe("styles", () => {
|
|
125
|
+
it("detects changed style value", () => {
|
|
126
|
+
const prev = comp({ styleMetadata: { fill: "red" } });
|
|
127
|
+
const curr = comp({ styleMetadata: { fill: "blue" } });
|
|
128
|
+
const [change] = compareComponents([prev], [curr]);
|
|
129
|
+
expect(change.details).toContain("style changed: fill (red -> blue)");
|
|
130
|
+
});
|
|
131
|
+
it("detects added style key", () => {
|
|
132
|
+
const prev = comp({ styleMetadata: {} });
|
|
133
|
+
const curr = comp({ styleMetadata: { stroke: "black" } });
|
|
134
|
+
const [change] = compareComponents([prev], [curr]);
|
|
135
|
+
expect(change.details).toContain("style added: stroke (black)");
|
|
136
|
+
});
|
|
137
|
+
it("detects removed style key", () => {
|
|
138
|
+
const prev = comp({ styleMetadata: { stroke: "black" } });
|
|
139
|
+
const curr = comp({ styleMetadata: {} });
|
|
140
|
+
const [change] = compareComponents([prev], [curr]);
|
|
141
|
+
expect(change.details).toContain("style removed: stroke");
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
//# sourceMappingURL=compare-components.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compare-components.test.js","sourceRoot":"","sources":["../../src/__tests__/compare-components.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming-strategy.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/naming-strategy.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { createNamingStrategy, normalizeIconDisplayName } from "../mappings/naming-strategy.js";
|
|
3
|
+
const naming = createNamingStrategy({
|
|
4
|
+
componentCase: "PascalCase",
|
|
5
|
+
folderCase: "kebab-case",
|
|
6
|
+
tokenCase: "camelCase",
|
|
7
|
+
});
|
|
8
|
+
describe("formatComponentName (PascalCase)", () => {
|
|
9
|
+
it("capitalizes multi-word names", () => {
|
|
10
|
+
expect(naming.formatComponentName("Notification Item")).toBe("NotificationItem");
|
|
11
|
+
});
|
|
12
|
+
it("strips slashes — prevents nested directory paths", () => {
|
|
13
|
+
expect(naming.formatComponentName("Button/Primary")).toBe("ButtonPrimary");
|
|
14
|
+
});
|
|
15
|
+
it("handles already-PascalCase input", () => {
|
|
16
|
+
expect(naming.formatComponentName("Button")).toBe("Button");
|
|
17
|
+
});
|
|
18
|
+
it("returns Unknown for empty string", () => {
|
|
19
|
+
expect(naming.formatComponentName("")).toBe("Unknown");
|
|
20
|
+
});
|
|
21
|
+
it("handles numbers", () => {
|
|
22
|
+
expect(naming.formatComponentName("Icon 16")).toBe("Icon16");
|
|
23
|
+
});
|
|
24
|
+
it("strips leading/trailing special chars", () => {
|
|
25
|
+
expect(naming.formatComponentName("--button--")).toBe("Button");
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe("formatFolderName (kebab-case)", () => {
|
|
29
|
+
it("lowercases and hyphenates", () => {
|
|
30
|
+
expect(naming.formatFolderName("Notification Item")).toBe("notification-item");
|
|
31
|
+
});
|
|
32
|
+
it("strips slashes", () => {
|
|
33
|
+
expect(naming.formatFolderName("Button/Primary")).toBe("button-primary");
|
|
34
|
+
});
|
|
35
|
+
it("lowercases all-caps names", () => {
|
|
36
|
+
expect(naming.formatFolderName("BUTTON")).toBe("button");
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe("formatTokenName (camelCase)", () => {
|
|
40
|
+
it("lowercases first word, capitalizes rest", () => {
|
|
41
|
+
expect(naming.formatTokenName("Background Color")).toBe("backgroundColor");
|
|
42
|
+
});
|
|
43
|
+
it("handles single word", () => {
|
|
44
|
+
expect(naming.formatTokenName("Radius")).toBe("radius");
|
|
45
|
+
});
|
|
46
|
+
it("handles three words", () => {
|
|
47
|
+
expect(naming.formatTokenName("Border Radius Large")).toBe("borderRadiusLarge");
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("normalizeIconDisplayName", () => {
|
|
51
|
+
it("splits compound suffix: Chevrondown → Chevron Down", () => {
|
|
52
|
+
expect(normalizeIconDisplayName("Chevrondown 16x16")).toBe("Chevron Down 16x16");
|
|
53
|
+
});
|
|
54
|
+
it("splits camelCase with size suffix: ChevronDown16x16", () => {
|
|
55
|
+
expect(normalizeIconDisplayName("ChevronDown16x16")).toBe("Chevron Down 16x16");
|
|
56
|
+
});
|
|
57
|
+
it("leaves clean names unchanged", () => {
|
|
58
|
+
expect(normalizeIconDisplayName("More 20x20")).toBe("More 20x20");
|
|
59
|
+
});
|
|
60
|
+
it("handles right suffix: Arrowright", () => {
|
|
61
|
+
expect(normalizeIconDisplayName("Arrowright 24x24")).toBe("Arrow Right 24x24");
|
|
62
|
+
});
|
|
63
|
+
it("handles fill suffix", () => {
|
|
64
|
+
expect(normalizeIconDisplayName("Heartfill 16x16")).toBe("Heart Fill 16x16");
|
|
65
|
+
});
|
|
66
|
+
it("strips non-alphanumeric characters (separates words, preserves existing case)", () => {
|
|
67
|
+
// Non-alphanumeric chars become spaces; normalization doesn't capitalize separate words
|
|
68
|
+
expect(normalizeIconDisplayName("arrow--down 16x16")).toBe("arrow down 16x16");
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=naming-strategy.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming-strategy.test.js","sourceRoot":"","sources":["../../src/__tests__/naming-strategy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC"}
|
package/dist/ai/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ComponentImplementationResult, ImplementationProvider, ComponentPromptPackage } from "@calibrate-ds/shared-types";
|
|
2
|
+
/**
|
|
3
|
+
* A mock implementation provider that returns stubbed component files.
|
|
4
|
+
* This is used to verify the implementation workflow without a real AI connection.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MockImplementationProvider implements ImplementationProvider {
|
|
7
|
+
name: string;
|
|
8
|
+
implementComponent(params: {
|
|
9
|
+
componentName: string;
|
|
10
|
+
framework: string | null;
|
|
11
|
+
promptPackage: ComponentPromptPackage;
|
|
12
|
+
}): Promise<ComponentImplementationResult>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEhI;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,sBAAsB;IACrE,IAAI,SAAsB;IAEpB,kBAAkB,CAAC,MAAM,EAAE;QAC7B,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,aAAa,EAAE,sBAAsB,CAAC;KACzC,GAAG,OAAO,CAAC,6BAA6B,CAAC;CAyD7C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A mock implementation provider that returns stubbed component files.
|
|
3
|
+
* This is used to verify the implementation workflow without a real AI connection.
|
|
4
|
+
*/
|
|
5
|
+
export class MockImplementationProvider {
|
|
6
|
+
name = "Mock AI Provider";
|
|
7
|
+
async implementComponent(params) {
|
|
8
|
+
const { componentName, framework } = params;
|
|
9
|
+
// High-quality placeholder content
|
|
10
|
+
// We return paths RELATIVE to the component artifact folder root.
|
|
11
|
+
const files = [
|
|
12
|
+
{
|
|
13
|
+
path: `${componentName}.tsx`,
|
|
14
|
+
content: `// TODO: Auto-generated placeholder for ${componentName}
|
|
15
|
+
// Framework: ${framework || 'generic'}
|
|
16
|
+
// Grounded in PTB Design Context v1
|
|
17
|
+
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import styles from './${componentName}.module.css';
|
|
20
|
+
import type { ${componentName}Props } from './${componentName}.types';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* ${componentName} component implementation.
|
|
24
|
+
* [Placeholder Created by PTB Mock Provider]
|
|
25
|
+
*/
|
|
26
|
+
export const ${componentName}: React.FC<${componentName}Props> = () => {
|
|
27
|
+
return (
|
|
28
|
+
<div className={styles.root}>
|
|
29
|
+
{/* TODO: Implement based on PTB Context */}
|
|
30
|
+
${componentName} Implementation (${framework || 'General'})
|
|
31
|
+
</div>
|
|
32
|
+
);
|
|
33
|
+
};
|
|
34
|
+
`
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
path: `${componentName}.types.ts`,
|
|
38
|
+
content: `// TODO: Define props based on PTB properties/variants
|
|
39
|
+
export interface ${componentName}Props {
|
|
40
|
+
/** Add props here */
|
|
41
|
+
}
|
|
42
|
+
`
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
path: `${componentName}.module.css`,
|
|
46
|
+
content: `/* TODO: Styling for ${componentName} */
|
|
47
|
+
.root {
|
|
48
|
+
display: flex;
|
|
49
|
+
/* Follow PTB Layout: ${params.promptPackage.layout?.direction || 'unknown'} */
|
|
50
|
+
}
|
|
51
|
+
`
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
path: `index.ts`,
|
|
55
|
+
content: `export * from './${componentName}';
|
|
56
|
+
export * from './${componentName}.types';
|
|
57
|
+
`
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
return { files };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,0BAA0B;IACnC,IAAI,GAAG,kBAAkB,CAAC;IAE1B,KAAK,CAAC,kBAAkB,CAAC,MAIxB;QACG,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAE5C,mCAAmC;QACnC,kEAAkE;QAClE,MAAM,KAAK,GAAG;YACV;gBACI,IAAI,EAAE,GAAG,aAAa,MAAM;gBAC5B,OAAO,EAAE,2CAA2C,aAAa;gBACjE,SAAS,IAAI,SAAS;;;;wBAId,aAAa;gBACrB,aAAa,mBAAmB,aAAa;;;KAGxD,aAAa;;;eAGH,aAAa,cAAc,aAAa;;;;QAI/C,aAAa,oBAAoB,SAAS,IAAI,SAAS;;;;CAI9D;aACY;YACD;gBACI,IAAI,EAAE,GAAG,aAAa,WAAW;gBACjC,OAAO,EAAE;mBACN,aAAa;;;CAG/B;aACY;YACD;gBACI,IAAI,EAAE,GAAG,aAAa,aAAa;gBACnC,OAAO,EAAE,wBAAwB,aAAa;;;0BAGpC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,IAAI,SAAS;;CAE5E;aACY;YACD;gBACI,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,oBAAoB,aAAa;mBACvC,aAAa;CAC/B;aACY;SACJ,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,CAAC;IACrB,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-provider.d.ts","sourceRoot":"","sources":["../../src/ai/resolve-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AA2CpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,sBAAsB,CAwC3E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { getAIProvider, hasAIProvider } from "../registry/ai-provider-registry.js";
|
|
2
|
+
import { MockImplementationProvider } from "./provider.js";
|
|
3
|
+
const C = {
|
|
4
|
+
yellow: "\x1b[33m",
|
|
5
|
+
dim: "\x1b[2m",
|
|
6
|
+
reset: "\x1b[0m",
|
|
7
|
+
bold: "\x1b[1m",
|
|
8
|
+
};
|
|
9
|
+
// Handles both the legacy single-provider format and the new multi-provider format.
|
|
10
|
+
// Legacy: { provider, model?, accessTokenEnv?, baseUrl? }
|
|
11
|
+
// New: { active, providers: { [name]: { model?, accessTokenEnv?, baseUrl? } } }
|
|
12
|
+
function normalizeAIConfig(raw) {
|
|
13
|
+
if (!raw)
|
|
14
|
+
return null;
|
|
15
|
+
if (raw.provider && !raw.providers) {
|
|
16
|
+
const { provider, model, accessTokenEnv, baseUrl } = raw;
|
|
17
|
+
return {
|
|
18
|
+
active: provider,
|
|
19
|
+
providers: {
|
|
20
|
+
[provider]: {
|
|
21
|
+
...(model ? { model } : {}),
|
|
22
|
+
...(accessTokenEnv ? { accessTokenEnv } : {}),
|
|
23
|
+
...(baseUrl ? { baseUrl } : {}),
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return raw;
|
|
29
|
+
}
|
|
30
|
+
export function resolveAIProvider(config) {
|
|
31
|
+
const aiBlock = normalizeAIConfig(config.ai);
|
|
32
|
+
if (!aiBlock) {
|
|
33
|
+
console.log(` ${C.dim}No ai config in ptb.config.json — using placeholder files.${C.reset}`);
|
|
34
|
+
console.log(` ${C.dim}Run ptb ai setup to configure a provider.${C.reset}`);
|
|
35
|
+
return new MockImplementationProvider();
|
|
36
|
+
}
|
|
37
|
+
const providerName = aiBlock.active?.toLowerCase();
|
|
38
|
+
if (!providerName) {
|
|
39
|
+
console.warn(` ${C.yellow}⚠${C.reset} No active provider set. Run ${C.bold}ptb ai use <provider>${C.reset}.`);
|
|
40
|
+
return new MockImplementationProvider();
|
|
41
|
+
}
|
|
42
|
+
const providerEntry = aiBlock.providers[providerName] ?? {};
|
|
43
|
+
if (!hasAIProvider(providerName)) {
|
|
44
|
+
console.warn(` ${C.yellow}⚠${C.reset} AI provider "${providerName}" is not registered. ` +
|
|
45
|
+
`Falling back to placeholder files.`);
|
|
46
|
+
return new MockImplementationProvider();
|
|
47
|
+
}
|
|
48
|
+
let apiKey;
|
|
49
|
+
if (providerEntry.accessTokenEnv) {
|
|
50
|
+
apiKey = process.env[providerEntry.accessTokenEnv];
|
|
51
|
+
if (!apiKey) {
|
|
52
|
+
console.warn(` ${C.yellow}⚠${C.reset} ${C.bold}${providerEntry.accessTokenEnv}${C.reset} is not set. ` +
|
|
53
|
+
`Falling back to placeholder files.\n` +
|
|
54
|
+
` ${C.dim}To enable AI: export ${providerEntry.accessTokenEnv}=<your-key>${C.reset}`);
|
|
55
|
+
return new MockImplementationProvider();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const factory = getAIProvider(providerName);
|
|
59
|
+
return factory(apiKey, providerEntry.model, providerEntry.baseUrl);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=resolve-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-provider.js","sourceRoot":"","sources":["../../src/ai/resolve-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { LibraryBootstrapPlan } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generates a minimal, clean, professional library foundation plan.
|
|
4
|
+
* This structure is extremely brownfield-safe and agnostic to app frameworks.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateLibraryFiles(): LibraryBootstrapPlan;
|
|
7
|
+
//# sourceMappingURL=generate-library-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-library-files.d.ts","sourceRoot":"","sources":["../../src/bootstrap/generate-library-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CA4F3D"}
|