@bleedingdev/modern-js-create 3.5.0-ultramodern.3 → 3.5.0-ultramodern.30

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.
Files changed (93) hide show
  1. package/README.md +21 -17
  2. package/dist/cjs/ultramodern-tooling/commands.cjs +772 -75
  3. package/dist/cjs/ultramodern-tooling/config.cjs +149 -8
  4. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +25 -0
  5. package/dist/cjs/ultramodern-workspace/api.cjs +44 -0
  6. package/dist/cjs/ultramodern-workspace/app-files.cjs +8 -11
  7. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +282 -0
  8. package/dist/cjs/ultramodern-workspace/contracts.cjs +24 -8
  9. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +157 -0
  10. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +88 -0
  11. package/dist/cjs/ultramodern-workspace/descriptors.cjs +24 -0
  12. package/dist/cjs/ultramodern-workspace/module-federation.cjs +161 -50
  13. package/dist/cjs/ultramodern-workspace/package-json.cjs +26 -43
  14. package/dist/cjs/ultramodern-workspace/pnpm-workspace-policy-plan.cjs +166 -0
  15. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +153 -0
  16. package/dist/cjs/ultramodern-workspace/versions.cjs +8 -3
  17. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +175 -0
  18. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +104 -63
  19. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +97 -0
  20. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +11 -3
  21. package/dist/cjs/ultramodern-workspace/zerops.cjs +100 -0
  22. package/dist/esm/ultramodern-tooling/commands.js +775 -78
  23. package/dist/esm/ultramodern-tooling/config.js +144 -9
  24. package/dist/esm/ultramodern-workspace/add-vertical.js +26 -1
  25. package/dist/esm/ultramodern-workspace/api.js +43 -2
  26. package/dist/esm/ultramodern-workspace/app-files.js +8 -11
  27. package/dist/esm/ultramodern-workspace/backend-federation.js +217 -0
  28. package/dist/esm/ultramodern-workspace/contracts.js +24 -8
  29. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +108 -0
  30. package/dist/esm/ultramodern-workspace/delivery-unit.js +31 -0
  31. package/dist/esm/ultramodern-workspace/descriptors.js +13 -1
  32. package/dist/esm/ultramodern-workspace/module-federation.js +160 -42
  33. package/dist/esm/ultramodern-workspace/package-json.js +16 -40
  34. package/dist/esm/ultramodern-workspace/pnpm-workspace-policy-plan.js +113 -0
  35. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
  36. package/dist/esm/ultramodern-workspace/versions.js +6 -4
  37. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +110 -0
  38. package/dist/esm/ultramodern-workspace/workspace-scripts.js +88 -65
  39. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +59 -0
  40. package/dist/esm/ultramodern-workspace/write-workspace.js +14 -6
  41. package/dist/esm/ultramodern-workspace/zerops.js +62 -0
  42. package/dist/esm-node/ultramodern-tooling/commands.js +775 -78
  43. package/dist/esm-node/ultramodern-tooling/config.js +144 -9
  44. package/dist/esm-node/ultramodern-workspace/add-vertical.js +26 -1
  45. package/dist/esm-node/ultramodern-workspace/api.js +43 -2
  46. package/dist/esm-node/ultramodern-workspace/app-files.js +8 -11
  47. package/dist/esm-node/ultramodern-workspace/backend-federation.js +218 -0
  48. package/dist/esm-node/ultramodern-workspace/contracts.js +24 -8
  49. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +109 -0
  50. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +32 -0
  51. package/dist/esm-node/ultramodern-workspace/descriptors.js +13 -1
  52. package/dist/esm-node/ultramodern-workspace/module-federation.js +160 -42
  53. package/dist/esm-node/ultramodern-workspace/package-json.js +16 -40
  54. package/dist/esm-node/ultramodern-workspace/pnpm-workspace-policy-plan.js +114 -0
  55. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
  56. package/dist/esm-node/ultramodern-workspace/versions.js +6 -4
  57. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +111 -0
  58. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +88 -65
  59. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +60 -0
  60. package/dist/esm-node/ultramodern-workspace/write-workspace.js +14 -6
  61. package/dist/esm-node/ultramodern-workspace/zerops.js +63 -0
  62. package/dist/types/ultramodern-tooling/config.d.ts +6 -0
  63. package/dist/types/ultramodern-workspace/api.d.ts +1 -0
  64. package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
  65. package/dist/types/ultramodern-workspace/contracts.d.ts +1 -1
  66. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
  67. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +27 -0
  68. package/dist/types/ultramodern-workspace/descriptors.d.ts +4 -0
  69. package/dist/types/ultramodern-workspace/module-federation.d.ts +4 -9
  70. package/dist/types/ultramodern-workspace/package-json.d.ts +0 -1
  71. package/dist/types/ultramodern-workspace/pnpm-workspace-policy-plan.d.ts +39 -0
  72. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
  73. package/dist/types/ultramodern-workspace/versions.d.ts +5 -3
  74. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +72 -0
  75. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +13 -0
  76. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +42 -0
  77. package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
  78. package/package.json +3 -3
  79. package/template-workspace/.gitignore.handlebars +4 -0
  80. package/template-workspace/README.md.handlebars +18 -15
  81. package/template-workspace/patches/@module-federation__bridge-react@2.6.0.patch +140 -0
  82. package/template-workspace/patches/@module-federation__modern-js-v3@2.6.0.patch +57 -0
  83. package/template-workspace/patches/drizzle-orm-ts7-strict-declarations.patch +452 -0
  84. package/template-workspace/patches/effect-schema-error-type-id.patch +18 -0
  85. package/template-workspace/pnpm-workspace.yaml.handlebars +8 -0
  86. package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
  87. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
  88. package/templates/workspace-scripts/generate-node-backend-federation.mjs +270 -0
  89. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +448 -0
  90. package/templates/workspace-scripts/proof-cloudflare-version.mjs +237 -9
  91. package/templates/workspace-scripts/proof-node-backend-federation.mjs +729 -0
  92. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
  93. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +434 -18
