@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,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version resolver for semver-based primitive version matching.
|
|
3
|
+
*
|
|
4
|
+
* Uses the semver library to resolve version specifications to concrete
|
|
5
|
+
* versions from the available version list.
|
|
6
|
+
*/
|
|
7
|
+
import type { PrimitiveVersionEntry } from "../core/types.js";
|
|
8
|
+
import type { VersionResolutionResult } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when version resolution fails.
|
|
11
|
+
*/
|
|
12
|
+
export declare class VersionResolutionError extends Error {
|
|
13
|
+
readonly spec: string;
|
|
14
|
+
readonly available: string[];
|
|
15
|
+
constructor(spec: string, available: string[], message: string);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves a version specification to the highest matching version.
|
|
19
|
+
*
|
|
20
|
+
* @param versions - Array of available version entries
|
|
21
|
+
* @param spec - The version specification (e.g., "^1.0.0", "latest", "1.2.3")
|
|
22
|
+
* @returns The highest matching version entry, or null if no match
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveVersion(versions: PrimitiveVersionEntry[], spec: string): PrimitiveVersionEntry | null;
|
|
25
|
+
/**
|
|
26
|
+
* Finds the highest version matching a semver specification.
|
|
27
|
+
*
|
|
28
|
+
* @param versions - Array of version strings
|
|
29
|
+
* @param spec - The version specification
|
|
30
|
+
* @returns The highest matching version string, or null if no match
|
|
31
|
+
*/
|
|
32
|
+
export declare function findHighestMatching(versions: string[], spec: string): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Checks if a version satisfies a version specification.
|
|
35
|
+
*
|
|
36
|
+
* @param version - The version to check
|
|
37
|
+
* @param spec - The version specification
|
|
38
|
+
* @returns True if the version satisfies the spec
|
|
39
|
+
*/
|
|
40
|
+
export declare function satisfies(version: string, spec: string): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Filters versions that satisfy a version specification.
|
|
43
|
+
*
|
|
44
|
+
* @param versions - Array of version entries
|
|
45
|
+
* @param spec - The version specification
|
|
46
|
+
* @returns Array of matching version entries, sorted newest first
|
|
47
|
+
*/
|
|
48
|
+
export declare function filterSatisfying(versions: PrimitiveVersionEntry[], spec: string): PrimitiveVersionEntry[];
|
|
49
|
+
/**
|
|
50
|
+
* Gets version information for display purposes.
|
|
51
|
+
*
|
|
52
|
+
* @param spec - The version specification
|
|
53
|
+
* @returns Human-readable description of the spec
|
|
54
|
+
*/
|
|
55
|
+
export declare function describeVersionSpec(spec: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* Compares two version specifications to determine if they might conflict.
|
|
58
|
+
*
|
|
59
|
+
* @param specA - First version specification
|
|
60
|
+
* @param specB - Second version specification
|
|
61
|
+
* @returns True if the specs could resolve to different versions
|
|
62
|
+
*/
|
|
63
|
+
export declare function specsCouldConflict(specA: string, specB: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Finds the highest version that satisfies multiple specifications.
|
|
66
|
+
*
|
|
67
|
+
* @param versions - Array of version strings
|
|
68
|
+
* @param specs - Array of version specifications
|
|
69
|
+
* @returns The highest version satisfying all specs, or null if none
|
|
70
|
+
*/
|
|
71
|
+
export declare function findHighestMatchingAll(versions: string[], specs: string[]): string | null;
|
|
72
|
+
/**
|
|
73
|
+
* Creates a version resolution result from a version entry and base path.
|
|
74
|
+
*/
|
|
75
|
+
export declare function createVersionResolution(entry: PrimitiveVersionEntry, basePath: string): VersionResolutionResult;
|
|
76
|
+
//# sourceMappingURL=version-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/version-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG1D;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;aAE7B,IAAI,EAAE,MAAM;aACZ,SAAS,EAAE,MAAM,EAAE;gBADnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EAAE,EACnC,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,qBAAqB,EAAE,EACjC,IAAI,EAAE,MAAM,GACX,qBAAqB,GAAG,IAAI,CAyB9B;AAwBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuBnF;AA4CD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAkBhE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,qBAAqB,EAAE,EACjC,IAAI,EAAE,MAAM,GACX,qBAAqB,EAAE,CAWzB;AAuBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAqBxE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAczF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,MAAM,GACf,uBAAuB,CAOzB"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version resolver for semver-based primitive version matching.
|
|
3
|
+
*
|
|
4
|
+
* Uses the semver library to resolve version specifications to concrete
|
|
5
|
+
* versions from the available version list.
|
|
6
|
+
*/
|
|
7
|
+
import * as semver from "semver";
|
|
8
|
+
import { parseVersionSpec } from "./reference-parser.js";
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when version resolution fails.
|
|
11
|
+
*/
|
|
12
|
+
export class VersionResolutionError extends Error {
|
|
13
|
+
spec;
|
|
14
|
+
available;
|
|
15
|
+
constructor(spec, available, message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.spec = spec;
|
|
18
|
+
this.available = available;
|
|
19
|
+
this.name = "VersionResolutionError";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolves a version specification to the highest matching version.
|
|
24
|
+
*
|
|
25
|
+
* @param versions - Array of available version entries
|
|
26
|
+
* @param spec - The version specification (e.g., "^1.0.0", "latest", "1.2.3")
|
|
27
|
+
* @returns The highest matching version entry, or null if no match
|
|
28
|
+
*/
|
|
29
|
+
export function resolveVersion(versions, spec) {
|
|
30
|
+
if (!versions || versions.length === 0) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
// Parse the version spec to determine type
|
|
34
|
+
const parsed = parseVersionSpec(spec);
|
|
35
|
+
// Handle "latest" keyword
|
|
36
|
+
if (parsed.type === "latest") {
|
|
37
|
+
return resolveLatest(versions);
|
|
38
|
+
}
|
|
39
|
+
// Get version strings for semver matching
|
|
40
|
+
const versionStrings = versions.map((v) => v.version);
|
|
41
|
+
// Use semver to find the highest matching version
|
|
42
|
+
const matchingVersion = findHighestMatching(versionStrings, spec);
|
|
43
|
+
if (!matchingVersion) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
// Return the full version entry
|
|
47
|
+
return versions.find((v) => v.version === matchingVersion) || null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolves "latest" to the highest available version.
|
|
51
|
+
*/
|
|
52
|
+
function resolveLatest(versions) {
|
|
53
|
+
if (versions.length === 0) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
// Filter to valid semver versions and sort
|
|
57
|
+
const validVersions = versions.filter((v) => semver.valid(v.version));
|
|
58
|
+
if (validVersions.length === 0) {
|
|
59
|
+
// Fallback to first version if none are valid semver
|
|
60
|
+
return versions[0] ?? null;
|
|
61
|
+
}
|
|
62
|
+
// Sort by semver descending and return highest
|
|
63
|
+
const sorted = validVersions.sort((a, b) => semver.rcompare(a.version, b.version));
|
|
64
|
+
return sorted[0] ?? null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Finds the highest version matching a semver specification.
|
|
68
|
+
*
|
|
69
|
+
* @param versions - Array of version strings
|
|
70
|
+
* @param spec - The version specification
|
|
71
|
+
* @returns The highest matching version string, or null if no match
|
|
72
|
+
*/
|
|
73
|
+
export function findHighestMatching(versions, spec) {
|
|
74
|
+
if (!versions || versions.length === 0) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
// Handle exact version match first
|
|
78
|
+
if (semver.valid(spec)) {
|
|
79
|
+
// Check if exact version exists
|
|
80
|
+
const exactMatch = versions.find((v) => v === spec || semver.eq(v, spec));
|
|
81
|
+
if (exactMatch) {
|
|
82
|
+
return exactMatch;
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
// Parse the range
|
|
87
|
+
const range = normalizeRange(spec);
|
|
88
|
+
if (!range) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
// Use semver.maxSatisfying to find highest matching
|
|
92
|
+
return semver.maxSatisfying(versions, range);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Normalizes a version specification to a semver range string.
|
|
96
|
+
*
|
|
97
|
+
* @param spec - The version specification
|
|
98
|
+
* @returns Normalized range string or null if invalid
|
|
99
|
+
*/
|
|
100
|
+
function normalizeRange(spec) {
|
|
101
|
+
const trimmed = spec.trim();
|
|
102
|
+
// Handle special cases
|
|
103
|
+
if (trimmed.toLowerCase() === "latest" || trimmed === "*") {
|
|
104
|
+
return "*";
|
|
105
|
+
}
|
|
106
|
+
// Try to validate as a valid range
|
|
107
|
+
const validRange = semver.validRange(trimmed);
|
|
108
|
+
if (validRange) {
|
|
109
|
+
return validRange;
|
|
110
|
+
}
|
|
111
|
+
// Handle wildcard patterns like "1.x" or "1"
|
|
112
|
+
if (/^\d+\.x$/.test(trimmed)) {
|
|
113
|
+
const major = trimmed.split(".")[0] ?? "0";
|
|
114
|
+
return `>=${major}.0.0 <${parseInt(major) + 1}.0.0`;
|
|
115
|
+
}
|
|
116
|
+
if (/^\d+$/.test(trimmed)) {
|
|
117
|
+
const major = parseInt(trimmed);
|
|
118
|
+
return `>=${major}.0.0 <${major + 1}.0.0`;
|
|
119
|
+
}
|
|
120
|
+
// Handle partial versions like "1.2"
|
|
121
|
+
if (/^\d+\.\d+$/.test(trimmed)) {
|
|
122
|
+
const parts = trimmed.split(".").map(Number);
|
|
123
|
+
const major = parts[0] ?? 0;
|
|
124
|
+
const minor = parts[1] ?? 0;
|
|
125
|
+
return `>=${major}.${minor}.0 <${major}.${minor + 1}.0`;
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Checks if a version satisfies a version specification.
|
|
131
|
+
*
|
|
132
|
+
* @param version - The version to check
|
|
133
|
+
* @param spec - The version specification
|
|
134
|
+
* @returns True if the version satisfies the spec
|
|
135
|
+
*/
|
|
136
|
+
export function satisfies(version, spec) {
|
|
137
|
+
// Handle latest
|
|
138
|
+
if (spec.toLowerCase() === "latest") {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
// Handle exact match
|
|
142
|
+
if (semver.valid(spec)) {
|
|
143
|
+
return version === spec || semver.eq(version, spec);
|
|
144
|
+
}
|
|
145
|
+
// Handle range
|
|
146
|
+
const range = normalizeRange(spec);
|
|
147
|
+
if (!range) {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
return semver.satisfies(version, range);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Filters versions that satisfy a version specification.
|
|
154
|
+
*
|
|
155
|
+
* @param versions - Array of version entries
|
|
156
|
+
* @param spec - The version specification
|
|
157
|
+
* @returns Array of matching version entries, sorted newest first
|
|
158
|
+
*/
|
|
159
|
+
export function filterSatisfying(versions, spec) {
|
|
160
|
+
// Handle latest - return all versions sorted
|
|
161
|
+
if (spec.toLowerCase() === "latest") {
|
|
162
|
+
return sortVersionsDescending(versions);
|
|
163
|
+
}
|
|
164
|
+
// Filter matching versions
|
|
165
|
+
const matching = versions.filter((v) => satisfies(v.version, spec));
|
|
166
|
+
// Sort by version descending
|
|
167
|
+
return sortVersionsDescending(matching);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Sorts version entries by version descending (newest first).
|
|
171
|
+
*/
|
|
172
|
+
function sortVersionsDescending(versions) {
|
|
173
|
+
return [...versions].sort((a, b) => {
|
|
174
|
+
const validA = semver.valid(a.version);
|
|
175
|
+
const validB = semver.valid(b.version);
|
|
176
|
+
if (validA && validB) {
|
|
177
|
+
return semver.rcompare(a.version, b.version);
|
|
178
|
+
}
|
|
179
|
+
// Non-semver versions sort after semver versions
|
|
180
|
+
if (validA)
|
|
181
|
+
return -1;
|
|
182
|
+
if (validB)
|
|
183
|
+
return 1;
|
|
184
|
+
// Lexicographic fallback
|
|
185
|
+
return b.version.localeCompare(a.version);
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Gets version information for display purposes.
|
|
190
|
+
*
|
|
191
|
+
* @param spec - The version specification
|
|
192
|
+
* @returns Human-readable description of the spec
|
|
193
|
+
*/
|
|
194
|
+
export function describeVersionSpec(spec) {
|
|
195
|
+
const parsed = parseVersionSpec(spec);
|
|
196
|
+
switch (parsed.type) {
|
|
197
|
+
case "latest":
|
|
198
|
+
return "latest available version";
|
|
199
|
+
case "exact":
|
|
200
|
+
return `exact version ${spec}`;
|
|
201
|
+
case "caret":
|
|
202
|
+
return `compatible with ${spec.slice(1)}`;
|
|
203
|
+
case "tilde":
|
|
204
|
+
return `approximately ${spec.slice(1)}`;
|
|
205
|
+
case "range":
|
|
206
|
+
return `range: ${spec}`;
|
|
207
|
+
case "wildcard":
|
|
208
|
+
return `any version matching ${spec}`;
|
|
209
|
+
default:
|
|
210
|
+
return spec;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Compares two version specifications to determine if they might conflict.
|
|
215
|
+
*
|
|
216
|
+
* @param specA - First version specification
|
|
217
|
+
* @param specB - Second version specification
|
|
218
|
+
* @returns True if the specs could resolve to different versions
|
|
219
|
+
*/
|
|
220
|
+
export function specsCouldConflict(specA, specB) {
|
|
221
|
+
// Same spec never conflicts
|
|
222
|
+
if (specA === specB) {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
// Latest matches everything
|
|
226
|
+
if (specA.toLowerCase() === "latest" || specB.toLowerCase() === "latest") {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
// Exact versions conflict if different
|
|
230
|
+
const validA = semver.valid(specA);
|
|
231
|
+
const validB = semver.valid(specB);
|
|
232
|
+
if (validA && validB) {
|
|
233
|
+
return !semver.eq(specA, specB);
|
|
234
|
+
}
|
|
235
|
+
// Ranges might overlap or not - this is a heuristic
|
|
236
|
+
// For safety, assume they could conflict
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Finds the highest version that satisfies multiple specifications.
|
|
241
|
+
*
|
|
242
|
+
* @param versions - Array of version strings
|
|
243
|
+
* @param specs - Array of version specifications
|
|
244
|
+
* @returns The highest version satisfying all specs, or null if none
|
|
245
|
+
*/
|
|
246
|
+
export function findHighestMatchingAll(versions, specs) {
|
|
247
|
+
if (specs.length === 0) {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
// Filter to versions that satisfy all specs
|
|
251
|
+
const satisfyingAll = versions.filter((v) => specs.every((spec) => satisfies(v, spec)));
|
|
252
|
+
if (satisfyingAll.length === 0) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
// Return highest
|
|
256
|
+
return semver.maxSatisfying(satisfyingAll, "*");
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Creates a version resolution result from a version entry and base path.
|
|
260
|
+
*/
|
|
261
|
+
export function createVersionResolution(entry, basePath) {
|
|
262
|
+
return {
|
|
263
|
+
version: entry.version,
|
|
264
|
+
path: basePath + "/" + entry.path,
|
|
265
|
+
released: entry.released,
|
|
266
|
+
changelog: entry.changelog,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=version-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-resolver.js","sourceRoot":"","sources":["../../src/resolution/version-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility check screen.
|
|
3
|
+
*
|
|
4
|
+
* Displays compatibility matrix between selected kits and harnesses,
|
|
5
|
+
* showing missing primitives and experimental features.
|
|
6
|
+
*/
|
|
7
|
+
import type { HarnessName, InstallationScope, PrimitiveType } from "../core/types.js";
|
|
8
|
+
import type { DiscoveredKit } from "../discovery/types.js";
|
|
9
|
+
import type { CompatibilityDisplay, CompatibilityMatrixDisplay, CompatibilityCheckResult, DetectedHarnessDisplay } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Check compatibility of a kit against a harness.
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkKitHarnessCompatibility(kit: DiscoveredKit, harness: DetectedHarnessDisplay): CompatibilityDisplay;
|
|
14
|
+
/**
|
|
15
|
+
* Build compatibility matrix for selected kits and harnesses.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildCompatibilityMatrix(kits: DiscoveredKit[], harnesses: DetectedHarnessDisplay[]): CompatibilityMatrixDisplay[];
|
|
18
|
+
/**
|
|
19
|
+
* Display compatibility matrix for a single kit.
|
|
20
|
+
*/
|
|
21
|
+
export declare function displayKitCompatibility(matrix: CompatibilityMatrixDisplay): void;
|
|
22
|
+
/**
|
|
23
|
+
* Display full compatibility matrix.
|
|
24
|
+
*/
|
|
25
|
+
export declare function displayCompatibilityMatrix(matrices: CompatibilityMatrixDisplay[], context: {
|
|
26
|
+
kits: DiscoveredKit[];
|
|
27
|
+
harnesses: DetectedHarnessDisplay[];
|
|
28
|
+
scope: InstallationScope;
|
|
29
|
+
}): void;
|
|
30
|
+
/**
|
|
31
|
+
* Check if any incompatibilities exist in the matrix.
|
|
32
|
+
*/
|
|
33
|
+
export declare function hasIncompatibilities(matrices: CompatibilityMatrixDisplay[]): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Get incompatible kit-harness pairs.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getIncompatiblePairs(matrices: CompatibilityMatrixDisplay[]): {
|
|
38
|
+
kit: string;
|
|
39
|
+
harness: HarnessName;
|
|
40
|
+
missing: PrimitiveType[];
|
|
41
|
+
}[];
|
|
42
|
+
/**
|
|
43
|
+
* Get compatible kit-harness pairs.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getCompatiblePairs(matrices: CompatibilityMatrixDisplay[]): {
|
|
46
|
+
kit: string;
|
|
47
|
+
harness: HarnessName;
|
|
48
|
+
}[];
|
|
49
|
+
/**
|
|
50
|
+
* Display incompatibility summary.
|
|
51
|
+
*/
|
|
52
|
+
export declare function displayIncompatibilitySummary(matrices: CompatibilityMatrixDisplay[], scope: InstallationScope): void;
|
|
53
|
+
/**
|
|
54
|
+
* Prompt user how to handle incompatibilities.
|
|
55
|
+
*/
|
|
56
|
+
export declare function promptIncompatibilityChoice(matrices: CompatibilityMatrixDisplay[], scope: InstallationScope): Promise<CompatibilityCheckResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Run compatibility check flow.
|
|
59
|
+
* Returns the check result and filtered compatible pairs.
|
|
60
|
+
*/
|
|
61
|
+
export declare function runCompatibilityCheck(kits: DiscoveredKit[], harnesses: DetectedHarnessDisplay[], scope: InstallationScope, options?: {
|
|
62
|
+
showMatrix?: boolean;
|
|
63
|
+
promptOnIncompatible?: boolean;
|
|
64
|
+
}): Promise<{
|
|
65
|
+
matrices: CompatibilityMatrixDisplay[];
|
|
66
|
+
result: CompatibilityCheckResult;
|
|
67
|
+
compatiblePairs: {
|
|
68
|
+
kit: string;
|
|
69
|
+
harness: HarnessName;
|
|
70
|
+
}[];
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* Get kits that are compatible with at least one selected harness.
|
|
74
|
+
*/
|
|
75
|
+
export declare function getCompatibleKits(matrices: CompatibilityMatrixDisplay[]): string[];
|
|
76
|
+
/**
|
|
77
|
+
* Get harnesses that are compatible with at least one selected kit.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getCompatibleHarnesses(matrices: CompatibilityMatrixDisplay[]): HarnessName[];
|
|
80
|
+
//# sourceMappingURL=compatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../src/tui/compatibility.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EAExB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAIpB;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,sBAAsB,GAC9B,oBAAoB,CAqBtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,aAAa,EAAE,EACrB,SAAS,EAAE,sBAAsB,EAAE,GAClC,0BAA0B,EAAE,CAc9B;AAmBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI,CA4BhF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,0BAA0B,EAAE,EACtC,OAAO,EAAE;IACP,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GACA,IAAI,CA2DN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,GAAG,OAAO,CAEpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,0BAA0B,EAAE,GACrC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,EAAE,CAgBnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,0BAA0B,EAAE,GACrC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,EAAE,CAezC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,0BAA0B,EAAE,EACtC,KAAK,EAAE,iBAAiB,GACvB,IAAI,CAsBN;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,0BAA0B,EAAE,EACtC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,wBAAwB,CAAC,CAkDnC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EAAE,EACrB,SAAS,EAAE,sBAAsB,EAAE,EACnC,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GACA,OAAO,CAAC;IACT,QAAQ,EAAE,0BAA0B,EAAE,CAAC;IACvC,MAAM,EAAE,wBAAwB,CAAC;IACjC,eAAe,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,WAAW,CAAA;KAAE,EAAE,CAAC;CAC1D,CAAC,CAkFD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,0BAA0B,EAAE,GACrC,MAAM,EAAE,CAaV;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,0BAA0B,EAAE,GACrC,WAAW,EAAE,CAYf"}
|