@bleedingdev/modern-js-create 3.4.0-ultramodern.11 → 3.4.0-ultramodern.13

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 (104) hide show
  1. package/README.md +13 -11
  2. package/dist/cjs/index.cjs +36 -3
  3. package/dist/cjs/locale/en.cjs +10 -0
  4. package/dist/cjs/locale/zh.cjs +10 -0
  5. package/dist/cjs/ultramodern-tooling/commands.cjs +185 -0
  6. package/dist/cjs/ultramodern-tooling/config.cjs +248 -0
  7. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +39 -18
  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 +119 -653
  11. package/dist/cjs/ultramodern-workspace/descriptors.cjs +4 -0
  12. package/dist/cjs/ultramodern-workspace/generation-result.cjs +1 -1
  13. package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
  14. package/dist/cjs/ultramodern-workspace/mf-validation.cjs +572 -0
  15. package/dist/cjs/ultramodern-workspace/module-federation.cjs +14 -0
  16. package/dist/cjs/ultramodern-workspace/package-json.cjs +26 -12
  17. package/dist/cjs/ultramodern-workspace/public-api.cjs +4 -0
  18. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +74 -44
  19. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +37 -8
  20. package/dist/esm/index.js +36 -3
  21. package/dist/esm/locale/en.js +10 -0
  22. package/dist/esm/locale/zh.js +10 -0
  23. package/dist/esm/ultramodern-tooling/commands.js +132 -0
  24. package/dist/esm/ultramodern-tooling/config.js +196 -0
  25. package/dist/esm/ultramodern-workspace/add-vertical.js +39 -21
  26. package/dist/esm/ultramodern-workspace/bridge-config.js +270 -0
  27. package/dist/esm/ultramodern-workspace/codesmith.js +1 -0
  28. package/dist/esm/ultramodern-workspace/contracts.js +122 -608
  29. package/dist/esm/ultramodern-workspace/descriptors.js +2 -1
  30. package/dist/esm/ultramodern-workspace/generation-result.js +2 -2
  31. package/dist/esm/ultramodern-workspace/index.js +1 -0
  32. package/dist/esm/ultramodern-workspace/mf-validation.js +517 -0
  33. package/dist/esm/ultramodern-workspace/module-federation.js +14 -0
  34. package/dist/esm/ultramodern-workspace/package-json.js +26 -12
  35. package/dist/esm/ultramodern-workspace/public-api.js +1 -0
  36. package/dist/esm/ultramodern-workspace/workspace-scripts.js +75 -27
  37. package/dist/esm/ultramodern-workspace/write-workspace.js +38 -12
  38. package/dist/esm-node/index.js +36 -3
  39. package/dist/esm-node/locale/en.js +10 -0
  40. package/dist/esm-node/locale/zh.js +10 -0
  41. package/dist/esm-node/ultramodern-tooling/commands.js +133 -0
  42. package/dist/esm-node/ultramodern-tooling/config.js +197 -0
  43. package/dist/esm-node/ultramodern-workspace/add-vertical.js +39 -21
  44. package/dist/esm-node/ultramodern-workspace/bridge-config.js +271 -0
  45. package/dist/esm-node/ultramodern-workspace/codesmith.js +1 -0
  46. package/dist/esm-node/ultramodern-workspace/contracts.js +122 -608
  47. package/dist/esm-node/ultramodern-workspace/descriptors.js +2 -1
  48. package/dist/esm-node/ultramodern-workspace/generation-result.js +2 -2
  49. package/dist/esm-node/ultramodern-workspace/index.js +1 -0
  50. package/dist/esm-node/ultramodern-workspace/mf-validation.js +518 -0
  51. package/dist/esm-node/ultramodern-workspace/module-federation.js +14 -0
  52. package/dist/esm-node/ultramodern-workspace/package-json.js +26 -12
  53. package/dist/esm-node/ultramodern-workspace/public-api.js +1 -0
  54. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +75 -27
  55. package/dist/esm-node/ultramodern-workspace/write-workspace.js +38 -12
  56. package/dist/types/locale/en.d.ts +10 -0
  57. package/dist/types/locale/index.d.ts +20 -0
  58. package/dist/types/locale/zh.d.ts +10 -0
  59. package/dist/types/ultramodern-tooling/commands.d.ts +1 -0
  60. package/dist/types/ultramodern-tooling/config.d.ts +43 -0
  61. package/dist/types/ultramodern-workspace/add-vertical.d.ts +5 -2
  62. package/dist/types/ultramodern-workspace/bridge-config.d.ts +64 -0
  63. package/dist/types/ultramodern-workspace/codesmith.d.ts +1 -0
  64. package/dist/types/ultramodern-workspace/contracts.d.ts +2 -17
  65. package/dist/types/ultramodern-workspace/descriptors.d.ts +1 -0
  66. package/dist/types/ultramodern-workspace/index.d.ts +2 -0
  67. package/dist/types/ultramodern-workspace/mf-validation.d.ts +27 -0
  68. package/dist/types/ultramodern-workspace/package-json.d.ts +4 -3
  69. package/dist/types/ultramodern-workspace/public-api.d.ts +2 -0
  70. package/dist/types/ultramodern-workspace/types.d.ts +2 -0
  71. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +1 -7
  72. package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -2
  73. package/package.json +3 -3
  74. package/template-workspace/{.agents → .codex}/skills-lock.json +12 -12
  75. package/template-workspace/.gitignore.handlebars +3 -0
  76. package/template-workspace/AGENTS.md.handlebars +11 -5
  77. package/template-workspace/README.md.handlebars +15 -12
  78. package/template-workspace/oxfmt.config.ts +1 -0
  79. package/template-workspace/oxlint.config.ts +1 -0
  80. package/template-workspace/scripts/bootstrap-agent-skills.mjs +77 -67
  81. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +56 -3
  82. package/templates/workspace-scripts/generate-public-surface-assets.mjs +239 -4
  83. package/templates/workspace-scripts/proof-cloudflare-version.mjs +282 -4
  84. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +172 -1
  85. package/templates/workspace-scripts/ultramodern-typecheck.mjs +4 -2
  86. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +783 -26
  87. /package/template-workspace/{.agents → .codex}/rstackjs-agent-skills-LICENSE +0 -0
  88. /package/template-workspace/{.agents → .codex}/skills/rsbuild-best-practices/SKILL.md +0 -0
  89. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/SKILL.md +0 -0
  90. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/command-map.md +0 -0
  91. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/common-analysis-patterns.md +0 -0
  92. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-common.md +0 -0
  93. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-rspack.md +0 -0
  94. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-webpack.md +0 -0
  95. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor.md +0 -0
  96. /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/rsdoctor-data-types.md +0 -0
  97. /package/template-workspace/{.agents → .codex}/skills/rslib-best-practices/SKILL.md +0 -0
  98. /package/template-workspace/{.agents → .codex}/skills/rslib-modern-package/SKILL.md +0 -0
  99. /package/template-workspace/{.agents → .codex}/skills/rspack-best-practices/SKILL.md +0 -0
  100. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/SKILL.md +0 -0
  101. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/bottlenecks.md +0 -0
  102. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/tracing-guide.md +0 -0
  103. /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/scripts/analyze_trace.js +0 -0
  104. /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 {
@@ -195,647 +155,153 @@ function createDevelopmentOverlay(remotes = []) {
195
155
  ]))
