@bleedingdev/modern-js-ultramodern-create 3.9.0-ultramodern.2 → 3.9.0-ultramodern.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -74
- package/dist/cjs/cli/package-source.cjs +2 -2
- package/dist/cjs/cli/project-setup.cjs +2 -22
- package/dist/cjs/index.cjs +9 -1
- package/dist/cjs/locale/en.cjs +2 -1
- package/dist/cjs/locale/zh.cjs +2 -1
- package/dist/cjs/ultramodern-package-source.cjs +13 -9
- package/dist/cjs/ultramodern-release-cohort.cjs +6 -21
- package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +49 -56
- package/dist/cjs/ultramodern-tooling/commands/context.cjs +11 -29
- package/dist/cjs/ultramodern-tooling/commands/routes-generate-app.cjs +67 -0
- package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +24 -53
- package/dist/cjs/ultramodern-tooling/commands/validate.cjs +5 -11
- package/dist/cjs/ultramodern-tooling/commands.cjs +15 -8
- package/dist/cjs/ultramodern-tooling/config/index.cjs +10 -24
- package/dist/cjs/ultramodern-tooling/config/load.cjs +12 -10
- package/dist/cjs/ultramodern-tooling/config/metadata.cjs +34 -32
- package/dist/cjs/ultramodern-tooling/config/normalize.cjs +165 -164
- package/dist/cjs/ultramodern-workspace/add-shell.cjs +118 -118
- package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +121 -25
- package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +14 -160
- package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +16 -48
- package/dist/cjs/ultramodern-workspace/add-vertical/preview.cjs +78 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +87 -24
- package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +4 -1
- package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +378 -45
- package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +21 -44
- package/dist/cjs/ultramodern-workspace/add-vertical.cjs +0 -9
- package/dist/cjs/ultramodern-workspace/api/client.cjs +5 -5
- package/dist/cjs/ultramodern-workspace/api/contracts.cjs +2 -2
- package/dist/cjs/ultramodern-workspace/api/rpc.cjs +20 -18
- package/dist/cjs/ultramodern-workspace/api/service.cjs +49 -24
- package/dist/cjs/ultramodern-workspace/api/shared.cjs +28 -18
- package/dist/cjs/ultramodern-workspace/app-files.cjs +3 -23
- package/dist/cjs/ultramodern-workspace/backend-federation.cjs +27 -27
- package/dist/cjs/ultramodern-workspace/contracts.cjs +14 -183
- package/dist/cjs/ultramodern-workspace/delivery-unit-schema/surfaces.cjs +85 -0
- package/dist/cjs/ultramodern-workspace/delivery-unit-schema/types.cjs +8 -85
- package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +16 -4
- package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +27 -17
- package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +16 -10
- package/dist/cjs/ultramodern-workspace/demo-components.cjs +66 -433
- package/dist/cjs/ultramodern-workspace/descriptors.cjs +0 -4
- package/dist/cjs/ultramodern-workspace/fs-io.cjs +37 -2
- package/dist/cjs/ultramodern-workspace/generation-result.cjs +4 -4
- package/dist/cjs/ultramodern-workspace/index.cjs +2 -5
- package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +0 -6
- package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +6 -6
- package/dist/cjs/{ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs → ultramodern-workspace/mf-validation/exposes.cjs} +13 -17
- package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +26 -7
- package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +21 -122
- package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +37 -38
- package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +93 -153
- package/dist/cjs/ultramodern-workspace/mf-validation.cjs +4 -0
- package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +24 -29
- package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +39 -58
- package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +1 -43
- package/dist/cjs/ultramodern-workspace/package-json.cjs +63 -37
- package/dist/cjs/ultramodern-workspace/patch-inventory.cjs +104 -0
- package/dist/cjs/ultramodern-workspace/policy.cjs +3 -577
- package/dist/cjs/ultramodern-workspace/public-surface.cjs +3 -3
- package/dist/cjs/ultramodern-workspace/routes.cjs +2 -11
- package/dist/cjs/ultramodern-workspace/shared-patches.cjs +12 -2
- package/dist/cjs/ultramodern-workspace/shells.cjs +0 -70
- package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +27 -41
- package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +8 -2
- package/dist/cjs/ultramodern-workspace/validation/architecture.cjs +397 -0
- package/dist/cjs/ultramodern-workspace/validation/assertions.cjs +140 -0
- package/dist/cjs/ultramodern-workspace/validation/types.cjs +18 -0
- package/dist/cjs/ultramodern-workspace/validation/workspace.cjs +344 -0
- package/dist/cjs/ultramodern-workspace/versions.cjs +81 -45
- package/dist/cjs/ultramodern-workspace/workspace-artifact-ownership.cjs +183 -0
- package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +36 -25
- package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +11 -200
- package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +62 -373
- package/dist/cjs/ultramodern-workspace/write-app.cjs +19 -11
- package/dist/cjs/ultramodern-workspace/write-workspace.cjs +20 -50
- package/dist/cjs/ultramodern-workspace/zerops.cjs +2 -0
- package/dist/esm/cli/package-source.js +3 -3
- package/dist/esm/cli/project-setup.js +2 -22
- package/dist/esm/index.js +10 -2
- package/dist/esm/locale/en.js +2 -1
- package/dist/esm/locale/zh.js +2 -1
- package/dist/esm/ultramodern-package-source.js +14 -4
- package/dist/esm/ultramodern-release-cohort.js +5 -14
- package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +49 -56
- package/dist/esm/ultramodern-tooling/commands/context.js +10 -26
- package/dist/esm/ultramodern-tooling/commands/routes-generate-app.js +35 -0
- package/dist/esm/ultramodern-tooling/commands/routes-generate.js +25 -54
- package/dist/esm/ultramodern-tooling/commands/validate.js +6 -12
- package/dist/esm/ultramodern-tooling/commands.js +15 -9
- package/dist/esm/ultramodern-tooling/config/index.js +0 -2
- package/dist/esm/ultramodern-tooling/config/load.js +9 -9
- package/dist/esm/ultramodern-tooling/config/metadata.js +33 -28
- package/dist/esm/ultramodern-tooling/config/normalize.js +159 -156
- package/dist/esm/ultramodern-workspace/add-shell.js +124 -123
- package/dist/esm/ultramodern-workspace/add-vertical/execute.js +119 -27
- package/dist/esm/ultramodern-workspace/add-vertical/plan.js +16 -150
- package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +15 -47
- package/dist/esm/ultramodern-workspace/add-vertical/preview.js +40 -0
- package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +87 -25
- package/dist/esm/ultramodern-workspace/add-vertical/topology.js +4 -1
- package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +373 -46
- package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
- package/dist/esm/ultramodern-workspace/add-vertical.js +1 -1
- package/dist/esm/ultramodern-workspace/api/client.js +5 -5
- package/dist/esm/ultramodern-workspace/api/contracts.js +2 -2
- package/dist/esm/ultramodern-workspace/api/rpc.js +20 -18
- package/dist/esm/ultramodern-workspace/api/service.js +49 -24
- package/dist/esm/ultramodern-workspace/api/shared.js +28 -18
- package/dist/esm/ultramodern-workspace/app-files.js +3 -23
- package/dist/esm/ultramodern-workspace/backend-federation.js +5 -5
- package/dist/esm/ultramodern-workspace/contracts.js +14 -180
- package/dist/esm/ultramodern-workspace/delivery-unit-schema/surfaces.js +41 -0
- package/dist/esm/ultramodern-workspace/delivery-unit-schema/types.js +1 -75
- package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +16 -4
- package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +28 -18
- package/dist/esm/ultramodern-workspace/delivery-unit.js +12 -6
- package/dist/esm/ultramodern-workspace/demo-components.js +67 -428
- package/dist/esm/ultramodern-workspace/descriptors.js +1 -2
- package/dist/esm/ultramodern-workspace/fs-io.js +37 -2
- package/dist/esm/ultramodern-workspace/generation-result.js +3 -3
- package/dist/esm/ultramodern-workspace/index.js +1 -1
- package/dist/esm/ultramodern-workspace/mf-validation/constants.js +1 -4
- package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +7 -7
- package/dist/esm/ultramodern-workspace/mf-validation/exposes.js +14 -0
- package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +27 -8
- package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +22 -123
- package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +36 -34
- package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +83 -143
- package/dist/esm/ultramodern-workspace/mf-validation.js +1 -0
- package/dist/esm/ultramodern-workspace/module-federation/config.js +25 -30
- package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +39 -58
- package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +1 -43
- package/dist/esm/ultramodern-workspace/package-json.js +58 -32
- package/dist/esm/ultramodern-workspace/patch-inventory.js +66 -0
- package/dist/esm/ultramodern-workspace/policy.js +2 -564
- package/dist/esm/ultramodern-workspace/public-surface.js +3 -3
- package/dist/esm/ultramodern-workspace/routes.js +2 -11
- package/dist/esm/ultramodern-workspace/shared-patches.js +2 -2
- package/dist/esm/ultramodern-workspace/shells.js +3 -67
- package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +22 -37
- package/dist/esm/ultramodern-workspace/tsconfigs.js +9 -3
- package/dist/esm/ultramodern-workspace/validation/architecture.js +348 -0
- package/dist/esm/ultramodern-workspace/validation/assertions.js +65 -0
- package/dist/esm/ultramodern-workspace/validation/types.js +0 -0
- package/dist/esm/ultramodern-workspace/validation/workspace.js +286 -0
- package/dist/esm/ultramodern-workspace/versions.js +74 -29
- package/dist/esm/ultramodern-workspace/workspace-artifact-ownership.js +128 -0
- package/dist/esm/ultramodern-workspace/workspace-script-plan.js +35 -27
- package/dist/esm/ultramodern-workspace/workspace-scripts.js +10 -190
- package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +65 -376
- package/dist/esm/ultramodern-workspace/write-app.js +18 -10
- package/dist/esm/ultramodern-workspace/write-workspace.js +25 -52
- package/dist/esm/ultramodern-workspace/zerops.js +2 -0
- package/dist/esm-node/cli/package-source.js +3 -3
- package/dist/esm-node/cli/project-setup.js +2 -22
- package/dist/esm-node/index.js +10 -2
- package/dist/esm-node/locale/en.js +2 -1
- package/dist/esm-node/locale/zh.js +2 -1
- package/dist/esm-node/ultramodern-package-source.js +14 -4
- package/dist/esm-node/ultramodern-release-cohort.js +5 -14
- package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +49 -56
- package/dist/esm-node/ultramodern-tooling/commands/context.js +10 -26
- package/dist/esm-node/ultramodern-tooling/commands/routes-generate-app.js +36 -0
- package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +25 -54
- package/dist/esm-node/ultramodern-tooling/commands/validate.js +6 -12
- package/dist/esm-node/ultramodern-tooling/commands.js +15 -9
- package/dist/esm-node/ultramodern-tooling/config/index.js +0 -2
- package/dist/esm-node/ultramodern-tooling/config/load.js +9 -9
- package/dist/esm-node/ultramodern-tooling/config/metadata.js +33 -28
- package/dist/esm-node/ultramodern-tooling/config/normalize.js +159 -156
- package/dist/esm-node/ultramodern-workspace/add-shell.js +124 -123
- package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +119 -27
- package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +16 -150
- package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +15 -47
- package/dist/esm-node/ultramodern-workspace/add-vertical/preview.js +41 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +87 -25
- package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +4 -1
- package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +373 -46
- package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +17 -34
- package/dist/esm-node/ultramodern-workspace/add-vertical.js +1 -1
- package/dist/esm-node/ultramodern-workspace/api/client.js +5 -5
- package/dist/esm-node/ultramodern-workspace/api/contracts.js +2 -2
- package/dist/esm-node/ultramodern-workspace/api/rpc.js +20 -18
- package/dist/esm-node/ultramodern-workspace/api/service.js +49 -24
- package/dist/esm-node/ultramodern-workspace/api/shared.js +28 -18
- package/dist/esm-node/ultramodern-workspace/app-files.js +3 -23
- package/dist/esm-node/ultramodern-workspace/backend-federation.js +5 -5
- package/dist/esm-node/ultramodern-workspace/contracts.js +14 -180
- package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/surfaces.js +42 -0
- package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/types.js +1 -75
- package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +16 -4
- package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +28 -18
- package/dist/esm-node/ultramodern-workspace/delivery-unit.js +12 -6
- package/dist/esm-node/ultramodern-workspace/demo-components.js +67 -428
- package/dist/esm-node/ultramodern-workspace/descriptors.js +1 -2
- package/dist/esm-node/ultramodern-workspace/fs-io.js +37 -2
- package/dist/esm-node/ultramodern-workspace/generation-result.js +3 -3
- package/dist/esm-node/ultramodern-workspace/index.js +1 -1
- package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +1 -4
- package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +7 -7
- package/dist/esm-node/ultramodern-workspace/mf-validation/exposes.js +15 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +27 -8
- package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +22 -123
- package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +36 -34
- package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +83 -143
- package/dist/esm-node/ultramodern-workspace/mf-validation.js +1 -0
- package/dist/esm-node/ultramodern-workspace/module-federation/config.js +25 -30
- package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +39 -58
- package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +1 -43
- package/dist/esm-node/ultramodern-workspace/package-json.js +58 -32
- package/dist/esm-node/ultramodern-workspace/patch-inventory.js +67 -0
- package/dist/esm-node/ultramodern-workspace/policy.js +2 -564
- package/dist/esm-node/ultramodern-workspace/public-surface.js +3 -3
- package/dist/esm-node/ultramodern-workspace/routes.js +2 -11
- package/dist/esm-node/ultramodern-workspace/shared-patches.js +2 -2
- package/dist/esm-node/ultramodern-workspace/shells.js +3 -67
- package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +22 -37
- package/dist/esm-node/ultramodern-workspace/tsconfigs.js +9 -3
- package/dist/esm-node/ultramodern-workspace/validation/architecture.js +349 -0
- package/dist/esm-node/ultramodern-workspace/validation/assertions.js +66 -0
- package/dist/esm-node/ultramodern-workspace/validation/types.js +1 -0
- package/dist/esm-node/ultramodern-workspace/validation/workspace.js +287 -0
- package/dist/esm-node/ultramodern-workspace/versions.js +74 -29
- package/dist/esm-node/ultramodern-workspace/workspace-artifact-ownership.js +129 -0
- package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +35 -27
- package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +10 -190
- package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +65 -376
- package/dist/esm-node/ultramodern-workspace/write-app.js +18 -10
- package/dist/esm-node/ultramodern-workspace/write-workspace.js +25 -52
- package/dist/esm-node/ultramodern-workspace/zerops.js +2 -0
- package/dist/types/cli/project-setup.d.ts +1 -1
- package/dist/types/locale/en.d.ts +1 -0
- package/dist/types/locale/index.d.ts +2 -0
- package/dist/types/locale/zh.d.ts +1 -0
- package/dist/types/ultramodern-package-source.d.ts +2 -4
- package/dist/types/ultramodern-release-cohort.d.ts +1 -3
- package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -2
- package/dist/types/ultramodern-tooling/commands/context.d.ts +4 -1
- package/dist/types/ultramodern-tooling/commands/routes-generate-app.d.ts +1 -0
- package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +1 -1
- package/dist/types/ultramodern-tooling/commands/validate.d.ts +1 -1
- package/dist/types/ultramodern-tooling/config/index.d.ts +0 -2
- package/dist/types/ultramodern-tooling/config/load.d.ts +10 -2
- package/dist/types/ultramodern-tooling/config/metadata.d.ts +2 -2
- package/dist/types/ultramodern-tooling/config/normalize.d.ts +19 -19
- package/dist/types/ultramodern-tooling/config/types.d.ts +2 -9
- package/dist/types/ultramodern-workspace/add-shell.d.ts +1 -1
- package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +1 -0
- package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +4 -3
- package/dist/types/ultramodern-workspace/add-vertical/preview.d.ts +4 -0
- package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +7 -2
- package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +32 -6
- package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +10 -7
- package/dist/types/ultramodern-workspace/add-vertical.d.ts +1 -1
- package/dist/types/ultramodern-workspace/api/client.d.ts +3 -1
- package/dist/types/ultramodern-workspace/api/rpc.d.ts +1 -1
- package/dist/types/ultramodern-workspace/api/service.d.ts +3 -1
- package/dist/types/ultramodern-workspace/api/shared.d.ts +2 -0
- package/dist/types/ultramodern-workspace/backend-federation.d.ts +1 -1
- package/dist/types/ultramodern-workspace/contracts.d.ts +1 -3
- package/dist/types/ultramodern-workspace/delivery-unit-schema/surfaces.d.ts +17 -0
- package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +3 -68
- package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +2 -2
- package/dist/types/ultramodern-workspace/delivery-unit.d.ts +3 -3
- package/dist/types/ultramodern-workspace/demo-components.d.ts +0 -3
- package/dist/types/ultramodern-workspace/descriptors.d.ts +0 -1
- package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -1
- package/dist/types/ultramodern-workspace/index.d.ts +1 -1
- package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +0 -1
- package/dist/types/ultramodern-workspace/mf-validation/exposes.d.ts +11 -0
- package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +2 -3
- package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +4 -3
- package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +1 -0
- package/dist/types/ultramodern-workspace/mf-validation.d.ts +1 -0
- package/dist/types/ultramodern-workspace/module-federation/config.d.ts +1 -1
- package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +2 -2
- package/dist/types/ultramodern-workspace/package-json.d.ts +1 -1
- package/dist/types/ultramodern-workspace/patch-inventory.d.ts +10 -0
- package/dist/types/ultramodern-workspace/policy.d.ts +31 -209
- package/dist/types/ultramodern-workspace/routes.d.ts +6 -1
- package/dist/types/ultramodern-workspace/shells.d.ts +2 -15
- package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +8 -7
- package/dist/types/ultramodern-workspace/types.d.ts +9 -9
- package/dist/types/ultramodern-workspace/validation/architecture.d.ts +2 -0
- package/dist/types/ultramodern-workspace/validation/assertions.d.ts +14 -0
- package/dist/types/ultramodern-workspace/validation/types.d.ts +9 -0
- package/dist/types/ultramodern-workspace/validation/workspace.d.ts +6 -0
- package/dist/types/ultramodern-workspace/versions.d.ts +73 -28
- package/dist/types/ultramodern-workspace/workspace-artifact-ownership.d.ts +18 -0
- package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +4 -5
- package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +8 -13
- package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +22 -188
- package/dist/types/ultramodern-workspace/write-workspace.d.ts +1 -3
- package/package.json +18 -11
- package/{template-workspace/.modernjs/release-cohort.json → release-cohort.json} +88 -40
- package/template-workspace/.codex/skills/rspack-tracing/scripts/analyze_trace.js +1 -1
- package/template-workspace/README.md.handlebars +20 -35
- package/template-workspace/oxfmt.config.ts +3 -0
- package/template-workspace/pnpm-workspace.yaml.handlebars +0 -24
- package/template-workspace/scripts/bootstrap-agent-skills.mjs +4 -4
- package/templates/packages/shared-contracts-index.ts +4 -332
- package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +10 -0
- package/templates/workspace/apps/modern.config.ts.handlebars +13 -27
- package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -11
- package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +20 -20
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +4 -6
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +2 -2
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +11 -11
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +1 -1
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -1
- package/templates/workspace-scripts/generate-node-backend-federation.mjs +68 -77
- package/templates/workspace-scripts/generate-public-surface-assets.mjs +107 -207
- package/templates/workspace-scripts/materialize-zerops-runtime.mjs +12 -19
- package/templates/workspace-scripts/proof-cloudflare-version.mjs +53 -444
- package/templates/workspace-scripts/proof-node-backend-federation.mjs +212 -91
- package/templates/workspace-scripts/{proof-workerd-ssr.mts → proof-workerd-ssr.mjs} +434 -239
- package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +25 -7
- package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +45 -147
- package/templates/workspace-scripts/ultramodern-typecheck.mjs +1 -1
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +0 -212
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +0 -47
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +0 -112
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +0 -55
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +0 -102
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +0 -195
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +0 -146
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.cjs +0 -110
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +0 -67
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +0 -307
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +0 -58
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +0 -71
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.cjs +0 -151
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +0 -67
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +0 -52
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +0 -447
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +0 -323
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +0 -87
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +0 -612
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +0 -376
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +0 -73
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.cjs +0 -215
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.cjs +0 -135
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +0 -454
- package/dist/cjs/ultramodern-tooling/config/constants.cjs +0 -48
- package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +0 -157
- package/dist/cjs/ultramodern-workspace/delivery-unit-schema/up-projection.cjs +0 -188
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +0 -154
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +0 -9
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +0 -63
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +0 -7
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +0 -47
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +0 -146
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +0 -97
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +0 -61
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +0 -16
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +0 -258
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +0 -10
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +0 -8
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +0 -15
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +0 -100
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +0 -29
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +0 -14
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +0 -385
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +0 -276
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +0 -49
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +0 -559
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +0 -329
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +0 -19
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +0 -148
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +0 -80
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +0 -405
- package/dist/esm/ultramodern-tooling/config/constants.js +0 -4
- package/dist/esm/ultramodern-tooling/config/synthesize.js +0 -108
- package/dist/esm/ultramodern-workspace/delivery-unit-schema/up-projection.js +0 -129
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +0 -155
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +0 -10
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +0 -64
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +0 -8
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +0 -48
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +0 -147
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +0 -98
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +0 -62
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +0 -17
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +0 -259
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +0 -11
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +0 -9
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +0 -16
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +0 -101
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +0 -30
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +0 -15
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +0 -386
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +0 -277
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +0 -50
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +0 -560
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +0 -330
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +0 -20
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +0 -149
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +0 -81
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +0 -406
- package/dist/esm-node/ultramodern-tooling/config/constants.js +0 -5
- package/dist/esm-node/ultramodern-tooling/config/synthesize.js +0 -109
- package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/up-projection.js +0 -130
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +0 -12
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +0 -4
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +0 -1
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +0 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +0 -5
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +0 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +0 -2
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.d.ts +0 -2
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +0 -4
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +0 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +0 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +0 -8
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +0 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.d.ts +0 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +0 -1
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +0 -2
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +0 -26
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +0 -25
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +0 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +0 -26
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +0 -26
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +0 -6
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.d.ts +0 -37
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.d.ts +0 -4
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +0 -2
- package/dist/types/ultramodern-tooling/config/constants.d.ts +0 -3
- package/dist/types/ultramodern-tooling/config/synthesize.d.ts +0 -5
- package/dist/types/ultramodern-workspace/delivery-unit-schema/up-projection.d.ts +0 -189
- package/template-workspace/patches/@module-federation__bridge-react@2.9.0.patch +0 -47
- package/template-workspace/patches/@module-federation__dts-plugin@2.9.0.patch +0 -26
- package/template-workspace/patches/@module-federation__modern-js-v3@2.9.0.patch +0 -268
- package/template-workspace/patches/@module-federation__runtime-core@2.9.0.patch +0 -13
- package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +0 -471
- package/template-workspace/patches/msgpackr@2.1.0.patch +0 -30
- package/template-workspace/patches/zod@4.5.4.patch +0 -56
- package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +0 -779
- package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mts +0 -9
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +0 -4109
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import node_fs from "node:fs";
|
|
2
|
-
import {
|
|
2
|
+
import { ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, modernPackageSpecifier } from "../ultramodern-package-source.js";
|
|
3
|
+
import { hasCreateReleaseCohort, isCreatePackageSourceCheckout, readCreateReleaseCohort, releaseCohortSelectors } from "../ultramodern-release-cohort.js";
|
|
3
4
|
import { runFreshWorkspaceTransaction } from "./add-vertical/transaction.js";
|
|
4
5
|
import { createSharedDesignTokensCss } from "./app-files.js";
|
|
5
6
|
import { normalizeUltramodernBridgeConfig } from "./bridge-config.js";
|
|
6
|
-
import { createDevelopmentOverlay, createOwnership, createTopology
|
|
7
|
-
import {
|
|
7
|
+
import { createDevelopmentOverlay, createOwnership, createTopology } from "./contracts.js";
|
|
8
|
+
import { createShellHost, sharedPackages, shellApp } from "./descriptors.js";
|
|
8
9
|
import { copyRootTemplate, formatGeneratedWorkspaceFiles, writeFile, writeFileReplacing, writeJson } from "./fs-io.js";
|
|
9
10
|
import { createFileSnapshot, createGenerationResult, diffFileSnapshots } from "./generation-result.js";
|
|
10
11
|
import { assertUniqueTailwindPrefixes, toPackageScope } from "./naming.js";
|
|
11
12
|
import { runCodeSmithOverlays } from "./overlays.js";
|
|
12
13
|
import { createRootPackageJson, createRootTsConfig, createSharedContractsIndex, createSharedPackage, createSharedPackageTsConfig, createTsConfigBase } from "./package-json.js";
|
|
13
14
|
import { resolvePackageSource, resolveWorkspacePackageLinkingPolicy } from "./package-source.js";
|
|
14
|
-
import {
|
|
15
|
-
import { DRIZZLE_ORM_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, I18NEXT_VERSION, MODULE_FEDERATION_VERSION, MSGPACKR_VERSION, NODE_FETCH_VERSION, NODE_VERSION, PNPM_VERSION, TANSTACK_HISTORY_VERSION, TANSTACK_ROUTER_CORE_VERSION, TANSTACK_ROUTER_VERSION, TYPESCRIPT_VERSION, WRANGLER_VERSION, ZOD_VERSION } from "./versions.js";
|
|
15
|
+
import { EFFECT_VERSION, I18NEXT_VERSION, NODE_VERSION, PNPM_VERSION } from "./versions.js";
|
|
16
16
|
import { writeGeneratedWorkspaceScripts } from "./workspace-scripts.js";
|
|
17
17
|
import { writeApp } from "./write-app.js";
|
|
18
18
|
import { createZeropsYaml } from "./zerops.js";
|
|
19
19
|
function hasExplicitInstallRequest(options) {
|
|
20
20
|
return void 0 !== options.packageSource && 'workspace' !== options.packageSource.strategy;
|
|
21
21
|
}
|
|
22
|
-
function writeSharedPackages(targetDir, scope) {
|
|
22
|
+
function writeSharedPackages(targetDir, scope, packageSource) {
|
|
23
23
|
for (const sharedPackage of sharedPackages){
|
|
24
|
-
writeJson(targetDir, `${sharedPackage.directory}/package.json`, createSharedPackage(scope, sharedPackage.id, sharedPackage.description));
|
|
24
|
+
writeJson(targetDir, `${sharedPackage.directory}/package.json`, createSharedPackage(scope, sharedPackage.id, sharedPackage.description, packageSource));
|
|
25
25
|
writeJson(targetDir, `${sharedPackage.directory}/tsconfig.json`, createSharedPackageTsConfig(sharedPackage.directory));
|
|
26
26
|
}
|
|
27
27
|
writeFile(targetDir, 'packages/shared-contracts/src/index.ts', createSharedContractsIndex());
|
|
@@ -35,30 +35,25 @@ function writeSharedPackages(targetDir, scope) {
|
|
|
35
35
|
`);
|
|
36
36
|
writeFile(targetDir, 'packages/shared-design-tokens/src/tokens.css', createSharedDesignTokensCss());
|
|
37
37
|
}
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
function renderCatalogPolicy(packageSource) {
|
|
39
|
+
if ('install' !== packageSource.strategy) return '';
|
|
40
|
+
const catalog = ULTRAMODERN_WORKSPACE_MODERN_PACKAGES.map((name)=>` ${JSON.stringify(name)}: ${JSON.stringify(modernPackageSpecifier(name, packageSource))}`).join('\n');
|
|
41
|
+
const cohort = hasCreateReleaseCohort() ? readCreateReleaseCohort() : void 0;
|
|
42
|
+
const pinsShippedCohort = cohort?.packages.every((item)=>modernPackageSpecifier(item.sourceName, packageSource) === `npm:${item.targetName}@${item.version}`);
|
|
43
|
+
const exclude = cohort && pinsShippedCohort ? `minimumReleaseAgeExclude:\n${releaseCohortSelectors(cohort).map((selector)=>` - ${JSON.stringify(selector)}`).join('\n')}\n\n` : '';
|
|
44
|
+
return `catalogs:\n ultramodern:\n${catalog}\n\n${exclude}`;
|
|
42
45
|
}
|
|
43
|
-
function
|
|
44
|
-
createShellHost()
|
|
45
|
-
], enableTailwind = true, bridge, additionalShells = [], primaryShell) {
|
|
46
|
-
const config = createUltramodernConfig(scope, modernVersion, packageSource, apps, enableTailwind, bridge, additionalShells, primaryShell);
|
|
47
|
-
if (config.packageSource && 'object' == typeof config.packageSource && !Array.isArray(config.packageSource)) delete config.packageSource.metadata;
|
|
48
|
-
return config;
|
|
49
|
-
}
|
|
50
|
-
function writePnpmWorkspacePackages(targetDir, bridge) {
|
|
51
|
-
if (!bridge) return;
|
|
46
|
+
function writePnpmWorkspacePackages(targetDir, bridge, packageSource) {
|
|
52
47
|
const pnpmWorkspacePath = `${targetDir}/pnpm-workspace.yaml`;
|
|
53
48
|
const pnpmWorkspace = node_fs.readFileSync(pnpmWorkspacePath, 'utf-8');
|
|
54
49
|
const packages = [
|
|
55
50
|
'apps/*',
|
|
56
51
|
'verticals/*',
|
|
57
52
|
'packages/*',
|
|
58
|
-
...bridge
|
|
53
|
+
...bridge?.workspacePackages.map((entry)=>entry.pattern) ?? []
|
|
59
54
|
];
|
|
60
55
|
const renderedPackages = packages.map((pattern)=>` - ${pattern}`).join('\n');
|
|
61
|
-
writeFileReplacing(targetDir, 'pnpm-workspace.yaml', pnpmWorkspace.replace(/^packages:\r?\n(?: {2}- .+\r?\n)+/u, `packages:\n${renderedPackages}\n`));
|
|
56
|
+
writeFileReplacing(targetDir, 'pnpm-workspace.yaml', `${renderCatalogPolicy(packageSource)}${pnpmWorkspace.replace(/^packages:\r?\n(?: {2}- .+\r?\n)+/u, `packages:\n${renderedPackages}\n`)}`);
|
|
62
57
|
}
|
|
63
58
|
function generateUltramodernWorkspace(options) {
|
|
64
59
|
const result = runFreshWorkspaceTransaction(options.targetDir, (stagingRoot)=>generateUltramodernWorkspaceInPlace({
|
|
@@ -71,19 +66,15 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
|
|
|
71
66
|
const beforeFiles = createFileSnapshot(options.targetDir);
|
|
72
67
|
const scope = toPackageScope(options.packageName);
|
|
73
68
|
let packageSource;
|
|
74
|
-
let releaseCohort;
|
|
75
69
|
if (isCreatePackageSourceCheckout()) {
|
|
76
|
-
if (hasExplicitInstallRequest(options)) throw new Error('A local @modern-js/ultramodern-create source checkout cannot satisfy an explicit install package source. Use workspace mode locally or run the packed published package
|
|
70
|
+
if (hasExplicitInstallRequest(options)) throw new Error('A local @modern-js/ultramodern-create source checkout cannot satisfy an explicit install package source. Use workspace mode locally or run the packed published package.');
|
|
77
71
|
packageSource = resolvePackageSource({
|
|
78
72
|
...options,
|
|
79
73
|
packageSource: {
|
|
80
74
|
strategy: 'workspace'
|
|
81
75
|
}
|
|
82
76
|
});
|
|
83
|
-
} else
|
|
84
|
-
packageSource = resolvePackageSource(options);
|
|
85
|
-
if ('install' === packageSource.strategy) releaseCohort = readCreateReleaseCohort();
|
|
86
|
-
}
|
|
77
|
+
} else packageSource = resolvePackageSource(options);
|
|
87
78
|
const bridge = normalizeUltramodernBridgeConfig(options.bridge);
|
|
88
79
|
const enableTailwind = false !== options.enableTailwind;
|
|
89
80
|
const initialVerticals = [];
|
|
@@ -98,13 +89,9 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
|
|
|
98
89
|
node_fs.mkdirSync(options.targetDir, {
|
|
99
90
|
recursive: true
|
|
100
91
|
});
|
|
101
|
-
const minimumReleaseAgeExclude = renderMinimumReleaseAgeExclude({
|
|
102
|
-
packageSource,
|
|
103
|
-
releaseCohort
|
|
104
|
-
});
|
|
105
92
|
const workspacePackageLinkingPolicy = resolveWorkspacePackageLinkingPolicy(packageSource);
|
|
106
93
|
const excludedRootTemplates = new Set([
|
|
107
|
-
|
|
94
|
+
"scripts/setup-agent-reference-repos.mjs"
|
|
108
95
|
]);
|
|
109
96
|
if (false === options.generateAgentFiles) {
|
|
110
97
|
excludedRootTemplates.add('AGENTS.md.handlebars');
|
|
@@ -115,37 +102,23 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
|
|
|
115
102
|
packageScope: scope,
|
|
116
103
|
nodeVersion: NODE_VERSION,
|
|
117
104
|
pnpmVersion: PNPM_VERSION,
|
|
118
|
-
nodeFetchVersion: NODE_FETCH_VERSION,
|
|
119
|
-
drizzleOrmVersion: DRIZZLE_ORM_VERSION,
|
|
120
105
|
effectVersion: EFFECT_VERSION,
|
|
121
|
-
effectVitestVersion: EFFECT_VITEST_VERSION,
|
|
122
106
|
i18nextVersion: I18NEXT_VERSION,
|
|
123
|
-
moduleFederationVersion: MODULE_FEDERATION_VERSION,
|
|
124
|
-
msgpackrVersion: MSGPACKR_VERSION,
|
|
125
|
-
zodVersion: ZOD_VERSION,
|
|
126
|
-
tanstackHistoryVersion: TANSTACK_HISTORY_VERSION,
|
|
127
|
-
tanstackRouterCoreVersion: TANSTACK_ROUTER_CORE_VERSION,
|
|
128
|
-
tanstackRouterVersion: TANSTACK_ROUTER_VERSION,
|
|
129
|
-
typescriptVersion: TYPESCRIPT_VERSION,
|
|
130
|
-
wranglerVersion: WRANGLER_VERSION,
|
|
131
|
-
minimumReleaseAgeExcludeYaml: 0 === minimumReleaseAgeExclude.length ? ' []' : `\n${minimumReleaseAgeExclude.map((selector)=>` - '${selector}'`).join('\n')}`,
|
|
132
107
|
workspacePackageLinkingYaml: Object.entries(workspacePackageLinkingPolicy).map(([key, value])=>`${key}: ${String(value)}\n`).join(''),
|
|
133
108
|
tailwindEnabled: String(enableTailwind)
|
|
134
109
|
}, excludedRootTemplates);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
writeJson(options.targetDir, 'package.json', createCompactRootPackageJson(scope, packageSource, initialVerticals, bridge));
|
|
110
|
+
writePnpmWorkspacePackages(options.targetDir, bridge, packageSource);
|
|
111
|
+
writeJson(options.targetDir, 'package.json', createRootPackageJson(scope, packageSource, initialVerticals, bridge));
|
|
138
112
|
if (initialVerticals.length > 0) writeFile(options.targetDir, 'zerops.yaml', `${createZeropsYaml(scope, createdApps)}\n`);
|
|
139
113
|
writeJson(options.targetDir, 'tsconfig.base.json', createTsConfigBase());
|
|
140
114
|
writeJson(options.targetDir, 'tsconfig.json', createRootTsConfig(createdApps));
|
|
141
115
|
writeJson(options.targetDir, 'topology/reference-topology.json', createTopology(scope, initialVerticals));
|
|
142
116
|
writeJson(options.targetDir, 'topology/ownership.json', createOwnership(scope, initialVerticals));
|
|
143
117
|
writeJson(options.targetDir, 'topology/local-overlays/development.json', createDevelopmentOverlay(scope, initialVerticals));
|
|
144
|
-
writeJson(options.targetDir, ULTRAMODERN_CONFIG_PATH, createCompactUltramodernConfig(scope, options.modernVersion, packageSource, createdApps, enableTailwind, bridge));
|
|
145
118
|
writeApp(options.targetDir, scope, shellApp, packageSource, enableTailwind, initialVerticals, bridge);
|
|
146
119
|
for (const remote of initialVerticals)writeApp(options.targetDir, scope, remote, packageSource, enableTailwind, initialVerticals, bridge);
|
|
147
|
-
writeSharedPackages(options.targetDir, scope);
|
|
148
|
-
writeGeneratedWorkspaceScripts(options.targetDir
|
|
120
|
+
writeSharedPackages(options.targetDir, scope, packageSource);
|
|
121
|
+
writeGeneratedWorkspaceScripts(options.targetDir);
|
|
149
122
|
const preliminaryAfterFiles = createFileSnapshot(options.targetDir);
|
|
150
123
|
const preliminaryDiff = diffFileSnapshots(beforeFiles, preliminaryAfterFiles);
|
|
151
124
|
const preliminaryResult = createGenerationResult({
|
|
@@ -175,4 +148,4 @@ function generateUltramodernWorkspaceInPlace(options, logicalWorkspaceRoot = opt
|
|
|
175
148
|
rewrittenPaths
|
|
176
149
|
});
|
|
177
150
|
}
|
|
178
|
-
export {
|
|
151
|
+
export { generateUltramodernWorkspace, writeApp };
|
|
@@ -31,6 +31,8 @@ function createZeropsService(scope, app) {
|
|
|
31
31
|
` - setup: ${quoteYamlString(app.id)}`,
|
|
32
32
|
' build:',
|
|
33
33
|
` base: ${quoteYamlString(zeropsNodeRuntime)}`,
|
|
34
|
+
' envVariables:',
|
|
35
|
+
` ZE_FAIL_BUILD: ${quoteYamlString('true')}`,
|
|
34
36
|
' buildCommands:',
|
|
35
37
|
' - |',
|
|
36
38
|
...commands.map((command)=>` ${command}`),
|
|
@@ -3,7 +3,7 @@ import node_fs from "node:fs";
|
|
|
3
3
|
import node_path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { resolveCreatePackageRoot } from "../create-package-root.js";
|
|
6
|
-
import { BLEEDINGDEV_CREATE_PACKAGE,
|
|
6
|
+
import { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_FRAMEWORK_VERSION_ENV, WORKSPACE_PACKAGE_VERSION } from "../ultramodern-package-source.js";
|
|
7
7
|
import { isCreatePackageSourceCheckout } from "../ultramodern-release-cohort.js";
|
|
8
8
|
import { WORKSPACE_PROTOCOL_FLAG, getOptionValue } from "./flags.js";
|
|
9
9
|
import { runSetupCommand } from "./project-setup.js";
|
|
@@ -16,7 +16,7 @@ function readCreatePackageJson() {
|
|
|
16
16
|
return JSON.parse(node_fs.readFileSync(createPackageJson, 'utf-8'));
|
|
17
17
|
}
|
|
18
18
|
function isBleedingDevCreatePackage(createPackage) {
|
|
19
|
-
return createPackage.name === BLEEDINGDEV_CREATE_PACKAGE
|
|
19
|
+
return createPackage.name === BLEEDINGDEV_CREATE_PACKAGE;
|
|
20
20
|
}
|
|
21
21
|
function getBleedingDevFrameworkVersion(createPackage, fallbackVersion) {
|
|
22
22
|
const frameworkVersion = createPackage.ultramodern?.frameworkVersion;
|
|
@@ -57,7 +57,7 @@ function hasExplicitUltramodernPackageSource(args, value) {
|
|
|
57
57
|
return value ? configuredValue === value : void 0 !== configuredValue;
|
|
58
58
|
}
|
|
59
59
|
function readBleedingDevFrameworkVersionFromRegistry(fallbackVersion) {
|
|
60
|
-
const envVersion =
|
|
60
|
+
const envVersion = process.env[ULTRAMODERN_FRAMEWORK_VERSION_ENV]?.trim();
|
|
61
61
|
if (envVersion) {
|
|
62
62
|
if (!semverPattern.test(envVersion)) {
|
|
63
63
|
console.error(`${ULTRAMODERN_FRAMEWORK_VERSION_ENV} must be a valid semver version`);
|
|
@@ -43,7 +43,7 @@ function isInsideGitWorkTree(targetDir) {
|
|
|
43
43
|
}
|
|
44
44
|
function initializeGeneratedGitRepository(targetDir) {
|
|
45
45
|
assertGitAvailableForGeneratedProject();
|
|
46
|
-
if (isInsideGitWorkTree(targetDir)) return;
|
|
46
|
+
if (isInsideGitWorkTree(targetDir)) return false;
|
|
47
47
|
try {
|
|
48
48
|
runSetupCommand('git', [
|
|
49
49
|
'init',
|
|
@@ -69,27 +69,7 @@ function initializeGeneratedGitRepository(targetDir) {
|
|
|
69
69
|
stdio: 'inherit'
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
'add',
|
|
74
|
-
'-A'
|
|
75
|
-
], {
|
|
76
|
-
cwd: targetDir,
|
|
77
|
-
stdio: 'inherit'
|
|
78
|
-
});
|
|
79
|
-
runSetupCommand('git', [
|
|
80
|
-
'-c',
|
|
81
|
-
'user.name=UltraModern',
|
|
82
|
-
'-c',
|
|
83
|
-
'user.email=ultramodern@bleedingdev.dev',
|
|
84
|
-
'-c',
|
|
85
|
-
'commit.gpgsign=false',
|
|
86
|
-
'commit',
|
|
87
|
-
'-m',
|
|
88
|
-
'chore: initial UltraModern scaffold'
|
|
89
|
-
], {
|
|
90
|
-
cwd: targetDir,
|
|
91
|
-
stdio: 'inherit'
|
|
92
|
-
});
|
|
72
|
+
return true;
|
|
93
73
|
}
|
|
94
74
|
function isDirectoryEmpty(dirPath) {
|
|
95
75
|
if (!node_fs.existsSync(dirPath)) return false;
|
package/dist/esm-node/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import node_fs from "node:fs";
|
|
|
3
3
|
import node_path from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { runAgentsMd } from "./agents-md.js";
|
|
6
|
-
import { DRY_RUN_FLAG, VERTICAL_FLAG, detectApiProtocolFlag, detectBffRuntime, detectCodeSmithOverlays, detectDryRunFlag, detectExplicitTailwindFlag, detectHorizontalRemoteFlag, detectLanguage, detectPresetFlag, detectTailwindFlag, readBridgeCliOptions, resolveVerticalCliInput } from "./cli/flags.js";
|
|
6
|
+
import { DRY_RUN_FLAG, VERTICAL_FLAG, collectPositionalArgs, detectApiProtocolFlag, detectBffRuntime, detectCodeSmithOverlays, detectDryRunFlag, detectExplicitTailwindFlag, detectHorizontalRemoteFlag, detectLanguage, detectPresetFlag, detectTailwindFlag, readBridgeCliOptions, resolveVerticalCliInput } from "./cli/flags.js";
|
|
7
7
|
import { showHelp, showVersion } from "./cli/help.js";
|
|
8
8
|
import { detectUltramodernPackageSource, getBleedingDevFrameworkVersion, isBleedingDevCreatePackage, readCreatePackageJson, resolveWorkspacePackageSource } from "./cli/package-source.js";
|
|
9
9
|
import { initializeGeneratedGitRepository } from "./cli/project-setup.js";
|
|
@@ -11,6 +11,7 @@ import { getProjectName } from "./cli/prompts.js";
|
|
|
11
11
|
import { i18n, localeKeys } from "./locale/index.js";
|
|
12
12
|
import { runUltramodernToolingCli } from "./ultramodern-tooling/commands.js";
|
|
13
13
|
import { addUltramodernVertical, generateUltramodernWorkspace, planUltramodernVertical } from "./ultramodern-workspace/index.js";
|
|
14
|
+
import { recoverFreshWorkspaceTransactions } from "./ultramodern-workspace/add-vertical/transaction.js";
|
|
14
15
|
import { hasUltramodernBridgeCliOptions } from "./ultramodern-workspace/bridge-config.js";
|
|
15
16
|
const src_dirname = node_path.dirname(fileURLToPath(import.meta.url));
|
|
16
17
|
const templateDir = [
|
|
@@ -91,9 +92,11 @@ async function main() {
|
|
|
91
92
|
console.log(`${dim} pnpm check${reset}\n`);
|
|
92
93
|
return;
|
|
93
94
|
}
|
|
95
|
+
if (0 === collectPositionalArgs(args).length) recoverFreshWorkspaceTransactions(process.cwd());
|
|
94
96
|
const { name: projectName, useCurrentDir } = await getProjectName();
|
|
95
97
|
const targetDir = useCurrentDir ? process.cwd() : node_path.isAbsolute(projectName) ? projectName : node_path.resolve(process.cwd(), projectName);
|
|
96
98
|
const generatedPackageName = useCurrentDir || node_path.isAbsolute(projectName) ? node_path.basename(targetDir) : projectName;
|
|
99
|
+
recoverFreshWorkspaceTransactions(targetDir);
|
|
97
100
|
if (node_fs.existsSync(targetDir)) {
|
|
98
101
|
const files = node_fs.readdirSync(targetDir);
|
|
99
102
|
if (files.length > 0) {
|
|
@@ -115,7 +118,7 @@ async function main() {
|
|
|
115
118
|
packageSource,
|
|
116
119
|
generateAgentFiles
|
|
117
120
|
});
|
|
118
|
-
initializeGeneratedGitRepository(targetDir);
|
|
121
|
+
const initializedGitRepository = initializeGeneratedGitRepository(targetDir);
|
|
119
122
|
const dim = '\x1b[2m\x1b[3m';
|
|
120
123
|
const reset = '\x1b[0m';
|
|
121
124
|
console.log(`${i18n.t(localeKeys.message.success)}\n`);
|
|
@@ -126,6 +129,11 @@ async function main() {
|
|
|
126
129
|
})}${reset}`);
|
|
127
130
|
console.log(`${dim} ${i18n.t(localeKeys.message.step2)}${reset}`);
|
|
128
131
|
console.log(`${dim} pnpm check${reset}`);
|
|
132
|
+
if (initializedGitRepository) {
|
|
133
|
+
console.log(i18n.t(localeKeys.message.initialCommit));
|
|
134
|
+
console.log(`${dim} git add .${reset}`);
|
|
135
|
+
console.log(`${dim} git commit -m "chore: initial UltraModern scaffold"${reset}`);
|
|
136
|
+
}
|
|
129
137
|
console.log(`${dim} ${i18n.t(localeKeys.message.step3)}${reset}\n`);
|
|
130
138
|
}
|
|
131
139
|
main().catch((error)=>{
|
|
@@ -18,7 +18,8 @@ const EN_LOCALE = {
|
|
|
18
18
|
nextSteps: '📋 Next steps:',
|
|
19
19
|
step1: 'cd {projectName}',
|
|
20
20
|
step2: 'pnpm install',
|
|
21
|
-
step3: 'pnpm dev'
|
|
21
|
+
step3: 'pnpm dev',
|
|
22
|
+
initialCommit: 'Commit the checked scaffold before starting development or CI builds. Git uses your configured identity and hooks.'
|
|
22
23
|
},
|
|
23
24
|
agentsCmd: {
|
|
24
25
|
created: '✔ Created {file}',
|
|
@@ -2,11 +2,9 @@ import "node:module";
|
|
|
2
2
|
const WORKSPACE_PACKAGE_VERSION = 'workspace:*';
|
|
3
3
|
const ULTRAMODERN_CREATE_PACKAGE = '@modern-js/ultramodern-create';
|
|
4
4
|
const BLEEDINGDEV_CREATE_PACKAGE = '@bleedingdev/modern-js-ultramodern-create';
|
|
5
|
-
const LEGACY_BLEEDINGDEV_CREATE_PACKAGE = '@bleedingdev/modern-js-create';
|
|
6
5
|
const BLEEDINGDEV_PACKAGE_SCOPE = 'bleedingdev';
|
|
7
6
|
const BLEEDINGDEV_PACKAGE_NAME_PREFIX = 'modern-js-';
|
|
8
7
|
const ULTRAMODERN_FRAMEWORK_VERSION_ENV = 'ULTRAMODERN_CREATE_FRAMEWORK_VERSION';
|
|
9
|
-
const BLEEDINGDEV_FRAMEWORK_VERSION_ENV = 'MODERN_CREATE_ULTRAMODERN_FRAMEWORK_VERSION';
|
|
10
8
|
const ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES = [
|
|
11
9
|
ULTRAMODERN_CREATE_PACKAGE,
|
|
12
10
|
'@modern-js/code-tools',
|
|
@@ -16,16 +14,28 @@ const ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES = [
|
|
|
16
14
|
'@modern-js/plugin-i18n',
|
|
17
15
|
'@modern-js/plugin-tanstack',
|
|
18
16
|
'@modern-js/plugin-bff',
|
|
17
|
+
'@modern-js/plugin-bff-build-extensions',
|
|
18
|
+
'@modern-js/plugin-bff-extensions',
|
|
19
19
|
'@modern-js/adapter-rstest'
|
|
20
20
|
];
|
|
21
21
|
const ULTRAMODERN_WORKSPACE_MODERN_PACKAGES = [
|
|
22
|
+
'@modern-js/bff-effect',
|
|
23
|
+
'@modern-js/boundary-debugger',
|
|
22
24
|
ULTRAMODERN_CREATE_PACKAGE,
|
|
23
25
|
'@modern-js/code-tools',
|
|
24
26
|
'@modern-js/app-tools',
|
|
25
27
|
'@modern-js/plugin-bff',
|
|
28
|
+
'@modern-js/plugin-bff-build-extensions',
|
|
29
|
+
'@modern-js/plugin-bff-extensions',
|
|
26
30
|
'@modern-js/plugin-i18n',
|
|
31
|
+
'@modern-js/i18n-integration',
|
|
27
32
|
'@modern-js/plugin-tanstack',
|
|
28
|
-
'@modern-js/runtime'
|
|
33
|
+
'@modern-js/runtime',
|
|
34
|
+
'@modern-js/runtime-extensions',
|
|
35
|
+
'@modern-js/runtime-renderer-extensions',
|
|
36
|
+
'@modern-js/federation-runtime',
|
|
37
|
+
'@modern-js/app-tools-extensions',
|
|
38
|
+
'@modern-js/ultramodern-app-tools'
|
|
29
39
|
];
|
|
30
40
|
function modernPackageVersion(packageSource) {
|
|
31
41
|
return 'install' === packageSource.strategy ? packageSource.modernPackageVersion : WORKSPACE_PACKAGE_VERSION;
|
|
@@ -41,4 +51,4 @@ function modernPackageSpecifier(packageName, packageSource) {
|
|
|
41
51
|
if (!packageSource.aliasScope) return packageSource.modernPackageVersion;
|
|
42
52
|
return `npm:${modernAliasPackageName(packageName, packageSource)}@${packageSource.modernPackageVersion}`;
|
|
43
53
|
}
|
|
44
|
-
export { BLEEDINGDEV_CREATE_PACKAGE,
|
|
54
|
+
export { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_CREATE_PACKAGE, ULTRAMODERN_FRAMEWORK_VERSION_ENV, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, modernPackageSpecifier, modernPackageVersion };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
import node_fs from "node:fs";
|
|
3
3
|
import node_path from "node:path";
|
|
4
|
-
import { createPackageRoot
|
|
5
|
-
const
|
|
4
|
+
import { createPackageRoot } from "./ultramodern-workspace/fs-io.js";
|
|
5
|
+
const RELEASE_COHORT_PATH = 'release-cohort.json';
|
|
6
6
|
const RELEASE_COHORT_PROJECTION_SCHEMA = 'bleedingdev.ultramodern.release-cohort';
|
|
7
7
|
const RELEASE_COHORT_PROJECTION_SCHEMA_VERSION = 1;
|
|
8
8
|
function assert(condition, message) {
|
|
@@ -99,23 +99,14 @@ function readCohortFile(filePath) {
|
|
|
99
99
|
return parseUltramodernReleaseCohort(value);
|
|
100
100
|
}
|
|
101
101
|
function readCreateReleaseCohort() {
|
|
102
|
-
return readCohortFile(node_path.join(createPackageRoot,
|
|
102
|
+
return readCohortFile(node_path.join(createPackageRoot, RELEASE_COHORT_PATH));
|
|
103
103
|
}
|
|
104
104
|
function hasCreateReleaseCohort() {
|
|
105
|
-
return node_fs.existsSync(node_path.join(createPackageRoot,
|
|
105
|
+
return node_fs.existsSync(node_path.join(createPackageRoot, RELEASE_COHORT_PATH));
|
|
106
106
|
}
|
|
107
107
|
function isCreatePackageSourceCheckout() {
|
|
108
108
|
return node_fs.existsSync(node_path.join(createPackageRoot, 'src'));
|
|
109
109
|
}
|
|
110
|
-
function readWorkspaceReleaseCohort(workspaceRoot) {
|
|
111
|
-
return readCohortFile(node_path.join(workspaceRoot, RELEASE_COHORT_PROJECTION_PATH));
|
|
112
|
-
}
|
|
113
|
-
function copyCreateReleaseCohort(workspaceRoot) {
|
|
114
|
-
const sourcePath = node_path.join(createPackageRoot, 'template-workspace', RELEASE_COHORT_PROJECTION_PATH);
|
|
115
|
-
const cohort = readCohortFile(sourcePath);
|
|
116
|
-
writeFile(workspaceRoot, RELEASE_COHORT_PROJECTION_PATH, node_fs.readFileSync(sourcePath, 'utf8'));
|
|
117
|
-
return cohort;
|
|
118
|
-
}
|
|
119
110
|
function assertReleaseCohortPackageSource(cohort, packageSource) {
|
|
120
111
|
if ('install' !== packageSource.strategy) return;
|
|
121
112
|
assert(packageSource.modernPackageVersion === cohort.release.version, `Package source release ${packageSource.modernPackageVersion} does not match authenticated release cohort ${cohort.release.version}.`);
|
|
@@ -131,4 +122,4 @@ function assertReleaseCohortPackageSource(cohort, packageSource) {
|
|
|
131
122
|
function releaseCohortSelectors(cohort) {
|
|
132
123
|
return cohort.packages.map((item)=>`${item.targetName}@${item.version}`).sort();
|
|
133
124
|
}
|
|
134
|
-
export {
|
|
125
|
+
export { RELEASE_COHORT_PATH, assertReleaseCohortPackageSource, hasCreateReleaseCohort, isCreatePackageSourceCheckout, parseUltramodernReleaseCohort, readCreateReleaseCohort, releaseCohortSelectors };
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import "node:module";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import node_path from "node:path";
|
|
4
|
+
import { createCloudflarePublicUrlEnv } from "../../ultramodern-workspace/descriptors.js";
|
|
3
5
|
import { readUltramodernConfig, workspaceAppsFromToolingConfig } from "../config.js";
|
|
4
|
-
import { runRenderedModule } from "./context.js";
|
|
5
6
|
import { readOption } from "./options.js";
|
|
7
|
+
const REQUIRE_PUBLIC_URLS_FLAG = '--require-public-urls';
|
|
8
|
+
const missingPublicUrl = ({ label, publicUrlEnv })=>{
|
|
9
|
+
if (!publicUrlEnv) return `${REQUIRE_PUBLIC_URLS_FLAG} needs --app, not --output (${label}).`;
|
|
10
|
+
const names = [
|
|
11
|
+
publicUrlEnv,
|
|
12
|
+
'MODERN_PUBLIC_SITE_URL',
|
|
13
|
+
'ULTRAMODERN_CLOUDFLARE_WORKERS_DEV_SUBDOMAIN'
|
|
14
|
+
];
|
|
15
|
+
return names.some((name)=>process.env[name]?.trim()) ? void 0 : `Cloudflare deploy for ${label} needs ${names.join(', ')}.`;
|
|
16
|
+
};
|
|
6
17
|
const resolveCloudflareOutputVerifyTargets = (args, context)=>{
|
|
7
18
|
const outputDirectory = readOption(args, '--output');
|
|
8
19
|
const appId = readOption(args, '--app');
|
|
@@ -12,74 +23,56 @@ const resolveCloudflareOutputVerifyTargets = (args, context)=>{
|
|
|
12
23
|
label: outputDirectory,
|
|
13
24
|
outputDirectory: node_path.resolve(context.invocationCwd, outputDirectory)
|
|
14
25
|
}
|
|
15
|
-
] : workspaceAppsFromToolingConfig(readUltramodernConfig(context.workspaceRoot)).filter((app)=>!appId || app.id === appId).map((app)=>({
|
|
26
|
+
] : workspaceAppsFromToolingConfig(readUltramodernConfig(context.workspaceRoot), context.workspaceRoot).filter((app)=>!appId || app.id === appId).map((app)=>({
|
|
16
27
|
label: app.id,
|
|
17
|
-
outputDirectory: node_path.join(context.workspaceRoot, app.directory, '.output')
|
|
28
|
+
outputDirectory: node_path.join(context.workspaceRoot, app.directory, '.output'),
|
|
29
|
+
publicUrlEnv: createCloudflarePublicUrlEnv(app)
|
|
18
30
|
}));
|
|
19
31
|
if (0 === targets.length) throw new Error(`No generated UltraModern app matched ${appId}.`);
|
|
20
32
|
return targets;
|
|
21
33
|
};
|
|
22
|
-
|
|
23
|
-
import { createRequire } from 'node:module';
|
|
24
|
-
import path from 'node:path';
|
|
25
|
-
|
|
26
|
-
const workspaceRoot = ${JSON.stringify(workspaceRoot)};
|
|
27
|
-
const targets = ${JSON.stringify(targets, null, 2)};
|
|
28
|
-
const scanRoots = [workspaceRoot];
|
|
29
|
-
const excludePaths = ${JSON.stringify(excludePaths)};
|
|
30
|
-
const verifierRequire = createRequire(path.join(workspaceRoot, 'package.json'));
|
|
31
|
-
const {
|
|
32
|
-
verifyCloudflareOutput,
|
|
33
|
-
verifyCloudflareOutputMutationPolicy,
|
|
34
|
-
} = verifierRequire('@modern-js/app-tools/cloudflare-output-verifier');
|
|
35
|
-
|
|
36
|
-
let failed = false;
|
|
37
|
-
for (const target of targets) {
|
|
38
|
-
const result = await verifyCloudflareOutput({
|
|
39
|
-
outputDirectory: target.outputDirectory,
|
|
40
|
-
importWorker: true,
|
|
41
|
-
});
|
|
42
|
-
if (result.ok) {
|
|
43
|
-
console.log(\`[ultramodern] Cloudflare output verified: \${target.label}\`);
|
|
44
|
-
} else {
|
|
45
|
-
failed = true;
|
|
46
|
-
console.error(\`[ultramodern] Cloudflare output failed: \${target.label}\`);
|
|
47
|
-
for (const issue of result.issues) {
|
|
48
|
-
console.error(\`- \${issue.code}: \${issue.message}\${issue.path ? \` (\${issue.path})\` : ''}\`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (scanRoots.length > 0) {
|
|
54
|
-
const policyResult = await verifyCloudflareOutputMutationPolicy({ scanRoots, excludePaths });
|
|
55
|
-
if (!policyResult.ok) {
|
|
56
|
-
failed = true;
|
|
57
|
-
console.error('[ultramodern] generated-output mutation policy failed');
|
|
58
|
-
for (const issue of policyResult.issues) {
|
|
59
|
-
console.error(\`- \${issue.code}: \${issue.message}\${issue.path ? \` (\${issue.path})\` : ''}\`);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
process.exit(failed ? 1 : 0);
|
|
65
|
-
`;
|
|
66
|
-
function runCloudflareOutputVerify(args, context) {
|
|
34
|
+
async function runCloudflareOutputVerify(args, context) {
|
|
67
35
|
if (args.includes('--help') || args.includes('-h')) {
|
|
68
36
|
process.stdout.write(`Usage:
|
|
69
|
-
ultramodern-create ultramodern cloudflare-output-verify [--app <id> | --output <dir>]
|
|
37
|
+
ultramodern-create ultramodern cloudflare-output-verify [--app <id> | --output <dir>] [--require-public-urls]
|
|
70
38
|
|
|
71
39
|
Verifies generated Cloudflare output against the UltraModern worker contract.
|
|
72
40
|
Without --app or --output, every generated workspace app is verified.
|
|
41
|
+
--require-public-urls also fails an app that has no public URL to deploy to.
|
|
73
42
|
`);
|
|
74
43
|
return 0;
|
|
75
44
|
}
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
targets
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
45
|
+
const targets = resolveCloudflareOutputVerifyTargets(args, context);
|
|
46
|
+
if (args.includes(REQUIRE_PUBLIC_URLS_FLAG)) {
|
|
47
|
+
const missing = targets.map(missingPublicUrl).filter((message)=>Boolean(message));
|
|
48
|
+
if (missing.length > 0) throw new Error(missing.join('\n'));
|
|
49
|
+
}
|
|
50
|
+
const verifierRequire = createRequire(node_path.join(context.workspaceRoot, 'package.json'));
|
|
51
|
+
const { verifyCloudflareOutput, verifyCloudflareOutputMutationPolicy } = verifierRequire('@modern-js/app-tools-extensions/cloudflare-output-verifier');
|
|
52
|
+
let failed = false;
|
|
53
|
+
for (const target of targets){
|
|
54
|
+
const result = await verifyCloudflareOutput({
|
|
55
|
+
outputDirectory: target.outputDirectory,
|
|
56
|
+
importWorker: true
|
|
57
|
+
});
|
|
58
|
+
if (result.ok) console.log(`[ultramodern] Cloudflare output verified: ${target.label}`);
|
|
59
|
+
else {
|
|
60
|
+
failed = true;
|
|
61
|
+
console.error(`[ultramodern] Cloudflare output failed: ${target.label}`);
|
|
62
|
+
for (const issue of result.issues)console.error(`- ${issue.code}: ${issue.message}${issue.path ? ` (${issue.path})` : ''}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const policyResult = await verifyCloudflareOutputMutationPolicy({
|
|
66
|
+
scanRoots: [
|
|
67
|
+
context.workspaceRoot
|
|
68
|
+
],
|
|
69
|
+
excludePaths: []
|
|
82
70
|
});
|
|
83
|
-
|
|
71
|
+
if (!policyResult.ok) {
|
|
72
|
+
failed = true;
|
|
73
|
+
console.error('[ultramodern] generated-output mutation policy failed');
|
|
74
|
+
for (const issue of policyResult.issues)console.error(`- ${issue.code}: ${issue.message}${issue.path ? ` (${issue.path})` : ''}`);
|
|
75
|
+
}
|
|
76
|
+
return failed ? 1 : 0;
|
|
84
77
|
}
|
|
85
78
|
export { runCloudflareOutputVerify };
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
import { spawnSync } from "node:child_process";
|
|
3
|
-
import
|
|
4
|
-
import node_os from "node:os";
|
|
3
|
+
import { constants } from "node:os";
|
|
5
4
|
import node_path from "node:path";
|
|
6
5
|
import { fileURLToPath } from "node:url";
|
|
7
6
|
import { resolveCreatePackageRoot } from "../../create-package-root.js";
|
|
8
7
|
import { generatedToolingCommandList, generatedToolingCommands } from "../../ultramodern-workspace/tooling-command-catalog.js";
|
|
9
8
|
const context_dirname = node_path.dirname(fileURLToPath(import.meta.url));
|
|
10
9
|
const createPackageRoot = resolveCreatePackageRoot(context_dirname);
|
|
10
|
+
const AD_HOC_TOOLING_COMMANDS = {
|
|
11
|
+
syncDeliveryUnit: 'sync-delivery-unit',
|
|
12
|
+
skills: 'skills'
|
|
13
|
+
};
|
|
11
14
|
function printHelp() {
|
|
12
15
|
const commands = [
|
|
13
16
|
...generatedToolingCommandList().map((command)=>` ${command}`),
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
` ${AD_HOC_TOOLING_COMMANDS.syncDeliveryUnit}`,
|
|
18
|
+
` ${AD_HOC_TOOLING_COMMANDS.skills} install`,
|
|
19
|
+
` ${AD_HOC_TOOLING_COMMANDS.skills} check`
|
|
16
20
|
].join('\n');
|
|
17
21
|
process.stdout.write(`Usage:
|
|
18
22
|
ultramodern-create ultramodern <command> [args]
|
|
@@ -35,7 +39,7 @@ function spawnNodeScript(relativeScriptPath, args, context, options = {}) {
|
|
|
35
39
|
stdio: 'inherit'
|
|
36
40
|
});
|
|
37
41
|
if (result.error) throw result.error;
|
|
38
|
-
return result.status ?? 1;
|
|
42
|
+
return result.status ?? (result.signal ? 128 + constants.signals[result.signal] : 1);
|
|
39
43
|
}
|
|
40
44
|
function runTemplateBackedToolingCommand(command, args, context) {
|
|
41
45
|
const toolingCommand = generatedToolingCommands.find((candidate)=>candidate.command === command);
|
|
@@ -44,24 +48,4 @@ function runTemplateBackedToolingCommand(command, args, context) {
|
|
|
44
48
|
cwd: 'invocation' === toolingCommand.cwd ? context.invocationCwd : context.workspaceRoot
|
|
45
49
|
});
|
|
46
50
|
}
|
|
47
|
-
|
|
48
|
-
const tempDir = node_fs.mkdtempSync(node_path.join(node_os.tmpdir(), 'ultramodern-tool-'));
|
|
49
|
-
const tempFile = node_path.join(tempDir, 'command.mjs');
|
|
50
|
-
try {
|
|
51
|
-
node_fs.writeFileSync(tempFile, source, 'utf-8');
|
|
52
|
-
const result = spawnSync(process.execPath, [
|
|
53
|
-
tempFile
|
|
54
|
-
], {
|
|
55
|
-
cwd: context.workspaceRoot,
|
|
56
|
-
stdio: 'inherit'
|
|
57
|
-
});
|
|
58
|
-
if (result.error) throw result.error;
|
|
59
|
-
return result.status ?? 1;
|
|
60
|
-
} finally{
|
|
61
|
-
node_fs.rmSync(tempDir, {
|
|
62
|
-
force: true,
|
|
63
|
-
recursive: true
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
export { createPackageRoot, printHelp, runRenderedModule, runTemplateBackedToolingCommand, spawnNodeScript };
|
|
51
|
+
export { AD_HOC_TOOLING_COMMANDS, createPackageRoot, printHelp, runTemplateBackedToolingCommand, spawnNodeScript };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import "node:module";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import node_path from "node:path";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
5
|
+
async function main() {
|
|
6
|
+
const [appDirectory, label, mode] = process.argv.slice(2);
|
|
7
|
+
try {
|
|
8
|
+
if (!appDirectory || !label) throw new Error('Route generation requires an app directory and label.');
|
|
9
|
+
const appRequire = createRequire(node_path.join(appDirectory, 'package.json'));
|
|
10
|
+
const pluginUrl = pathToFileURL(appRequire.resolve('@modern-js/plugin-tanstack')).href;
|
|
11
|
+
const plugin = await import(pluginUrl);
|
|
12
|
+
if ('manifest' === mode) {
|
|
13
|
+
await plugin.writeRouteMetadataManifest({
|
|
14
|
+
appDirectory
|
|
15
|
+
});
|
|
16
|
+
console.log(`[ultramodern] Route metadata manifest generated: ${label}`);
|
|
17
|
+
} else {
|
|
18
|
+
await plugin.generateTanstackRouteArtifacts({
|
|
19
|
+
appDirectory
|
|
20
|
+
});
|
|
21
|
+
console.log(`[ultramodern] TanStack route artifacts generated: ${label}`);
|
|
22
|
+
}
|
|
23
|
+
} catch (error) {
|
|
24
|
+
process.exitCode = 1;
|
|
25
|
+
console.error(`[ultramodern] TanStack route generation failed: ${label}`);
|
|
26
|
+
let current = error;
|
|
27
|
+
let depth = 0;
|
|
28
|
+
while(current){
|
|
29
|
+
const detail = current instanceof Error ? current.stack ?? `${current.name}: ${current.message}` : String(current);
|
|
30
|
+
console.error(`${0 === depth ? '-' : ' caused by:'} ${detail}`);
|
|
31
|
+
current = current instanceof Error ? current.cause : void 0;
|
|
32
|
+
depth += 1;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
main();
|