@@ -34,9 +34,12 @@ __webpack_require__.d(__webpack_exports__, {
34
34
  createUltramodernConfig: ()=>createUltramodernConfig
35
35
  });
36
36
  const external_api_cjs_namespaceObject = require("./api.cjs");
37
+ const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
38
+ const external_delivery_unit_cjs_namespaceObject = require("./delivery-unit.cjs");
37
39
  const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
38
40
  const external_naming_cjs_namespaceObject = require("./naming.cjs");
39
41
  const external_policy_cjs_namespaceObject = require("./policy.cjs");
42
+ const external_tooling_command_catalog_cjs_namespaceObject = require("./tooling-command-catalog.cjs");
40
43
  const external_versions_cjs_namespaceObject = require("./versions.cjs");
41
44
  function createTopology(scope, remotes = []) {
42
45
  const shellHost = (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes);
@@ -79,6 +82,12 @@ function createTopology(scope, remotes = []) {
79
82
  fallbackTelemetryEvent: 'modernjs:mv-runtime-parity',
80
83
  sharedContractVersion: 'mf-ssr-contract-v1'
81
84
  },
85
+ ...(0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, vertical) ? {
86
+ backendFederation: (0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, vertical)
87
+ } : {},
88
+ ...vertical.api ? {
89
+ deliveryUnit: (0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, vertical))
90
+ } : {},
82
91
  ...(0, external_api_cjs_namespaceObject.apiTopologyMetadata)(vertical) ? {
83
92
  api: (0, external_api_cjs_namespaceObject.apiTopologyMetadata)(vertical)
84
93
  } : {},
@@ -134,7 +143,7 @@ function createOwnership(scope, remotes = []) {
134
143
  }))
135
144
  };
136
145
  }
