@bleedingdev/modern-js-create 3.5.0-ultramodern.27 → 3.5.0-ultramodern.29

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 (79) hide show
  1. package/dist/cjs/ultramodern-tooling/commands.cjs +497 -155
  2. package/dist/cjs/ultramodern-tooling/config.cjs +149 -8
  3. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +25 -0
  4. package/dist/cjs/ultramodern-workspace/api.cjs +44 -0
  5. package/dist/cjs/ultramodern-workspace/backend-federation.cjs +282 -0
  6. package/dist/cjs/ultramodern-workspace/contracts.cjs +24 -8
  7. package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +157 -0
  8. package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +88 -0
  9. package/dist/cjs/ultramodern-workspace/descriptors.cjs +24 -0
  10. package/dist/cjs/ultramodern-workspace/module-federation.cjs +122 -44
  11. package/dist/cjs/ultramodern-workspace/package-json.cjs +11 -34
  12. package/dist/cjs/ultramodern-workspace/pnpm-workspace-policy-plan.cjs +166 -0
  13. package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +153 -0
  14. package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +175 -0
  15. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +43 -62
  16. package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +97 -0
  17. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +9 -3
  18. package/dist/cjs/ultramodern-workspace/zerops.cjs +100 -0
  19. package/dist/esm/ultramodern-tooling/commands.js +500 -158
  20. package/dist/esm/ultramodern-tooling/config.js +144 -9
  21. package/dist/esm/ultramodern-workspace/add-vertical.js +26 -1
  22. package/dist/esm/ultramodern-workspace/api.js +43 -2
  23. package/dist/esm/ultramodern-workspace/backend-federation.js +217 -0
  24. package/dist/esm/ultramodern-workspace/contracts.js +24 -8
  25. package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +108 -0
  26. package/dist/esm/ultramodern-workspace/delivery-unit.js +31 -0
  27. package/dist/esm/ultramodern-workspace/descriptors.js +13 -1
  28. package/dist/esm/ultramodern-workspace/module-federation.js +121 -36
  29. package/dist/esm/ultramodern-workspace/package-json.js +11 -31
  30. package/dist/esm/ultramodern-workspace/pnpm-workspace-policy-plan.js +113 -0
  31. package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
  32. package/dist/esm/ultramodern-workspace/workspace-script-plan.js +110 -0
  33. package/dist/esm/ultramodern-workspace/workspace-scripts.js +35 -63
  34. package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +59 -0
  35. package/dist/esm/ultramodern-workspace/write-workspace.js +11 -5
  36. package/dist/esm/ultramodern-workspace/zerops.js +62 -0
  37. package/dist/esm-node/ultramodern-tooling/commands.js +500 -158
  38. package/dist/esm-node/ultramodern-tooling/config.js +144 -9
  39. package/dist/esm-node/ultramodern-workspace/add-vertical.js +26 -1
  40. package/dist/esm-node/ultramodern-workspace/api.js +43 -2
  41. package/dist/esm-node/ultramodern-workspace/backend-federation.js +218 -0
  42. package/dist/esm-node/ultramodern-workspace/contracts.js +24 -8
  43. package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +109 -0
  44. package/dist/esm-node/ultramodern-workspace/delivery-unit.js +32 -0
  45. package/dist/esm-node/ultramodern-workspace/descriptors.js +13 -1
  46. package/dist/esm-node/ultramodern-workspace/module-federation.js +121 -36
  47. package/dist/esm-node/ultramodern-workspace/package-json.js +11 -31
  48. package/dist/esm-node/ultramodern-workspace/pnpm-workspace-policy-plan.js +114 -0
  49. package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
  50. package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +111 -0
  51. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +35 -63
  52. package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +60 -0
  53. package/dist/esm-node/ultramodern-workspace/write-workspace.js +11 -5
  54. package/dist/esm-node/ultramodern-workspace/zerops.js +63 -0
  55. package/dist/types/ultramodern-tooling/config.d.ts +6 -0
  56. package/dist/types/ultramodern-workspace/api.d.ts +1 -0
  57. package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
  58. package/dist/types/ultramodern-workspace/contracts.d.ts +1 -1
  59. package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
  60. package/dist/types/ultramodern-workspace/delivery-unit.d.ts +27 -0
  61. package/dist/types/ultramodern-workspace/descriptors.d.ts +4 -0
  62. package/dist/types/ultramodern-workspace/module-federation.d.ts +4 -9
  63. package/dist/types/ultramodern-workspace/package-json.d.ts +0 -1
  64. package/dist/types/ultramodern-workspace/pnpm-workspace-policy-plan.d.ts +39 -0
  65. package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
  66. package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +72 -0
  67. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +3 -0
  68. package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +42 -0
  69. package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
  70. package/package.json +3 -3
  71. package/template-workspace/.gitignore.handlebars +1 -0
  72. package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
  73. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
  74. package/templates/workspace-scripts/generate-node-backend-federation.mjs +270 -0
  75. package/templates/workspace-scripts/materialize-zerops-runtime.mjs +448 -0
  76. package/templates/workspace-scripts/proof-cloudflare-version.mjs +234 -8
  77. package/templates/workspace-scripts/proof-node-backend-federation.mjs +729 -0
  78. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
  79. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +322 -8
