zudojs-cli 0.1.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +26 -3
- package/dist/src/adapters/databases/postgres.adapter.d.ts +0 -14
- package/dist/src/adapters/databases/postgres.adapter.js +0 -30
- package/dist/src/adapters/frontend/angular.adapter.js +6 -0
- package/dist/src/adapters/frontend/astro.adapter.js +2 -2
- package/dist/src/adapters/frontend/frontendAdapter.type.d.ts +6 -0
- package/dist/src/adapters/frontend/react.adapter.js +26 -17
- package/dist/src/adapters/frontend/svelte.adapter.js +1 -0
- package/dist/src/adapters/frontend/sveltekit.adapter.js +7 -8
- package/dist/src/adapters/frontend/vanilla.adapter.js +1 -1
- package/dist/src/adapters/frontend/vue.adapter.js +1 -0
- package/dist/src/adapters/package-managers/bun.adapter.js +5 -5
- package/dist/src/adapters/package-managers/npm.adapter.js +5 -5
- package/dist/src/adapters/package-managers/pnpm.adapter.js +5 -5
- package/dist/src/adapters/package-managers/yarn.adapter.js +5 -5
- package/dist/src/bin/zudojs.js +23 -11
- package/dist/src/cliApplication/cliApplication.builtins.d.ts +11 -2
- package/dist/src/cliApplication/cliApplication.builtins.js +15 -4
- package/dist/src/cliApplication/cliApplication.core.js +22 -7
- package/dist/src/cliApplication/cliApplication.logger.d.ts +28 -0
- package/dist/src/cliApplication/cliApplication.logger.js +68 -0
- package/dist/src/cliApplication/index.d.ts +1 -3
- package/dist/src/cliApplication/index.js +1 -3
- package/dist/src/cliConstant/cliConstant.value.d.ts +1 -1
- package/dist/src/cliConstant/cliConstant.value.js +2 -1
- package/dist/src/cliConstant/cliVersion.d.ts +16 -0
- package/dist/src/cliConstant/cliVersion.js +57 -0
- package/dist/src/cliParser/cliParser.core.js +7 -0
- package/dist/src/cliParser/cliParser.shortOption.js +1 -1
- package/dist/src/cliVersion/cliVersion.update.d.ts +38 -0
- package/dist/src/cliVersion/cliVersion.update.js +63 -0
- package/dist/src/cliVersion/index.d.ts +2 -1
- package/dist/src/cliVersion/index.js +2 -1
- package/dist/src/commands/add.command.d.ts +29 -0
- package/dist/src/commands/add.command.js +95 -107
- package/dist/src/commands/build.command.d.ts +8 -0
- package/dist/src/commands/build.command.js +24 -24
- package/dist/src/commands/create.command.js +176 -55
- package/dist/src/commands/dev.command.d.ts +30 -2
- package/dist/src/commands/dev.command.js +106 -150
- package/dist/src/commands/doctor.command.d.ts +18 -0
- package/dist/src/commands/doctor.command.js +160 -110
- package/dist/src/commands/generate.command.d.ts +2 -1
- package/dist/src/commands/generate.command.js +91 -41
- package/dist/src/commands/info.command.js +61 -30
- package/dist/src/constants/index.d.ts +19 -1
- package/dist/src/constants/index.js +32 -1
- package/dist/src/generators/command/command.generator.d.ts +1 -0
- package/dist/src/generators/command/command.generator.js +10 -4
- package/dist/src/generators/controller/controller.generator.d.ts +1 -0
- package/dist/src/generators/controller/controller.generator.js +12 -9
- package/dist/src/generators/dto/dto.generator.d.ts +1 -0
- package/dist/src/generators/dto/dto.generator.js +9 -3
- package/dist/src/generators/event/event.generator.d.ts +1 -0
- package/dist/src/generators/event/event.generator.js +10 -4
- package/dist/src/generators/frontend/frontendGenerator.core.d.ts +2 -0
- package/dist/src/generators/frontend/frontendGenerator.core.js +14 -27
- package/dist/src/generators/frontend/frontendPipeline.d.ts +26 -0
- package/dist/src/generators/frontend/frontendPipeline.js +136 -0
- package/dist/src/generators/fullstack/fullstackComposer.core.d.ts +3 -2
- package/dist/src/generators/fullstack/fullstackComposer.core.js +58 -43
- package/dist/src/generators/infrastructure/infrastructure.generator.d.ts +11 -0
- package/dist/src/generators/infrastructure/infrastructure.generator.js +101 -61
- package/dist/src/generators/integration/integrationGenerator.core.d.ts +6 -0
- package/dist/src/generators/integration/integrationGenerator.core.js +35 -6
- package/dist/src/generators/job/job.generator.d.ts +1 -0
- package/dist/src/generators/job/job.generator.js +9 -3
- package/dist/src/generators/middleware/middleware.generator.d.ts +1 -0
- package/dist/src/generators/middleware/middleware.generator.js +10 -4
- package/dist/src/generators/model/model.generator.d.ts +1 -0
- package/dist/src/generators/model/model.generator.js +9 -3
- package/dist/src/generators/module/module.generator.d.ts +1 -0
- package/dist/src/generators/module/module.generator.js +11 -24
- package/dist/src/generators/project/project.generator.js +2 -23
- package/dist/src/generators/query/query.generator.d.ts +1 -0
- package/dist/src/generators/query/query.generator.js +10 -4
- package/dist/src/generators/repository/repository.generator.d.ts +1 -0
- package/dist/src/generators/repository/repository.generator.js +12 -9
- package/dist/src/generators/route/route.generator.d.ts +1 -0
- package/dist/src/generators/route/route.generator.js +11 -5
- package/dist/src/generators/service/service.generator.d.ts +1 -0
- package/dist/src/generators/service/service.generator.js +12 -9
- package/dist/src/generators/validator/validator.generator.d.ts +1 -0
- package/dist/src/generators/validator/validator.generator.js +9 -3
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.js +3 -2
- package/dist/src/installers/dependency.installer.d.ts +9 -0
- package/dist/src/installers/dependency.installer.js +27 -2
- package/dist/src/installers/index.d.ts +1 -3
- package/dist/src/installers/index.js +1 -3
- package/dist/src/manifest/manifestManager.core.d.ts +3 -0
- package/dist/src/prompts/backend/index.d.ts +1 -0
- package/dist/src/prompts/backend/index.js +1 -0
- package/dist/src/prompts/backend/services.prompt.d.ts +7 -0
- package/dist/src/prompts/backend/services.prompt.js +39 -0
- package/dist/src/prompts/index.d.ts +0 -1
- package/dist/src/prompts/index.js +0 -1
- package/dist/src/resolvers/architecture.resolver.d.ts +11 -1
- package/dist/src/resolvers/architecture.resolver.js +12 -13
- package/dist/src/resolvers/configuration/configurationResolver.core.d.ts +10 -1
- package/dist/src/resolvers/configuration/configurationResolver.core.js +68 -29
- package/dist/src/resolvers/index.d.ts +1 -0
- package/dist/src/resolvers/index.js +1 -0
- package/dist/src/resolvers/layout/index.d.ts +5 -0
- package/dist/src/resolvers/layout/index.js +5 -0
- package/dist/src/resolvers/layout/projectLayout.core.d.ts +60 -0
- package/dist/src/resolvers/layout/projectLayout.core.js +236 -0
- package/dist/src/resolvers/project.resolver.d.ts +5 -0
- package/dist/src/resolvers/project.resolver.js +10 -6
- package/dist/src/rollback/rollbackManager.core.js +0 -1
- package/dist/src/runners/process/processRunner.core.d.ts +4 -0
- package/dist/src/runners/process/processRunner.core.js +17 -3
- package/dist/src/scaffolders/framework.scaffolder.js +9 -6
- package/dist/src/scaffolders/scaffolder.helper.js +7 -2
- package/dist/src/templates/microservice/index.d.ts +1 -1
- package/dist/src/templates/microservice/index.js +1 -1
- package/dist/src/templates/microservice/microservice.template.d.ts +14 -0
- package/dist/src/templates/microservice/microservice.template.js +140 -162
- package/dist/src/templates/modular-monolith/modularMonolith.template.d.ts +0 -1
- package/dist/src/templates/modular-monolith/modularMonolith.template.js +43 -77
- package/dist/src/templates/monolith/monolith.template.d.ts +1 -1
- package/dist/src/templates/monolith/monolith.template.js +46 -69
- package/dist/src/templates/shared/appRuntime.template.d.ts +60 -0
- package/dist/src/templates/shared/appRuntime.template.js +189 -0
- package/dist/src/templates/shared/index.d.ts +6 -0
- package/dist/src/templates/shared/index.js +6 -0
- package/dist/src/templates/shared/pnpm.template.d.ts +27 -0
- package/dist/src/templates/shared/pnpm.template.js +57 -0
- package/dist/src/utils/index.d.ts +3 -3
- package/dist/src/utils/index.js +3 -3
- package/dist/src/utils/utils.detect.d.ts +9 -0
- package/dist/src/utils/utils.detect.js +11 -11
- package/dist/src/utils/utils.exec.d.ts +35 -1
- package/dist/src/utils/utils.exec.js +99 -4
- package/dist/src/utils/utils.fileSystem.d.ts +6 -0
- package/dist/src/utils/utils.fileSystem.js +19 -0
- package/dist/src/utils/utils.name.d.ts +26 -0
- package/dist/src/utils/utils.name.js +51 -1
- package/package.json +32 -23
- package/dist/.tsbuildinfo +0 -1
- package/dist/src/adapters/databases/index.d.ts.map +0 -1
- package/dist/src/adapters/databases/index.js.map +0 -1
- package/dist/src/adapters/databases/mysql.adapter.d.ts.map +0 -1
- package/dist/src/adapters/databases/mysql.adapter.js.map +0 -1
- package/dist/src/adapters/databases/postgres.adapter.d.ts.map +0 -1
- package/dist/src/adapters/databases/postgres.adapter.js.map +0 -1
- package/dist/src/adapters/databases/sqlite.adapter.d.ts.map +0 -1
- package/dist/src/adapters/databases/sqlite.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/angular.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/angular.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/astro.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/astro.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/flutter.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/flutter.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/frontendAdapter.type.d.ts.map +0 -1
- package/dist/src/adapters/frontend/frontendAdapter.type.js.map +0 -1
- package/dist/src/adapters/frontend/index.d.ts.map +0 -1
- package/dist/src/adapters/frontend/index.js.map +0 -1
- package/dist/src/adapters/frontend/next.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/next.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/nuxt.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/nuxt.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/react-native.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/react-native.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/react.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/react.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/svelte.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/svelte.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/sveltekit.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/sveltekit.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/vanilla.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/vanilla.adapter.js.map +0 -1
- package/dist/src/adapters/frontend/vue.adapter.d.ts.map +0 -1
- package/dist/src/adapters/frontend/vue.adapter.js.map +0 -1
- package/dist/src/adapters/package-managers/bun.adapter.d.ts.map +0 -1
- package/dist/src/adapters/package-managers/bun.adapter.js.map +0 -1
- package/dist/src/adapters/package-managers/index.d.ts.map +0 -1
- package/dist/src/adapters/package-managers/index.js.map +0 -1
- package/dist/src/adapters/package-managers/npm.adapter.d.ts.map +0 -1
- package/dist/src/adapters/package-managers/npm.adapter.js.map +0 -1
- package/dist/src/adapters/package-managers/packageManager.type.d.ts.map +0 -1
- package/dist/src/adapters/package-managers/packageManager.type.js.map +0 -1
- package/dist/src/adapters/package-managers/pnpm.adapter.d.ts.map +0 -1
- package/dist/src/adapters/package-managers/pnpm.adapter.js.map +0 -1
- package/dist/src/adapters/package-managers/yarn.adapter.d.ts.map +0 -1
- package/dist/src/adapters/package-managers/yarn.adapter.js.map +0 -1
- package/dist/src/bin/zudojs.d.ts.map +0 -1
- package/dist/src/bin/zudojs.js.map +0 -1
- package/dist/src/cliApplication/cliApplication.builtins.d.ts.map +0 -1
- package/dist/src/cliApplication/cliApplication.builtins.js.map +0 -1
- package/dist/src/cliApplication/cliApplication.core.d.ts.map +0 -1
- package/dist/src/cliApplication/cliApplication.core.js.map +0 -1
- package/dist/src/cliApplication/cliApplication.writer.d.ts.map +0 -1
- package/dist/src/cliApplication/cliApplication.writer.js.map +0 -1
- package/dist/src/cliApplication/index.d.ts.map +0 -1
- package/dist/src/cliApplication/index.js.map +0 -1
- package/dist/src/cliCommand/cliCommand.builder.d.ts.map +0 -1
- package/dist/src/cliCommand/cliCommand.builder.js.map +0 -1
- package/dist/src/cliCommand/cliCommand.factory.d.ts.map +0 -1
- package/dist/src/cliCommand/cliCommand.factory.js.map +0 -1
- package/dist/src/cliCommand/cliCommand.registry.d.ts.map +0 -1
- package/dist/src/cliCommand/cliCommand.registry.js.map +0 -1
- package/dist/src/cliCommand/cliCommand.validator.d.ts.map +0 -1
- package/dist/src/cliCommand/cliCommand.validator.js.map +0 -1
- package/dist/src/cliCommand/index.d.ts.map +0 -1
- package/dist/src/cliCommand/index.js.map +0 -1
- package/dist/src/cliConstant/cliConstant.value.d.ts.map +0 -1
- package/dist/src/cliConstant/cliConstant.value.js.map +0 -1
- package/dist/src/cliConstant/index.d.ts.map +0 -1
- package/dist/src/cliConstant/index.js.map +0 -1
- package/dist/src/cliError/cliError.argument.d.ts.map +0 -1
- package/dist/src/cliError/cliError.argument.js.map +0 -1
- package/dist/src/cliError/cliError.base.d.ts.map +0 -1
- package/dist/src/cliError/cliError.base.js.map +0 -1
- package/dist/src/cliError/cliError.command.d.ts.map +0 -1
- package/dist/src/cliError/cliError.command.js.map +0 -1
- package/dist/src/cliError/cliError.execution.d.ts.map +0 -1
- package/dist/src/cliError/cliError.execution.js.map +0 -1
- package/dist/src/cliError/cliError.option.d.ts.map +0 -1
- package/dist/src/cliError/cliError.option.js.map +0 -1
- package/dist/src/cliError/index.d.ts.map +0 -1
- package/dist/src/cliError/index.js.map +0 -1
- package/dist/src/cliParser/cliParser.core.d.ts.map +0 -1
- package/dist/src/cliParser/cliParser.core.js.map +0 -1
- package/dist/src/cliParser/cliParser.helper.d.ts.map +0 -1
- package/dist/src/cliParser/cliParser.helper.js.map +0 -1
- package/dist/src/cliParser/cliParser.longOption.d.ts.map +0 -1
- package/dist/src/cliParser/cliParser.longOption.js.map +0 -1
- package/dist/src/cliParser/cliParser.shortOption.d.ts.map +0 -1
- package/dist/src/cliParser/cliParser.shortOption.js.map +0 -1
- package/dist/src/cliParser/index.d.ts.map +0 -1
- package/dist/src/cliParser/index.js.map +0 -1
- package/dist/src/cliType/cliType.type.d.ts.map +0 -1
- package/dist/src/cliType/cliType.type.js.map +0 -1
- package/dist/src/cliType/index.d.ts.map +0 -1
- package/dist/src/cliType/index.js.map +0 -1
- package/dist/src/cliVersion/cliVersion.core.d.ts.map +0 -1
- package/dist/src/cliVersion/cliVersion.core.js.map +0 -1
- package/dist/src/cliVersion/index.d.ts.map +0 -1
- package/dist/src/cliVersion/index.js.map +0 -1
- package/dist/src/commands/add.command.d.ts.map +0 -1
- package/dist/src/commands/add.command.js.map +0 -1
- package/dist/src/commands/build.command.d.ts.map +0 -1
- package/dist/src/commands/build.command.js.map +0 -1
- package/dist/src/commands/create.command.d.ts.map +0 -1
- package/dist/src/commands/create.command.js.map +0 -1
- package/dist/src/commands/dev.command.d.ts.map +0 -1
- package/dist/src/commands/dev.command.js.map +0 -1
- package/dist/src/commands/doctor.command.d.ts.map +0 -1
- package/dist/src/commands/doctor.command.js.map +0 -1
- package/dist/src/commands/generate.command.d.ts.map +0 -1
- package/dist/src/commands/generate.command.js.map +0 -1
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/commands/index.js.map +0 -1
- package/dist/src/commands/info.command.d.ts.map +0 -1
- package/dist/src/commands/info.command.js.map +0 -1
- package/dist/src/constants/index.d.ts.map +0 -1
- package/dist/src/constants/index.js.map +0 -1
- package/dist/src/errors/index.d.ts.map +0 -1
- package/dist/src/errors/index.js.map +0 -1
- package/dist/src/generators/backend/backend.generator.d.ts.map +0 -1
- package/dist/src/generators/backend/backend.generator.js.map +0 -1
- package/dist/src/generators/backend/index.d.ts.map +0 -1
- package/dist/src/generators/backend/index.js.map +0 -1
- package/dist/src/generators/command/command.generator.d.ts.map +0 -1
- package/dist/src/generators/command/command.generator.js.map +0 -1
- package/dist/src/generators/controller/controller.generator.d.ts.map +0 -1
- package/dist/src/generators/controller/controller.generator.js.map +0 -1
- package/dist/src/generators/dto/dto.generator.d.ts.map +0 -1
- package/dist/src/generators/dto/dto.generator.js.map +0 -1
- package/dist/src/generators/dto/index.d.ts.map +0 -1
- package/dist/src/generators/dto/index.js.map +0 -1
- package/dist/src/generators/event/event.generator.d.ts.map +0 -1
- package/dist/src/generators/event/event.generator.js.map +0 -1
- package/dist/src/generators/event/index.d.ts.map +0 -1
- package/dist/src/generators/event/index.js.map +0 -1
- package/dist/src/generators/frontend/frontendGenerator.core.d.ts.map +0 -1
- package/dist/src/generators/frontend/frontendGenerator.core.js.map +0 -1
- package/dist/src/generators/frontend/index.d.ts.map +0 -1
- package/dist/src/generators/frontend/index.js.map +0 -1
- package/dist/src/generators/fullstack/fullstackComposer.core.d.ts.map +0 -1
- package/dist/src/generators/fullstack/fullstackComposer.core.js.map +0 -1
- package/dist/src/generators/fullstack/index.d.ts.map +0 -1
- package/dist/src/generators/fullstack/index.js.map +0 -1
- package/dist/src/generators/index.d.ts.map +0 -1
- package/dist/src/generators/index.js.map +0 -1
- package/dist/src/generators/infrastructure/index.d.ts.map +0 -1
- package/dist/src/generators/infrastructure/index.js.map +0 -1
- package/dist/src/generators/infrastructure/infrastructure.generator.d.ts.map +0 -1
- package/dist/src/generators/infrastructure/infrastructure.generator.js.map +0 -1
- package/dist/src/generators/integration/index.d.ts.map +0 -1
- package/dist/src/generators/integration/index.js.map +0 -1
- package/dist/src/generators/integration/integrationGenerator.core.d.ts.map +0 -1
- package/dist/src/generators/integration/integrationGenerator.core.js.map +0 -1
- package/dist/src/generators/job/index.d.ts.map +0 -1
- package/dist/src/generators/job/index.js.map +0 -1
- package/dist/src/generators/job/job.generator.d.ts.map +0 -1
- package/dist/src/generators/job/job.generator.js.map +0 -1
- package/dist/src/generators/middleware/index.d.ts.map +0 -1
- package/dist/src/generators/middleware/index.js.map +0 -1
- package/dist/src/generators/middleware/middleware.generator.d.ts.map +0 -1
- package/dist/src/generators/middleware/middleware.generator.js.map +0 -1
- package/dist/src/generators/model/index.d.ts.map +0 -1
- package/dist/src/generators/model/index.js.map +0 -1
- package/dist/src/generators/model/model.generator.d.ts.map +0 -1
- package/dist/src/generators/model/model.generator.js.map +0 -1
- package/dist/src/generators/module/module.generator.d.ts.map +0 -1
- package/dist/src/generators/module/module.generator.js.map +0 -1
- package/dist/src/generators/project/project.generator.d.ts.map +0 -1
- package/dist/src/generators/project/project.generator.js.map +0 -1
- package/dist/src/generators/query/query.generator.d.ts.map +0 -1
- package/dist/src/generators/query/query.generator.js.map +0 -1
- package/dist/src/generators/repository/repository.generator.d.ts.map +0 -1
- package/dist/src/generators/repository/repository.generator.js.map +0 -1
- package/dist/src/generators/route/index.d.ts.map +0 -1
- package/dist/src/generators/route/index.js.map +0 -1
- package/dist/src/generators/route/route.generator.d.ts.map +0 -1
- package/dist/src/generators/route/route.generator.js.map +0 -1
- package/dist/src/generators/service/service.generator.d.ts.map +0 -1
- package/dist/src/generators/service/service.generator.js.map +0 -1
- package/dist/src/generators/validator/index.d.ts.map +0 -1
- package/dist/src/generators/validator/index.js.map +0 -1
- package/dist/src/generators/validator/validator.generator.d.ts.map +0 -1
- package/dist/src/generators/validator/validator.generator.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/installers/dependency.installer.d.ts.map +0 -1
- package/dist/src/installers/dependency.installer.js.map +0 -1
- package/dist/src/installers/index.d.ts.map +0 -1
- package/dist/src/installers/index.js.map +0 -1
- package/dist/src/manifest/index.d.ts.map +0 -1
- package/dist/src/manifest/index.js.map +0 -1
- package/dist/src/manifest/manifestManager.core.d.ts.map +0 -1
- package/dist/src/manifest/manifestManager.core.js.map +0 -1
- package/dist/src/prompts/backend/api-style.prompt.d.ts.map +0 -1
- package/dist/src/prompts/backend/api-style.prompt.js.map +0 -1
- package/dist/src/prompts/backend/backend-architecture.prompt.d.ts.map +0 -1
- package/dist/src/prompts/backend/backend-architecture.prompt.js.map +0 -1
- package/dist/src/prompts/backend/database.prompt.d.ts.map +0 -1
- package/dist/src/prompts/backend/database.prompt.js.map +0 -1
- package/dist/src/prompts/backend/index.d.ts.map +0 -1
- package/dist/src/prompts/backend/index.js.map +0 -1
- package/dist/src/prompts/capabilities/capabilities.prompt.d.ts.map +0 -1
- package/dist/src/prompts/capabilities/capabilities.prompt.js.map +0 -1
- package/dist/src/prompts/capabilities/index.d.ts.map +0 -1
- package/dist/src/prompts/capabilities/index.js.map +0 -1
- package/dist/src/prompts/frontend/framework.prompt.d.ts.map +0 -1
- package/dist/src/prompts/frontend/framework.prompt.js.map +0 -1
- package/dist/src/prompts/frontend/frontend-architecture.prompt.d.ts.map +0 -1
- package/dist/src/prompts/frontend/frontend-architecture.prompt.js.map +0 -1
- package/dist/src/prompts/frontend/index.d.ts.map +0 -1
- package/dist/src/prompts/frontend/index.js.map +0 -1
- package/dist/src/prompts/index.d.ts.map +0 -1
- package/dist/src/prompts/index.js.map +0 -1
- package/dist/src/prompts/project/confirmation.prompt.d.ts.map +0 -1
- package/dist/src/prompts/project/confirmation.prompt.js.map +0 -1
- package/dist/src/prompts/project/index.d.ts.map +0 -1
- package/dist/src/prompts/project/index.js.map +0 -1
- package/dist/src/prompts/project/project-name.prompt.d.ts.map +0 -1
- package/dist/src/prompts/project/project-name.prompt.js.map +0 -1
- package/dist/src/prompts/project/project-type.prompt.d.ts.map +0 -1
- package/dist/src/prompts/project/project-type.prompt.js.map +0 -1
- package/dist/src/prompts/prompts.createProject.d.ts +0 -33
- package/dist/src/prompts/prompts.createProject.d.ts.map +0 -1
- package/dist/src/prompts/prompts.createProject.js +0 -150
- package/dist/src/prompts/prompts.createProject.js.map +0 -1
- package/dist/src/prompts/workspace/index.d.ts.map +0 -1
- package/dist/src/prompts/workspace/index.js.map +0 -1
- package/dist/src/prompts/workspace/package-manager.prompt.d.ts.map +0 -1
- package/dist/src/prompts/workspace/package-manager.prompt.js.map +0 -1
- package/dist/src/registries/adapter/frontendAdapterRegistry.core.d.ts.map +0 -1
- package/dist/src/registries/adapter/frontendAdapterRegistry.core.js.map +0 -1
- package/dist/src/registries/adapter/packageManagerRegistry.core.d.ts.map +0 -1
- package/dist/src/registries/adapter/packageManagerRegistry.core.js.map +0 -1
- package/dist/src/registries/dependency/dependencyRegistry.core.d.ts.map +0 -1
- package/dist/src/registries/dependency/dependencyRegistry.core.js.map +0 -1
- package/dist/src/registries/dependency/index.d.ts.map +0 -1
- package/dist/src/registries/dependency/index.js.map +0 -1
- package/dist/src/registries/generator/generatorRegistry.core.d.ts.map +0 -1
- package/dist/src/registries/generator/generatorRegistry.core.js.map +0 -1
- package/dist/src/registries/generator/index.d.ts.map +0 -1
- package/dist/src/registries/generator/index.js.map +0 -1
- package/dist/src/registries/index.d.ts.map +0 -1
- package/dist/src/registries/index.js.map +0 -1
- package/dist/src/resolvers/architecture.resolver.d.ts.map +0 -1
- package/dist/src/resolvers/architecture.resolver.js.map +0 -1
- package/dist/src/resolvers/capability/capabilityResolver.core.d.ts.map +0 -1
- package/dist/src/resolvers/capability/capabilityResolver.core.js.map +0 -1
- package/dist/src/resolvers/capability/index.d.ts.map +0 -1
- package/dist/src/resolvers/capability/index.js.map +0 -1
- package/dist/src/resolvers/configuration/configurationResolver.core.d.ts.map +0 -1
- package/dist/src/resolvers/configuration/configurationResolver.core.js.map +0 -1
- package/dist/src/resolvers/configuration/index.d.ts.map +0 -1
- package/dist/src/resolvers/configuration/index.js.map +0 -1
- package/dist/src/resolvers/dependency/dependencyResolver.core.d.ts.map +0 -1
- package/dist/src/resolvers/dependency/dependencyResolver.core.js.map +0 -1
- package/dist/src/resolvers/dependency/index.d.ts.map +0 -1
- package/dist/src/resolvers/dependency/index.js.map +0 -1
- package/dist/src/resolvers/index.d.ts.map +0 -1
- package/dist/src/resolvers/index.js.map +0 -1
- package/dist/src/resolvers/project.resolver.d.ts.map +0 -1
- package/dist/src/resolvers/project.resolver.js.map +0 -1
- package/dist/src/rollback/index.d.ts.map +0 -1
- package/dist/src/rollback/index.js.map +0 -1
- package/dist/src/rollback/rollbackManager.core.d.ts.map +0 -1
- package/dist/src/rollback/rollbackManager.core.js.map +0 -1
- package/dist/src/runners/package-manager/index.d.ts.map +0 -1
- package/dist/src/runners/package-manager/index.js.map +0 -1
- package/dist/src/runners/package-manager/packageManagerRunner.core.d.ts.map +0 -1
- package/dist/src/runners/package-manager/packageManagerRunner.core.js.map +0 -1
- package/dist/src/runners/process/index.d.ts.map +0 -1
- package/dist/src/runners/process/index.js.map +0 -1
- package/dist/src/runners/process/processRunner.core.d.ts.map +0 -1
- package/dist/src/runners/process/processRunner.core.js.map +0 -1
- package/dist/src/runners/task/index.d.ts.map +0 -1
- package/dist/src/runners/task/index.js.map +0 -1
- package/dist/src/runners/task/taskRunner.core.d.ts.map +0 -1
- package/dist/src/runners/task/taskRunner.core.js.map +0 -1
- package/dist/src/scaffolders/framework.scaffolder.d.ts.map +0 -1
- package/dist/src/scaffolders/framework.scaffolder.js.map +0 -1
- package/dist/src/scaffolders/index.d.ts.map +0 -1
- package/dist/src/scaffolders/index.js.map +0 -1
- package/dist/src/scaffolders/scaffolder.helper.d.ts.map +0 -1
- package/dist/src/scaffolders/scaffolder.helper.js.map +0 -1
- package/dist/src/scripts/postinstall.cjs +0 -56
- package/dist/src/templates/microservice/index.d.ts.map +0 -1
- package/dist/src/templates/microservice/index.js.map +0 -1
- package/dist/src/templates/microservice/microservice.template.d.ts.map +0 -1
- package/dist/src/templates/microservice/microservice.template.js.map +0 -1
- package/dist/src/templates/modular-monolith/index.d.ts.map +0 -1
- package/dist/src/templates/modular-monolith/index.js.map +0 -1
- package/dist/src/templates/modular-monolith/modularMonolith.template.d.ts.map +0 -1
- package/dist/src/templates/modular-monolith/modularMonolith.template.js.map +0 -1
- package/dist/src/templates/monolith/index.d.ts.map +0 -1
- package/dist/src/templates/monolith/index.js.map +0 -1
- package/dist/src/templates/monolith/monolith.template.d.ts.map +0 -1
- package/dist/src/templates/monolith/monolith.template.js.map +0 -1
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/projectConfiguration.type.d.ts.map +0 -1
- package/dist/src/types/projectConfiguration.type.js.map +0 -1
- package/dist/src/types/scaffold.type.d.ts.map +0 -1
- package/dist/src/types/scaffold.type.js.map +0 -1
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/utils.detect.d.ts.map +0 -1
- package/dist/src/utils/utils.detect.js.map +0 -1
- package/dist/src/utils/utils.exec.d.ts.map +0 -1
- package/dist/src/utils/utils.exec.js.map +0 -1
- package/dist/src/utils/utils.fileSystem.d.ts.map +0 -1
- package/dist/src/utils/utils.fileSystem.js.map +0 -1
- package/dist/src/utils/utils.name.d.ts.map +0 -1
- package/dist/src/utils/utils.name.js.map +0 -1
- package/dist/src/validators/compatibility/compatibilityValidator.core.d.ts.map +0 -1
- package/dist/src/validators/compatibility/compatibilityValidator.core.js.map +0 -1
- package/dist/src/validators/compatibility/index.d.ts.map +0 -1
- package/dist/src/validators/compatibility/index.js.map +0 -1
- package/dist/src/validators/environment/environmentValidator.core.d.ts.map +0 -1
- package/dist/src/validators/environment/environmentValidator.core.js.map +0 -1
- package/dist/src/validators/environment/index.d.ts.map +0 -1
- package/dist/src/validators/environment/index.js.map +0 -1
- package/dist/src/validators/index.d.ts.map +0 -1
- package/dist/src/validators/index.js.map +0 -1
- package/dist/src/validators/project/index.d.ts.map +0 -1
- package/dist/src/validators/project/index.js.map +0 -1
- package/dist/src/validators/project/projectValidator.core.d.ts.map +0 -1
- package/dist/src/validators/project/projectValidator.core.js.map +0 -1
- package/src/scripts/postinstall.cjs +0 -56
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* │ ├── loggers/
|
|
25
25
|
* │ ├── middlewares/
|
|
26
26
|
* │ ├── models/
|
|
27
|
+
* │ ├── modules/
|
|
27
28
|
* │ ├── repositories/
|
|
28
29
|
* │ ├── routes/
|
|
29
30
|
* │ ├── services/
|
|
@@ -33,20 +34,19 @@
|
|
|
33
34
|
* ├── tests/
|
|
34
35
|
* ├── package.json
|
|
35
36
|
* ├── tsconfig.json
|
|
36
|
-
* ├── zudojs.config.ts
|
|
37
37
|
* └── README.md
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
+
import { ZUDOJS_PACKAGES_VERSION } from "../../constants/index.js";
|
|
41
|
+
import { normalizeName, toPascalCase } from "../../utils/utils.name.js";
|
|
42
|
+
import { RUNTIME_APP_DEPENDENCIES, moduleSpec, renderAppFile, renderModuleFile, renderServerFile, renderServiceFile, renderPnpmWorkspaceFile, } from "../shared/index.js";
|
|
40
43
|
export function generateMonolithFiles(options) {
|
|
41
44
|
const name = options.projectName;
|
|
42
45
|
const nameSlug = name.replace(/[^a-z0-9-]+/gi, "-").toLowerCase();
|
|
43
46
|
const deps = [
|
|
44
|
-
|
|
45
|
-
"@zudojs/container",
|
|
47
|
+
...RUNTIME_APP_DEPENDENCIES,
|
|
46
48
|
"@zudojs/config",
|
|
47
|
-
"@zudojs/logger",
|
|
48
49
|
"@zudojs/errors",
|
|
49
|
-
"@zudojs/constants",
|
|
50
50
|
"@zudojs/types",
|
|
51
51
|
"@zudojs/validation",
|
|
52
52
|
"@zudojs/schema",
|
|
@@ -67,7 +67,12 @@ export function generateMonolithFiles(options) {
|
|
|
67
67
|
if (options.enableOpenAPI) {
|
|
68
68
|
deps.push("@zudojs/openapi");
|
|
69
69
|
}
|
|
70
|
-
const devDeps =
|
|
70
|
+
const devDeps = {
|
|
71
|
+
tsx: "^4.7.0",
|
|
72
|
+
typescript: "^5.7.0",
|
|
73
|
+
"@types/node": "^24.0.0",
|
|
74
|
+
vitest: "^3.0.0",
|
|
75
|
+
};
|
|
71
76
|
const files = {};
|
|
72
77
|
// Root files
|
|
73
78
|
files["package.json"] =
|
|
@@ -77,16 +82,21 @@ export function generateMonolithFiles(options) {
|
|
|
77
82
|
private: true,
|
|
78
83
|
type: "module",
|
|
79
84
|
license: "MIT",
|
|
85
|
+
zudojs: {
|
|
86
|
+
projectType: "backend",
|
|
87
|
+
architecture: "monolith",
|
|
88
|
+
features: [],
|
|
89
|
+
},
|
|
80
90
|
scripts: {
|
|
81
|
-
dev: "
|
|
91
|
+
dev: "tsx watch src/server.ts",
|
|
82
92
|
start: "node dist/server.js",
|
|
83
93
|
build: "tsc",
|
|
84
94
|
typecheck: "tsc --noEmit",
|
|
85
95
|
test: "vitest run",
|
|
86
96
|
lint: "tsc --noEmit",
|
|
87
97
|
},
|
|
88
|
-
dependencies: Object.fromEntries([...new Set(deps)].map((d) => [d,
|
|
89
|
-
devDependencies:
|
|
98
|
+
dependencies: Object.fromEntries([...new Set(deps)].map((d) => [d, ZUDOJS_PACKAGES_VERSION])),
|
|
99
|
+
devDependencies: devDeps,
|
|
90
100
|
}, null, 2) + "\n";
|
|
91
101
|
// tsconfig
|
|
92
102
|
files["tsconfig.json"] = `{
|
|
@@ -94,9 +104,9 @@ export function generateMonolithFiles(options) {
|
|
|
94
104
|
"target": "ES2024",
|
|
95
105
|
"module": "Node16",
|
|
96
106
|
"moduleResolution": "Node16",
|
|
97
|
-
"
|
|
107
|
+
"outDir": "dist",
|
|
108
|
+
"rootDir": "src",
|
|
98
109
|
"strict": true,
|
|
99
|
-
"noEmit": true,
|
|
100
110
|
"skipLibCheck": true,
|
|
101
111
|
"esModuleInterop": true,
|
|
102
112
|
"resolveJsonModule": true,
|
|
@@ -107,6 +117,9 @@ export function generateMonolithFiles(options) {
|
|
|
107
117
|
"exclude": ["node_modules", "dist", "**/*.test.ts"]
|
|
108
118
|
}
|
|
109
119
|
`;
|
|
120
|
+
if (options.packageManager === "pnpm") {
|
|
121
|
+
files["pnpm-workspace.yaml"] = renderPnpmWorkspaceFile();
|
|
122
|
+
}
|
|
110
123
|
// Environment
|
|
111
124
|
files[".env.example"] = `NODE_ENV=development
|
|
112
125
|
PORT=3000
|
|
@@ -127,7 +140,7 @@ A Zudojs framework application.
|
|
|
127
140
|
## Getting Started
|
|
128
141
|
|
|
129
142
|
\`\`\`bash
|
|
130
|
-
${options.packageManager === "npm" ? "
|
|
143
|
+
${options.packageManager === "npm" ? "npm run dev" : options.packageManager === "yarn" ? "yarn dev" : options.packageManager === "bun" ? "bun run dev" : "pnpm run dev"}
|
|
131
144
|
\`\`\`
|
|
132
145
|
|
|
133
146
|
## Structure
|
|
@@ -150,6 +163,7 @@ src/
|
|
|
150
163
|
├── loggers/ # Logger configuration
|
|
151
164
|
├── middlewares/ # HTTP middleware
|
|
152
165
|
├── models/ # Data models
|
|
166
|
+
├── modules/ # Runtime modules
|
|
153
167
|
├── repositories/ # Data repositories
|
|
154
168
|
├── routes/ # HTTP routes
|
|
155
169
|
├── services/ # Application services
|
|
@@ -165,47 +179,24 @@ MIT
|
|
|
165
179
|
// src/ entry points
|
|
166
180
|
files["src/index.ts"] = `export { createApp } from "./app.js";
|
|
167
181
|
`;
|
|
168
|
-
files["src/server.ts"] =
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
process.exit(0);
|
|
187
|
-
});
|
|
188
|
-
`;
|
|
189
|
-
files["src/app.ts"] = `import { logger } from "@zudojs/logger";
|
|
190
|
-
import { createContainer } from "@zudojs/container";
|
|
191
|
-
|
|
192
|
-
export async function createApp() {
|
|
193
|
-
const log = logger.child({ service: "app" });
|
|
194
|
-
const container = createContainer();
|
|
195
|
-
|
|
196
|
-
log.info("${nameSlug} v0.1.0 starting...");
|
|
197
|
-
|
|
198
|
-
return {
|
|
199
|
-
container,
|
|
200
|
-
listen: async () => {
|
|
201
|
-
log.info("Server started");
|
|
202
|
-
},
|
|
203
|
-
stop: async () => {
|
|
204
|
-
log.info("Shutting down...");
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
`;
|
|
182
|
+
files["src/server.ts"] = renderServerFile();
|
|
183
|
+
// Normalized: the name becomes a file path segment and a class name.
|
|
184
|
+
const moduleName = normalizeName(options.services[0] ?? "app") || "app";
|
|
185
|
+
const serviceClassName = `${toPascalCase(moduleName)}Service`;
|
|
186
|
+
const appModule = moduleSpec(moduleName, "./modules/index.js");
|
|
187
|
+
files["src/app.ts"] = renderAppFile({
|
|
188
|
+
applicationName: nameSlug,
|
|
189
|
+
modules: [appModule],
|
|
190
|
+
});
|
|
191
|
+
files[`src/modules/${moduleName}.module.ts`] = renderModuleFile({
|
|
192
|
+
module: appModule,
|
|
193
|
+
service: {
|
|
194
|
+
className: serviceClassName,
|
|
195
|
+
importPath: "../services/index.js",
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
files["src/modules/index.ts"] =
|
|
199
|
+
`export { ${appModule.className} } from "./${moduleName}.module.js";\n`;
|
|
209
200
|
// Shared directories with empty index.ts
|
|
210
201
|
const sharedDirs = [
|
|
211
202
|
"configs",
|
|
@@ -232,23 +223,9 @@ export async function createApp() {
|
|
|
232
223
|
files[`src/${dir}/index.ts`] = "";
|
|
233
224
|
}
|
|
234
225
|
// Services
|
|
235
|
-
|
|
236
|
-
const serviceNamePascal = serviceName
|
|
237
|
-
.replace(/-([a-z])/g, (_m, c) => c.toUpperCase())
|
|
238
|
-
.replace(/^./, (c) => c.toUpperCase());
|
|
239
|
-
files[`src/services/${serviceName}.service.ts`] = `import { createLogger } from "@zudojs/logger";
|
|
240
|
-
|
|
241
|
-
export class ${serviceNamePascal}Service {
|
|
242
|
-
private readonly logger = createLogger({ service: "${serviceName}" });
|
|
243
|
-
|
|
244
|
-
async initialize(): Promise<void> {
|
|
245
|
-
this.logger.info("${serviceName} service initialized");
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
`;
|
|
226
|
+
files[`src/services/${moduleName}.service.ts`] = renderServiceFile(moduleName);
|
|
249
227
|
files["src/services/index.ts"] =
|
|
250
|
-
`export { ${
|
|
251
|
-
`;
|
|
228
|
+
`export { ${serviceClassName} } from "./${moduleName}.service.js";\n`;
|
|
252
229
|
// Controllers
|
|
253
230
|
files["src/controllers/health.controller.ts"] =
|
|
254
231
|
`export class HealthController {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zudojs-cli — Shared Runtime App Templates
|
|
3
|
+
*
|
|
4
|
+
* Every architecture template assembles the same four framework pieces:
|
|
5
|
+
* a logger, a container, an event bus and a set of modules, handed to
|
|
6
|
+
* `createRuntime(dependencies, options)`.
|
|
7
|
+
*
|
|
8
|
+
* The emitted source is kept here rather than duplicated per architecture
|
|
9
|
+
* so it can be verified against the real `@zudojs/*` packages in one place.
|
|
10
|
+
* `tests/generatedProject.typecheck.test.ts` type-checks the output of every
|
|
11
|
+
* template against `packages/<name>/src/index.ts`, so any drift between these
|
|
12
|
+
* snippets and the framework API fails the CLI test suite.
|
|
13
|
+
*/
|
|
14
|
+
/** Packages every generated runtime entry point imports from. */
|
|
15
|
+
export declare const RUNTIME_APP_DEPENDENCIES: readonly ["@zudojs/core", "@zudojs/runtime", "@zudojs/container", "@zudojs/events", "@zudojs/logger", "@zudojs/constants"];
|
|
16
|
+
/** A module registered with the runtime by the generated `createApp`. */
|
|
17
|
+
export interface RuntimeModuleSpec {
|
|
18
|
+
/** Slug used for the module id, file name and log messages. */
|
|
19
|
+
readonly name: string;
|
|
20
|
+
/** PascalCase class name. */
|
|
21
|
+
readonly className: string;
|
|
22
|
+
/** Import specifier the module class is imported from, relative to app.ts. */
|
|
23
|
+
readonly importPath: string;
|
|
24
|
+
}
|
|
25
|
+
/** Builds a module spec from a raw name. */
|
|
26
|
+
export declare function moduleSpec(name: string, importPath: string): RuntimeModuleSpec;
|
|
27
|
+
/**
|
|
28
|
+
* Renders `src/app.ts`: assembles the runtime dependencies and returns a
|
|
29
|
+
* started-on-demand `Runtime`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function renderAppFile(options: {
|
|
32
|
+
readonly applicationName: string;
|
|
33
|
+
readonly modules: readonly RuntimeModuleSpec[];
|
|
34
|
+
/**
|
|
35
|
+
* Port this app is deployed on. Recorded as runtime metadata so the value
|
|
36
|
+
* in docker-compose.yml and the Dockerfile is also visible from the app.
|
|
37
|
+
*/
|
|
38
|
+
readonly port?: number;
|
|
39
|
+
}): string;
|
|
40
|
+
/**
|
|
41
|
+
* Renders `src/server.ts`: the process entry point. Starts the runtime and
|
|
42
|
+
* stops it cleanly on SIGINT/SIGTERM.
|
|
43
|
+
*/
|
|
44
|
+
export declare function renderServerFile(appImportPath?: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Renders a module class extending `BaseModule`.
|
|
47
|
+
*
|
|
48
|
+
* `BaseModule`'s constructor is protected, so the generated class declares a
|
|
49
|
+
* public constructor — without one the class cannot be instantiated.
|
|
50
|
+
*/
|
|
51
|
+
export declare function renderModuleFile(options: {
|
|
52
|
+
readonly module: RuntimeModuleSpec;
|
|
53
|
+
readonly service?: {
|
|
54
|
+
readonly className: string;
|
|
55
|
+
readonly importPath: string;
|
|
56
|
+
};
|
|
57
|
+
}): string;
|
|
58
|
+
/** Renders a service class using the real `createLogger` factory. */
|
|
59
|
+
export declare function renderServiceFile(name: string): string;
|
|
60
|
+
//# sourceMappingURL=appRuntime.template.d.ts.map
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zudojs-cli — Shared Runtime App Templates
|
|
3
|
+
*
|
|
4
|
+
* Every architecture template assembles the same four framework pieces:
|
|
5
|
+
* a logger, a container, an event bus and a set of modules, handed to
|
|
6
|
+
* `createRuntime(dependencies, options)`.
|
|
7
|
+
*
|
|
8
|
+
* The emitted source is kept here rather than duplicated per architecture
|
|
9
|
+
* so it can be verified against the real `@zudojs/*` packages in one place.
|
|
10
|
+
* `tests/generatedProject.typecheck.test.ts` type-checks the output of every
|
|
11
|
+
* template against `packages/<name>/src/index.ts`, so any drift between these
|
|
12
|
+
* snippets and the framework API fails the CLI test suite.
|
|
13
|
+
*/
|
|
14
|
+
import { toPascalCase } from "../../utils/utils.name.js";
|
|
15
|
+
/** Packages every generated runtime entry point imports from. */
|
|
16
|
+
export const RUNTIME_APP_DEPENDENCIES = [
|
|
17
|
+
"@zudojs/core",
|
|
18
|
+
"@zudojs/runtime",
|
|
19
|
+
"@zudojs/container",
|
|
20
|
+
"@zudojs/events",
|
|
21
|
+
"@zudojs/logger",
|
|
22
|
+
"@zudojs/constants",
|
|
23
|
+
];
|
|
24
|
+
/** Builds a module spec from a raw name. */
|
|
25
|
+
export function moduleSpec(name, importPath) {
|
|
26
|
+
return {
|
|
27
|
+
name,
|
|
28
|
+
className: `${toPascalCase(name)}Module`,
|
|
29
|
+
importPath,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** Emits a string as a TypeScript string literal that cannot break out. */
|
|
33
|
+
function literal(value) {
|
|
34
|
+
return JSON.stringify(value);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Renders `src/app.ts`: assembles the runtime dependencies and returns a
|
|
38
|
+
* started-on-demand `Runtime`.
|
|
39
|
+
*/
|
|
40
|
+
export function renderAppFile(options) {
|
|
41
|
+
const imports = [...options.modules]
|
|
42
|
+
.map((m) => `import { ${m.className} } from ${literal(m.importPath)};`)
|
|
43
|
+
.join("\n");
|
|
44
|
+
// An empty array literal would make the loop variable `never`, so the
|
|
45
|
+
// registration loop is only emitted when there is at least one module.
|
|
46
|
+
const registration = options.modules.length > 0
|
|
47
|
+
? ` for (const module of [
|
|
48
|
+
${options.modules.map((m) => ` new ${m.className}(),`).join("\n")}
|
|
49
|
+
]) {
|
|
50
|
+
modules.set(module.id, module);
|
|
51
|
+
}
|
|
52
|
+
`
|
|
53
|
+
: "";
|
|
54
|
+
const metadata = options.port === undefined
|
|
55
|
+
? ""
|
|
56
|
+
: `\n metadata: { port: ${options.port} },`;
|
|
57
|
+
return `import type { Environment } from "@zudojs/constants";
|
|
58
|
+
import { createContainer } from "@zudojs/container";
|
|
59
|
+
import type { Module } from "@zudojs/core";
|
|
60
|
+
import { createEventBus } from "@zudojs/events";
|
|
61
|
+
import { createLogger } from "@zudojs/logger";
|
|
62
|
+
import { createRuntime, type Runtime } from "@zudojs/runtime";
|
|
63
|
+
${imports}
|
|
64
|
+
|
|
65
|
+
const ENVIRONMENTS: readonly Environment[] = [
|
|
66
|
+
"development",
|
|
67
|
+
"test",
|
|
68
|
+
"staging",
|
|
69
|
+
"production",
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
/** Narrows NODE_ENV to a framework Environment without an unchecked cast. */
|
|
73
|
+
function resolveEnvironment(): Environment {
|
|
74
|
+
const value = process.env["NODE_ENV"];
|
|
75
|
+
return ENVIRONMENTS.find((candidate) => candidate === value) ?? "development";
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Assembles the application runtime.
|
|
80
|
+
*
|
|
81
|
+
* \`createRuntime\` takes two arguments: the dependencies the runtime and its
|
|
82
|
+
* modules share, and the options describing this application.
|
|
83
|
+
*/
|
|
84
|
+
export function createApp(): Runtime {
|
|
85
|
+
const logger = createLogger({ name: ${literal(options.applicationName)} });
|
|
86
|
+
const container = createContainer();
|
|
87
|
+
const eventBus = createEventBus();
|
|
88
|
+
|
|
89
|
+
const modules = new Map<string, Module>();
|
|
90
|
+
${registration}
|
|
91
|
+
const runtime = createRuntime(
|
|
92
|
+
{ modules, logger, container, eventBus },
|
|
93
|
+
{
|
|
94
|
+
applicationName: ${literal(options.applicationName)},
|
|
95
|
+
applicationVersion: "0.1.0",
|
|
96
|
+
environment: resolveEnvironment(),
|
|
97
|
+
// Signals are handled explicitly in server.ts.
|
|
98
|
+
handleSignals: false,${metadata}
|
|
99
|
+
},
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
runtime.registerReadinessCheck("modules", () => runtime.state === "running");
|
|
103
|
+
|
|
104
|
+
return runtime;
|
|
105
|
+
}
|
|
106
|
+
`;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Renders `src/server.ts`: the process entry point. Starts the runtime and
|
|
110
|
+
* stops it cleanly on SIGINT/SIGTERM.
|
|
111
|
+
*/
|
|
112
|
+
export function renderServerFile(appImportPath = "./app.js") {
|
|
113
|
+
return `import { createApp } from ${literal(appImportPath)};
|
|
114
|
+
|
|
115
|
+
const runtime = createApp();
|
|
116
|
+
|
|
117
|
+
await runtime.start();
|
|
118
|
+
|
|
119
|
+
for (const signal of ["SIGINT", "SIGTERM"] as const) {
|
|
120
|
+
process.once(signal, () => {
|
|
121
|
+
void runtime
|
|
122
|
+
.stop()
|
|
123
|
+
.then(() => {
|
|
124
|
+
process.exit(0);
|
|
125
|
+
})
|
|
126
|
+
.catch((error: unknown) => {
|
|
127
|
+
console.error(error);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
`;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Renders a module class extending `BaseModule`.
|
|
136
|
+
*
|
|
137
|
+
* `BaseModule`'s constructor is protected, so the generated class declares a
|
|
138
|
+
* public constructor — without one the class cannot be instantiated.
|
|
139
|
+
*/
|
|
140
|
+
export function renderModuleFile(options) {
|
|
141
|
+
const { module, service } = options;
|
|
142
|
+
const serviceImport = service
|
|
143
|
+
? `import { ${service.className} } from ${literal(service.importPath)};\n`
|
|
144
|
+
: "";
|
|
145
|
+
const serviceField = service
|
|
146
|
+
? ` private readonly service = new ${service.className}();\n\n`
|
|
147
|
+
: "";
|
|
148
|
+
const serviceInit = service ? " await this.service.initialize();\n" : "";
|
|
149
|
+
return `import { BaseModule, type ModuleContext } from "@zudojs/core";
|
|
150
|
+
${serviceImport}
|
|
151
|
+
/**
|
|
152
|
+
* ${module.name} module.
|
|
153
|
+
*
|
|
154
|
+
* Registered with the runtime in app.ts. The runtime calls onInitialize
|
|
155
|
+
* during start and onShutdown during stop.
|
|
156
|
+
*/
|
|
157
|
+
export class ${module.className} extends BaseModule {
|
|
158
|
+
public readonly id = ${literal(module.name)};
|
|
159
|
+
public readonly name = ${literal(module.name)};
|
|
160
|
+
|
|
161
|
+
${serviceField} public constructor() {
|
|
162
|
+
super({ version: "0.1.0" });
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
public override async onInitialize(context: ModuleContext): Promise<void> {
|
|
166
|
+
${serviceInit} context.logger.info(${literal(`${module.name} module initialized`)});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
public override async onShutdown(context: ModuleContext): Promise<void> {
|
|
170
|
+
context.logger.info(${literal(`${module.name} module stopped`)});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
`;
|
|
174
|
+
}
|
|
175
|
+
/** Renders a service class using the real `createLogger` factory. */
|
|
176
|
+
export function renderServiceFile(name) {
|
|
177
|
+
const className = `${toPascalCase(name)}Service`;
|
|
178
|
+
return `import { createLogger } from "@zudojs/logger";
|
|
179
|
+
|
|
180
|
+
export class ${className} {
|
|
181
|
+
private readonly logger = createLogger({ name: ${literal(`${name}-service`)} });
|
|
182
|
+
|
|
183
|
+
public async initialize(): Promise<void> {
|
|
184
|
+
this.logger.info(${literal(`${name} service initialized`)});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
`;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=appRuntime.template.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zudojs-cli — pnpm settings for generated projects
|
|
3
|
+
*
|
|
4
|
+
* pnpm 10 stopped running the install scripts of dependencies unless the
|
|
5
|
+
* project lists them, and pnpm 11 turned the resulting notice into a failing
|
|
6
|
+
* `ERR_PNPM_IGNORED_BUILDS`. Every generated project depends on `tsx`
|
|
7
|
+
* (backend) or Vite (frontend), both of which pull in esbuild and its
|
|
8
|
+
* postinstall, so a fresh `pnpm install` exited with code 1 and
|
|
9
|
+
* `pnpm run dev` — which re-verifies the install first — never started.
|
|
10
|
+
*
|
|
11
|
+
* pnpm 10 reads `onlyBuiltDependencies`; pnpm 11 reads `allowBuilds`. Both
|
|
12
|
+
* are written so either version installs cleanly, and both live in
|
|
13
|
+
* `pnpm-workspace.yaml`, the file pnpm itself creates for this purpose.
|
|
14
|
+
*
|
|
15
|
+
* @module templates/shared/pnpm
|
|
16
|
+
*/
|
|
17
|
+
/** Dependencies whose install scripts a generated project allows. */
|
|
18
|
+
export declare const PNPM_ALLOWED_BUILD_SCRIPTS: readonly ["esbuild", "@swc/core", "sharp", "@parcel/watcher", "@tailwindcss/oxide", "unrs-resolver"];
|
|
19
|
+
/**
|
|
20
|
+
* Renders `pnpm-workspace.yaml`.
|
|
21
|
+
*
|
|
22
|
+
* `packages` is omitted for a single-package project: pnpm then treats the
|
|
23
|
+
* directory as the sole workspace member, which is what it already does
|
|
24
|
+
* when it writes the file itself.
|
|
25
|
+
*/
|
|
26
|
+
export declare function renderPnpmWorkspaceFile(packages?: readonly string[]): string;
|
|
27
|
+
//# sourceMappingURL=pnpm.template.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* zudojs-cli — pnpm settings for generated projects
|
|
3
|
+
*
|
|
4
|
+
* pnpm 10 stopped running the install scripts of dependencies unless the
|
|
5
|
+
* project lists them, and pnpm 11 turned the resulting notice into a failing
|
|
6
|
+
* `ERR_PNPM_IGNORED_BUILDS`. Every generated project depends on `tsx`
|
|
7
|
+
* (backend) or Vite (frontend), both of which pull in esbuild and its
|
|
8
|
+
* postinstall, so a fresh `pnpm install` exited with code 1 and
|
|
9
|
+
* `pnpm run dev` — which re-verifies the install first — never started.
|
|
10
|
+
*
|
|
11
|
+
* pnpm 10 reads `onlyBuiltDependencies`; pnpm 11 reads `allowBuilds`. Both
|
|
12
|
+
* are written so either version installs cleanly, and both live in
|
|
13
|
+
* `pnpm-workspace.yaml`, the file pnpm itself creates for this purpose.
|
|
14
|
+
*
|
|
15
|
+
* @module templates/shared/pnpm
|
|
16
|
+
*/
|
|
17
|
+
/** Dependencies whose install scripts a generated project allows. */
|
|
18
|
+
export const PNPM_ALLOWED_BUILD_SCRIPTS = [
|
|
19
|
+
"esbuild",
|
|
20
|
+
"@swc/core",
|
|
21
|
+
"sharp",
|
|
22
|
+
"@parcel/watcher",
|
|
23
|
+
"@tailwindcss/oxide",
|
|
24
|
+
"unrs-resolver",
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Renders `pnpm-workspace.yaml`.
|
|
28
|
+
*
|
|
29
|
+
* `packages` is omitted for a single-package project: pnpm then treats the
|
|
30
|
+
* directory as the sole workspace member, which is what it already does
|
|
31
|
+
* when it writes the file itself.
|
|
32
|
+
*/
|
|
33
|
+
export function renderPnpmWorkspaceFile(packages = []) {
|
|
34
|
+
const lines = [];
|
|
35
|
+
if (packages.length > 0) {
|
|
36
|
+
lines.push("packages:");
|
|
37
|
+
for (const glob of packages) {
|
|
38
|
+
lines.push(` - ${JSON.stringify(glob)}`);
|
|
39
|
+
}
|
|
40
|
+
lines.push("");
|
|
41
|
+
}
|
|
42
|
+
lines.push("# Dependencies allowed to run install scripts (pnpm 10).");
|
|
43
|
+
lines.push("onlyBuiltDependencies:");
|
|
44
|
+
for (const name of PNPM_ALLOWED_BUILD_SCRIPTS) {
|
|
45
|
+
// Quoted: a bare leading "@" is a reserved YAML indicator.
|
|
46
|
+
lines.push(` - ${JSON.stringify(name)}`);
|
|
47
|
+
}
|
|
48
|
+
lines.push("");
|
|
49
|
+
lines.push("# The same list in the form pnpm 11 reads.");
|
|
50
|
+
lines.push("allowBuilds:");
|
|
51
|
+
for (const name of PNPM_ALLOWED_BUILD_SCRIPTS) {
|
|
52
|
+
lines.push(` ${JSON.stringify(name)}: true`);
|
|
53
|
+
}
|
|
54
|
+
lines.push("");
|
|
55
|
+
return lines.join("\n");
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=pnpm.template.js.map
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Shared utility functions for the CLI scaffolding system.
|
|
5
5
|
*/
|
|
6
|
-
export { writeFile, writeFileTree } from "./utils.fileSystem.js";
|
|
7
|
-
export { normalizeName } from "./utils.name.js";
|
|
6
|
+
export { writeFile, writeFileTree, mergeBarrelExport, } from "./utils.fileSystem.js";
|
|
7
|
+
export { normalizeName, toPascalCase, toCamelCase } from "./utils.name.js";
|
|
8
8
|
export { detectArchitecture } from "./utils.detect.js";
|
|
9
|
-
export { execCommand } from "./utils.exec.js";
|
|
9
|
+
export { execCommand, runStreaming } from "./utils.exec.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/utils/index.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Shared utility functions for the CLI scaffolding system.
|
|
5
5
|
*/
|
|
6
|
-
export { writeFile, writeFileTree } from "./utils.fileSystem.js";
|
|
7
|
-
export { normalizeName } from "./utils.name.js";
|
|
6
|
+
export { writeFile, writeFileTree, mergeBarrelExport, } from "./utils.fileSystem.js";
|
|
7
|
+
export { normalizeName, toPascalCase, toCamelCase } from "./utils.name.js";
|
|
8
8
|
export { detectArchitecture } from "./utils.detect.js";
|
|
9
|
-
export { execCommand } from "./utils.exec.js";
|
|
9
|
+
export { execCommand, runStreaming } from "./utils.exec.js";
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the recorded architecture of the project at `cwd`, or `null` when
|
|
3
|
+
* the directory is not a Zudojs project.
|
|
4
|
+
*
|
|
5
|
+
* Used to read a `zudojs.config.json` that no template has ever written, so
|
|
6
|
+
* it returned `null` for every project. It now reads the same sources as
|
|
7
|
+
* every other command: the manifest, the legacy `zudojs.config.ts`, then
|
|
8
|
+
* the `zudojs` block in `package.json`.
|
|
9
|
+
*/
|
|
1
10
|
export declare function detectArchitecture(cwd: string): Promise<string | null>;
|
|
2
11
|
//# sourceMappingURL=utils.detect.d.ts.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { resolveProjectLayout } from "../resolvers/layout/projectLayout.core.js";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the recorded architecture of the project at `cwd`, or `null` when
|
|
4
|
+
* the directory is not a Zudojs project.
|
|
5
|
+
*
|
|
6
|
+
* Used to read a `zudojs.config.json` that no template has ever written, so
|
|
7
|
+
* it returned `null` for every project. It now reads the same sources as
|
|
8
|
+
* every other command: the manifest, the legacy `zudojs.config.ts`, then
|
|
9
|
+
* the `zudojs` block in `package.json`.
|
|
10
|
+
*/
|
|
3
11
|
export async function detectArchitecture(cwd) {
|
|
4
|
-
|
|
5
|
-
const configPath = join(cwd, "zudojs.config.json");
|
|
6
|
-
const content = await readFile(configPath, "utf-8");
|
|
7
|
-
const config = JSON.parse(content);
|
|
8
|
-
return config.architecture ?? null;
|
|
9
|
-
}
|
|
10
|
-
catch {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
12
|
+
return resolveProjectLayout(cwd)?.architecture ?? null;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=utils.detect.js.map
|
|
@@ -2,5 +2,39 @@ export interface ExecResult {
|
|
|
2
2
|
readonly stdout: string;
|
|
3
3
|
readonly stderr: string;
|
|
4
4
|
}
|
|
5
|
-
export
|
|
5
|
+
export interface ExecOptions {
|
|
6
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
7
|
+
readonly timeout?: number;
|
|
8
|
+
/** Aborting the signal terminates the child process. */
|
|
9
|
+
readonly signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Quotes one argument for cmd.exe. Arguments are validated before they reach
|
|
13
|
+
* here (project and service names are `[A-Za-z0-9_-]`), so this is defence
|
|
14
|
+
* in depth rather than the only barrier.
|
|
15
|
+
*/
|
|
16
|
+
export declare function quoteForWindowsShell(argument: string): string;
|
|
17
|
+
/** The spawn arguments and shell flag a command needs on this platform. */
|
|
18
|
+
export declare function resolveSpawnTarget(file: string, args: readonly string[], platform?: NodeJS.Platform): {
|
|
19
|
+
readonly file: string;
|
|
20
|
+
readonly args: string[];
|
|
21
|
+
readonly shell: boolean;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Runs a short-lived command and buffers its output.
|
|
25
|
+
*
|
|
26
|
+
* Suitable for quick probes (version checks, git commands). Do NOT use this
|
|
27
|
+
* for long-running processes such as dev servers or dependency installs —
|
|
28
|
+
* use {@link runStreaming} instead.
|
|
29
|
+
*/
|
|
30
|
+
export declare function execCommand(file: string, args: readonly string[], cwd: string, options?: ExecOptions): Promise<ExecResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Runs a command with inherited stdio and no timeout.
|
|
33
|
+
*
|
|
34
|
+
* Use for long-running processes (dev servers) and for dependency installs
|
|
35
|
+
* so output streams to the user and slow commands are not killed. Pass a
|
|
36
|
+
* `signal` to stop the process from the outside; an aborted run resolves
|
|
37
|
+
* rather than rejects, since stopping it was the caller's intent.
|
|
38
|
+
*/
|
|
39
|
+
export declare function runStreaming(file: string, args: readonly string[], cwd: string, options?: ExecOptions): Promise<void>;
|
|
6
40
|
//# sourceMappingURL=utils.exec.d.ts.map
|