@tdk-landscape/tdk-cli-core 1.3.53 → 1.3.54
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/CHANGELOG.md +4 -0
- package/cli/dist/generator/extension-fetch.js +16 -9
- package/cli/package.json +1 -1
- package/package.json +16 -1
- package/.claude/skills/layer-autoresearch/SKILL.md +0 -48
- package/.claude/skills/tdk-troubleshoot/SKILL.md +0 -222
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -40
- package/.github/ISSUE_TEMPLATE/config.yml +0 -11
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -18
- package/.github/ISSUE_TEMPLATE/premium_license.yml +0 -43
- package/.github/dependabot.yml +0 -33
- package/.github/pull_request_template.md +0 -5
- package/.github/workflows/ci.yml +0 -200
- package/.github/workflows/release-binaries.yml +0 -139
- package/.github/zizmor.yml +0 -9
- package/.pre-commit-config.yaml +0 -57
- package/CODE_OF_CONDUCT.md +0 -9
- package/CONTRIBUTING.md +0 -42
- package/Makefile +0 -92
- package/SECURITY.md +0 -17
- package/benchmarks/results/container-scale-2026-09-25T20-54-49-736Z.json +0 -45
- package/benchmarks/results/container-scale-2026-09-25T21-01-20-540Z.json +0 -150
- package/benchmarks/results/container-scale-2026-09-25T21-15-01-441Z.json +0 -73
- package/benchmarks/results/container-scale-2026-09-25T22-09-01-630Z.json +0 -77
- package/benchmarks/results/container-scale-2026-09-25T22-18-28-371Z.json +0 -202
- package/cli/AGENTS.md +0 -390
- package/cli/DESIGN.md +0 -735
- package/cli/README.md +0 -292
- package/cli/biome.json +0 -40
- package/cli/dependency-graph.svg +0 -1135
- package/cli/dist/cli.d.ts +0 -3
- package/cli/dist/cli.d.ts.map +0 -1
- package/cli/dist/cli.js.map +0 -1
- package/cli/dist/commands/completion.d.ts +0 -3
- package/cli/dist/commands/completion.d.ts.map +0 -1
- package/cli/dist/commands/completion.js.map +0 -1
- package/cli/dist/commands/config.d.ts +0 -3
- package/cli/dist/commands/config.d.ts.map +0 -1
- package/cli/dist/commands/config.js.map +0 -1
- package/cli/dist/commands/doctor.d.ts +0 -19
- package/cli/dist/commands/doctor.d.ts.map +0 -1
- package/cli/dist/commands/doctor.js.map +0 -1
- package/cli/dist/commands/down.d.ts +0 -3
- package/cli/dist/commands/down.d.ts.map +0 -1
- package/cli/dist/commands/down.js.map +0 -1
- package/cli/dist/commands/help.d.ts +0 -2
- package/cli/dist/commands/help.d.ts.map +0 -1
- package/cli/dist/commands/help.js.map +0 -1
- package/cli/dist/commands/networks.d.ts +0 -3
- package/cli/dist/commands/networks.d.ts.map +0 -1
- package/cli/dist/commands/networks.js.map +0 -1
- package/cli/dist/commands/project.d.ts +0 -9
- package/cli/dist/commands/project.d.ts.map +0 -1
- package/cli/dist/commands/project.js.map +0 -1
- package/cli/dist/commands/projects.d.ts +0 -3
- package/cli/dist/commands/projects.d.ts.map +0 -1
- package/cli/dist/commands/projects.js.map +0 -1
- package/cli/dist/commands/resource.d.ts +0 -69
- package/cli/dist/commands/resource.d.ts.map +0 -1
- package/cli/dist/commands/resource.js.map +0 -1
- package/cli/dist/commands/resources.d.ts +0 -3
- package/cli/dist/commands/resources.d.ts.map +0 -1
- package/cli/dist/commands/resources.js.map +0 -1
- package/cli/dist/commands/stack.d.ts +0 -3
- package/cli/dist/commands/stack.d.ts.map +0 -1
- package/cli/dist/commands/stack.js.map +0 -1
- package/cli/dist/commands/stacks.d.ts +0 -3
- package/cli/dist/commands/stacks.d.ts.map +0 -1
- package/cli/dist/commands/stacks.js.map +0 -1
- package/cli/dist/commands/status.d.ts +0 -3
- package/cli/dist/commands/status.d.ts.map +0 -1
- package/cli/dist/commands/status.js.map +0 -1
- package/cli/dist/commands/ui.d.ts +0 -3
- package/cli/dist/commands/ui.d.ts.map +0 -1
- package/cli/dist/commands/ui.js.map +0 -1
- package/cli/dist/commands/up.d.ts +0 -3
- package/cli/dist/commands/up.d.ts.map +0 -1
- package/cli/dist/commands/up.js.map +0 -1
- package/cli/dist/commands/upgrade.d.ts +0 -14
- package/cli/dist/commands/upgrade.d.ts.map +0 -1
- package/cli/dist/commands/upgrade.js.map +0 -1
- package/cli/dist/commands/version.d.ts +0 -3
- package/cli/dist/commands/version.d.ts.map +0 -1
- package/cli/dist/commands/version.js.map +0 -1
- package/cli/dist/components/Accessible.d.ts +0 -8
- package/cli/dist/components/Accessible.d.ts.map +0 -1
- package/cli/dist/components/Accessible.js.map +0 -1
- package/cli/dist/components/BaseTooltip.d.ts +0 -4
- package/cli/dist/components/BaseTooltip.d.ts.map +0 -1
- package/cli/dist/components/BaseTooltip.js.map +0 -1
- package/cli/dist/components/DetailPanel.d.ts +0 -4
- package/cli/dist/components/DetailPanel.d.ts.map +0 -1
- package/cli/dist/components/DetailPanel.js.map +0 -1
- package/cli/dist/components/FileTree.d.ts +0 -4
- package/cli/dist/components/FileTree.d.ts.map +0 -1
- package/cli/dist/components/FileTree.js.map +0 -1
- package/cli/dist/components/ResourceSelectInput.d.ts +0 -4
- package/cli/dist/components/ResourceSelectInput.d.ts.map +0 -1
- package/cli/dist/components/ResourceSelectInput.js.map +0 -1
- package/cli/dist/components/ResourceTable.d.ts +0 -4
- package/cli/dist/components/ResourceTable.d.ts.map +0 -1
- package/cli/dist/components/ResourceTable.js.map +0 -1
- package/cli/dist/components/TabBar.d.ts +0 -4
- package/cli/dist/components/TabBar.d.ts.map +0 -1
- package/cli/dist/components/TabBar.js.map +0 -1
- package/cli/dist/components/Tooltip.d.ts +0 -12
- package/cli/dist/components/Tooltip.d.ts.map +0 -1
- package/cli/dist/components/Tooltip.js.map +0 -1
- package/cli/dist/components/index.d.ts +0 -8
- package/cli/dist/components/index.d.ts.map +0 -1
- package/cli/dist/components/index.js.map +0 -1
- package/cli/dist/config/platform-standards.d.ts +0 -159
- package/cli/dist/config/platform-standards.d.ts.map +0 -1
- package/cli/dist/config/platform-standards.js.map +0 -1
- package/cli/dist/generator/extension-fetch.d.ts +0 -25
- package/cli/dist/generator/extension-fetch.d.ts.map +0 -1
- package/cli/dist/generator/extension-fetch.js.map +0 -1
- package/cli/dist/generator/template-engine.d.ts +0 -62
- package/cli/dist/generator/template-engine.d.ts.map +0 -1
- package/cli/dist/generator/template-engine.js.map +0 -1
- package/cli/dist/index.d.ts +0 -11
- package/cli/dist/index.d.ts.map +0 -1
- package/cli/dist/index.js.map +0 -1
- package/cli/dist/types/index.d.ts +0 -257
- package/cli/dist/types/index.d.ts.map +0 -1
- package/cli/dist/types/index.js.map +0 -1
- package/cli/dist/utils/cache.d.ts +0 -19
- package/cli/dist/utils/cache.d.ts.map +0 -1
- package/cli/dist/utils/cache.js.map +0 -1
- package/cli/dist/utils/command-helpers.d.ts +0 -17
- package/cli/dist/utils/command-helpers.d.ts.map +0 -1
- package/cli/dist/utils/command-helpers.js.map +0 -1
- package/cli/dist/utils/constants.d.ts +0 -53
- package/cli/dist/utils/constants.d.ts.map +0 -1
- package/cli/dist/utils/constants.js.map +0 -1
- package/cli/dist/utils/discovery-context.d.ts +0 -4
- package/cli/dist/utils/discovery-context.d.ts.map +0 -1
- package/cli/dist/utils/discovery-context.js.map +0 -1
- package/cli/dist/utils/docker.d.ts +0 -4
- package/cli/dist/utils/docker.d.ts.map +0 -1
- package/cli/dist/utils/docker.js.map +0 -1
- package/cli/dist/utils/doctor-runtime.d.ts +0 -81
- package/cli/dist/utils/doctor-runtime.d.ts.map +0 -1
- package/cli/dist/utils/doctor-runtime.js.map +0 -1
- package/cli/dist/utils/env-validator.d.ts +0 -15
- package/cli/dist/utils/env-validator.d.ts.map +0 -1
- package/cli/dist/utils/env-validator.js.map +0 -1
- package/cli/dist/utils/errors.d.ts +0 -31
- package/cli/dist/utils/errors.d.ts.map +0 -1
- package/cli/dist/utils/errors.js.map +0 -1
- package/cli/dist/utils/file-helpers.d.ts +0 -14
- package/cli/dist/utils/file-helpers.d.ts.map +0 -1
- package/cli/dist/utils/file-helpers.js.map +0 -1
- package/cli/dist/utils/formatting.d.ts +0 -30
- package/cli/dist/utils/formatting.d.ts.map +0 -1
- package/cli/dist/utils/formatting.js.map +0 -1
- package/cli/dist/utils/paths.d.ts +0 -3
- package/cli/dist/utils/paths.d.ts.map +0 -1
- package/cli/dist/utils/paths.js.map +0 -1
- package/cli/dist/utils/port-assignment.d.ts +0 -6
- package/cli/dist/utils/port-assignment.d.ts.map +0 -1
- package/cli/dist/utils/port-assignment.js.map +0 -1
- package/cli/dist/utils/project-features.d.ts +0 -23
- package/cli/dist/utils/project-features.d.ts.map +0 -1
- package/cli/dist/utils/project-features.js.map +0 -1
- package/cli/dist/utils/project-templates.d.ts +0 -7
- package/cli/dist/utils/project-templates.d.ts.map +0 -1
- package/cli/dist/utils/project-templates.js.map +0 -1
- package/cli/dist/utils/prompt.d.ts +0 -28
- package/cli/dist/utils/prompt.d.ts.map +0 -1
- package/cli/dist/utils/prompt.js.map +0 -1
- package/cli/dist/utils/resource-features.d.ts +0 -29
- package/cli/dist/utils/resource-features.d.ts.map +0 -1
- package/cli/dist/utils/resource-features.js.map +0 -1
- package/cli/dist/utils/service-urls.d.ts +0 -30
- package/cli/dist/utils/service-urls.d.ts.map +0 -1
- package/cli/dist/utils/service-urls.js.map +0 -1
- package/cli/dist/utils/services.d.ts +0 -18
- package/cli/dist/utils/services.d.ts.map +0 -1
- package/cli/dist/utils/services.js.map +0 -1
- package/cli/dist/utils/stack-features.d.ts +0 -22
- package/cli/dist/utils/stack-features.d.ts.map +0 -1
- package/cli/dist/utils/stack-features.js.map +0 -1
- package/cli/dist/utils/tar.d.ts +0 -7
- package/cli/dist/utils/tar.d.ts.map +0 -1
- package/cli/dist/utils/tar.js.map +0 -1
- package/cli/dist/utils/tilt.d.ts +0 -20
- package/cli/dist/utils/tilt.d.ts.map +0 -1
- package/cli/dist/utils/tilt.js.map +0 -1
- package/cli/dist/utils/validation.d.ts +0 -16
- package/cli/dist/utils/validation.d.ts.map +0 -1
- package/cli/dist/utils/validation.js.map +0 -1
- package/cli/knip.json +0 -6
- package/cli/pnpm-lock.yaml +0 -2305
- package/cli/pnpm-workspace.yaml +0 -2
- package/cli/src/cli.ts +0 -72
- package/cli/src/commands/__tests__/always-enabled-infra.test.ts +0 -109
- package/cli/src/commands/__tests__/config.test.ts +0 -146
- package/cli/src/commands/__tests__/doctor.test.ts +0 -730
- package/cli/src/commands/__tests__/error-handling.test.ts +0 -78
- package/cli/src/commands/__tests__/phases-model.test.ts +0 -161
- package/cli/src/commands/__tests__/project-resource-features-e2e.test.ts +0 -187
- package/cli/src/commands/__tests__/project.test.ts +0 -68
- package/cli/src/commands/__tests__/resource.test.ts +0 -226
- package/cli/src/commands/__tests__/saas-starter-integration.test.ts +0 -194
- package/cli/src/commands/__tests__/stack-features-e2e.test.ts +0 -135
- package/cli/src/commands/__tests__/upgrade.test.ts +0 -198
- package/cli/src/commands/completion.ts +0 -300
- package/cli/src/commands/config.ts +0 -299
- package/cli/src/commands/doctor.ts +0 -926
- package/cli/src/commands/down.ts +0 -37
- package/cli/src/commands/help.ts +0 -143
- package/cli/src/commands/networks-design.md +0 -80
- package/cli/src/commands/networks.ts +0 -332
- package/cli/src/commands/project.ts +0 -456
- package/cli/src/commands/projects.ts +0 -82
- package/cli/src/commands/resource.ts +0 -652
- package/cli/src/commands/resources.ts +0 -95
- package/cli/src/commands/stack.ts +0 -128
- package/cli/src/commands/stacks.ts +0 -52
- package/cli/src/commands/status.ts +0 -88
- package/cli/src/commands/ui.tsx +0 -843
- package/cli/src/commands/up.ts +0 -169
- package/cli/src/commands/upgrade.ts +0 -628
- package/cli/src/commands/version.ts +0 -9
- package/cli/src/components/Accessible.tsx +0 -21
- package/cli/src/components/BaseTooltip.tsx +0 -66
- package/cli/src/components/DetailPanel.tsx +0 -146
- package/cli/src/components/FileTree.tsx +0 -89
- package/cli/src/components/ResourceSelectInput.tsx +0 -30
- package/cli/src/components/ResourceTable.tsx +0 -78
- package/cli/src/components/TabBar.tsx +0 -53
- package/cli/src/components/Tooltip.tsx +0 -11
- package/cli/src/components/index.ts +0 -7
- package/cli/src/config/platform-standards.test.ts +0 -11
- package/cli/src/config/platform-standards.ts +0 -196
- package/cli/src/generator/__tests__/extension-fetch.test.ts +0 -242
- package/cli/src/generator/__tests__/template-engine.test.ts +0 -70
- package/cli/src/generator/extension-fetch.ts +0 -286
- package/cli/src/generator/template-engine.ts +0 -752
- package/cli/src/index.ts +0 -86
- package/cli/src/templates.d.ts +0 -4
- package/cli/src/types/index.ts +0 -353
- package/cli/src/utils/__tests__/cache.test.ts +0 -98
- package/cli/src/utils/__tests__/formatting.test.ts +0 -170
- package/cli/src/utils/__tests__/paths.test.ts +0 -180
- package/cli/src/utils/__tests__/port-assignment.test.ts +0 -121
- package/cli/src/utils/__tests__/service-urls.test.ts +0 -174
- package/cli/src/utils/__tests__/services.test.ts +0 -531
- package/cli/src/utils/__tests__/tilt.test.ts +0 -172
- package/cli/src/utils/__tests__/validation.test.ts +0 -148
- package/cli/src/utils/cache.ts +0 -76
- package/cli/src/utils/command-helpers.ts +0 -54
- package/cli/src/utils/constants.ts +0 -130
- package/cli/src/utils/discovery-context.ts +0 -49
- package/cli/src/utils/docker.ts +0 -20
- package/cli/src/utils/doctor-runtime.ts +0 -644
- package/cli/src/utils/env-validator.ts +0 -139
- package/cli/src/utils/errors.ts +0 -168
- package/cli/src/utils/file-helpers.ts +0 -62
- package/cli/src/utils/formatting.ts +0 -215
- package/cli/src/utils/paths.ts +0 -53
- package/cli/src/utils/port-assignment.ts +0 -106
- package/cli/src/utils/project-features.ts +0 -118
- package/cli/src/utils/project-templates.ts +0 -29
- package/cli/src/utils/prompt.ts +0 -128
- package/cli/src/utils/resource-features.ts +0 -215
- package/cli/src/utils/service-urls.ts +0 -124
- package/cli/src/utils/services.ts +0 -364
- package/cli/src/utils/stack-features.ts +0 -30
- package/cli/src/utils/tar.ts +0 -24
- package/cli/src/utils/tilt.ts +0 -133
- package/cli/src/utils/validation.ts +0 -67
- package/cli/tsconfig.json +0 -25
- package/cli/tsconfig.typecheck.json +0 -8
- package/docs/FEATURES.md +0 -281
- package/docs/demo.svg +0 -217
- package/engine/docs/AUTODISCOVERY_TEST.md +0 -182
- package/engine/docs/C4-ARCHITECTURE-operations.md +0 -396
- package/engine/docs/C4-ARCHITECTURE-overview.md +0 -284
- package/engine/docs/C4-ARCHITECTURE.md +0 -17
- package/engine/docs/GOLDEN_IMAGE_INTEGRATION.md +0 -349
- package/engine/docs/MANIFEST_DRIVEN_ARCHITECTURE.md +0 -357
- package/engine/docs/README.md +0 -284
- package/install.sh +0 -19
- package/knip.json +0 -10
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/.openspec.yaml +0 -2
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/design.md +0 -102
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/proposal.md +0 -31
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-notifications/spec.md +0 -48
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-orchestration/spec.md +0 -63
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/specs/vscode-tdk-troubleshooting/spec.md +0 -56
- package/openspec/changes/add-vscode-tdk-troubleshooter-plugin/tasks.md +0 -61
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/design.md +0 -114
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/proposal.md +0 -32
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/manifest-field-migration/spec.md +0 -20
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/resource-terminology-standard/spec.md +0 -20
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/specs/stack-terminology-standard/spec.md +0 -20
- package/openspec/changes/archive/2026-04-28-rename-domain-to-stack-service-to-resource/tasks.md +0 -194
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/design.md +0 -111
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/proposal.md +0 -33
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/function-naming-alignment/spec.md +0 -12
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/optional-parameter-patterns/spec.md +0 -18
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-documentation/spec.md +0 -16
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-naming-consistency/spec.md +0 -12
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/specs/parameter-ordering-standard/spec.md +0 -12
- package/openspec/changes/archive/2026-04-28-star-files-parameter-fixes/tasks.md +0 -194
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/design.md +0 -84
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/proposal.md +0 -31
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/codebase-audit/spec.md +0 -27
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/dead-code-cleanup/spec.md +0 -27
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/test-gap-fill/spec.md +0 -23
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/specs/todo-resolution/spec.md +0 -27
- package/openspec/changes/archive/2026-04-29-scan-repo-gaps-fix/tasks.md +0 -39
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/design.md +0 -80
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/proposal.md +0 -40
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/spec.md +0 -52
- package/openspec/changes/archive/2026-06-25-landscape-consolidation/tasks.md +0 -51
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/.openspec.yaml +0 -2
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/design.md +0 -43
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/proposal.md +0 -29
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/specs/self-contained-generated-projects/spec.md +0 -67
- package/openspec/changes/archive/2026-09-17-fix-generated-stack-boot/tasks.md +0 -27
- package/openspec/changes/optimize-runtime-docker-layers/.openspec.yaml +0 -3
- package/openspec/changes/optimize-runtime-docker-layers/design.md +0 -81
- package/openspec/changes/optimize-runtime-docker-layers/proposal.md +0 -44
- package/openspec/changes/optimize-runtime-docker-layers/specs/runtime-container-footprint/spec.md +0 -79
- package/openspec/changes/optimize-runtime-docker-layers/tasks.md +0 -36
- package/openspec/changes/prioritized-cold-start/.openspec.yaml +0 -4
- package/openspec/changes/prioritized-cold-start/design.md +0 -137
- package/openspec/changes/prioritized-cold-start/proposal.md +0 -41
- package/openspec/changes/prioritized-cold-start/specs/on-demand-resource-startup/spec.md +0 -98
- package/openspec/changes/prioritized-cold-start/tasks.md +0 -69
- package/openspec/config.yaml +0 -1
- package/openspec/specs/manifest-field-migration/spec.md +0 -24
- package/openspec/specs/resource-terminology-standard/spec.md +0 -24
- package/openspec/specs/self-contained-generated-projects/spec.md +0 -67
- package/openspec/specs/stack-terminology-standard/spec.md +0 -24
- package/platform/services/platform/proxy/service.yaml +0 -14
- package/scripts/audit-codebase.sh +0 -213
- package/scripts/autoresearch/layer-eval.sh +0 -65
- package/scripts/benchmark/README.md +0 -25
- package/scripts/benchmark/container-scale.ts +0 -503
- package/scripts/benchmark/pre-release-gate.sh +0 -9
- package/scripts/install-git-hooks.sh +0 -14
- package/scripts/measure-idle-footprint.sh +0 -58
- package/scripts/record-demo.sh +0 -43
- package/scripts/release-binaries.sh +0 -97
- package/scripts/setup-pre-commit.sh +0 -33
- package/scripts/stage-npm-engine.sh +0 -36
- package/tests/tilt-engine/__init__.py +0 -5
- package/tests/tilt-engine/conftest.py +0 -182
- package/tests/tilt-engine/fixtures/appointment-frontend-service.json +0 -11
- package/tests/tilt-engine/fixtures/identity-backend-service.json +0 -12
- package/tests/tilt-engine/fixtures/invalid-service.json +0 -4
- package/tests/tilt-engine/test_agents_md_generator.py +0 -341
- package/tests/tilt-engine/test_agents_md_integration.py +0 -378
- package/tests/tilt-engine/test_cache_operations.py +0 -181
- package/tests/tilt-engine/test_cache_persistence.py +0 -142
- package/tests/tilt-engine/test_code_executor.py +0 -152
- package/tests/tilt-engine/test_code_viewer.py +0 -127
- package/tests/tilt-engine/test_compose_port_anchors.py +0 -310
- package/tests/tilt-engine/test_config_inspector.py +0 -162
- package/tests/tilt-engine/test_daemon_focus_mode.py +0 -89
- package/tests/tilt-engine/test_daemon_polling.py +0 -122
- package/tests/tilt-engine/test_daemon_registration.py +0 -115
- package/tests/tilt-engine/test_daemon_validation.py +0 -107
- package/tests/tilt-engine/test_docker_generator_bugs.py +0 -493
- package/tests/tilt-engine/test_docker_prune.py +0 -119
- package/tests/tilt-engine/test_dockerignore_path_bug.py +0 -82
- package/tests/tilt-engine/test_file_browser.py +0 -193
- package/tests/tilt-engine/test_frontend_basepath_manifest.py +0 -27
- package/tests/tilt-engine/test_health_dependencies.py +0 -130
- package/tests/tilt-engine/test_health_endpoints.py +0 -118
- package/tests/tilt-engine/test_health_tilt_ui.py +0 -85
- package/tests/tilt-engine/test_runtime_container_footprint.py +0 -162
- package/tests/tilt-engine/test_sablier_defer_start.py +0 -237
- package/tests/tilt-engine/test_safety_aliases.py +0 -84
- package/tests/tilt-engine/test_snapshot_diff.py +0 -136
- package/tests/tilt-engine/test_snapshot_persistence.py +0 -163
- package/tests/tilt-engine/test_snapshot_scanning.py +0 -123
- package/tests/tilt-engine/test_standalone_project_boot.py +0 -61
- package/tests/tilt-engine/test_standalone_traefik.py +0 -160
- package/tests/tilt-engine/test_traefik_static_wake_route.py +0 -187
package/cli/src/index.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
AutogeneratedFile,
|
|
3
|
-
BaseTooltipProps,
|
|
4
|
-
CheckResult,
|
|
5
|
-
CreatableResourceType,
|
|
6
|
-
DetailPanelProps,
|
|
7
|
-
DiscoveredResource,
|
|
8
|
-
DiscoveredStack,
|
|
9
|
-
DiscoveryContext,
|
|
10
|
-
ErrorScreenProps,
|
|
11
|
-
FileGenerationTask,
|
|
12
|
-
FileNode,
|
|
13
|
-
FileTreeProps,
|
|
14
|
-
FileType,
|
|
15
|
-
HelpPanelProps,
|
|
16
|
-
JsonArray,
|
|
17
|
-
JsonObject,
|
|
18
|
-
JsonValue,
|
|
19
|
-
LoadingScreenProps,
|
|
20
|
-
ProjectConfig,
|
|
21
|
-
ProjectDiscovery,
|
|
22
|
-
ProjectOptionalInfra,
|
|
23
|
-
ProjectPhaseDefinition,
|
|
24
|
-
ResourceConfig,
|
|
25
|
-
ResourceFileType,
|
|
26
|
-
ResourceMetadata,
|
|
27
|
-
ResourceSelectInputProps,
|
|
28
|
-
ResourceStatus,
|
|
29
|
-
ResourceTableProps,
|
|
30
|
-
ResourceType,
|
|
31
|
-
SelectItem,
|
|
32
|
-
ServiceUrl,
|
|
33
|
-
StackHealthStatus,
|
|
34
|
-
StackMetadata,
|
|
35
|
-
StatusCategory,
|
|
36
|
-
StatusValue,
|
|
37
|
-
Tab,
|
|
38
|
-
TabBarProps,
|
|
39
|
-
TabId,
|
|
40
|
-
TiltBuildStatus,
|
|
41
|
-
TiltCommandResult,
|
|
42
|
-
TiltResourceStatus,
|
|
43
|
-
TiltRuntimeStatus,
|
|
44
|
-
TooltipProps,
|
|
45
|
-
ValidationResult,
|
|
46
|
-
} from "./types/index.js";
|
|
47
|
-
|
|
48
|
-
export {
|
|
49
|
-
CREATABLE_RESOURCE_TYPES,
|
|
50
|
-
isCreatableResourceType,
|
|
51
|
-
} from "./types/index.js";
|
|
52
|
-
export {
|
|
53
|
-
Cache,
|
|
54
|
-
createCacheValidator,
|
|
55
|
-
} from "./utils/cache.js";
|
|
56
|
-
export {
|
|
57
|
-
assertValid,
|
|
58
|
-
confirmAction,
|
|
59
|
-
confirmOrCancel,
|
|
60
|
-
handleDryRun,
|
|
61
|
-
} from "./utils/command-helpers.js";
|
|
62
|
-
// Re-export discovery-context functions for resources-by-stack operations
|
|
63
|
-
export { createDiscoveryContext } from "./utils/discovery-context.js";
|
|
64
|
-
export { writeFilesWithProgress } from "./utils/file-helpers.js";
|
|
65
|
-
export { findProjectRoot } from "./utils/paths.js";
|
|
66
|
-
export {
|
|
67
|
-
checkPortStatus,
|
|
68
|
-
findAvailablePort,
|
|
69
|
-
} from "./utils/port-assignment.js";
|
|
70
|
-
export {
|
|
71
|
-
clearMetadataCache,
|
|
72
|
-
discoverResources,
|
|
73
|
-
discoverStacks,
|
|
74
|
-
getAllStacks,
|
|
75
|
-
getResourceMetadata,
|
|
76
|
-
getResourcesForStack,
|
|
77
|
-
getStackMetadata,
|
|
78
|
-
stackExists,
|
|
79
|
-
} from "./utils/services.js";
|
|
80
|
-
export {
|
|
81
|
-
buildTiltDownArgs,
|
|
82
|
-
buildTiltUpArgs,
|
|
83
|
-
getTiltfilePath,
|
|
84
|
-
isTiltAvailable,
|
|
85
|
-
runTilt,
|
|
86
|
-
} from "./utils/tilt.js";
|
package/cli/src/templates.d.ts
DELETED
package/cli/src/types/index.ts
DELETED
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
export interface DiscoveredResource {
|
|
2
|
-
name: string;
|
|
3
|
-
path: string;
|
|
4
|
-
configPath: string;
|
|
5
|
-
config?: ResourceConfig;
|
|
6
|
-
stack?: string;
|
|
7
|
-
port?: number;
|
|
8
|
-
type?: ResourceType;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface ResourceConfig {
|
|
12
|
-
appName: string;
|
|
13
|
-
appType: "backend" | "frontend" | "library" | "sdk" | "worker" | "migrator";
|
|
14
|
-
stack?: string;
|
|
15
|
-
port?: number;
|
|
16
|
-
replicas?: number;
|
|
17
|
-
runtime?: string;
|
|
18
|
-
featuresEnabled?: string[];
|
|
19
|
-
dependsOn?: string[];
|
|
20
|
-
enabled?: boolean;
|
|
21
|
-
basePath?: string;
|
|
22
|
-
backendName?: string;
|
|
23
|
-
apiPath?: string;
|
|
24
|
-
/** On-demand scaling via Sablier (Premium - requires TDK_LICENSE_KEY). See hasSablierLicense() in extension-fetch.ts. */
|
|
25
|
-
sablier?: {
|
|
26
|
-
enable?: boolean;
|
|
27
|
-
group?: string;
|
|
28
|
-
sessionDuration?: string;
|
|
29
|
-
/** Skip this resource during `tdk up` entirely; a Traefik static route wakes it on first request. Requires enable: true. */
|
|
30
|
-
deferStart?: boolean;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface DiscoveredStack {
|
|
35
|
-
name: string;
|
|
36
|
-
description?: string;
|
|
37
|
-
resources: DiscoveredResource[];
|
|
38
|
-
resourceCount: number;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export interface TiltCommandResult {
|
|
42
|
-
exitCode: number;
|
|
43
|
-
stdout: string;
|
|
44
|
-
stderr: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export type FileType = "docker" | "tilt" | "config" | "prisma" | "generated" | "unknown";
|
|
48
|
-
|
|
49
|
-
export interface AutogeneratedFile {
|
|
50
|
-
name: string;
|
|
51
|
-
path: string;
|
|
52
|
-
type: FileType;
|
|
53
|
-
size: number;
|
|
54
|
-
lastModified: string;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export type ResourceFileType = "json" | "text";
|
|
58
|
-
|
|
59
|
-
export interface FileGenerationTask {
|
|
60
|
-
type: ResourceFileType;
|
|
61
|
-
filename: string;
|
|
62
|
-
content: JsonValue;
|
|
63
|
-
description: string;
|
|
64
|
-
emoji: string;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export type ResourceType = "frontend" | "backend" | "library" | "sdk" | "worker" | "migrator";
|
|
68
|
-
|
|
69
|
-
export const CREATABLE_RESOURCE_TYPES = ["backend", "frontend", "worker"] as const;
|
|
70
|
-
|
|
71
|
-
export type CreatableResourceType = Extract<
|
|
72
|
-
ResourceType,
|
|
73
|
-
(typeof CREATABLE_RESOURCE_TYPES)[number]
|
|
74
|
-
>;
|
|
75
|
-
|
|
76
|
-
export function isCreatableResourceType(value: unknown): value is CreatableResourceType {
|
|
77
|
-
return (
|
|
78
|
-
typeof value === "string" && (CREATABLE_RESOURCE_TYPES as readonly string[]).includes(value)
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export type ResourceStatus = "ready" | "pending" | "error" | "unknown";
|
|
83
|
-
|
|
84
|
-
export interface ResourceMetadata {
|
|
85
|
-
name: string;
|
|
86
|
-
stack?: string;
|
|
87
|
-
type: ResourceType;
|
|
88
|
-
port?: number;
|
|
89
|
-
createdAt: string;
|
|
90
|
-
lastModified: string;
|
|
91
|
-
dependencies: string[];
|
|
92
|
-
hasDockerfile: boolean;
|
|
93
|
-
hasTiltfile: boolean;
|
|
94
|
-
hasDockerCompose: boolean;
|
|
95
|
-
autogeneratedFiles: AutogeneratedFile[];
|
|
96
|
-
status: ResourceStatus;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export type StackHealthStatus = "healthy" | "degraded" | "error" | "unknown";
|
|
100
|
-
|
|
101
|
-
export interface StackMetadata {
|
|
102
|
-
name: string;
|
|
103
|
-
resourceCount: number;
|
|
104
|
-
createdAt: string;
|
|
105
|
-
lastModified: string;
|
|
106
|
-
resources: ResourceMetadata[];
|
|
107
|
-
overallStatus: StackHealthStatus;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export type TiltRuntimeStatus = "running" | "pending" | "error" | "unknown";
|
|
111
|
-
|
|
112
|
-
export type TiltBuildStatus = "ok" | "error" | "in_progress" | "unknown";
|
|
113
|
-
|
|
114
|
-
export interface TiltResourceStatus {
|
|
115
|
-
runtimeStatus: TiltRuntimeStatus;
|
|
116
|
-
buildStatus: TiltBuildStatus;
|
|
117
|
-
lastBuildTime: string | null;
|
|
118
|
-
currentBuildTime: string | null;
|
|
119
|
-
available: boolean;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export type JsonValue = string | number | boolean | null | JsonArray | JsonObject;
|
|
123
|
-
|
|
124
|
-
export interface JsonArray extends Array<JsonValue> {}
|
|
125
|
-
export interface JsonObject extends Record<string, JsonValue> {}
|
|
126
|
-
|
|
127
|
-
export interface ProjectPhaseDefinition {
|
|
128
|
-
name: string;
|
|
129
|
-
description: string;
|
|
130
|
-
enabledStacks: string[];
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export interface LegacyProjectStackDefinition {
|
|
134
|
-
name: string;
|
|
135
|
-
description: string;
|
|
136
|
-
services: string[];
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export interface ProjectOptionalInfra {
|
|
140
|
-
monitoring: boolean;
|
|
141
|
-
elk: boolean;
|
|
142
|
-
debezium: boolean;
|
|
143
|
-
golden_image: boolean;
|
|
144
|
-
verdaccio: boolean;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export interface ProjectDiscovery {
|
|
148
|
-
paths: string[];
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export interface ProjectConfig {
|
|
152
|
-
version: string;
|
|
153
|
-
project: {
|
|
154
|
-
name: string;
|
|
155
|
-
version: string;
|
|
156
|
-
};
|
|
157
|
-
phases: {
|
|
158
|
-
pre_alpha: ProjectPhaseDefinition;
|
|
159
|
-
alpha: ProjectPhaseDefinition;
|
|
160
|
-
beta: ProjectPhaseDefinition;
|
|
161
|
-
out_of_scope: ProjectPhaseDefinition;
|
|
162
|
-
};
|
|
163
|
-
stacks?: {
|
|
164
|
-
pre_alpha: LegacyProjectStackDefinition;
|
|
165
|
-
alpha: LegacyProjectStackDefinition;
|
|
166
|
-
beta: LegacyProjectStackDefinition;
|
|
167
|
-
out_of_scope: LegacyProjectStackDefinition;
|
|
168
|
-
};
|
|
169
|
-
always_enabled_infra?: string[];
|
|
170
|
-
optional_infra: ProjectOptionalInfra;
|
|
171
|
-
discovery: ProjectDiscovery;
|
|
172
|
-
overrides?: Record<string, JsonValue>;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export type TabId = "overview" | "resources" | "events" | "files" | "config";
|
|
176
|
-
|
|
177
|
-
export interface Tab {
|
|
178
|
-
id: TabId;
|
|
179
|
-
label: string;
|
|
180
|
-
shortcut: string;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
export interface TabBarProps {
|
|
184
|
-
activeTab: TabId;
|
|
185
|
-
onTabChange: (tab: TabId) => void;
|
|
186
|
-
compact?: boolean;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// Reuse BaseTooltipProps instead of duplicating
|
|
190
|
-
export type TooltipProps = BaseTooltipProps;
|
|
191
|
-
|
|
192
|
-
export interface DetailPanelProps {
|
|
193
|
-
stack: DiscoveredStack | null;
|
|
194
|
-
service: DiscoveredResource | null;
|
|
195
|
-
stackMetadata?: StackMetadata | null;
|
|
196
|
-
visible: boolean;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
export interface ResourceTableProps {
|
|
200
|
-
resources: ResourceMetadata[];
|
|
201
|
-
maxWidth?: number;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export interface ResourceSelectInputProps {
|
|
205
|
-
items: SelectItem[];
|
|
206
|
-
onSelect: (item: SelectItem) => void;
|
|
207
|
-
highlightedIndex: number;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
export interface FileNode {
|
|
211
|
-
name: string;
|
|
212
|
-
path: string;
|
|
213
|
-
type: "directory" | "file";
|
|
214
|
-
fileType?: FileType;
|
|
215
|
-
children?: FileNode[];
|
|
216
|
-
size?: number;
|
|
217
|
-
lastModified?: string;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
export interface ValidationResult {
|
|
221
|
-
valid: boolean;
|
|
222
|
-
error?: string;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
export interface CheckResult {
|
|
226
|
-
name: string;
|
|
227
|
-
didPass: boolean;
|
|
228
|
-
message: string;
|
|
229
|
-
fix?: string;
|
|
230
|
-
/** Check could not run meaningfully (e.g. nothing started yet); not a failure. */
|
|
231
|
-
isSkipped?: boolean;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
export interface ServiceUrl {
|
|
235
|
-
name: string;
|
|
236
|
-
stack?: string;
|
|
237
|
-
basePath: string;
|
|
238
|
-
url: string;
|
|
239
|
-
port?: number;
|
|
240
|
-
status: "running" | "stopped" | "unknown";
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
export interface SelectItem {
|
|
244
|
-
label: string;
|
|
245
|
-
value: string;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
export type StatusValue =
|
|
249
|
-
| ResourceStatus
|
|
250
|
-
| StackHealthStatus
|
|
251
|
-
| TiltRuntimeStatus
|
|
252
|
-
| ServiceUrl["status"]
|
|
253
|
-
| "active"
|
|
254
|
-
| "failed"
|
|
255
|
-
| "critical"
|
|
256
|
-
| "stopped"
|
|
257
|
-
| "starting"
|
|
258
|
-
| "building"
|
|
259
|
-
| undefined;
|
|
260
|
-
|
|
261
|
-
export type StatusCategory = "success" | "error" | "warning" | "unknown";
|
|
262
|
-
|
|
263
|
-
export interface DiscoveryContext {
|
|
264
|
-
resources: DiscoveredResource[];
|
|
265
|
-
stacks: DiscoveredStack[];
|
|
266
|
-
stackNames: string[];
|
|
267
|
-
unassignedResources: DiscoveredResource[];
|
|
268
|
-
resourcesByStack: Map<string, DiscoveredResource[]>;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
export interface FileTreeProps {
|
|
272
|
-
nodes: FileNode[];
|
|
273
|
-
onSelect?: (node: FileNode) => void;
|
|
274
|
-
selectedPath?: string;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
export interface BaseTooltipProps {
|
|
278
|
-
content: string;
|
|
279
|
-
shortcut?: string;
|
|
280
|
-
visible: boolean;
|
|
281
|
-
maxWidth?: number;
|
|
282
|
-
wrapText?: boolean;
|
|
283
|
-
prefix?: string;
|
|
284
|
-
marginTop?: number;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
export interface LoadingScreenProps {
|
|
288
|
-
progress: number;
|
|
289
|
-
message: string;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
export interface ErrorScreenProps {
|
|
293
|
-
error: string;
|
|
294
|
-
onRetry: () => void;
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
export interface HelpPanelProps {
|
|
298
|
-
onClose: () => void;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// ============================================================================
|
|
302
|
-
// Cache Types (consolidated from utils/cache.ts)
|
|
303
|
-
// ============================================================================
|
|
304
|
-
|
|
305
|
-
export interface CacheEntry<T> {
|
|
306
|
-
value: T;
|
|
307
|
-
timestamp: number;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
export interface CacheOptions {
|
|
311
|
-
ttlMs: number;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
// ============================================================================
|
|
315
|
-
// Package Types (consolidated from utils/paths.ts)
|
|
316
|
-
// ============================================================================
|
|
317
|
-
|
|
318
|
-
export interface PackageInfo {
|
|
319
|
-
name: string;
|
|
320
|
-
version: string;
|
|
321
|
-
fullPackage: JsonObject;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// ============================================================================
|
|
325
|
-
// Port Assignment Types (consolidated from utils/port-assignment.ts)
|
|
326
|
-
// ============================================================================
|
|
327
|
-
|
|
328
|
-
export type PortAssignableResourceType = Extract<
|
|
329
|
-
CreatableResourceType,
|
|
330
|
-
"backend" | "frontend" | "worker" | "migrator"
|
|
331
|
-
>;
|
|
332
|
-
|
|
333
|
-
// ============================================================================
|
|
334
|
-
// Config Types (consolidated from commands/config.ts)
|
|
335
|
-
// ============================================================================
|
|
336
|
-
|
|
337
|
-
export type MasterConfigFileName =
|
|
338
|
-
| "TILT_TECH_STACK.star"
|
|
339
|
-
| "TILT_RESOURCE_DEFAULTS.star"
|
|
340
|
-
| "spec.master";
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* Type guard to validate filename is a known master config file.
|
|
344
|
-
* Eliminates the need for 'as MasterConfigFileName' assertion.
|
|
345
|
-
*/
|
|
346
|
-
export function isMasterConfigFileName(filename: string): filename is MasterConfigFileName {
|
|
347
|
-
const validNames: readonly string[] = [
|
|
348
|
-
"TILT_TECH_STACK.star",
|
|
349
|
-
"TILT_RESOURCE_DEFAULTS.star",
|
|
350
|
-
"spec.master",
|
|
351
|
-
];
|
|
352
|
-
return validNames.includes(filename);
|
|
353
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { Cache, createCacheValidator } from "../cache.js";
|
|
3
|
-
|
|
4
|
-
describe("Cache", () => {
|
|
5
|
-
it("should store and retrieve values", () => {
|
|
6
|
-
const cache = new Cache<string>({ ttlMs: 5000 });
|
|
7
|
-
cache.set("key1", "value1");
|
|
8
|
-
expect(cache.get("key1")).toBe("value1");
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
it("should return undefined for missing keys", () => {
|
|
12
|
-
const cache = new Cache<string>({ ttlMs: 5000 });
|
|
13
|
-
expect(cache.get("nonexistent")).toBeUndefined();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it("should report has() correctly", () => {
|
|
17
|
-
const cache = new Cache<string>({ ttlMs: 5000 });
|
|
18
|
-
cache.set("key1", "value1");
|
|
19
|
-
expect(cache.has("key1")).toBe(true);
|
|
20
|
-
expect(cache.has("nonexistent")).toBe(false);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("should delete values", () => {
|
|
24
|
-
const cache = new Cache<string>({ ttlMs: 5000 });
|
|
25
|
-
cache.set("key1", "value1");
|
|
26
|
-
cache.delete("key1");
|
|
27
|
-
expect(cache.get("key1")).toBeUndefined();
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("should clear all values", () => {
|
|
31
|
-
const cache = new Cache<string>({ ttlMs: 5000 });
|
|
32
|
-
cache.set("key1", "value1");
|
|
33
|
-
cache.set("key2", "value2");
|
|
34
|
-
cache.clear();
|
|
35
|
-
expect(cache.size()).toBe(0);
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it("should expire entries after TTL", async () => {
|
|
39
|
-
const cache = new Cache<string>({ ttlMs: 10 });
|
|
40
|
-
cache.set("key1", "value1");
|
|
41
|
-
expect(cache.has("key1")).toBe(true);
|
|
42
|
-
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
43
|
-
expect(cache.has("key1")).toBe(false);
|
|
44
|
-
expect(cache.get("key1")).toBeUndefined();
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("should return correct size", () => {
|
|
48
|
-
const cache = new Cache<string>({ ttlMs: 5000 });
|
|
49
|
-
expect(cache.size()).toBe(0);
|
|
50
|
-
cache.set("a", "1");
|
|
51
|
-
expect(cache.size()).toBe(1);
|
|
52
|
-
cache.set("b", "2");
|
|
53
|
-
expect(cache.size()).toBe(2);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it("should return all valid keys", () => {
|
|
57
|
-
const cache = new Cache<string>({ ttlMs: 5000 });
|
|
58
|
-
cache.set("a", "1");
|
|
59
|
-
cache.set("b", "2");
|
|
60
|
-
cache.set("c", "3");
|
|
61
|
-
expect(cache.keys().sort()).toEqual(["a", "b", "c"]);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
it("should not include expired keys in keys()", async () => {
|
|
65
|
-
const cache = new Cache<string>({ ttlMs: 10 });
|
|
66
|
-
cache.set("a", "1");
|
|
67
|
-
cache.set("b", "2");
|
|
68
|
-
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
69
|
-
expect(cache.keys()).toEqual([]);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
describe("createCacheValidator", () => {
|
|
74
|
-
it("should start as invalid", () => {
|
|
75
|
-
const validator = createCacheValidator(1000);
|
|
76
|
-
expect(validator.isValid()).toBe(false);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it("should be valid after markUpdated", () => {
|
|
80
|
-
const validator = createCacheValidator(1000);
|
|
81
|
-
validator.markUpdated();
|
|
82
|
-
expect(validator.isValid()).toBe(true);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("should expire after TTL", async () => {
|
|
86
|
-
const validator = createCacheValidator(10);
|
|
87
|
-
validator.markUpdated();
|
|
88
|
-
await new Promise((resolve) => setTimeout(resolve, 20));
|
|
89
|
-
expect(validator.isValid()).toBe(false);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it("should reset to invalid", () => {
|
|
93
|
-
const validator = createCacheValidator(1000);
|
|
94
|
-
validator.markUpdated();
|
|
95
|
-
validator.reset();
|
|
96
|
-
expect(validator.isValid()).toBe(false);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
formatBoxLine,
|
|
4
|
-
formatBytes,
|
|
5
|
-
formatCentered,
|
|
6
|
-
formatCount,
|
|
7
|
-
formatDate,
|
|
8
|
-
formatPadded,
|
|
9
|
-
formatShortDate,
|
|
10
|
-
getStatusColor,
|
|
11
|
-
getStatusIcon,
|
|
12
|
-
truncate,
|
|
13
|
-
} from "../formatting.js";
|
|
14
|
-
|
|
15
|
-
describe("formatCount", () => {
|
|
16
|
-
it("should format singular", () => {
|
|
17
|
-
expect(formatCount(1, "resource")).toBe("1 resource");
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it("should format plural with default suffix", () => {
|
|
21
|
-
expect(formatCount(3, "resource")).toBe("3 resources");
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("should format plural with custom plural", () => {
|
|
25
|
-
expect(formatCount(2, "index", "indices")).toBe("2 indices");
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
it("should handle zero as plural", () => {
|
|
29
|
-
expect(formatCount(0, "service")).toBe("0 services");
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
describe("formatDate", () => {
|
|
34
|
-
it("should return a string", () => {
|
|
35
|
-
const result = formatDate(new Date().toISOString());
|
|
36
|
-
expect(typeof result).toBe("string");
|
|
37
|
-
expect(result.length).toBeGreaterThan(0);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("should handle ISO date strings", () => {
|
|
41
|
-
const date = new Date("2024-01-15T10:30:00Z");
|
|
42
|
-
expect(formatDate(date.toISOString())).toBeTruthy();
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
describe("formatShortDate", () => {
|
|
47
|
-
it("should return a short date string", () => {
|
|
48
|
-
const result = formatShortDate(new Date().toISOString());
|
|
49
|
-
expect(typeof result).toBe("string");
|
|
50
|
-
expect(result.length).toBeGreaterThan(0);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
describe("getStatusColor", () => {
|
|
55
|
-
it("should return green for ready status", () => {
|
|
56
|
-
expect(getStatusColor("ready")).toBe("green");
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it("should return green for healthy status", () => {
|
|
60
|
-
expect(getStatusColor("healthy")).toBe("green");
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it("should return red for error status", () => {
|
|
64
|
-
expect(getStatusColor("error")).toBe("red");
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
it("should return yellow for pending status", () => {
|
|
68
|
-
expect(getStatusColor("pending")).toBe("yellow");
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
it("should return gray for unknown status", () => {
|
|
72
|
-
expect(getStatusColor("unknown")).toBe("gray");
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it("should handle undefined status", () => {
|
|
76
|
-
expect(getStatusColor(undefined)).toBe("gray");
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
describe("getStatusIcon", () => {
|
|
81
|
-
it("should return ✓ for ready", () => {
|
|
82
|
-
expect(getStatusIcon("ready")).toBe("✓");
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("should return ✗ for error", () => {
|
|
86
|
-
expect(getStatusIcon("error")).toBe("✗");
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it("should return ? for unknown", () => {
|
|
90
|
-
expect(getStatusIcon("unknown")).toBe("?");
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
describe("truncate", () => {
|
|
95
|
-
it("should not truncate short strings", () => {
|
|
96
|
-
expect(truncate("hello", 10)).toBe("hello");
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it("should truncate long strings with ellipsis", () => {
|
|
100
|
-
const result = truncate("hello world this is long", 10);
|
|
101
|
-
expect(result).toBe("hello w...");
|
|
102
|
-
expect(result.length).toBe(10);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it("should handle empty string", () => {
|
|
106
|
-
expect(truncate("", 5)).toBe("");
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it("should handle exactly max length", () => {
|
|
110
|
-
expect(truncate("hello", 5)).toBe("hello");
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
describe("formatBytes", () => {
|
|
115
|
-
it("should format bytes", () => {
|
|
116
|
-
expect(formatBytes(500)).toBe("500 B");
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it("should format kilobytes", () => {
|
|
120
|
-
expect(formatBytes(2048)).toBe("2.0 KB");
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
it("should format megabytes", () => {
|
|
124
|
-
expect(formatBytes(1048576)).toBe("1.0 MB");
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
it("should handle zero", () => {
|
|
128
|
-
expect(formatBytes(0)).toBe("0 B");
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
describe("formatCentered", () => {
|
|
133
|
-
it("should center text within width", () => {
|
|
134
|
-
const result = formatCentered("hi", 10);
|
|
135
|
-
expect(result.length).toBe(10);
|
|
136
|
-
expect(result).toContain("hi");
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
it("should handle text longer than width (returns as-is, no truncation)", () => {
|
|
140
|
-
const result = formatCentered("hello world", 5);
|
|
141
|
-
expect(result).toBe("hello world");
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
describe("formatPadded", () => {
|
|
146
|
-
it("should pad short text to width", () => {
|
|
147
|
-
const result = formatPadded("hi", 10);
|
|
148
|
-
expect(result.length).toBe(10);
|
|
149
|
-
expect(result).toMatch(/^hi\s+$/);
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
it("should truncate long text with ellipsis", () => {
|
|
153
|
-
const result = formatPadded("hello world", 6);
|
|
154
|
-
expect(result).toBe("hello…");
|
|
155
|
-
expect(result.length).toBe(6);
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
describe("formatBoxLine", () => {
|
|
160
|
-
it("should return default width line", () => {
|
|
161
|
-
const result = formatBoxLine();
|
|
162
|
-
expect(result.length).toBe(62);
|
|
163
|
-
expect(result).toBe("─".repeat(62));
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it("should accept custom char and width", () => {
|
|
167
|
-
const result = formatBoxLine("=", 10);
|
|
168
|
-
expect(result).toBe("=".repeat(10));
|
|
169
|
-
});
|
|
170
|
-
});
|