137
- function createDevelopmentOverlay(remotes = []) {
146
+ function createDevelopmentOverlay(scope, remotes = []) {
138
147
  return {
139
148
  schemaVersion: 1,
140
149
  environment: 'development',
@@ -150,6 +159,10 @@ function createDevelopmentOverlay(remotes = []) {
150
159
  remote.id,
151
160
  `http://localhost:${remote.port}/mf-manifest.json`
152
161
  ])),
162
+ serverExecution: Object.fromEntries((0, external_descriptors_cjs_namespaceObject.verticalApiApps)(remotes).map((app)=>[
163
+ app.id,
164
+ (0, external_backend_federation_cjs_namespaceObject.createServerExecutionOverlay)(scope, app)
165
+ ])),
153
166
  apis: Object.fromEntries((0, external_descriptors_cjs_namespaceObject.verticalApiApps)(remotes).map((app)=>[
154
167
  app.id,
155
168
  `http://localhost:${app.port}${(0, external_descriptors_cjs_namespaceObject.resolveApiPrefix)(app)}`
@@ -226,6 +239,12 @@ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
226
239
  tsConfigPath: './tsconfig.mf-types.json'
227
240
  }
228
241
  },
242
+ ...(0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, app) ? {
243
+ backendFederation: (0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, app)
244
+ } : {},
245
+ ...app.api ? {
246
+ deliveryUnit: (0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, app))
247
+ } : {},
229
248
  ...app.api ? {
230
249
  api: {
231
250
  stem: app.api.stem,
@@ -269,6 +288,9 @@ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
269
288
  hostOnly: 'shell' === app.kind && 0 === Object.keys(app.exposes ?? {}).length
270
289
  }))
271
290
  },
