@bleedingdev/modern-js-ultramodern-create 3.8.3-ultramodern.2
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 +459 -0
- package/bin/run.js +74 -0
- package/dist/cjs/agent-files.cjs +96 -0
- package/dist/cjs/agents-md.cjs +98 -0
- package/dist/cjs/cli/flags.cjs +358 -0
- package/dist/cjs/cli/help.cjs +111 -0
- package/dist/cjs/cli/package-source.cjs +188 -0
- package/dist/cjs/cli/project-setup.cjs +159 -0
- package/dist/cjs/cli/prompts.cjs +100 -0
- package/dist/cjs/create-package-root.cjs +63 -0
- package/dist/cjs/docs-location.cjs +143 -0
- package/dist/cjs/index.cjs +169 -0
- package/dist/cjs/locale/en.cjs +126 -0
- package/dist/cjs/locale/index.cjs +50 -0
- package/dist/cjs/locale/zh.cjs +126 -0
- package/dist/cjs/ultramodern-package-source.cjs +115 -0
- package/dist/cjs/ultramodern-release-cohort.cjs +206 -0
- package/dist/cjs/ultramodern-tooling/commands/cloudflare-output-verify.cjs +132 -0
- package/dist/cjs/ultramodern-tooling/commands/context.cjs +131 -0
- package/dist/cjs/ultramodern-tooling/commands/mf-types.cjs +55 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.cjs +212 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +47 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.cjs +112 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.cjs +55 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +102 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +187 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.cjs +146 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.cjs +110 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.cjs +67 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.cjs +279 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.cjs +58 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.cjs +71 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.cjs +67 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.cjs +151 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/help.cjs +67 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/install.cjs +52 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/io.cjs +447 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +309 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-source.cjs +87 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +588 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +376 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +73 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.cjs +215 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.cjs +135 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect.cjs +454 -0
- package/dist/cjs/ultramodern-tooling/commands/options.cjs +59 -0
- package/dist/cjs/ultramodern-tooling/commands/routes-generate.cjs +122 -0
- package/dist/cjs/ultramodern-tooling/commands/skills.cjs +49 -0
- package/dist/cjs/ultramodern-tooling/commands/sync-delivery-unit.cjs +40 -0
- package/dist/cjs/ultramodern-tooling/commands/validate.cjs +53 -0
- package/dist/cjs/ultramodern-tooling/commands.cjs +99 -0
- package/dist/cjs/ultramodern-tooling/config/constants.cjs +48 -0
- package/dist/cjs/ultramodern-tooling/config/index.cjs +104 -0
- package/dist/cjs/ultramodern-tooling/config/json.cjs +61 -0
- package/dist/cjs/ultramodern-tooling/config/load.cjs +62 -0
- package/dist/cjs/ultramodern-tooling/config/metadata.cjs +92 -0
- package/dist/cjs/ultramodern-tooling/config/normalize.cjs +236 -0
- package/dist/cjs/ultramodern-tooling/config/synthesize.cjs +157 -0
- package/dist/cjs/ultramodern-tooling/config/types.cjs +18 -0
- package/dist/cjs/ultramodern-tooling/config.cjs +62 -0
- package/dist/cjs/ultramodern-workspace/add-shell.cjs +277 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/constants.cjs +52 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/execute.cjs +186 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +255 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +256 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +99 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +152 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/transaction.cjs +590 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/workspace-state.cjs +137 -0
- package/dist/cjs/ultramodern-workspace/add-vertical.cjs +84 -0
- package/dist/cjs/ultramodern-workspace/api/checkout-cart.cjs +145 -0
- package/dist/cjs/ultramodern-workspace/api/client.cjs +224 -0
- package/dist/cjs/ultramodern-workspace/api/contracts.cjs +187 -0
- package/dist/cjs/ultramodern-workspace/api/names.cjs +98 -0
- package/dist/cjs/ultramodern-workspace/api/rpc.cjs +264 -0
- package/dist/cjs/ultramodern-workspace/api/service.cjs +252 -0
- package/dist/cjs/ultramodern-workspace/api/shared.cjs +264 -0
- package/dist/cjs/ultramodern-workspace/api.cjs +108 -0
- package/dist/cjs/ultramodern-workspace/app-files.cjs +206 -0
- package/dist/cjs/ultramodern-workspace/backend-federation.cjs +355 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/cli.cjs +71 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/defaults.cjs +44 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/gates.cjs +93 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/index.cjs +60 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/normalize.cjs +68 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/schema.cjs +78 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/shared.cjs +110 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/validation.cjs +68 -0
- package/dist/cjs/ultramodern-workspace/bridge-config/workspace-packages.cjs +108 -0
- package/dist/cjs/ultramodern-workspace/bridge-config.cjs +62 -0
- package/dist/cjs/ultramodern-workspace/codesmith.cjs +144 -0
- package/dist/cjs/ultramodern-workspace/contracts.cjs +366 -0
- package/dist/cjs/ultramodern-workspace/delivery-unit-schema/types.cjs +292 -0
- package/dist/cjs/ultramodern-workspace/delivery-unit-schema/up-projection.cjs +188 -0
- package/dist/cjs/ultramodern-workspace/delivery-unit-stamp.cjs +59 -0
- package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +150 -0
- package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +75 -0
- package/dist/cjs/ultramodern-workspace/demo-components.cjs +685 -0
- package/dist/cjs/ultramodern-workspace/descriptors.cjs +307 -0
- package/dist/cjs/ultramodern-workspace/effect-diagnostics.cjs +114 -0
- package/dist/cjs/ultramodern-workspace/fs-io.cjs +324 -0
- package/dist/cjs/ultramodern-workspace/generation-result.cjs +191 -0
- package/dist/cjs/ultramodern-workspace/index.cjs +79 -0
- package/dist/cjs/ultramodern-workspace/locales.cjs +159 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/constants.cjs +69 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/discovery.cjs +77 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +84 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +188 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +165 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +211 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/types.cjs +18 -0
- package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +112 -0
- package/dist/cjs/ultramodern-workspace/mf-validation.cjs +48 -0
- package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +343 -0
- package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +111 -0
- package/dist/cjs/ultramodern-workspace/module-federation/remote-refs.cjs +106 -0
- package/dist/cjs/ultramodern-workspace/module-federation/shared-config.cjs +53 -0
- package/dist/cjs/ultramodern-workspace/module-federation.cjs +77 -0
- package/dist/cjs/ultramodern-workspace/naming.cjs +155 -0
- package/dist/cjs/ultramodern-workspace/overlay-baseline-guard.cjs +408 -0
- package/dist/cjs/ultramodern-workspace/overlays.cjs +155 -0
- package/dist/cjs/ultramodern-workspace/package-json.cjs +269 -0
- package/dist/cjs/ultramodern-workspace/package-source.cjs +68 -0
- package/dist/cjs/ultramodern-workspace/policy.cjs +1020 -0
- package/dist/cjs/ultramodern-workspace/public-api.cjs +58 -0
- package/dist/cjs/ultramodern-workspace/public-surface.cjs +247 -0
- package/dist/cjs/ultramodern-workspace/routes.cjs +226 -0
- package/dist/cjs/ultramodern-workspace/shared-patches.cjs +41 -0
- package/dist/cjs/ultramodern-workspace/shells.cjs +152 -0
- package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +147 -0
- package/dist/cjs/ultramodern-workspace/tsconfigs.cjs +201 -0
- package/dist/cjs/ultramodern-workspace/types.cjs +88 -0
- package/dist/cjs/ultramodern-workspace/versions.cjs +184 -0
- package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +175 -0
- package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +261 -0
- package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +424 -0
- package/dist/cjs/ultramodern-workspace/write-app.cjs +148 -0
- package/dist/cjs/ultramodern-workspace/write-workspace.cjs +232 -0
- package/dist/cjs/ultramodern-workspace/zerops.cjs +108 -0
- package/dist/esm/agent-files.js +47 -0
- package/dist/esm/agents-md.js +50 -0
- package/dist/esm/cli/flags.js +263 -0
- package/dist/esm/cli/help.js +70 -0
- package/dist/esm/cli/package-source.js +124 -0
- package/dist/esm/cli/project-setup.js +102 -0
- package/dist/esm/cli/prompts.js +51 -0
- package/dist/esm/create-package-root.js +14 -0
- package/dist/esm/docs-location.js +79 -0
- package/dist/esm/index.js +133 -0
- package/dist/esm/locale/en.js +88 -0
- package/dist/esm/locale/index.js +9 -0
- package/dist/esm/locale/zh.js +88 -0
- package/dist/esm/ultramodern-package-source.js +43 -0
- package/dist/esm/ultramodern-release-cohort.js +133 -0
- package/dist/esm/ultramodern-tooling/commands/cloudflare-output-verify.js +84 -0
- package/dist/esm/ultramodern-tooling/commands/context.js +66 -0
- package/dist/esm/ultramodern-tooling/commands/mf-types.js +17 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +154 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +9 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +63 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +7 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +47 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +138 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +97 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +61 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +16 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +230 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +10 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +8 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +15 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +100 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/help.js +29 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/install.js +14 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/io.js +385 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +262 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +49 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +535 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +329 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +19 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +148 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +80 -0
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect.js +405 -0
- package/dist/esm/ultramodern-tooling/commands/options.js +18 -0
- package/dist/esm/ultramodern-tooling/commands/routes-generate.js +74 -0
- package/dist/esm/ultramodern-tooling/commands/skills.js +11 -0
- package/dist/esm/ultramodern-tooling/commands/sync-delivery-unit.js +1 -0
- package/dist/esm/ultramodern-tooling/commands/validate.js +15 -0
- package/dist/esm/ultramodern-tooling/commands.js +51 -0
- package/dist/esm/ultramodern-tooling/config/constants.js +4 -0
- package/dist/esm/ultramodern-tooling/config/index.js +7 -0
- package/dist/esm/ultramodern-tooling/config/json.js +10 -0
- package/dist/esm/ultramodern-tooling/config/load.js +13 -0
- package/dist/esm/ultramodern-tooling/config/metadata.js +37 -0
- package/dist/esm/ultramodern-tooling/config/normalize.js +173 -0
- package/dist/esm/ultramodern-tooling/config/synthesize.js +108 -0
- package/dist/esm/ultramodern-tooling/config/types.js +0 -0
- package/dist/esm/ultramodern-tooling/config.js +1 -0
- package/dist/esm/ultramodern-workspace/add-shell.js +224 -0
- package/dist/esm/ultramodern-workspace/add-vertical/constants.js +5 -0
- package/dist/esm/ultramodern-workspace/add-vertical/execute.js +138 -0
- package/dist/esm/ultramodern-workspace/add-vertical/plan.js +205 -0
- package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +198 -0
- package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +48 -0
- package/dist/esm/ultramodern-workspace/add-vertical/topology.js +108 -0
- package/dist/esm/ultramodern-workspace/add-vertical/transaction.js +529 -0
- package/dist/esm/ultramodern-workspace/add-vertical/workspace-state.js +67 -0
- package/dist/esm/ultramodern-workspace/add-vertical.js +6 -0
- package/dist/esm/ultramodern-workspace/api/checkout-cart.js +86 -0
- package/dist/esm/ultramodern-workspace/api/client.js +183 -0
- package/dist/esm/ultramodern-workspace/api/contracts.js +149 -0
- package/dist/esm/ultramodern-workspace/api/names.js +33 -0
- package/dist/esm/ultramodern-workspace/api/rpc.js +205 -0
- package/dist/esm/ultramodern-workspace/api/service.js +211 -0
- package/dist/esm/ultramodern-workspace/api/shared.js +226 -0
- package/dist/esm/ultramodern-workspace/api.js +6 -0
- package/dist/esm/ultramodern-workspace/app-files.js +150 -0
- package/dist/esm/ultramodern-workspace/backend-federation.js +290 -0
- package/dist/esm/ultramodern-workspace/bridge-config/cli.js +30 -0
- package/dist/esm/ultramodern-workspace/bridge-config/defaults.js +6 -0
- package/dist/esm/ultramodern-workspace/bridge-config/gates.js +52 -0
- package/dist/esm/ultramodern-workspace/bridge-config/index.js +3 -0
- package/dist/esm/ultramodern-workspace/bridge-config/normalize.js +30 -0
- package/dist/esm/ultramodern-workspace/bridge-config/schema.js +31 -0
- package/dist/esm/ultramodern-workspace/bridge-config/shared.js +51 -0
- package/dist/esm/ultramodern-workspace/bridge-config/validation.js +27 -0
- package/dist/esm/ultramodern-workspace/bridge-config/workspace-packages.js +67 -0
- package/dist/esm/ultramodern-workspace/bridge-config.js +1 -0
- package/dist/esm/ultramodern-workspace/codesmith.js +96 -0
- package/dist/esm/ultramodern-workspace/contracts.js +319 -0
- package/dist/esm/ultramodern-workspace/delivery-unit-schema/types.js +236 -0
- package/dist/esm/ultramodern-workspace/delivery-unit-schema/up-projection.js +129 -0
- package/dist/esm/ultramodern-workspace/delivery-unit-stamp.js +18 -0
- package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +101 -0
- package/dist/esm/ultramodern-workspace/delivery-unit.js +21 -0
- package/dist/esm/ultramodern-workspace/demo-components.js +617 -0
- package/dist/esm/ultramodern-workspace/descriptors.js +191 -0
- package/dist/esm/ultramodern-workspace/effect-diagnostics.js +76 -0
- package/dist/esm/ultramodern-workspace/fs-io.js +235 -0
- package/dist/esm/ultramodern-workspace/generation-result.js +132 -0
- package/dist/esm/ultramodern-workspace/index.js +7 -0
- package/dist/esm/ultramodern-workspace/locales.js +121 -0
- package/dist/esm/ultramodern-workspace/mf-validation/constants.js +19 -0
- package/dist/esm/ultramodern-workspace/mf-validation/discovery.js +28 -0
- package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +46 -0
- package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +144 -0
- package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +89 -0
- package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +161 -0
- package/dist/esm/ultramodern-workspace/mf-validation/types.js +0 -0
- package/dist/esm/ultramodern-workspace/mf-validation/validate.js +57 -0
- package/dist/esm/ultramodern-workspace/mf-validation.js +3 -0
- package/dist/esm/ultramodern-workspace/module-federation/config.js +296 -0
- package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +67 -0
- package/dist/esm/ultramodern-workspace/module-federation/remote-refs.js +65 -0
- package/dist/esm/ultramodern-workspace/module-federation/shared-config.js +12 -0
- package/dist/esm/ultramodern-workspace/module-federation.js +5 -0
- package/dist/esm/ultramodern-workspace/naming.js +71 -0
- package/dist/esm/ultramodern-workspace/overlay-baseline-guard.js +350 -0
- package/dist/esm/ultramodern-workspace/overlays.js +103 -0
- package/dist/esm/ultramodern-workspace/package-json.js +201 -0
- package/dist/esm/ultramodern-workspace/package-source.js +27 -0
- package/dist/esm/ultramodern-workspace/policy.js +955 -0
- package/dist/esm/ultramodern-workspace/public-api.js +4 -0
- package/dist/esm/ultramodern-workspace/public-surface.js +183 -0
- package/dist/esm/ultramodern-workspace/routes.js +146 -0
- package/dist/esm/ultramodern-workspace/shared-patches.js +3 -0
- package/dist/esm/ultramodern-workspace/shells.js +96 -0
- package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
- package/dist/esm/ultramodern-workspace/tsconfigs.js +138 -0
- package/dist/esm/ultramodern-workspace/types.js +31 -0
- package/dist/esm/ultramodern-workspace/versions.js +38 -0
- package/dist/esm/ultramodern-workspace/workspace-script-plan.js +125 -0
- package/dist/esm/ultramodern-workspace/workspace-scripts.js +200 -0
- package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +386 -0
- package/dist/esm/ultramodern-workspace/write-app.js +105 -0
- package/dist/esm/ultramodern-workspace/write-workspace.js +178 -0
- package/dist/esm/ultramodern-workspace/zerops.js +70 -0
- package/dist/esm-node/agent-files.js +48 -0
- package/dist/esm-node/agents-md.js +51 -0
- package/dist/esm-node/cli/flags.js +264 -0
- package/dist/esm-node/cli/help.js +71 -0
- package/dist/esm-node/cli/package-source.js +125 -0
- package/dist/esm-node/cli/project-setup.js +103 -0
- package/dist/esm-node/cli/prompts.js +52 -0
- package/dist/esm-node/create-package-root.js +15 -0
- package/dist/esm-node/docs-location.js +80 -0
- package/dist/esm-node/index.js +134 -0
- package/dist/esm-node/locale/en.js +89 -0
- package/dist/esm-node/locale/index.js +10 -0
- package/dist/esm-node/locale/zh.js +89 -0
- package/dist/esm-node/ultramodern-package-source.js +44 -0
- package/dist/esm-node/ultramodern-release-cohort.js +134 -0
- package/dist/esm-node/ultramodern-tooling/commands/cloudflare-output-verify.js +85 -0
- package/dist/esm-node/ultramodern-tooling/commands/context.js +67 -0
- package/dist/esm-node/ultramodern-tooling/commands/mf-types.js +18 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.js +155 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +10 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.js +64 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.js +8 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +48 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +139 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.js +98 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.js +62 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.js +17 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.js +231 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.js +11 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.js +9 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.js +16 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.js +101 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/help.js +30 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/install.js +15 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/io.js +386 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +263 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-source.js +50 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +536 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +330 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +20 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.js +149 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.js +81 -0
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect.js +406 -0
- package/dist/esm-node/ultramodern-tooling/commands/options.js +19 -0
- package/dist/esm-node/ultramodern-tooling/commands/routes-generate.js +75 -0
- package/dist/esm-node/ultramodern-tooling/commands/skills.js +12 -0
- package/dist/esm-node/ultramodern-tooling/commands/sync-delivery-unit.js +2 -0
- package/dist/esm-node/ultramodern-tooling/commands/validate.js +16 -0
- package/dist/esm-node/ultramodern-tooling/commands.js +52 -0
- package/dist/esm-node/ultramodern-tooling/config/constants.js +5 -0
- package/dist/esm-node/ultramodern-tooling/config/index.js +8 -0
- package/dist/esm-node/ultramodern-tooling/config/json.js +11 -0
- package/dist/esm-node/ultramodern-tooling/config/load.js +14 -0
- package/dist/esm-node/ultramodern-tooling/config/metadata.js +38 -0
- package/dist/esm-node/ultramodern-tooling/config/normalize.js +174 -0
- package/dist/esm-node/ultramodern-tooling/config/synthesize.js +109 -0
- package/dist/esm-node/ultramodern-tooling/config/types.js +1 -0
- package/dist/esm-node/ultramodern-tooling/config.js +2 -0
- package/dist/esm-node/ultramodern-workspace/add-shell.js +225 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/constants.js +6 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/execute.js +139 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +206 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +199 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +49 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +109 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/transaction.js +530 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical/workspace-state.js +68 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical.js +7 -0
- package/dist/esm-node/ultramodern-workspace/api/checkout-cart.js +87 -0
- package/dist/esm-node/ultramodern-workspace/api/client.js +184 -0
- package/dist/esm-node/ultramodern-workspace/api/contracts.js +150 -0
- package/dist/esm-node/ultramodern-workspace/api/names.js +34 -0
- package/dist/esm-node/ultramodern-workspace/api/rpc.js +206 -0
- package/dist/esm-node/ultramodern-workspace/api/service.js +212 -0
- package/dist/esm-node/ultramodern-workspace/api/shared.js +227 -0
- package/dist/esm-node/ultramodern-workspace/api.js +7 -0
- package/dist/esm-node/ultramodern-workspace/app-files.js +151 -0
- package/dist/esm-node/ultramodern-workspace/backend-federation.js +291 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/cli.js +31 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/defaults.js +7 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/gates.js +53 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/index.js +4 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/normalize.js +31 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/schema.js +32 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/shared.js +52 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/validation.js +28 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config/workspace-packages.js +68 -0
- package/dist/esm-node/ultramodern-workspace/bridge-config.js +2 -0
- package/dist/esm-node/ultramodern-workspace/codesmith.js +97 -0
- package/dist/esm-node/ultramodern-workspace/contracts.js +320 -0
- package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/types.js +237 -0
- package/dist/esm-node/ultramodern-workspace/delivery-unit-schema/up-projection.js +130 -0
- package/dist/esm-node/ultramodern-workspace/delivery-unit-stamp.js +19 -0
- package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +102 -0
- package/dist/esm-node/ultramodern-workspace/delivery-unit.js +22 -0
- package/dist/esm-node/ultramodern-workspace/demo-components.js +618 -0
- package/dist/esm-node/ultramodern-workspace/descriptors.js +192 -0
- package/dist/esm-node/ultramodern-workspace/effect-diagnostics.js +77 -0
- package/dist/esm-node/ultramodern-workspace/fs-io.js +236 -0
- package/dist/esm-node/ultramodern-workspace/generation-result.js +133 -0
- package/dist/esm-node/ultramodern-workspace/index.js +8 -0
- package/dist/esm-node/ultramodern-workspace/locales.js +122 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/constants.js +20 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/discovery.js +29 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +47 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +145 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +90 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +162 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/types.js +1 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +58 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation.js +4 -0
- package/dist/esm-node/ultramodern-workspace/module-federation/config.js +297 -0
- package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +68 -0
- package/dist/esm-node/ultramodern-workspace/module-federation/remote-refs.js +66 -0
- package/dist/esm-node/ultramodern-workspace/module-federation/shared-config.js +13 -0
- package/dist/esm-node/ultramodern-workspace/module-federation.js +6 -0
- package/dist/esm-node/ultramodern-workspace/naming.js +72 -0
- package/dist/esm-node/ultramodern-workspace/overlay-baseline-guard.js +351 -0
- package/dist/esm-node/ultramodern-workspace/overlays.js +104 -0
- package/dist/esm-node/ultramodern-workspace/package-json.js +202 -0
- package/dist/esm-node/ultramodern-workspace/package-source.js +28 -0
- package/dist/esm-node/ultramodern-workspace/policy.js +956 -0
- package/dist/esm-node/ultramodern-workspace/public-api.js +5 -0
- package/dist/esm-node/ultramodern-workspace/public-surface.js +184 -0
- package/dist/esm-node/ultramodern-workspace/routes.js +147 -0
- package/dist/esm-node/ultramodern-workspace/shared-patches.js +4 -0
- package/dist/esm-node/ultramodern-workspace/shells.js +97 -0
- package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
- package/dist/esm-node/ultramodern-workspace/tsconfigs.js +139 -0
- package/dist/esm-node/ultramodern-workspace/types.js +32 -0
- package/dist/esm-node/ultramodern-workspace/versions.js +39 -0
- package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +126 -0
- package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +201 -0
- package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +387 -0
- package/dist/esm-node/ultramodern-workspace/write-app.js +106 -0
- package/dist/esm-node/ultramodern-workspace/write-workspace.js +179 -0
- package/dist/esm-node/ultramodern-workspace/zerops.js +71 -0
- package/dist/types/agent-files.d.ts +11 -0
- package/dist/types/agents-md.d.ts +1 -0
- package/dist/types/cli/flags.d.ts +35 -0
- package/dist/types/cli/help.d.ts +2 -0
- package/dist/types/cli/package-source.d.ts +15 -0
- package/dist/types/cli/project-setup.d.ts +8 -0
- package/dist/types/cli/prompts.d.ts +4 -0
- package/dist/types/create-package-root.d.ts +1 -0
- package/dist/types/docs-location.d.ts +23 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/locale/en.d.ts +87 -0
- package/dist/types/locale/index.d.ts +176 -0
- package/dist/types/locale/zh.d.ts +87 -0
- package/dist/types/ultramodern-package-source.d.ts +20 -0
- package/dist/types/ultramodern-release-cohort.d.ts +30 -0
- package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/context.d.ts +11 -0
- package/dist/types/ultramodern-tooling/commands/mf-types.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/api-metadata.d.ts +12 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.d.ts +4 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/dependency-usage.d.ts +1 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-backend-federation.d.ts +3 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.d.ts +5 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.d.ts +3 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxfmt.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-oxlint.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-removal.d.ts +4 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-typescript.d.ts +3 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-zerops.d.ts +3 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts.d.ts +8 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-patches.d.ts +3 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/generated-ui-source.d.ts +3 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/help.d.ts +1 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/io.d.ts +26 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.d.ts +25 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/package-source.d.ts +3 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.d.ts +26 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +26 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +6 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/react-router-retirement.d.ts +37 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/toolchain-pins.d.ts +4 -0
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/options.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/skills.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands/sync-delivery-unit.d.ts +1 -0
- package/dist/types/ultramodern-tooling/commands/validate.d.ts +2 -0
- package/dist/types/ultramodern-tooling/commands.d.ts +1 -0
- package/dist/types/ultramodern-tooling/config/constants.d.ts +3 -0
- package/dist/types/ultramodern-tooling/config/index.d.ts +7 -0
- package/dist/types/ultramodern-tooling/config/json.d.ts +2 -0
- package/dist/types/ultramodern-tooling/config/load.d.ts +2 -0
- package/dist/types/ultramodern-tooling/config/metadata.d.ts +4 -0
- package/dist/types/ultramodern-tooling/config/normalize.d.ts +22 -0
- package/dist/types/ultramodern-tooling/config/synthesize.d.ts +5 -0
- package/dist/types/ultramodern-tooling/config/types.d.ts +45 -0
- package/dist/types/ultramodern-tooling/config.d.ts +1 -0
- package/dist/types/ultramodern-workspace/add-shell.d.ts +14 -0
- package/dist/types/ultramodern-workspace/add-vertical/constants.d.ts +4 -0
- package/dist/types/ultramodern-workspace/add-vertical/execute.d.ts +9 -0
- package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +2 -0
- package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +42 -0
- package/dist/types/ultramodern-workspace/add-vertical/shell-files.d.ts +4 -0
- package/dist/types/ultramodern-workspace/add-vertical/topology.d.ts +9 -0
- package/dist/types/ultramodern-workspace/add-vertical/transaction.d.ts +49 -0
- package/dist/types/ultramodern-workspace/add-vertical/workspace-state.d.ts +15 -0
- package/dist/types/ultramodern-workspace/add-vertical.d.ts +7 -0
- package/dist/types/ultramodern-workspace/api/checkout-cart.d.ts +33 -0
- package/dist/types/ultramodern-workspace/api/client.d.ts +6 -0
- package/dist/types/ultramodern-workspace/api/contracts.d.ts +2 -0
- package/dist/types/ultramodern-workspace/api/names.d.ts +41 -0
- package/dist/types/ultramodern-workspace/api/rpc.d.ts +41 -0
- package/dist/types/ultramodern-workspace/api/service.d.ts +6 -0
- package/dist/types/ultramodern-workspace/api/shared.d.ts +5 -0
- package/dist/types/ultramodern-workspace/api.d.ts +6 -0
- package/dist/types/ultramodern-workspace/app-files.d.ts +8 -0
- package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
- package/dist/types/ultramodern-workspace/bridge-config/cli.d.ts +3 -0
- package/dist/types/ultramodern-workspace/bridge-config/defaults.d.ts +1 -0
- package/dist/types/ultramodern-workspace/bridge-config/gates.d.ts +3 -0
- package/dist/types/ultramodern-workspace/bridge-config/index.d.ts +4 -0
- package/dist/types/ultramodern-workspace/bridge-config/normalize.d.ts +2 -0
- package/dist/types/ultramodern-workspace/bridge-config/schema.d.ts +61 -0
- package/dist/types/ultramodern-workspace/bridge-config/shared.d.ts +12 -0
- package/dist/types/ultramodern-workspace/bridge-config/validation.d.ts +3 -0
- package/dist/types/ultramodern-workspace/bridge-config/workspace-packages.d.ts +3 -0
- package/dist/types/ultramodern-workspace/bridge-config.d.ts +1 -0
- package/dist/types/ultramodern-workspace/codesmith.d.ts +60 -0
- package/dist/types/ultramodern-workspace/contracts.d.ts +6 -0
- package/dist/types/ultramodern-workspace/delivery-unit-schema/types.d.ts +290 -0
- package/dist/types/ultramodern-workspace/delivery-unit-schema/up-projection.d.ts +189 -0
- package/dist/types/ultramodern-workspace/delivery-unit-stamp.d.ts +4 -0
- package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
- package/dist/types/ultramodern-workspace/delivery-unit.d.ts +8 -0
- package/dist/types/ultramodern-workspace/demo-components.d.ts +19 -0
- package/dist/types/ultramodern-workspace/descriptors.d.ts +63 -0
- package/dist/types/ultramodern-workspace/effect-diagnostics.d.ts +1 -0
- package/dist/types/ultramodern-workspace/fs-io.d.ts +14 -0
- package/dist/types/ultramodern-workspace/generation-result.d.ts +16 -0
- package/dist/types/ultramodern-workspace/index.d.ts +10 -0
- package/dist/types/ultramodern-workspace/locales.d.ts +51 -0
- package/dist/types/ultramodern-workspace/mf-validation/constants.d.ts +5 -0
- package/dist/types/ultramodern-workspace/mf-validation/discovery.d.ts +2 -0
- package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +2 -0
- package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +4 -0
- package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +11 -0
- package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +6 -0
- package/dist/types/ultramodern-workspace/mf-validation/types.d.ts +38 -0
- package/dist/types/ultramodern-workspace/mf-validation/validate.d.ts +4 -0
- package/dist/types/ultramodern-workspace/mf-validation.d.ts +4 -0
- package/dist/types/ultramodern-workspace/module-federation/config.d.ts +5 -0
- package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +4 -0
- package/dist/types/ultramodern-workspace/module-federation/remote-refs.d.ts +3 -0
- package/dist/types/ultramodern-workspace/module-federation/shared-config.d.ts +2 -0
- package/dist/types/ultramodern-workspace/module-federation.d.ts +5 -0
- package/dist/types/ultramodern-workspace/naming.d.ts +14 -0
- package/dist/types/ultramodern-workspace/overlay-baseline-guard.d.ts +57 -0
- package/dist/types/ultramodern-workspace/overlays.d.ts +6 -0
- package/dist/types/ultramodern-workspace/package-json.d.ts +8 -0
- package/dist/types/ultramodern-workspace/package-source.d.ts +3 -0
- package/dist/types/ultramodern-workspace/policy.d.ts +281 -0
- package/dist/types/ultramodern-workspace/public-api.d.ts +6 -0
- package/dist/types/ultramodern-workspace/public-surface.d.ts +27 -0
- package/dist/types/ultramodern-workspace/routes.d.ts +16 -0
- package/dist/types/ultramodern-workspace/shared-patches.d.ts +1 -0
- package/dist/types/ultramodern-workspace/shells.d.ts +48 -0
- package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
- package/dist/types/ultramodern-workspace/tsconfigs.d.ts +14 -0
- package/dist/types/ultramodern-workspace/types.d.ts +334 -0
- package/dist/types/ultramodern-workspace/versions.d.ts +42 -0
- package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +63 -0
- package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +16 -0
- package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +217 -0
- package/dist/types/ultramodern-workspace/write-app.d.ts +4 -0
- package/dist/types/ultramodern-workspace/write-workspace.d.ts +6 -0
- package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
- package/package.json +115 -0
- package/template/AGENTS.md +20 -0
- package/template-workspace/.agents/agent-reference-repos.json +24 -0
- package/template-workspace/.codex/hooks.json +16 -0
- package/template-workspace/.codex/rstackjs-agent-skills-LICENSE +21 -0
- package/template-workspace/.codex/skills/rsbuild-best-practices/SKILL.md +57 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/SKILL.md +96 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/references/command-map.md +113 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/references/common-analysis-patterns.md +190 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/references/install-rsdoctor-common.md +88 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/references/install-rsdoctor-rspack.md +138 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/references/install-rsdoctor-webpack.md +71 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/references/install-rsdoctor.md +39 -0
- package/template-workspace/.codex/skills/rsdoctor-analysis/references/rsdoctor-data-types.md +103 -0
- package/template-workspace/.codex/skills/rslib-best-practices/SKILL.md +58 -0
- package/template-workspace/.codex/skills/rslib-modern-package/SKILL.md +173 -0
- package/template-workspace/.codex/skills/rspack-best-practices/SKILL.md +70 -0
- package/template-workspace/.codex/skills/rspack-tracing/SKILL.md +75 -0
- package/template-workspace/.codex/skills/rspack-tracing/references/bottlenecks.md +47 -0
- package/template-workspace/.codex/skills/rspack-tracing/references/tracing-guide.md +38 -0
- package/template-workspace/.codex/skills/rspack-tracing/scripts/analyze_trace.js +184 -0
- package/template-workspace/.codex/skills/rstest-best-practices/SKILL.md +133 -0
- package/template-workspace/.codex/skills-lock.json +114 -0
- package/template-workspace/.github/renovate.json +29 -0
- package/template-workspace/.github/workflows/ultramodern-workspace-gates.yml.handlebars +71 -0
- package/template-workspace/.gitignore.handlebars +16 -0
- package/template-workspace/.mise.toml.handlebars +3 -0
- package/template-workspace/.modernjs/release-cohort.json +244 -0
- package/template-workspace/AGENTS.md.handlebars +30 -0
- package/template-workspace/CLAUDE.md.handlebars +1 -0
- package/template-workspace/README.md.handlebars +229 -0
- package/template-workspace/lefthook.yml +24 -0
- package/template-workspace/oxfmt.config.ts +20 -0
- package/template-workspace/oxlint.config.ts +38 -0
- package/template-workspace/patches/@module-federation__bridge-react@2.9.0.patch +47 -0
- package/template-workspace/patches/@module-federation__dts-plugin@2.9.0.patch +26 -0
- package/template-workspace/patches/@module-federation__modern-js-v3@2.9.0.patch +268 -0
- package/template-workspace/patches/@module-federation__runtime-core@2.9.0.patch +13 -0
- package/template-workspace/patches/@tanstack__router-core@1.171.27.patch +28 -0
- package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +471 -0
- package/template-workspace/patches/msgpackr@2.0.6.patch +29 -0
- package/template-workspace/patches/zod@4.4.3.patch +54 -0
- package/template-workspace/pnpm-workspace.yaml.handlebars +54 -0
- package/template-workspace/scripts/bootstrap-agent-skills.mjs +308 -0
- package/template-workspace/scripts/setup-agent-reference-repos.mjs +370 -0
- package/templates/app/shell-frame.tsx +49 -0
- package/templates/app/ultramodern-route-head.tsx.handlebars +153 -0
- package/templates/packages/shared-contracts-index.ts +400 -0
- package/templates/workspace/apps/modern.config.shared-module-federation.ts.handlebars +42 -0
- package/templates/workspace/apps/modern.config.ts.handlebars +187 -0
- package/templates/workspace/apps/shared/src/routes/ultramodern-jsonld.ts.handlebars +119 -0
- package/templates/workspace/apps/shared/src/routes/ultramodern-route-metadata.ts.handlebars +21 -0
- package/templates/workspace/apps/shell-super-app/src/routes/[lang]/page.tsx.handlebars +49 -0
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.helpers.tsx.handlebars +27 -0
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.imports.tsx.handlebars +4 -0
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.tsx.handlebars +44 -0
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.helpers.tsx.handlebars +17 -0
- package/templates/workspace/apps/shell-super-app/src/routes/vertical-components.worker.imports.tsx.handlebars +1 -0
- package/templates/workspace/packages/shared-design-tokens/tokens.css.handlebars +7 -0
- package/templates/workspace/tailwind.config.ts.handlebars +3 -0
- package/templates/workspace/verticals/server/checkout-cart-handlers.ts.handlebars +49 -0
- package/templates/workspace/verticals/server/checkout-cart-state.ts.handlebars +23 -0
- package/templates/workspace/verticals/shared/api.checkout-cart-contract-fields.ts.handlebars +1 -0
- package/templates/workspace/verticals/shared/api.checkout-cart-endpoints.ts.handlebars +23 -0
- package/templates/workspace/verticals/shared/api.checkout-cart-operation-contexts.ts.handlebars +29 -0
- package/templates/workspace/verticals/shared/api.checkout-cart-schemas.ts.handlebars +48 -0
- package/templates/workspace/verticals/src/api/checkout-cart-client-exports.ts.handlebars +70 -0
- package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +779 -0
- package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mts +9 -0
- package/templates/workspace-scripts/generate-node-backend-federation.mjs +383 -0
- package/templates/workspace-scripts/generate-public-surface-assets.mjs +766 -0
- package/templates/workspace-scripts/materialize-zerops-runtime.mjs +447 -0
- package/templates/workspace-scripts/proof-cloudflare-version.mjs +682 -0
- package/templates/workspace-scripts/proof-node-backend-federation.mjs +1281 -0
- package/templates/workspace-scripts/proof-workerd-ssr.mts +847 -0
- package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +1116 -0
- package/templates/workspace-scripts/ultramodern-performance-readiness.config.mjs +7 -0
- package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +412 -0
- package/templates/workspace-scripts/ultramodern-typecheck.mjs +159 -0
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +4094 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021-present Modern.js
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://modernjs.dev" target="blank"><img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png" width="300" alt="Modern.js Logo" /></a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Modern.js</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
A Progressive React Framework for modern web development.
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
## UltraModern.js Create
|
|
12
|
+
|
|
13
|
+
The BleedingDev create package has one supported generated product: an UltraModern SuperApp workspace. New scaffolds use TanStack Router.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create my-workspace
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The supported pnpm command contract is the scoped package specifier above:
|
|
20
|
+
`pnpm dlx @bleedingdev/modern-js-ultramodern-create <target>`. Do not shorten it
|
|
21
|
+
to `pnpm dlx modern-js-ultramodern-create`; there is no unscoped
|
|
22
|
+
`modern-js-ultramodern-create` npm package. Release proof runs this scoped form
|
|
23
|
+
from a temporary pnpm store/cache so it cannot pass because of a local link
|
|
24
|
+
cache.
|
|
25
|
+
|
|
26
|
+
To initialize the empty directory you are already in, pass `.` explicitly:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create .
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The workspace starts shell-only so the first commit has no fake business
|
|
33
|
+
domains to delete. It generates:
|
|
34
|
+
|
|
35
|
+
- `apps/shell-super-app` as the Module Federation host and topology owner.
|
|
36
|
+
- `verticals/*` empty until a real domain is added with `--vertical`.
|
|
37
|
+
- `packages/shared-*` placeholders for shared contracts, tokens, and Effect
|
|
38
|
+
API support.
|
|
39
|
+
- `.modernjs/ultramodern.json` as compact generator provenance, package-source
|
|
40
|
+
config, app topology, bridge, deploy, Module Federation, and tooling config.
|
|
41
|
+
- `topology/*` as app-owned topology, ownership, and local development overlay
|
|
42
|
+
JSON.
|
|
43
|
+
|
|
44
|
+
Validate the generated workspace before making application changes:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
cd my-workspace
|
|
48
|
+
mise install
|
|
49
|
+
pnpm install
|
|
50
|
+
pnpm check
|
|
51
|
+
pnpm build
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The generated toolchain pins Node `26.7.0`, pnpm `11.24.0`, and
|
|
55
|
+
`@types/node@^26.2.0`; its engine baseline remains Node `>=26` with pnpm `11+`.
|
|
56
|
+
`packageManager`, `.mise.toml`, generated validation, and CI should all agree
|
|
57
|
+
on those values; do not reintroduce Corepack or older pnpm aliases.
|
|
58
|
+
|
|
59
|
+
The current generated dependency cohort also pins `@effect/tsgo@0.37.0`,
|
|
60
|
+
`@tanstack/react-router@1.170.32`, `@tanstack/router-core@1.171.27`,
|
|
61
|
+
`@tanstack/history@1.162.1`, and the Module Federation integration `2.9.0`
|
|
62
|
+
cohort, `@module-federation/node@2.7.50`. Move these only through the
|
|
63
|
+
generator-owned version policy so templates, validation, and the published
|
|
64
|
+
workspace contract stay aligned.
|
|
65
|
+
|
|
66
|
+
## TS-Go Compatibility Boundary
|
|
67
|
+
|
|
68
|
+
The supported generator runtime surfaces are:
|
|
69
|
+
|
|
70
|
+
- `@modern-js/ultramodern-create/ultramodern-workspace`
|
|
71
|
+
- `@modern-js/ultramodern-create/ultramodern-workspace/codesmith`
|
|
72
|
+
- The `@bleedingdev/modern-js-ultramodern-create` CLI that delegates to those APIs.
|
|
73
|
+
|
|
74
|
+
These surfaces are plain Node generator code. They must not import
|
|
75
|
+
`typescript` or TypeScript compiler internals at runtime. The package build is
|
|
76
|
+
the local validation command for this boundary:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pnpm --filter @modern-js/ultramodern-create build
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
That command lets Rslib emit runtime modules and declarations together through
|
|
83
|
+
the installed stable TypeScript 7 backend. The same declaration configuration
|
|
84
|
+
stays active during `rslib build --watch`. Run
|
|
85
|
+
`pnpm --filter @modern-js/ultramodern-create test` when changing generator behavior; it
|
|
86
|
+
includes a boundary test that scans generator sources, templates, and generated
|
|
87
|
+
workspace output for compiler API imports.
|
|
88
|
+
|
|
89
|
+
Generated app packages keep stable `typescript` on TS7 so Modern/Rspack and
|
|
90
|
+
`@effect/tsgo` use TS-Go by default. Generated app/package source must not
|
|
91
|
+
depend on compiler API internals. If a future AST utility is needed, keep it
|
|
92
|
+
behind a dedicated TypeScript adapter and test it against stable `typescript`.
|
|
93
|
+
|
|
94
|
+
Generated CI does not call the local aggregate. It runs format, lint,
|
|
95
|
+
typecheck, skills, i18n boundary validation, contract validation, and build as
|
|
96
|
+
separate matrix jobs so failures are isolated and parallelizable. Generated
|
|
97
|
+
lefthook config runs separate format and lint-fix commands on pre-commit, then
|
|
98
|
+
runs the read-only primitive gates in parallel on pre-push.
|
|
99
|
+
|
|
100
|
+
For local monorepo dependency testing, add `--workspace`:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create my-workspace --workspace
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
For package-source validation outside the monorepo, pass explicit
|
|
107
|
+
`--ultramodern-package-*` options.
|
|
108
|
+
|
|
109
|
+
## Automation And Public API
|
|
110
|
+
|
|
111
|
+
The supported runtime import is the public generator subpath. It exposes only
|
|
112
|
+
generator operations and stable result types; CLI argument parsing, prompts,
|
|
113
|
+
registry lookup, and process-exit flows stay private.
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
import {
|
|
117
|
+
addUltramodernVertical,
|
|
118
|
+
generateUltramodernWorkspace,
|
|
119
|
+
planUltramodernVertical,
|
|
120
|
+
} from '@modern-js/ultramodern-create/ultramodern-workspace';
|
|
121
|
+
|
|
122
|
+
const workspace = generateUltramodernWorkspace({
|
|
123
|
+
targetDir: '/tmp/my-workspace',
|
|
124
|
+
packageName: 'my-workspace',
|
|
125
|
+
modernVersion: '3.4.0',
|
|
126
|
+
packageSource: {
|
|
127
|
+
strategy: 'install',
|
|
128
|
+
modernPackageVersion: '3.4.0',
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
const plan = planUltramodernVertical({
|
|
133
|
+
workspaceRoot: workspace.workspaceRoot,
|
|
134
|
+
name: 'new-vertical',
|
|
135
|
+
modernVersion: '3.4.0',
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const vertical = addUltramodernVertical({
|
|
139
|
+
workspaceRoot: workspace.workspaceRoot,
|
|
140
|
+
name: 'new-vertical',
|
|
141
|
+
modernVersion: '3.4.0',
|
|
142
|
+
});
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Workspace generation returns `operation`, `workspaceRoot`, `packageScope`,
|
|
146
|
+
`packageSource`, `createdApps`, `createdPaths`, `rewrittenPaths`,
|
|
147
|
+
`assignedPorts`, `moduleFederationNames`, `apiPrefixes`,
|
|
148
|
+
`generatedContractPath`, and `warnings`. MicroVertical addition returns the
|
|
149
|
+
same shape for the new vertical and all rewritten integration surfaces.
|
|
150
|
+
|
|
151
|
+
Dry-run is available for MicroVertical addition only. The CLI prints the plan as
|
|
152
|
+
JSON and writes no files:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create new-vertical --vertical --dry-run
|
|
156
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical=new-vertical --dry-run
|
|
157
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical-name new-vertical --dry-run
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
The dry-run object adds `dryRun: true`, `selectedPort`,
|
|
161
|
+
`moduleFederationRemote`, `apiPrefix`, `jsonMutations`,
|
|
162
|
+
`shellDependencyChanges`, and `generatedContractChanges`. It still validates
|
|
163
|
+
the workspace before returning a plan.
|
|
164
|
+
|
|
165
|
+
Validation runs before the first filesystem write. Failures name the owning
|
|
166
|
+
contract so automation can stop safely:
|
|
167
|
+
|
|
168
|
+
| Failure area | Typical cause | Fix |
|
|
169
|
+
| --- | --- | --- |
|
|
170
|
+
| Fresh input | Invalid or missing vertical name | Use `<name> --vertical`, `--vertical=<name>`, or `--vertical-name <name>` |
|
|
171
|
+
| Existing topology | Duplicate app ID, package suffix, path, Module Federation name, port, API prefix, or manifest key | Choose a new vertical name or repair the existing topology/local overlay first |
|
|
172
|
+
| Workspace files | Missing or non-object compact UltraModern config, topology, ownership, or local overlay JSON | Restore the generated config files from source control or rerun from a valid workspace |
|
|
173
|
+
| Tailwind prefix | Existing app already owns the generated CSS prefix | Rename the vertical before generation |
|
|
174
|
+
| Output path | A generated path already exists | Treat it as an existing vertical and do not overwrite it |
|
|
175
|
+
|
|
176
|
+
Package source is explicit and recorded in `.modernjs/ultramodern.json`.
|
|
177
|
+
|
|
178
|
+
| Strategy | Use when | CLI |
|
|
179
|
+
| --- | --- | --- |
|
|
180
|
+
| `install` | Published BleedingDev package cohort or release proof | Default for the BleedingDev create package; optional `--ultramodern-package-version`, `--ultramodern-package-registry`, `--ultramodern-package-scope`, and `--ultramodern-package-name-prefix` |
|
|
181
|
+
| `workspace` | Local monorepo testing against unreleased packages | `--workspace` or `--ultramodern-package-source=workspace` |
|
|
182
|
+
|
|
183
|
+
## Migrating Older Workspaces
|
|
184
|
+
|
|
185
|
+
Older generated repos should move by adopting one published BleedingDev cohort
|
|
186
|
+
at a time. Start with a dry-run vertical addition so validation reports
|
|
187
|
+
topology, ownership, package-source, overlay, Tailwind prefix, Module Federation,
|
|
188
|
+
and compact UltraModern config conflicts before files are written:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create@latest catalog --vertical --dry-run
|
|
192
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create@latest catalog --vertical
|
|
193
|
+
mise install
|
|
194
|
+
mise exec -- pnpm install
|
|
195
|
+
mise exec -- pnpm check
|
|
196
|
+
mise exec -- pnpm build
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
For strict Effect API migrations, update generated package metadata and Modern
|
|
200
|
+
package aliases through the framework command before hand-editing app code:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create@3.5.0-ultramodern.10 ultramodern \
|
|
204
|
+
migrate-strict-effect --version 3.5.0-ultramodern.10
|
|
205
|
+
pnpm api:check
|
|
206
|
+
pnpm contract:check
|
|
207
|
+
pnpm check
|
|
208
|
+
pnpm build
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
The command updates `.modernjs/ultramodern.json`, root `modernjs.packageSource`,
|
|
212
|
+
generated Modern package aliases, framework-owned toolchain pins, old direct
|
|
213
|
+
topology metadata, strict Effect pnpm overrides/trust policy, and the pnpm
|
|
214
|
+
lockfile. It does not invent compatibility shims or move business code behind
|
|
215
|
+
your back. If `pnpm api:check` still fails, migrate the source to
|
|
216
|
+
`shared/api.ts`, `api/index.ts`, and `src/api/*-client.ts` and delete
|
|
217
|
+
`api/effect`, `api/lambda`, `shared/effect`, and `src/effect` paths.
|
|
218
|
+
|
|
219
|
+
Generated strict Effect workspaces pin the compatible Effect cohort through
|
|
220
|
+
`pnpm-workspace.yaml` overrides: `effect@4.0.0-rc.112`,
|
|
221
|
+
`@effect/opentelemetry@4.0.0-rc.112`, and
|
|
222
|
+
`@effect/vitest@4.0.0-rc.112` (requiring `vitest >=4.1.0 <5`). The strict
|
|
223
|
+
24-hour release-age gate applies to the installed cohort; the current policy carries no Effect age exemption, and
|
|
224
|
+
the override-only `@effect/vitest` entry is not an installed approval target.
|
|
225
|
+
Separately, exact
|
|
226
|
+
`trustPolicyExclude` entries for `effect` and `@effect/opentelemetry` cover the
|
|
227
|
+
trusted-publisher to provenance transition. Trust exclusions are not
|
|
228
|
+
release-age approvals. Do not override the cohort in app packages; update the
|
|
229
|
+
framework cohort when the runtime moves.
|
|
230
|
+
|
|
231
|
+
Use `--ultramodern-package-source=install` for published cohort proof and pin a
|
|
232
|
+
specific release with `--ultramodern-package-version` when CI must prove an
|
|
233
|
+
exact framework version. Keep `--workspace` only for local monorepo testing
|
|
234
|
+
against unpublished packages. After install, run the generated
|
|
235
|
+
`scripts/validate-ultramodern-workspace.mts` contract check and fix ownership
|
|
236
|
+
conflicts in the owning JSON/config files instead of editing generated metadata
|
|
237
|
+
by hand.
|
|
238
|
+
|
|
239
|
+
## CodeSmith Adapter And Overlays
|
|
240
|
+
|
|
241
|
+
The CodeSmith adapter is exported from:
|
|
242
|
+
|
|
243
|
+
```ts
|
|
244
|
+
import ultramodernCodeSmith from '@modern-js/ultramodern-create/ultramodern-workspace/codesmith';
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Non-interactive usage passes config directly:
|
|
248
|
+
|
|
249
|
+
```ts
|
|
250
|
+
await ultramodernCodeSmith({
|
|
251
|
+
config: {
|
|
252
|
+
mode: 'workspace',
|
|
253
|
+
name: 'my-workspace',
|
|
254
|
+
targetDir: '/tmp/my-workspace',
|
|
255
|
+
modernVersion: '3.4.0',
|
|
256
|
+
packageSourceStrategy: 'install',
|
|
257
|
+
modernPackageVersion: '3.4.0',
|
|
258
|
+
},
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
await ultramodernCodeSmith({
|
|
262
|
+
config: {
|
|
263
|
+
mode: 'vertical',
|
|
264
|
+
name: 'new-vertical',
|
|
265
|
+
workspaceRoot: '/tmp/my-workspace',
|
|
266
|
+
dryRun: true,
|
|
267
|
+
logResult: true,
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
The adapter prompts only when a required name is missing and a CodeSmith prompt
|
|
273
|
+
function is available. It returns the same public generation result or dry-run
|
|
274
|
+
plan as the direct API.
|
|
275
|
+
|
|
276
|
+
Overlays are explicit CodeSmith generators that run after base workspace or
|
|
277
|
+
MicroVertical generation:
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create new-vertical --vertical \
|
|
281
|
+
--codesmith-overlay ./generators/vertical-overlay
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
```ts
|
|
285
|
+
addUltramodernVertical({
|
|
286
|
+
workspaceRoot: '/tmp/my-workspace',
|
|
287
|
+
name: 'new-vertical',
|
|
288
|
+
modernVersion: '3.4.0',
|
|
289
|
+
overlays: [
|
|
290
|
+
{
|
|
291
|
+
generator: './generators/vertical-overlay',
|
|
292
|
+
config: { owner: 'workspace' },
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
});
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Overlay config receives `workspaceRoot`, `packageScope`, `operation`,
|
|
299
|
+
`generatedApp`, `generatedApps`, `assignedPort`, `assignedPorts`,
|
|
300
|
+
`moduleFederationName`, `moduleFederationNames`, `apiPrefix`,
|
|
301
|
+
`apiPrefixes`, `packageSource`, and `generationResult`. Overlays extend
|
|
302
|
+
the generated output after base generation; they do not replace, inherit, or
|
|
303
|
+
shadow the base templates. Overlay failures stop the command with an
|
|
304
|
+
`UltraModern CodeSmith overlay failed` error and do not report base generation
|
|
305
|
+
as fully successful.
|
|
306
|
+
|
|
307
|
+
## Vertical Workspace Recipes
|
|
308
|
+
|
|
309
|
+
Use the workspace add flow from the UltraModern workspace root. It derives the
|
|
310
|
+
package path, package name, port, Module Federation name, topology entry, local
|
|
311
|
+
overlay, ownership entry, strict Effect HttpApi surface, and root `dev:*` script from the
|
|
312
|
+
requested vertical name.
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create catalog --vertical
|
|
316
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical=catalog
|
|
317
|
+
pnpm dlx @bleedingdev/modern-js-ultramodern-create --vertical-name catalog
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Use this decision table before adding a vertical:
|
|
321
|
+
|
|
322
|
+
| Need | Keep inside current vertical | Create a new vertical |
|
|
323
|
+
| --- | --- | --- |
|
|
324
|
+
| Route or widget changes with the same product owner, release train, and fallback behavior | Yes | No |
|
|
325
|
+
| Route subtree needs independent rollout, rollback, or incident ownership | No | `--vertical` |
|
|
326
|
+
| UI and Effect BFF must version, deploy, and roll back together | No | `--vertical` |
|
|
327
|
+
| Design tokens, primitives, generated clients, or domain-neutral utilities | Yes | Use an ordinary workspace package, not a vertical |
|
|
328
|
+
| Feature composites or workflow state shared across verticals | No | Revisit ownership; do not hide it in shared code |
|
|
329
|
+
|
|
330
|
+
## SuperApp Architecture Contracts
|
|
331
|
+
|
|
332
|
+
The generated shell owns route assembly and policy. Each vertical added with
|
|
333
|
+
`--vertical` owns its route subtree, Module Federation exposes, Effect BFF
|
|
334
|
+
contract, generated client, `localisedUrls`, locale JSON, CSS layer, and
|
|
335
|
+
Cloudflare Worker output. The shell consumes vertical UI through Module
|
|
336
|
+
Federation manifests and vertical APIs through generated Effect clients
|
|
337
|
+
exported by the vertical packages.
|
|
338
|
+
|
|
339
|
+
Route metadata is route-owned and colocated in
|
|
340
|
+
`src/routes/**/route.meta.ts`. The scaffold regenerates
|
|
341
|
+
`src/routes/ultramodern-route-metadata.ts` as a generated route manifest for
|
|
342
|
+
Modern.js config, i18n, public head, and public surface contracts; authors
|
|
343
|
+
should not hand-maintain it. Locale JSON is served from
|
|
344
|
+
`/locales/{{lng}}/{{ns}}.json`; Czech and English routes are generated from the
|
|
345
|
+
route owner, not from shell rewrites.
|
|
346
|
+
|
|
347
|
+
Routes default to `privateByDefault: true` and
|
|
348
|
+
`publicnessDefault: private-app-screen`. Public web artifacts are build/deploy
|
|
349
|
+
outputs generated by `scripts/generate-public-surface-assets.mjs` into
|
|
350
|
+
`dist/public` and `.output/public`, not source files under `config/public`.
|
|
351
|
+
Generated public files use only explicit `public && indexable` route metadata,
|
|
352
|
+
so private app screens publish only a disallowing `robots.txt` by default.
|
|
353
|
+
JSON-LD is not inferred from route titles, descriptions, localized paths, app
|
|
354
|
+
names, BFF APIs, or Module Federation metadata. To publish structured data,
|
|
355
|
+
author `jsonLd` explicitly in route metadata for a `public && indexable` route;
|
|
356
|
+
generated apps provide `src/routes/ultramodern-jsonld.ts` helpers for
|
|
357
|
+
`WebPage`, `WebApplication`, `SoftwareApplication`, `BreadcrumbList`,
|
|
358
|
+
`FAQPage`, and `Organization`, while raw JSON-LD remains possible for other
|
|
359
|
+
schema types.
|
|
360
|
+
|
|
361
|
+
Dynamic public routes can expand sitemap entries through route-owned,
|
|
362
|
+
Node-safe ESM providers, normally `route.sitemap.mjs` beside the route
|
|
363
|
+
metadata. The public-surface generator discovers those providers for dynamic
|
|
364
|
+
public routes and still honors explicit `routes.publicSurface.contentSources`
|
|
365
|
+
entries in the generated route manifest. Providers may export
|
|
366
|
+
`entries`, `entries()`, or a default entries/loader returning sitemap entries;
|
|
367
|
+
draft entries and `indexable: false` entries are omitted.
|
|
368
|
+
|
|
369
|
+
CSS federation is explicit:
|
|
370
|
+
|
|
371
|
+
- `packages/shared-design-tokens` exports `./tokens.css` and owns
|
|
372
|
+
`ultramodern-shared-tokens`.
|
|
373
|
+
- The shell owns shell base and overlay CSS only.
|
|
374
|
+
- Verticals own their vertical CSS layer and `[data-app-id="<vertical>"]`
|
|
375
|
+
root marker.
|
|
376
|
+
- Tailwind CSS v4 is configured per app through `@rsbuild/plugin-tailwindcss`.
|
|
377
|
+
- Duplicate base styles are forbidden; SSR first paint depends on shared token
|
|
378
|
+
CSS plus Modern/Rspack-emitted app CSS.
|
|
379
|
+
|
|
380
|
+
## Public URL Environment Variables
|
|
381
|
+
|
|
382
|
+
Generated apps must not bake absolute `http://localhost:<port>` URLs into asset
|
|
383
|
+
configuration. Public URL and asset prefix environment variables have distinct
|
|
384
|
+
roles, and stale aliases should not be carried forward when regenerating or
|
|
385
|
+
updating workspaces.
|
|
386
|
+
|
|
387
|
+
| Variable | Role | Feeds |
|
|
388
|
+
| --- | --- | --- |
|
|
389
|
+
| `MODERN_PUBLIC_SITE_URL` | Canonical site origin for public SEO output only | Canonical, hreflang, sitemap `<loc>`, robots `Sitemap:` |
|
|
390
|
+
| `MODERN_ASSET_PREFIX` | Preferred JS/CSS/static asset prefix | Modern/Rspack-emitted asset URLs |
|
|
391
|
+
| `ULTRAMODERN_ASSET_PREFIX` | UltraModern asset prefix fallback | Modern/Rspack-emitted asset URLs when `MODERN_ASSET_PREFIX` is unset |
|
|
392
|
+
| `ULTRAMODERN_PUBLIC_URL_<APP_ID>` | Per-app deployment/proof URL | Cloudflare proof inputs and Module Federation remote URLs |
|
|
393
|
+
|
|
394
|
+
Shell asset URLs use this precedence: `MODERN_ASSET_PREFIX` →
|
|
395
|
+
`ULTRAMODERN_ASSET_PREFIX` → origin-relative `/`. Module Federation remotes use
|
|
396
|
+
the same env precedence, then fall back to their per-app public origin:
|
|
397
|
+
configured public URL, inferred workers.dev URL, or local dev port.
|
|
398
|
+
`MODERN_PUBLIC_SITE_URL` is canonical/SEO-only and must not be used as an
|
|
399
|
+
asset-prefix fallback.
|
|
400
|
+
SEO output uses `MODERN_PUBLIC_SITE_URL`; if it is unset, generated local and
|
|
401
|
+
preview outputs remain non-public until deployment proof provides explicit
|
|
402
|
+
public URLs.
|
|
403
|
+
|
|
404
|
+
Without public URLs configured, shell asset paths are origin-relative (`/`).
|
|
405
|
+
Remote dev manifests publish their own local origin so host shells load
|
|
406
|
+
`remoteEntry.js` and exposed chunks from the remote dev server. Shell-only
|
|
407
|
+
workspaces can set `MODERN_PUBLIC_SITE_URL` for SEO output without changing
|
|
408
|
+
where assets load from.
|
|
409
|
+
|
|
410
|
+
## Cloudflare And Zephyr Proof
|
|
411
|
+
|
|
412
|
+
Each generated workspace app has:
|
|
413
|
+
|
|
414
|
+
- `cloudflare:build`, `cloudflare:deploy`, `cloudflare:preview`, and
|
|
415
|
+
`cloudflare:proof` scripts.
|
|
416
|
+
- Cloudflare Worker deploy config from Modern config plus
|
|
417
|
+
`.modernjs/ultramodern.json`.
|
|
418
|
+
- `zephyr:dependencies` for any consumed verticals.
|
|
419
|
+
- `zephyr-rspack-plugin` wired through the generated Modern.js Rspack bridge.
|
|
420
|
+
|
|
421
|
+
Deploy first, then pass each deployed app's generated public URL env key into
|
|
422
|
+
the proof step. The proof script reads the compact UltraModern config and checks the
|
|
423
|
+
Cloudflare Worker surface, including public-route sitemap/robots consistency,
|
|
424
|
+
preview noindex behavior, unknown-route status, asset headers, byte budgets,
|
|
425
|
+
and public sourcemap exposure. Shell-only workspaces only need the shell URL;
|
|
426
|
+
added verticals use the same `ULTRAMODERN_PUBLIC_URL_<APP_ID>` pattern with
|
|
427
|
+
hyphens converted to underscores and uppercased:
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
pnpm cloudflare:deploy
|
|
431
|
+
ULTRAMODERN_PUBLIC_URL_SHELL_SUPER_APP=https://shell-super-app.example.workers.dev \
|
|
432
|
+
ULTRAMODERN_PUBLIC_URL_TRANSPORTATION=https://transportation.example.workers.dev \
|
|
433
|
+
pnpm cloudflare:proof --require-public-urls
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Without public URLs and credentials, use local primitive gates and `pnpm build`
|
|
437
|
+
evidence only; do not claim live Cloudflare or Zephyr selection has been
|
|
438
|
+
proven.
|
|
439
|
+
|
|
440
|
+
## Troubleshooting
|
|
441
|
+
|
|
442
|
+
| Symptom | Current check | Owner |
|
|
443
|
+
| --- | --- | --- |
|
|
444
|
+
| Package cohort mismatch | Regenerate with one package source strategy, run `mise install`, then rerun `pnpm install` from the activated shell. | Generated workspace package source metadata |
|
|
445
|
+
| Install failure | Check the active Node/pnpm from `mise install`; rerun `pnpm install` after the shell sees the pinned versions. | Toolchain setup |
|
|
446
|
+
| Build failure | Run the matching primitive gate (`pnpm lint`, `pnpm typecheck`, `pnpm i18n:boundaries`, `pnpm contract:check`) before `pnpm build`; fix the owning failure first. | Owning package or generated contract |
|
|
447
|
+
| Missing public URL | Set the app public URL env key recorded in `.modernjs/ultramodern.json`, for example `ULTRAMODERN_PUBLIC_URL_SHELL_SUPER_APP`. | Deployment operator |
|
|
448
|
+
| Cloudflare credentials | Confirm Wrangler credentials before `pnpm cloudflare:deploy`; local checks do not prove live Worker access. | Deployment operator |
|
|
449
|
+
| Asset or CSS 404 | Rebuild with `pnpm build` or `pnpm cloudflare:deploy` and inspect emitted Modern/Rspack asset paths instead of hardcoding CSS URLs. | Framework/runtime asset pipeline |
|
|
450
|
+
| Federation manifest failure | Run the shell and vertical build scripts, then check each deployed `/mf-manifest.json` URL used by the shell. | Module Federation owner |
|
|
451
|
+
|
|
452
|
+
## Modern.js Documentation
|
|
453
|
+
|
|
454
|
+
- [English Documentation](https://modernjs.dev/en/)
|
|
455
|
+
- [中文文档](https://modernjs.dev)
|
|
456
|
+
|
|
457
|
+
## License
|
|
458
|
+
|
|
459
|
+
Modern.js is [MIT licensed](https://github.com/web-infra-dev/modern.js/blob/main/LICENSE).
|
package/bin/run.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
6
|
+
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = path.dirname(__filename);
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
|
|
11
|
+
const pkgInfo = require(path.join(__dirname, '../package.json'));
|
|
12
|
+
const srcPath = './src/index.ts';
|
|
13
|
+
const distPath = pkgInfo.main;
|
|
14
|
+
const project = path.join(__dirname, '../tsconfig.json');
|
|
15
|
+
|
|
16
|
+
let env = 'production';
|
|
17
|
+
if (fs.existsSync(project)) {
|
|
18
|
+
env = 'development';
|
|
19
|
+
}
|
|
20
|
+
if (process.env.CODESMITH_ENV) {
|
|
21
|
+
env = process.env.CODESMITH_ENV;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const entry = path.join(
|
|
25
|
+
__dirname,
|
|
26
|
+
`../${env === 'development' ? srcPath : distPath}`,
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
if (env === 'development') {
|
|
30
|
+
try {
|
|
31
|
+
// 从当前包的 node_modules 中解析 tsx/esm/api
|
|
32
|
+
// 使用 require.resolve 来找到 tsx 包的位置
|
|
33
|
+
const packageRoot = path.join(__dirname, '..');
|
|
34
|
+
let tsxApiPath = 'tsx/esm/api';
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
// 尝试解析 tsx 包的 package.json
|
|
38
|
+
const tsxPackageJson = require.resolve('tsx/package.json', {
|
|
39
|
+
paths: [packageRoot],
|
|
40
|
+
});
|
|
41
|
+
const tsxPackageDir = path.dirname(tsxPackageJson);
|
|
42
|
+
// 根据 tsx 的 exports 配置,esm/api 指向 dist/esm/api/index.mjs
|
|
43
|
+
const tsxApiFile = path.join(
|
|
44
|
+
tsxPackageDir,
|
|
45
|
+
'dist',
|
|
46
|
+
'esm',
|
|
47
|
+
'api',
|
|
48
|
+
'index.mjs',
|
|
49
|
+
);
|
|
50
|
+
if (fs.existsSync(tsxApiFile)) {
|
|
51
|
+
tsxApiPath = pathToFileURL(tsxApiFile).href;
|
|
52
|
+
}
|
|
53
|
+
} catch {
|
|
54
|
+
// 如果解析失败,使用默认的模块名(Node.js 会从工作区的 node_modules 中查找)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const { register } = await import(tsxApiPath);
|
|
58
|
+
register({
|
|
59
|
+
tsconfig: project,
|
|
60
|
+
});
|
|
61
|
+
await import(pathToFileURL(entry).href);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
console.error('Error: Cannot load TypeScript file in development mode.');
|
|
64
|
+
console.error('Please install tsx: pnpm add -D tsx');
|
|
65
|
+
console.error('Or build the project: pnpm build');
|
|
66
|
+
console.error(error);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
import(pathToFileURL(entry).href).catch(e => {
|
|
71
|
+
console.error(e);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
applyAgentFiles: ()=>applyAgentFiles
|
|
41
|
+
});
|
|
42
|
+
const external_node_fs_namespaceObject = require("node:fs");
|
|
43
|
+
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
44
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
45
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
46
|
+
const CLAUDE_IMPORT = '@AGENTS.md';
|
|
47
|
+
const markers = (name)=>({
|
|
48
|
+
begin: `<!-- BEGIN:${name} -->`,
|
|
49
|
+
end: `<!-- END:${name} -->`
|
|
50
|
+
});
|
|
51
|
+
function applyAgentsMd(targetDir, block, markerName) {
|
|
52
|
+
const { begin, end } = markers(markerName);
|
|
53
|
+
const file = external_node_path_default().join(targetDir, 'AGENTS.md');
|
|
54
|
+
if (!external_node_fs_default().existsSync(file)) {
|
|
55
|
+
external_node_fs_default().writeFileSync(file, `${block}\n`, 'utf-8');
|
|
56
|
+
return 'created';
|
|
57
|
+
}
|
|
58
|
+
const content = external_node_fs_default().readFileSync(file, 'utf-8');
|
|
59
|
+
const from = content.indexOf(begin);
|
|
60
|
+
const to = content.indexOf(end);
|
|
61
|
+
if (-1 !== from && -1 !== to && to > from) {
|
|
62
|
+
const next = content.slice(0, from) + block + content.slice(to + end.length);
|
|
63
|
+
if (next === content) return 'unchanged';
|
|
64
|
+
external_node_fs_default().writeFileSync(file, next, 'utf-8');
|
|
65
|
+
return 'updated';
|
|
66
|
+
}
|
|
67
|
+
const rest = content.replace(/^\s*/, '');
|
|
68
|
+
external_node_fs_default().writeFileSync(file, rest ? `${block}\n\n${rest}` : `${block}\n`, 'utf-8');
|
|
69
|
+
return 'added';
|
|
70
|
+
}
|
|
71
|
+
function applyClaudeMd(targetDir) {
|
|
72
|
+
const file = external_node_path_default().join(targetDir, 'CLAUDE.md');
|
|
73
|
+
if (!external_node_fs_default().existsSync(file)) {
|
|
74
|
+
external_node_fs_default().writeFileSync(file, `${CLAUDE_IMPORT}\n`, 'utf-8');
|
|
75
|
+
return 'created';
|
|
76
|
+
}
|
|
77
|
+
const content = external_node_fs_default().readFileSync(file, 'utf-8');
|
|
78
|
+
if (content.split('\n').some((line)=>line.trim() === CLAUDE_IMPORT)) return 'unchanged';
|
|
79
|
+
external_node_fs_default().writeFileSync(file, `${CLAUDE_IMPORT}\n\n${content.replace(/^\s*/, '')}`, 'utf-8');
|
|
80
|
+
return 'linked';
|
|
81
|
+
}
|
|
82
|
+
function applyAgentFiles(options) {
|
|
83
|
+
const { targetDir, block, markerName } = options;
|
|
84
|
+
if (!external_node_fs_default().existsSync(targetDir)) throw new Error(`target directory does not exist: ${targetDir}`);
|
|
85
|
+
return {
|
|
86
|
+
agents: applyAgentsMd(targetDir, block, markerName),
|
|
87
|
+
claude: applyClaudeMd(targetDir)
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
exports.applyAgentFiles = __webpack_exports__.applyAgentFiles;
|
|
91
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
92
|
+
"applyAgentFiles"
|
|
93
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
94
|
+
Object.defineProperty(exports, '__esModule', {
|
|
95
|
+
value: true
|
|
96
|
+
});
|