@bleedingdev/modern-js-create 3.4.0-ultramodern.2 → 3.4.0-ultramodern.20

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 (128) hide show
  1. package/README.md +13 -11
  2. package/dist/cjs/index.cjs +37 -4
  3. package/dist/cjs/locale/en.cjs +12 -2
  4. package/dist/cjs/locale/zh.cjs +12 -2
  5. package/dist/cjs/ultramodern-tooling/commands.cjs +185 -0
  6. package/dist/cjs/ultramodern-tooling/config.cjs +172 -0
  7. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +79 -61
  8. package/dist/cjs/ultramodern-workspace/bridge-config.cjs +327 -0
  9. package/dist/cjs/ultramodern-workspace/codesmith.cjs +1 -0
  10. package/dist/cjs/ultramodern-workspace/contracts.cjs +121 -648
  11. package/dist/cjs/ultramodern-workspace/demo-components.cjs +26 -33
  12. package/dist/cjs/ultramodern-workspace/descriptors.cjs +4 -4
  13. package/dist/cjs/ultramodern-workspace/effect-api.cjs +230 -100
  14. package/dist/cjs/ultramodern-workspace/fs-io.cjs +117 -0
  15. package/dist/cjs/ultramodern-workspace/generation-result.cjs +1 -1
  16. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  17. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +571 -0
  18. package/dist/cjs/ultramodern-workspace/module-federation.cjs +51 -20
  19. package/dist/cjs/ultramodern-workspace/package-json.cjs +62 -19
  20. package/dist/cjs/ultramodern-workspace/policy.cjs +2 -2
  21. package/dist/cjs/ultramodern-workspace/public-api.cjs +4 -0
  22. package/dist/cjs/ultramodern-workspace/versions.cjs +5 -0
  23. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +80 -43
  24. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +63 -20
  25. package/dist/esm/index.js +37 -4
  26. package/dist/esm/locale/en.js +12 -2
  27. package/dist/esm/locale/zh.js +12 -2
  28. package/dist/esm/ultramodern-tooling/commands.js +132 -0
  29. package/dist/esm/ultramodern-tooling/config.js +120 -0
  30. package/dist/esm/ultramodern-workspace/add-vertical.js +81 -66
  31. package/dist/esm/ultramodern-workspace/bridge-config.js +270 -0
  32. package/dist/esm/ultramodern-workspace/codesmith.js +1 -0
  33. package/dist/esm/ultramodern-workspace/contracts.js +124 -603
  34. package/dist/esm/ultramodern-workspace/demo-components.js +26 -33
  35. package/dist/esm/ultramodern-workspace/descriptors.js +2 -2
  36. package/dist/esm/ultramodern-workspace/effect-api.js +230 -100
  37. package/dist/esm/ultramodern-workspace/fs-io.js +116 -2
  38. package/dist/esm/ultramodern-workspace/generation-result.js +2 -2
  39. package/dist/esm/ultramodern-workspace/index.js +1 -0
  40. package/dist/esm/ultramodern-workspace/mf-validation.js +516 -0
  41. package/dist/esm/ultramodern-workspace/module-federation.js +49 -21
  42. package/dist/esm/ultramodern-workspace/package-json.js +60 -20
  43. package/dist/esm/ultramodern-workspace/policy.js +2 -2
  44. package/dist/esm/ultramodern-workspace/public-api.js +1 -0
  45. package/dist/esm/ultramodern-workspace/versions.js +3 -1
  46. package/dist/esm/ultramodern-workspace/workspace-scripts.js +78 -26
  47. package/dist/esm/ultramodern-workspace/write-workspace.js +67 -27
  48. package/dist/esm-node/index.js +37 -4
  49. package/dist/esm-node/locale/en.js +12 -2
  50. package/dist/esm-node/locale/zh.js +12 -2
  51. package/dist/esm-node/ultramodern-tooling/commands.js +133 -0
  52. package/dist/esm-node/ultramodern-tooling/config.js +121 -0
  53. package/dist/esm-node/ultramodern-workspace/add-vertical.js +81 -66
  54. package/dist/esm-node/ultramodern-workspace/bridge-config.js +271 -0
  55. package/dist/esm-node/ultramodern-workspace/codesmith.js +1 -0
  56. package/dist/esm-node/ultramodern-workspace/contracts.js +124 -603
  57. package/dist/esm-node/ultramodern-workspace/demo-components.js +26 -33
  58. package/dist/esm-node/ultramodern-workspace/descriptors.js +2 -2
  59. package/dist/esm-node/ultramodern-workspace/effect-api.js +230 -100
  60. package/dist/esm-node/ultramodern-workspace/fs-io.js +116 -2
  61. package/dist/esm-node/ultramodern-workspace/generation-result.js +2 -2
  62. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  63. package/dist/esm-node/ultramodern-workspace/mf-validation.js +517 -0
  64. package/dist/esm-node/ultramodern-workspace/module-federation.js +49 -21
  65. package/dist/esm-node/ultramodern-workspace/package-json.js +60 -20
  66. package/dist/esm-node/ultramodern-workspace/policy.js +2 -2
  67. package/dist/esm-node/ultramodern-workspace/public-api.js +1 -0
  68. package/dist/esm-node/ultramodern-workspace/versions.js +3 -1
  69. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +78 -26
  70. package/dist/esm-node/ultramodern-workspace/write-workspace.js +67 -27
  71. package/dist/types/locale/en.d.ts +10 -0
  72. package/dist/types/locale/index.d.ts +20 -0
  73. package/dist/types/locale/zh.d.ts +10 -0
  74. package/dist/types/ultramodern-tooling/commands.d.ts +1 -0
  75. package/dist/types/ultramodern-tooling/config.d.ts +43 -0
  76. package/dist/types/ultramodern-workspace/add-vertical.d.ts +5 -2
  77. package/dist/types/ultramodern-workspace/bridge-config.d.ts +64 -0
  78. package/dist/types/ultramodern-workspace/codesmith.d.ts +1 -0
  79. package/dist/types/ultramodern-workspace/contracts.d.ts +2 -17
  80. package/dist/types/ultramodern-workspace/descriptors.d.ts +1 -1
  81. package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -0
  82. package/dist/types/ultramodern-workspace/index.d.ts +2 -0
  83. package/dist/types/ultramodern-workspace/mf-validation.d.ts +27 -0
  84. package/dist/types/ultramodern-workspace/module-federation.d.ts +1 -0
  85. package/dist/types/ultramodern-workspace/package-json.d.ts +5 -3
  86. package/dist/types/ultramodern-workspace/public-api.d.ts +2 -0
  87. package/dist/types/ultramodern-workspace/types.d.ts +2 -0
  88. package/dist/types/ultramodern-workspace/versions.d.ts +2 -0
  89. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +2 -7
  90. package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -2
  91. package/package.json +5 -3
  92. package/template-workspace/{.agents → .codex}/skills-lock.json +12 -12
  93. package/template-workspace/.gitignore.handlebars +3 -0
  94. package/template-workspace/AGENTS.md.handlebars +11 -5
  95. package/template-workspace/README.md.handlebars +15 -12
  96. package/template-workspace/oxfmt.config.ts +1 -0
  97. package/template-workspace/oxlint.config.ts +1 -0
  98. package/template-workspace/patches/@tanstack__router-core@1.171.13.patch +51 -0
  99. package/template-workspace/pnpm-workspace.yaml.handlebars +12 -0
  100. package/template-workspace/scripts/bootstrap-agent-skills.mjs +96 -69
  101. package/templates/app/shell-frame.tsx +1 -2
  102. package/templates/app/ultramodern-route-head.tsx.handlebars +5 -6
  103. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +59 -7
  104. package/templates/workspace-scripts/check-ultramodern-api-boundaries.mjs +339 -0
  105. package/templates/workspace-scripts/generate-public-surface-assets.mjs +245 -8
  106. package/templates/workspace-scripts/proof-cloudflare-version.mjs +276 -8
  107. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +35 -10
  108. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +164 -1
  109. package/templates/workspace-scripts/ultramodern-typecheck.mjs +4 -2
  110. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +949 -63
  111. /package/template-workspace/{.agents → .codex}/rstackjs-agent-skills-LICENSE +0 -0
  112. /package/template-workspace/{.agents → .codex}/skills/rsbuild-best-practices/SKILL.md +0 -0
  113. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/SKILL.md +0 -0
  114. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/command-map.md +0 -0
  115. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/common-analysis-patterns.md +0 -0
  116. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-common.md +0 -0
  117. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-rspack.md +0 -0
  118. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-webpack.md +0 -0
  119. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor.md +0 -0
  120. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/rsdoctor-data-types.md +0 -0
  121. /package/template-workspace/{.agents → .codex}/skills/rslib-best-practices/SKILL.md +0 -0
  122. /package/template-workspace/{.agents → .codex}/skills/rslib-modern-package/SKILL.md +0 -0
  123. /package/template-workspace/{.agents → .codex}/skills/rspack-best-practices/SKILL.md +0 -0
  124. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/SKILL.md +0 -0
  125. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/bottlenecks.md +0 -0
  126. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/tracing-guide.md +0 -0
  127. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/scripts/analyze_trace.js +0 -0
  128. /package/template-workspace/{.agents → .codex}/skills/rstest-best-practices/SKILL.md +0 -0
