@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
|
@@ -0,0 +1,397 @@
|
|
|
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
|
+
assertCompilerArchitecture: ()=>assertCompilerArchitecture
|
|
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_module_namespaceObject = require("node:module");
|
|
45
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
46
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
47
|
+
const external_assertions_cjs_namespaceObject = require("./assertions.cjs");
|
|
48
|
+
function assertCompilerArchitecture(root, workspaceValidationContract) {
|
|
49
|
+
const fullStackVerticals = workspaceValidationContract.apps.filter((app)=>'shell' !== app.kind);
|
|
50
|
+
const tailwindEnabled = workspaceValidationContract.tailwindEnabled;
|
|
51
|
+
const compactConfigPath = 'topology/reference-topology.json';
|
|
52
|
+
const readJson = (relativePath)=>JSON.parse(external_node_fs_default().readFileSync(external_node_path_default().join(root, relativePath), 'utf-8'));
|
|
53
|
+
const workspaceRequire = (0, external_node_module_namespaceObject.createRequire)(external_node_path_default().join(root, 'package.json'));
|
|
54
|
+
let typescript;
|
|
55
|
+
let typescriptApi;
|
|
56
|
+
try {
|
|
57
|
+
typescript = workspaceRequire("@typescript/native/unstable/ast");
|
|
58
|
+
typescriptApi = workspaceRequire("@typescript/native/unstable/sync");
|
|
59
|
+
} catch (error) {
|
|
60
|
+
if ('MODULE_NOT_FOUND' !== error.code) throw error;
|
|
61
|
+
}
|
|
62
|
+
let compilerSnapshot;
|
|
63
|
+
let compiler;
|
|
64
|
+
try {
|
|
65
|
+
const sourceExtensions = new Set([
|
|
66
|
+
'.cjs',
|
|
67
|
+
'.cts',
|
|
68
|
+
'.js',
|
|
69
|
+
'.jsx',
|
|
70
|
+
'.mjs',
|
|
71
|
+
'.mts',
|
|
72
|
+
'.ts',
|
|
73
|
+
'.tsx'
|
|
74
|
+
]);
|
|
75
|
+
const collectCompilerInputs = (relativeDirectory)=>{
|
|
76
|
+
const absoluteDirectory = external_node_path_default().join(root, relativeDirectory);
|
|
77
|
+
if (!external_node_fs_default().existsSync(absoluteDirectory)) return [];
|
|
78
|
+
const files = [];
|
|
79
|
+
const queue = [
|
|
80
|
+
absoluteDirectory
|
|
81
|
+
];
|
|
82
|
+
while(queue.length > 0){
|
|
83
|
+
const current = queue.shift();
|
|
84
|
+
for (const entry of external_node_fs_default().readdirSync(current, {
|
|
85
|
+
withFileTypes: true
|
|
86
|
+
})){
|
|
87
|
+
const absoluteEntry = external_node_path_default().join(current, entry.name);
|
|
88
|
+
if (entry.isDirectory()) queue.push(absoluteEntry);
|
|
89
|
+
else if (sourceExtensions.has(external_node_path_default().extname(entry.name))) files.push(absoluteEntry);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return files.toSorted();
|
|
93
|
+
};
|
|
94
|
+
const initializeCompilerSnapshot = (absolutePaths)=>{
|
|
95
|
+
if (void 0 === typescript || void 0 === typescriptApi) return;
|
|
96
|
+
compiler = new typescriptApi.API({
|
|
97
|
+
cwd: root
|
|
98
|
+
});
|
|
99
|
+
compilerSnapshot = compiler.updateSnapshot({
|
|
100
|
+
openFiles: [
|
|
101
|
+
...absolutePaths
|
|
102
|
+
]
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
const parseCompilerInput = (absolutePath)=>{
|
|
106
|
+
const project = compilerSnapshot?.getDefaultProjectForFile(absolutePath);
|
|
107
|
+
const sourceFile = project?.program.getSourceFile(absolutePath);
|
|
108
|
+
(0, external_assertions_cjs_namespaceObject.assert)(void 0 !== sourceFile, `Native TypeScript compiler could not parse ${external_node_path_default().relative(root, absolutePath)}`);
|
|
109
|
+
return sourceFile;
|
|
110
|
+
};
|
|
111
|
+
const nodeName = (node)=>{
|
|
112
|
+
if (!node) return;
|
|
113
|
+
if (typescript.isIdentifier(node) || typescript.isPrivateIdentifier(node) || typescript.isStringLiteralLikeNode(node) || typescript.isNumericLiteral(node)) return node.text;
|
|
114
|
+
};
|
|
115
|
+
const propertyAccessPath = (node)=>{
|
|
116
|
+
if (typescript.isIdentifier(node)) return [
|
|
117
|
+
node.text
|
|
118
|
+
];
|
|
119
|
+
if (typescript.isPropertyAccessExpression(node)) {
|
|
120
|
+
const left = propertyAccessPath(node.expression);
|
|
121
|
+
return void 0 === left ? void 0 : [
|
|
122
|
+
...left,
|
|
123
|
+
node.name.text
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
if (typescript.isElementAccessExpression(node) && typescript.isStringLiteralLikeNode(node.argumentExpression)) {
|
|
127
|
+
const left = propertyAccessPath(node.expression);
|
|
128
|
+
return void 0 === left ? void 0 : [
|
|
129
|
+
...left,
|
|
130
|
+
node.argumentExpression.text
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
function compilerFailure(sourceFile, node, contract, diagnostic, fixArea) {
|
|
135
|
+
const position = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
|
|
136
|
+
const relativePath = external_node_path_default().relative(root, sourceFile.fileName).split(external_node_path_default().sep).join('/');
|
|
137
|
+
throw new Error((0, external_assertions_cjs_namespaceObject.selfCheckFailure)(contract, `${diagnostic} Compiler evidence: ${relativePath}:${position.line + 1}:${position.character + 1}`, fixArea));
|
|
138
|
+
}
|
|
139
|
+
const runtimeModuleReferences = (sourceFile)=>{
|
|
140
|
+
const references = [];
|
|
141
|
+
const record = (node, specifier, kind, typeOnly = false)=>{
|
|
142
|
+
if (!typeOnly) references.push({
|
|
143
|
+
kind,
|
|
144
|
+
node,
|
|
145
|
+
specifier
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
const visit = (node)=>{
|
|
149
|
+
if (typescript.isImportDeclaration(node) && typescript.isStringLiteralLikeNode(node.moduleSpecifier)) {
|
|
150
|
+
const importClause = node.importClause;
|
|
151
|
+
const namedBindings = importClause?.namedBindings;
|
|
152
|
+
const namedBindingsAreTypeOnly = void 0 !== namedBindings && typescript.isNamedImports(namedBindings) && namedBindings.elements.length > 0 && namedBindings.elements.every((element)=>element.isTypeOnly);
|
|
153
|
+
record(node, node.moduleSpecifier.text, void 0 === importClause ? 'side-effect-import' : 'static-import', importClause?.phaseModifier === typescript.SyntaxKind.TypeKeyword || importClause?.name === void 0 && namedBindingsAreTypeOnly);
|
|
154
|
+
} else if (typescript.isExportDeclaration(node) && void 0 !== node.moduleSpecifier && typescript.isStringLiteralLikeNode(node.moduleSpecifier)) record(node, node.moduleSpecifier.text, 'static-import', node.isTypeOnly);
|
|
155
|
+
else if (typescript.isCallExpression(node) && node.arguments.length > 0 && typescript.isStringLiteralLikeNode(node.arguments[0])) {
|
|
156
|
+
if (node.expression.kind === typescript.SyntaxKind.ImportKeyword) record(node, node.arguments[0].text, 'dynamic-import');
|
|
157
|
+
else if (typescript.isIdentifier(node.expression) && 'require' === node.expression.text) record(node, node.arguments[0].text, 'require');
|
|
158
|
+
}
|
|
159
|
+
node.forEachChild(visit);
|
|
160
|
+
};
|
|
161
|
+
visit(sourceFile);
|
|
162
|
+
return references;
|
|
163
|
+
};
|
|
164
|
+
const importDiagnosticId = (prefix, kind)=>{
|
|
165
|
+
switch(kind){
|
|
166
|
+
case 'side-effect-import':
|
|
167
|
+
return `${prefix}-side-effect-import`;
|
|
168
|
+
case 'dynamic-import':
|
|
169
|
+
return `${prefix}-dynamic-import`;
|
|
170
|
+
case 'require':
|
|
171
|
+
return `${prefix}-require`;
|
|
172
|
+
default:
|
|
173
|
+
return 'vertical-directory' === prefix ? 'vertical-directory-deep-import' : 'workspace-package-source-import';
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const isWorkspaceSourceSpecifier = (specifier)=>{
|
|
177
|
+
const segments = specifier.split('/');
|
|
178
|
+
return segments.length > 3 && segments[0].startsWith('@') && 'src' === segments[2];
|
|
179
|
+
};
|
|
180
|
+
const resolvesInsideVerticalDirectory = (sourceFile, specifier)=>{
|
|
181
|
+
if (!specifier.startsWith('.')) return false;
|
|
182
|
+
const specifierSegments = specifier.replaceAll('\\', '/').split('/');
|
|
183
|
+
if (specifierSegments.some((segment, index)=>'verticals' === segment && void 0 !== specifierSegments[index + 1])) return true;
|
|
184
|
+
const absoluteTarget = external_node_path_default().resolve(external_node_path_default().dirname(sourceFile.fileName), specifier);
|
|
185
|
+
const verticalRoot = external_node_path_default().join(root, 'verticals') + external_node_path_default().sep;
|
|
186
|
+
if (!absoluteTarget.startsWith(verticalRoot)) return false;
|
|
187
|
+
const relativeSegments = external_node_path_default().relative(verticalRoot, absoluteTarget).split(external_node_path_default().sep);
|
|
188
|
+
return relativeSegments.length > 1;
|
|
189
|
+
};
|
|
190
|
+
const jsxTagName = (tagName)=>typescript.isIdentifier(tagName) ? tagName.text : void 0;
|
|
191
|
+
const jsxAttribute = (attributes, name)=>attributes.properties.find((property)=>typescript.isJsxAttribute(property) && nodeName(property.name) === name);
|
|
192
|
+
const isBooleanLiteral = (node, value)=>node?.kind === (value ? typescript.SyntaxKind.TrueKeyword : typescript.SyntaxKind.FalseKeyword);
|
|
193
|
+
const isCallNamed = (node, names)=>{
|
|
194
|
+
if (void 0 === node || !typescript.isCallExpression(node)) return false;
|
|
195
|
+
const accessPath = propertyAccessPath(node.expression);
|
|
196
|
+
return void 0 !== accessPath && names.has(accessPath.at(-1));
|
|
197
|
+
};
|
|
198
|
+
const objectLiteralProperty = (objectLiteral, name)=>objectLiteral.properties.find((property)=>typescript.isPropertyAssignment(property) && nodeName(property.name) === name);
|
|
199
|
+
const moduleFederationConfigArgument = (sourceFile)=>{
|
|
200
|
+
let argument;
|
|
201
|
+
const visit = (node)=>{
|
|
202
|
+
if (void 0 !== argument) return;
|
|
203
|
+
if (typescript.isCallExpression(node) && typescript.isIdentifier(node.expression) && 'createModuleFederationConfig' === node.expression.text && 1 === node.arguments.length && typescript.isObjectLiteralExpression(node.arguments[0])) {
|
|
204
|
+
argument = node.arguments[0];
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
node.forEachChild(visit);
|
|
208
|
+
};
|
|
209
|
+
visit(sourceFile);
|
|
210
|
+
return argument;
|
|
211
|
+
};
|
|
212
|
+
const appDeclaresReactRouter = (appPath)=>{
|
|
213
|
+
const relativePath = `${appPath}/package.json`;
|
|
214
|
+
if (!external_node_fs_default().existsSync(external_node_path_default().join(root, relativePath))) return false;
|
|
215
|
+
const packageJson = readJson(relativePath);
|
|
216
|
+
return [
|
|
217
|
+
'react-router',
|
|
218
|
+
'react-router-dom'
|
|
219
|
+
].some((dependency)=>[
|
|
220
|
+
'dependencies',
|
|
221
|
+
'devDependencies'
|
|
222
|
+
].some((field)=>Object.hasOwn(packageJson[field] ?? {}, dependency)));
|
|
223
|
+
};
|
|
224
|
+
const bridgeRouterFixArea = 'declare bridge.enableBridgeRouter: false, or true only in an app that declares react-router or react-router-dom';
|
|
225
|
+
const assertBridgeRouterCapability = (sourceFile, appPath)=>{
|
|
226
|
+
const contract = 'module federation bridge capability';
|
|
227
|
+
const configArgument = moduleFederationConfigArgument(sourceFile);
|
|
228
|
+
if (void 0 === configArgument) compilerFailure(sourceFile, sourceFile, contract, 'Generated Module Federation must pass a literal config object to createModuleFederationConfig.', bridgeRouterFixArea);
|
|
229
|
+
const bridge = objectLiteralProperty(configArgument, 'bridge');
|
|
230
|
+
const declaration = void 0 !== bridge && typescript.isObjectLiteralExpression(bridge.initializer) ? objectLiteralProperty(bridge.initializer, 'enableBridgeRouter') : void 0;
|
|
231
|
+
if (void 0 === declaration) compilerFailure(sourceFile, bridge ?? configArgument, contract, 'Generated Module Federation must declare bridge.enableBridgeRouter in its config object.', bridgeRouterFixArea);
|
|
232
|
+
if (isBooleanLiteral(declaration.initializer, false)) return;
|
|
233
|
+
if (!isBooleanLiteral(declaration.initializer, true)) compilerFailure(sourceFile, declaration, contract, 'Generated Module Federation must declare bridge.enableBridgeRouter as a boolean literal.', bridgeRouterFixArea);
|
|
234
|
+
if (!appDeclaresReactRouter(appPath)) compilerFailure(sourceFile, declaration, contract, `Generated Module Federation enables the React bridge router while ${appPath}/package.json declares neither react-router nor react-router-dom.`, bridgeRouterFixArea);
|
|
235
|
+
};
|
|
236
|
+
const checkArchitecture = ()=>{
|
|
237
|
+
const structuralPolicy = workspaceValidationContract.structuralShellPolicy;
|
|
238
|
+
(0, external_assertions_cjs_namespaceObject.assert)(structuralPolicy?.schemaVersion === 1, 'Structural thin-shell compiler policy must use schemaVersion 1');
|
|
239
|
+
const compositionPolicy = workspaceValidationContract.federatedCompositionPolicy;
|
|
240
|
+
(0, external_assertions_cjs_namespaceObject.assert)(compositionPolicy?.schemaVersion === 1, 'Federated composition compiler policy must use schemaVersion 1');
|
|
241
|
+
const compilerInputs = new Set([
|
|
242
|
+
...(structuralPolicy.shells ?? []).flatMap((shell)=>collectCompilerInputs(shell.srcDir)),
|
|
243
|
+
...(compositionPolicy.hosts ?? []).flatMap((host)=>collectCompilerInputs(host.srcDir)),
|
|
244
|
+
...workspaceValidationContract.apps.flatMap((app)=>collectCompilerInputs(app.path))
|
|
245
|
+
]);
|
|
246
|
+
initializeCompilerSnapshot(compilerInputs);
|
|
247
|
+
for (const shell of structuralPolicy.shells ?? []){
|
|
248
|
+
for (const forbidden of structuralPolicy.forbiddenPathClasses ?? [])if ('shell-super-app' !== shell.id || 'backend-federation.config.ts' === forbidden.path) (0, external_assertions_cjs_namespaceObject.assert)(!external_node_fs_default().existsSync(external_node_path_default().join(root, shell.packageDir, forbidden.path)), (0, external_assertions_cjs_namespaceObject.selfCheckFailure)(`structural thin-shell ${forbidden.id}`, `${forbidden.diagnostic} Forbidden artifact ${shell.packageDir}/${forbidden.path} exists`, `remove forbidden thin-shell artifact ${shell.packageDir}/${forbidden.path}`));
|
|
249
|
+
if (void 0 !== compilerSnapshot) for (const absolutePath of collectCompilerInputs(shell.srcDir)){
|
|
250
|
+
const sourceFile = parseCompilerInput(absolutePath);
|
|
251
|
+
for (const reference of runtimeModuleReferences(sourceFile)){
|
|
252
|
+
if (resolvesInsideVerticalDirectory(sourceFile, reference.specifier)) {
|
|
253
|
+
const id = importDiagnosticId('vertical-directory', reference.kind);
|
|
254
|
+
compilerFailure(sourceFile, reference.node, `structural thin-shell ${id}`, 'A thin Shell must consume only published vertical surfaces, never a vertical implementation directory.', 'consume only published surfaces from the thin shell');
|
|
255
|
+
}
|
|
256
|
+
if (isWorkspaceSourceSpecifier(reference.specifier)) {
|
|
257
|
+
const id = importDiagnosticId('workspace-package', reference.kind);
|
|
258
|
+
compilerFailure(sourceFile, reference.node, `structural thin-shell ${id}`, 'A thin Shell must consume only package exports, never another package raw src directory.', 'consume only published surfaces from the thin shell');
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (void 0 === compilerSnapshot) {
|
|
264
|
+
const packageJson = readJson('package.json');
|
|
265
|
+
(0, external_assertions_cjs_namespaceObject.assert)('string' == typeof packageJson.devDependencies?.["@typescript/native"], 'Generated workspaces must declare the native TypeScript compiler used by architecture evidence');
|
|
266
|
+
(0, external_assertions_cjs_namespaceObject.assert)(packageJson.scripts?.check?.split('&&').some((stage)=>'pnpm typecheck' === stage.trim()), 'Generated workspace check must execute compiler evidence before contract validation');
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
for (const host of compositionPolicy.hosts ?? [])for (const absolutePath of collectCompilerInputs(host.srcDir)){
|
|
270
|
+
const sourceFile = parseCompilerInput(absolutePath);
|
|
271
|
+
if (sourceFile.isDeclarationFile) continue;
|
|
272
|
+
const remoteImplementation = (specifier)=>(host.remotes ?? []).find((remote)=>{
|
|
273
|
+
if (specifier === remote.packageName) return true;
|
|
274
|
+
if (specifier.startsWith(`${remote.packageName}/`)) {
|
|
275
|
+
const subpath = specifier.slice(remote.packageName.length + 1);
|
|
276
|
+
return 'api' !== subpath && !subpath.startsWith('api/');
|
|
277
|
+
}
|
|
278
|
+
if (!specifier.startsWith('.')) return false;
|
|
279
|
+
const absoluteTarget = external_node_path_default().resolve(external_node_path_default().dirname(sourceFile.fileName), specifier);
|
|
280
|
+
const remoteDirectory = external_node_path_default().join(root, remote.directory);
|
|
281
|
+
return absoluteTarget === remoteDirectory || absoluteTarget.startsWith(remoteDirectory + external_node_path_default().sep);
|
|
282
|
+
});
|
|
283
|
+
for (const reference of runtimeModuleReferences(sourceFile)){
|
|
284
|
+
const remote = remoteImplementation(reference.specifier);
|
|
285
|
+
if (void 0 !== remote) compilerFailure(sourceFile, reference.node, 'federated composition remote-runtime-package-import', `Host ${host.id} imports the ${remote.id} render implementation through ${reference.specifier}.`, 'use import type for contracts or compose the implementation through Module Federation');
|
|
286
|
+
}
|
|
287
|
+
const hydrationStateSetters = new Set();
|
|
288
|
+
const visit = (node)=>{
|
|
289
|
+
if (typescript.isVariableDeclaration(node) && typescript.isArrayBindingPattern(node.name) && node.name.elements.length >= 2 && isCallNamed(node.initializer, new Set([
|
|
290
|
+
'useState'
|
|
291
|
+
])) && isBooleanLiteral(node.initializer.arguments[0], false)) {
|
|
292
|
+
const stateName = nodeName(node.name.elements[0].name)?.toLowerCase();
|
|
293
|
+
const setterName = nodeName(node.name.elements[1].name);
|
|
294
|
+
if (('hydrated' === stateName || 'ishydrated' === stateName) && void 0 !== setterName) hydrationStateSetters.add(setterName);
|
|
295
|
+
}
|
|
296
|
+
if ((typescript.isVariableDeclaration(node) || typescript.isFunctionDeclaration(node)) && 'createHydratedRemote' === nodeName(node.name)) compilerFailure(sourceFile, node, 'federated composition hydrated-remote-factory', 'Federated hosts must use the distributed SSR boundary directly; hydration-time remote factories are forbidden.', 'compose remote rendering through framework Module Federation primitives');
|
|
297
|
+
if ((typescript.isPropertyAssignment(node) || typescript.isJsxAttribute(node)) && ('loading' === nodeName(node.name) || 'fallback' === nodeName(node.name))) {
|
|
298
|
+
const value = typescript.isPropertyAssignment(node) ? node.initializer : void 0 !== node.initializer && typescript.isJsxExpression(node.initializer) ? node.initializer.expression : void 0;
|
|
299
|
+
if (void 0 !== value && (typescript.isJsxElement(value) || typescript.isJsxSelfClosingElement(value))) {
|
|
300
|
+
const tagName = typescript.isJsxElement(value) ? jsxTagName(value.openingElement.tagName) : jsxTagName(value.tagName);
|
|
301
|
+
if ('ServerComponent' === tagName || 'LocalComponent' === tagName) compilerFailure(sourceFile, node, 'federated composition local-loading-copy', 'Federated hosts must not render a local component copy while loading a remote implementation.', 'use an explicit unavailable-state component instead of a local implementation copy');
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
node.forEachChild(visit);
|
|
305
|
+
};
|
|
306
|
+
visit(sourceFile);
|
|
307
|
+
if (hydrationStateSetters.size > 0) {
|
|
308
|
+
const findHydrationSetter = (node)=>{
|
|
309
|
+
if (typescript.isCallExpression(node) && typescript.isIdentifier(node.expression) && hydrationStateSetters.has(node.expression.text) && isBooleanLiteral(node.arguments[0], true)) compilerFailure(sourceFile, node, 'federated composition hydration-flag', 'Federated hosts must hydrate the server DOM directly; hydrated-state component switching is forbidden.', 'compose remote rendering through framework Module Federation primitives');
|
|
310
|
+
node.forEachChild(findHydrationSetter);
|
|
311
|
+
};
|
|
312
|
+
findHydrationSetter(sourceFile);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
const shellRouteDirectories = (structuralPolicy.shells ?? []).map((shell)=>`${shell.packageDir}/src/routes`);
|
|
316
|
+
const appPaths = workspaceValidationContract.apps.map((app)=>app.path);
|
|
317
|
+
const configFiles = appPaths.flatMap((appPath)=>[
|
|
318
|
+
`${appPath}/modern.config.ts`,
|
|
319
|
+
`${appPath}/module-federation.config.ts`
|
|
320
|
+
]);
|
|
321
|
+
const moduleFederationConfigAppPaths = new Map(appPaths.map((appPath)=>[
|
|
322
|
+
external_node_path_default().join(root, `${appPath}/module-federation.config.ts`),
|
|
323
|
+
appPath
|
|
324
|
+
]).filter((entry)=>external_node_fs_default().existsSync(entry[0])));
|
|
325
|
+
const checkedFiles = new Set([
|
|
326
|
+
...shellRouteDirectories.flatMap(collectCompilerInputs),
|
|
327
|
+
...configFiles.map((relativePath)=>external_node_path_default().join(root, relativePath)).filter((absolutePath)=>external_node_fs_default().existsSync(absolutePath))
|
|
328
|
+
]);
|
|
329
|
+
for (const absolutePath of checkedFiles){
|
|
330
|
+
const sourceFile = parseCompilerInput(absolutePath);
|
|
331
|
+
const isShellRoute = shellRouteDirectories.some((relativeDirectory)=>{
|
|
332
|
+
const absoluteDirectory = external_node_path_default().join(root, relativeDirectory);
|
|
333
|
+
return absolutePath.startsWith(absoluteDirectory + external_node_path_default().sep);
|
|
334
|
+
});
|
|
335
|
+
const moduleFederationAppPath = moduleFederationConfigAppPaths.get(absolutePath);
|
|
336
|
+
const tailwindFactories = new Set();
|
|
337
|
+
const presetFactories = new Set();
|
|
338
|
+
for (const statement of sourceFile.statements){
|
|
339
|
+
if (!typescript.isImportDeclaration(statement) || !typescript.isStringLiteralLikeNode(statement.moduleSpecifier) || statement.importClause?.phaseModifier === typescript.SyntaxKind.TypeKeyword) continue;
|
|
340
|
+
const bindings = statement.importClause?.namedBindings;
|
|
341
|
+
if (void 0 !== bindings && typescript.isNamedImports(bindings)) for (const binding of bindings.elements){
|
|
342
|
+
if (binding.isTypeOnly) continue;
|
|
343
|
+
const imported = (binding.propertyName ?? binding.name).text;
|
|
344
|
+
if ('@rsbuild/plugin-tailwindcss' === statement.moduleSpecifier.text && 'pluginTailwindcss' === imported) tailwindFactories.add(binding.name.text);
|
|
345
|
+
if ('@modern-js/ultramodern-app-tools' === statement.moduleSpecifier.text && 'presetUltramodern' === imported) presetFactories.add(binding.name.text);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
const modernConfigApp = workspaceValidationContract.apps.find((app)=>absolutePath === external_node_path_default().join(root, app.path, 'modern.config.ts'));
|
|
349
|
+
let insideDefaultExport = false;
|
|
350
|
+
const visit = (node)=>{
|
|
351
|
+
const previousDefaultExport = insideDefaultExport;
|
|
352
|
+
if (typescript.isExportAssignment(node) && !node.isExportEquals) insideDefaultExport = true;
|
|
353
|
+
if (insideDefaultExport && void 0 !== modernConfigApp && isCallNamed(node, presetFactories) && void 0 !== node.arguments[0] && typescript.isObjectLiteralExpression(node.arguments[0])) {
|
|
354
|
+
const builderPlugins = objectLiteralProperty(node.arguments[0], 'builderPlugins');
|
|
355
|
+
const usesTailwind = void 0 !== builderPlugins && typescript.isArrayLiteralExpression(builderPlugins.initializer) && builderPlugins.initializer.elements.some((plugin)=>isCallNamed(plugin, tailwindFactories));
|
|
356
|
+
const emitsUi = 'shell' === modernConfigApp.kind || fullStackVerticals.some((vertical)=>vertical.id === modernConfigApp.id && vertical.emitsUi);
|
|
357
|
+
if (usesTailwind !== (tailwindEnabled && emitsUi)) compilerFailure(sourceFile, builderPlugins ?? node, `${compactConfigPath} policy.features.tailwind`, `Tailwind feature flag is ${tailwindEnabled}, but ${modernConfigApp.id} exported config ${usesTailwind ? 'enables' : 'does not enable'} the Tailwind builder plugin.`, 'keep the Tailwind feature flag and active app builder configuration consistent');
|
|
358
|
+
}
|
|
359
|
+
if (typescript.isImportDeclaration(node) && typescript.isStringLiteralLikeNode(node.moduleSpecifier) && 'node:child_process' === node.moduleSpecifier.text) compilerFailure(sourceFile, node, 'framework config API node-child-process-access', 'Generated config must not invoke node:child_process directly.', 'use the framework config environment API');
|
|
360
|
+
const accessPath = propertyAccessPath(node);
|
|
361
|
+
if ((0, external_assertions_cjs_namespaceObject.sameJson)(accessPath, [
|
|
362
|
+
'process',
|
|
363
|
+
'env'
|
|
364
|
+
])) compilerFailure(sourceFile, node, 'framework config API direct-process-env-access', 'Generated config must use the framework config environment API instead of process.env.', 'use getBuildConfigEnvironment');
|
|
365
|
+
if (typescript.isIdentifier(node) && 'ULTRAMODERN_ZEPHYR' === node.text) compilerFailure(sourceFile, node, 'zephyr gating ultramodern-zephyr-environment-gate', 'Generated Zephyr integration must not be gated through ULTRAMODERN_ZEPHYR.', 'use Zephyr native deploy-token behavior');
|
|
366
|
+
if (typescript.isPropertyAssignment(node)) {
|
|
367
|
+
const property = nodeName(node.name);
|
|
368
|
+
if ('enableBridgeRouter' === property && void 0 === moduleFederationAppPath || 'disableDynamicRemoteTypeHints' === property && isBooleanLiteral(node.initializer, true) || 'treeShakingSharedExcludePlugins' === property) compilerFailure(sourceFile, node, 'module federation bridge capability', `Generated Module Federation carries forbidden option ${property}.`, 'use framework-owned Module Federation defaults');
|
|
369
|
+
}
|
|
370
|
+
if (isShellRoute) {
|
|
371
|
+
if (typescript.isJsxOpeningElement(node) && 'a' === jsxTagName(node.tagName) && void 0 !== jsxAttribute(node.attributes, 'onClick')) compilerFailure(sourceFile, node, 'shell routing synthetic-anchor-click-interception', 'Shell routing must not intercept anchor clicks synthetically.', 'use the router Link primitive');
|
|
372
|
+
if (isCallNamed(node, new Set([
|
|
373
|
+
'hydrateRoot',
|
|
374
|
+
'loadRemote',
|
|
375
|
+
'loadShare'
|
|
376
|
+
]))) compilerFailure(sourceFile, node, 'module federation native loading', 'Shell routing must use framework Module Federation loading primitives.', 'remove manual hydration or remote-loading wrappers');
|
|
377
|
+
if (typescript.isBinaryExpression(node) && node.operatorToken.kind === typescript.SyntaxKind.EqualsToken && propertyAccessPath(node.left)?.slice(0, 2).join('.') === 'window.location' || typescript.isCallExpression(node) && propertyAccessPath(node.expression)?.slice(0, 2).join('.') === 'window.location') compilerFailure(sourceFile, node, 'shell routing window-location-navigation', 'Shell routing must use router navigation instead of window.location.', 'use the router navigation primitive');
|
|
378
|
+
}
|
|
379
|
+
node.forEachChild(visit);
|
|
380
|
+
insideDefaultExport = previousDefaultExport;
|
|
381
|
+
};
|
|
382
|
+
visit(sourceFile);
|
|
383
|
+
if (void 0 !== moduleFederationAppPath) assertBridgeRouterCapability(sourceFile, moduleFederationAppPath);
|
|
384
|
+
}
|
|
385
|
+
};
|
|
386
|
+
checkArchitecture();
|
|
387
|
+
} finally{
|
|
388
|
+
compiler?.close();
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
exports.assertCompilerArchitecture = __webpack_exports__.assertCompilerArchitecture;
|
|
392
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
393
|
+
"assertCompilerArchitecture"
|
|
394
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
395
|
+
Object.defineProperty(exports, '__esModule', {
|
|
396
|
+
value: true
|
|
397
|
+
});
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
function assert(condition, message) {
|
|
31
|
+
if (!condition) throw new Error(message);
|
|
32
|
+
}
|
|
33
|
+
const canonicalizeJson = (value)=>{
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
const entries = value.map(canonicalizeJson);
|
|
36
|
+
const keyedEntries = entries.every((entry)=>null !== entry && 'object' == typeof entry && !Array.isArray(entry) && 'id' in entry && 'string' == typeof entry.id);
|
|
37
|
+
if (keyedEntries) {
|
|
38
|
+
const ids = entries.map((entry)=>entry.id);
|
|
39
|
+
if (new Set(ids).size === ids.length) return entries.toSorted((left, right)=>left.id.localeCompare(right.id));
|
|
40
|
+
}
|
|
41
|
+
return entries;
|
|
42
|
+
}
|
|
43
|
+
if (null !== value && 'object' == typeof value) return Object.fromEntries(Object.keys(value).toSorted().map((key)=>[
|
|
44
|
+
key,
|
|
45
|
+
canonicalizeJson(value[key])
|
|
46
|
+
]));
|
|
47
|
+
return value;
|
|
48
|
+
};
|
|
49
|
+
const sameJson = (actual, expected)=>JSON.stringify(canonicalizeJson(actual)) === JSON.stringify(canonicalizeJson(expected));
|
|
50
|
+
const formatJson = (value)=>void 0 === value ? 'undefined' : JSON.stringify(canonicalizeJson(value));
|
|
51
|
+
const selfCheckFailure = (contract, message, fixArea)=>`MicroVertical contract self-check failed: ${contract}. ${message}. Fix area: ${fixArea}.`;
|
|
52
|
+
function assertSelfCheck(condition, contract, message, fixArea) {
|
|
53
|
+
assert(condition, selfCheckFailure(contract, message, fixArea));
|
|
54
|
+
}
|
|
55
|
+
const assertSameJson = (actual, expected, contract, fixArea)=>{
|
|
56
|
+
assertSelfCheck(sameJson(actual, expected), contract, `Expected ${formatJson(expected)}, found ${formatJson(actual)}`, fixArea);
|
|
57
|
+
};
|
|
58
|
+
const assertIncludesJson = (actual, required, contract, fixArea)=>{
|
|
59
|
+
assertArray(actual, contract, fixArea);
|
|
60
|
+
for (const entry of required)assertSelfCheck(actual.some((value)=>sameJson(value, entry)), contract, `Missing required entry ${formatJson(entry)}`, fixArea);
|
|
61
|
+
};
|
|
62
|
+
function assertObject(value, contract, fixArea) {
|
|
63
|
+
assertSelfCheck(null !== value && 'object' == typeof value && !Array.isArray(value), contract, `Expected JSON object, found ${formatJson(value)}`, fixArea);
|
|
64
|
+
}
|
|
65
|
+
function assertArray(value, contract, fixArea) {
|
|
66
|
+
assertSelfCheck(Array.isArray(value), contract, `Expected JSON array, found ${formatJson(value)}`, fixArea);
|
|
67
|
+
}
|
|
68
|
+
const assertUniqueStrings = (values, contract)=>{
|
|
69
|
+
assert(Array.isArray(values), `${contract} must be an array`);
|
|
70
|
+
const seen = new Set();
|
|
71
|
+
for (const value of values){
|
|
72
|
+
assert('string' == typeof value && value.length > 0, `${contract} must contain non-empty strings`);
|
|
73
|
+
assert(!seen.has(value), `Duplicate value "${value}" in ${contract}`);
|
|
74
|
+
seen.add(value);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const assertUniqueIdEntries = (entries, contract)=>{
|
|
78
|
+
assert(Array.isArray(entries), `${contract} must be an array`);
|
|
79
|
+
const seen = new Set();
|
|
80
|
+
for (const entry of entries){
|
|
81
|
+
const id = entry?.id;
|
|
82
|
+
assert('string' == typeof id && id.length > 0, `${contract} entries must have non-empty string ids`);
|
|
83
|
+
assert(!seen.has(id), `Duplicate id "${id}" in ${contract}`);
|
|
84
|
+
seen.add(id);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const assertSameIdCohort = (entries, expectedIds, contract, fixArea)=>{
|
|
88
|
+
assert(entries && expectedIds, `${contract} must be an array`);
|
|
89
|
+
assertUniqueIdEntries(entries, contract);
|
|
90
|
+
assertSameJson(entries.map((entry)=>entry.id).toSorted(), [
|
|
91
|
+
...expectedIds
|
|
92
|
+
].toSorted(), `${contract} cohort`, fixArea);
|
|
93
|
+
};
|
|
94
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
95
|
+
assert: ()=>assert,
|
|
96
|
+
assertArray: ()=>assertArray,
|
|
97
|
+
assertObject: ()=>assertObject,
|
|
98
|
+
assertSelfCheck: ()=>assertSelfCheck
|
|
99
|
+
}, {
|
|
100
|
+
assertIncludesJson: assertIncludesJson,
|
|
101
|
+
assertSameIdCohort: assertSameIdCohort,
|
|
102
|
+
assertSameJson: assertSameJson,
|
|
103
|
+
assertUniqueIdEntries: assertUniqueIdEntries,
|
|
104
|
+
assertUniqueStrings: assertUniqueStrings,
|
|
105
|
+
canonicalizeJson: canonicalizeJson,
|
|
106
|
+
formatJson: formatJson,
|
|
107
|
+
sameJson: sameJson,
|
|
108
|
+
selfCheckFailure: selfCheckFailure
|
|
109
|
+
});
|
|
110
|
+
exports.assert = __webpack_exports__.assert;
|
|
111
|
+
exports.assertArray = __webpack_exports__.assertArray;
|
|
112
|
+
exports.assertIncludesJson = __webpack_exports__.assertIncludesJson;
|
|
113
|
+
exports.assertObject = __webpack_exports__.assertObject;
|
|
114
|
+
exports.assertSameIdCohort = __webpack_exports__.assertSameIdCohort;
|
|
115
|
+
exports.assertSameJson = __webpack_exports__.assertSameJson;
|
|
116
|
+
exports.assertSelfCheck = __webpack_exports__.assertSelfCheck;
|
|
117
|
+
exports.assertUniqueIdEntries = __webpack_exports__.assertUniqueIdEntries;
|
|
118
|
+
exports.assertUniqueStrings = __webpack_exports__.assertUniqueStrings;
|
|
119
|
+
exports.canonicalizeJson = __webpack_exports__.canonicalizeJson;
|
|
120
|
+
exports.formatJson = __webpack_exports__.formatJson;
|
|
121
|
+
exports.sameJson = __webpack_exports__.sameJson;
|
|
122
|
+
exports.selfCheckFailure = __webpack_exports__.selfCheckFailure;
|
|
123
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
124
|
+
"assert",
|
|
125
|
+
"assertArray",
|
|
126
|
+
"assertIncludesJson",
|
|
127
|
+
"assertObject",
|
|
128
|
+
"assertSameIdCohort",
|
|
129
|
+
"assertSameJson",
|
|
130
|
+
"assertSelfCheck",
|
|
131
|
+
"assertUniqueIdEntries",
|
|
132
|
+
"assertUniqueStrings",
|
|
133
|
+
"canonicalizeJson",
|
|
134
|
+
"formatJson",
|
|
135
|
+
"sameJson",
|
|
136
|
+
"selfCheckFailure"
|
|
137
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
138
|
+
Object.defineProperty(exports, '__esModule', {
|
|
139
|
+
value: true
|
|
140
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.r = (exports1)=>{
|
|
5
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
6
|
+
value: 'Module'
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
})();
|
|
13
|
+
var __webpack_exports__ = {};
|
|
14
|
+
__webpack_require__.r(__webpack_exports__);
|
|
15
|
+
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
16
|
+
Object.defineProperty(exports, '__esModule', {
|
|
17
|
+
value: true
|
|
18
|
+
});
|