@hashicorp/kits 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/README.md +619 -0
- package/bin/kits.js +8 -0
- package/dist/adapters/base-adapter.d.ts +231 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -0
- package/dist/adapters/base-adapter.js +703 -0
- package/dist/adapters/base-adapter.js.map +1 -0
- package/dist/adapters/claude-code/detection.d.ts +63 -0
- package/dist/adapters/claude-code/detection.d.ts.map +1 -0
- package/dist/adapters/claude-code/detection.js +154 -0
- package/dist/adapters/claude-code/detection.js.map +1 -0
- package/dist/adapters/claude-code/index.d.ts +178 -0
- package/dist/adapters/claude-code/index.d.ts.map +1 -0
- package/dist/adapters/claude-code/index.js +643 -0
- package/dist/adapters/claude-code/index.js.map +1 -0
- package/dist/adapters/claude-code/installer.d.ts +161 -0
- package/dist/adapters/claude-code/installer.d.ts.map +1 -0
- package/dist/adapters/claude-code/installer.js +413 -0
- package/dist/adapters/claude-code/installer.js.map +1 -0
- package/dist/adapters/claude-code/model-mapping.d.ts +7 -0
- package/dist/adapters/claude-code/model-mapping.d.ts.map +1 -0
- package/dist/adapters/claude-code/model-mapping.js +14 -0
- package/dist/adapters/claude-code/model-mapping.js.map +1 -0
- package/dist/adapters/claude-code/tool-mapping.d.ts +18 -0
- package/dist/adapters/claude-code/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/claude-code/tool-mapping.js +31 -0
- package/dist/adapters/claude-code/tool-mapping.js.map +1 -0
- package/dist/adapters/codex/detection.d.ts +60 -0
- package/dist/adapters/codex/detection.d.ts.map +1 -0
- package/dist/adapters/codex/detection.js +146 -0
- package/dist/adapters/codex/detection.js.map +1 -0
- package/dist/adapters/codex/index.d.ts +167 -0
- package/dist/adapters/codex/index.d.ts.map +1 -0
- package/dist/adapters/codex/index.js +344 -0
- package/dist/adapters/codex/index.js.map +1 -0
- package/dist/adapters/codex/installer.d.ts +147 -0
- package/dist/adapters/codex/installer.d.ts.map +1 -0
- package/dist/adapters/codex/installer.js +229 -0
- package/dist/adapters/codex/installer.js.map +1 -0
- package/dist/adapters/codex/model-mapping.d.ts +7 -0
- package/dist/adapters/codex/model-mapping.d.ts.map +1 -0
- package/dist/adapters/codex/model-mapping.js +14 -0
- package/dist/adapters/codex/model-mapping.js.map +1 -0
- package/dist/adapters/codex/tool-mapping.d.ts +19 -0
- package/dist/adapters/codex/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/codex/tool-mapping.js +32 -0
- package/dist/adapters/codex/tool-mapping.js.map +1 -0
- package/dist/adapters/command-parser.d.ts +72 -0
- package/dist/adapters/command-parser.d.ts.map +1 -0
- package/dist/adapters/command-parser.js +222 -0
- package/dist/adapters/command-parser.js.map +1 -0
- package/dist/adapters/file-operations.d.ts +164 -0
- package/dist/adapters/file-operations.d.ts.map +1 -0
- package/dist/adapters/file-operations.js +526 -0
- package/dist/adapters/file-operations.js.map +1 -0
- package/dist/adapters/gemini-cli/detection.d.ts +57 -0
- package/dist/adapters/gemini-cli/detection.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/detection.js +143 -0
- package/dist/adapters/gemini-cli/detection.js.map +1 -0
- package/dist/adapters/gemini-cli/index.d.ts +182 -0
- package/dist/adapters/gemini-cli/index.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/index.js +598 -0
- package/dist/adapters/gemini-cli/index.js.map +1 -0
- package/dist/adapters/gemini-cli/installer.d.ts +158 -0
- package/dist/adapters/gemini-cli/installer.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/installer.js +457 -0
- package/dist/adapters/gemini-cli/installer.js.map +1 -0
- package/dist/adapters/gemini-cli/model-mapping.d.ts +7 -0
- package/dist/adapters/gemini-cli/model-mapping.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/model-mapping.js +14 -0
- package/dist/adapters/gemini-cli/model-mapping.js.map +1 -0
- package/dist/adapters/gemini-cli/tool-mapping.d.ts +18 -0
- package/dist/adapters/gemini-cli/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/gemini-cli/tool-mapping.js +31 -0
- package/dist/adapters/gemini-cli/tool-mapping.js.map +1 -0
- package/dist/adapters/github-copilot/detection.d.ts +58 -0
- package/dist/adapters/github-copilot/detection.d.ts.map +1 -0
- package/dist/adapters/github-copilot/detection.js +144 -0
- package/dist/adapters/github-copilot/detection.js.map +1 -0
- package/dist/adapters/github-copilot/index.d.ts +203 -0
- package/dist/adapters/github-copilot/index.d.ts.map +1 -0
- package/dist/adapters/github-copilot/index.js +595 -0
- package/dist/adapters/github-copilot/index.js.map +1 -0
- package/dist/adapters/github-copilot/installer.d.ts +124 -0
- package/dist/adapters/github-copilot/installer.d.ts.map +1 -0
- package/dist/adapters/github-copilot/installer.js +343 -0
- package/dist/adapters/github-copilot/installer.js.map +1 -0
- package/dist/adapters/github-copilot/model-mapping.d.ts +7 -0
- package/dist/adapters/github-copilot/model-mapping.d.ts.map +1 -0
- package/dist/adapters/github-copilot/model-mapping.js +14 -0
- package/dist/adapters/github-copilot/model-mapping.js.map +1 -0
- package/dist/adapters/github-copilot/tool-mapping.d.ts +18 -0
- package/dist/adapters/github-copilot/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/github-copilot/tool-mapping.js +31 -0
- package/dist/adapters/github-copilot/tool-mapping.js.map +1 -0
- package/dist/adapters/index.d.ts +39 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +76 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/interface.d.ts +9 -0
- package/dist/adapters/interface.d.ts.map +1 -0
- package/dist/adapters/interface.js +8 -0
- package/dist/adapters/interface.js.map +1 -0
- package/dist/adapters/model-templating.d.ts +16 -0
- package/dist/adapters/model-templating.d.ts.map +1 -0
- package/dist/adapters/model-templating.js +52 -0
- package/dist/adapters/model-templating.js.map +1 -0
- package/dist/adapters/opencode/detection.d.ts +57 -0
- package/dist/adapters/opencode/detection.d.ts.map +1 -0
- package/dist/adapters/opencode/detection.js +140 -0
- package/dist/adapters/opencode/detection.js.map +1 -0
- package/dist/adapters/opencode/index.d.ts +168 -0
- package/dist/adapters/opencode/index.d.ts.map +1 -0
- package/dist/adapters/opencode/index.js +494 -0
- package/dist/adapters/opencode/index.js.map +1 -0
- package/dist/adapters/opencode/installer.d.ts +91 -0
- package/dist/adapters/opencode/installer.d.ts.map +1 -0
- package/dist/adapters/opencode/installer.js +290 -0
- package/dist/adapters/opencode/installer.js.map +1 -0
- package/dist/adapters/opencode/model-mapping.d.ts +7 -0
- package/dist/adapters/opencode/model-mapping.d.ts.map +1 -0
- package/dist/adapters/opencode/model-mapping.js +14 -0
- package/dist/adapters/opencode/model-mapping.js.map +1 -0
- package/dist/adapters/opencode/tool-mapping.d.ts +18 -0
- package/dist/adapters/opencode/tool-mapping.d.ts.map +1 -0
- package/dist/adapters/opencode/tool-mapping.js +31 -0
- package/dist/adapters/opencode/tool-mapping.js.map +1 -0
- package/dist/adapters/registry.d.ts +154 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +223 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/skill-frontmatter.d.ts +34 -0
- package/dist/adapters/skill-frontmatter.d.ts.map +1 -0
- package/dist/adapters/skill-frontmatter.js +110 -0
- package/dist/adapters/skill-frontmatter.js.map +1 -0
- package/dist/adapters/subagent-frontmatter.d.ts +22 -0
- package/dist/adapters/subagent-frontmatter.d.ts.map +1 -0
- package/dist/adapters/subagent-frontmatter.js +80 -0
- package/dist/adapters/subagent-frontmatter.js.map +1 -0
- package/dist/adapters/tool-templating.d.ts +162 -0
- package/dist/adapters/tool-templating.d.ts.map +1 -0
- package/dist/adapters/tool-templating.js +273 -0
- package/dist/adapters/tool-templating.js.map +1 -0
- package/dist/adapters/types.d.ts +347 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +33 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +261 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/info.d.ts +20 -0
- package/dist/cli/info.d.ts.map +1 -0
- package/dist/cli/info.js +194 -0
- package/dist/cli/info.js.map +1 -0
- package/dist/cli/install.d.ts +21 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +1624 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/list.d.ts +19 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +216 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/types.d.ts +246 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +25 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/uninstall.d.ts +20 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +393 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/cli/upgrade.d.ts +20 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +372 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/cli/validate.d.ts +14 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +307 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/core/debug.d.ts +23 -0
- package/dist/core/debug.d.ts.map +1 -0
- package/dist/core/debug.js +69 -0
- package/dist/core/debug.js.map +1 -0
- package/dist/core/hook-instance.d.ts +8 -0
- package/dist/core/hook-instance.d.ts.map +1 -0
- package/dist/core/hook-instance.js +62 -0
- package/dist/core/hook-instance.js.map +1 -0
- package/dist/core/mcp-instance.d.ts +13 -0
- package/dist/core/mcp-instance.d.ts.map +1 -0
- package/dist/core/mcp-instance.js +80 -0
- package/dist/core/mcp-instance.js.map +1 -0
- package/dist/core/types.d.ts +461 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +42 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/upgrade-executor.d.ts +70 -0
- package/dist/core/upgrade-executor.d.ts.map +1 -0
- package/dist/core/upgrade-executor.js +368 -0
- package/dist/core/upgrade-executor.js.map +1 -0
- package/dist/discovery/fetcher-registry.d.ts +87 -0
- package/dist/discovery/fetcher-registry.d.ts.map +1 -0
- package/dist/discovery/fetcher-registry.js +119 -0
- package/dist/discovery/fetcher-registry.js.map +1 -0
- package/dist/discovery/git-fetcher.d.ts +61 -0
- package/dist/discovery/git-fetcher.d.ts.map +1 -0
- package/dist/discovery/git-fetcher.js +150 -0
- package/dist/discovery/git-fetcher.js.map +1 -0
- package/dist/discovery/index.d.ts +13 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +15 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/kit-scanner.d.ts +55 -0
- package/dist/discovery/kit-scanner.d.ts.map +1 -0
- package/dist/discovery/kit-scanner.js +305 -0
- package/dist/discovery/kit-scanner.js.map +1 -0
- package/dist/discovery/local-fetcher.d.ts +38 -0
- package/dist/discovery/local-fetcher.d.ts.map +1 -0
- package/dist/discovery/local-fetcher.js +100 -0
- package/dist/discovery/local-fetcher.js.map +1 -0
- package/dist/discovery/source-parser.d.ts +33 -0
- package/dist/discovery/source-parser.d.ts.map +1 -0
- package/dist/discovery/source-parser.js +136 -0
- package/dist/discovery/source-parser.js.map +1 -0
- package/dist/discovery/types.d.ts +145 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +18 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest/index.d.ts +79 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +200 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/read.d.ts +32 -0
- package/dist/manifest/read.d.ts.map +1 -0
- package/dist/manifest/read.js +88 -0
- package/dist/manifest/read.js.map +1 -0
- package/dist/manifest/types.d.ts +119 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +44 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/manifest/upgrade-check.d.ts +72 -0
- package/dist/manifest/upgrade-check.d.ts.map +1 -0
- package/dist/manifest/upgrade-check.js +215 -0
- package/dist/manifest/upgrade-check.js.map +1 -0
- package/dist/manifest/utils.d.ts +35 -0
- package/dist/manifest/utils.d.ts.map +1 -0
- package/dist/manifest/utils.js +57 -0
- package/dist/manifest/utils.js.map +1 -0
- package/dist/manifest/write.d.ts +44 -0
- package/dist/manifest/write.d.ts.map +1 -0
- package/dist/manifest/write.js +77 -0
- package/dist/manifest/write.js.map +1 -0
- package/dist/resolution/env-resolver.d.ts +81 -0
- package/dist/resolution/env-resolver.d.ts.map +1 -0
- package/dist/resolution/env-resolver.js +233 -0
- package/dist/resolution/env-resolver.js.map +1 -0
- package/dist/resolution/index.d.ts +55 -0
- package/dist/resolution/index.d.ts.map +1 -0
- package/dist/resolution/index.js +412 -0
- package/dist/resolution/index.js.map +1 -0
- package/dist/resolution/multi-kit-resolver.d.ts +43 -0
- package/dist/resolution/multi-kit-resolver.d.ts.map +1 -0
- package/dist/resolution/multi-kit-resolver.js +258 -0
- package/dist/resolution/multi-kit-resolver.js.map +1 -0
- package/dist/resolution/primitive-paths.d.ts +17 -0
- package/dist/resolution/primitive-paths.d.ts.map +1 -0
- package/dist/resolution/primitive-paths.js +59 -0
- package/dist/resolution/primitive-paths.js.map +1 -0
- package/dist/resolution/primitives-registry.d.ts +137 -0
- package/dist/resolution/primitives-registry.d.ts.map +1 -0
- package/dist/resolution/primitives-registry.js +295 -0
- package/dist/resolution/primitives-registry.js.map +1 -0
- package/dist/resolution/reference-parser.d.ts +62 -0
- package/dist/resolution/reference-parser.d.ts.map +1 -0
- package/dist/resolution/reference-parser.js +182 -0
- package/dist/resolution/reference-parser.js.map +1 -0
- package/dist/resolution/types.d.ts +77 -0
- package/dist/resolution/types.d.ts.map +1 -0
- package/dist/resolution/types.js +13 -0
- package/dist/resolution/types.js.map +1 -0
- package/dist/resolution/version-resolver.d.ts +76 -0
- package/dist/resolution/version-resolver.d.ts.map +1 -0
- package/dist/resolution/version-resolver.js +269 -0
- package/dist/resolution/version-resolver.js.map +1 -0
- package/dist/tui/compatibility.d.ts +80 -0
- package/dist/tui/compatibility.d.ts.map +1 -0
- package/dist/tui/compatibility.js +355 -0
- package/dist/tui/compatibility.js.map +1 -0
- package/dist/tui/env-prompt.d.ts +129 -0
- package/dist/tui/env-prompt.d.ts.map +1 -0
- package/dist/tui/env-prompt.js +488 -0
- package/dist/tui/env-prompt.js.map +1 -0
- package/dist/tui/harness-select.d.ts +54 -0
- package/dist/tui/harness-select.d.ts.map +1 -0
- package/dist/tui/harness-select.js +171 -0
- package/dist/tui/harness-select.js.map +1 -0
- package/dist/tui/index.d.ts +112 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +213 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/kit-select.d.ts +72 -0
- package/dist/tui/kit-select.d.ts.map +1 -0
- package/dist/tui/kit-select.js +209 -0
- package/dist/tui/kit-select.js.map +1 -0
- package/dist/tui/progress.d.ts +75 -0
- package/dist/tui/progress.d.ts.map +1 -0
- package/dist/tui/progress.js +267 -0
- package/dist/tui/progress.js.map +1 -0
- package/dist/tui/resolution.d.ts +62 -0
- package/dist/tui/resolution.d.ts.map +1 -0
- package/dist/tui/resolution.js +261 -0
- package/dist/tui/resolution.js.map +1 -0
- package/dist/tui/scope-compatibility.d.ts +139 -0
- package/dist/tui/scope-compatibility.d.ts.map +1 -0
- package/dist/tui/scope-compatibility.js +230 -0
- package/dist/tui/scope-compatibility.js.map +1 -0
- package/dist/tui/scope-select.d.ts +67 -0
- package/dist/tui/scope-select.d.ts.map +1 -0
- package/dist/tui/scope-select.js +134 -0
- package/dist/tui/scope-select.js.map +1 -0
- package/dist/tui/spinner.d.ts +114 -0
- package/dist/tui/spinner.d.ts.map +1 -0
- package/dist/tui/spinner.js +186 -0
- package/dist/tui/spinner.js.map +1 -0
- package/dist/tui/summary.d.ts +71 -0
- package/dist/tui/summary.d.ts.map +1 -0
- package/dist/tui/summary.js +343 -0
- package/dist/tui/summary.js.map +1 -0
- package/dist/tui/types.d.ts +234 -0
- package/dist/tui/types.d.ts.map +1 -0
- package/dist/tui/types.js +7 -0
- package/dist/tui/types.js.map +1 -0
- package/dist/tui/upgrade-select.d.ts +73 -0
- package/dist/tui/upgrade-select.d.ts.map +1 -0
- package/dist/tui/upgrade-select.js +324 -0
- package/dist/tui/upgrade-select.js.map +1 -0
- package/dist/validation/index.d.ts +13 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +13 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/source.d.ts +14 -0
- package/dist/validation/source.d.ts.map +1 -0
- package/dist/validation/source.js +51 -0
- package/dist/validation/source.js.map +1 -0
- package/dist/validation/utils.d.ts +29 -0
- package/dist/validation/utils.d.ts.map +1 -0
- package/dist/validation/utils.js +89 -0
- package/dist/validation/utils.js.map +1 -0
- package/dist/validation/validate-commands.d.ts +28 -0
- package/dist/validation/validate-commands.d.ts.map +1 -0
- package/dist/validation/validate-commands.js +151 -0
- package/dist/validation/validate-commands.js.map +1 -0
- package/dist/validation/validate-hooks.d.ts +13 -0
- package/dist/validation/validate-hooks.d.ts.map +1 -0
- package/dist/validation/validate-hooks.js +272 -0
- package/dist/validation/validate-hooks.js.map +1 -0
- package/dist/validation/validate-kits.d.ts +15 -0
- package/dist/validation/validate-kits.d.ts.map +1 -0
- package/dist/validation/validate-kits.js +185 -0
- package/dist/validation/validate-kits.js.map +1 -0
- package/dist/validation/validate-mcp.d.ts +12 -0
- package/dist/validation/validate-mcp.d.ts.map +1 -0
- package/dist/validation/validate-mcp.js +132 -0
- package/dist/validation/validate-mcp.js.map +1 -0
- package/dist/validation/validate-skills.d.ts +24 -0
- package/dist/validation/validate-skills.d.ts.map +1 -0
- package/dist/validation/validate-skills.js +223 -0
- package/dist/validation/validate-skills.js.map +1 -0
- package/dist/validation/validate-subagents.d.ts +27 -0
- package/dist/validation/validate-subagents.d.ts.map +1 -0
- package/dist/validation/validate-subagents.js +269 -0
- package/dist/validation/validate-subagents.js.map +1 -0
- package/package.json +91 -0
- package/schemas/command.schema.json +23 -0
- package/schemas/examples/hook-binding-valid.json +20 -0
- package/schemas/examples/hook-program-valid.json +25 -0
- package/schemas/examples/http-server-valid.json +82 -0
- package/schemas/examples/invalid-sensitive-header-no-envvar.json +16 -0
- package/schemas/examples/invalid-sensitive-header-with-value.json +17 -0
- package/schemas/examples/invalid-sensitive-var-with-default.json +19 -0
- package/schemas/examples/stdio-server-valid.json +55 -0
- package/schemas/hook-binding.schema.json +63 -0
- package/schemas/hook-program.schema.json +104 -0
- package/schemas/kit.schema.json +338 -0
- package/schemas/kits.schema.json +117 -0
- package/schemas/manifest.schema.json +200 -0
- package/schemas/mcp-server.schema.json +305 -0
- package/schemas/primitives.schema.json +118 -0
- package/schemas/skill.schema.json +96 -0
- package/schemas/subagent.schema.json +107 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitives registry loader and query interface.
|
|
3
|
+
*
|
|
4
|
+
* Provides functionality to load the primitives.json file and query
|
|
5
|
+
* primitives by type and name.
|
|
6
|
+
*/
|
|
7
|
+
import { readFile } from "node:fs/promises";
|
|
8
|
+
import { existsSync } from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
/**
|
|
11
|
+
* Error thrown when the primitives registry cannot be loaded.
|
|
12
|
+
*/
|
|
13
|
+
export class PrimitivesRegistryError extends Error {
|
|
14
|
+
errorCause;
|
|
15
|
+
constructor(message, cause) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = "PrimitivesRegistryError";
|
|
18
|
+
this.errorCause = cause;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Wrapper class for querying the primitives registry.
|
|
23
|
+
*/
|
|
24
|
+
export class PrimitivesRegistryLoader {
|
|
25
|
+
registry = null;
|
|
26
|
+
basePath;
|
|
27
|
+
constructor(basePath) {
|
|
28
|
+
this.basePath = basePath;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Loads the primitives registry from the repository.
|
|
32
|
+
*
|
|
33
|
+
* @returns The loaded primitives registry
|
|
34
|
+
* @throws PrimitivesRegistryError if loading fails
|
|
35
|
+
*/
|
|
36
|
+
async load() {
|
|
37
|
+
if (this.registry) {
|
|
38
|
+
return this.registry;
|
|
39
|
+
}
|
|
40
|
+
const registryPath = path.join(this.basePath, "primitives.json");
|
|
41
|
+
if (!existsSync(registryPath)) {
|
|
42
|
+
// Return empty registry if file doesn't exist
|
|
43
|
+
this.registry = {
|
|
44
|
+
schemaVersion: "1.0.0",
|
|
45
|
+
primitives: {},
|
|
46
|
+
};
|
|
47
|
+
return this.registry;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const content = await readFile(registryPath, "utf-8");
|
|
51
|
+
this.registry = JSON.parse(content);
|
|
52
|
+
return this.registry;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
throw new PrimitivesRegistryError(`Failed to load primitives registry from ${registryPath}`, error);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Gets the loaded registry, loading it if necessary.
|
|
60
|
+
*/
|
|
61
|
+
async getRegistry() {
|
|
62
|
+
if (!this.registry) {
|
|
63
|
+
return this.load();
|
|
64
|
+
}
|
|
65
|
+
return this.registry;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Checks if the registry has been loaded.
|
|
69
|
+
*/
|
|
70
|
+
isLoaded() {
|
|
71
|
+
return this.registry !== null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Gets the base path for resolving primitive paths.
|
|
75
|
+
*/
|
|
76
|
+
getBasePath() {
|
|
77
|
+
return this.basePath;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Gets a primitive entry by type and name.
|
|
81
|
+
*
|
|
82
|
+
* @param type - The primitive type
|
|
83
|
+
* @param name - The primitive name
|
|
84
|
+
* @returns The primitive entry or null if not found
|
|
85
|
+
*/
|
|
86
|
+
async getPrimitive(type, name) {
|
|
87
|
+
const registry = await this.getRegistry();
|
|
88
|
+
const primitivesByType = registry.primitives[type];
|
|
89
|
+
if (!primitivesByType) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
return primitivesByType[name] || null;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Gets all available versions for a primitive.
|
|
96
|
+
*
|
|
97
|
+
* @param type - The primitive type
|
|
98
|
+
* @param name - The primitive name
|
|
99
|
+
* @returns Array of version entries, sorted newest first
|
|
100
|
+
*/
|
|
101
|
+
async getVersions(type, name) {
|
|
102
|
+
const entry = await this.getPrimitive(type, name);
|
|
103
|
+
if (!entry) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
// Return versions sorted by semver (newest first)
|
|
107
|
+
return [...entry.versions].sort((a, b) => {
|
|
108
|
+
return compareVersions(b.version, a.version);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets the version strings for a primitive.
|
|
113
|
+
*
|
|
114
|
+
* @param type - The primitive type
|
|
115
|
+
* @param name - The primitive name
|
|
116
|
+
* @returns Array of version strings
|
|
117
|
+
*/
|
|
118
|
+
async getVersionStrings(type, name) {
|
|
119
|
+
const versions = await this.getVersions(type, name);
|
|
120
|
+
return versions.map((v) => v.version);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Gets the latest version for a primitive.
|
|
124
|
+
*
|
|
125
|
+
* @param type - The primitive type
|
|
126
|
+
* @param name - The primitive name
|
|
127
|
+
* @returns The latest version string or null if not found
|
|
128
|
+
*/
|
|
129
|
+
async getLatestVersion(type, name) {
|
|
130
|
+
const entry = await this.getPrimitive(type, name);
|
|
131
|
+
return entry?.latest || null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Gets a specific version entry for a primitive.
|
|
135
|
+
*
|
|
136
|
+
* @param type - The primitive type
|
|
137
|
+
* @param name - The primitive name
|
|
138
|
+
* @param version - The exact version string
|
|
139
|
+
* @returns The version entry or null if not found
|
|
140
|
+
*/
|
|
141
|
+
async getVersion(type, name, version) {
|
|
142
|
+
const entry = await this.getPrimitive(type, name);
|
|
143
|
+
if (!entry) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
return entry.versions.find((v) => v.version === version) || null;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Resolves the full path to a primitive version's content.
|
|
150
|
+
*
|
|
151
|
+
* @param type - The primitive type
|
|
152
|
+
* @param name - The primitive name
|
|
153
|
+
* @param version - The version string
|
|
154
|
+
* @returns The absolute path to the primitive content or null if not found
|
|
155
|
+
*/
|
|
156
|
+
async resolvePath(type, name, version) {
|
|
157
|
+
const entry = await this.getPrimitive(type, name);
|
|
158
|
+
if (!entry) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const versionEntry = entry.versions.find((v) => v.version === version);
|
|
162
|
+
if (!versionEntry) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
// Combine base path + primitive path + version path
|
|
166
|
+
return path.join(this.basePath, entry.path, versionEntry.path);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Gets version resolution result with full path information.
|
|
170
|
+
*
|
|
171
|
+
* @param type - The primitive type
|
|
172
|
+
* @param name - The primitive name
|
|
173
|
+
* @param version - The exact version string
|
|
174
|
+
* @returns The version resolution result or null if not found
|
|
175
|
+
*/
|
|
176
|
+
async getVersionResolution(type, name, version) {
|
|
177
|
+
const entry = await this.getPrimitive(type, name);
|
|
178
|
+
if (!entry) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const versionEntry = entry.versions.find((v) => v.version === version);
|
|
182
|
+
if (!versionEntry) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
version: versionEntry.version,
|
|
187
|
+
path: path.join(this.basePath, entry.path, versionEntry.path),
|
|
188
|
+
released: versionEntry.released,
|
|
189
|
+
changelog: versionEntry.changelog,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Checks if a primitive exists in the registry.
|
|
194
|
+
*
|
|
195
|
+
* @param type - The primitive type
|
|
196
|
+
* @param name - The primitive name
|
|
197
|
+
* @returns True if the primitive exists
|
|
198
|
+
*/
|
|
199
|
+
async hasPrimitive(type, name) {
|
|
200
|
+
const entry = await this.getPrimitive(type, name);
|
|
201
|
+
return entry !== null;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Lists all primitives of a given type.
|
|
205
|
+
*
|
|
206
|
+
* @param type - The primitive type
|
|
207
|
+
* @returns Array of primitive names
|
|
208
|
+
*/
|
|
209
|
+
async listPrimitives(type) {
|
|
210
|
+
const registry = await this.getRegistry();
|
|
211
|
+
const primitivesByType = registry.primitives[type];
|
|
212
|
+
if (!primitivesByType) {
|
|
213
|
+
return [];
|
|
214
|
+
}
|
|
215
|
+
return Object.keys(primitivesByType);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Lists all primitives across all types.
|
|
219
|
+
*
|
|
220
|
+
* @returns Map of type to primitive names
|
|
221
|
+
*/
|
|
222
|
+
async listAllPrimitives() {
|
|
223
|
+
const registry = await this.getRegistry();
|
|
224
|
+
const result = new Map();
|
|
225
|
+
for (const [type, primitives] of Object.entries(registry.primitives)) {
|
|
226
|
+
if (primitives) {
|
|
227
|
+
result.set(type, Object.keys(primitives));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Compares two semver version strings.
|
|
235
|
+
*
|
|
236
|
+
* @returns Negative if a < b, positive if a > b, zero if equal
|
|
237
|
+
*/
|
|
238
|
+
function compareVersions(a, b) {
|
|
239
|
+
const partsA = parseVersionParts(a);
|
|
240
|
+
const partsB = parseVersionParts(b);
|
|
241
|
+
// Compare major, minor, patch
|
|
242
|
+
for (let i = 0; i < 3; i++) {
|
|
243
|
+
const partA = partsA[i];
|
|
244
|
+
const partB = partsB[i];
|
|
245
|
+
if (partA !== partB) {
|
|
246
|
+
return partA - partB;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Handle prerelease comparison
|
|
250
|
+
const preA = partsA[3];
|
|
251
|
+
const preB = partsB[3];
|
|
252
|
+
// No prerelease > has prerelease
|
|
253
|
+
if (preA === "" && preB !== "")
|
|
254
|
+
return 1;
|
|
255
|
+
if (preA !== "" && preB === "")
|
|
256
|
+
return -1;
|
|
257
|
+
if (preA === preB)
|
|
258
|
+
return 0;
|
|
259
|
+
// Lexicographic comparison for prerelease
|
|
260
|
+
return preA.localeCompare(preB);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Parses version string into [major, minor, patch, prerelease] parts.
|
|
264
|
+
*/
|
|
265
|
+
function parseVersionParts(version) {
|
|
266
|
+
// Remove leading 'v' if present
|
|
267
|
+
const v = version.startsWith("v") ? version.slice(1) : version;
|
|
268
|
+
// Split on hyphen to separate prerelease
|
|
269
|
+
const splitResult = v.split("-", 2);
|
|
270
|
+
const mainPart = splitResult[0] ?? "";
|
|
271
|
+
const prerelease = splitResult[1] ?? "";
|
|
272
|
+
// Split main part into major.minor.patch
|
|
273
|
+
const parts = mainPart.split(".").map(Number);
|
|
274
|
+
return [parts[0] ?? 0, parts[1] ?? 0, parts[2] ?? 0, prerelease];
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Creates a new primitives registry loader.
|
|
278
|
+
*
|
|
279
|
+
* @param basePath - The base path to the kit repository
|
|
280
|
+
* @returns A new PrimitivesRegistryLoader instance
|
|
281
|
+
*/
|
|
282
|
+
export function createPrimitivesRegistry(basePath) {
|
|
283
|
+
return new PrimitivesRegistryLoader(basePath);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Loads a primitives registry from a repository path.
|
|
287
|
+
*
|
|
288
|
+
* @param basePath - The base path to the kit repository
|
|
289
|
+
* @returns The loaded primitives registry
|
|
290
|
+
*/
|
|
291
|
+
export async function loadPrimitivesRegistry(basePath) {
|
|
292
|
+
const loader = createPrimitivesRegistry(basePath);
|
|
293
|
+
return loader.load();
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=primitives-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives-registry.js","sourceRoot":"","sources":["../../src/resolution/primitives-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitive reference parser.
|
|
3
|
+
*
|
|
4
|
+
* Parses primitive references in the format `name@version-spec` into
|
|
5
|
+
* structured components for version resolution.
|
|
6
|
+
*/
|
|
7
|
+
import type { ParsedReference, ParsedVersionSpec } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Error thrown when a primitive reference cannot be parsed.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ReferenceParseError extends Error {
|
|
12
|
+
readonly reference: string;
|
|
13
|
+
constructor(reference: string, message: string);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parses a primitive reference string into its components.
|
|
17
|
+
*
|
|
18
|
+
* Supported formats:
|
|
19
|
+
* - `name@1.2.3` - Exact version
|
|
20
|
+
* - `name@^1.2.3` - Caret range (compatible with)
|
|
21
|
+
* - `name@~1.2.3` - Tilde range (approximately)
|
|
22
|
+
* - `name@>=1.0.0 <2.0.0` - Range
|
|
23
|
+
* - `name@1.x` or `name@1` - Wildcard
|
|
24
|
+
* - `name@latest` - Latest version
|
|
25
|
+
*
|
|
26
|
+
* @param reference - The reference string to parse (e.g., "tf-plan@^1.0.0")
|
|
27
|
+
* @returns Parsed reference with name and version spec
|
|
28
|
+
* @throws ReferenceParseError if the reference format is invalid
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseReference(reference: string): ParsedReference;
|
|
31
|
+
/**
|
|
32
|
+
* Validates a primitive name follows naming conventions.
|
|
33
|
+
*
|
|
34
|
+
* Names must be:
|
|
35
|
+
* - Lowercase kebab-case
|
|
36
|
+
* - 3-50 characters
|
|
37
|
+
* - Start with a letter
|
|
38
|
+
* - Contain only letters, numbers, and hyphens
|
|
39
|
+
*/
|
|
40
|
+
export declare function isValidPrimitiveName(name: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Validates a version specification string.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isValidVersionSpec(spec: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Parses a version specification into its type and raw value.
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseVersionSpec(spec: string): ParsedVersionSpec;
|
|
49
|
+
/**
|
|
50
|
+
* Formats a parsed reference back to string format.
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatReference(parsed: ParsedReference): string;
|
|
53
|
+
/**
|
|
54
|
+
* Extracts the primitive name from a reference string without full validation.
|
|
55
|
+
* Useful for quick lookups where full parsing isn't needed.
|
|
56
|
+
*/
|
|
57
|
+
export declare function extractName(reference: string): string | null;
|
|
58
|
+
/**
|
|
59
|
+
* Extracts the version spec from a reference string without full validation.
|
|
60
|
+
*/
|
|
61
|
+
export declare function extractVersionSpec(reference: string): string | null;
|
|
62
|
+
//# sourceMappingURL=reference-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-parser.d.ts","sourceRoot":"","sources":["../../src/resolution/reference-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EACjC,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CA0CjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAoCxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAwChE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW5D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnE"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitive reference parser.
|
|
3
|
+
*
|
|
4
|
+
* Parses primitive references in the format `name@version-spec` into
|
|
5
|
+
* structured components for version resolution.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Error thrown when a primitive reference cannot be parsed.
|
|
9
|
+
*/
|
|
10
|
+
export class ReferenceParseError extends Error {
|
|
11
|
+
reference;
|
|
12
|
+
constructor(reference, message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.reference = reference;
|
|
15
|
+
this.name = "ReferenceParseError";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Parses a primitive reference string into its components.
|
|
20
|
+
*
|
|
21
|
+
* Supported formats:
|
|
22
|
+
* - `name@1.2.3` - Exact version
|
|
23
|
+
* - `name@^1.2.3` - Caret range (compatible with)
|
|
24
|
+
* - `name@~1.2.3` - Tilde range (approximately)
|
|
25
|
+
* - `name@>=1.0.0 <2.0.0` - Range
|
|
26
|
+
* - `name@1.x` or `name@1` - Wildcard
|
|
27
|
+
* - `name@latest` - Latest version
|
|
28
|
+
*
|
|
29
|
+
* @param reference - The reference string to parse (e.g., "tf-plan@^1.0.0")
|
|
30
|
+
* @returns Parsed reference with name and version spec
|
|
31
|
+
* @throws ReferenceParseError if the reference format is invalid
|
|
32
|
+
*/
|
|
33
|
+
export function parseReference(reference) {
|
|
34
|
+
if (!reference || typeof reference !== "string") {
|
|
35
|
+
throw new ReferenceParseError(reference, "Reference must be a non-empty string");
|
|
36
|
+
}
|
|
37
|
+
const trimmed = reference.trim();
|
|
38
|
+
// Find the @ separator (last occurrence to handle edge cases)
|
|
39
|
+
const atIndex = trimmed.lastIndexOf("@");
|
|
40
|
+
if (atIndex === -1) {
|
|
41
|
+
throw new ReferenceParseError(reference, `Invalid reference format: missing "@" separator. Expected format: name@version-spec`);
|
|
42
|
+
}
|
|
43
|
+
if (atIndex === 0) {
|
|
44
|
+
throw new ReferenceParseError(reference, `Invalid reference format: missing primitive name before "@"`);
|
|
45
|
+
}
|
|
46
|
+
if (atIndex === trimmed.length - 1) {
|
|
47
|
+
throw new ReferenceParseError(reference, `Invalid reference format: missing version spec after "@"`);
|
|
48
|
+
}
|
|
49
|
+
const name = trimmed.substring(0, atIndex).trim();
|
|
50
|
+
const versionSpec = trimmed.substring(atIndex + 1).trim();
|
|
51
|
+
// Validate name
|
|
52
|
+
if (!isValidPrimitiveName(name)) {
|
|
53
|
+
throw new ReferenceParseError(reference, `Invalid primitive name "${name}": must be lowercase kebab-case (3-50 characters, letters, numbers, hyphens)`);
|
|
54
|
+
}
|
|
55
|
+
// Validate version spec
|
|
56
|
+
if (!isValidVersionSpec(versionSpec)) {
|
|
57
|
+
throw new ReferenceParseError(reference, `Invalid version spec "${versionSpec}": unrecognized format`);
|
|
58
|
+
}
|
|
59
|
+
return { name, versionSpec };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Validates a primitive name follows naming conventions.
|
|
63
|
+
*
|
|
64
|
+
* Names must be:
|
|
65
|
+
* - Lowercase kebab-case
|
|
66
|
+
* - 3-50 characters
|
|
67
|
+
* - Start with a letter
|
|
68
|
+
* - Contain only letters, numbers, and hyphens
|
|
69
|
+
*/
|
|
70
|
+
export function isValidPrimitiveName(name) {
|
|
71
|
+
if (!name || name.length < 3 || name.length > 50) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
// Lowercase kebab-case: starts with letter, contains letters, numbers, hyphens
|
|
75
|
+
const pattern = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
|
|
76
|
+
return pattern.test(name);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Validates a version specification string.
|
|
80
|
+
*/
|
|
81
|
+
export function isValidVersionSpec(spec) {
|
|
82
|
+
if (!spec)
|
|
83
|
+
return false;
|
|
84
|
+
// Check for known patterns
|
|
85
|
+
const patterns = [
|
|
86
|
+
/^latest$/i, // latest keyword
|
|
87
|
+
/^\d+\.\d+\.\d+$/, // exact: 1.2.3
|
|
88
|
+
/^\d+\.\d+\.\d+-[\w.]+$/, // exact with prerelease: 1.2.3-beta.1
|
|
89
|
+
/^\^[\d.]+/, // caret: ^1.2.3, ^1.2, ^1
|
|
90
|
+
/^~[\d.]+/, // tilde: ~1.2.3, ~1.2
|
|
91
|
+
/^>=?[\d.]+/, // range start: >=1.0.0, >1.0.0
|
|
92
|
+
/^<=?[\d.]+/, // range start: <=1.0.0, <1.0.0
|
|
93
|
+
/^\d+\.x$/, // wildcard: 1.x
|
|
94
|
+
/^\d+$/, // wildcard: 1
|
|
95
|
+
/^\d+\.\d+$/, // partial: 1.2
|
|
96
|
+
/^\*$/, // any version
|
|
97
|
+
];
|
|
98
|
+
// Check if any pattern matches
|
|
99
|
+
if (patterns.some((p) => p.test(spec))) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
// Check for range expressions (>=1.0.0 <2.0.0)
|
|
103
|
+
if (spec.includes(" ")) {
|
|
104
|
+
const parts = spec.split(/\s+/);
|
|
105
|
+
return parts.every((part) => isValidVersionSpec(part));
|
|
106
|
+
}
|
|
107
|
+
// Check for || ranges
|
|
108
|
+
if (spec.includes("||")) {
|
|
109
|
+
const parts = spec.split(/\s*\|\|\s*/);
|
|
110
|
+
return parts.every((part) => isValidVersionSpec(part));
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Parses a version specification into its type and raw value.
|
|
116
|
+
*/
|
|
117
|
+
export function parseVersionSpec(spec) {
|
|
118
|
+
const trimmed = spec.trim();
|
|
119
|
+
// Check for latest keyword
|
|
120
|
+
if (trimmed.toLowerCase() === "latest") {
|
|
121
|
+
return { type: "latest", raw: trimmed };
|
|
122
|
+
}
|
|
123
|
+
// Check for exact version (x.y.z or x.y.z-prerelease)
|
|
124
|
+
if (/^\d+\.\d+\.\d+(-[\w.]+)?$/.test(trimmed)) {
|
|
125
|
+
return { type: "exact", raw: trimmed };
|
|
126
|
+
}
|
|
127
|
+
// Check for caret range (^x.y.z)
|
|
128
|
+
if (trimmed.startsWith("^")) {
|
|
129
|
+
return { type: "caret", raw: trimmed };
|
|
130
|
+
}
|
|
131
|
+
// Check for tilde range (~x.y.z)
|
|
132
|
+
if (trimmed.startsWith("~")) {
|
|
133
|
+
return { type: "tilde", raw: trimmed };
|
|
134
|
+
}
|
|
135
|
+
// Check for range expressions (contains comparison operators or multiple parts)
|
|
136
|
+
if (trimmed.startsWith(">") ||
|
|
137
|
+
trimmed.startsWith("<") ||
|
|
138
|
+
trimmed.includes(" ") ||
|
|
139
|
+
trimmed.includes("||")) {
|
|
140
|
+
return { type: "range", raw: trimmed };
|
|
141
|
+
}
|
|
142
|
+
// Check for wildcard (1.x, 1, *, 1.2)
|
|
143
|
+
if (/^(\d+\.x|\d+|\*|\d+\.\d+)$/.test(trimmed)) {
|
|
144
|
+
return { type: "wildcard", raw: trimmed };
|
|
145
|
+
}
|
|
146
|
+
// Default to treating as a range
|
|
147
|
+
return { type: "range", raw: trimmed };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Formats a parsed reference back to string format.
|
|
151
|
+
*/
|
|
152
|
+
export function formatReference(parsed) {
|
|
153
|
+
return `${parsed.name}@${parsed.versionSpec}`;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Extracts the primitive name from a reference string without full validation.
|
|
157
|
+
* Useful for quick lookups where full parsing isn't needed.
|
|
158
|
+
*/
|
|
159
|
+
export function extractName(reference) {
|
|
160
|
+
if (!reference || typeof reference !== "string") {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
const atIndex = reference.lastIndexOf("@");
|
|
164
|
+
if (atIndex <= 0) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
return reference.substring(0, atIndex).trim();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Extracts the version spec from a reference string without full validation.
|
|
171
|
+
*/
|
|
172
|
+
export function extractVersionSpec(reference) {
|
|
173
|
+
if (!reference || typeof reference !== "string") {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const atIndex = reference.lastIndexOf("@");
|
|
177
|
+
if (atIndex === -1 || atIndex === reference.length - 1) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
return reference.substring(atIndex + 1).trim();
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=reference-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-parser.js","sourceRoot":"","sources":["../../src/resolution/reference-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitive resolution type definitions.
|
|
3
|
+
*
|
|
4
|
+
* These types support resolving primitive references from kit manifests
|
|
5
|
+
* to concrete versions in the shared primitives library.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrimitiveType, ResolvedPrimitive } from "../core/types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Parsed primitive reference.
|
|
10
|
+
*/
|
|
11
|
+
export interface ParsedReference {
|
|
12
|
+
name: string;
|
|
13
|
+
versionSpec: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Error during primitive resolution.
|
|
17
|
+
*/
|
|
18
|
+
export interface ResolutionError {
|
|
19
|
+
type: "not-found" | "no-matching-version" | "invalid-reference" | "invalid-hook-program" | "invalid-hook-binding";
|
|
20
|
+
primitive: string;
|
|
21
|
+
message: string;
|
|
22
|
+
available?: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result of resolving primitives for a single kit.
|
|
26
|
+
*/
|
|
27
|
+
export interface KitResolutionResult {
|
|
28
|
+
kit: string;
|
|
29
|
+
primitives: ResolvedPrimitive[];
|
|
30
|
+
errors: ResolutionError[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of resolving primitives across multiple kits.
|
|
34
|
+
*/
|
|
35
|
+
export interface MultiKitResolutionResult {
|
|
36
|
+
/**
|
|
37
|
+
* All resolved primitives deduplicated by type:name.
|
|
38
|
+
*/
|
|
39
|
+
allPrimitives: Map<string, ResolvedPrimitive>;
|
|
40
|
+
/**
|
|
41
|
+
* Primitives per kit (may reference same resolved primitives).
|
|
42
|
+
*/
|
|
43
|
+
kitPrimitives: Map<string, ResolvedPrimitive[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Primitives shared across multiple kits.
|
|
46
|
+
*/
|
|
47
|
+
sharedPrimitives: Map<string, string[]>;
|
|
48
|
+
/**
|
|
49
|
+
* All resolution errors.
|
|
50
|
+
*/
|
|
51
|
+
errors: ResolutionError[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Version resolution result.
|
|
55
|
+
*/
|
|
56
|
+
export interface VersionResolutionResult {
|
|
57
|
+
version: string;
|
|
58
|
+
path: string;
|
|
59
|
+
released: string;
|
|
60
|
+
changelog: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Supported version spec formats.
|
|
64
|
+
*/
|
|
65
|
+
export type VersionSpecType = "exact" | "caret" | "tilde" | "range" | "wildcard" | "latest";
|
|
66
|
+
/**
|
|
67
|
+
* Parsed version specification.
|
|
68
|
+
*/
|
|
69
|
+
export interface ParsedVersionSpec {
|
|
70
|
+
type: VersionSpecType;
|
|
71
|
+
raw: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Creates a primitive key for deduplication.
|
|
75
|
+
*/
|
|
76
|
+
export declare function createPrimitiveKey(type: PrimitiveType, name: string): string;
|
|
77
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EACA,WAAW,GACX,qBAAqB,GACrB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAE9C;;OAEG;IACH,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEhD;;OAEG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAExC;;OAEG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,UAAU,GACV,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primitive resolution type definitions.
|
|
3
|
+
*
|
|
4
|
+
* These types support resolving primitive references from kit manifests
|
|
5
|
+
* to concrete versions in the shared primitives library.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates a primitive key for deduplication.
|
|
9
|
+
*/
|
|
10
|
+
export function createPrimitiveKey(type, name) {
|
|
11
|
+
return `${type}:${name}`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/resolution/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0FH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAmB,EAAE,IAAY;IAClE,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|