@@ -37,25 +37,22 @@ var __webpack_require__ = {};
37
37
  var __webpack_exports__ = {};
38
38
  __webpack_require__.r(__webpack_exports__);
39
39
  __webpack_require__.d(__webpack_exports__, {
40
+ createNodeBackendFederationProofScript: ()=>createNodeBackendFederationProofScript,
40
41
  createPerformanceReadinessConfigScript: ()=>createPerformanceReadinessConfigScript,
41
42
  createWorkspaceApiBoundaryValidationScript: ()=>createWorkspaceApiBoundaryValidationScript,
42
43
  createWorkspaceI18nBoundaryValidationScript: ()=>createWorkspaceI18nBoundaryValidationScript,
43
44
  createWorkspaceValidationScript: ()=>createWorkspaceValidationScript,
45
+ createZeropsRuntimeMaterializationScript: ()=>createZeropsRuntimeMaterializationScript,
46
+ writeGeneratedToolWrapperScripts: ()=>writeGeneratedToolWrapperScripts,
44
47
  writeGeneratedWorkspaceScripts: ()=>writeGeneratedWorkspaceScripts
45
48
  });
46
49
  const external_node_fs_namespaceObject = require("node:fs");
47
50
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
48
51
  const external_node_path_namespaceObject = require("node:path");
49
52
  var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
50
- const external_api_cjs_namespaceObject = require("./api.cjs");
51
- const external_demo_components_cjs_namespaceObject = require("./demo-components.cjs");
52
- const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
53
53
  const external_fs_io_cjs_namespaceObject = require("./fs-io.cjs");
