@bleedingdev/modern-js-create 3.2.0-ultramodern.120 → 3.2.0-ultramodern.121

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 (118) hide show
  1. package/README.md +35 -12
  2. package/dist/cjs/create-package-root.cjs +7 -9
  3. package/dist/cjs/index.cjs +74 -44
  4. package/dist/cjs/locale/en.cjs +6 -7
  5. package/dist/cjs/locale/zh.cjs +6 -7
  6. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +337 -0
  7. package/dist/cjs/ultramodern-workspace/app-files.cjs +223 -0
  8. package/dist/cjs/ultramodern-workspace/contracts.cjs +836 -0
  9. package/dist/cjs/ultramodern-workspace/demo-components.cjs +422 -0
  10. package/dist/cjs/ultramodern-workspace/descriptors.cjs +222 -0
  11. package/dist/cjs/ultramodern-workspace/effect-api.cjs +952 -0
  12. package/dist/cjs/ultramodern-workspace/fs-io.cjs +191 -0
  13. package/dist/cjs/ultramodern-workspace/index.cjs +48 -0
  14. package/dist/cjs/ultramodern-workspace/locales.cjs +173 -0
  15. package/dist/cjs/ultramodern-workspace/module-federation.cjs +487 -0
  16. package/dist/cjs/ultramodern-workspace/naming.cjs +161 -0
  17. package/dist/cjs/ultramodern-workspace/package-json.cjs +406 -0
  18. package/dist/cjs/ultramodern-workspace/package-source.cjs +59 -0
  19. package/dist/cjs/ultramodern-workspace/policy.cjs +248 -0
  20. package/dist/cjs/ultramodern-workspace/public-surface.cjs +268 -0
  21. package/dist/cjs/ultramodern-workspace/routes.cjs +375 -0
  22. package/dist/cjs/ultramodern-workspace/types.cjs +61 -0
  23. package/dist/cjs/ultramodern-workspace/versions.cjs +153 -0
  24. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +153 -0
  25. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +175 -0
  26. package/dist/esm/create-package-root.js +7 -9
  27. package/dist/esm/index.js +72 -42
  28. package/dist/esm/locale/en.js +6 -7
  29. package/dist/esm/locale/zh.js +6 -7
  30. package/dist/esm/ultramodern-workspace/add-vertical.js +252 -0
  31. package/dist/esm/ultramodern-workspace/app-files.js +149 -0
  32. package/dist/esm/ultramodern-workspace/contracts.js +741 -0
  33. package/dist/esm/ultramodern-workspace/demo-components.js +363 -0
  34. package/dist/esm/ultramodern-workspace/descriptors.js +133 -0
  35. package/dist/esm/ultramodern-workspace/effect-api.js +854 -0
  36. package/dist/esm/ultramodern-workspace/fs-io.js +90 -0
  37. package/dist/esm/ultramodern-workspace/index.js +3 -0
  38. package/dist/esm/ultramodern-workspace/locales.js +122 -0
  39. package/dist/esm/ultramodern-workspace/module-federation.js +415 -0
  40. package/dist/esm/ultramodern-workspace/naming.js +71 -0
  41. package/dist/esm/ultramodern-workspace/package-json.js +338 -0
  42. package/dist/esm/ultramodern-workspace/package-source.js +21 -0
  43. package/dist/esm/ultramodern-workspace/policy.js +183 -0
  44. package/dist/esm/ultramodern-workspace/public-surface.js +183 -0
  45. package/dist/esm/ultramodern-workspace/routes.js +280 -0
  46. package/dist/esm/ultramodern-workspace/types.js +16 -0
  47. package/dist/esm/ultramodern-workspace/versions.js +34 -0
  48. package/dist/esm/ultramodern-workspace/workspace-scripts.js +91 -0
  49. package/dist/esm/ultramodern-workspace/write-workspace.js +121 -0
  50. package/dist/esm-node/create-package-root.js +7 -9
  51. package/dist/esm-node/index.js +72 -42
  52. package/dist/esm-node/locale/en.js +6 -7
  53. package/dist/esm-node/locale/zh.js +6 -7
  54. package/dist/esm-node/ultramodern-workspace/add-vertical.js +253 -0
  55. package/dist/esm-node/ultramodern-workspace/app-files.js +150 -0
  56. package/dist/esm-node/ultramodern-workspace/contracts.js +742 -0
  57. package/dist/esm-node/ultramodern-workspace/demo-components.js +364 -0
  58. package/dist/esm-node/ultramodern-workspace/descriptors.js +134 -0
  59. package/dist/esm-node/ultramodern-workspace/effect-api.js +855 -0
  60. package/dist/esm-node/ultramodern-workspace/fs-io.js +91 -0
  61. package/dist/esm-node/ultramodern-workspace/index.js +4 -0
  62. package/dist/esm-node/ultramodern-workspace/locales.js +123 -0
  63. package/dist/esm-node/ultramodern-workspace/module-federation.js +416 -0
  64. package/dist/esm-node/ultramodern-workspace/naming.js +72 -0
  65. package/dist/esm-node/ultramodern-workspace/package-json.js +339 -0
  66. package/dist/esm-node/ultramodern-workspace/package-source.js +22 -0
  67. package/dist/esm-node/ultramodern-workspace/policy.js +184 -0
  68. package/dist/esm-node/ultramodern-workspace/public-surface.js +184 -0
  69. package/dist/esm-node/ultramodern-workspace/routes.js +281 -0
  70. package/dist/esm-node/ultramodern-workspace/types.js +17 -0
  71. package/dist/esm-node/ultramodern-workspace/versions.js +35 -0
  72. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +92 -0
  73. package/dist/esm-node/ultramodern-workspace/write-workspace.js +122 -0
  74. package/dist/types/locale/en.d.ts +4 -5
  75. package/dist/types/locale/index.d.ts +8 -10
  76. package/dist/types/locale/zh.d.ts +4 -5
  77. package/dist/types/ultramodern-workspace/add-vertical.d.ts +19 -0
  78. package/dist/types/ultramodern-workspace/app-files.d.ts +14 -0
  79. package/dist/types/ultramodern-workspace/contracts.d.ts +21 -0
  80. package/dist/types/ultramodern-workspace/demo-components.d.ts +9 -0
  81. package/dist/types/ultramodern-workspace/descriptors.d.ts +39 -0
  82. package/dist/types/ultramodern-workspace/effect-api.d.ts +73 -0
  83. package/dist/types/ultramodern-workspace/fs-io.d.ts +18 -0
  84. package/dist/types/ultramodern-workspace/index.d.ts +4 -0
  85. package/dist/types/ultramodern-workspace/locales.d.ts +183 -0
  86. package/dist/types/ultramodern-workspace/module-federation.d.ts +16 -0
  87. package/dist/types/ultramodern-workspace/naming.d.ts +16 -0
  88. package/dist/types/ultramodern-workspace/package-json.d.ts +12 -0
  89. package/dist/types/ultramodern-workspace/package-source.d.ts +2 -0
  90. package/dist/types/ultramodern-workspace/policy.d.ts +60 -0
  91. package/dist/types/ultramodern-workspace/public-surface.d.ts +37 -0
  92. package/dist/types/ultramodern-workspace/routes.d.ts +25 -0
  93. package/dist/types/ultramodern-workspace/types.d.ts +95 -0
  94. package/dist/types/ultramodern-workspace/versions.d.ts +38 -0
  95. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +10 -0
  96. package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -0
  97. package/package.json +4 -3
  98. package/template-workspace/.github/workflows/ultramodern-workspace-gates.yml.handlebars +1 -4
  99. package/template-workspace/.mise.toml.handlebars +1 -0
  100. package/template-workspace/{AGENTS.md → AGENTS.md.handlebars} +12 -7
  101. package/template-workspace/README.md.handlebars +40 -24
  102. package/template-workspace/{pnpm-workspace.yaml → pnpm-workspace.yaml.handlebars} +2 -2
  103. package/template-workspace/scripts/bootstrap-agent-skills.mjs +31 -51
  104. package/templates/app/shell-frame.tsx +49 -0
  105. package/templates/app/ultramodern-route-head.tsx.handlebars +142 -0
  106. package/templates/packages/shared-contracts-index.ts +466 -0
  107. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +69 -0
  108. package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mjs +9 -0
  109. package/templates/workspace-scripts/generate-public-surface-assets.mjs +529 -0
  110. package/templates/workspace-scripts/proof-cloudflare-version.mjs +125 -0
  111. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +851 -0
  112. package/templates/workspace-scripts/ultramodern-performance-readiness.config.mjs +7 -0
  113. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +223 -0
  114. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +593 -0
  115. package/dist/cjs/ultramodern-workspace.cjs +0 -6797
  116. package/dist/esm/ultramodern-workspace.js +0 -6738
  117. package/dist/esm-node/ultramodern-workspace.js +0 -6739
  118. package/dist/types/ultramodern-workspace.d.ts +0 -29