291
+ backendFederation: {
292
+ apps: (0, external_descriptors_cjs_namespaceObject.verticalApiApps)(remotes).map((app)=>(0, external_backend_federation_cjs_namespaceObject.createBackendFederationSummary)(scope, app))
293
+ },
272
294
  agentSkills: {
273
295
  target: 'codex',
274
296
  lockfile: './.codex/skills-lock.json',
@@ -283,13 +305,7 @@ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
283
305
  tooling: {
284
306
  command: 'modern-js-create ultramodern',
285
307
  wrappers: {
286
- validate: "scripts/validate-ultramodern-workspace.mts",
287
- typecheck: "scripts/ultramodern-typecheck.mts",
288
- mfTypes: "scripts/assert-mf-types.mts",
289
- publicSurface: "scripts/generate-public-surface-assets.mts",
290
- cloudflareProof: "scripts/proof-cloudflare-version.mts",
291
- performanceReadiness: "scripts/ultramodern-performance-readiness.mts",
292
- migrateStrictEffect: "scripts/migrate-strict-effect.mts",
308
+ ...(0, external_tooling_command_catalog_cjs_namespaceObject.createGeneratedToolingWrapperMap)(),
293
309
  apiBoundaries: "scripts/check-ultramodern-api-boundaries.mts",
294
310
  skills: "scripts/bootstrap-agent-skills.mts"
295
311
  }
@@ -0,0 +1,157 @@
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
+ runSyncDeliveryUnit: ()=>runSyncDeliveryUnit
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 config_cjs_namespaceObject = require("../ultramodern-tooling/config.cjs");
47
+ const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
48
+ const external_delivery_unit_cjs_namespaceObject = require("./delivery-unit.cjs");
49
+ const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
50
+ const external_module_federation_cjs_namespaceObject = require("./module-federation.cjs");
51
+ const REFERENCE_TOPOLOGY_PATH = 'topology/reference-topology.json';
52
+ function readOption(args, name) {
53
+ const prefix = `${name}=`;
54
+ const inline = args.find((arg)=>arg.startsWith(prefix));
55
+ if (inline) {
56
+ const value = inline.slice(prefix.length);
57
+ if (!value) throw new Error(`${name} needs a value.`);
58
+ return value;
59
+ }
60
+ const index = args.indexOf(name);
61
+ if (-1 === index) return;
62
+ const value = args[index + 1];
63
+ if (!value || value.startsWith('--')) throw new Error(`${name} needs a value.`);
64
+ return value;
65
+ }
66
+ function isPlainObject(value) {
67
+ return 'object' == typeof value && null !== value && !Array.isArray(value);
68
+ }
69
+ function writeTextIfChanged(absolutePath, content) {
70
+ if (external_node_fs_default().existsSync(absolutePath) && external_node_fs_default().readFileSync(absolutePath, 'utf-8') === content) return false;
71
+ external_node_fs_default().mkdirSync(external_node_path_default().dirname(absolutePath), {
72
+ recursive: true
73
+ });
74
+ external_node_fs_default().writeFileSync(absolutePath, content, 'utf-8');
75
+ return true;
76
+ }
77
+ function writeJsonIfChanged(absolutePath, value) {
78
+ return writeTextIfChanged(absolutePath, `${JSON.stringify(value, null, 2)}\n`);
79
+ }
80
+ function stampDeliveryUnitIdentity(entry, scope, app) {
81
+ const block = (0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, app));
82
+ entry.deliveryUnit = block;
83
+ if (isPlainObject(entry.backendFederation)) {
84
+ entry.backendFederation.deliveryUnit = block;
85
+ if (!isPlainObject(entry.backendFederation.versionBoundary)) entry.backendFederation.versionBoundary = {};
86
+ entry.backendFederation.versionBoundary.identityRoot = 'deliveryUnit';
87
+ } else entry.backendFederation = (0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, app);
88
+ }
89
+ function runSyncDeliveryUnit(args, context) {
90
+ if (args.includes('--help') || args.includes('-h')) {
91
+ process.stdout.write(`Usage:
92
+ modern-js-create ultramodern sync-delivery-unit [--workspace <dir>]
93
+
94
+ Backfills the per-vertical delivery-unit identity blocks required by
95
+ \`ultramodern validate\` onto an existing generated workspace, in place and
96
+ through framework tooling only. For each full-stack vertical it writes the
97
+ delivery-unit block into .modernjs/ultramodern.json topology.apps[] and
98
+ topology/reference-topology.json verticals[] (plus backendFederation.deliveryUnit
99
+ and backendFederation.versionBoundary.identityRoot) and regenerates
100
+ verticals/<id>/shared/ultramodern-build.ts. Idempotent: a second run writes
101
+ nothing.
102
+ `);
103
+ return 0;
104
+ }
105
+ const workspaceOverride = readOption(args, '--workspace');
106
+ const workspaceRoot = workspaceOverride ? external_node_path_default().resolve(context.invocationCwd, workspaceOverride) : context.workspaceRoot;
107
+ const compactPath = external_node_path_default().join(workspaceRoot, external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH);
108
+ if (!external_node_fs_default().existsSync(compactPath)) throw new Error(`Missing ${external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH}. sync-delivery-unit needs the compact UltraModern config; run \`modern-js-create ultramodern migrate-strict-effect\` first.`);
109
+ const config = (0, config_cjs_namespaceObject.readUltramodernConfig)(workspaceRoot);
110
+ const scope = config.workspace.packageScope;
111
+ const apiApps = (0, config_cjs_namespaceObject.workspaceAppsFromToolingConfig)(config).filter((app)=>Boolean(app.api));
112
+ const written = [];
113
+ const unchanged = [];
114
+ const track = (relativePath, changed)=>{
115
+ (changed ? written : unchanged).push(relativePath);
116
+ };
117
+ const appById = new Map(apiApps.map((app)=>[
118
+ app.id,
119
+ app
120
+ ]));
121
+ const compact = JSON.parse(external_node_fs_default().readFileSync(compactPath, 'utf-8'));
122
+ if (isPlainObject(compact) && Array.isArray(compact.topology?.apps)) for (const entry of compact.topology.apps){
123
+ if (!isPlainObject(entry)) continue;
124
+ const app = appById.get(String(entry.id));
125
+ if (app) stampDeliveryUnitIdentity(entry, scope, app);
126
+ }
127
+ track(external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH, writeJsonIfChanged(compactPath, compact));
128
+ const topologyPath = external_node_path_default().join(workspaceRoot, REFERENCE_TOPOLOGY_PATH);
129
+ if (external_node_fs_default().existsSync(topologyPath)) {
130
+ const topology = JSON.parse(external_node_fs_default().readFileSync(topologyPath, 'utf-8'));
131
+ if (isPlainObject(topology) && Array.isArray(topology.verticals)) for (const entry of topology.verticals){
132
+ if (!isPlainObject(entry)) continue;
133
+ const app = appById.get(String(entry.id));
134
+ if (app) stampDeliveryUnitIdentity(entry, scope, app);
135
+ }
136
+ track(REFERENCE_TOPOLOGY_PATH, writeJsonIfChanged(topologyPath, topology));
137
+ }
138
+ for (const app of apiApps){
139
+ const relativePath = external_node_path_default().join(app.directory, 'shared/ultramodern-build.ts');
140
+ const changed = writeTextIfChanged(external_node_path_default().join(workspaceRoot, relativePath), (0, external_module_federation_cjs_namespaceObject.createUltramodernBuildModule)(scope, app));
141
+ track(relativePath, changed);
142
+ }
143
+ if (0 === written.length) process.stdout.write('[ultramodern] sync-delivery-unit: already in sync; no files written.\n');
144
+ else {
145
+ process.stdout.write(`[ultramodern] sync-delivery-unit: wrote ${written.length} file(s):\n`);
146
+ for (const relativePath of written)process.stdout.write(` wrote ${relativePath}\n`);
147
+ for (const relativePath of unchanged)process.stdout.write(` in-sync ${relativePath}\n`);
148
+ }
149
+ return 0;
150
+ }
151
+ exports.runSyncDeliveryUnit = __webpack_exports__.runSyncDeliveryUnit;
152
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
153
+ "runSyncDeliveryUnit"
154
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
155
+ Object.defineProperty(exports, '__esModule', {
156
+ value: true
157
+ });
@@ -0,0 +1,88 @@
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
+ DELIVERY_UNIT_SCHEMA_VERSION: ()=>DELIVERY_UNIT_SCHEMA_VERSION,
41
+ createBuildMarker: ()=>createBuildMarker,
42
+ createDeliveryUnitRecord: ()=>createDeliveryUnitRecord,
43
+ deliveryUnitContractBlock: ()=>deliveryUnitContractBlock
44
+ });
45
+ const external_node_crypto_namespaceObject = require("node:crypto");
46
+ var external_node_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_node_crypto_namespaceObject);
47
+ const external_naming_cjs_namespaceObject = require("./naming.cjs");
48
+ const DELIVERY_UNIT_SCHEMA_VERSION = 1;
49
+ function createBuildMarker(scope, app) {
50
+ return external_node_crypto_default().createHash('sha256').update(`${scope}:${app.packageSuffix}:${app.id}:0.1.0`).digest('hex').slice(0, 16);
51
+ }
52
+ function deliveryUnitContractBlock(record) {
53
+ return {
54
+ schemaVersion: record.schemaVersion,
55
+ kind: record.kind,
56
+ unitId: record.unitId,
57
+ packageName: record.packageName,
58
+ version: record.version,
59
+ buildMarker: record.buildMarker,
60
+ sourceRevision: record.sourceRevision
61
+ };
62
+ }
63
+ function createDeliveryUnitRecord(scope, app) {
64
+ return {
65
+ schemaVersion: DELIVERY_UNIT_SCHEMA_VERSION,
66
+ kind: 'microvertical-delivery-unit',
67
+ unitId: `${scope}/${app.domain ?? app.id}`,
68
+ appId: app.id,
69
+ packageName: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
70
+ version: '0.1.0',
71
+ sourceRevision: 'workspace',
72
+ buildMarker: createBuildMarker(scope, app),
73
+ deployProfile: 'cloudflare-ssr-mf-effect-v1'
74
+ };
75
+ }
76
+ exports.DELIVERY_UNIT_SCHEMA_VERSION = __webpack_exports__.DELIVERY_UNIT_SCHEMA_VERSION;
77
+ exports.createBuildMarker = __webpack_exports__.createBuildMarker;
78
+ exports.createDeliveryUnitRecord = __webpack_exports__.createDeliveryUnitRecord;
79
+ exports.deliveryUnitContractBlock = __webpack_exports__.deliveryUnitContractBlock;
80
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
81
+ "DELIVERY_UNIT_SCHEMA_VERSION",
82
+ "createBuildMarker",
83
+ "createDeliveryUnitRecord",
84
+ "deliveryUnitContractBlock"
85
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
86
+ Object.defineProperty(exports, '__esModule', {
87
+ value: true
88
+ });
@@ -31,6 +31,10 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  ULTRAMODERN_CONFIG_PATH: ()=>ULTRAMODERN_CONFIG_PATH,
32
32
  appHasApi: ()=>appHasApi,