54
- const external_naming_cjs_namespaceObject = require("./naming.cjs");
55
- const external_policy_cjs_namespaceObject = require("./policy.cjs");
56
- const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
57
- const external_routes_cjs_namespaceObject = require("./routes.cjs");
58
- const external_versions_cjs_namespaceObject = require("./versions.cjs");
54
+ const external_tooling_command_catalog_cjs_namespaceObject = require("./tooling-command-catalog.cjs");
55
+ const external_workspace_validation_contract_cjs_namespaceObject = require("./workspace-validation-contract.cjs");
59
56
  function createToolWrapperScript(command, extraArgs = []) {
60
57
  const commandJson = JSON.stringify(command);
61
58
  const extraArgsJson = JSON.stringify(extraArgs);
@@ -89,6 +86,13 @@ if (result.error) {
89
86
  process.exit(result.status ?? 1);
90
87
  `;
91
88
  }
89
+ function writeGeneratedToolWrapperScript(targetDir, key) {
90
+ const command = external_tooling_command_catalog_cjs_namespaceObject.GENERATED_TOOLING_COMMANDS[key];
91
+ writeWorkspaceOwnedMtsScript(targetDir, command.wrapperName, createToolWrapperScript(command.command));
92
+ }
93
+ function writeGeneratedToolWrapperScripts(targetDir) {
94
+ for (const command of external_tooling_command_catalog_cjs_namespaceObject.generatedToolingCommands)writeGeneratedToolWrapperScript(targetDir, command.id);
95
+ }
92
96
  function createSkillsToolWrapperScript() {
93
97
  return `#!/usr/bin/env node
94
98
  import { spawnSync } from 'node:child_process';
@@ -143,54 +147,24 @@ function migrateCopiedWorkspaceScriptToMts(targetDir, name) {
143
147
  external_node_fs_default().renameSync(legacyPath, migratedPath);
144
148
  }
145
149
  function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
146
- const verticals = remotes.filter(external_descriptors_cjs_namespaceObject.appHasApi).map((remote)=>({
147
- id: remote.id,
148
- domain: remote.domain,
149
- stem: remote.api.stem,
150
- group: (0, external_api_cjs_namespaceObject.verticalApiGroupName)(remote),
151
- path: remote.directory,
152
- port: remote.port,
153
- mfName: remote.mfName,
154
- apiPrefix: remote.api.prefix,
155
- tailwindPrefix: (0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(remote),
156
- zephyrAlias: (0, external_descriptors_cjs_namespaceObject.remoteDependencyAlias)(remote),
157
- packageName: (0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix),
158
- exposes: Object.keys(remote.exposes ?? {}),
159
- componentPaths: Object.keys(remote.exposes ?? {}).map((expose)=>(0, external_demo_components_cjs_namespaceObject.remoteComponentOutputPath)(remote, expose)).filter((componentPath)=>Boolean(componentPath)),
160
- namespace: (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(remote),
161
- routePagePaths: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(remote).filter((route)=>'/' !== route.canonicalPath).map((route)=>(0, external_routes_cjs_namespaceObject.createRoutePageFilePath)(remote, route.canonicalPath)),
162
- routeMetaPaths: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(remote).map((route)=>(0, external_routes_cjs_namespaceObject.createRouteMetaFilePath)(remote, route.canonicalPath)),
163
- localisedUrls: (0, external_routes_cjs_namespaceObject.createLocalisedUrlsMap)(remote),
164
- verticalRefs: remote.verticalRefs ?? []
165
- }));
166
- const shellRouteMetaPaths = (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(external_descriptors_cjs_namespaceObject.shellApp).map((route)=>(0, external_routes_cjs_namespaceObject.createRouteMetaFilePath)(external_descriptors_cjs_namespaceObject.shellApp, route.canonicalPath));
167
- const shellNamespace = (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(external_descriptors_cjs_namespaceObject.shellApp);
168
- const oldRemotePaths = [
169
- 'apps/remotes'
170
- ];
171
- const expectedBuildScript = remotes.length > 0 ? 'ULTRAMODERN_ZEPHYR=false pnpm -r --filter "./verticals/*" run build && ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm mf:types && pnpm performance:readiness' : 'ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm mf:types && pnpm performance:readiness';
172
- const expectedCloudflareBuildScript = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:build && pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm mf:types' : 'pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm mf:types';
173
- const expectedCloudflareDeployScript = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:deploy && pnpm --filter "./apps/shell-super-app" run cloudflare:deploy' : 'pnpm --filter "./apps/shell-super-app" run cloudflare:deploy';
174
- const expectedCloudflareSecurity = (0, external_policy_cjs_namespaceObject.createCloudflareSecurityContract)();
150
+ const contract = (0, external_workspace_validation_contract_cjs_namespaceObject.createWorkspaceValidationContract)(scope, enableTailwind, remotes);
175
151
  return (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)("workspace-scripts/validate-ultramodern-workspace.mjs", {
176
- packageScope: scope,
177
- effectVersion: external_versions_cjs_namespaceObject.EFFECT_VERSION,
178
- moduleFederationVersion: external_versions_cjs_namespaceObject.MODULE_FEDERATION_VERSION,
179
- nodeVersion: external_versions_cjs_namespaceObject.NODE_VERSION,
180
- pnpmVersion: external_versions_cjs_namespaceObject.PNPM_VERSION,
181
- tailwindEnabledJson: JSON.stringify(enableTailwind),
182
- fullStackVerticalsJson: JSON.stringify(verticals, null, 2),
183
- shellNamespaceJson: JSON.stringify(shellNamespace),
184
- oldRemotePathsJson: JSON.stringify(oldRemotePaths, null, 2),
185
- expectedBuildScriptJson: JSON.stringify(expectedBuildScript),
186
- expectedCloudflareBuildScriptJson: JSON.stringify(expectedCloudflareBuildScript),
187
- expectedCloudflareDeployScriptJson: JSON.stringify(expectedCloudflareDeployScript),
188
- expectedCloudflareSecurityJson: JSON.stringify(expectedCloudflareSecurity, null, 2),
189
- publicSurfaceManagedSourceAssetPathsJson: JSON.stringify([
190
- ...external_public_surface_cjs_namespaceObject.publicSurfaceManagedSourceAssetPaths
191
- ], null, 2),
192
- shellRouteMetaPathsJson: JSON.stringify(shellRouteMetaPaths, null, 2),
193
- cloudflareCompatibilityDate: external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE
152
+ packageScope: contract.packageScope,
153
+ nodeVersion: contract.versions.node,
154
+ tailwindEnabledJson: JSON.stringify(contract.tailwindEnabled),
155
+ fullStackVerticalsJson: JSON.stringify(contract.fullStackVerticals, null, 2),
156
+ shellNamespaceJson: JSON.stringify(contract.shellNamespace),
157
+ oldRemotePathsJson: JSON.stringify(contract.oldRemotePaths),
158
+ expectedBuildScriptJson: JSON.stringify(contract.scripts.build),
159
+ expectedCloudflareBuildScriptJson: JSON.stringify(contract.scripts.cloudflareBuild),
160
+ expectedCloudflareDeployScriptJson: JSON.stringify(contract.scripts.cloudflareDeploy),
161
+ expectedCloudflareSecurityJson: JSON.stringify(contract.cloudflareSecurity, null, 2),
162
+ workspaceValidationContractJson: JSON.stringify(contract, null, 2),
163
+ publicSurfaceManagedSourceAssetPathsJson: JSON.stringify(contract.publicSurfaceManagedSourceAssetPaths, null, 2),
164
+ shellRouteMetaPathsJson: JSON.stringify(contract.shellRouteMetaPaths, null, 2),
165
+ effectVersion: contract.versions.effect,
166
+ moduleFederationVersion: contract.versions.moduleFederation,
167
+ cloudflareCompatibilityDate: contract.versions.cloudflareCompatibilityDate
194
168
  });
195
169
  }
196
170
  function createWorkspaceI18nBoundaryValidationScript() {
@@ -202,30 +176,37 @@ function createWorkspaceApiBoundaryValidationScript() {
202
176
  function createPerformanceReadinessConfigScript() {
203
177
  return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-performance-readiness.config.mjs");
204
178
  }
179
+ function createNodeBackendFederationProofScript() {
180
+ return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/proof-node-backend-federation.mjs");
181
+ }
182
+ function createZeropsRuntimeMaterializationScript() {
183
+ return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/materialize-zerops-runtime.mjs");
184
+ }
205
185
  function writeGeneratedWorkspaceScripts(targetDir, _scope, _enableTailwind, _remotes = []) {
206
- writeWorkspaceOwnedMtsScript(targetDir, 'assert-mf-types', createToolWrapperScript('mf-types'));
207
- writeWorkspaceOwnedMtsScript(targetDir, 'validate-ultramodern-workspace', createToolWrapperScript('validate'));
208
186
  writeWorkspaceOwnedMtsScript(targetDir, 'check-ultramodern-i18n-boundaries', createWorkspaceI18nBoundaryValidationScript());
209
187
  writeWorkspaceOwnedMtsScript(targetDir, 'check-ultramodern-api-boundaries', createWorkspaceApiBoundaryValidationScript());
210
- writeWorkspaceOwnedMtsScript(targetDir, 'generate-public-surface-assets', createToolWrapperScript('public-surface'));
211
- writeWorkspaceOwnedMtsScript(targetDir, 'proof-cloudflare-version', createToolWrapperScript('cloudflare-proof'));
188
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/materialize-zerops-runtime.mjs", createZeropsRuntimeMaterializationScript());
212
189
  (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.config.mjs", createPerformanceReadinessConfigScript());
213
- writeWorkspaceOwnedMtsScript(targetDir, 'ultramodern-performance-readiness', createToolWrapperScript('performance-readiness'));
214
- writeWorkspaceOwnedMtsScript(targetDir, 'migrate-strict-effect', createToolWrapperScript('migrate-strict-effect'));
215
- writeWorkspaceOwnedMtsScript(targetDir, 'ultramodern-typecheck', createToolWrapperScript('typecheck'));
190
+ writeGeneratedToolWrapperScripts(targetDir);
216
191
  writeWorkspaceOwnedMtsScript(targetDir, 'bootstrap-agent-skills', createSkillsToolWrapperScript());
217
192
  migrateCopiedWorkspaceScriptToMts(targetDir, 'setup-agent-reference-repos');
218
193
  }
194
+ exports.createNodeBackendFederationProofScript = __webpack_exports__.createNodeBackendFederationProofScript;
219
195
  exports.createPerformanceReadinessConfigScript = __webpack_exports__.createPerformanceReadinessConfigScript;
220
196
  exports.createWorkspaceApiBoundaryValidationScript = __webpack_exports__.createWorkspaceApiBoundaryValidationScript;
221
197
  exports.createWorkspaceI18nBoundaryValidationScript = __webpack_exports__.createWorkspaceI18nBoundaryValidationScript;
222
198
  exports.createWorkspaceValidationScript = __webpack_exports__.createWorkspaceValidationScript;
199
+ exports.createZeropsRuntimeMaterializationScript = __webpack_exports__.createZeropsRuntimeMaterializationScript;
200
+ exports.writeGeneratedToolWrapperScripts = __webpack_exports__.writeGeneratedToolWrapperScripts;
223
201
  exports.writeGeneratedWorkspaceScripts = __webpack_exports__.writeGeneratedWorkspaceScripts;
224
202
  for(var __rspack_i in __webpack_exports__)if (-1 === [
203
+ "createNodeBackendFederationProofScript",
225
204
  "createPerformanceReadinessConfigScript",
226
205
  "createWorkspaceApiBoundaryValidationScript",
227
206
  "createWorkspaceI18nBoundaryValidationScript",
228
207
  "createWorkspaceValidationScript",
208
+ "createZeropsRuntimeMaterializationScript",
209
+ "writeGeneratedToolWrapperScripts",
229
210
  "writeGeneratedWorkspaceScripts"
230
211
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
231
212
  Object.defineProperty(exports, '__esModule', {
@@ -0,0 +1,97 @@
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
+ __webpack_require__.d(__webpack_exports__, {
31
+ createWorkspaceValidationContract: ()=>createWorkspaceValidationContract
32
+ });
33
+ const external_api_cjs_namespaceObject = require("./api.cjs");
34
+ const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
35
+ const external_delivery_unit_cjs_namespaceObject = require("./delivery-unit.cjs");
36
+ const external_demo_components_cjs_namespaceObject = require("./demo-components.cjs");
37
+ const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
38
+ const external_naming_cjs_namespaceObject = require("./naming.cjs");
39
+ const external_policy_cjs_namespaceObject = require("./policy.cjs");
40
+ const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
41
+ const external_routes_cjs_namespaceObject = require("./routes.cjs");
42
+ const external_versions_cjs_namespaceObject = require("./versions.cjs");
43
+ const external_workspace_script_plan_cjs_namespaceObject = require("./workspace-script-plan.cjs");
44
+ function createWorkspaceValidationContract(scope, enableTailwind, remotes = []) {
45
+ const fullStackVerticals = remotes.filter(external_descriptors_cjs_namespaceObject.appHasApi).map((remote)=>({
46
+ id: remote.id,
47
+ domain: remote.domain,
48
+ stem: remote.api.stem,
49
+ group: (0, external_api_cjs_namespaceObject.verticalApiGroupName)(remote),
50
+ path: remote.directory,
51
+ port: remote.port,
52
+ mfName: remote.mfName,
53
+ apiPrefix: remote.api.prefix,
54
+ tailwindPrefix: (0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(remote),
55
+ zephyrAlias: (0, external_descriptors_cjs_namespaceObject.remoteDependencyAlias)(remote),
56
+ packageName: (0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix),
57
+ backendFederation: (0, external_backend_federation_cjs_namespaceObject.createBackendFederationMetadata)(scope, remote),
58
+ deliveryUnit: (0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, remote),
59
+ exposes: Object.keys(remote.exposes ?? {}),
60
+ componentPaths: Object.keys(remote.exposes ?? {}).map((expose)=>(0, external_demo_components_cjs_namespaceObject.remoteComponentOutputPath)(remote, expose)).filter((componentPath)=>Boolean(componentPath)),
61
+ namespace: (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(remote),
62
+ routePagePaths: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(remote).filter((route)=>'/' !== route.canonicalPath).map((route)=>(0, external_routes_cjs_namespaceObject.createRoutePageFilePath)(remote, route.canonicalPath)),
63
+ routeMetaPaths: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(remote).map((route)=>(0, external_routes_cjs_namespaceObject.createRouteMetaFilePath)(remote, route.canonicalPath)),
64
+ localisedUrls: (0, external_routes_cjs_namespaceObject.createLocalisedUrlsMap)(remote),
65
+ verticalRefs: remote.verticalRefs ?? []
66
+ }));
67
+ return {
68
+ packageScope: scope,
69
+ versions: {
70
+ cloudflareCompatibilityDate: external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE,
71
+ effect: external_versions_cjs_namespaceObject.EFFECT_VERSION,
72
+ moduleFederation: external_versions_cjs_namespaceObject.MODULE_FEDERATION_VERSION,
73
+ node: external_versions_cjs_namespaceObject.NODE_VERSION,
74
+ pnpm: external_versions_cjs_namespaceObject.PNPM_VERSION
75
+ },
76
+ tailwindEnabled: enableTailwind,
77
+ fullStackVerticals,
78
+ shellNamespace: (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(external_descriptors_cjs_namespaceObject.shellApp),
79
+ oldRemotePaths: [
80
+ 'apps/remotes'
81
+ ],
82
+ scripts: (0, external_workspace_script_plan_cjs_namespaceObject.createWorkspaceRootScriptPlan)(remotes),
83
+ packageScripts: (0, external_workspace_script_plan_cjs_namespaceObject.createWorkspaceRootPackageScripts)(remotes),
84
+ cloudflareSecurity: (0, external_policy_cjs_namespaceObject.createCloudflareSecurityContract)(),
85
+ publicSurfaceManagedSourceAssetPaths: [
86
+ ...external_public_surface_cjs_namespaceObject.publicSurfaceManagedSourceAssetPaths
87
+ ],
88
+ shellRouteMetaPaths: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(external_descriptors_cjs_namespaceObject.shellApp).map((route)=>(0, external_routes_cjs_namespaceObject.createRouteMetaFilePath)(external_descriptors_cjs_namespaceObject.shellApp, route.canonicalPath))
89
+ };
90
+ }
91
+ exports.createWorkspaceValidationContract = __webpack_exports__.createWorkspaceValidationContract;
92
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
93
+ "createWorkspaceValidationContract"
94
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
95
+ Object.defineProperty(exports, '__esModule', {
96
+ value: true
97
+ });
@@ -46,6 +46,7 @@ const external_node_fs_namespaceObject = require("node:fs");
46
46
  var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
47
47
  const external_api_cjs_namespaceObject = require("./api.cjs");
48
48
  const external_app_files_cjs_namespaceObject = require("./app-files.cjs");
49
+ const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
49
50
  const external_bridge_config_cjs_namespaceObject = require("./bridge-config.cjs");
50
51
  const external_contracts_cjs_namespaceObject = require("./contracts.cjs");
51
52
  const external_demo_components_cjs_namespaceObject = require("./demo-components.cjs");
@@ -61,6 +62,7 @@ const external_package_source_cjs_namespaceObject = require("./package-source.cj
61
62
  const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
62
63
  const external_versions_cjs_namespaceObject = require("./versions.cjs");
63
64
  const external_workspace_scripts_cjs_namespaceObject = require("./workspace-scripts.cjs");
65
+ const external_zerops_cjs_namespaceObject = require("./zerops.cjs");
64
66
  function writeApp(targetDir, scope, app, packageSource, enableTailwind, remotes = [], bridge) {
65
67
  const resolvedApp = 'shell' === app.kind ? (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes) : app;
66
68
  const publicWeb = (0, external_public_surface_cjs_namespaceObject.createPublicWebAppArtifacts)(resolvedApp);
@@ -76,7 +78,7 @@ function writeApp(targetDir, scope, app, packageSource, enableTailwind, remotes
76
78
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, publicWeb.jsonLdHelperFile.path, publicWeb.jsonLdHelperFile.content);
77
79
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, publicWeb.routeMetadataFile.path, publicWeb.routeMetadataFile.content);
78
80
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, publicWeb.routeHeadFile.path, publicWeb.routeHeadFile.content);
79
- (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/modern.config.ts`, (0, external_module_federation_cjs_namespaceObject.createAppModernConfig)(scope, resolvedApp));
81
+ (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/modern.config.ts`, (0, external_module_federation_cjs_namespaceObject.createAppModernConfig)(scope, resolvedApp, remotes));
80
82
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/modern.runtime.ts`, (0, external_app_files_cjs_namespaceObject.createAppRuntimeConfig)(resolvedApp, scope, remotes));
81
83
  (0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/locales/en/translation.json`, (0, external_locales_cjs_namespaceObject.createAppPublicLocaleMessages)(resolvedApp, 'en', remotes));
82
84
  (0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/locales/en/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(resolvedApp)}.json`, (0, external_locales_cjs_namespaceObject.createAppPublicLocaleMessages)(resolvedApp, 'en', remotes));
@@ -88,6 +90,7 @@ function writeApp(targetDir, scope, app, packageSource, enableTailwind, remotes
88
90
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/tailwind.config.ts`, (0, external_app_files_cjs_namespaceObject.createTailwindConfig)());
89
91
  }
90
92
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/module-federation.config.ts`, 'shell' === resolvedApp.kind ? (0, external_module_federation_cjs_namespaceObject.createShellModuleFederationConfig)(scope, remotes) : (0, external_module_federation_cjs_namespaceObject.createRemoteModuleFederationConfig)(scope, resolvedApp, remotes));
93
+ if ((0, external_descriptors_cjs_namespaceObject.appHasApi)(resolvedApp)) (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/backend-federation.config.ts`, (0, external_module_federation_cjs_namespaceObject.createBackendModuleFederationConfig)(resolvedApp));
91
94
  writeAppFile('src/routes/layout.tsx', (0, external_demo_components_cjs_namespaceObject.createLayout)(resolvedApp.id));
92
95
  writeAppFile('src/routes/[lang]/page.tsx', 'shell' === resolvedApp.kind ? (0, external_demo_components_cjs_namespaceObject.createShellPage)(remotes) : (0, external_demo_components_cjs_namespaceObject.createRemotePage)(resolvedApp));
93
96
  for (const generatedFile of publicWeb.routeMetaFiles)(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, generatedFile.path, generatedFile.content);
@@ -100,6 +103,8 @@ function writeApp(targetDir, scope, app, packageSource, enableTailwind, remotes
100
103
  if ((0, external_descriptors_cjs_namespaceObject.appHasApi)(resolvedApp)) {
101
104
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/shared/api.ts`, (0, external_api_cjs_namespaceObject.createSharedApi)(resolvedApp));
102
105
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/api/index.ts`, (0, external_api_cjs_namespaceObject.createApiServiceEntry)(resolvedApp, '../shared/api.ts'));
106
+ (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/api/backend-federation.ts`, (0, external_backend_federation_cjs_namespaceObject.createBackendFederationContractFile)(resolvedApp));
107
+ (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/api/effect-api.ts`, (0, external_api_cjs_namespaceObject.createBackendEffectApiExpose)(scope, resolvedApp));
103
108
  (0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/api/${resolvedApp.api.stem}-client.ts`, (0, external_api_cjs_namespaceObject.createApiClient)(resolvedApp, '../../shared/api'));
104
109
  }
105
110
  if ('vertical' === resolvedApp.kind) {
@@ -149,7 +154,7 @@ function writePnpmWorkspacePackages(targetDir, bridge) {
149
154
  ...bridge.workspacePackages.map((entry)=>entry.pattern)
150
155
  ];
151
156
  const renderedPackages = packages.map((pattern)=>` - ${pattern}`).join('\n');
152
- (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, 'pnpm-workspace.yaml', pnpmWorkspace.replace(/^packages:\n(?: {2}- .+\n)+/u, `packages:\n${renderedPackages}\n`));
157
+ (0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, 'pnpm-workspace.yaml', pnpmWorkspace.replace(/^packages:\r?\n(?: {2}- .+\r?\n)+/u, `packages:\n${renderedPackages}\n`));
153
158
  }
154
159
  function generateUltramodernWorkspace(options) {
155
160
  const beforeFiles = (0, external_generation_result_cjs_namespaceObject.createFileSnapshot)(options.targetDir);
@@ -186,11 +191,12 @@ function generateUltramodernWorkspace(options) {
186
191
  });
187
192
  writePnpmWorkspacePackages(options.targetDir, bridge);
188
193
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'package.json', createCompactRootPackageJson(scope, packageSource, initialVerticals, bridge));
194
+ (0, external_fs_io_cjs_namespaceObject.writeFile)(options.targetDir, 'zerops.yaml', `${(0, external_zerops_cjs_namespaceObject.createZeropsYaml)(scope, createdApps)}\n`);
189
195
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'tsconfig.base.json', (0, external_package_json_cjs_namespaceObject.createTsConfigBase)());
190
196
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'tsconfig.json', (0, external_package_json_cjs_namespaceObject.createRootTsConfig)(createdApps));
191
197
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/reference-topology.json', (0, external_contracts_cjs_namespaceObject.createTopology)(scope, initialVerticals));
192
198
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/ownership.json', (0, external_contracts_cjs_namespaceObject.createOwnership)(scope, initialVerticals));
193
- (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/local-overlays/development.json', (0, external_contracts_cjs_namespaceObject.createDevelopmentOverlay)(initialVerticals));
199
+ (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/local-overlays/development.json', (0, external_contracts_cjs_namespaceObject.createDevelopmentOverlay)(scope, initialVerticals));
194
200
  (0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH, createCompactUltramodernConfig(scope, options.modernVersion, packageSource, createdApps, enableTailwind, bridge));
195
201
  writeApp(options.targetDir, scope, external_descriptors_cjs_namespaceObject.shellApp, packageSource, enableTailwind, initialVerticals, bridge);
196
202
  for (const remote of initialVerticals)writeApp(options.targetDir, scope, remote, packageSource, enableTailwind, initialVerticals, bridge);
@@ -0,0 +1,100 @@
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
+ __webpack_require__.d(__webpack_exports__, {
31
+ createZeropsYaml: ()=>createZeropsYaml
32
+ });
33
+ const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
34
+ const external_naming_cjs_namespaceObject = require("./naming.cjs");
35
+ const external_versions_cjs_namespaceObject = require("./versions.cjs");
36
+ const zeropsNodeRuntime = `nodejs@${external_versions_cjs_namespaceObject.NODE_VERSION.split('.')[0]}`;
37
+ function quoteYamlString(value) {
38
+ return `'${value.replace(/'/gu, "''")}'`;
39
+ }
40
+ function readinessPath(app) {
41
+ if (!(0, external_descriptors_cjs_namespaceObject.appHasApi)(app)) return '/';
42
+ return `${(0, external_descriptors_cjs_namespaceObject.resolveApiPrefix)(app)}/${(0, external_descriptors_cjs_namespaceObject.resolveApiStem)(app)}/readiness`;
43
+ }
44
+ function createZeropsService(scope, app) {
45
+ const runtimeDirectory = `.zerops/runtime/${app.id}`;
46
+ const appPackageName = (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix);
47
+ const commands = [
48
+ 'curl https://mise.run | sh',
49
+ '~/.local/bin/mise install',
50
+ '~/.local/bin/mise exec -- pnpm install --frozen-lockfile',
51
+ `~/.local/bin/mise exec -- pnpm --filter ${appPackageName} run build`,
52
+ `~/.local/bin/mise exec -- pnpm run zerops:materialize -- --app ${app.id} --package ${appPackageName} --package-dir ${app.directory}`,
53
+ `cp topology/reference-topology.json ${runtimeDirectory}/topology.json`,
54
+ `cp topology/local-overlays/development.json ${runtimeDirectory}/local-overlay.json`
55
+ ];
56
+ return [
57
+ ` - setup: ${app.id}`,
58
+ ' build:',
59
+ ` base: ${zeropsNodeRuntime}`,
60
+ ' buildCommands:',
61
+ ' - |',
62
+ ...commands.map((command)=>` ${command}`),
63
+ ' deployFiles:',
64
+ ` - ${runtimeDirectory}`,
65
+ ' deploy:',
66
+ ' temporaryShutdown: false',
67
+ ' readinessCheck:',
68
+ ' httpGet:',
69
+ ` port: ${app.port}`,
70
+ ` path: ${readinessPath(app)}`,
71
+ ' failureTimeout: 120',
72
+ ' retryPeriod: 10',
73
+ ' run:',
74
+ ` base: ${zeropsNodeRuntime}`,
75
+ ' ports:',
76
+ ` - port: ${app.port}`,
77
+ ' protocol: TCP',
78
+ ' httpSupport: true',
79
+ ' envVariables:',
80
+ ' NODE_ENV: production',
81
+ ` ${app.portEnv}: ${quoteYamlString(String(app.port))}`,
82
+ ` ULTRAMODERN_ZEROPS_SERVICE: ${quoteYamlString(app.id)}`,
83
+ ` start: cd ${runtimeDirectory} && npm run serve`
84
+ ].join('\n');
85
+ }
86
+ function createZeropsYaml(scope, apps) {
87
+ return [
88
+ '# Generated by Modern.js UltraModern workspace tooling.',
89
+ '# Zerops runs each full-stack MicroVertical as a package-owned Node service.',
90
+ 'zerops:',
91
+ ...apps.map((app)=>createZeropsService(scope, app))
92
+ ].join('\n\n');
93
+ }
94
+ exports.createZeropsYaml = __webpack_exports__.createZeropsYaml;
95
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
96
+ "createZeropsYaml"
97
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
98
+ Object.defineProperty(exports, '__esModule', {
99
+ value: true
100
+ });