@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.
- package/README.md +13 -11
- package/dist/cjs/index.cjs +37 -4
- package/dist/cjs/locale/en.cjs +12 -2
- package/dist/cjs/locale/zh.cjs +12 -2
- package/dist/cjs/ultramodern-tooling/commands.cjs +185 -0
- package/dist/cjs/ultramodern-tooling/config.cjs +172 -0
- package/dist/cjs/ultramodern-workspace/add-vertical.cjs +79 -61
- package/dist/cjs/ultramodern-workspace/bridge-config.cjs +327 -0
- package/dist/cjs/ultramodern-workspace/codesmith.cjs +1 -0
- package/dist/cjs/ultramodern-workspace/contracts.cjs +121 -648
- package/dist/cjs/ultramodern-workspace/demo-components.cjs +26 -33
- package/dist/cjs/ultramodern-workspace/descriptors.cjs +4 -4
- package/dist/cjs/ultramodern-workspace/effect-api.cjs +230 -100
- package/dist/cjs/ultramodern-workspace/fs-io.cjs +117 -0
- package/dist/cjs/ultramodern-workspace/generation-result.cjs +1 -1
- package/dist/cjs/ultramodern-workspace/index.cjs +4 -0
- package/dist/cjs/ultramodern-workspace/mf-validation.cjs +571 -0
- package/dist/cjs/ultramodern-workspace/module-federation.cjs +51 -20
- package/dist/cjs/ultramodern-workspace/package-json.cjs +62 -19
- package/dist/cjs/ultramodern-workspace/policy.cjs +2 -2
- package/dist/cjs/ultramodern-workspace/public-api.cjs +4 -0
- package/dist/cjs/ultramodern-workspace/versions.cjs +5 -0
- package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +80 -43
- package/dist/cjs/ultramodern-workspace/write-workspace.cjs +63 -20
- package/dist/esm/index.js +37 -4
- package/dist/esm/locale/en.js +12 -2
- package/dist/esm/locale/zh.js +12 -2
- package/dist/esm/ultramodern-tooling/commands.js +132 -0
- package/dist/esm/ultramodern-tooling/config.js +120 -0
- package/dist/esm/ultramodern-workspace/add-vertical.js +81 -66
- package/dist/esm/ultramodern-workspace/bridge-config.js +270 -0
- package/dist/esm/ultramodern-workspace/codesmith.js +1 -0
- package/dist/esm/ultramodern-workspace/contracts.js +124 -603
- package/dist/esm/ultramodern-workspace/demo-components.js +26 -33
- package/dist/esm/ultramodern-workspace/descriptors.js +2 -2
- package/dist/esm/ultramodern-workspace/effect-api.js +230 -100
- package/dist/esm/ultramodern-workspace/fs-io.js +116 -2
- package/dist/esm/ultramodern-workspace/generation-result.js +2 -2
- package/dist/esm/ultramodern-workspace/index.js +1 -0
- package/dist/esm/ultramodern-workspace/mf-validation.js +516 -0
- package/dist/esm/ultramodern-workspace/module-federation.js +49 -21
- package/dist/esm/ultramodern-workspace/package-json.js +60 -20
- package/dist/esm/ultramodern-workspace/policy.js +2 -2
- package/dist/esm/ultramodern-workspace/public-api.js +1 -0
- package/dist/esm/ultramodern-workspace/versions.js +3 -1
- package/dist/esm/ultramodern-workspace/workspace-scripts.js +78 -26
- package/dist/esm/ultramodern-workspace/write-workspace.js +67 -27
- package/dist/esm-node/index.js +37 -4
- package/dist/esm-node/locale/en.js +12 -2
- package/dist/esm-node/locale/zh.js +12 -2
- package/dist/esm-node/ultramodern-tooling/commands.js +133 -0
- package/dist/esm-node/ultramodern-tooling/config.js +121 -0
- package/dist/esm-node/ultramodern-workspace/add-vertical.js +81 -66
- package/dist/esm-node/ultramodern-workspace/bridge-config.js +271 -0
- package/dist/esm-node/ultramodern-workspace/codesmith.js +1 -0
- package/dist/esm-node/ultramodern-workspace/contracts.js +124 -603
- package/dist/esm-node/ultramodern-workspace/demo-components.js +26 -33
- package/dist/esm-node/ultramodern-workspace/descriptors.js +2 -2
- package/dist/esm-node/ultramodern-workspace/effect-api.js +230 -100
- package/dist/esm-node/ultramodern-workspace/fs-io.js +116 -2
- package/dist/esm-node/ultramodern-workspace/generation-result.js +2 -2
- package/dist/esm-node/ultramodern-workspace/index.js +1 -0
- package/dist/esm-node/ultramodern-workspace/mf-validation.js +517 -0
- package/dist/esm-node/ultramodern-workspace/module-federation.js +49 -21
- package/dist/esm-node/ultramodern-workspace/package-json.js +60 -20
- package/dist/esm-node/ultramodern-workspace/policy.js +2 -2
- package/dist/esm-node/ultramodern-workspace/public-api.js +1 -0
- package/dist/esm-node/ultramodern-workspace/versions.js +3 -1
- package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +78 -26
- package/dist/esm-node/ultramodern-workspace/write-workspace.js +67 -27
- package/dist/types/locale/en.d.ts +10 -0
- package/dist/types/locale/index.d.ts +20 -0
- package/dist/types/locale/zh.d.ts +10 -0
- package/dist/types/ultramodern-tooling/commands.d.ts +1 -0
- package/dist/types/ultramodern-tooling/config.d.ts +43 -0
- package/dist/types/ultramodern-workspace/add-vertical.d.ts +5 -2
- package/dist/types/ultramodern-workspace/bridge-config.d.ts +64 -0
- package/dist/types/ultramodern-workspace/codesmith.d.ts +1 -0
- package/dist/types/ultramodern-workspace/contracts.d.ts +2 -17
- package/dist/types/ultramodern-workspace/descriptors.d.ts +1 -1
- package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -0
- package/dist/types/ultramodern-workspace/index.d.ts +2 -0
- package/dist/types/ultramodern-workspace/mf-validation.d.ts +27 -0
- package/dist/types/ultramodern-workspace/module-federation.d.ts +1 -0
- package/dist/types/ultramodern-workspace/package-json.d.ts +5 -3
- package/dist/types/ultramodern-workspace/public-api.d.ts +2 -0
- package/dist/types/ultramodern-workspace/types.d.ts +2 -0
- package/dist/types/ultramodern-workspace/versions.d.ts +2 -0
- package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +2 -7
- package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -2
- package/package.json +5 -3
- package/template-workspace/{.agents → .codex}/skills-lock.json +12 -12
- package/template-workspace/.gitignore.handlebars +3 -0
- package/template-workspace/AGENTS.md.handlebars +11 -5
- package/template-workspace/README.md.handlebars +15 -12
- package/template-workspace/oxfmt.config.ts +1 -0
- package/template-workspace/oxlint.config.ts +1 -0
- package/template-workspace/patches/@tanstack__router-core@1.171.13.patch +51 -0
- package/template-workspace/pnpm-workspace.yaml.handlebars +12 -0
- package/template-workspace/scripts/bootstrap-agent-skills.mjs +96 -69
- package/templates/app/shell-frame.tsx +1 -2
- package/templates/app/ultramodern-route-head.tsx.handlebars +5 -6
- package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +59 -7
- package/templates/workspace-scripts/check-ultramodern-api-boundaries.mjs +339 -0
- package/templates/workspace-scripts/generate-public-surface-assets.mjs +245 -8
- package/templates/workspace-scripts/proof-cloudflare-version.mjs +276 -8
- package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +35 -10
- package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +164 -1
- package/templates/workspace-scripts/ultramodern-typecheck.mjs +4 -2
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +949 -63
- /package/template-workspace/{.agents → .codex}/rstackjs-agent-skills-LICENSE +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsbuild-best-practices/SKILL.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/SKILL.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/command-map.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/common-analysis-patterns.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-common.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-rspack.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor-webpack.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/install-rsdoctor.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rsdoctor-analysis/references/rsdoctor-data-types.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rslib-best-practices/SKILL.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rslib-modern-package/SKILL.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rspack-best-practices/SKILL.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/SKILL.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/bottlenecks.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/references/tracing-guide.md +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rspack-tracing/scripts/analyze_trace.js +0 -0
- /package/template-workspace/{.agents → .codex}/skills/rstest-best-practices/SKILL.md +0 -0
|
@@ -45,6 +45,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
45
45
|
createSharedModuleFederationConfig: ()=>createSharedModuleFederationConfig,
|
|
46
46
|
createShellModuleFederationConfig: ()=>createShellModuleFederationConfig,
|
|
47
47
|
createUltramodernBuildModule: ()=>createUltramodernBuildModule,
|
|
48
|
+
createUltramodernBuildReexportModule: ()=>createUltramodernBuildReexportModule,
|
|
48
49
|
formatTsObjectLiteral: ()=>formatTsObjectLiteral
|
|
49
50
|
});
|
|
50
51
|
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
@@ -58,16 +59,23 @@ function createAppModernConfig(scope, app) {
|
|
|
58
59
|
const bffImport = (0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? "import { bffPlugin } from '@modern-js/plugin-bff';\n" : '';
|
|
59
60
|
const bffConfig = (0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? ` bff: {
|
|
60
61
|
effect: {
|
|
61
|
-
entry: './api/
|
|
62
|
+
entry: './api/index',
|
|
62
63
|
openapi: {
|
|
63
64
|
path: '/openapi.json',
|
|
64
65
|
},
|
|
66
|
+
strictEffectApproach: true,
|
|
65
67
|
},
|
|
66
68
|
prefix: '${(0, external_descriptors_cjs_namespaceObject.effectApiPrefix)(app)}',
|
|
67
69
|
runtimeFramework: 'effect',
|
|
68
70
|
},
|
|
69
71
|
` : '';
|
|
70
72
|
const bffPluginEntry = (0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? ' bffPlugin(),\n' : '';
|
|
73
|
+
const defaultAssetPrefixSource = 'shell' === app.kind ? "const defaultAssetPrefix = '/';" : `const remoteAssetOrigin =
|
|
74
|
+
configuredCloudflareUrl ||
|
|
75
|
+
inferredCloudflareUrl ||
|
|
76
|
+
(cloudflareDeployEnabled ? '/' : \`http://localhost:\${port}\`);
|
|
77
|
+
const defaultRemoteAssetPrefix = \`\${remoteAssetOrigin.replace(/\\/+$/u, '')}/\`;
|
|
78
|
+
const defaultAssetPrefix = defaultRemoteAssetPrefix;`;
|
|
71
79
|
return `// @effect-diagnostics processEnv:off
|
|
72
80
|
import {
|
|
73
81
|
appTools,
|
|
@@ -114,6 +122,8 @@ const configuredSiteUrl = envValue('MODERN_PUBLIC_SITE_URL');
|
|
|
114
122
|
const configuredCloudflareUrl = envValue('${(0, external_descriptors_cjs_namespaceObject.createCloudflarePublicUrlEnv)(app)}');
|
|
115
123
|
const configuredUltramodernAssetPrefix = envValue('ULTRAMODERN_ASSET_PREFIX');
|
|
116
124
|
const configuredModernAssetPrefix = envValue('MODERN_ASSET_PREFIX');
|
|
125
|
+
const moduleFederationDevServerOrigin =
|
|
126
|
+
envValue('ULTRAMODERN_MF_DEV_ORIGIN') || 'http://localhost:${external_descriptors_cjs_namespaceObject.shellApp.port}';
|
|
117
127
|
const cloudflareWorkersDevSubdomain = envValue(
|
|
118
128
|
'ULTRAMODERN_CLOUDFLARE_WORKERS_DEV_SUBDOMAIN',
|
|
119
129
|
);
|
|
@@ -128,12 +138,12 @@ const siteUrl =
|
|
|
128
138
|
configuredCloudflareUrl ||
|
|
129
139
|
inferredCloudflareUrl ||
|
|
130
140
|
\`http://localhost:\${port}\`;
|
|
131
|
-
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
//
|
|
141
|
+
${defaultAssetPrefixSource}
|
|
142
|
+
// Asset loading is intentionally independent from the canonical site URL.
|
|
143
|
+
// Module Federation remotes must publish an absolute publicPath so browsers
|
|
144
|
+
// load remoteEntry.js and exposed chunks from the remote origin, not the host.
|
|
135
145
|
const assetPrefix =
|
|
136
|
-
configuredModernAssetPrefix || configuredUltramodernAssetPrefix ||
|
|
146
|
+
configuredModernAssetPrefix || configuredUltramodernAssetPrefix || defaultAssetPrefix;
|
|
137
147
|
|
|
138
148
|
if (
|
|
139
149
|
cloudflareDeployEnabled &&
|
|
@@ -237,6 +247,9 @@ ${bffPluginEntry} moduleFederationPlugin(),
|
|
|
237
247
|
},
|
|
238
248
|
mainEntryName: 'index',
|
|
239
249
|
},
|
|
250
|
+
splitChunks: {
|
|
251
|
+
chunks: 'async',
|
|
252
|
+
},
|
|
240
253
|
tools: {
|
|
241
254
|
autoprefixer: {
|
|
242
255
|
overrideBrowserslist: ['defaults'],
|
|
@@ -245,12 +258,14 @@ ${bffPluginEntry} moduleFederationPlugin(),
|
|
|
245
258
|
chain.output
|
|
246
259
|
.uniqueName('${(0, external_naming_cjs_namespaceObject.createRspackUniqueName)(app)}')
|
|
247
260
|
.chunkLoadingGlobal('${(0, external_naming_cjs_namespaceObject.createRspackChunkLoadingGlobal)(app)}');
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
261
|
+
},
|
|
262
|
+
devServer: {
|
|
263
|
+
headers: {
|
|
264
|
+
'Access-Control-Allow-Headers':
|
|
265
|
+
'Accept, Authorization, Content-Type, X-Requested-With',
|
|
266
|
+
'Access-Control-Allow-Methods': 'GET, HEAD, OPTIONS',
|
|
267
|
+
'Access-Control-Allow-Origin': moduleFederationDevServerOrigin,
|
|
268
|
+
},
|
|
254
269
|
},
|
|
255
270
|
},
|
|
256
271
|
},
|
|
@@ -272,11 +287,6 @@ function createSharedModuleFederationConfig() {
|
|
|
272
287
|
singleton: true,
|
|
273
288
|
treeShaking: false,
|
|
274
289
|
},
|
|
275
|
-
'@modern-js/plugin-i18n/runtime': {
|
|
276
|
-
requiredVersion: pluginI18nVersion,
|
|
277
|
-
singleton: true,
|
|
278
|
-
treeShaking: false,
|
|
279
|
-
},
|
|
280
290
|
'@modern-js/plugin-tanstack/runtime': {
|
|
281
291
|
requiredVersion: pluginTanstackVersion,
|
|
282
292
|
singleton: true,
|
|
@@ -380,6 +390,7 @@ function createShellModuleFederationConfig(scope, remotes = []) {
|
|
|
380
390
|
verticalRefs: remotes.map((remote)=>remote.id)
|
|
381
391
|
};
|
|
382
392
|
return `// @effect-diagnostics nodeBuiltinImport:off processEnv:off
|
|
393
|
+
// ultramodern-mf: host-only
|
|
383
394
|
import { createRequire } from 'node:module';
|
|
384
395
|
import { createModuleFederationConfig } from '@module-federation/modern-js-v3';
|
|
385
396
|
import { dependencies } from './package.json';
|
|
@@ -392,7 +403,9 @@ const reactVersion = (require('react/package.json') as { version: string }).vers
|
|
|
392
403
|
const reactDomVersion = (require('react-dom/package.json') as { version: string }).version;
|
|
393
404
|
|
|
394
405
|
${createModuleFederationRemoteUrlHelpers(shellHost, remotes)}
|
|
395
|
-
|
|
406
|
+
const moduleFederationConfig: Parameters<
|
|
407
|
+
typeof createModuleFederationConfig
|
|
408
|
+
>[0] = createModuleFederationConfig({
|
|
396
409
|
bridge: {
|
|
397
410
|
enableBridgeRouter: false,
|
|
398
411
|
},
|
|
@@ -404,12 +417,15 @@ export default createModuleFederationConfig({
|
|
|
404
417
|
generateTypes: {
|
|
405
418
|
compilerInstance: 'tsgo',
|
|
406
419
|
},
|
|
420
|
+
tsConfigPath: './tsconfig.mf-types.json',
|
|
407
421
|
},
|
|
408
422
|
filename: 'remoteEntry.js',
|
|
409
423
|
name: '${external_descriptors_cjs_namespaceObject.shellApp.mfName}',
|
|
410
424
|
${createModuleFederationRemotesConfig(scope, shellHost, remotes)}${createSharedModuleFederationConfig()},
|
|
411
425
|
treeShakingSharedExcludePlugins: ['RspackModuleFederationPlugin'],
|
|
412
426
|
});
|
|
427
|
+
|
|
428
|
+
export default moduleFederationConfig;
|
|
413
429
|
`;
|
|
414
430
|
}
|
|
415
431
|
function createBuildMarker(scope, app) {
|
|
@@ -431,10 +447,18 @@ export const ultramodernUiMarker = {
|
|
|
431
447
|
|
|
432
448
|
export const ultramodernApiMarker = {
|
|
433
449
|
...ultramodernVerticalIdentity,
|
|
434
|
-
surface: '
|
|
450
|
+
surface: 'api',
|
|
435
451
|
} as const;
|
|
436
452
|
`;
|
|
437
453
|
}
|
|
454
|
+
function createUltramodernBuildReexportModule() {
|
|
455
|
+
return `export {
|
|
456
|
+
ultramodernApiMarker,
|
|
457
|
+
ultramodernUiMarker,
|
|
458
|
+
ultramodernVerticalIdentity,
|
|
459
|
+
} from '../shared/ultramodern-build';
|
|
460
|
+
`;
|
|
461
|
+
}
|
|
438
462
|
function createRemoteModuleFederationConfig(scope, app, remotes = []) {
|
|
439
463
|
const exposes = formatTsObjectLiteral(app.exposes ?? {});
|
|
440
464
|
return `// @effect-diagnostics nodeBuiltinImport:off
|
|
@@ -450,7 +474,9 @@ const reactVersion = (require('react/package.json') as { version: string }).vers
|
|
|
450
474
|
const reactDomVersion = (require('react-dom/package.json') as { version: string }).version;
|
|
451
475
|
|
|
452
476
|
${createModuleFederationRemoteUrlHelpers(app, remotes)}
|
|
453
|
-
|
|
477
|
+
const moduleFederationConfig: Parameters<
|
|
478
|
+
typeof createModuleFederationConfig
|
|
479
|
+
>[0] = createModuleFederationConfig({
|
|
454
480
|
bridge: {
|
|
455
481
|
enableBridgeRouter: false,
|
|
456
482
|
},
|
|
@@ -462,6 +488,7 @@ export default createModuleFederationConfig({
|
|
|
462
488
|
generateTypes: {
|
|
463
489
|
compilerInstance: 'tsgo',
|
|
464
490
|
},
|
|
491
|
+
tsConfigPath: './tsconfig.mf-types.json',
|
|
465
492
|
},
|
|
466
493
|
exposes: ${exposes},
|
|
467
494
|
filename: 'remoteEntry.js',
|
|
@@ -469,6 +496,8 @@ export default createModuleFederationConfig({
|
|
|
469
496
|
${createModuleFederationRemotesConfig(scope, app, remotes)}${createSharedModuleFederationConfig()},
|
|
470
497
|
treeShakingSharedExcludePlugins: ['RspackModuleFederationPlugin'],
|
|
471
498
|
});
|
|
499
|
+
|
|
500
|
+
export default moduleFederationConfig;
|
|
472
501
|
`;
|
|
473
502
|
}
|
|
474
503
|
exports.createAppModernConfig = __webpack_exports__.createAppModernConfig;
|
|
@@ -479,6 +508,7 @@ exports.createRemoteModuleFederationConfig = __webpack_exports__.createRemoteMod
|
|
|
479
508
|
exports.createSharedModuleFederationConfig = __webpack_exports__.createSharedModuleFederationConfig;
|
|
480
509
|
exports.createShellModuleFederationConfig = __webpack_exports__.createShellModuleFederationConfig;
|
|
481
510
|
exports.createUltramodernBuildModule = __webpack_exports__.createUltramodernBuildModule;
|
|
511
|
+
exports.createUltramodernBuildReexportModule = __webpack_exports__.createUltramodernBuildReexportModule;
|
|
482
512
|
exports.formatTsObjectLiteral = __webpack_exports__.formatTsObjectLiteral;
|
|
483
513
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
484
514
|
"createAppModernConfig",
|
|
@@ -489,6 +519,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
489
519
|
"createSharedModuleFederationConfig",
|
|
490
520
|
"createShellModuleFederationConfig",
|
|
491
521
|
"createUltramodernBuildModule",
|
|
522
|
+
"createUltramodernBuildReexportModule",
|
|
492
523
|
"formatTsObjectLiteral"
|
|
493
524
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
494
525
|
Object.defineProperty(exports, '__esModule', {
|
|
@@ -30,6 +30,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
appDependencies: ()=>appDependencies,
|
|
32
32
|
appDevDependencies: ()=>appDevDependencies,
|
|
33
|
+
createAppMfTypesTsConfig: ()=>createAppMfTypesTsConfig,
|
|
33
34
|
createAppPackage: ()=>createAppPackage,
|
|
34
35
|
createAppTsConfig: ()=>createAppTsConfig,
|
|
35
36
|
createEffectTsgoTypecheckCommand: ()=>createEffectTsgoTypecheckCommand,
|
|
@@ -125,7 +126,7 @@ const effectDiagnostics = [
|
|
|
125
126
|
'unnecessaryPipe',
|
|
126
127
|
'unnecessaryPipeChain'
|
|
127
128
|
];
|
|
128
|
-
function appDependencies(scope, packageSource, app, remotes = []) {
|
|
129
|
+
function appDependencies(scope, packageSource, app, remotes = [], bridge) {
|
|
129
130
|
const dependencies = {
|
|
130
131
|
'@modern-js/plugin-tanstack': (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)('@modern-js/plugin-tanstack', packageSource),
|
|
131
132
|
'@modern-js/plugin-i18n': (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)('@modern-js/plugin-i18n', packageSource),
|
|
@@ -140,8 +141,10 @@ function appDependencies(scope, packageSource, app, remotes = []) {
|
|
|
140
141
|
[(0, external_naming_cjs_namespaceObject.packageName)(scope, 'shared-design-tokens')]: external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION,
|
|
141
142
|
react: external_versions_cjs_namespaceObject.REACT_VERSION,
|
|
142
143
|
'react-dom': external_versions_cjs_namespaceObject.REACT_DOM_VERSION,
|
|
143
|
-
'react-router': external_versions_cjs_namespaceObject.REACT_ROUTER_VERSION
|
|
144
|
+
'react-router': external_versions_cjs_namespaceObject.REACT_ROUTER_VERSION,
|
|
145
|
+
'react-router-dom': external_versions_cjs_namespaceObject.REACT_ROUTER_VERSION
|
|
144
146
|
};
|
|
147
|
+
for (const dependency of bridge?.dependencies ?? [])dependencies[dependency] = external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION;
|
|
145
148
|
if ('shell' === app.kind) {
|
|
146
149
|
dependencies['@modern-js/plugin-bff'] = (0, external_ultramodern_package_source_cjs_namespaceObject.modernPackageSpecifier)('@modern-js/plugin-bff', packageSource);
|
|
147
150
|
for (const remote of (0, external_descriptors_cjs_namespaceObject.verticalEffectApps)(remotes))dependencies[(0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix)] = external_ultramodern_package_source_cjs_namespaceObject.WORKSPACE_PACKAGE_VERSION;
|
|
@@ -168,12 +171,28 @@ function appDevDependencies(packageSource, enableTailwind) {
|
|
|
168
171
|
wrangler: external_versions_cjs_namespaceObject.WRANGLER_VERSION
|
|
169
172
|
};
|
|
170
173
|
}
|
|
171
|
-
function createRootPackageJson(scope, packageSource, remotes = []) {
|
|
174
|
+
function createRootPackageJson(scope, packageSource, remotes = [], bridge) {
|
|
172
175
|
const shellFilter = `--filter ${(0, external_naming_cjs_namespaceObject.packageName)(scope, external_descriptors_cjs_namespaceObject.shellApp.packageSuffix)}`;
|
|
173
176
|
const remoteFilters = remotes.map((remote)=>`--filter ${(0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix)}`);
|
|
174
177
|
const remoteBuildPrefix = remotes.length > 0 ? 'ULTRAMODERN_ZEPHYR=false pnpm -r --filter "./verticals/*" run build && ' : '';
|
|
175
178
|
const remoteCloudflareBuildPrefix = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:build && ' : '';
|
|
176
179
|
const remoteCloudflareDeployPrefix = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:deploy && ' : '';
|
|
180
|
+
const generatedPackageTypecheck = 'pnpm -r --filter "./apps/*" --filter "./verticals/*" --filter "./packages/*" run typecheck';
|
|
181
|
+
const typecheck = bridge ? generatedPackageTypecheck : "node ./scripts/ultramodern-typecheck.mjs --build tsconfig.json";
|
|
182
|
+
const bridgeScripts = bridge ? {
|
|
183
|
+
...Object.fromEntries(bridge.gates.map((gate)=>[
|
|
184
|
+
`bridge:${gate.name}`,
|
|
185
|
+
`${gate.cwd ? `cd ${gate.cwd} && ` : ''}${gate.command}`
|
|
186
|
+
])),
|
|
187
|
+
'bridge:check': bridge.gates.map((gate)=>`pnpm run bridge:${gate.name}`).join(' && ')
|
|
188
|
+
} : {};
|
|
189
|
+
const bridgeCheck = bridge ? ' && pnpm bridge:check' : '';
|
|
190
|
+
const workspacePackages = [
|
|
191
|
+
'apps/*',
|
|
192
|
+
'verticals/*',
|
|
193
|
+
'packages/*',
|
|
194
|
+
...bridge?.workspacePackages.map((entry)=>entry.pattern) ?? []
|
|
195
|
+
];
|
|
177
196
|
return {
|
|
178
197
|
private: true,
|
|
179
198
|
name: scope,
|
|
@@ -195,7 +214,7 @@ function createRootPackageJson(scope, packageSource, remotes = []) {
|
|
|
195
214
|
'format:check': "oxfmt --check . '!repos/**'",
|
|
196
215
|
lint: 'oxlint apps verticals packages',
|
|
197
216
|
'lint:fix': 'oxlint apps verticals packages --fix',
|
|
198
|
-
typecheck
|
|
217
|
+
typecheck,
|
|
199
218
|
'cloudflare:build': `${remoteCloudflareBuildPrefix}pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm mf:types`,
|
|
200
219
|
'cloudflare:deploy': `${remoteCloudflareDeployPrefix}pnpm --filter "./apps/shell-super-app" run cloudflare:deploy`,
|
|
201
220
|
'cloudflare:proof': "node ./scripts/proof-cloudflare-version.mjs --out .codex/reports/cloudflare-version-proof/public-url-proof.json",
|
|
@@ -206,19 +225,17 @@ function createRootPackageJson(scope, packageSource, remotes = []) {
|
|
|
206
225
|
'mf:types': "node ./scripts/assert-mf-types.mjs",
|
|
207
226
|
'performance:readiness': "node ./scripts/ultramodern-performance-readiness.mjs",
|
|
208
227
|
'contract:check': "node ./scripts/validate-ultramodern-workspace.mjs",
|
|
228
|
+
'api:check': "node ./scripts/check-ultramodern-api-boundaries.mjs",
|
|
209
229
|
'i18n:boundaries': "node ./scripts/check-ultramodern-i18n-boundaries.mjs",
|
|
230
|
+
...bridgeScripts,
|
|
210
231
|
postinstall: "oxfmt . '!repos/**' && node ./scripts/bootstrap-agent-skills.mjs --postinstall",
|
|
211
|
-
check:
|
|
232
|
+
check: `pnpm format:check && pnpm lint && pnpm typecheck && pnpm skills:check && pnpm i18n:boundaries && pnpm api:check && pnpm contract:check && pnpm performance:readiness${bridgeCheck}`
|
|
212
233
|
},
|
|
213
234
|
engines: {
|
|
214
235
|
node: '>=26',
|
|
215
236
|
pnpm: '>=11'
|
|
216
237
|
},
|
|
217
|
-
workspaces:
|
|
218
|
-
'apps/*',
|
|
219
|
-
'verticals/*',
|
|
220
|
-
'packages/*'
|
|
221
|
-
],
|
|
238
|
+
workspaces: workspacePackages,
|
|
222
239
|
modernjs: {
|
|
223
240
|
preset: 'presetUltramodern',
|
|
224
241
|
workspace: 'ultramodern-superapp',
|
|
@@ -226,7 +243,7 @@ function createRootPackageJson(scope, packageSource, remotes = []) {
|
|
|
226
243
|
ownership: './topology/ownership.json',
|
|
227
244
|
packageSource: {
|
|
228
245
|
strategy: packageSource.strategy,
|
|
229
|
-
config: './.modernjs/ultramodern
|
|
246
|
+
config: './.modernjs/ultramodern.json#packageSource'
|
|
230
247
|
}
|
|
231
248
|
},
|
|
232
249
|
devDependencies: {
|
|
@@ -300,6 +317,10 @@ function createTsBuildInfoFile(packageDir) {
|
|
|
300
317
|
const cacheKey = packageDir.replace(/[^a-zA-Z0-9._-]+/gu, '__');
|
|
301
318
|
return `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(packageDir)}/node_modules/.cache/tsgo/${cacheKey}.tsbuildinfo`;
|
|
302
319
|
}
|
|
320
|
+
function createTsDeclarationOutDir(packageDir) {
|
|
321
|
+
const cacheKey = packageDir.replace(/[^a-zA-Z0-9._-]+/gu, '__');
|
|
322
|
+
return `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(packageDir)}/node_modules/.cache/tsgo/declarations/${cacheKey}`;
|
|
323
|
+
}
|
|
303
324
|
function createReferences(packageDir, references) {
|
|
304
325
|
return [
|
|
305
326
|
...new Set(references)
|
|
@@ -313,16 +334,24 @@ function createPackageTsConfig(packageDir, options = {}) {
|
|
|
313
334
|
} : options;
|
|
314
335
|
const include = resolvedOptions.include ?? [
|
|
315
336
|
'src',
|
|
337
|
+
'locales/**/*.json',
|
|
316
338
|
'modern.config.ts',
|
|
317
|
-
'module-federation.config.ts'
|
|
339
|
+
'module-federation.config.ts',
|
|
340
|
+
'package.json',
|
|
341
|
+
'shared'
|
|
318
342
|
];
|
|
319
|
-
if (resolvedOptions.includeApi) include.push('api'
|
|
343
|
+
if (resolvedOptions.includeApi) include.push('api');
|
|
320
344
|
const references = createReferences(packageDir, resolvedOptions.references ?? []);
|
|
321
345
|
const tsconfig = {
|
|
322
346
|
extends: `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(packageDir)}/tsconfig.base.json`,
|
|
323
347
|
compilerOptions: {
|
|
324
348
|
composite: true,
|
|
349
|
+
declaration: true,
|
|
350
|
+
declarationMap: false,
|
|
351
|
+
emitDeclarationOnly: true,
|
|
325
352
|
incremental: true,
|
|
353
|
+
noEmit: false,
|
|
354
|
+
outDir: createTsDeclarationOutDir(packageDir),
|
|
326
355
|
tsBuildInfoFile: createTsBuildInfoFile(packageDir)
|
|
327
356
|
},
|
|
328
357
|
include
|
|
@@ -340,6 +369,18 @@ function createAppTsConfig(app, remotes = []) {
|
|
|
340
369
|
references
|
|
341
370
|
});
|
|
342
371
|
}
|
|
372
|
+
function createAppMfTypesTsConfig(app) {
|
|
373
|
+
const exposedFiles = Object.values(app.exposes ?? {}).map((exposePath)=>exposePath.replace(/^\.\//u, ''));
|
|
374
|
+
return {
|
|
375
|
+
extends: './tsconfig.json',
|
|
376
|
+
include: [
|
|
377
|
+
...new Set([
|
|
378
|
+
...exposedFiles,
|
|
379
|
+
'src/modern-app-env.d.ts'
|
|
380
|
+
])
|
|
381
|
+
]
|
|
382
|
+
};
|
|
383
|
+
}
|
|
343
384
|
function createSharedPackageTsConfig(packageDir) {
|
|
344
385
|
return createPackageTsConfig(packageDir, {
|
|
345
386
|
include: [
|
|
@@ -360,7 +401,7 @@ function createRootTsConfig(apps = []) {
|
|
|
360
401
|
]
|
|
361
402
|
};
|
|
362
403
|
}
|
|
363
|
-
function createAppPackage(scope, app, packageSource, enableTailwind, remotes = []) {
|
|
404
|
+
function createAppPackage(scope, app, packageSource, enableTailwind, remotes = [], bridge) {
|
|
364
405
|
const publicSurfaceBuildCommand = (0, external_public_surface_cjs_namespaceObject.createPublicSurfaceGenerationCommand)(app, 'dist');
|
|
365
406
|
const publicSurfaceCloudflareBuildCommand = (0, external_public_surface_cjs_namespaceObject.createPublicSurfaceGenerationCommand)(app, 'dist');
|
|
366
407
|
const publicSurfaceCloudflareOutputCommand = (0, external_public_surface_cjs_namespaceObject.createPublicSurfaceGenerationCommand)(app, 'cloudflare');
|
|
@@ -388,19 +429,19 @@ function createAppPackage(scope, app, packageSource, enableTailwind, remotes = [
|
|
|
388
429
|
appId: app.id,
|
|
389
430
|
topology: `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(app.directory)}/topology/reference-topology.json`,
|
|
390
431
|
...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
|
|
391
|
-
apiRuntime: 'effect
|
|
432
|
+
apiRuntime: 'effect'
|
|
392
433
|
} : {}
|
|
393
434
|
},
|
|
394
435
|
'zephyr:dependencies': createZephyrDependencies(scope, app, remotes),
|
|
395
|
-
dependencies: appDependencies(scope, packageSource, app, remotes),
|
|
436
|
+
dependencies: appDependencies(scope, packageSource, app, remotes, bridge),
|
|
396
437
|
devDependencies: appDevDependencies(packageSource, enableTailwind)
|
|
397
438
|
};
|
|
398
439
|
if ((0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app)) Object.assign(packageExports, {
|
|
399
|
-
'./
|
|
400
|
-
'./
|
|
440
|
+
'./api': './shared/api.ts',
|
|
441
|
+
'./api/client': `./src/api/${app.effectApi.stem}-client.ts`
|
|
401
442
|
});
|
|
402
443
|
else if ('shell' === app.kind) Object.assign(packageExports, {
|
|
403
|
-
'./
|
|
444
|
+
'./api/clients': './src/api/vertical-clients.ts'
|
|
404
445
|
});
|
|
405
446
|
if (Object.keys(packageExports).length > 0) packageJson.exports = packageExports;
|
|
406
447
|
return packageJson;
|
|
@@ -434,6 +475,7 @@ function createSharedContractsIndex() {
|
|
|
434
475
|
}
|
|
435
476
|
exports.appDependencies = __webpack_exports__.appDependencies;
|
|
436
477
|
exports.appDevDependencies = __webpack_exports__.appDevDependencies;
|
|
478
|
+
exports.createAppMfTypesTsConfig = __webpack_exports__.createAppMfTypesTsConfig;
|
|
437
479
|
exports.createAppPackage = __webpack_exports__.createAppPackage;
|
|
438
480
|
exports.createAppTsConfig = __webpack_exports__.createAppTsConfig;
|
|
439
481
|
exports.createEffectTsgoTypecheckCommand = __webpack_exports__.createEffectTsgoTypecheckCommand;
|
|
@@ -449,6 +491,7 @@ exports.effectDiagnostics = __webpack_exports__.effectDiagnostics;
|
|
|
449
491
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
450
492
|
"appDependencies",
|
|
451
493
|
"appDevDependencies",
|
|
494
|
+
"createAppMfTypesTsConfig",
|
|
452
495
|
"createAppPackage",
|
|
453
496
|
"createAppTsConfig",
|
|
454
497
|
"createEffectTsgoTypecheckCommand",
|
|
@@ -57,7 +57,7 @@ function createCloudflareProofRoute(app) {
|
|
|
57
57
|
mfManifest: '/mf-manifest.json',
|
|
58
58
|
locale: `/locales/en/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app)}.json`,
|
|
59
59
|
...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
|
|
60
|
-
|
|
60
|
+
apiReadiness: `${(0, external_descriptors_cjs_namespaceObject.effectApiPrefix)(app)}/${(0, external_descriptors_cjs_namespaceObject.effectApiStem)(app)}/readiness`
|
|
61
61
|
} : {}
|
|
62
62
|
};
|
|
63
63
|
}
|
|
@@ -148,7 +148,7 @@ const PUBLIC_WEBSITE_POLICY = {
|
|
|
148
148
|
requireWebManifestWhenPresent: true
|
|
149
149
|
},
|
|
150
150
|
statusCodes: {
|
|
151
|
-
notFoundRoute: '/__ultramodern-smoke-missing',
|
|
151
|
+
notFoundRoute: '/__ultramodern-smoke-missing/nope',
|
|
152
152
|
unknownRouteStatus: 404
|
|
153
153
|
},
|
|
154
154
|
indexing: {
|
|
@@ -30,16 +30,20 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
addUltramodernVertical: ()=>external_add_vertical_cjs_namespaceObject.addUltramodernVertical,
|
|
32
32
|
generateUltramodernWorkspace: ()=>external_write_workspace_cjs_namespaceObject.generateUltramodernWorkspace,
|
|
33
|
+
normalizeUltramodernBridgeConfig: ()=>external_bridge_config_cjs_namespaceObject.normalizeUltramodernBridgeConfig,
|
|
33
34
|
planUltramodernVertical: ()=>external_add_vertical_cjs_namespaceObject.planUltramodernVertical
|
|
34
35
|
});
|
|
35
36
|
const external_add_vertical_cjs_namespaceObject = require("./add-vertical.cjs");
|
|
37
|
+
const external_bridge_config_cjs_namespaceObject = require("./bridge-config.cjs");
|
|
36
38
|
const external_write_workspace_cjs_namespaceObject = require("./write-workspace.cjs");
|
|
37
39
|
exports.addUltramodernVertical = __webpack_exports__.addUltramodernVertical;
|
|
38
40
|
exports.generateUltramodernWorkspace = __webpack_exports__.generateUltramodernWorkspace;
|
|
41
|
+
exports.normalizeUltramodernBridgeConfig = __webpack_exports__.normalizeUltramodernBridgeConfig;
|
|
39
42
|
exports.planUltramodernVertical = __webpack_exports__.planUltramodernVertical;
|
|
40
43
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
41
44
|
"addUltramodernVertical",
|
|
42
45
|
"generateUltramodernWorkspace",
|
|
46
|
+
"normalizeUltramodernBridgeConfig",
|
|
43
47
|
"planUltramodernVertical"
|
|
44
48
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
45
49
|
Object.defineProperty(exports, '__esModule', {
|
|
@@ -28,6 +28,7 @@ var __webpack_require__ = {};
|
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
const TANSTACK_ROUTER_VERSION = '1.170.16';
|
|
31
|
+
const TANSTACK_ROUTER_CORE_VERSION = '1.171.13';
|
|
31
32
|
const MODULE_FEDERATION_VERSION = '2.6.0';
|
|
32
33
|
const ZEPHYR_RSPACK_PLUGIN_VERSION = '1.1.1';
|
|
33
34
|
const ZEPHYR_AGENT_VERSION = '1.1.1';
|
|
@@ -57,6 +58,7 @@ const RSTACK_AGENT_SKILLS_COMMIT = '61c948b42512e223bad44b83af4080eba48b2677';
|
|
|
57
58
|
const MODULE_FEDERATION_AGENT_SKILLS_COMMIT = '07bb5b6c43ad457609e00c081b72d4c42508ec76';
|
|
58
59
|
const ultramodernWorkspaceVersions = {
|
|
59
60
|
tanstackRouter: TANSTACK_ROUTER_VERSION,
|
|
61
|
+
tanstackRouterCore: TANSTACK_ROUTER_CORE_VERSION,
|
|
60
62
|
moduleFederation: MODULE_FEDERATION_VERSION,
|
|
61
63
|
tailwind: TAILWIND_VERSION,
|
|
62
64
|
tailwindPostcss: TAILWIND_POSTCSS_VERSION
|
|
@@ -80,6 +82,7 @@ __webpack_require__.d(__webpack_exports__, {}, {
|
|
|
80
82
|
RSTACK_AGENT_SKILLS_COMMIT: RSTACK_AGENT_SKILLS_COMMIT,
|
|
81
83
|
TAILWIND_POSTCSS_VERSION: TAILWIND_POSTCSS_VERSION,
|
|
82
84
|
TAILWIND_VERSION: TAILWIND_VERSION,
|
|
85
|
+
TANSTACK_ROUTER_CORE_VERSION: TANSTACK_ROUTER_CORE_VERSION,
|
|
83
86
|
TANSTACK_ROUTER_VERSION: TANSTACK_ROUTER_VERSION,
|
|
84
87
|
TYPESCRIPT_NATIVE_PREVIEW_VERSION: TYPESCRIPT_NATIVE_PREVIEW_VERSION,
|
|
85
88
|
TYPESCRIPT_STABLE_VERSION: TYPESCRIPT_STABLE_VERSION,
|
|
@@ -110,6 +113,7 @@ exports.REACT_VERSION = __webpack_exports__.REACT_VERSION;
|
|
|
110
113
|
exports.RSTACK_AGENT_SKILLS_COMMIT = __webpack_exports__.RSTACK_AGENT_SKILLS_COMMIT;
|
|
111
114
|
exports.TAILWIND_POSTCSS_VERSION = __webpack_exports__.TAILWIND_POSTCSS_VERSION;
|
|
112
115
|
exports.TAILWIND_VERSION = __webpack_exports__.TAILWIND_VERSION;
|
|
116
|
+
exports.TANSTACK_ROUTER_CORE_VERSION = __webpack_exports__.TANSTACK_ROUTER_CORE_VERSION;
|
|
113
117
|
exports.TANSTACK_ROUTER_VERSION = __webpack_exports__.TANSTACK_ROUTER_VERSION;
|
|
114
118
|
exports.TYPESCRIPT_NATIVE_PREVIEW_VERSION = __webpack_exports__.TYPESCRIPT_NATIVE_PREVIEW_VERSION;
|
|
115
119
|
exports.TYPESCRIPT_STABLE_VERSION = __webpack_exports__.TYPESCRIPT_STABLE_VERSION;
|
|
@@ -140,6 +144,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
140
144
|
"RSTACK_AGENT_SKILLS_COMMIT",
|
|
141
145
|
"TAILWIND_POSTCSS_VERSION",
|
|
142
146
|
"TAILWIND_VERSION",
|
|
147
|
+
"TANSTACK_ROUTER_CORE_VERSION",
|
|
143
148
|
"TANSTACK_ROUTER_VERSION",
|
|
144
149
|
"TYPESCRIPT_NATIVE_PREVIEW_VERSION",
|
|
145
150
|
"TYPESCRIPT_STABLE_VERSION",
|
|
@@ -28,13 +28,8 @@ var __webpack_require__ = {};
|
|
|
28
28
|
var __webpack_exports__ = {};
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
-
createAssertMfTypesScript: ()=>createAssertMfTypesScript,
|
|
32
|
-
createCloudflareProofHelperScript: ()=>createCloudflareProofHelperScript,
|
|
33
|
-
createCloudflareVersionProofScript: ()=>createCloudflareVersionProofScript,
|
|
34
31
|
createPerformanceReadinessConfigScript: ()=>createPerformanceReadinessConfigScript,
|
|
35
|
-
|
|
36
|
-
createPublicSurfaceAssetsScript: ()=>createPublicSurfaceAssetsScript,
|
|
37
|
-
createUltramodernTypecheckScript: ()=>createUltramodernTypecheckScript,
|
|
32
|
+
createWorkspaceApiBoundaryValidationScript: ()=>createWorkspaceApiBoundaryValidationScript,
|
|
38
33
|
createWorkspaceI18nBoundaryValidationScript: ()=>createWorkspaceI18nBoundaryValidationScript,
|
|
39
34
|
createWorkspaceValidationScript: ()=>createWorkspaceValidationScript,
|
|
40
35
|
writeGeneratedWorkspaceScripts: ()=>writeGeneratedWorkspaceScripts
|
|
@@ -48,10 +43,73 @@ const external_policy_cjs_namespaceObject = require("./policy.cjs");
|
|
|
48
43
|
const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
|
|
49
44
|
const external_routes_cjs_namespaceObject = require("./routes.cjs");
|
|
50
45
|
const external_versions_cjs_namespaceObject = require("./versions.cjs");
|
|
51
|
-
function
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
function createToolWrapperScript(command, extraArgs = []) {
|
|
47
|
+
const commandJson = JSON.stringify(command);
|
|
48
|
+
const extraArgsJson = JSON.stringify(extraArgs);
|
|
49
|
+
return `#!/usr/bin/env node
|
|
50
|
+
import { spawnSync } from 'node:child_process';
|
|
51
|
+
import path from 'node:path';
|
|
52
|
+
import { fileURLToPath } from 'node:url';
|
|
53
|
+
|
|
54
|
+
const createBin = process.env.ULTRAMODERN_CREATE_BIN;
|
|
55
|
+
const forwardedArgs = process.argv.slice(2);
|
|
56
|
+
const workspaceRoot =
|
|
57
|
+
process.env.ULTRAMODERN_WORKSPACE_ROOT ??
|
|
58
|
+
path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
59
|
+
const ultramodernArgs = ['ultramodern', ${commandJson}, ...${extraArgsJson}, ...forwardedArgs];
|
|
60
|
+
const result = createBin
|
|
61
|
+
? spawnSync(process.execPath, [createBin, ...ultramodernArgs], {
|
|
62
|
+
env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
|
|
63
|
+
stdio: 'inherit',
|
|
64
|
+
})
|
|
65
|
+
: spawnSync('modern-js-create', ultramodernArgs, {
|
|
66
|
+
env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
|
|
67
|
+
shell: process.platform === 'win32',
|
|
68
|
+
stdio: 'inherit',
|
|
54
69
|
});
|
|
70
|
+
|
|
71
|
+
if (result.error) {
|
|
72
|
+
console.error(result.error.message);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
process.exit(result.status ?? 1);
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
function createSkillsToolWrapperScript() {
|
|
80
|
+
return `#!/usr/bin/env node
|
|
81
|
+
import { spawnSync } from 'node:child_process';
|
|
82
|
+
import path from 'node:path';
|
|
83
|
+
import { fileURLToPath } from 'node:url';
|
|
84
|
+
|
|
85
|
+
const createBin = process.env.ULTRAMODERN_CREATE_BIN;
|
|
86
|
+
const forwardedArgs = process.argv.slice(2);
|
|
87
|
+
const workspaceRoot =
|
|
88
|
+
process.env.ULTRAMODERN_WORKSPACE_ROOT ??
|
|
89
|
+
path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
90
|
+
const checkOnly = forwardedArgs.includes('--check');
|
|
91
|
+
const skillArgs = checkOnly
|
|
92
|
+
? ['skills', 'check', ...forwardedArgs.filter(arg => arg !== '--check')]
|
|
93
|
+
: ['skills', 'install', ...forwardedArgs];
|
|
94
|
+
const ultramodernArgs = ['ultramodern', ...skillArgs];
|
|
95
|
+
const result = createBin
|
|
96
|
+
? spawnSync(process.execPath, [createBin, ...ultramodernArgs], {
|
|
97
|
+
env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
|
|
98
|
+
stdio: 'inherit',
|
|
99
|
+
})
|
|
100
|
+
: spawnSync('modern-js-create', ultramodernArgs, {
|
|
101
|
+
env: { ...process.env, ULTRAMODERN_WORKSPACE_ROOT: workspaceRoot },
|
|
102
|
+
shell: process.platform === 'win32',
|
|
103
|
+
stdio: 'inherit',
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
if (result.error) {
|
|
107
|
+
console.error(result.error.message);
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
process.exit(result.status ?? 1);
|
|
112
|
+
`;
|
|
55
113
|
}
|
|
56
114
|
function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
|
|
57
115
|
const verticals = remotes.filter(external_descriptors_cjs_namespaceObject.appHasEffectApi).map((remote)=>({
|
|
@@ -105,53 +163,32 @@ function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
|
|
|
105
163
|
function createWorkspaceI18nBoundaryValidationScript() {
|
|
106
164
|
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/check-ultramodern-i18n-boundaries.mjs");
|
|
107
165
|
}
|
|
108
|
-
function
|
|
109
|
-
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/
|
|
110
|
-
}
|
|
111
|
-
function createCloudflareProofHelperScript() {
|
|
112
|
-
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-cloudflare-proof.mjs");
|
|
113
|
-
}
|
|
114
|
-
function createCloudflareVersionProofScript() {
|
|
115
|
-
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/proof-cloudflare-version.mjs");
|
|
166
|
+
function createWorkspaceApiBoundaryValidationScript() {
|
|
167
|
+
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/check-ultramodern-api-boundaries.mjs");
|
|
116
168
|
}
|
|
117
169
|
function createPerformanceReadinessConfigScript() {
|
|
118
170
|
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-performance-readiness.config.mjs");
|
|
119
171
|
}
|
|
120
|
-
function
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
function createUltramodernTypecheckScript() {
|
|
124
|
-
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-typecheck.mjs");
|
|
125
|
-
}
|
|
126
|
-
function writeGeneratedWorkspaceScripts(targetDir, scope, enableTailwind, remotes = []) {
|
|
127
|
-
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/assert-mf-types.mjs", createAssertMfTypesScript(remotes));
|
|
128
|
-
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/validate-ultramodern-workspace.mjs", createWorkspaceValidationScript(scope, enableTailwind, remotes));
|
|
172
|
+
function writeGeneratedWorkspaceScripts(targetDir, _scope, _enableTailwind, _remotes = []) {
|
|
173
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/assert-mf-types.mjs", createToolWrapperScript('mf-types'));
|
|
174
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/validate-ultramodern-workspace.mjs", createToolWrapperScript('validate'));
|
|
129
175
|
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/check-ultramodern-i18n-boundaries.mjs", createWorkspaceI18nBoundaryValidationScript());
|
|
130
|
-
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/
|
|
131
|
-
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/
|
|
132
|
-
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/proof-cloudflare-version.mjs",
|
|
176
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/check-ultramodern-api-boundaries.mjs", createWorkspaceApiBoundaryValidationScript());
|
|
177
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/generate-public-surface-assets.mjs", createToolWrapperScript('public-surface'));
|
|
178
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/proof-cloudflare-version.mjs", createToolWrapperScript('cloudflare-proof'));
|
|
133
179
|
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.config.mjs", createPerformanceReadinessConfigScript());
|
|
134
|
-
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.mjs",
|
|
135
|
-
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-typecheck.mjs",
|
|
180
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.mjs", createToolWrapperScript('performance-readiness'));
|
|
181
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-typecheck.mjs", createToolWrapperScript('typecheck'));
|
|
182
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/bootstrap-agent-skills.mjs", createSkillsToolWrapperScript());
|
|
136
183
|
}
|
|
137
|
-
exports.createAssertMfTypesScript = __webpack_exports__.createAssertMfTypesScript;
|
|
138
|
-
exports.createCloudflareProofHelperScript = __webpack_exports__.createCloudflareProofHelperScript;
|
|
139
|
-
exports.createCloudflareVersionProofScript = __webpack_exports__.createCloudflareVersionProofScript;
|
|
140
184
|
exports.createPerformanceReadinessConfigScript = __webpack_exports__.createPerformanceReadinessConfigScript;
|
|
141
|
-
exports.
|
|
142
|
-
exports.createPublicSurfaceAssetsScript = __webpack_exports__.createPublicSurfaceAssetsScript;
|
|
143
|
-
exports.createUltramodernTypecheckScript = __webpack_exports__.createUltramodernTypecheckScript;
|
|
185
|
+
exports.createWorkspaceApiBoundaryValidationScript = __webpack_exports__.createWorkspaceApiBoundaryValidationScript;
|
|
144
186
|
exports.createWorkspaceI18nBoundaryValidationScript = __webpack_exports__.createWorkspaceI18nBoundaryValidationScript;
|
|
145
187
|
exports.createWorkspaceValidationScript = __webpack_exports__.createWorkspaceValidationScript;
|
|
146
188
|
exports.writeGeneratedWorkspaceScripts = __webpack_exports__.writeGeneratedWorkspaceScripts;
|
|
147
189
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
148
|
-
"createAssertMfTypesScript",
|
|
149
|
-
"createCloudflareProofHelperScript",
|
|
150
|
-
"createCloudflareVersionProofScript",
|
|
151
190
|
"createPerformanceReadinessConfigScript",
|
|
152
|
-
"
|
|
153
|
-
"createPublicSurfaceAssetsScript",
|
|
154
|
-
"createUltramodernTypecheckScript",
|
|
191
|
+
"createWorkspaceApiBoundaryValidationScript",
|
|
155
192
|
"createWorkspaceI18nBoundaryValidationScript",
|
|
156
193
|
"createWorkspaceValidationScript",
|
|
157
194
|
"writeGeneratedWorkspaceScripts"
|