@@ -28,56 +28,16 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- baselineAgentSkills: ()=>baselineAgentSkills,
32
- createAppConfigContract: ()=>createAppConfigContract,
33
- createAppCssFederationContract: ()=>createAppCssFederationContract,
34
- createAppGeneratedContract: ()=>createAppGeneratedContract,
35
- createCssDedupeContract: ()=>createCssDedupeContract,
36
- createCssFederationContract: ()=>createCssFederationContract,
37
- createCssSsrContract: ()=>createCssSsrContract,
38
31
  createDevelopmentOverlay: ()=>createDevelopmentOverlay,
39
- createGeneratedContract: ()=>createGeneratedContract,
40
32
  createOwnership: ()=>createOwnership,
41
- createPackageSourceMetadata: ()=>createPackageSourceMetadata,
42
- createPerformanceReadinessContract: ()=>createPerformanceReadinessContract,
43
- createStylingContract: ()=>createStylingContract,
44
- createTemplateManifest: ()=>createTemplateManifest,
45
33
  createTopology: ()=>createTopology,
46
- cssClassPrefix: ()=>cssClassPrefix,
47
- cssLayerName: ()=>cssLayerName,
48
- cssRole: ()=>cssRole,
49
- moduleFederationAgentSkills: ()=>moduleFederationAgentSkills,
50
- privateAgentSkills: ()=>privateAgentSkills
34
+ createUltramodernConfig: ()=>createUltramodernConfig
51
35
  });
52
- const external_ultramodern_package_source_cjs_namespaceObject = require("../ultramodern-package-source.cjs");
53
36
  const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