196
156
  };
197
157
  }
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() {
158
+ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
159
+ (0, external_descriptors_cjs_namespaceObject.createShellHost)()
160
+ ], enableTailwind = true, bridge) {
161
+ const remotes = apps.filter((app)=>'shell' !== app.kind);
162
+ const shellHost = (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes);
293
163
  return {
294
164
  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
- ]
165
+ profile: 'cloudflare-ssr-mf-effect-v1',
166
+ generator: {
167
+ package: '@modern-js/create',
168
+ version: modernVersion
325
169
  },
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.'
170
+ workspace: {
171
+ packageScope: scope,
172
+ packageManager: {
173
+ name: 'pnpm',
174
+ version: external_versions_cjs_namespaceObject.PNPM_VERSION
338
175
  },
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.'
176
+ node: {
177
+ version: external_versions_cjs_namespaceObject.NODE_VERSION,
178
+ engineRange: '>=26'
362
179
  }
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
180
  },
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'
181
+ packageSource: {
182
+ strategy: packageSource.strategy,
183
+ modernPackageVersion: packageSource.modernPackageVersion,
184
+ ...packageSource.registry ? {
185
+ registry: packageSource.registry
186
+ } : {},
187
+ ...packageSource.aliasScope ? {
188
+ aliasScope: packageSource.aliasScope
189
+ } : {},
190
+ ...packageSource.aliasPackageNamePrefix ? {
191
+ aliasPackageNamePrefix: packageSource.aliasPackageNamePrefix
430
192
  } : {}
431
193
  },
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
194
+ features: {
195
+ tailwind: enableTailwind
441
196
  },
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
- }
197
+ topology: {
198
+ source: './topology/reference-topology.json',
199
+ apps: apps.map((app)=>({
200
+ id: app.id,
201
+ kind: app.kind,
202
+ package: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
203
+ packageSuffix: app.packageSuffix,
204
+ displayName: app.displayName,
205
+ path: app.directory,
206
+ ...app.domain ? {
207
+ domain: app.domain
208
+ } : {},
209
+ port: app.port,
210
+ portEnv: app.portEnv,
211
+ moduleFederation: {
212
+ role: 'shell' === app.kind ? 'host' : 'remote',
213
+ name: app.mfName,
214
+ exposes: Object.keys(app.exposes ?? {}),
215
+ ...'shell' === app.kind ? {
216
+ verticalRefs: shellHost.verticalRefs,
217
+ remotes: (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(shellHost, remotes)
218
+ } : app.verticalRefs?.length ? {
219
+ verticalRefs: app.verticalRefs,
220
+ remotes: (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(app, remotes)
221
+ } : {},
222
+ ssr: true,
223
+ dts: {
224
+ compilerInstance: 'tsgo',
225
+ tsConfigPath: './tsconfig.mf-types.json'
226
+ }
227
+ },
228
+ ...app.effectApi ? {
229
+ effectApi: {
230
+ stem: app.effectApi.stem,
231
+ prefix: app.effectApi.prefix,
232
+ consumedBy: app.effectApi.consumedBy
233
+ }
234
+ } : {}
235
+ }))
485
236
  },
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'
237
+ bridge: bridge ?? {
238
+ enabled: false,
239
+ workspacePackages: [],
240
+ dependencies: [],
241
+ lockfilePolicy: 'nested',
242
+ gates: [],
243
+ reactSingletons: [
244
+ 'react',
245
+ 'react-dom'
497
246
  ]
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),
247
+ },
529
248
  deploy: {
530
- target: 'cloudflare',
531
- cloudflare: (0, external_policy_cjs_namespaceObject.createCloudflareDeployContract)(scope, app),
532
249
  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
- compilerInstance: 'tsgo',
599
- displayErrorInTerminal: true,
600
- tsConfigPath: './tsconfig.mf-types.json'
601
- },
602
- browserSafeExposesOnly: true,
603
- zephyrRspackPlugin: external_versions_cjs_namespaceObject.ZEPHYR_RSPACK_PLUGIN_VERSION
604
- },
605
- marker: {
606
- appId: app.id,
607
- packageName: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
608
- version: '0.1.0',
609
- build: (0, external_module_federation_cjs_namespaceObject.createBuildMarker)(scope, app),
610
- deployProfile: 'cloudflare-ssr-mf-effect-v1',
611
- uiSurface: 'ui',
612
- ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
613
- apiSurface: 'effect-bff'
614
- } : {}
615
- },
616
- ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
617
- effect: {
618
- runtime: 'effect',
619
- import: '@modern-js/plugin-bff/effect-edge',
620
- prefix: app.effectApi.prefix,
621
- openapi: '/openapi.json',
622
- workerEntry: 'worker/__modern_bff_effect.js',
623
- contract: './shared/effect/api',
624
- client: './effect/client',
625
- readiness: (0, external_effect_api_cjs_namespaceObject.createEffectReadinessContract)(app),
626
- requestContext: (0, external_effect_api_cjs_namespaceObject.createEffectRequestContextContract)(),
627
- domainOperations: (0, external_effect_api_cjs_namespaceObject.createEffectDomainOperations)(app),
628
- ...(0, external_effect_api_cjs_namespaceObject.createEffectOperationContract)(app)
629
- }
630
- } : {}
631
- };
632
- }
633
- function createGeneratedContract(scope, apps = [
634
- (0, external_descriptors_cjs_namespaceObject.createShellHost)()
635
- ], enableTailwind = true) {
636
- return {
637
- schemaVersion: 1,
638
- profile: 'cloudflare-ssr-mf-effect-v1',
639
- packageManager: {
640
- source: 'package.json',
641
- manager: 'pnpm',
642
- version: external_versions_cjs_namespaceObject.PNPM_VERSION,
643
- toolchain: 'mise'
644
- },
645
- node: {
646
- source: 'package.json engines.node and .mise.toml',
647
- version: external_versions_cjs_namespaceObject.NODE_VERSION,
648
- engineRange: '>=26',
649
- toolchain: 'mise'
650
- },
651
- versions: {
652
- typescript: external_versions_cjs_namespaceObject.TYPESCRIPT_NATIVE_PREVIEW_VERSION,
653
- typescriptCompatibility: external_versions_cjs_namespaceObject.TYPESCRIPT_VERSION,
654
- typescriptNativePreview: external_versions_cjs_namespaceObject.TYPESCRIPT_NATIVE_PREVIEW_VERSION,
655
- moduleFederation: external_versions_cjs_namespaceObject.MODULE_FEDERATION_VERSION,
656
- tanstackRouter: external_versions_cjs_namespaceObject.TANSTACK_ROUTER_VERSION,
657
- tanstackRouterCore: external_versions_cjs_namespaceObject.TANSTACK_ROUTER_CORE_VERSION,
658
- i18next: external_versions_cjs_namespaceObject.I18NEXT_VERSION,
659
- zephyrRspackPlugin: external_versions_cjs_namespaceObject.ZEPHYR_RSPACK_PLUGIN_VERSION,
660
- zephyrAgent: external_versions_cjs_namespaceObject.ZEPHYR_AGENT_VERSION,
661
- wrangler: external_versions_cjs_namespaceObject.WRANGLER_VERSION
662
- },
663
- performanceReadiness: createPerformanceReadinessContract(),
664
- cssFederation: createCssFederationContract(scope),
665
- apps: apps.map((app)=>createAppGeneratedContract(scope, app, apps, enableTailwind))
666
- };
667
- }
668
- function createTemplateManifest(modernVersion, packageSource) {
669
- return {
670
- schemaVersion: 1,
671
- template: {
672
- id: 'modernjs-ultramodern-superapp-workspace',
673
- version: modernVersion,
674
- displayName: 'Modern.js UltraModern SuperApp Workspace',
675
- description: 'Growable SuperApp shell, shared packages, and topology skeleton.',
676
- compatibilityLane: 'ultramodern-mv',
677
- minimumModernVersion: modernVersion
678
- },
679
- source: {
680
- type: 'builtin',
681
- name: 'modernjs-ultramodern-superapp-workspace',
682
- repositoryPath: 'packages/toolkit/create/template-workspace',
683
- generator: 'packages/toolkit/create/src/ultramodern-workspace/'
684
- },
685
- integrity: {
686
- checksums: [
687
- {
688
- algorithm: 'sha256',
689
- value: (0, external_fs_io_cjs_namespaceObject.hashTemplateTree)(external_fs_io_cjs_namespaceObject.workspaceTemplateDir),
690
- scope: 'source-tree'
250
+ wrangler: {
251
+ compatibility_date: external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE,
252
+ compatibility_flags: [
253
+ 'nodejs_compat',
254
+ 'global_fetch_strictly_public'
255
+ ]
691
256
  },
692
- {
693
- algorithm: 'sha256',
694
- value: (0, external_fs_io_cjs_namespaceObject.hashTemplateTree)(external_fs_io_cjs_namespaceObject.fileTemplatesDir),
695
- scope: 'file-templates-tree'
696
- }
697
- ],
698
- provenance: {
699
- kind: 'repo-local',
700
- issuer: '@modern-js/create',
701
- subject: 'packages/toolkit/create/template-workspace'
257
+ artifacts: [],
258
+ publicAssetExcludes: []
702
259
  }
703
260
  },
704
- materialization: {
705
- targetRoot: 'generated-project-root',
706
- allowedPaths: [
707
- '.agents/**',
708
- '.codex/**',
709
- '.github/**',
710
- '.gitignore',
711
- '.mise.toml',
712
- '.modernjs/**',
713
- 'AGENTS.md',
714
- 'README.md',
715
- 'apps/**',
716
- 'packages/**',
717
- 'lefthook.yml',
718
- 'package.json',
719
- 'oxfmt.config.ts',
720
- 'oxlint.config.ts',
721
- 'patches/**',
722
- 'pnpm-workspace.yaml',
723
- "scripts/**",
724
- 'topology/**',
725
- 'tsconfig.json',
726
- 'tsconfig.base.json'
727
- ],
728
- deniedPaths: [
729
- '.git/**',
730
- '.npmrc',
731
- '.yarnrc',
732
- '.env',
733
- '.env.*',
734
- 'node_modules/**',
735
- 'dist/**'
736
- ],
737
- overwritePolicy: 'deny-existing'
738
- },
739
- packageSource: {
740
- strategy: packageSource.strategy,
741
- config: '.modernjs/ultramodern-package-source.json',
742
- modernPackageSpecifier: (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageVersion)(packageSource),
743
- generatedWorkspacePackageSpecifier: external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION
261
+ moduleFederation: {
262
+ apps: apps.map((app)=>({
263
+ id: app.id,
264
+ path: app.directory,
265
+ role: 'shell' === app.kind ? 'host' : 'remote',
266
+ name: app.mfName,
267
+ exposes: Object.keys(app.exposes ?? {}),
268
+ hostOnly: 'shell' === app.kind && 0 === Object.keys(app.exposes ?? {}).length
269
+ }))
744
270
  },
745
271
  agentSkills: {
746
- installDir: '.agents/skills',
747
- source: {
748
- repository: 'https://github.com/rstackjs/agent-skills',
749
- commit: external_versions_cjs_namespaceObject.RSTACK_AGENT_SKILLS_COMMIT,
750
- license: 'MIT',
751
- licensePath: '.agents/rstackjs-agent-skills-LICENSE'
752
- },
753
- baseline: baselineAgentSkills,
754
- moduleFederationSource: {
755
- repository: 'https://github.com/module-federation/agent-skills',
756
- commit: external_versions_cjs_namespaceObject.MODULE_FEDERATION_AGENT_SKILLS_COMMIT,
757
- install: 'clone',
758
- baseline: moduleFederationAgentSkills
759
- },
760
- privateSource: {
761
- repository: 'https://github.com/TechsioCZ/skills',
762
- install: 'clone-if-authorized',
763
- baseline: privateAgentSkills
764
- },
765
- lockFile: '.agents/skills-lock.json'
766
- },
767
- validation: {
768
- schemaValidation: true,
769
- sourceValidation: [
770
- 'source-type-supported',
771
- 'checksum-verified',
772
- 'provenance-present'
773
- ],
774
- materializationValidation: [
775
- 'path-boundary-policy',
776
- 'path-boundary-denylist',
777
- 'no-path-traversal',
778
- 'no-absolute-paths',
779
- 'overwrite-policy-enforced'
780
- ],
781
- postMaterializationValidation: [
782
- 'ultramodern-workspace-contract-check',
783
- 'github-workflow-security-enforced',
784
- 'pnpm-11-policy-enforced',
785
- 'template-manifest-retained'
786
- ],
787
- expectedCommands: [
788
- 'mise install',
789
- 'pnpm install',
790
- 'pnpm run typecheck',
791
- 'pnpm run i18n:boundaries',
792
- 'pnpm run contract:check',
793
- 'pnpm run performance:readiness'
272
+ target: 'codex',
273
+ lockfile: './.codex/skills-lock.json',
274
+ installDir: './.codex/skills',
275
+ mode: 'repo-owned-default-on',
276
+ selfContainedVendoring: true,
277
+ optOutEnv: [
278
+ 'ULTRAMODERN_SKIP_CODEX_SKILLS=1',
279
+ 'ULTRAMODERN_CODEX_SKILLS=0'
794
280
  ]
281
+ },
282
+ tooling: {
283
+ command: 'modern-js-create ultramodern',
284
+ wrappers: {
285
+ validate: "scripts/validate-ultramodern-workspace.mjs",
286
+ typecheck: "scripts/ultramodern-typecheck.mjs",
287
+ mfTypes: "scripts/assert-mf-types.mjs",
288
+ publicSurface: "scripts/generate-public-surface-assets.mjs",
289
+ cloudflareProof: "scripts/proof-cloudflare-version.mjs",
290
+ performanceReadiness: "scripts/ultramodern-performance-readiness.mjs",
291
+ skills: "scripts/bootstrap-agent-skills.mjs"
292
+ }
795
293
  }
796
294
  };
797
295
  }
798
- exports.baselineAgentSkills = __webpack_exports__.baselineAgentSkills;
799
- exports.createAppConfigContract = __webpack_exports__.createAppConfigContract;
800
- exports.createAppCssFederationContract = __webpack_exports__.createAppCssFederationContract;
801
- exports.createAppGeneratedContract = __webpack_exports__.createAppGeneratedContract;
802
- exports.createCssDedupeContract = __webpack_exports__.createCssDedupeContract;
803
- exports.createCssFederationContract = __webpack_exports__.createCssFederationContract;
804
- exports.createCssSsrContract = __webpack_exports__.createCssSsrContract;
805
296
  exports.createDevelopmentOverlay = __webpack_exports__.createDevelopmentOverlay;
806
- exports.createGeneratedContract = __webpack_exports__.createGeneratedContract;
807
297
  exports.createOwnership = __webpack_exports__.createOwnership;
808
- exports.createPackageSourceMetadata = __webpack_exports__.createPackageSourceMetadata;
809
- exports.createPerformanceReadinessContract = __webpack_exports__.createPerformanceReadinessContract;
810
- exports.createStylingContract = __webpack_exports__.createStylingContract;
811
- exports.createTemplateManifest = __webpack_exports__.createTemplateManifest;
812
298
  exports.createTopology = __webpack_exports__.createTopology;
813
- exports.cssClassPrefix = __webpack_exports__.cssClassPrefix;
814
- exports.cssLayerName = __webpack_exports__.cssLayerName;
815
- exports.cssRole = __webpack_exports__.cssRole;
816
- exports.moduleFederationAgentSkills = __webpack_exports__.moduleFederationAgentSkills;
817
- exports.privateAgentSkills = __webpack_exports__.privateAgentSkills;
299
+ exports.createUltramodernConfig = __webpack_exports__.createUltramodernConfig;
818
300
  for(var __rspack_i in __webpack_exports__)if (-1 === [
819
- "baselineAgentSkills",
820
- "createAppConfigContract",
821
- "createAppCssFederationContract",
822
- "createAppGeneratedContract",
823
- "createCssDedupeContract",
824
- "createCssFederationContract",
825
- "createCssSsrContract",
826
301
  "createDevelopmentOverlay",
827
- "createGeneratedContract",
828
302
  "createOwnership",
829
- "createPackageSourceMetadata",
830
- "createPerformanceReadinessContract",
831
- "createStylingContract",
832
- "createTemplateManifest",
833
303
  "createTopology",
834
- "cssClassPrefix",
835
- "cssLayerName",
836
- "cssRole",
837
- "moduleFederationAgentSkills",
838
- "privateAgentSkills"
304
+ "createUltramodernConfig"
839
305
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
840
306
  Object.defineProperty(exports, '__esModule', {
841
307
  value: true