33
33
  appI18nNamespace: ()=>appI18nNamespace,
34
+ createBackendFederationContainerEntry: ()=>createBackendFederationContainerEntry,
35
+ createBackendFederationManifestEnv: ()=>createBackendFederationManifestEnv,
36
+ createBackendFederationManifestUrl: ()=>createBackendFederationManifestUrl,
37
+ createBackendFederationName: ()=>createBackendFederationName,
34
38
  createCloudflarePublicUrlEnv: ()=>createCloudflarePublicUrlEnv,
35
39
  createCloudflareWorkerName: ()=>createCloudflareWorkerName,
36
40
  createModuleFederationRemoteContracts: ()=>createModuleFederationRemoteContracts,
@@ -161,6 +165,18 @@ function resolveRemoteRefs(app, remotes = []) {
161
165
  function createRemoteManifestEnv(remote) {
162
166
  return `VERTICAL_${(0, external_naming_cjs_namespaceObject.toEnvSegment)(remote.domain ?? remote.id)}_MF_MANIFEST`;
163
167
  }
168
+ function createBackendFederationManifestEnv(remote) {
169
+ return `VERTICAL_${(0, external_naming_cjs_namespaceObject.toEnvSegment)(remote.domain ?? remote.id)}_BACKEND_MF_MANIFEST`;
170
+ }
171
+ function createBackendFederationName(app) {
172
+ return `${app.mfName}Backend`;
173
+ }
174
+ function createBackendFederationManifestUrl(app) {
175
+ return `http://localhost:${app.port}/backend-mf-manifest.json`;
176
+ }
177
+ function createBackendFederationContainerEntry(app) {
178
+ return `http://localhost:${app.port}/backendRemoteEntry.mjs`;
179
+ }
164
180
  function createModuleFederationRemoteContracts(app, remotes = []) {
165
181
  return resolveRemoteRefs(app, remotes).map((remote)=>({
166
182
  id: remote.id,
@@ -182,6 +198,10 @@ function appI18nNamespace(app) {
182
198
  exports.ULTRAMODERN_CONFIG_PATH = __webpack_exports__.ULTRAMODERN_CONFIG_PATH;
183
199
  exports.appHasApi = __webpack_exports__.appHasApi;
184
200
  exports.appI18nNamespace = __webpack_exports__.appI18nNamespace;
201
+ exports.createBackendFederationContainerEntry = __webpack_exports__.createBackendFederationContainerEntry;
202
+ exports.createBackendFederationManifestEnv = __webpack_exports__.createBackendFederationManifestEnv;
203
+ exports.createBackendFederationManifestUrl = __webpack_exports__.createBackendFederationManifestUrl;
204
+ exports.createBackendFederationName = __webpack_exports__.createBackendFederationName;
185
205
  exports.createCloudflarePublicUrlEnv = __webpack_exports__.createCloudflarePublicUrlEnv;
186
206
  exports.createCloudflareWorkerName = __webpack_exports__.createCloudflareWorkerName;
187
207
  exports.createModuleFederationRemoteContracts = __webpack_exports__.createModuleFederationRemoteContracts;
@@ -201,6 +221,10 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
201
221
  "ULTRAMODERN_CONFIG_PATH",
202
222
  "appHasApi",
203
223
  "appI18nNamespace",
224
+ "createBackendFederationContainerEntry",
225
+ "createBackendFederationManifestEnv",
226
+ "createBackendFederationManifestUrl",
227
+ "createBackendFederationName",
204
228
  "createCloudflarePublicUrlEnv",
205
229
  "createCloudflareWorkerName",
206
230
  "createModuleFederationRemoteContracts",