54
37
  const external_effect_api_cjs_namespaceObject = require("./effect-api.cjs");
55
- const external_fs_io_cjs_namespaceObject = require("./fs-io.cjs");
56
- const external_module_federation_cjs_namespaceObject = require("./module-federation.cjs");
57
38
  const external_naming_cjs_namespaceObject = require("./naming.cjs");
58
39
  const external_policy_cjs_namespaceObject = require("./policy.cjs");
59
- const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
60
- const external_routes_cjs_namespaceObject = require("./routes.cjs");
61
40
  const external_versions_cjs_namespaceObject = require("./versions.cjs");
62
- const baselineAgentSkills = [
63
- 'rsbuild-best-practices',
64
- 'rspack-best-practices',
65
- 'rspack-tracing',
66
- 'rsdoctor-analysis',
67
- 'rslib-best-practices',
68
- 'rslib-modern-package',
69
- 'rstest-best-practices'
70
- ];
71
- const moduleFederationAgentSkills = [
72
- 'mf'
73
- ];
74
- const privateAgentSkills = [
75
- 'plan-graph',
76
- 'dag',
77
- 'subagent-graph',
78
- 'helm',
79
- 'debugger-mode'
80
- ];
81
41
  function createTopology(scope, remotes = []) {
82
42
  const shellHost = (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes);
83
43
  return {
@@ -135,6 +95,7 @@ function createTopology(scope, remotes = []) {
135
95
  script: "scripts/validate-ultramodern-workspace.mjs",
136
96
  commands: [
137
97
  'pnpm i18n:boundaries',
98
+ 'pnpm api:check',
138
99
  'pnpm contract:check'
139
100
  ]
140
101
  }
@@ -195,642 +156,154 @@ function createDevelopmentOverlay(remotes = []) {
195
156
  ]))
196
157
  };
197
158
  }