@@ -0,0 +1,836 @@
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
+ baselineAgentSkills: ()=>baselineAgentSkills,
32
+ createAppConfigContract: ()=>createAppConfigContract,
33
+ createAppCssFederationContract: ()=>createAppCssFederationContract,
34
+ createAppGeneratedContract: ()=>createAppGeneratedContract,
35
+ createCssDedupeContract: ()=>createCssDedupeContract,
36
+ createCssFederationContract: ()=>createCssFederationContract,
37
+ createCssSsrContract: ()=>createCssSsrContract,
38
+ createDevelopmentOverlay: ()=>createDevelopmentOverlay,
39
+ createGeneratedContract: ()=>createGeneratedContract,
40
+ createOwnership: ()=>createOwnership,
41
+ createPackageSourceMetadata: ()=>createPackageSourceMetadata,
42
+ createPerformanceReadinessContract: ()=>createPerformanceReadinessContract,
43
+ createStylingContract: ()=>createStylingContract,
44
+ createTemplateManifest: ()=>createTemplateManifest,
45
+ createTopology: ()=>createTopology,
46
+ cssClassPrefix: ()=>cssClassPrefix,
47
+ cssLayerName: ()=>cssLayerName,
48
+ cssRole: ()=>cssRole,
49
+ moduleFederationAgentSkills: ()=>moduleFederationAgentSkills,
50
+ privateAgentSkills: ()=>privateAgentSkills
51
+ });
52
+ const external_ultramodern_package_source_cjs_namespaceObject = require("../ultramodern-package-source.cjs");
53
+ const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
54
+ 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
+ const external_naming_cjs_namespaceObject = require("./naming.cjs");
58
+ 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
+ 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
+ function createTopology(scope, remotes = []) {
82
+ const shellHost = (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes);
83
+ return {
84
+ schemaVersion: 1,
85
+ id: 'ultramodern-superapp-workspace-reference-topology',
86
+ description: 'Generated UltraModern SuperApp shell that can grow by adding full-stack verticals.',
87
+ preset: 'presetUltramodern',
88
+ shell: {
89
+ id: external_descriptors_cjs_namespaceObject.shellApp.id,
90
+ kind: 'shell',
91
+ package: (0, external_naming_cjs_namespaceObject.packageName)(scope, external_descriptors_cjs_namespaceObject.shellApp.packageSuffix),
92
+ verticalRefs: shellHost.verticalRefs,
93
+ moduleFederation: {
94
+ role: 'host',
95
+ name: external_descriptors_cjs_namespaceObject.shellApp.mfName,
96
+ remotes: (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(shellHost, remotes),
97
+ ssr: true,
98
+ sharedContractVersion: 'mf-ssr-contract-v1'
99
+ },
100
+ cloudflare: (0, external_policy_cjs_namespaceObject.createCloudflareDeployContract)(scope, external_descriptors_cjs_namespaceObject.shellApp),
101
+ ownership: external_descriptors_cjs_namespaceObject.shellApp.ownership
102
+ },
103
+ verticals: remotes.map((vertical)=>({
104
+ id: vertical.id,
105
+ kind: vertical.kind,
106
+ domain: vertical.domain,
107
+ package: (0, external_naming_cjs_namespaceObject.packageName)(scope, vertical.packageSuffix),
108
+ path: vertical.directory,
109
+ moduleFederation: {
110
+ role: 'remote',
111
+ name: vertical.mfName,
112
+ manifestUrl: `http://localhost:${vertical.port}/mf-manifest.json`,
113
+ exposes: Object.keys(vertical.exposes ?? {}),
114
+ ...vertical.verticalRefs?.length ? {
115
+ verticalRefs: vertical.verticalRefs,
116
+ remotes: (0, external_descriptors_cjs_namespaceObject.createModuleFederationRemoteContracts)(vertical)
117
+ } : {},
118
+ ssr: true,
119
+ fallbackTelemetryEvent: 'modernjs:mv-runtime-parity',
120
+ sharedContractVersion: 'mf-ssr-contract-v1'
121
+ },
122
+ ...(0, external_effect_api_cjs_namespaceObject.effectApiTopologyMetadata)(vertical) ? {
123
+ api: (0, external_effect_api_cjs_namespaceObject.effectApiTopologyMetadata)(vertical)
124
+ } : {},
125
+ cloudflare: (0, external_policy_cjs_namespaceObject.createCloudflareDeployContract)(scope, vertical),
126
+ ownership: vertical.ownership
127
+ })),
128
+ sharedPackages: external_descriptors_cjs_namespaceObject.sharedPackages.map((sharedPackage)=>({
129
+ id: sharedPackage.id,
130
+ package: (0, external_naming_cjs_namespaceObject.packageName)(scope, sharedPackage.id),
131
+ path: sharedPackage.directory,
132
+ description: sharedPackage.description
133
+ })),
134
+ validation: {
135
+ script: "scripts/validate-ultramodern-workspace.mjs",
136
+ commands: [
137
+ 'pnpm i18n:boundaries',
138
+ 'pnpm contract:check'
139
+ ]
140
+ }
141
+ };
142
+ }
143
+ function createOwnership(scope, remotes = []) {
144
+ return {
145
+ schemaVersion: 1,
146
+ preset: 'presetUltramodern',
147
+ owners: [
148
+ external_descriptors_cjs_namespaceObject.shellApp,
149
+ ...remotes,
150
+ ...external_descriptors_cjs_namespaceObject.sharedPackages.map((sharedPackage)=>({
151
+ id: sharedPackage.id,
152
+ packageSuffix: sharedPackage.id,
153
+ directory: sharedPackage.directory,
154
+ ownership: {
155
+ team: 'super-app-platform',
156
+ slack: '#super-app-platform',
157
+ pagerDuty: 'pd-super-app-platform',
158
+ runbookRef: `runbooks/wave2/${sharedPackage.id}.md`,
159
+ adrRef: 'docs/super-app-rfc-adr/wave2/reference-topology.md#shared-packages',
160
+ blastRadius: {
161
+ tier: 'tier-1-shared-contract',
162
+ references: [
163
+ 'docs/super-app-rfc-adr/wave2/blast-radius.md#shared-packages'
164
+ ]
165
+ }
166
+ }
167
+ }))
168
+ ].map((owner)=>({
169
+ id: owner.id,
170
+ package: (0, external_naming_cjs_namespaceObject.packageName)(scope, owner.packageSuffix),
171
+ path: owner.directory,
172
+ ownership: owner.ownership
173
+ }))
174
+ };
175
+ }
176
+ function createDevelopmentOverlay(remotes = []) {
177
+ return {
178
+ schemaVersion: 1,
179
+ environment: 'development',
180
+ preset: 'presetUltramodern',
181
+ ports: Object.fromEntries([
182
+ external_descriptors_cjs_namespaceObject.shellApp,
183
+ ...remotes
184
+ ].map((app)=>[
185
+ app.id,
186
+ app.port
187
+ ])),
188
+ manifests: Object.fromEntries(remotes.map((remote)=>[
189
+ remote.id,
190
+ `http://localhost:${remote.port}/mf-manifest.json`
191
+ ])),
192
+ apis: Object.fromEntries((0, external_descriptors_cjs_namespaceObject.verticalEffectApps)(remotes).map((app)=>[
193
+ app.id,
194
+ `http://localhost:${app.port}${(0, external_descriptors_cjs_namespaceObject.effectApiPrefix)(app)}`
195
+ ]))
196
+ };
197
+ }
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: true,
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() {
293
+ return {
294
+ 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
+ ]
325
+ },
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.'
338
+ },
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.'
362
+ }
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
+ },
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'
430
+ } : {}
431
+ },
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
441
+ },
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
+ }
485
+ },
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'
497
+ ]
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),
529
+ deploy: {
530
+ target: 'cloudflare',
531
+ cloudflare: (0, external_policy_cjs_namespaceObject.createCloudflareDeployContract)(scope, app),
532
+ 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_VERSION,
652
+ typescriptNativePreview: external_versions_cjs_namespaceObject.TYPESCRIPT_NATIVE_PREVIEW_VERSION,
653
+ moduleFederation: external_versions_cjs_namespaceObject.MODULE_FEDERATION_VERSION,
654
+ tanstackRouter: external_versions_cjs_namespaceObject.TANSTACK_ROUTER_VERSION,
655
+ i18next: external_versions_cjs_namespaceObject.I18NEXT_VERSION,
656
+ zephyrRspackPlugin: external_versions_cjs_namespaceObject.ZEPHYR_RSPACK_PLUGIN_VERSION,
657
+ zephyrAgent: external_versions_cjs_namespaceObject.ZEPHYR_AGENT_VERSION,
658
+ wrangler: external_versions_cjs_namespaceObject.WRANGLER_VERSION
659
+ },
660
+ performanceReadiness: createPerformanceReadinessContract(),
661
+ cssFederation: createCssFederationContract(scope),
662
+ apps: apps.map((app)=>createAppGeneratedContract(scope, app, apps, enableTailwind))
663
+ };
664
+ }
665
+ function createTemplateManifest(modernVersion, packageSource) {
666
+ return {
667
+ schemaVersion: 1,
668
+ template: {
669
+ id: 'modernjs-ultramodern-superapp-workspace',
670
+ version: modernVersion,
671
+ displayName: 'Modern.js UltraModern SuperApp Workspace',
672
+ description: 'Growable SuperApp shell, shared packages, and topology skeleton.',
673
+ compatibilityLane: 'ultramodern-mv',
674
+ minimumModernVersion: modernVersion
675
+ },
676
+ source: {
677
+ type: 'builtin',
678
+ name: 'modernjs-ultramodern-superapp-workspace',
679
+ repositoryPath: 'packages/toolkit/create/template-workspace',
680
+ generator: 'packages/toolkit/create/src/ultramodern-workspace/'
681
+ },
682
+ integrity: {
683
+ checksums: [
684
+ {
685
+ algorithm: 'sha256',
686
+ value: (0, external_fs_io_cjs_namespaceObject.hashTemplateTree)(external_fs_io_cjs_namespaceObject.workspaceTemplateDir),
687
+ scope: 'source-tree'
688
+ },
689
+ {
690
+ algorithm: 'sha256',
691
+ value: (0, external_fs_io_cjs_namespaceObject.hashTemplateTree)(external_fs_io_cjs_namespaceObject.fileTemplatesDir),
692
+ scope: 'file-templates-tree'
693
+ }
694
+ ],
695
+ provenance: {
696
+ kind: 'repo-local',
697
+ issuer: '@modern-js/create',
698
+ subject: 'packages/toolkit/create/template-workspace'
699
+ }
700
+ },
701
+ materialization: {
702
+ targetRoot: 'generated-project-root',
703
+ allowedPaths: [
704
+ '.agents/**',
705
+ '.codex/**',
706
+ '.github/**',
707
+ '.gitignore',
708
+ '.mise.toml',
709
+ '.modernjs/**',
710
+ 'AGENTS.md',
711
+ 'README.md',
712
+ 'apps/**',
713
+ 'packages/**',
714
+ 'lefthook.yml',
715
+ 'package.json',
716
+ 'oxfmt.config.ts',
717
+ 'oxlint.config.ts',
718
+ 'pnpm-workspace.yaml',
719
+ "scripts/**",
720
+ 'topology/**',
721
+ 'tsconfig.base.json'
722
+ ],
723
+ deniedPaths: [
724
+ '.git/**',
725
+ '.npmrc',
726
+ '.yarnrc',
727
+ '.env',
728
+ '.env.*',
729
+ 'node_modules/**',
730
+ 'dist/**'
731
+ ],
732
+ overwritePolicy: 'deny-existing'
733
+ },
734
+ packageSource: {
735
+ strategy: packageSource.strategy,
736
+ config: '.modernjs/ultramodern-package-source.json',
737
+ modernPackageSpecifier: (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageVersion)(packageSource),
738
+ generatedWorkspacePackageSpecifier: external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION
739
+ },
740
+ agentSkills: {
741
+ installDir: '.agents/skills',
742
+ source: {
743
+ repository: 'https://github.com/rstackjs/agent-skills',
744
+ commit: external_versions_cjs_namespaceObject.RSTACK_AGENT_SKILLS_COMMIT,
745
+ license: 'MIT',
746
+ licensePath: '.agents/rstackjs-agent-skills-LICENSE'
747
+ },
748
+ baseline: baselineAgentSkills,
749
+ moduleFederationSource: {
750
+ repository: 'https://github.com/module-federation/agent-skills',
751
+ commit: external_versions_cjs_namespaceObject.MODULE_FEDERATION_AGENT_SKILLS_COMMIT,
752
+ install: 'clone',
753
+ baseline: moduleFederationAgentSkills
754
+ },
755
+ privateSource: {
756
+ repository: 'https://github.com/TechsioCZ/skills',
757
+ install: 'clone-if-authorized',
758
+ baseline: privateAgentSkills
759
+ },
760
+ lockFile: '.agents/skills-lock.json'
761
+ },
762
+ validation: {
763
+ schemaValidation: true,
764
+ sourceValidation: [
765
+ 'source-type-supported',
766
+ 'checksum-verified',
767
+ 'provenance-present'
768
+ ],
769
+ materializationValidation: [
770
+ 'path-boundary-policy',
771
+ 'path-boundary-denylist',
772
+ 'no-path-traversal',
773
+ 'no-absolute-paths',
774
+ 'overwrite-policy-enforced'
775
+ ],
776
+ postMaterializationValidation: [
777
+ 'ultramodern-workspace-contract-check',
778
+ 'github-workflow-security-enforced',
779
+ 'pnpm-11-policy-enforced',
780
+ 'template-manifest-retained'
781
+ ],
782
+ expectedCommands: [
783
+ 'mise install',
784
+ 'pnpm install',
785
+ 'pnpm run i18n:boundaries',
786
+ 'pnpm run contract:check',
787
+ 'pnpm run performance:readiness'
788
+ ]
789
+ }
790
+ };
791
+ }
792
+ exports.baselineAgentSkills = __webpack_exports__.baselineAgentSkills;
793
+ exports.createAppConfigContract = __webpack_exports__.createAppConfigContract;
794
+ exports.createAppCssFederationContract = __webpack_exports__.createAppCssFederationContract;
795
+ exports.createAppGeneratedContract = __webpack_exports__.createAppGeneratedContract;
796
+ exports.createCssDedupeContract = __webpack_exports__.createCssDedupeContract;
797
+ exports.createCssFederationContract = __webpack_exports__.createCssFederationContract;
798
+ exports.createCssSsrContract = __webpack_exports__.createCssSsrContract;
799
+ exports.createDevelopmentOverlay = __webpack_exports__.createDevelopmentOverlay;
800
+ exports.createGeneratedContract = __webpack_exports__.createGeneratedContract;
801
+ exports.createOwnership = __webpack_exports__.createOwnership;
802
+ exports.createPackageSourceMetadata = __webpack_exports__.createPackageSourceMetadata;
803
+ exports.createPerformanceReadinessContract = __webpack_exports__.createPerformanceReadinessContract;
804
+ exports.createStylingContract = __webpack_exports__.createStylingContract;
805
+ exports.createTemplateManifest = __webpack_exports__.createTemplateManifest;
806
+ exports.createTopology = __webpack_exports__.createTopology;
807
+ exports.cssClassPrefix = __webpack_exports__.cssClassPrefix;
808
+ exports.cssLayerName = __webpack_exports__.cssLayerName;
809
+ exports.cssRole = __webpack_exports__.cssRole;
810
+ exports.moduleFederationAgentSkills = __webpack_exports__.moduleFederationAgentSkills;
811
+ exports.privateAgentSkills = __webpack_exports__.privateAgentSkills;
812
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
813
+ "baselineAgentSkills",
814
+ "createAppConfigContract",
815
+ "createAppCssFederationContract",
816
+ "createAppGeneratedContract",
817
+ "createCssDedupeContract",
818
+ "createCssFederationContract",
819
+ "createCssSsrContract",
820
+ "createDevelopmentOverlay",
821
+ "createGeneratedContract",
822
+ "createOwnership",
823
+ "createPackageSourceMetadata",
824
+ "createPerformanceReadinessContract",
825
+ "createStylingContract",
826
+ "createTemplateManifest",
827
+ "createTopology",
828
+ "cssClassPrefix",
829
+ "cssLayerName",
830
+ "cssRole",
831
+ "moduleFederationAgentSkills",
832
+ "privateAgentSkills"
833
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
834
+ Object.defineProperty(exports, '__esModule', {
835
+ value: true
836
+ });