@sk8metal/michi-cli 0.14.1 → 0.19.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/CHANGELOG.md +268 -2
- package/README.md +27 -2
- package/dist/scripts/config/config-schema.d.ts +5 -333
- package/dist/scripts/config/config-schema.d.ts.map +1 -1
- package/dist/scripts/config/config-schema.js +6 -233
- package/dist/scripts/config/config-schema.js.map +1 -1
- package/dist/scripts/config-global.d.ts.map +1 -1
- package/dist/scripts/config-global.js +3 -2
- package/dist/scripts/config-global.js.map +1 -1
- package/dist/scripts/confluence-sync.d.ts +5 -73
- package/dist/scripts/confluence-sync.d.ts.map +1 -1
- package/dist/scripts/confluence-sync.js +14 -392
- package/dist/scripts/confluence-sync.js.map +1 -1
- package/dist/scripts/constants/environments.d.ts +3 -30
- package/dist/scripts/constants/environments.d.ts.map +1 -1
- package/dist/scripts/constants/environments.js +3 -41
- package/dist/scripts/constants/environments.js.map +1 -1
- package/dist/scripts/constants/languages.d.ts +3 -20
- package/dist/scripts/constants/languages.d.ts.map +1 -1
- package/dist/scripts/constants/languages.js +3 -50
- package/dist/scripts/constants/languages.js.map +1 -1
- package/dist/scripts/constants/test-commands.d.ts +3 -33
- package/dist/scripts/constants/test-commands.d.ts.map +1 -1
- package/dist/scripts/constants/test-commands.js +3 -67
- package/dist/scripts/constants/test-commands.js.map +1 -1
- package/dist/scripts/dev-tools/mermaid-converter.d.ts.map +1 -0
- package/dist/scripts/dev-tools/mermaid-converter.js.map +1 -0
- package/dist/scripts/dev-tools/test-interactive.d.ts.map +1 -0
- package/dist/scripts/{test-interactive.js → dev-tools/test-interactive.js} +4 -3
- package/dist/scripts/dev-tools/test-interactive.js.map +1 -0
- package/dist/scripts/github-actions-client.d.ts +5 -75
- package/dist/scripts/github-actions-client.d.ts.map +1 -1
- package/dist/scripts/github-actions-client.js +4 -178
- package/dist/scripts/github-actions-client.js.map +1 -1
- package/dist/scripts/jira-sync.d.ts +3 -121
- package/dist/scripts/jira-sync.d.ts.map +1 -1
- package/dist/scripts/jira-sync.js +5 -879
- package/dist/scripts/jira-sync.js.map +1 -1
- package/dist/scripts/markdown-to-confluence.d.ts.map +1 -1
- package/dist/scripts/markdown-to-confluence.js +2 -2
- package/dist/scripts/markdown-to-confluence.js.map +1 -1
- package/dist/scripts/multi-project-estimate.d.ts.map +1 -1
- package/dist/scripts/multi-project-estimate.js +3 -2
- package/dist/scripts/multi-project-estimate.js.map +1 -1
- package/dist/scripts/phase-runner.d.ts.map +1 -1
- package/dist/scripts/phase-runner.js +34 -18
- package/dist/scripts/phase-runner.js.map +1 -1
- package/dist/scripts/pre-flight-check.d.ts.map +1 -1
- package/dist/scripts/pre-flight-check.js +27 -11
- package/dist/scripts/pre-flight-check.js.map +1 -1
- package/dist/scripts/template/multi-repo-renderer.js +2 -2
- package/dist/scripts/template/multi-repo-renderer.js.map +1 -1
- package/dist/scripts/test-execution-generator.d.ts.map +1 -1
- package/dist/scripts/test-execution-generator.js +5 -4
- package/dist/scripts/test-execution-generator.js.map +1 -1
- package/dist/scripts/utils/aidlc-parser.d.ts +5 -82
- package/dist/scripts/utils/aidlc-parser.d.ts.map +1 -1
- package/dist/scripts/utils/aidlc-parser.js +4 -204
- package/dist/scripts/utils/aidlc-parser.js.map +1 -1
- package/dist/scripts/utils/ci-generator.d.ts.map +1 -1
- package/dist/scripts/utils/ci-generator.js +4 -3
- package/dist/scripts/utils/ci-generator.js.map +1 -1
- package/dist/scripts/utils/config-loader.d.ts.map +1 -1
- package/dist/scripts/utils/config-loader.js +46 -49
- package/dist/scripts/utils/config-loader.js.map +1 -1
- package/dist/scripts/utils/config-validator.d.ts +9 -10
- package/dist/scripts/utils/config-validator.d.ts.map +1 -1
- package/dist/scripts/utils/config-validator.js +68 -70
- package/dist/scripts/utils/config-validator.js.map +1 -1
- package/dist/scripts/utils/docker-requirement-detector.d.ts.map +1 -1
- package/dist/scripts/utils/docker-requirement-detector.js +5 -4
- package/dist/scripts/utils/docker-requirement-detector.js.map +1 -1
- package/dist/scripts/utils/env-config.d.ts.map +1 -1
- package/dist/scripts/utils/env-config.js +55 -38
- package/dist/scripts/utils/env-config.js.map +1 -1
- package/dist/scripts/utils/feature-name-validator.d.ts +4 -9
- package/dist/scripts/utils/feature-name-validator.d.ts.map +1 -1
- package/dist/scripts/utils/feature-name-validator.js +12 -21
- package/dist/scripts/utils/feature-name-validator.js.map +1 -1
- package/dist/scripts/utils/interactive-helpers.d.ts +5 -29
- package/dist/scripts/utils/interactive-helpers.d.ts.map +1 -1
- package/dist/scripts/utils/interactive-helpers.js +5 -89
- package/dist/scripts/utils/interactive-helpers.js.map +1 -1
- package/dist/scripts/utils/language-detector.d.ts.map +1 -1
- package/dist/scripts/utils/language-detector.js +4 -3
- package/dist/scripts/utils/language-detector.js.map +1 -1
- package/dist/scripts/utils/markdown-parser.d.ts +6 -52
- package/dist/scripts/utils/markdown-parser.d.ts.map +1 -1
- package/dist/scripts/utils/markdown-parser.js +5 -286
- package/dist/scripts/utils/markdown-parser.js.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.d.ts +9 -10
- package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.js +15 -17
- package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
- package/dist/scripts/utils/project-analyzer.d.ts +120 -0
- package/dist/scripts/utils/project-analyzer.d.ts.map +1 -0
- package/dist/scripts/utils/project-analyzer.js +358 -0
- package/dist/scripts/utils/project-analyzer.js.map +1 -0
- package/dist/scripts/utils/project-detector.d.ts.map +1 -1
- package/dist/scripts/utils/project-detector.js +6 -5
- package/dist/scripts/utils/project-detector.js.map +1 -1
- package/dist/scripts/utils/project-finder.d.ts +1 -21
- package/dist/scripts/utils/project-finder.d.ts.map +1 -1
- package/dist/scripts/utils/project-finder.js +2 -121
- package/dist/scripts/utils/project-finder.js.map +1 -1
- package/dist/scripts/utils/project-meta.d.ts +4 -27
- package/dist/scripts/utils/project-meta.d.ts.map +1 -1
- package/dist/scripts/utils/project-meta.js +3 -67
- package/dist/scripts/utils/project-meta.js.map +1 -1
- package/dist/scripts/utils/safe-file-reader.d.ts +84 -0
- package/dist/scripts/utils/safe-file-reader.d.ts.map +1 -0
- package/dist/scripts/utils/safe-file-reader.js +122 -0
- package/dist/scripts/utils/safe-file-reader.js.map +1 -0
- package/dist/scripts/utils/security-validator.d.ts +8 -19
- package/dist/scripts/utils/security-validator.d.ts.map +1 -1
- package/dist/scripts/utils/security-validator.js +28 -58
- package/dist/scripts/utils/security-validator.js.map +1 -1
- package/dist/scripts/utils/spec-archiver.d.ts.map +1 -1
- package/dist/scripts/utils/spec-archiver.js +7 -6
- package/dist/scripts/utils/spec-archiver.js.map +1 -1
- package/dist/scripts/utils/spec-updater.d.ts.map +1 -1
- package/dist/scripts/utils/spec-updater.js +10 -7
- package/dist/scripts/utils/spec-updater.js.map +1 -1
- package/dist/scripts/utils/tasks-converter.js +2 -2
- package/dist/scripts/utils/tasks-converter.js.map +1 -1
- package/dist/scripts/utils/tasks-format-validator.js +4 -4
- package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
- package/dist/scripts/utils/template-applier.d.ts.map +1 -1
- package/dist/scripts/utils/template-applier.js +4 -3
- package/dist/scripts/utils/template-applier.js.map +1 -1
- package/dist/scripts/utils/types/validation.d.ts +57 -0
- package/dist/scripts/utils/types/validation.d.ts.map +1 -0
- package/dist/scripts/utils/types/validation.js +50 -0
- package/dist/scripts/utils/types/validation.js.map +1 -0
- package/dist/scripts/validate-phase.d.ts +6 -1
- package/dist/scripts/validate-phase.d.ts.map +1 -1
- package/dist/scripts/validate-phase.js +42 -20
- package/dist/scripts/validate-phase.js.map +1 -1
- package/dist/scripts/workflow-orchestrator.d.ts +4 -40
- package/dist/scripts/workflow-orchestrator.d.ts.map +1 -1
- package/dist/scripts/workflow-orchestrator.js +7 -194
- package/dist/scripts/workflow-orchestrator.js.map +1 -1
- package/dist/src/application/interfaces/config-provider.d.ts +89 -0
- package/dist/src/application/interfaces/config-provider.d.ts.map +1 -0
- package/dist/src/application/interfaces/config-provider.js +8 -0
- package/dist/src/application/interfaces/config-provider.js.map +1 -0
- package/dist/src/application/interfaces/external-api.d.ts +80 -0
- package/dist/src/application/interfaces/external-api.d.ts.map +1 -0
- package/dist/src/application/interfaces/external-api.js +8 -0
- package/dist/src/application/interfaces/external-api.js.map +1 -0
- package/dist/src/application/interfaces/spec-repository.d.ts +52 -0
- package/dist/src/application/interfaces/spec-repository.d.ts.map +1 -0
- package/dist/src/application/interfaces/spec-repository.js +8 -0
- package/dist/src/application/interfaces/spec-repository.js.map +1 -0
- package/dist/src/application/services/spec-service.d.ts +49 -0
- package/dist/src/application/services/spec-service.d.ts.map +1 -0
- package/dist/src/application/services/spec-service.js +94 -0
- package/dist/src/application/services/spec-service.js.map +1 -0
- package/dist/src/application/services/workflow-service.d.ts +58 -0
- package/dist/src/application/services/workflow-service.d.ts.map +1 -0
- package/dist/src/application/services/workflow-service.js +125 -0
- package/dist/src/application/services/workflow-service.js.map +1 -0
- package/dist/src/application/templates/processor.d.ts +31 -0
- package/dist/src/application/templates/processor.d.ts.map +1 -0
- package/dist/src/application/templates/processor.js +58 -0
- package/dist/src/application/templates/processor.js.map +1 -0
- package/dist/src/application/use-cases/spec/archive-spec.d.ts +34 -0
- package/dist/src/application/use-cases/spec/archive-spec.d.ts.map +1 -0
- package/dist/src/application/use-cases/spec/archive-spec.js +56 -0
- package/dist/src/application/use-cases/spec/archive-spec.js.map +1 -0
- package/dist/src/application/use-cases/spec/generate-design.d.ts +34 -0
- package/dist/src/application/use-cases/spec/generate-design.d.ts.map +1 -0
- package/dist/src/application/use-cases/spec/generate-design.js +58 -0
- package/dist/src/application/use-cases/spec/generate-design.js.map +1 -0
- package/dist/src/application/use-cases/spec/generate-requirements.d.ts +34 -0
- package/dist/src/application/use-cases/spec/generate-requirements.d.ts.map +1 -0
- package/dist/src/application/use-cases/spec/generate-requirements.js +58 -0
- package/dist/src/application/use-cases/spec/generate-requirements.js.map +1 -0
- package/dist/src/application/use-cases/spec/generate-tasks.d.ts +34 -0
- package/dist/src/application/use-cases/spec/generate-tasks.d.ts.map +1 -0
- package/dist/src/application/use-cases/spec/generate-tasks.js +58 -0
- package/dist/src/application/use-cases/spec/generate-tasks.js.map +1 -0
- package/dist/src/application/use-cases/spec/init-spec.d.ts +48 -0
- package/dist/src/application/use-cases/spec/init-spec.d.ts.map +1 -0
- package/dist/src/application/use-cases/spec/init-spec.js +121 -0
- package/dist/src/application/use-cases/spec/init-spec.js.map +1 -0
- package/dist/src/cli.d.ts +6 -7
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +6 -745
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/config-validate.js +2 -2
- package/dist/src/commands/init.d.ts +6 -21
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +5 -508
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/migrate.js +4 -3
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/spec-archive.d.ts +6 -13
- package/dist/src/commands/spec-archive.d.ts.map +1 -1
- package/dist/src/commands/spec-archive.js +5 -36
- package/dist/src/commands/spec-archive.js.map +1 -1
- package/dist/src/commands/spec-list.d.ts +6 -11
- package/dist/src/commands/spec-list.d.ts.map +1 -1
- package/dist/src/commands/spec-list.js +5 -51
- package/dist/src/commands/spec-list.js.map +1 -1
- package/dist/src/domain/constants/approval.d.ts +18 -0
- package/dist/src/domain/constants/approval.d.ts.map +1 -0
- package/dist/src/domain/constants/approval.js +23 -0
- package/dist/src/domain/constants/approval.js.map +1 -0
- package/dist/src/domain/constants/environments.d.ts +33 -0
- package/dist/src/domain/constants/environments.d.ts.map +1 -0
- package/dist/src/domain/constants/environments.js +44 -0
- package/dist/src/domain/constants/environments.js.map +1 -0
- package/dist/src/domain/constants/index.d.ts +12 -0
- package/dist/src/domain/constants/index.d.ts.map +1 -0
- package/dist/src/domain/constants/index.js +18 -0
- package/dist/src/domain/constants/index.js.map +1 -0
- package/dist/src/domain/constants/languages.d.ts +23 -0
- package/dist/src/domain/constants/languages.d.ts.map +1 -0
- package/dist/src/domain/constants/languages.js +53 -0
- package/dist/src/domain/constants/languages.js.map +1 -0
- package/dist/src/domain/constants/phases.d.ts +32 -0
- package/dist/src/domain/constants/phases.d.ts.map +1 -0
- package/dist/src/domain/constants/phases.js +52 -0
- package/dist/src/domain/constants/phases.js.map +1 -0
- package/dist/src/domain/constants/test-commands.d.ts +36 -0
- package/dist/src/domain/constants/test-commands.d.ts.map +1 -0
- package/dist/src/domain/constants/test-commands.js +70 -0
- package/dist/src/domain/constants/test-commands.js.map +1 -0
- package/dist/src/domain/constants/validation-rules.d.ts +32 -0
- package/dist/src/domain/constants/validation-rules.d.ts.map +1 -0
- package/dist/src/domain/constants/validation-rules.js +51 -0
- package/dist/src/domain/constants/validation-rules.js.map +1 -0
- package/dist/src/domain/entities/spec.d.ts +66 -0
- package/dist/src/domain/entities/spec.d.ts.map +1 -0
- package/dist/src/domain/entities/spec.js +112 -0
- package/dist/src/domain/entities/spec.js.map +1 -0
- package/dist/src/domain/entities/task.d.ts +43 -0
- package/dist/src/domain/entities/task.d.ts.map +1 -0
- package/dist/src/domain/entities/task.js +65 -0
- package/dist/src/domain/entities/task.js.map +1 -0
- package/dist/src/domain/services/spec-validator.d.ts +46 -0
- package/dist/src/domain/services/spec-validator.d.ts.map +1 -0
- package/dist/src/domain/services/spec-validator.js +99 -0
- package/dist/src/domain/services/spec-validator.js.map +1 -0
- package/dist/src/domain/value-objects/feature-name.d.ts +24 -0
- package/dist/src/domain/value-objects/feature-name.d.ts.map +1 -0
- package/dist/src/domain/value-objects/feature-name.js +36 -0
- package/dist/src/domain/value-objects/feature-name.js.map +1 -0
- package/dist/src/domain/value-objects/index.d.ts +7 -0
- package/dist/src/domain/value-objects/index.d.ts.map +1 -0
- package/dist/src/domain/value-objects/index.js +7 -0
- package/dist/src/domain/value-objects/index.js.map +1 -0
- package/dist/src/infrastructure/config/index.d.ts +5 -0
- package/dist/src/infrastructure/config/index.d.ts.map +1 -0
- package/dist/src/infrastructure/config/index.js +6 -0
- package/dist/src/infrastructure/config/index.js.map +1 -0
- package/dist/src/infrastructure/config/schema.d.ts +337 -0
- package/dist/src/infrastructure/config/schema.d.ts.map +1 -0
- package/dist/src/infrastructure/config/schema.js +237 -0
- package/dist/src/infrastructure/config/schema.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.d.ts +14 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.js +102 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/approval.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/client.d.ts +23 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/client.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/client.js +192 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/client.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.d.ts +48 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.js +531 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/hierarchy.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/index.d.ts +10 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/index.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/index.js +12 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/index.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.d.ts +13 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.js +129 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/sync-service.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/types.d.ts +113 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/types.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/types.js +5 -0
- package/dist/src/infrastructure/external-apis/atlassian/confluence/types.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.d.ts +15 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.js +141 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/adf-converter.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/client.d.ts +50 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/client.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/client.js +226 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/client.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/index.d.ts +12 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/index.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/index.js +16 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/index.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.d.ts +49 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.js +165 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/issue-builder.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.d.ts +14 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.js +110 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/status-mapper.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.d.ts +32 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.js +284 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/sync-service.js.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/types.d.ts +114 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/types.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/types.js +7 -0
- package/dist/src/infrastructure/external-apis/atlassian/jira/types.js.map +1 -0
- package/dist/src/infrastructure/external-apis/github/client.d.ts +25 -0
- package/dist/src/infrastructure/external-apis/github/client.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/github/client.js +109 -0
- package/dist/src/infrastructure/external-apis/github/client.js.map +1 -0
- package/dist/src/infrastructure/external-apis/github/index.d.ts +7 -0
- package/dist/src/infrastructure/external-apis/github/index.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/github/index.js +8 -0
- package/dist/src/infrastructure/external-apis/github/index.js.map +1 -0
- package/dist/src/infrastructure/external-apis/github/types.d.ts +69 -0
- package/dist/src/infrastructure/external-apis/github/types.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/github/types.js +5 -0
- package/dist/src/infrastructure/external-apis/github/types.js.map +1 -0
- package/dist/src/infrastructure/external-apis/github/utils.d.ts +18 -0
- package/dist/src/infrastructure/external-apis/github/utils.d.ts.map +1 -0
- package/dist/src/infrastructure/external-apis/github/utils.js +84 -0
- package/dist/src/infrastructure/external-apis/github/utils.js.map +1 -0
- package/dist/src/infrastructure/filesystem/index.d.ts +6 -0
- package/dist/src/infrastructure/filesystem/index.d.ts.map +1 -0
- package/dist/src/infrastructure/filesystem/index.js +5 -0
- package/dist/src/infrastructure/filesystem/index.js.map +1 -0
- package/dist/src/infrastructure/filesystem/project-meta.d.ts +32 -0
- package/dist/src/infrastructure/filesystem/project-meta.d.ts.map +1 -0
- package/dist/src/infrastructure/filesystem/project-meta.js +75 -0
- package/dist/src/infrastructure/filesystem/project-meta.js.map +1 -0
- package/dist/src/infrastructure/parsers/aidlc-parser.d.ts +86 -0
- package/dist/src/infrastructure/parsers/aidlc-parser.d.ts.map +1 -0
- package/dist/src/infrastructure/parsers/aidlc-parser.js +208 -0
- package/dist/src/infrastructure/parsers/aidlc-parser.js.map +1 -0
- package/dist/src/infrastructure/parsers/index.d.ts +8 -0
- package/dist/src/infrastructure/parsers/index.d.ts.map +1 -0
- package/dist/src/infrastructure/parsers/index.js +6 -0
- package/dist/src/infrastructure/parsers/index.js.map +1 -0
- package/dist/src/infrastructure/parsers/markdown-parser.d.ts +51 -0
- package/dist/src/infrastructure/parsers/markdown-parser.d.ts.map +1 -0
- package/dist/src/infrastructure/parsers/markdown-parser.js +253 -0
- package/dist/src/infrastructure/parsers/markdown-parser.js.map +1 -0
- package/dist/src/presentation/cli/config.d.ts +12 -0
- package/dist/src/presentation/cli/config.d.ts.map +1 -0
- package/dist/src/presentation/cli/config.js +22 -0
- package/dist/src/presentation/cli/config.js.map +1 -0
- package/dist/src/presentation/cli/version.d.ts +10 -0
- package/dist/src/presentation/cli/version.d.ts.map +1 -0
- package/dist/src/presentation/cli/version.js +41 -0
- package/dist/src/presentation/cli/version.js.map +1 -0
- package/dist/src/presentation/cli.d.ts +22 -0
- package/dist/src/presentation/cli.d.ts.map +1 -0
- package/dist/src/presentation/cli.js +85 -0
- package/dist/src/presentation/cli.js.map +1 -0
- package/dist/src/presentation/commands/config/register.d.ts +11 -0
- package/dist/src/presentation/commands/config/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/config/register.js +44 -0
- package/dist/src/presentation/commands/config/register.js.map +1 -0
- package/dist/src/presentation/commands/confluence/register.d.ts +11 -0
- package/dist/src/presentation/commands/confluence/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/confluence/register.js +32 -0
- package/dist/src/presentation/commands/confluence/register.js.map +1 -0
- package/dist/src/presentation/commands/confluence/sync.d.ts +17 -0
- package/dist/src/presentation/commands/confluence/sync.d.ts.map +1 -0
- package/dist/src/presentation/commands/confluence/sync.js +25 -0
- package/dist/src/presentation/commands/confluence/sync.js.map +1 -0
- package/dist/src/presentation/commands/init/handler.d.ts +10 -0
- package/dist/src/presentation/commands/init/handler.d.ts.map +1 -0
- package/dist/src/presentation/commands/init/handler.js +64 -0
- package/dist/src/presentation/commands/init/handler.js.map +1 -0
- package/dist/src/presentation/commands/init/prompts.d.ts +41 -0
- package/dist/src/presentation/commands/init/prompts.d.ts.map +1 -0
- package/dist/src/presentation/commands/init/prompts.js +119 -0
- package/dist/src/presentation/commands/init/prompts.js.map +1 -0
- package/dist/src/presentation/commands/init/register.d.ts +11 -0
- package/dist/src/presentation/commands/init/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/init/register.js +141 -0
- package/dist/src/presentation/commands/init/register.js.map +1 -0
- package/dist/src/presentation/commands/init/setup.d.ts +26 -0
- package/dist/src/presentation/commands/init/setup.d.ts.map +1 -0
- package/dist/src/presentation/commands/init/setup.js +196 -0
- package/dist/src/presentation/commands/init/setup.js.map +1 -0
- package/dist/src/presentation/commands/init/templates.d.ts +19 -0
- package/dist/src/presentation/commands/init/templates.d.ts.map +1 -0
- package/dist/src/presentation/commands/init/templates.js +140 -0
- package/dist/src/presentation/commands/init/templates.js.map +1 -0
- package/dist/src/presentation/commands/init/validation.d.ts +21 -0
- package/dist/src/presentation/commands/init/validation.d.ts.map +1 -0
- package/dist/src/presentation/commands/init/validation.js +65 -0
- package/dist/src/presentation/commands/init/validation.js.map +1 -0
- package/dist/src/presentation/commands/jira/register.d.ts +11 -0
- package/dist/src/presentation/commands/jira/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/jira/register.js +75 -0
- package/dist/src/presentation/commands/jira/register.js.map +1 -0
- package/dist/src/presentation/commands/jira/sync.d.ts +29 -0
- package/dist/src/presentation/commands/jira/sync.d.ts.map +1 -0
- package/dist/src/presentation/commands/jira/sync.js +37 -0
- package/dist/src/presentation/commands/jira/sync.js.map +1 -0
- package/dist/src/{commands/multi-repo-add-repo.d.ts → presentation/commands/multi-repo/add-repo.d.ts} +1 -1
- package/dist/src/presentation/commands/multi-repo/add-repo.d.ts.map +1 -0
- package/dist/src/{commands/multi-repo-add-repo.js → presentation/commands/multi-repo/add-repo.js} +4 -4
- package/dist/src/presentation/commands/multi-repo/add-repo.js.map +1 -0
- package/dist/src/{commands/multi-repo-ci-status.d.ts → presentation/commands/multi-repo/ci-status.d.ts} +2 -2
- package/dist/src/presentation/commands/multi-repo/ci-status.d.ts.map +1 -0
- package/dist/src/{commands/multi-repo-ci-status.js → presentation/commands/multi-repo/ci-status.js} +95 -81
- package/dist/src/presentation/commands/multi-repo/ci-status.js.map +1 -0
- package/dist/src/{commands/multi-repo-confluence-sync.d.ts → presentation/commands/multi-repo/confluence-sync.d.ts} +1 -1
- package/dist/src/presentation/commands/multi-repo/confluence-sync.d.ts.map +1 -0
- package/dist/src/{commands/multi-repo-confluence-sync.js → presentation/commands/multi-repo/confluence-sync.js} +7 -6
- package/dist/src/presentation/commands/multi-repo/confluence-sync.js.map +1 -0
- package/dist/src/{commands/multi-repo-init.d.ts → presentation/commands/multi-repo/init.d.ts} +1 -1
- package/dist/src/presentation/commands/multi-repo/init.d.ts.map +1 -0
- package/dist/src/{commands/multi-repo-init.js → presentation/commands/multi-repo/init.js} +6 -6
- package/dist/src/presentation/commands/multi-repo/init.js.map +1 -0
- package/dist/src/{commands/multi-repo-list.d.ts → presentation/commands/multi-repo/list.d.ts} +1 -1
- package/dist/src/presentation/commands/multi-repo/list.d.ts.map +1 -0
- package/dist/src/{commands/multi-repo-list.js → presentation/commands/multi-repo/list.js} +2 -2
- package/dist/src/presentation/commands/multi-repo/list.js.map +1 -0
- package/dist/src/presentation/commands/multi-repo/register.d.ts +12 -0
- package/dist/src/presentation/commands/multi-repo/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/multi-repo/register.js +249 -0
- package/dist/src/presentation/commands/multi-repo/register.js.map +1 -0
- package/dist/src/{commands/multi-repo-test.d.ts → presentation/commands/multi-repo/test.d.ts} +1 -1
- package/dist/src/presentation/commands/multi-repo/test.d.ts.map +1 -0
- package/dist/src/{commands/multi-repo-test.js → presentation/commands/multi-repo/test.js} +4 -4
- package/dist/src/presentation/commands/multi-repo/test.js.map +1 -0
- package/dist/src/presentation/commands/phase/register.d.ts +11 -0
- package/dist/src/presentation/commands/phase/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/phase/register.js +97 -0
- package/dist/src/presentation/commands/phase/register.js.map +1 -0
- package/dist/src/presentation/commands/spec/archive.d.ts +17 -0
- package/dist/src/presentation/commands/spec/archive.d.ts.map +1 -0
- package/dist/src/presentation/commands/spec/archive.js +40 -0
- package/dist/src/presentation/commands/spec/archive.js.map +1 -0
- package/dist/src/presentation/commands/spec/list.d.ts +15 -0
- package/dist/src/presentation/commands/spec/list.d.ts.map +1 -0
- package/dist/src/presentation/commands/spec/list.js +55 -0
- package/dist/src/presentation/commands/spec/list.js.map +1 -0
- package/dist/src/presentation/commands/spec/register.d.ts +11 -0
- package/dist/src/presentation/commands/spec/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/spec/register.js +45 -0
- package/dist/src/presentation/commands/spec/register.js.map +1 -0
- package/dist/src/presentation/commands/workflow/orchestrator.d.ts +50 -0
- package/dist/src/presentation/commands/workflow/orchestrator.d.ts.map +1 -0
- package/dist/src/presentation/commands/workflow/orchestrator.js +174 -0
- package/dist/src/presentation/commands/workflow/orchestrator.js.map +1 -0
- package/dist/src/presentation/commands/workflow/register.d.ts +11 -0
- package/dist/src/presentation/commands/workflow/register.d.ts.map +1 -0
- package/dist/src/presentation/commands/workflow/register.js +58 -0
- package/dist/src/presentation/commands/workflow/register.js.map +1 -0
- package/dist/src/presentation/formatters/error-formatter.d.ts +79 -0
- package/dist/src/presentation/formatters/error-formatter.d.ts.map +1 -0
- package/dist/src/presentation/formatters/error-formatter.js +150 -0
- package/dist/src/presentation/formatters/error-formatter.js.map +1 -0
- package/dist/src/presentation/formatters/index.d.ts +8 -0
- package/dist/src/presentation/formatters/index.d.ts.map +1 -0
- package/dist/src/presentation/formatters/index.js +11 -0
- package/dist/src/presentation/formatters/index.js.map +1 -0
- package/dist/src/presentation/formatters/output-formatter.d.ts +98 -0
- package/dist/src/presentation/formatters/output-formatter.d.ts.map +1 -0
- package/dist/src/presentation/formatters/output-formatter.js +165 -0
- package/dist/src/presentation/formatters/output-formatter.js.map +1 -0
- package/dist/src/presentation/formatters/progress-formatter.d.ts +121 -0
- package/dist/src/presentation/formatters/progress-formatter.d.ts.map +1 -0
- package/dist/src/presentation/formatters/progress-formatter.js +235 -0
- package/dist/src/presentation/formatters/progress-formatter.js.map +1 -0
- package/dist/src/presentation/interactive/confirmation.d.ts +24 -0
- package/dist/src/presentation/interactive/confirmation.d.ts.map +1 -0
- package/dist/src/presentation/interactive/confirmation.js +54 -0
- package/dist/src/presentation/interactive/confirmation.js.map +1 -0
- package/dist/src/presentation/interactive/index.d.ts +8 -0
- package/dist/src/presentation/interactive/index.d.ts.map +1 -0
- package/dist/src/presentation/interactive/index.js +11 -0
- package/dist/src/presentation/interactive/index.js.map +1 -0
- package/dist/src/presentation/interactive/prompts.d.ts +31 -0
- package/dist/src/presentation/interactive/prompts.d.ts.map +1 -0
- package/dist/src/presentation/interactive/prompts.js +71 -0
- package/dist/src/presentation/interactive/prompts.js.map +1 -0
- package/dist/src/presentation/interactive/selection.d.ts +31 -0
- package/dist/src/presentation/interactive/selection.d.ts.map +1 -0
- package/dist/src/presentation/interactive/selection.js +138 -0
- package/dist/src/presentation/interactive/selection.js.map +1 -0
- package/dist/src/shared/types/errors.d.ts +132 -0
- package/dist/src/shared/types/errors.d.ts.map +1 -0
- package/dist/src/shared/types/errors.js +61 -0
- package/dist/src/shared/types/errors.js.map +1 -0
- package/dist/src/shared/types/result.d.ts +53 -0
- package/dist/src/shared/types/result.d.ts.map +1 -0
- package/dist/src/shared/types/result.js +42 -0
- package/dist/src/shared/types/result.js.map +1 -0
- package/dist/test-confluence-auth.d.ts +6 -0
- package/dist/test-confluence-auth.d.ts.map +1 -0
- package/dist/test-confluence-auth.js +128 -0
- package/dist/test-confluence-auth.js.map +1 -0
- package/docs/MIGRATION.md +513 -0
- package/docs/architecture.md +774 -0
- package/docs/guides/comprehensive-verification-guide.md +1926 -0
- package/docs/onion-architecture-phase0-complete.md +91 -0
- package/package.json +6 -6
- package/scripts/README.md +148 -0
- package/scripts/__tests__/jira-transitions.test.ts +44 -30
- package/scripts/__tests__/mermaid-converter.test.ts +2 -2
- package/scripts/__tests__/multi-repo-validator.test.ts +62 -62
- package/scripts/__tests__/spec-archiver.test.ts +12 -0
- package/scripts/__tests__/validate-phase.test.ts +6 -6
- package/scripts/build/README.md +24 -0
- package/scripts/{copy-static-assets.js → build/copy-static-assets.js} +1 -1
- package/scripts/{set-permissions.js → build/set-permissions.js} +1 -1
- package/scripts/config/config-schema.ts +43 -302
- package/scripts/config-global.ts +3 -2
- package/scripts/confluence-sync.ts +17 -538
- package/scripts/constants/environments.ts +3 -53
- package/scripts/constants/languages.ts +3 -68
- package/scripts/constants/test-commands.ts +3 -94
- package/scripts/dev-tools/README.md +22 -0
- package/scripts/{test-interactive.ts → dev-tools/test-interactive.ts} +4 -3
- package/scripts/github-actions-client.ts +18 -256
- package/scripts/jira-sync.ts +5 -1270
- package/scripts/markdown-to-confluence.ts +5 -5
- package/scripts/multi-project-estimate.ts +3 -2
- package/scripts/phase-runner.ts +41 -19
- package/scripts/pre-flight-check.ts +27 -11
- package/scripts/template/__tests__/multi-repo-renderer.test.ts +12 -0
- package/scripts/template/multi-repo-renderer.ts +2 -2
- package/scripts/test-execution-generator.ts +5 -4
- package/scripts/utils/__tests__/config-validator.test.ts +19 -19
- package/scripts/utils/__tests__/feature-name-validator.test.ts +13 -13
- package/scripts/utils/__tests__/multi-repo-validator.test.ts +34 -34
- package/scripts/utils/__tests__/project-analyzer.test.ts +542 -0
- package/scripts/utils/__tests__/safe-file-reader.test.ts +208 -0
- package/scripts/utils/__tests__/security-validator.test.ts +33 -33
- package/scripts/utils/__tests__/validation-result.test.ts +112 -0
- package/scripts/utils/aidlc-parser.ts +18 -287
- package/scripts/utils/ci-generator.ts +4 -3
- package/scripts/utils/config-loader.ts +54 -50
- package/scripts/utils/config-validator.ts +89 -80
- package/scripts/utils/docker-requirement-detector.ts +5 -4
- package/scripts/utils/env-config.ts +59 -40
- package/scripts/utils/feature-name-validator.ts +25 -40
- package/scripts/utils/interactive-helpers.ts +24 -132
- package/scripts/utils/language-detector.ts +4 -3
- package/scripts/utils/markdown-parser.ts +18 -373
- package/scripts/utils/multi-repo-validator.ts +27 -28
- package/scripts/utils/project-analyzer.ts +429 -0
- package/scripts/utils/project-detector.ts +6 -5
- package/scripts/utils/project-finder.ts +2 -154
- package/scripts/utils/project-meta.ts +8 -91
- package/scripts/utils/safe-file-reader.ts +158 -0
- package/scripts/utils/security-validator.ts +42 -78
- package/scripts/utils/spec-archiver.ts +7 -6
- package/scripts/utils/spec-updater.ts +12 -6
- package/scripts/utils/tasks-converter.ts +2 -2
- package/scripts/utils/tasks-format-validator.ts +4 -4
- package/scripts/utils/template-applier.ts +4 -3
- package/scripts/utils/types/validation.ts +92 -0
- package/scripts/validate-phase.ts +51 -23
- package/scripts/workflow-orchestrator.ts +16 -251
- package/dist/scripts/mermaid-converter.d.ts.map +0 -1
- package/dist/scripts/mermaid-converter.js.map +0 -1
- package/dist/scripts/resource-dashboard.d.ts +0 -7
- package/dist/scripts/resource-dashboard.d.ts.map +0 -1
- package/dist/scripts/resource-dashboard.js +0 -157
- package/dist/scripts/resource-dashboard.js.map +0 -1
- package/dist/scripts/test-interactive.d.ts.map +0 -1
- package/dist/scripts/test-interactive.js.map +0 -1
- package/dist/scripts/test-new-features.d.ts +0 -5
- package/dist/scripts/test-new-features.d.ts.map +0 -1
- package/dist/scripts/test-new-features.js +0 -148
- package/dist/scripts/test-new-features.js.map +0 -1
- package/dist/scripts/test-spec-generator.d.ts +0 -29
- package/dist/scripts/test-spec-generator.d.ts.map +0 -1
- package/dist/scripts/test-spec-generator.js +0 -493
- package/dist/scripts/test-spec-generator.js.map +0 -1
- package/dist/scripts/utils/confluence-approval.d.ts +0 -46
- package/dist/scripts/utils/confluence-approval.d.ts.map +0 -1
- package/dist/scripts/utils/confluence-approval.js +0 -120
- package/dist/scripts/utils/confluence-approval.js.map +0 -1
- package/dist/scripts/utils/template-finder.d.ts +0 -37
- package/dist/scripts/utils/template-finder.d.ts.map +0 -1
- package/dist/scripts/utils/template-finder.js +0 -58
- package/dist/scripts/utils/template-finder.js.map +0 -1
- package/dist/src/commands/multi-repo-add-repo.d.ts.map +0 -1
- package/dist/src/commands/multi-repo-add-repo.js.map +0 -1
- package/dist/src/commands/multi-repo-ci-status.d.ts.map +0 -1
- package/dist/src/commands/multi-repo-ci-status.js.map +0 -1
- package/dist/src/commands/multi-repo-confluence-sync.d.ts.map +0 -1
- package/dist/src/commands/multi-repo-confluence-sync.js.map +0 -1
- package/dist/src/commands/multi-repo-init.d.ts.map +0 -1
- package/dist/src/commands/multi-repo-init.js.map +0 -1
- package/dist/src/commands/multi-repo-list.d.ts.map +0 -1
- package/dist/src/commands/multi-repo-list.js.map +0 -1
- package/dist/src/commands/multi-repo-test.d.ts.map +0 -1
- package/dist/src/commands/multi-repo-test.js.map +0 -1
- package/dist/src/commands/setup-existing.d.ts +0 -22
- package/dist/src/commands/setup-existing.d.ts.map +0 -1
- package/dist/src/commands/setup-existing.js +0 -606
- package/dist/src/commands/setup-existing.js.map +0 -1
- package/scripts/__tests__/setup-existing-project.test.ts +0 -244
- package/scripts/resource-dashboard.ts +0 -189
- package/scripts/test-new-features.ts +0 -171
- package/scripts/test-spec-generator.ts +0 -570
- package/scripts/utils/confluence-approval.ts +0 -169
- package/scripts/utils/template-finder.ts +0 -69
- /package/dist/scripts/{mermaid-converter.d.ts → dev-tools/mermaid-converter.d.ts} +0 -0
- /package/dist/scripts/{mermaid-converter.js → dev-tools/mermaid-converter.js} +0 -0
- /package/dist/scripts/{test-interactive.d.ts → dev-tools/test-interactive.d.ts} +0 -0
- /package/scripts/{mermaid-converter.ts → dev-tools/mermaid-converter.ts} +0 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import MarkdownIt from 'markdown-it';
|
|
6
|
+
import { safeReadFileOrThrow } from './utils/safe-file-reader.js';
|
|
6
7
|
|
|
7
8
|
const md = new MarkdownIt({
|
|
8
9
|
html: true,
|
|
@@ -174,19 +175,18 @@ ${content}
|
|
|
174
175
|
|
|
175
176
|
// CLI実行用
|
|
176
177
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
177
|
-
const { readFileSync } = await import('fs');
|
|
178
178
|
const { resolve } = await import('path');
|
|
179
|
-
|
|
179
|
+
|
|
180
180
|
const args = process.argv.slice(2);
|
|
181
181
|
if (args.length === 0) {
|
|
182
182
|
console.error('Usage: tsx markdown-to-confluence.ts <markdown-file>');
|
|
183
183
|
process.exit(1);
|
|
184
184
|
}
|
|
185
|
-
|
|
185
|
+
|
|
186
186
|
const markdownFile = resolve(args[0]);
|
|
187
|
-
const markdown =
|
|
187
|
+
const markdown = safeReadFileOrThrow(markdownFile);
|
|
188
188
|
const confluenceHtml = convertMarkdownToConfluence(markdown);
|
|
189
|
-
|
|
189
|
+
|
|
190
190
|
console.log(confluenceHtml);
|
|
191
191
|
}
|
|
192
192
|
|
|
@@ -6,7 +6,8 @@ import { Octokit } from '@octokit/rest';
|
|
|
6
6
|
import { loadEnv } from './utils/env-loader.js';
|
|
7
7
|
import ExcelJS from 'exceljs';
|
|
8
8
|
import { resolve, join, dirname } from 'path';
|
|
9
|
-
import { writeFileSync, mkdirSync, unlinkSync
|
|
9
|
+
import { writeFileSync, mkdirSync, unlinkSync } from 'fs';
|
|
10
|
+
import { safeReadFileOrThrow } from './utils/safe-file-reader.js';
|
|
10
11
|
import { tmpdir } from 'os';
|
|
11
12
|
import { mkdir } from 'fs/promises';
|
|
12
13
|
|
|
@@ -41,7 +42,7 @@ interface RiskEstimate {
|
|
|
41
42
|
* design.mdから見積もりを抽出(estimate-generator.tsから統合)
|
|
42
43
|
*/
|
|
43
44
|
function parseEstimateFromDesign(designPath: string): EstimateData {
|
|
44
|
-
const content =
|
|
45
|
+
const content = safeReadFileOrThrow(designPath, 'utf-8');
|
|
45
46
|
|
|
46
47
|
const tasks: TaskEstimate[] = [];
|
|
47
48
|
let totalDays = 0;
|
package/scripts/phase-runner.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* 各フェーズを実行し、Confluence/JIRA作成を確実に実行
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { existsSync, writeFileSync
|
|
6
|
+
import { existsSync, writeFileSync } from 'fs';
|
|
7
7
|
import { join, relative } from 'path';
|
|
8
8
|
import { syncToConfluence } from './confluence-sync.js';
|
|
9
9
|
import { syncTasksToJIRA } from './jira-sync.js';
|
|
@@ -12,6 +12,8 @@ import { runPreFlightCheck } from './pre-flight-check.js';
|
|
|
12
12
|
import { validateFeatureNameOrThrow } from './utils/feature-name-validator.js';
|
|
13
13
|
import { getTestCommands } from './constants/test-commands.js';
|
|
14
14
|
import { loadSpecJson } from './utils/spec-updater.js';
|
|
15
|
+
import { safeReadFileOrThrow, safeReadJsonFile } from './utils/safe-file-reader.js';
|
|
16
|
+
import { type SpecJson } from './utils/spec-updater.js';
|
|
15
17
|
import inquirer from 'inquirer';
|
|
16
18
|
|
|
17
19
|
type Phase =
|
|
@@ -31,6 +33,10 @@ interface PhaseRunResult {
|
|
|
31
33
|
errors: string[];
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
interface TestTypeSelection {
|
|
37
|
+
selectedTypes?: string[];
|
|
38
|
+
}
|
|
39
|
+
|
|
34
40
|
/**
|
|
35
41
|
* 要件定義フェーズを実行
|
|
36
42
|
*/
|
|
@@ -91,10 +97,10 @@ async function runRequirementsPhase(feature: string): Promise<PhaseRunResult> {
|
|
|
91
97
|
` ${confluenceCreated ? '✅' : '❌'} Confluenceページ: ${confluenceCreated ? '作成済み' : '未作成'}`,
|
|
92
98
|
);
|
|
93
99
|
console.log(
|
|
94
|
-
` ${validation.
|
|
100
|
+
` ${validation.success ? '✅' : '❌'} バリデーション: ${validation.success ? '成功' : '失敗'}`,
|
|
95
101
|
);
|
|
96
102
|
|
|
97
|
-
if (validation.
|
|
103
|
+
if (validation.success && confluenceCreated) {
|
|
98
104
|
console.log('\n🎉 要件定義フェーズが完了しました!');
|
|
99
105
|
console.log('📢 PMや部長にConfluenceでレビューを依頼してください');
|
|
100
106
|
if (confluenceUrl) {
|
|
@@ -110,10 +116,10 @@ async function runRequirementsPhase(feature: string): Promise<PhaseRunResult> {
|
|
|
110
116
|
|
|
111
117
|
return {
|
|
112
118
|
phase: 'requirements',
|
|
113
|
-
success: validation.
|
|
119
|
+
success: validation.success && confluenceCreated,
|
|
114
120
|
confluenceCreated,
|
|
115
121
|
jiraCreated: false,
|
|
116
|
-
validationPassed: validation.
|
|
122
|
+
validationPassed: validation.success,
|
|
117
123
|
errors,
|
|
118
124
|
};
|
|
119
125
|
}
|
|
@@ -178,10 +184,10 @@ async function runDesignPhase(feature: string): Promise<PhaseRunResult> {
|
|
|
178
184
|
` ${confluenceCreated ? '✅' : '❌'} Confluenceページ: ${confluenceCreated ? '作成済み' : '未作成'}`,
|
|
179
185
|
);
|
|
180
186
|
console.log(
|
|
181
|
-
` ${validation.
|
|
187
|
+
` ${validation.success ? '✅' : '❌'} バリデーション: ${validation.success ? '成功' : '失敗'}`,
|
|
182
188
|
);
|
|
183
189
|
|
|
184
|
-
if (validation.
|
|
190
|
+
if (validation.success && confluenceCreated) {
|
|
185
191
|
console.log('\n🎉 設計フェーズが完了しました!');
|
|
186
192
|
console.log('📢 PMや部長にConfluenceでレビューを依頼してください');
|
|
187
193
|
if (confluenceUrl) {
|
|
@@ -197,10 +203,10 @@ async function runDesignPhase(feature: string): Promise<PhaseRunResult> {
|
|
|
197
203
|
|
|
198
204
|
return {
|
|
199
205
|
phase: 'design',
|
|
200
|
-
success: validation.
|
|
206
|
+
success: validation.success && confluenceCreated,
|
|
201
207
|
confluenceCreated,
|
|
202
208
|
jiraCreated: false,
|
|
203
|
-
validationPassed: validation.
|
|
209
|
+
validationPassed: validation.success,
|
|
204
210
|
errors,
|
|
205
211
|
};
|
|
206
212
|
}
|
|
@@ -249,7 +255,14 @@ async function detectAndConvertAIDLCFormat(
|
|
|
249
255
|
|
|
250
256
|
console.log('\n🔍 tasks.mdフォーマット検証中...');
|
|
251
257
|
const { isAIDLCFormat } = await import('./utils/aidlc-parser.js');
|
|
252
|
-
|
|
258
|
+
|
|
259
|
+
let tasksContent: string;
|
|
260
|
+
try {
|
|
261
|
+
tasksContent = safeReadFileOrThrow(tasksPath);
|
|
262
|
+
} catch (error) {
|
|
263
|
+
errors.push(`tasks.md読み込み失敗: ${error instanceof Error ? error.message : String(error)}`);
|
|
264
|
+
return { success: false, errors };
|
|
265
|
+
}
|
|
253
266
|
|
|
254
267
|
if (!isAIDLCFormat(tasksContent)) {
|
|
255
268
|
return { success: true, errors: [] };
|
|
@@ -355,7 +368,7 @@ async function validateTasksFormatAndSyncJIRA(
|
|
|
355
368
|
*/
|
|
356
369
|
function displayTasksPhaseSummary(
|
|
357
370
|
jiraCreated: boolean,
|
|
358
|
-
validation: {
|
|
371
|
+
validation: { success: boolean; errors: string[] }
|
|
359
372
|
): void {
|
|
360
373
|
console.log('\n' + '='.repeat(60));
|
|
361
374
|
console.log('📊 タスク分割フェーズ完了チェック:');
|
|
@@ -364,10 +377,10 @@ function displayTasksPhaseSummary(
|
|
|
364
377
|
` ${jiraCreated ? '✅' : '❌'} JIRA Epic/Story: ${jiraCreated ? '作成済み' : '未作成'}`,
|
|
365
378
|
);
|
|
366
379
|
console.log(
|
|
367
|
-
` ${validation.
|
|
380
|
+
` ${validation.success ? '✅' : '❌'} バリデーション: ${validation.success ? '成功' : '失敗'}`,
|
|
368
381
|
);
|
|
369
382
|
|
|
370
|
-
if (validation.
|
|
383
|
+
if (validation.success && jiraCreated) {
|
|
371
384
|
console.log('\n🎉 タスク分割フェーズが完了しました!');
|
|
372
385
|
console.log('📢 開発チームに実装開始を通知してください');
|
|
373
386
|
console.log('🚀 次のステップ: /kiro:spec-impl <feature>');
|
|
@@ -427,10 +440,10 @@ async function runTasksPhase(feature: string): Promise<PhaseRunResult> {
|
|
|
427
440
|
|
|
428
441
|
return {
|
|
429
442
|
phase: 'tasks',
|
|
430
|
-
success: validation.
|
|
443
|
+
success: validation.success && jiraCreated,
|
|
431
444
|
confluenceCreated: false,
|
|
432
445
|
jiraCreated,
|
|
433
|
-
validationPassed: validation.
|
|
446
|
+
validationPassed: validation.success,
|
|
434
447
|
errors,
|
|
435
448
|
};
|
|
436
449
|
}
|
|
@@ -697,8 +710,16 @@ async function updateEnvironmentSpecJson(
|
|
|
697
710
|
return;
|
|
698
711
|
}
|
|
699
712
|
|
|
713
|
+
const readResult = safeReadJsonFile<SpecJson>(specPath);
|
|
714
|
+
if (!readResult.success) {
|
|
715
|
+
const error = readResult.errors[0];
|
|
716
|
+
const message = error.type === 'InvalidJSON' ? error.cause : error.type;
|
|
717
|
+
errors.push(`spec.json読み込み失敗: ${message}`);
|
|
718
|
+
return { success: false, errors };
|
|
719
|
+
}
|
|
720
|
+
|
|
700
721
|
try {
|
|
701
|
-
const spec =
|
|
722
|
+
const spec = readResult.value!;
|
|
702
723
|
spec.environmentSetup = {
|
|
703
724
|
completed: true,
|
|
704
725
|
language: answers.language,
|
|
@@ -840,11 +861,12 @@ function loadPhaseBTestTypes(feature: string): string[] {
|
|
|
840
861
|
|
|
841
862
|
let selectedTypes: string[] = [];
|
|
842
863
|
if (existsSync(selectionPath)) {
|
|
843
|
-
|
|
844
|
-
|
|
864
|
+
const readResult = safeReadJsonFile<TestTypeSelection>(selectionPath);
|
|
865
|
+
if (readResult.success) {
|
|
866
|
+
const selection = readResult.value!;
|
|
845
867
|
selectedTypes = selection.selectedTypes || [];
|
|
846
868
|
console.log(`\n✅ 選択されたテストタイプ: ${selectedTypes.join(', ')}`);
|
|
847
|
-
}
|
|
869
|
+
} else {
|
|
848
870
|
console.warn('⚠️ test-type-selection.jsonの読み込みに失敗しました');
|
|
849
871
|
}
|
|
850
872
|
} else {
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* スクリプト実行前に必要な設定が揃っているか確認
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { existsSync
|
|
6
|
+
import { existsSync } from 'fs';
|
|
7
|
+
import { safeReadJsonFile } from './utils/safe-file-reader.js';
|
|
7
8
|
import { join } from 'path';
|
|
8
9
|
import axios from 'axios';
|
|
9
10
|
import { loadEnv } from './utils/env-loader.js';
|
|
@@ -85,14 +86,19 @@ function checkProjectJson(): { errors: string[], warnings: string[] } {
|
|
|
85
86
|
return { errors, warnings };
|
|
86
87
|
}
|
|
87
88
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
89
|
+
const readResult = safeReadJsonFile<ProjectMeta>(projectJsonPath);
|
|
90
|
+
if (!readResult.success) {
|
|
91
|
+
const error = readResult.errors[0];
|
|
92
|
+
if (error.type === 'InvalidJSON') {
|
|
93
|
+
errors.push(`❌ project.json のパースに失敗しました: ${error.cause}`);
|
|
94
|
+
} else {
|
|
95
|
+
errors.push('❌ project.json のパースに失敗しました');
|
|
96
|
+
}
|
|
93
97
|
return { errors, warnings };
|
|
94
98
|
}
|
|
95
|
-
|
|
99
|
+
|
|
100
|
+
const projectMeta = readResult.value!;
|
|
101
|
+
|
|
96
102
|
// 必須フィールドチェック
|
|
97
103
|
const required = ['projectId', 'projectName', 'jiraProjectKey'];
|
|
98
104
|
const missing = required.filter(key => !projectMeta[key]);
|
|
@@ -245,10 +251,20 @@ export async function runPreFlightCheck(phase: 'confluence' | 'jira' | 'all'): P
|
|
|
245
251
|
if (phase === 'jira' || phase === 'all') {
|
|
246
252
|
console.log('\n📋 Step 4: JIRAプロジェクト存在チェック');
|
|
247
253
|
const projectJsonPath = join(process.cwd(), '.kiro', 'project.json');
|
|
248
|
-
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
254
|
+
|
|
255
|
+
const readResult = safeReadJsonFile<ProjectMeta>(projectJsonPath);
|
|
256
|
+
if (!readResult.success) {
|
|
257
|
+
allErrors.push(`❌ project.json読み込み失敗: ${readResult.errors[0].type}`);
|
|
258
|
+
} else {
|
|
259
|
+
const projectMeta = readResult.value!;
|
|
260
|
+
if (!projectMeta.jiraProjectKey) {
|
|
261
|
+
allErrors.push('❌ project.jsonにjiraProjectKeyが設定されていません');
|
|
262
|
+
} else {
|
|
263
|
+
const jiraCheck = await checkJiraProject(projectMeta.jiraProjectKey);
|
|
264
|
+
allErrors.push(...jiraCheck.errors);
|
|
265
|
+
allWarnings.push(...jiraCheck.warnings);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
252
268
|
}
|
|
253
269
|
|
|
254
270
|
return {
|
|
@@ -23,6 +23,18 @@ const MICHI_PACKAGE_ROOT = resolve(__dirname, '..', '..', '..');
|
|
|
23
23
|
|
|
24
24
|
vi.mock('fs');
|
|
25
25
|
|
|
26
|
+
// safe-file-reader のモック(実際のreadFileSyncモックを使用するため)
|
|
27
|
+
vi.mock('../../utils/safe-file-reader.js', async () => {
|
|
28
|
+
const mockFs = await import('fs');
|
|
29
|
+
return {
|
|
30
|
+
safeReadFileOrThrow: vi.fn((filePath: string, encoding: BufferEncoding = 'utf-8') => {
|
|
31
|
+
return (mockFs.readFileSync as ReturnType<typeof vi.fn>)(filePath, encoding);
|
|
32
|
+
}),
|
|
33
|
+
safeReadFile: vi.fn(),
|
|
34
|
+
safeReadJsonFile: vi.fn(),
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
|
|
26
38
|
describe('createMultiRepoTemplateContext', () => {
|
|
27
39
|
it('必須フィールドを含むコンテキストを作成する', () => {
|
|
28
40
|
const context = createMultiRepoTemplateContext(
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides template rendering functionality for Multi-Repo projects
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { safeReadFileOrThrow } from '../utils/safe-file-reader.js';
|
|
8
8
|
import { resolve, relative, isAbsolute, dirname } from 'path';
|
|
9
9
|
import { fileURLToPath } from 'url';
|
|
10
10
|
import { renderTemplate, type TemplateContext } from './renderer.js';
|
|
@@ -82,7 +82,7 @@ export const loadMultiRepoTemplate = (
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
try {
|
|
85
|
-
return
|
|
85
|
+
return safeReadFileOrThrow(templatePath, 'utf-8');
|
|
86
86
|
} catch (error) {
|
|
87
87
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
88
88
|
throw new Error(
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* Phase Bで選択されたテストタイプに基づいて実行ファイルを生成
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import { writeFileSync, existsSync, mkdirSync, chmodSync } from 'fs';
|
|
7
7
|
import { join } from 'path';
|
|
8
|
+
import { safeReadFileOrThrow } from './utils/safe-file-reader.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* セキュリティ: URLバリデーション
|
|
@@ -104,7 +105,7 @@ function extractEndpointsFromDesign(designPath: string): { endpoint: string; met
|
|
|
104
105
|
return [{ endpoint: '/api/health', method: 'GET', baseUrl: 'http://localhost:8080' }];
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
const content =
|
|
108
|
+
const content = safeReadFileOrThrow(designPath, 'utf-8');
|
|
108
109
|
const endpoints: { endpoint: string; method: string; baseUrl: string }[] = [];
|
|
109
110
|
|
|
110
111
|
// APIエンドポイントのパターンを検索
|
|
@@ -147,7 +148,7 @@ function extractPerformanceRequirements(requirementsPath: string): {
|
|
|
147
148
|
return defaults;
|
|
148
149
|
}
|
|
149
150
|
|
|
150
|
-
const content =
|
|
151
|
+
const content = safeReadFileOrThrow(requirementsPath, 'utf-8');
|
|
151
152
|
|
|
152
153
|
// レスポンスタイム要件を検索
|
|
153
154
|
const responseTimeMatch = content.match(/(\d+)\s*(?:ms|ミリ秒)以内/);
|
|
@@ -771,7 +772,7 @@ export async function generateAllTestExecutions(
|
|
|
771
772
|
throw new Error('test-type-selection.jsonが存在しません。先にtest-type-selectionフェーズを実行してください');
|
|
772
773
|
}
|
|
773
774
|
|
|
774
|
-
const selection = JSON.parse(
|
|
775
|
+
const selection = JSON.parse(safeReadFileOrThrow(selectionPath, 'utf-8'));
|
|
775
776
|
const testTypes: string[] = selection.selectedTypes || [];
|
|
776
777
|
|
|
777
778
|
const results: GenerationResult[] = [];
|
|
@@ -65,7 +65,7 @@ describe('config-validator', () => {
|
|
|
65
65
|
|
|
66
66
|
const result = validateProjectConfig(testProjectRoot);
|
|
67
67
|
|
|
68
|
-
expect(result.
|
|
68
|
+
expect(result.success).toBe(true);
|
|
69
69
|
expect(result.errors).toHaveLength(0);
|
|
70
70
|
expect(result.warnings).toHaveLength(0);
|
|
71
71
|
expect(result.info.length).toBeGreaterThan(0);
|
|
@@ -94,7 +94,7 @@ describe('config-validator', () => {
|
|
|
94
94
|
|
|
95
95
|
const result = validateProjectConfig(testProjectRoot);
|
|
96
96
|
|
|
97
|
-
expect(result.
|
|
97
|
+
expect(result.success).toBe(true);
|
|
98
98
|
expect(result.errors).toHaveLength(0);
|
|
99
99
|
});
|
|
100
100
|
|
|
@@ -104,7 +104,7 @@ describe('config-validator', () => {
|
|
|
104
104
|
|
|
105
105
|
const result = validateProjectConfig(testProjectRoot);
|
|
106
106
|
|
|
107
|
-
expect(result.
|
|
107
|
+
expect(result.success).toBe(false);
|
|
108
108
|
expect(result.errors.length).toBeGreaterThan(0);
|
|
109
109
|
expect(result.errors[0]).toContain('Invalid JSON');
|
|
110
110
|
});
|
|
@@ -122,7 +122,7 @@ describe('config-validator', () => {
|
|
|
122
122
|
|
|
123
123
|
const result = validateProjectConfig(testProjectRoot);
|
|
124
124
|
|
|
125
|
-
expect(result.
|
|
125
|
+
expect(result.success).toBe(false);
|
|
126
126
|
expect(result.errors.length).toBeGreaterThan(0);
|
|
127
127
|
expect(result.errors[0]).toContain('hierarchy');
|
|
128
128
|
});
|
|
@@ -140,7 +140,7 @@ describe('config-validator', () => {
|
|
|
140
140
|
|
|
141
141
|
const result = validateProjectConfig(testProjectRoot);
|
|
142
142
|
|
|
143
|
-
expect(result.
|
|
143
|
+
expect(result.success).toBe(false);
|
|
144
144
|
expect(result.errors.length).toBeGreaterThan(0);
|
|
145
145
|
expect(result.errors[0]).toContain('selectedPhases');
|
|
146
146
|
});
|
|
@@ -179,7 +179,7 @@ describe('config-validator', () => {
|
|
|
179
179
|
|
|
180
180
|
const result = validateForConfluenceSync('requirements', testProjectRoot);
|
|
181
181
|
|
|
182
|
-
expect(result.
|
|
182
|
+
expect(result.success).toBe(true);
|
|
183
183
|
// デフォルト設定がある場合、警告が表示されない可能性がある
|
|
184
184
|
// 実際の動作に合わせてテストを調整
|
|
185
185
|
if (result.warnings.length > 0) {
|
|
@@ -202,7 +202,7 @@ describe('config-validator', () => {
|
|
|
202
202
|
|
|
203
203
|
const result = validateForConfluenceSync('requirements', testProjectRoot);
|
|
204
204
|
|
|
205
|
-
expect(result.
|
|
205
|
+
expect(result.success).toBe(true);
|
|
206
206
|
expect(result.errors).toHaveLength(0);
|
|
207
207
|
});
|
|
208
208
|
|
|
@@ -227,7 +227,7 @@ describe('config-validator', () => {
|
|
|
227
227
|
|
|
228
228
|
// デフォルト設定にhierarchyがある場合、エラーにならない
|
|
229
229
|
// このテストは、デフォルト設定の動作を確認するためのもの
|
|
230
|
-
expect(result.
|
|
230
|
+
expect(result.success).toBe(true);
|
|
231
231
|
});
|
|
232
232
|
|
|
233
233
|
it('manualモードでstructure設定がない場合はエラー', () => {
|
|
@@ -246,7 +246,7 @@ describe('config-validator', () => {
|
|
|
246
246
|
|
|
247
247
|
const result = validateForConfluenceSync('requirements', testProjectRoot);
|
|
248
248
|
|
|
249
|
-
expect(result.
|
|
249
|
+
expect(result.success).toBe(false);
|
|
250
250
|
expect(result.errors.length).toBeGreaterThan(0);
|
|
251
251
|
expect(result.errors[0]).toContain('structure');
|
|
252
252
|
});
|
|
@@ -266,7 +266,7 @@ describe('config-validator', () => {
|
|
|
266
266
|
|
|
267
267
|
const result = validateForConfluenceSync('requirements', testProjectRoot);
|
|
268
268
|
|
|
269
|
-
expect(result.
|
|
269
|
+
expect(result.success).toBe(true);
|
|
270
270
|
// 環境変数がある場合、infoメッセージが表示される可能性がある
|
|
271
271
|
// 実際の動作に合わせてテストを調整
|
|
272
272
|
if (result.info.length > 0) {
|
|
@@ -318,7 +318,7 @@ describe('config-validator', () => {
|
|
|
318
318
|
const result = validateForJiraSync(testProjectRoot);
|
|
319
319
|
|
|
320
320
|
// story=nullの場合、環境変数もないのでエラーになる
|
|
321
|
-
expect(result.
|
|
321
|
+
expect(result.success).toBe(false);
|
|
322
322
|
expect(result.errors.length).toBeGreaterThan(0);
|
|
323
323
|
expect(result.errors[0]).toContain('issueTypes.story');
|
|
324
324
|
});
|
|
@@ -338,7 +338,7 @@ describe('config-validator', () => {
|
|
|
338
338
|
|
|
339
339
|
const result = validateForJiraSync(testProjectRoot);
|
|
340
340
|
|
|
341
|
-
expect(result.
|
|
341
|
+
expect(result.success).toBe(true);
|
|
342
342
|
expect(result.errors).toHaveLength(0);
|
|
343
343
|
});
|
|
344
344
|
|
|
@@ -357,7 +357,7 @@ describe('config-validator', () => {
|
|
|
357
357
|
|
|
358
358
|
const result = validateForJiraSync(testProjectRoot);
|
|
359
359
|
|
|
360
|
-
expect(result.
|
|
360
|
+
expect(result.success).toBe(true);
|
|
361
361
|
// 環境変数がある場合、infoメッセージが表示される可能性がある
|
|
362
362
|
// 実際の動作に合わせてテストを調整
|
|
363
363
|
if (result.info.length > 0) {
|
|
@@ -382,7 +382,7 @@ describe('config-validator', () => {
|
|
|
382
382
|
const result = validateForJiraSync(testProjectRoot);
|
|
383
383
|
|
|
384
384
|
// subtask=nullの場合、環境変数もないので警告になる
|
|
385
|
-
expect(result.
|
|
385
|
+
expect(result.success).toBe(true);
|
|
386
386
|
expect(result.warnings.length).toBeGreaterThan(0);
|
|
387
387
|
expect(result.warnings[0]).toContain('subtask');
|
|
388
388
|
});
|
|
@@ -403,7 +403,7 @@ describe('config-validator', () => {
|
|
|
403
403
|
|
|
404
404
|
const result = validateForJiraSync(testProjectRoot);
|
|
405
405
|
|
|
406
|
-
expect(result.
|
|
406
|
+
expect(result.success).toBe(false);
|
|
407
407
|
expect(result.errors.length).toBeGreaterThan(0);
|
|
408
408
|
expect(result.errors[0]).toContain('selectedPhases');
|
|
409
409
|
});
|
|
@@ -490,7 +490,7 @@ describe('config-validator', () => {
|
|
|
490
490
|
|
|
491
491
|
const result = await validateForJiraSyncAsync(testProjectRoot);
|
|
492
492
|
|
|
493
|
-
expect(result.
|
|
493
|
+
expect(result.success).toBe(true);
|
|
494
494
|
expect(result.errors).toHaveLength(0);
|
|
495
495
|
});
|
|
496
496
|
|
|
@@ -536,7 +536,7 @@ describe('config-validator', () => {
|
|
|
536
536
|
|
|
537
537
|
const result = await validateForJiraSyncAsync(testProjectRoot);
|
|
538
538
|
|
|
539
|
-
expect(result.
|
|
539
|
+
expect(result.success).toBe(true);
|
|
540
540
|
expect(result.errors).toHaveLength(0);
|
|
541
541
|
});
|
|
542
542
|
|
|
@@ -588,7 +588,7 @@ describe('config-validator', () => {
|
|
|
588
588
|
|
|
589
589
|
const result = await validateForJiraSyncAsync(testProjectRoot);
|
|
590
590
|
|
|
591
|
-
expect(result.
|
|
591
|
+
expect(result.success).toBe(false);
|
|
592
592
|
expect(result.errors.length).toBeGreaterThan(0);
|
|
593
593
|
expect(
|
|
594
594
|
result.errors.some(
|
|
@@ -635,7 +635,7 @@ describe('config-validator', () => {
|
|
|
635
635
|
|
|
636
636
|
const result = await validateForJiraSyncAsync(testProjectRoot);
|
|
637
637
|
|
|
638
|
-
expect(result.
|
|
638
|
+
expect(result.success).toBe(true); // エラーにはしない
|
|
639
639
|
expect(result.warnings.length).toBeGreaterThan(0);
|
|
640
640
|
expect(
|
|
641
641
|
result.warnings.some((w) => w.includes('取得できませんでした')),
|
|
@@ -9,25 +9,25 @@ describe('validateFeatureName', () => {
|
|
|
9
9
|
describe('有効なfeature名', () => {
|
|
10
10
|
it('小文字の英数字とハイフンのみ', () => {
|
|
11
11
|
const result = validateFeatureName('user-auth');
|
|
12
|
-
expect(result.
|
|
12
|
+
expect(result.success).toBe(true);
|
|
13
13
|
expect(result.errors).toHaveLength(0);
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
it('単一単語', () => {
|
|
17
17
|
const result = validateFeatureName('payment');
|
|
18
|
-
expect(result.
|
|
18
|
+
expect(result.success).toBe(true);
|
|
19
19
|
expect(result.errors).toHaveLength(0);
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
it('複数単語(ハイフン区切り)', () => {
|
|
23
23
|
const result = validateFeatureName('health-check-endpoint');
|
|
24
|
-
expect(result.
|
|
24
|
+
expect(result.success).toBe(true);
|
|
25
25
|
expect(result.errors).toHaveLength(0);
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
it('数字を含む', () => {
|
|
29
29
|
const result = validateFeatureName('api-v2');
|
|
30
|
-
expect(result.
|
|
30
|
+
expect(result.success).toBe(true);
|
|
31
31
|
expect(result.errors).toHaveLength(0);
|
|
32
32
|
});
|
|
33
33
|
});
|
|
@@ -35,55 +35,55 @@ describe('validateFeatureName', () => {
|
|
|
35
35
|
describe('無効なfeature名', () => {
|
|
36
36
|
it('大文字を含む', () => {
|
|
37
37
|
const result = validateFeatureName('UserAuth');
|
|
38
|
-
expect(result.
|
|
38
|
+
expect(result.success).toBe(false);
|
|
39
39
|
expect(result.errors.some(e => e.includes('大文字'))).toBe(true);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
it('日本語を含む', () => {
|
|
43
43
|
const result = validateFeatureName('ユーザー認証');
|
|
44
|
-
expect(result.
|
|
44
|
+
expect(result.success).toBe(false);
|
|
45
45
|
expect(result.errors.some(e => e.includes('日本語'))).toBe(true);
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
it('アンダースコアを含む', () => {
|
|
49
49
|
const result = validateFeatureName('user_auth');
|
|
50
|
-
expect(result.
|
|
50
|
+
expect(result.success).toBe(false);
|
|
51
51
|
expect(result.errors.some(e => e.includes('アンダースコア'))).toBe(true);
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
it('スペースを含む', () => {
|
|
55
55
|
const result = validateFeatureName('user auth');
|
|
56
|
-
expect(result.
|
|
56
|
+
expect(result.success).toBe(false);
|
|
57
57
|
expect(result.errors.some(e => e.includes('スペース'))).toBe(true);
|
|
58
58
|
});
|
|
59
59
|
|
|
60
60
|
it('先頭にハイフン', () => {
|
|
61
61
|
const result = validateFeatureName('-user-auth');
|
|
62
|
-
expect(result.
|
|
62
|
+
expect(result.success).toBe(false);
|
|
63
63
|
expect(result.errors.some(e => e.includes('先頭'))).toBe(true);
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
it('末尾にハイフン', () => {
|
|
67
67
|
const result = validateFeatureName('user-auth-');
|
|
68
|
-
expect(result.
|
|
68
|
+
expect(result.success).toBe(false);
|
|
69
69
|
expect(result.errors.some(e => e.includes('末尾'))).toBe(true);
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
it('連続したハイフン', () => {
|
|
73
73
|
const result = validateFeatureName('user--auth');
|
|
74
|
-
expect(result.
|
|
74
|
+
expect(result.success).toBe(false);
|
|
75
75
|
expect(result.errors.some(e => e.includes('連続'))).toBe(true);
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
it('空文字', () => {
|
|
79
79
|
const result = validateFeatureName('');
|
|
80
|
-
expect(result.
|
|
80
|
+
expect(result.success).toBe(false);
|
|
81
81
|
expect(result.errors.some(e => e.includes('空'))).toBe(true);
|
|
82
82
|
});
|
|
83
83
|
|
|
84
84
|
it('特殊文字を含む', () => {
|
|
85
85
|
const result = validateFeatureName('user@auth');
|
|
86
|
-
expect(result.
|
|
86
|
+
expect(result.success).toBe(false);
|
|
87
87
|
expect(result.errors.some(e => e.includes('使用できない文字'))).toBe(true);
|
|
88
88
|
});
|
|
89
89
|
});
|