198
- function createPackageSourceMetadata(scope, packageSource) {
199
- return {
200
- schemaVersion: 1,
201
- strategy: packageSource.strategy,
202
- modernPackages: (0, external_ultramodern_package_source_cjs_namespaceObject.createModernPackagesMetadata)(external_ultramodern_package_source_cjs_namespaceObject.ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, packageSource),
203
- generatedWorkspacePackages: {
204
- packages: external_descriptors_cjs_namespaceObject.sharedPackages.map((sharedPackage)=>(0, external_naming_cjs_namespaceObject.packageName)(scope, sharedPackage.id)),
205
- specifier: external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION
206
- },
207
- validation: {
208
- validator: "scripts/validate-ultramodern-workspace.mjs",
209
- strategyAwareChecks: [
210
- 'generated-validator'
211
- ]
212
- }
213
- };
214
- }
215
- function createAppConfigContract(app) {
216
- return {
217
- preset: 'presetUltramodern',
218
- plugins: [
219
- 'appTools',
220
- 'tanstackRouterPlugin',
221
- 'i18nPlugin',
222
- ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? [
223
- 'bffPlugin'
224
- ] : [],
225
- 'moduleFederationPlugin',
226
- 'zephyrRspackPlugin'
227
- ],
228
- dev: {
229
- assetPrefix: '/'
230
- },
231
- output: {
232
- assetPrefix: {
233
- envFallbackOrder: [
234
- 'MODERN_ASSET_PREFIX',
235
- 'ULTRAMODERN_ASSET_PREFIX'
236
- ],
237
- default: '/'
238
- },
239
- disableTsChecker: false,
240
- distPath: {
241
- html: './'
242
- },
243
- polyfill: 'off',
244
- splitRouteChunks: true
245
- },
246
- performance: {
247
- readinessDiagnostics: {
248
- default: 'enabled',
249
- optOut: {
250
- env: 'ULTRAMODERN_PERFORMANCE_READINESS_DIAGNOSTICS=false',
251
- config: "scripts/ultramodern-performance-readiness.config.mjs"
252
- },
253
- report: '.codex/reports/performance-readiness/ultramodern-performance-readiness.json',
254
- failOn: 'framework-invariant'
255
- },
256
- rsdoctor: {
257
- enabledByEnv: 'ULTRAMODERN_RSDOCTOR=true',
258
- disableClientServer: true
259
- }
260
- },
261
- rspack: {
262
- output: {
263
- uniqueName: (0, external_naming_cjs_namespaceObject.createRspackUniqueName)(app),
264
- chunkLoadingGlobal: (0, external_naming_cjs_namespaceObject.createRspackChunkLoadingGlobal)(app)
265
- }
266
- },
267
- html: {
268
- outputStructure: 'flat'
269
- },
270
- source: {
271
- mainEntryName: 'index',
272
- siteUrl: {
273
- envFallbackOrder: [
274
- 'MODERN_PUBLIC_SITE_URL',
275
- (0, external_descriptors_cjs_namespaceObject.createCloudflarePublicUrlEnv)(app),
276
- 'ULTRAMODERN_CLOUDFLARE_WORKERS_DEV_SUBDOMAIN',
277
- app.portEnv
278
- ],
279
- defaultLocalhostPort: app.port
280
- },
281
- siteUrlGlobal: 'ULTRAMODERN_SITE_URL'
282
- },
283
- ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
284
- bff: {
285
- runtimeFramework: 'effect',
286
- prefix: app.effectApi.prefix,
287
- openapi: '/openapi.json'
288
- }
289
- } : {}
290
- };
291
- }
292
- function createPerformanceReadinessContract() {
159
+ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
160
+ (0, external_descriptors_cjs_namespaceObject.createShellHost)()
161
+ ], enableTailwind = true, bridge) {
162
+ const remotes = apps.filter((app)=>'shell' !== app.kind);
163
+ const shellHost = (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes);
293
164
  return {
294
165
  schemaVersion: 1,
295
- default: 'enabled',
296
- mode: 'diagnostic',
297
- scope: 'ultramodern-generated-and-framework-owned',
298
- report: {
299
- script: "scripts/ultramodern-performance-readiness.mjs",
300
- config: "scripts/ultramodern-performance-readiness.config.mjs",
301
- defaultPath: '.codex/reports/performance-readiness/ultramodern-performance-readiness.json',
302
- deterministic: true
303
- },
304
- optOut: {
305
- env: 'ULTRAMODERN_PERFORMANCE_READINESS_DIAGNOSTICS=false',
306
- config: {
307
- path: "scripts/ultramodern-performance-readiness.config.mjs",
308
- field: 'enabled',
309
- value: false
310
- }
311
- },
312
- failurePolicy: {
313
- defaultFailOn: 'framework-invariant',
314
- allowedValues: [
315
- 'framework-invariant',
316
- 'never'
317
- ],
318
- rejects: [
319
- 'accessibility-certification',
320
- 'product-ui-scoring',
321
- 'marketing-copy-scoring',
322
- 'broad-compliance-engine',
323
- 'rsdoctor-artifact-revival'
324
- ]
166
+ profile: 'cloudflare-ssr-mf-effect-v1',
167
+ generator: {
168
+ package: '@modern-js/create',
169
+ version: modernVersion
325
170
  },
326
- signals: [
327
- {
328
- id: 'bfcache',
329
- title: 'BFCache diagnostics',
330
- ownedCheck: 'generated-runtime-static-analysis',
331
- invariant: 'Generated UltraModern files must not install beforeunload or unload handlers.'
332
- },
333
- {
334
- id: 'core-web-vitals-rum',
335
- title: 'Core Web Vitals/RUM readiness',
336
- ownedCheck: 'preset-telemetry-contract',
337
- invariant: 'UltraModern preset telemetry must remain enabled by default without requiring local collectors.'
171
+ workspace: {
172
+ packageScope: scope,
173
+ packageManager: {
174
+ name: 'pnpm',
175
+ version: external_versions_cjs_namespaceObject.PNPM_VERSION
338
176
  },
339
- {
340
- id: 'duplicate-prefetch-warmup',
341
- title: 'Duplicate prefetch/warmup waste',
342
- ownedCheck: 'topology-and-route-contract',
343
- invariant: 'Generated route URLs, remote refs, and manifest URLs must stay deterministic and duplicate-free.'
344
- },
345
- {
346
- id: 'cache-policy-sanity',
347
- title: 'Cache policy sanity',
348
- ownedCheck: 'generated-cloudflare-contract',
349
- invariant: 'Generated Cloudflare contracts must retain CSS cache-control and public-surface cache expectations.'
350
- },
351
- {
352
- id: 'save-data-behavior',
353
- title: 'Save-Data behavior',
354
- ownedCheck: 'framework-router-contract',
355
- invariant: 'Automatic framework warmup must remain skippable by browser Save-Data policy.'
356
- },
357
- {
358
- id: 'cloudflare-ssr-cache-hints',
359
- title: 'Cloudflare SSR response and caching hints',
360
- ownedCheck: 'generated-cloudflare-proof-contract',
361
- invariant: 'Generated Cloudflare SSR proof routes and response/cache hint contracts must be present.'
177
+ node: {
178
+ version: external_versions_cjs_namespaceObject.NODE_VERSION,
179
+ engineRange: '>=26'
362
180
  }
363
- ]
364
- };
365
- }
366
- function cssLayerName(app) {
367
- if ('shell' === app.kind) return 'ultramodern-shell-base';
368
- return `ultramodern-vertical-${app.domain ?? app.id}`;
369
- }
370
- function cssRole(app) {
371
- if ('shell' === app.kind) return 'shell-base-overlay';
372
- return 'vertical-css';
373
- }
374
- function cssClassPrefix(app) {
375
- return `${(0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(app)}:`;
376
- }
377
- function createCssDedupeContract(scope) {
378
- return {
379
- strategy: 'shared-token-package-plus-css-content-hash',
380
- sharedPackage: (0, external_naming_cjs_namespaceObject.packageName)(scope, 'shared-design-tokens'),
381
- sharedLayers: [
382
- 'ultramodern-shared-tokens'
383
- ],
384
- runtimeLoad: 'once-per-content-hash',
385
- duplicateBaseStylesAllowed: false
386
- };
387
- }
388
- function createCssSsrContract(app) {
389
- return {
390
- cloudflare: true,
391
- firstPaintRequired: true,
392
- linkEmission: 'modern-ssr-css-assets',
393
- verticalCss: 'shell' === app.kind ? 'host-preloads-shell-and-shared-css' : 'federated-manifest-owned-css'
394
- };
395
- }
396
- function createAppCssFederationContract(scope, app) {
397
- const ownedLayers = 'shell' === app.kind ? [
398
- 'ultramodern-shell-base',
399
- 'ultramodern-shell-overlay'
400
- ] : [
401
- cssLayerName(app)
402
- ];
403
- return {
404
- owner: {
405
- id: app.id,
406
- package: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
407
- team: app.ownership.team
408
181
  },
409
- role: cssRole(app),
410
- rootSelector: `[data-app-id="${app.id}"]`,
411
- classPrefix: cssClassPrefix(app),
412
- layers: {
413
- shared: [
414
- 'ultramodern-shared-tokens'
415
- ],
416
- owned: ownedLayers,
417
- imports: 'shell' === app.kind ? [
418
- 'ultramodern-shared-tokens'
419
- ] : [
420
- 'ultramodern-shared-tokens'
421
- ]
422
- },
423
- entrypoints: {
424
- layoutImport: 'src/routes/layout.tsx',
425
- css: [
426
- 'src/routes/index.css'
427
- ],
428
- ...'shell' !== app.kind ? {
429
- federationEntry: 'src/federation-entry.tsx'
182
+ packageSource: {
183
+ strategy: packageSource.strategy,
184
+ modernPackageVersion: packageSource.modernPackageVersion,
185
+ ...packageSource.registry ? {
186
+ registry: packageSource.registry
187
+ } : {},
188
+ ...packageSource.aliasScope ? {
189
+ aliasScope: packageSource.aliasScope
190
+ } : {},
191
+ ...packageSource.aliasPackageNamePrefix ? {
192
+ aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
430
193
  } : {}
431
194
  },
432
- assets: {
433
- shared: [
434
- `${(0, external_naming_cjs_namespaceObject.packageName)(scope, 'shared-design-tokens')}/tokens.css`
435
- ],
436
- owned: [
437
- 'src/routes/index.css'
438
- ],
439
- emittedBy: 'modern-rspack-css-extraction',
440
- contentHash: true
195
+ features: {
196
+ tailwind: enableTailwind
441
197
  },
442
- dedupe: createCssDedupeContract(scope),
443
- ssr: createCssSsrContract(app)
444
- };
445
- }
446
- function createCssFederationContract(scope) {
447
- return {
448
- schemaVersion: 1,
449
- sharedDesignTokens: {
450
- owner: {
451
- id: 'shared-design-tokens',
452
- package: (0, external_naming_cjs_namespaceObject.packageName)(scope, 'shared-design-tokens'),
453
- team: 'super-app-platform'
454
- },
455
- role: 'shared-design-tokens',
456
- rootSelector: ':root',
457
- classPrefix: '--um-',
458
- layers: {
459
- owned: [
460
- 'ultramodern-shared-tokens'
461
- ]
462
- },
463
- entrypoints: {
464
- css: [
465
- 'packages/shared-design-tokens/src/tokens.css'
466
- ],
467
- typescript: [
468
- 'packages/shared-design-tokens/src/index.ts'
469
- ]
470
- },
471
- assets: {
472
- exports: [
473
- './tokens.css'
474
- ],
475
- css: [
476
- 'packages/shared-design-tokens/src/tokens.css'
477
- ]
478
- },
479
- dedupe: createCssDedupeContract(scope),
480
- ssr: {
481
- cloudflare: true,
482
- firstPaintRequired: true,
483
- importedByApps: true
484
- }
198
+ topology: {
199
+ source: './topology/reference-topology.json',
200
+ apps: apps.map((app)=>({
201
+ id: app.id,
202
+ kind: app.kind,
203
+ package: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
204
+ packageSuffix: app.packageSuffix,
205
+ displayName: app.displayName,
206
+ path: app.directory,
207
+ ...app.domain ? {
208
+ domain: app.domain
209
+ } : {},
210
+ port: app.port,
211
+ portEnv: app.portEnv,
212
+ moduleFederation: {
213
+ role: 'shell' === app.kind ? 'host' : 'remote',
214
+ name: app.mfName,
215
+ exposes: Object.keys(app.exposes ?? {}),
216
+ ...'shell' === app.kind ? {
217
+ verticalRefs: shellHost.verticalRefs,
218
+ remotes: (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(shellHost, remotes)
219
+ } : app.verticalRefs?.length ? {
220
+ verticalRefs: app.verticalRefs,
221
+ remotes: (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(app, remotes)
222
+ } : {},
223
+ ssr: true,
224
+ dts: {
225
+ compilerInstance: 'tsgo',
226
+ tsConfigPath: './tsconfig.mf-types.json'
227
+ }
228
+ },
229
+ ...app.effectApi ? {
230
+ effectApi: {
231
+ stem: app.effectApi.stem,
232
+ prefix: app.effectApi.prefix,
233
+ consumedBy: app.effectApi.consumedBy
234
+ }
235
+ } : {}
236
+ }))
485
237
  },
486
- ownershipRules: {
487
- shell: [
488
- 'base',
489
- 'overlay'
490
- ],
491
- verticals: [
492
- 'vertical-css'
493
- ],
494
- forbiddenVerticalLayers: [
495
- 'ultramodern-shell-base',
496
- 'ultramodern-shell-overlay'
238
+ bridge: bridge ?? {
239
+ enabled: false,
240
+ workspacePackages: [],
241
+ dependencies: [],
242
+ lockfilePolicy: 'nested',
243
+ gates: [],
244
+ reactSingletons: [
245
+ 'react',
246
+ 'react-dom'
497
247
  ]
498
- }
499
- };
500
- }
501
- function createStylingContract(scope, app, enableTailwind) {
502
- return {
503
- tailwind: enableTailwind,
504
- ...enableTailwind ? {
505
- postcssPlugins: [
506
- '@tailwindcss/postcss'
507
- ],
508
- prefix: (0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(app),
509
- source: '..',
510
- sourceMode: 'source(none)'
511
- } : {},
512
- federation: createAppCssFederationContract(scope, app)
513
- };
514
- }
515
- function createAppGeneratedContract(scope, app, apps, enableTailwind) {
516
- const appWithResolvedRefs = 'shell' === app.kind ? {
517
- ...app,
518
- verticalRefs: apps.filter((candidate)=>'shell' !== candidate.kind).map((candidate)=>candidate.id)
519
- } : app;
520
- const publicWeb = (0, external_public_surface_cjs_namespaceObject.createPublicWebAppArtifacts)(app);
521
- const consumedRemotes = (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(appWithResolvedRefs, apps);
522
- return {
523
- id: app.id,
524
- package: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
525
- path: app.directory,
526
- kind: app.kind,
527
- config: createAppConfigContract(app),
528
- styling: createStylingContract(scope, app, enableTailwind),
248
+ },
529
249
  deploy: {
530
- target: 'cloudflare',
531
- cloudflare: (0, external_policy_cjs_namespaceObject.createCloudflareDeployContract)(scope, app),
532
250
  worker: {
533
- compatibilityDate: external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE,
534
- name: (0, external_descriptors_cjs_namespaceObject.createCloudflareWorkerName)(scope, app),
535
- security: (0, external_policy_cjs_namespaceObject.createCloudflareSecurityContract)(),
536
- ssr: true
537
- },
538
- output: {
539
- flat: true,
540
- htmlDistPath: './'
541
- }
542
- },
543
- ssr: {
544
- mode: 'string',
545
- moduleFederationAppSSR: true
546
- },
547
- i18n: {
548
- plugin: '@modern-js/plugin-i18n',
549
- backend: {
550
- enabled: true,
551
- loadPath: '/locales/{{lng}}/{{ns}}.json'
552
- },
553
- reactI18next: false,
554
- languages: [
555
- 'en',
556
- 'cs'
557
- ],
558
- fallbackLanguage: 'en',
559
- namespace: (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app),
560
- namespaces: [
561
- (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app),
562
- 'translation'
563
- ],
564
- publicDir: [
565
- './locales',
566
- './assets'
567
- ],
568
- localisedUrls: (0, external_routes_cjs_namespaceObject.createLocalisedUrlsMap)(app),
569
- resourceOwnership: {
570
- ownerAppId: app.id,
571
- source: 'route-owned',
572
- staticJson: `./locales/{lng}/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app)}.json`
573
- }
574
- },
575
- routes: {
576
- source: 'route-owned',
577
- metadataAuthoring: 'colocated-route-meta',
578
- generatedManifest: true,
579
- metadataExport: './src/routes/ultramodern-route-metadata',
580
- localisedUrls: (0, external_routes_cjs_namespaceObject.createLocalisedUrlsMap)(app),
581
- owned: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(app),
582
- publicRoutes: (0, external_routes_cjs_namespaceObject.createPublicRouteMetadata)(app),
583
- privateByDefault: true,
584
- publicnessDefault: 'private-app-screen',
585
- generatedRouteMap: true,
586
- manualOverrides: [],
587
- publicHead: publicWeb.publicHead,
588
- publicSurface: publicWeb.publicSurface
589
- },
590
- moduleFederation: {
591
- name: app.mfName,
592
- ...appWithResolvedRefs.verticalRefs?.length ? {
593
- verticalRefs: appWithResolvedRefs.verticalRefs,
594
- remotes: consumedRemotes
595
- } : {},
596
- exposes: Object.keys(app.exposes ?? {}),
597
- dts: {
598
- displayErrorInTerminal: true,
599
- compilerInstance: 'tsgo'
600
- },
601
- browserSafeExposesOnly: true,
602
- zephyrRspackPlugin: external_versions_cjs_namespaceObject.ZEPHYR_RSPACK_PLUGIN_VERSION
603
- },
604
- marker: {
605
- appId: app.id,
606
- packageName: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
607
- version: '0.1.0',
608
- build: (0, external_module_federation_cjs_namespaceObject.createBuildMarker)(scope, app),
609
- deployProfile: 'cloudflare-ssr-mf-effect-v1',
610
- uiSurface: 'ui',
611
- ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
612
- apiSurface: 'effect-bff'
613
- } : {}
614
- },
615
- ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
616
- effect: {
617
- runtime: 'effect',
618
- import: '@modern-js/plugin-bff/effect-edge',
619
- prefix: app.effectApi.prefix,
620
- openapi: '/openapi.json',
621
- workerEntry: 'worker/__modern_bff_effect.js',
622
- contract: './shared/effect/api',
623
- client: './effect/client',
624
- readiness: (0, external_effect_api_cjs_namespaceObject.createEffectReadinessContract)(app),
625
- requestContext: (0, external_effect_api_cjs_namespaceObject.createEffectRequestContextContract)(),
626
- domainOperations: (0, external_effect_api_cjs_namespaceObject.createEffectDomainOperations)(app),
627
- ...(0, external_effect_api_cjs_namespaceObject.createEffectOperationContract)(app)
628
- }
629
- } : {}
630
- };
631
- }
632
- function createGeneratedContract(scope, apps = [
633
- (0, external_descriptors_cjs_namespaceObject.createShellHost)()
634
- ], enableTailwind = true) {
635
- return {
636
- schemaVersion: 1,
637
- profile: 'cloudflare-ssr-mf-effect-v1',
638
- packageManager: {
639
- source: 'package.json',
640
- manager: 'pnpm',
641
- version: external_versions_cjs_namespaceObject.PNPM_VERSION,
642
- toolchain: 'mise'
643
- },
644
- node: {
645
- source: 'package.json engines.node and .mise.toml',
646
- version: external_versions_cjs_namespaceObject.NODE_VERSION,
647
- engineRange: '>=26',
648
- toolchain: 'mise'
649
- },
650
- versions: {
651
- typescript: external_versions_cjs_namespaceObject.TYPESCRIPT_NATIVE_PREVIEW_VERSION,
652
- typescriptCompatibility: external_versions_cjs_namespaceObject.TYPESCRIPT_VERSION,
653
- typescriptNativePreview: external_versions_cjs_namespaceObject.TYPESCRIPT_NATIVE_PREVIEW_VERSION,
654
- moduleFederation: external_versions_cjs_namespaceObject.MODULE_FEDERATION_VERSION,
655
- tanstackRouter: external_versions_cjs_namespaceObject.TANSTACK_ROUTER_VERSION,
656
- i18next: external_versions_cjs_namespaceObject.I18NEXT_VERSION,
657
- zephyrRspackPlugin: external_versions_cjs_namespaceObject.ZEPHYR_RSPACK_PLUGIN_VERSION,
658
- zephyrAgent: external_versions_cjs_namespaceObject.ZEPHYR_AGENT_VERSION,
659
- wrangler: external_versions_cjs_namespaceObject.WRANGLER_VERSION
660
- },
661
- performanceReadiness: createPerformanceReadinessContract(),
662
- cssFederation: createCssFederationContract(scope),
663
- apps: apps.map((app)=>createAppGeneratedContract(scope, app, apps, enableTailwind))
664
- };
665
- }
666
- function createTemplateManifest(modernVersion, packageSource) {
667
- return {
668
- schemaVersion: 1,
669
- template: {
670
- id: 'modernjs-ultramodern-superapp-workspace',
671
- version: modernVersion,
672
- displayName: 'Modern.js UltraModern SuperApp Workspace',
673
- description: 'Growable SuperApp shell, shared packages, and topology skeleton.',
674
- compatibilityLane: 'ultramodern-mv',
675
- minimumModernVersion: modernVersion
676
- },
677
- source: {
678
- type: 'builtin',
679
- name: 'modernjs-ultramodern-superapp-workspace',
680
- repositoryPath: 'packages/toolkit/create/template-workspace',
681
- generator: 'packages/toolkit/create/src/ultramodern-workspace/'
682
- },
683
- integrity: {
684
- checksums: [
685
- {
686
- algorithm: 'sha256',
687
- value: (0, external_fs_io_cjs_namespaceObject.hashTemplateTree)(external_fs_io_cjs_namespaceObject.workspaceTemplateDir),
688
- scope: 'source-tree'
251
+ wrangler: {
252
+ compatibility_date: external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE,
253
+ compatibility_flags: [
254
+ 'nodejs_compat',
255
+ 'global_fetch_strictly_public'
256
+ ]
689
257
  },
690
- {
691
- algorithm: 'sha256',
692
- value: (0, external_fs_io_cjs_namespaceObject.hashTemplateTree)(external_fs_io_cjs_namespaceObject.fileTemplatesDir),
693
- scope: 'file-templates-tree'
694
- }
695
- ],
696
- provenance: {
697
- kind: 'repo-local',
698
- issuer: '@modern-js/create',
699
- subject: 'packages/toolkit/create/template-workspace'
258
+ artifacts: [],
259
+ publicAssetExcludes: []
700
260
  }
701
261
  },
702
- materialization: {
703
- targetRoot: 'generated-project-root',
704
- allowedPaths: [
705
- '.agents/**',
706
- '.codex/**',
707
- '.github/**',
708
- '.gitignore',
709
- '.mise.toml',
710
- '.modernjs/**',
711
- 'AGENTS.md',
712
- 'README.md',
713
- 'apps/**',
714
- 'packages/**',
715
- 'lefthook.yml',
716
- 'package.json',
717
- 'oxfmt.config.ts',
718
- 'oxlint.config.ts',
719
- 'pnpm-workspace.yaml',
720
- "scripts/**",
721
- 'topology/**',
722
- 'tsconfig.base.json'
723
- ],
724
- deniedPaths: [
725
- '.git/**',
726
- '.npmrc',
727
- '.yarnrc',
728
- '.env',
729
- '.env.*',
730
- 'node_modules/**',
731
- 'dist/**'
732
- ],
733
- overwritePolicy: 'deny-existing'
734
- },
735
- packageSource: {
736
- strategy: packageSource.strategy,
737
- config: '.modernjs/ultramodern-package-source.json',
738
- modernPackageSpecifier: (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageVersion)(packageSource),
739
- generatedWorkspacePackageSpecifier: external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION
262
+ moduleFederation: {
263
+ apps: apps.map((app)=>({
264
+ id: app.id,
265
+ path: app.directory,
266
+ role: 'shell' === app.kind ? 'host' : 'remote',
267
+ name: app.mfName,
268
+ exposes: Object.keys(app.exposes ?? {}),
269
+ hostOnly: 'shell' === app.kind && 0 === Object.keys(app.exposes ?? {}).length
270
+ }))
740
271
  },
741
272
  agentSkills: {
742
- installDir: '.agents/skills',
743
- source: {
744
- repository: 'https://github.com/rstackjs/agent-skills',
745
- commit: external_versions_cjs_namespaceObject.RSTACK_AGENT_SKILLS_COMMIT,
746
- license: 'MIT',
747
- licensePath: '.agents/rstackjs-agent-skills-LICENSE'
748
- },
749
- baseline: baselineAgentSkills,
750
- moduleFederationSource: {
751
- repository: 'https://github.com/module-federation/agent-skills',
752
- commit: external_versions_cjs_namespaceObject.MODULE_FEDERATION_AGENT_SKILLS_COMMIT,
753
- install: 'clone',
754
- baseline: moduleFederationAgentSkills
755
- },
756
- privateSource: {
757
- repository: 'https://github.com/TechsioCZ/skills',
758
- install: 'clone-if-authorized',
759
- baseline: privateAgentSkills
760
- },
761
- lockFile: '.agents/skills-lock.json'
762
- },
763
- validation: {
764
- schemaValidation: true,
765
- sourceValidation: [
766
- 'source-type-supported',
767
- 'checksum-verified',
768
- 'provenance-present'
769
- ],
770
- materializationValidation: [
771
- 'path-boundary-policy',
772
- 'path-boundary-denylist',
773
- 'no-path-traversal',
774
- 'no-absolute-paths',
775
- 'overwrite-policy-enforced'
776
- ],
777
- postMaterializationValidation: [
778
- 'ultramodern-workspace-contract-check',
779
- 'github-workflow-security-enforced',
780
- 'pnpm-11-policy-enforced',
781
- 'template-manifest-retained'
782
- ],
783
- expectedCommands: [
784
- 'mise install',
785
- 'pnpm install',
786
- 'pnpm run i18n:boundaries',
787
- 'pnpm run contract:check',
788
- 'pnpm run performance:readiness'
273
+ target: 'codex',
274
+ lockfile: './.codex/skills-lock.json',
275
+ installDir: './.codex/skills',
276
+ mode: 'repo-owned-default-on',
277
+ selfContainedVendoring: true,
278
+ optOutEnv: [
279
+ 'ULTRAMODERN_SKIP_CODEX_SKILLS=1',
280
+ 'ULTRAMODERN_CODEX_SKILLS=0'
789
281
  ]
282
+ },
283
+ tooling: {
284
+ command: 'modern-js-create ultramodern',
285
+ wrappers: {
286
+ validate: "scripts/validate-ultramodern-workspace.mjs",
287
+ typecheck: "scripts/ultramodern-typecheck.mjs",
288
+ mfTypes: "scripts/assert-mf-types.mjs",
289
+ publicSurface: "scripts/generate-public-surface-assets.mjs",
290
+ cloudflareProof: "scripts/proof-cloudflare-version.mjs",
291
+ performanceReadiness: "scripts/ultramodern-performance-readiness.mjs",
292
+ apiBoundaries: "scripts/check-ultramodern-api-boundaries.mjs",
293
+ skills: "scripts/bootstrap-agent-skills.mjs"
294
+ }
790
295
  }
791
296
  };
792
297
  }
793
- exports.baselineAgentSkills = __webpack_exports__.baselineAgentSkills;
794
- exports.createAppConfigContract = __webpack_exports__.createAppConfigContract;
795
- exports.createAppCssFederationContract = __webpack_exports__.createAppCssFederationContract;
796
- exports.createAppGeneratedContract = __webpack_exports__.createAppGeneratedContract;
797
- exports.createCssDedupeContract = __webpack_exports__.createCssDedupeContract;
798
- exports.createCssFederationContract = __webpack_exports__.createCssFederationContract;
799
- exports.createCssSsrContract = __webpack_exports__.createCssSsrContract;
800
298
  exports.createDevelopmentOverlay = __webpack_exports__.createDevelopmentOverlay;
801
- exports.createGeneratedContract = __webpack_exports__.createGeneratedContract;
802
299
  exports.createOwnership = __webpack_exports__.createOwnership;
803
- exports.createPackageSourceMetadata = __webpack_exports__.createPackageSourceMetadata;
804
- exports.createPerformanceReadinessContract = __webpack_exports__.createPerformanceReadinessContract;
805
- exports.createStylingContract = __webpack_exports__.createStylingContract;
806
- exports.createTemplateManifest = __webpack_exports__.createTemplateManifest;
807
300
  exports.createTopology = __webpack_exports__.createTopology;
808
- exports.cssClassPrefix = __webpack_exports__.cssClassPrefix;
809
- exports.cssLayerName = __webpack_exports__.cssLayerName;
810
- exports.cssRole = __webpack_exports__.cssRole;
811
- exports.moduleFederationAgentSkills = __webpack_exports__.moduleFederationAgentSkills;
812
- exports.privateAgentSkills = __webpack_exports__.privateAgentSkills;
301
+ exports.createUltramodernConfig = __webpack_exports__.createUltramodernConfig;
813
302
  for(var __rspack_i in __webpack_exports__)if (-1 === [
814
- "baselineAgentSkills",
815
- "createAppConfigContract",
816
- "createAppCssFederationContract",
817
- "createAppGeneratedContract",
818
- "createCssDedupeContract",
819
- "createCssFederationContract",
820
- "createCssSsrContract",
821
303
  "createDevelopmentOverlay",
822
- "createGeneratedContract",
823
304
  "createOwnership",
824
- "createPackageSourceMetadata",
825
- "createPerformanceReadinessContract",
826
- "createStylingContract",
827
- "createTemplateManifest",
828
305
  "createTopology",
829
- "cssClassPrefix",
830
- "cssLayerName",
831
- "cssRole",
832
- "moduleFederationAgentSkills",
833
- "privateAgentSkills"
306
+ "createUltramodernConfig"
834
307
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
835
308
  Object.defineProperty(exports, '__esModule', {
836
309
  value: true