@bleedingdev/modern-js-create 3.5.0-ultramodern.28 → 3.5.0-ultramodern.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ultramodern-tooling/commands.cjs +497 -155
- package/dist/cjs/ultramodern-tooling/config.cjs +149 -8
- package/dist/cjs/ultramodern-workspace/add-vertical.cjs +25 -0
- package/dist/cjs/ultramodern-workspace/api.cjs +44 -0
- package/dist/cjs/ultramodern-workspace/backend-federation.cjs +282 -0
- package/dist/cjs/ultramodern-workspace/contracts.cjs +24 -8
- package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +157 -0
- package/dist/cjs/ultramodern-workspace/delivery-unit.cjs +88 -0
- package/dist/cjs/ultramodern-workspace/descriptors.cjs +24 -0
- package/dist/cjs/ultramodern-workspace/module-federation.cjs +122 -44
- package/dist/cjs/ultramodern-workspace/package-json.cjs +11 -34
- package/dist/cjs/ultramodern-workspace/pnpm-workspace-policy-plan.cjs +166 -0
- package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +153 -0
- package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +175 -0
- package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +43 -62
- package/dist/cjs/ultramodern-workspace/workspace-validation-contract.cjs +97 -0
- package/dist/cjs/ultramodern-workspace/write-workspace.cjs +9 -3
- package/dist/cjs/ultramodern-workspace/zerops.cjs +100 -0
- package/dist/esm/ultramodern-tooling/commands.js +500 -158
- package/dist/esm/ultramodern-tooling/config.js +144 -9
- package/dist/esm/ultramodern-workspace/add-vertical.js +26 -1
- package/dist/esm/ultramodern-workspace/api.js +43 -2
- package/dist/esm/ultramodern-workspace/backend-federation.js +217 -0
- package/dist/esm/ultramodern-workspace/contracts.js +24 -8
- package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +108 -0
- package/dist/esm/ultramodern-workspace/delivery-unit.js +31 -0
- package/dist/esm/ultramodern-workspace/descriptors.js +13 -1
- package/dist/esm/ultramodern-workspace/module-federation.js +121 -36
- package/dist/esm/ultramodern-workspace/package-json.js +11 -31
- package/dist/esm/ultramodern-workspace/pnpm-workspace-policy-plan.js +113 -0
- package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +100 -0
- package/dist/esm/ultramodern-workspace/workspace-script-plan.js +110 -0
- package/dist/esm/ultramodern-workspace/workspace-scripts.js +35 -63
- package/dist/esm/ultramodern-workspace/workspace-validation-contract.js +59 -0
- package/dist/esm/ultramodern-workspace/write-workspace.js +11 -5
- package/dist/esm/ultramodern-workspace/zerops.js +62 -0
- package/dist/esm-node/ultramodern-tooling/commands.js +500 -158
- package/dist/esm-node/ultramodern-tooling/config.js +144 -9
- package/dist/esm-node/ultramodern-workspace/add-vertical.js +26 -1
- package/dist/esm-node/ultramodern-workspace/api.js +43 -2
- package/dist/esm-node/ultramodern-workspace/backend-federation.js +218 -0
- package/dist/esm-node/ultramodern-workspace/contracts.js +24 -8
- package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +109 -0
- package/dist/esm-node/ultramodern-workspace/delivery-unit.js +32 -0
- package/dist/esm-node/ultramodern-workspace/descriptors.js +13 -1
- package/dist/esm-node/ultramodern-workspace/module-federation.js +121 -36
- package/dist/esm-node/ultramodern-workspace/package-json.js +11 -31
- package/dist/esm-node/ultramodern-workspace/pnpm-workspace-policy-plan.js +114 -0
- package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +101 -0
- package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +111 -0
- package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +35 -63
- package/dist/esm-node/ultramodern-workspace/workspace-validation-contract.js +60 -0
- package/dist/esm-node/ultramodern-workspace/write-workspace.js +11 -5
- package/dist/esm-node/ultramodern-workspace/zerops.js +63 -0
- package/dist/types/ultramodern-tooling/config.d.ts +6 -0
- package/dist/types/ultramodern-workspace/api.d.ts +1 -0
- package/dist/types/ultramodern-workspace/backend-federation.d.ts +11 -0
- package/dist/types/ultramodern-workspace/contracts.d.ts +1 -1
- package/dist/types/ultramodern-workspace/delivery-unit-sync.d.ts +6 -0
- package/dist/types/ultramodern-workspace/delivery-unit.d.ts +27 -0
- package/dist/types/ultramodern-workspace/descriptors.d.ts +4 -0
- package/dist/types/ultramodern-workspace/module-federation.d.ts +4 -9
- package/dist/types/ultramodern-workspace/package-json.d.ts +0 -1
- package/dist/types/ultramodern-workspace/pnpm-workspace-policy-plan.d.ts +39 -0
- package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +18 -0
- package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +72 -0
- package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +3 -0
- package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +42 -0
- package/dist/types/ultramodern-workspace/zerops.d.ts +2 -0
- package/package.json +3 -3
- package/template-workspace/.gitignore.handlebars +1 -0
- package/template-workspace/scripts/bootstrap-agent-skills.mjs +11 -3
- package/templates/workspace-scripts/check-ultramodern-api-boundaries.mts +40 -2
- package/templates/workspace-scripts/generate-node-backend-federation.mjs +270 -0
- package/templates/workspace-scripts/materialize-zerops-runtime.mjs +448 -0
- package/templates/workspace-scripts/proof-cloudflare-version.mjs +234 -8
- package/templates/workspace-scripts/proof-node-backend-federation.mjs +729 -0
- package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +188 -2
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +322 -8
|
@@ -34,9 +34,12 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
34
34
|
createUltramodernConfig: ()=>createUltramodernConfig
|
|
35
35
|
});
|
|
36
36
|
const external_api_cjs_namespaceObject = require("./api.cjs");
|
|
37
|
+
const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
|
|
38
|
+
const external_delivery_unit_cjs_namespaceObject = require("./delivery-unit.cjs");
|
|
37
39
|
const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
|
|
38
40
|
const external_naming_cjs_namespaceObject = require("./naming.cjs");
|
|
39
41
|
const external_policy_cjs_namespaceObject = require("./policy.cjs");
|
|
42
|
+
const external_tooling_command_catalog_cjs_namespaceObject = require("./tooling-command-catalog.cjs");
|
|
40
43
|
const external_versions_cjs_namespaceObject = require("./versions.cjs");
|
|
41
44
|
function createTopology(scope, remotes = []) {
|
|
42
45
|
const shellHost = (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes);
|
|
@@ -79,6 +82,12 @@ function createTopology(scope, remotes = []) {
|
|
|
79
82
|
fallbackTelemetryEvent: 'modernjs:mv-runtime-parity',
|
|
80
83
|
sharedContractVersion: 'mf-ssr-contract-v1'
|
|
81
84
|
},
|
|
85
|
+
...(0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, vertical) ? {
|
|
86
|
+
backendFederation: (0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, vertical)
|
|
87
|
+
} : {},
|
|
88
|
+
...vertical.api ? {
|
|
89
|
+
deliveryUnit: (0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, vertical))
|
|
90
|
+
} : {},
|
|
82
91
|
...(0, external_api_cjs_namespaceObject.apiTopologyMetadata)(vertical) ? {
|
|
83
92
|
api: (0, external_api_cjs_namespaceObject.apiTopologyMetadata)(vertical)
|
|
84
93
|
} : {},
|
|
@@ -134,7 +143,7 @@ function createOwnership(scope, remotes = []) {
|
|
|
134
143
|
}))
|
|
135
144
|
};
|
|
136
145
|
}
|
|
137
|
-
function createDevelopmentOverlay(remotes = []) {
|
|
146
|
+
function createDevelopmentOverlay(scope, remotes = []) {
|
|
138
147
|
return {
|
|
139
148
|
schemaVersion: 1,
|
|
140
149
|
environment: 'development',
|
|
@@ -150,6 +159,10 @@ function createDevelopmentOverlay(remotes = []) {
|
|
|
150
159
|
remote.id,
|
|
151
160
|
`http://localhost:${remote.port}/mf-manifest.json`
|
|
152
161
|
])),
|
|
162
|
+
serverExecution: Object.fromEntries((0, external_descriptors_cjs_namespaceObject.verticalApiApps)(remotes).map((app)=>[
|
|
163
|
+
app.id,
|
|
164
|
+
(0, external_backend_federation_cjs_namespaceObject.createServerExecutionOverlay)(scope, app)
|
|
165
|
+
])),
|
|
153
166
|
apis: Object.fromEntries((0, external_descriptors_cjs_namespaceObject.verticalApiApps)(remotes).map((app)=>[
|
|
154
167
|
app.id,
|
|
155
168
|
`http://localhost:${app.port}${(0, external_descriptors_cjs_namespaceObject.resolveApiPrefix)(app)}`
|
|
@@ -226,6 +239,12 @@ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
|
|
|
226
239
|
tsConfigPath: './tsconfig.mf-types.json'
|
|
227
240
|
}
|
|
228
241
|
},
|
|
242
|
+
...(0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, app) ? {
|
|
243
|
+
backendFederation: (0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, app)
|
|
244
|
+
} : {},
|
|
245
|
+
...app.api ? {
|
|
246
|
+
deliveryUnit: (0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, app))
|
|
247
|
+
} : {},
|
|
229
248
|
...app.api ? {
|
|
230
249
|
api: {
|
|
231
250
|
stem: app.api.stem,
|
|
@@ -269,6 +288,9 @@ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
|
|
|
269
288
|
hostOnly: 'shell' === app.kind && 0 === Object.keys(app.exposes ?? {}).length
|
|
270
289
|
}))
|
|
271
290
|
},
|
|
291
|
+
backendFederation: {
|
|
292
|
+
apps: (0, external_descriptors_cjs_namespaceObject.verticalApiApps)(remotes).map((app)=>(0, external_backend_federation_cjs_namespaceObject.createBackendFederationSummary)(scope, app))
|
|
293
|
+
},
|
|
272
294
|
agentSkills: {
|
|
273
295
|
target: 'codex',
|
|
274
296
|
lockfile: './.codex/skills-lock.json',
|
|
@@ -283,13 +305,7 @@ function createUltramodernConfig(scope, modernVersion, packageSource, apps = [
|
|
|
283
305
|
tooling: {
|
|
284
306
|
command: 'modern-js-create ultramodern',
|
|
285
307
|
wrappers: {
|
|
286
|
-
|
|
287
|
-
typecheck: "scripts/ultramodern-typecheck.mts",
|
|
288
|
-
mfTypes: "scripts/assert-mf-types.mts",
|
|
289
|
-
publicSurface: "scripts/generate-public-surface-assets.mts",
|
|
290
|
-
cloudflareProof: "scripts/proof-cloudflare-version.mts",
|
|
291
|
-
performanceReadiness: "scripts/ultramodern-performance-readiness.mts",
|
|
292
|
-
migrateStrictEffect: "scripts/migrate-strict-effect.mts",
|
|
308
|
+
...(0, external_tooling_command_catalog_cjs_namespaceObject.createGeneratedToolingWrapperMap)(),
|
|
293
309
|
apiBoundaries: "scripts/check-ultramodern-api-boundaries.mts",
|
|
294
310
|
skills: "scripts/bootstrap-agent-skills.mts"
|
|
295
311
|
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
runSyncDeliveryUnit: ()=>runSyncDeliveryUnit
|
|
41
|
+
});
|
|
42
|
+
const external_node_fs_namespaceObject = require("node:fs");
|
|
43
|
+
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
44
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
45
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
46
|
+
const config_cjs_namespaceObject = require("../ultramodern-tooling/config.cjs");
|
|
47
|
+
const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
|
|
48
|
+
const external_delivery_unit_cjs_namespaceObject = require("./delivery-unit.cjs");
|
|
49
|
+
const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
|
|
50
|
+
const external_module_federation_cjs_namespaceObject = require("./module-federation.cjs");
|
|
51
|
+
const REFERENCE_TOPOLOGY_PATH = 'topology/reference-topology.json';
|
|
52
|
+
function readOption(args, name) {
|
|
53
|
+
const prefix = `${name}=`;
|
|
54
|
+
const inline = args.find((arg)=>arg.startsWith(prefix));
|
|
55
|
+
if (inline) {
|
|
56
|
+
const value = inline.slice(prefix.length);
|
|
57
|
+
if (!value) throw new Error(`${name} needs a value.`);
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
const index = args.indexOf(name);
|
|
61
|
+
if (-1 === index) return;
|
|
62
|
+
const value = args[index + 1];
|
|
63
|
+
if (!value || value.startsWith('--')) throw new Error(`${name} needs a value.`);
|
|
64
|
+
return value;
|
|
65
|
+
}
|
|
66
|
+
function isPlainObject(value) {
|
|
67
|
+
return 'object' == typeof value && null !== value && !Array.isArray(value);
|
|
68
|
+
}
|
|
69
|
+
function writeTextIfChanged(absolutePath, content) {
|
|
70
|
+
if (external_node_fs_default().existsSync(absolutePath) && external_node_fs_default().readFileSync(absolutePath, 'utf-8') === content) return false;
|
|
71
|
+
external_node_fs_default().mkdirSync(external_node_path_default().dirname(absolutePath), {
|
|
72
|
+
recursive: true
|
|
73
|
+
});
|
|
74
|
+
external_node_fs_default().writeFileSync(absolutePath, content, 'utf-8');
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
function writeJsonIfChanged(absolutePath, value) {
|
|
78
|
+
return writeTextIfChanged(absolutePath, `${JSON.stringify(value, null, 2)}\n`);
|
|
79
|
+
}
|
|
80
|
+
function stampDeliveryUnitIdentity(entry, scope, app) {
|
|
81
|
+
const block = (0, external_delivery_unit_cjs_namespaceObject.deliveryUnitContractBlock)((0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, app));
|
|
82
|
+
entry.deliveryUnit = block;
|
|
83
|
+
if (isPlainObject(entry.backendFederation)) {
|
|
84
|
+
entry.backendFederation.deliveryUnit = block;
|
|
85
|
+
if (!isPlainObject(entry.backendFederation.versionBoundary)) entry.backendFederation.versionBoundary = {};
|
|
86
|
+
entry.backendFederation.versionBoundary.identityRoot = 'deliveryUnit';
|
|
87
|
+
} else entry.backendFederation = (0, external_backend_federation_cjs_namespaceObject.createBackendFederationContract)(scope, app);
|
|
88
|
+
}
|
|
89
|
+
function runSyncDeliveryUnit(args, context) {
|
|
90
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
91
|
+
process.stdout.write(`Usage:
|
|
92
|
+
modern-js-create ultramodern sync-delivery-unit [--workspace <dir>]
|
|
93
|
+
|
|
94
|
+
Backfills the per-vertical delivery-unit identity blocks required by
|
|
95
|
+
\`ultramodern validate\` onto an existing generated workspace, in place and
|
|
96
|
+
through framework tooling only. For each full-stack vertical it writes the
|
|
97
|
+
delivery-unit block into .modernjs/ultramodern.json topology.apps[] and
|
|
98
|
+
topology/reference-topology.json verticals[] (plus backendFederation.deliveryUnit
|
|
99
|
+
and backendFederation.versionBoundary.identityRoot) and regenerates
|
|
100
|
+
verticals/<id>/shared/ultramodern-build.ts. Idempotent: a second run writes
|
|
101
|
+
nothing.
|
|
102
|
+
`);
|
|
103
|
+
return 0;
|
|
104
|
+
}
|
|
105
|
+
const workspaceOverride = readOption(args, '--workspace');
|
|
106
|
+
const workspaceRoot = workspaceOverride ? external_node_path_default().resolve(context.invocationCwd, workspaceOverride) : context.workspaceRoot;
|
|
107
|
+
const compactPath = external_node_path_default().join(workspaceRoot, external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH);
|
|
108
|
+
if (!external_node_fs_default().existsSync(compactPath)) throw new Error(`Missing ${external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH}. sync-delivery-unit needs the compact UltraModern config; run \`modern-js-create ultramodern migrate-strict-effect\` first.`);
|
|
109
|
+
const config = (0, config_cjs_namespaceObject.readUltramodernConfig)(workspaceRoot);
|
|
110
|
+
const scope = config.workspace.packageScope;
|
|
111
|
+
const apiApps = (0, config_cjs_namespaceObject.workspaceAppsFromToolingConfig)(config).filter((app)=>Boolean(app.api));
|
|
112
|
+
const written = [];
|
|
113
|
+
const unchanged = [];
|
|
114
|
+
const track = (relativePath, changed)=>{
|
|
115
|
+
(changed ? written : unchanged).push(relativePath);
|
|
116
|
+
};
|
|
117
|
+
const appById = new Map(apiApps.map((app)=>[
|
|
118
|
+
app.id,
|
|
119
|
+
app
|
|
120
|
+
]));
|
|
121
|
+
const compact = JSON.parse(external_node_fs_default().readFileSync(compactPath, 'utf-8'));
|
|
122
|
+
if (isPlainObject(compact) && Array.isArray(compact.topology?.apps)) for (const entry of compact.topology.apps){
|
|
123
|
+
if (!isPlainObject(entry)) continue;
|
|
124
|
+
const app = appById.get(String(entry.id));
|
|
125
|
+
if (app) stampDeliveryUnitIdentity(entry, scope, app);
|
|
126
|
+
}
|
|
127
|
+
track(external_descriptors_cjs_namespaceObject.ULTRAMODERN_CONFIG_PATH, writeJsonIfChanged(compactPath, compact));
|
|
128
|
+
const topologyPath = external_node_path_default().join(workspaceRoot, REFERENCE_TOPOLOGY_PATH);
|
|
129
|
+
if (external_node_fs_default().existsSync(topologyPath)) {
|
|
130
|
+
const topology = JSON.parse(external_node_fs_default().readFileSync(topologyPath, 'utf-8'));
|
|
131
|
+
if (isPlainObject(topology) && Array.isArray(topology.verticals)) for (const entry of topology.verticals){
|
|
132
|
+
if (!isPlainObject(entry)) continue;
|
|
133
|
+
const app = appById.get(String(entry.id));
|
|
134
|
+
if (app) stampDeliveryUnitIdentity(entry, scope, app);
|
|
135
|
+
}
|
|
136
|
+
track(REFERENCE_TOPOLOGY_PATH, writeJsonIfChanged(topologyPath, topology));
|
|
137
|
+
}
|
|
138
|
+
for (const app of apiApps){
|
|
139
|
+
const relativePath = external_node_path_default().join(app.directory, 'shared/ultramodern-build.ts');
|
|
140
|
+
const changed = writeTextIfChanged(external_node_path_default().join(workspaceRoot, relativePath), (0, external_module_federation_cjs_namespaceObject.createUltramodernBuildModule)(scope, app));
|
|
141
|
+
track(relativePath, changed);
|
|
142
|
+
}
|
|
143
|
+
if (0 === written.length) process.stdout.write('[ultramodern] sync-delivery-unit: already in sync; no files written.\n');
|
|
144
|
+
else {
|
|
145
|
+
process.stdout.write(`[ultramodern] sync-delivery-unit: wrote ${written.length} file(s):\n`);
|
|
146
|
+
for (const relativePath of written)process.stdout.write(` wrote ${relativePath}\n`);
|
|
147
|
+
for (const relativePath of unchanged)process.stdout.write(` in-sync ${relativePath}\n`);
|
|
148
|
+
}
|
|
149
|
+
return 0;
|
|
150
|
+
}
|
|
151
|
+
exports.runSyncDeliveryUnit = __webpack_exports__.runSyncDeliveryUnit;
|
|
152
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
153
|
+
"runSyncDeliveryUnit"
|
|
154
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
155
|
+
Object.defineProperty(exports, '__esModule', {
|
|
156
|
+
value: true
|
|
157
|
+
});
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
DELIVERY_UNIT_SCHEMA_VERSION: ()=>DELIVERY_UNIT_SCHEMA_VERSION,
|
|
41
|
+
createBuildMarker: ()=>createBuildMarker,
|
|
42
|
+
createDeliveryUnitRecord: ()=>createDeliveryUnitRecord,
|
|
43
|
+
deliveryUnitContractBlock: ()=>deliveryUnitContractBlock
|
|
44
|
+
});
|
|
45
|
+
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
46
|
+
var external_node_crypto_default = /*#__PURE__*/ __webpack_require__.n(external_node_crypto_namespaceObject);
|
|
47
|
+
const external_naming_cjs_namespaceObject = require("./naming.cjs");
|
|
48
|
+
const DELIVERY_UNIT_SCHEMA_VERSION = 1;
|
|
49
|
+
function createBuildMarker(scope, app) {
|
|
50
|
+
return external_node_crypto_default().createHash('sha256').update(`${scope}:${app.packageSuffix}:${app.id}:0.1.0`).digest('hex').slice(0, 16);
|
|
51
|
+
}
|
|
52
|
+
function deliveryUnitContractBlock(record) {
|
|
53
|
+
return {
|
|
54
|
+
schemaVersion: record.schemaVersion,
|
|
55
|
+
kind: record.kind,
|
|
56
|
+
unitId: record.unitId,
|
|
57
|
+
packageName: record.packageName,
|
|
58
|
+
version: record.version,
|
|
59
|
+
buildMarker: record.buildMarker,
|
|
60
|
+
sourceRevision: record.sourceRevision
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function createDeliveryUnitRecord(scope, app) {
|
|
64
|
+
return {
|
|
65
|
+
schemaVersion: DELIVERY_UNIT_SCHEMA_VERSION,
|
|
66
|
+
kind: 'microvertical-delivery-unit',
|
|
67
|
+
unitId: `${scope}/${app.domain ?? app.id}`,
|
|
68
|
+
appId: app.id,
|
|
69
|
+
packageName: (0, external_naming_cjs_namespaceObject.packageName)(scope, app.packageSuffix),
|
|
70
|
+
version: '0.1.0',
|
|
71
|
+
sourceRevision: 'workspace',
|
|
72
|
+
buildMarker: createBuildMarker(scope, app),
|
|
73
|
+
deployProfile: 'cloudflare-ssr-mf-effect-v1'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
exports.DELIVERY_UNIT_SCHEMA_VERSION = __webpack_exports__.DELIVERY_UNIT_SCHEMA_VERSION;
|
|
77
|
+
exports.createBuildMarker = __webpack_exports__.createBuildMarker;
|
|
78
|
+
exports.createDeliveryUnitRecord = __webpack_exports__.createDeliveryUnitRecord;
|
|
79
|
+
exports.deliveryUnitContractBlock = __webpack_exports__.deliveryUnitContractBlock;
|
|
80
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
81
|
+
"DELIVERY_UNIT_SCHEMA_VERSION",
|
|
82
|
+
"createBuildMarker",
|
|
83
|
+
"createDeliveryUnitRecord",
|
|
84
|
+
"deliveryUnitContractBlock"
|
|
85
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
86
|
+
Object.defineProperty(exports, '__esModule', {
|
|
87
|
+
value: true
|
|
88
|
+
});
|
|
@@ -31,6 +31,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
31
31
|
ULTRAMODERN_CONFIG_PATH: ()=>ULTRAMODERN_CONFIG_PATH,
|
|
32
32
|
appHasApi: ()=>appHasApi,
|
|
33
33
|
appI18nNamespace: ()=>appI18nNamespace,
|
|
34
|
+
createBackendFederationContainerEntry: ()=>createBackendFederationContainerEntry,
|
|
35
|
+
createBackendFederationManifestEnv: ()=>createBackendFederationManifestEnv,
|
|
36
|
+
createBackendFederationManifestUrl: ()=>createBackendFederationManifestUrl,
|
|
37
|
+
createBackendFederationName: ()=>createBackendFederationName,
|
|
34
38
|
createCloudflarePublicUrlEnv: ()=>createCloudflarePublicUrlEnv,
|
|
35
39
|
createCloudflareWorkerName: ()=>createCloudflareWorkerName,
|
|
36
40
|
createModuleFederationRemoteContracts: ()=>createModuleFederationRemoteContracts,
|
|
@@ -161,6 +165,18 @@ function resolveRemoteRefs(app, remotes = []) {
|
|
|
161
165
|
function createRemoteManifestEnv(remote) {
|
|
162
166
|
return `VERTICAL_${(0, external_naming_cjs_namespaceObject.toEnvSegment)(remote.domain ?? remote.id)}_MF_MANIFEST`;
|
|
163
167
|
}
|
|
168
|
+
function createBackendFederationManifestEnv(remote) {
|
|
169
|
+
return `VERTICAL_${(0, external_naming_cjs_namespaceObject.toEnvSegment)(remote.domain ?? remote.id)}_BACKEND_MF_MANIFEST`;
|
|
170
|
+
}
|
|
171
|
+
function createBackendFederationName(app) {
|
|
172
|
+
return `${app.mfName}Backend`;
|
|
173
|
+
}
|
|
174
|
+
function createBackendFederationManifestUrl(app) {
|
|
175
|
+
return `http://localhost:${app.port}/backend-mf-manifest.json`;
|
|
176
|
+
}
|
|
177
|
+
function createBackendFederationContainerEntry(app) {
|
|
178
|
+
return `http://localhost:${app.port}/backendRemoteEntry.mjs`;
|
|
179
|
+
}
|
|
164
180
|
function createModuleFederationRemoteContracts(app, remotes = []) {
|
|
165
181
|
return resolveRemoteRefs(app, remotes).map((remote)=>({
|
|
166
182
|
id: remote.id,
|
|
@@ -182,6 +198,10 @@ function appI18nNamespace(app) {
|
|
|
182
198
|
exports.ULTRAMODERN_CONFIG_PATH = __webpack_exports__.ULTRAMODERN_CONFIG_PATH;
|
|
183
199
|
exports.appHasApi = __webpack_exports__.appHasApi;
|
|
184
200
|
exports.appI18nNamespace = __webpack_exports__.appI18nNamespace;
|
|
201
|
+
exports.createBackendFederationContainerEntry = __webpack_exports__.createBackendFederationContainerEntry;
|
|
202
|
+
exports.createBackendFederationManifestEnv = __webpack_exports__.createBackendFederationManifestEnv;
|
|
203
|
+
exports.createBackendFederationManifestUrl = __webpack_exports__.createBackendFederationManifestUrl;
|
|
204
|
+
exports.createBackendFederationName = __webpack_exports__.createBackendFederationName;
|
|
185
205
|
exports.createCloudflarePublicUrlEnv = __webpack_exports__.createCloudflarePublicUrlEnv;
|
|
186
206
|
exports.createCloudflareWorkerName = __webpack_exports__.createCloudflareWorkerName;
|
|
187
207
|
exports.createModuleFederationRemoteContracts = __webpack_exports__.createModuleFederationRemoteContracts;
|
|
@@ -201,6 +221,10 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
201
221
|
"ULTRAMODERN_CONFIG_PATH",
|
|
202
222
|
"appHasApi",
|
|
203
223
|
"appI18nNamespace",
|
|
224
|
+
"createBackendFederationContainerEntry",
|
|
225
|
+
"createBackendFederationManifestEnv",
|
|
226
|
+
"createBackendFederationManifestUrl",
|
|
227
|
+
"createBackendFederationName",
|
|
204
228
|
"createCloudflarePublicUrlEnv",
|
|
205
229
|
"createCloudflareWorkerName",
|
|
206
230
|
"createModuleFederationRemoteContracts",
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.n = (module)=>{
|
|
5
|
-
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
-
__webpack_require__.d(getter, {
|
|
7
|
-
a: getter
|
|
8
|
-
});
|
|
9
|
-
return getter;
|
|
10
|
-
};
|
|
11
|
-
})();
|
|
12
3
|
(()=>{
|
|
13
4
|
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
5
|
var define = (defs, kind)=>{
|
|
@@ -38,7 +29,8 @@ var __webpack_exports__ = {};
|
|
|
38
29
|
__webpack_require__.r(__webpack_exports__);
|
|
39
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
40
31
|
createAppModernConfig: ()=>createAppModernConfig,
|
|
41
|
-
|
|
32
|
+
createBackendModuleFederationConfig: ()=>createBackendModuleFederationConfig,
|
|
33
|
+
createBuildMarker: ()=>external_delivery_unit_cjs_namespaceObject.createBuildMarker,
|
|
42
34
|
createModuleFederationRemoteUrlHelpers: ()=>createModuleFederationRemoteUrlHelpers,
|
|
43
35
|
createModuleFederationRemotesConfig: ()=>createModuleFederationRemotesConfig,
|
|
44
36
|
createRemoteModuleFederationConfig: ()=>createRemoteModuleFederationConfig,
|
|
@@ -48,14 +40,14 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
48
40
|
createUltramodernBuildReexportModule: ()=>createUltramodernBuildReexportModule,
|
|
49
41
|
formatTsObjectLiteral: ()=>formatTsObjectLiteral
|
|
50
42
|
});
|
|
51
|
-
const
|
|
52
|
-
|
|
43
|
+
const external_backend_federation_cjs_namespaceObject = require("./backend-federation.cjs");
|
|
44
|
+
const external_delivery_unit_cjs_namespaceObject = require("./delivery-unit.cjs");
|
|
53
45
|
const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
|
|
54
46
|
const external_naming_cjs_namespaceObject = require("./naming.cjs");
|
|
55
47
|
const external_policy_cjs_namespaceObject = require("./policy.cjs");
|
|
56
48
|
const external_types_cjs_namespaceObject = require("./types.cjs");
|
|
57
49
|
const external_versions_cjs_namespaceObject = require("./versions.cjs");
|
|
58
|
-
function createAppModernConfig(scope, app) {
|
|
50
|
+
function createAppModernConfig(scope, app, remotes = []) {
|
|
59
51
|
const bffImport = (0, external_descriptors_cjs_namespaceObject.appHasApi)(app) ? "import { bffPlugin } from '@modern-js/plugin-bff';\n" : '';
|
|
60
52
|
const bffConfig = (0, external_descriptors_cjs_namespaceObject.appHasApi)(app) ? ` bff: {
|
|
61
53
|
effect: {
|
|
@@ -70,6 +62,19 @@ function createAppModernConfig(scope, app) {
|
|
|
70
62
|
},
|
|
71
63
|
` : '';
|
|
72
64
|
const bffPluginEntry = (0, external_descriptors_cjs_namespaceObject.appHasApi)(app) ? ' bffPlugin(),\n' : '';
|
|
65
|
+
const serviceBindings = 'shell' === app.kind ? remotes.filter(external_descriptors_cjs_namespaceObject.appHasApi) : [];
|
|
66
|
+
const serviceBindingsConfig = serviceBindings.length > 0 ? ` services: [
|
|
67
|
+
${serviceBindings.map((service)=>` {
|
|
68
|
+
binding:
|
|
69
|
+
envValue('${(0, external_backend_federation_cjs_namespaceObject.createWorkerBindingEnv)(service)}') ??
|
|
70
|
+
'${(0, external_backend_federation_cjs_namespaceObject.createWorkerBindingName)(service)}',
|
|
71
|
+
prefix: '${(0, external_descriptors_cjs_namespaceObject.resolveApiPrefix)(service)}',
|
|
72
|
+
service:
|
|
73
|
+
envValue('${(0, external_backend_federation_cjs_namespaceObject.createDispatchWorkerNameEnv)(service)}') ??
|
|
74
|
+
'${(0, external_descriptors_cjs_namespaceObject.createCloudflareWorkerName)(scope, service)}',
|
|
75
|
+
},`).join('\n')}
|
|
76
|
+
],
|
|
77
|
+
` : '';
|
|
73
78
|
const defaultAssetPrefixSource = 'shell' === app.kind ? "const defaultAssetPrefix = '/';" : `const remoteAssetOrigin =
|
|
74
79
|
configuredCloudflareUrl ||
|
|
75
80
|
inferredCloudflareUrl ||
|
|
@@ -99,6 +104,13 @@ const zephyrEnabled = process.env['ULTRAMODERN_ZEPHYR'] !== 'false';
|
|
|
99
104
|
const cloudflareDeployEnabled =
|
|
100
105
|
process.env['MODERNJS_DEPLOY'] === 'cloudflare';
|
|
101
106
|
|
|
107
|
+
const zephyrWarn = (error: unknown) => {
|
|
108
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
109
|
+
console.warn(
|
|
110
|
+
\`[ultramodern] zephyr-rspack-plugin failed; continuing without Zephyr (set ULTRAMODERN_ZEPHYR=false to disable it): \${message}\`,
|
|
111
|
+
);
|
|
112
|
+
};
|
|
113
|
+
|
|
102
114
|
const zephyrRspackPlugin = () => ({
|
|
103
115
|
name: 'ultramodern-zephyr-rspack-plugin',
|
|
104
116
|
pre: ['@modern-js/plugin-module-federation-config'],
|
|
@@ -112,7 +124,17 @@ const zephyrRspackPlugin = () => ({
|
|
|
112
124
|
if (!zephyrEnabled) {
|
|
113
125
|
return;
|
|
114
126
|
}
|
|
115
|
-
api.modifyRspackConfig(config =>
|
|
127
|
+
api.modifyRspackConfig(config => {
|
|
128
|
+
try {
|
|
129
|
+
return Promise.resolve(withZephyrRspack()(config)).catch(error => {
|
|
130
|
+
zephyrWarn(error);
|
|
131
|
+
return config;
|
|
132
|
+
});
|
|
133
|
+
} catch (error) {
|
|
134
|
+
zephyrWarn(error);
|
|
135
|
+
return config;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
116
138
|
},
|
|
117
139
|
});
|
|
118
140
|
|
|
@@ -173,12 +195,12 @@ ${bffConfig} ...(cloudflareDeployEnabled
|
|
|
173
195
|
? {
|
|
174
196
|
deploy: {
|
|
175
197
|
worker: {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
},
|
|
198
|
+
compatibilityDate: '${external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE}',
|
|
199
|
+
name: cloudflareWorkerName,
|
|
200
|
+
security: ${(0, external_policy_cjs_namespaceObject.formatTsJsonValue)((0, external_types_cjs_namespaceObject.sortJsonValue)((0, external_policy_cjs_namespaceObject.createCloudflareSecurityContract)()), 16)},
|
|
201
|
+
${serviceBindingsConfig} ssr: true,
|
|
181
202
|
},
|
|
203
|
+
},
|
|
182
204
|
}
|
|
183
205
|
: {}),
|
|
184
206
|
dev: {
|
|
@@ -397,6 +419,19 @@ ${remoteEntries}
|
|
|
397
419
|
},
|
|
398
420
|
`;
|
|
399
421
|
}
|
|
422
|
+
function createModuleFederationDtsConfig(hasExposes) {
|
|
423
|
+
return hasExposes ? ` dts: {
|
|
424
|
+
displayErrorInTerminal: true,
|
|
425
|
+
generateTypes: {
|
|
426
|
+
compilerInstance: 'tsgo',
|
|
427
|
+
},
|
|
428
|
+
tsConfigPath: './tsconfig.mf-types.json',
|
|
429
|
+
},` : ` dts: {
|
|
430
|
+
consumeTypes: true,
|
|
431
|
+
generateTypes: false,
|
|
432
|
+
tsConfigPath: './tsconfig.mf-types.json',
|
|
433
|
+
},`;
|
|
434
|
+
}
|
|
400
435
|
function createShellModuleFederationConfig(scope, remotes = []) {
|
|
401
436
|
const shellHost = {
|
|
402
437
|
...external_descriptors_cjs_namespaceObject.shellApp,
|
|
@@ -425,13 +460,7 @@ const moduleFederationConfig: Parameters<
|
|
|
425
460
|
dev: {
|
|
426
461
|
disableDynamicRemoteTypeHints: true,
|
|
427
462
|
},
|
|
428
|
-
|
|
429
|
-
displayErrorInTerminal: true,
|
|
430
|
-
generateTypes: {
|
|
431
|
-
compilerInstance: 'tsgo',
|
|
432
|
-
},
|
|
433
|
-
tsConfigPath: './tsconfig.mf-types.json',
|
|
434
|
-
},
|
|
463
|
+
${createModuleFederationDtsConfig(false)}
|
|
435
464
|
filename: 'remoteEntry.js',
|
|
436
465
|
name: '${external_descriptors_cjs_namespaceObject.shellApp.mfName}',
|
|
437
466
|
${createModuleFederationRemotesConfig(scope, shellHost, remotes)}${createSharedModuleFederationConfig()},
|
|
@@ -441,25 +470,75 @@ ${createModuleFederationRemotesConfig(scope, shellHost, remotes)}${createSharedM
|
|
|
441
470
|
export default moduleFederationConfig;
|
|
442
471
|
`;
|
|
443
472
|
}
|
|
444
|
-
function
|
|
445
|
-
return
|
|
473
|
+
function createBackendModuleFederationConfig(app) {
|
|
474
|
+
return `// @effect-diagnostics nodeBuiltinImport:off
|
|
475
|
+
import { createRequire } from 'node:module';
|
|
476
|
+
import { createModuleFederationConfig } from '@module-federation/modern-js-v3';
|
|
477
|
+
import { dependencies } from './package.json';
|
|
478
|
+
|
|
479
|
+
const require = createRequire(import.meta.url);
|
|
480
|
+
const bffVersion = (
|
|
481
|
+
require('@modern-js/plugin-bff/package.json') as { version: string }
|
|
482
|
+
).version;
|
|
483
|
+
const effectVersion = (
|
|
484
|
+
require('effect/package.json') as { version: string }
|
|
485
|
+
).version;
|
|
486
|
+
|
|
487
|
+
const moduleFederationConfig: Parameters<
|
|
488
|
+
typeof createModuleFederationConfig
|
|
489
|
+
>[0] = createModuleFederationConfig({
|
|
490
|
+
dts: false,
|
|
491
|
+
exposes: {
|
|
492
|
+
'./effect-api': './api/effect-api.ts',
|
|
493
|
+
},
|
|
494
|
+
filename: 'backendRemoteEntry.mjs',
|
|
495
|
+
name: '${(0, external_descriptors_cjs_namespaceObject.createBackendFederationName)(app)}',
|
|
496
|
+
shared: {
|
|
497
|
+
'@modern-js/plugin-bff': {
|
|
498
|
+
requiredVersion: bffVersion,
|
|
499
|
+
singleton: true,
|
|
500
|
+
treeShaking: false,
|
|
501
|
+
},
|
|
502
|
+
'@module-federation/runtime': {
|
|
503
|
+
requiredVersion: dependencies['@module-federation/runtime'],
|
|
504
|
+
singleton: true,
|
|
505
|
+
treeShaking: false,
|
|
506
|
+
},
|
|
507
|
+
effect: {
|
|
508
|
+
requiredVersion: effectVersion,
|
|
509
|
+
singleton: true,
|
|
510
|
+
treeShaking: false,
|
|
511
|
+
},
|
|
512
|
+
},
|
|
513
|
+
treeShakingSharedExcludePlugins: ['RspackModuleFederationPlugin'],
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
export default moduleFederationConfig;
|
|
517
|
+
`;
|
|
446
518
|
}
|
|
447
519
|
function createUltramodernBuildModule(scope, app) {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
520
|
+
const record = (0, external_delivery_unit_cjs_namespaceObject.createDeliveryUnitRecord)(scope, app);
|
|
521
|
+
return `export const ultramodernDeliveryUnit = {
|
|
522
|
+
appId: '${record.appId}',
|
|
523
|
+
build: '${record.buildMarker}',
|
|
524
|
+
deployProfile: '${record.deployProfile}',
|
|
525
|
+
kind: '${record.kind}',
|
|
526
|
+
packageName: '${record.packageName}',
|
|
527
|
+
schemaVersion: ${record.schemaVersion},
|
|
528
|
+
sourceRevision: '${record.sourceRevision}',
|
|
529
|
+
unitId: '${record.unitId}',
|
|
530
|
+
version: '${record.version}',
|
|
454
531
|
} as const;
|
|
455
532
|
|
|
533
|
+
export const ultramodernVerticalIdentity = ultramodernDeliveryUnit;
|
|
534
|
+
|
|
456
535
|
export const ultramodernUiMarker = {
|
|
457
|
-
...
|
|
536
|
+
...ultramodernDeliveryUnit,
|
|
458
537
|
surface: 'ui',
|
|
459
538
|
} as const;
|
|
460
539
|
|
|
461
540
|
export const ultramodernApiMarker = {
|
|
462
|
-
...
|
|
541
|
+
...ultramodernDeliveryUnit,
|
|
463
542
|
surface: 'api',
|
|
464
543
|
} as const;
|
|
465
544
|
`;
|
|
@@ -467,6 +546,7 @@ export const ultramodernApiMarker = {
|
|
|
467
546
|
function createUltramodernBuildReexportModule() {
|
|
468
547
|
return `export {
|
|
469
548
|
ultramodernApiMarker,
|
|
549
|
+
ultramodernDeliveryUnit,
|
|
470
550
|
ultramodernUiMarker,
|
|
471
551
|
ultramodernVerticalIdentity,
|
|
472
552
|
} from '../shared/ultramodern-build';
|
|
@@ -474,7 +554,9 @@ function createUltramodernBuildReexportModule() {
|
|
|
474
554
|
}
|
|
475
555
|
function createRemoteModuleFederationConfig(scope, app, remotes = []) {
|
|
476
556
|
const exposes = formatTsObjectLiteral(app.exposes ?? {});
|
|
477
|
-
|
|
557
|
+
const hasExposes = Object.keys(app.exposes ?? {}).length > 0;
|
|
558
|
+
const hostOnlyMarker = hasExposes ? '' : '\n// ultramodern-mf: no-exposes';
|
|
559
|
+
return `// @effect-diagnostics nodeBuiltinImport:off${hostOnlyMarker}
|
|
478
560
|
import { createRequire } from 'node:module';
|
|
479
561
|
import { createModuleFederationConfig } from '@module-federation/modern-js-v3';
|
|
480
562
|
import { dependencies } from './package.json';
|
|
@@ -496,13 +578,7 @@ const moduleFederationConfig: Parameters<
|
|
|
496
578
|
dev: {
|
|
497
579
|
disableDynamicRemoteTypeHints: true,
|
|
498
580
|
},
|
|
499
|
-
|
|
500
|
-
displayErrorInTerminal: true,
|
|
501
|
-
generateTypes: {
|
|
502
|
-
compilerInstance: 'tsgo',
|
|
503
|
-
},
|
|
504
|
-
tsConfigPath: './tsconfig.mf-types.json',
|
|
505
|
-
},
|
|
581
|
+
${createModuleFederationDtsConfig(hasExposes)}
|
|
506
582
|
exposes: ${exposes},
|
|
507
583
|
filename: 'remoteEntry.js',
|
|
508
584
|
name: '${app.mfName}',
|
|
@@ -514,6 +590,7 @@ export default moduleFederationConfig;
|
|
|
514
590
|
`;
|
|
515
591
|
}
|
|
516
592
|
exports.createAppModernConfig = __webpack_exports__.createAppModernConfig;
|
|
593
|
+
exports.createBackendModuleFederationConfig = __webpack_exports__.createBackendModuleFederationConfig;
|
|
517
594
|
exports.createBuildMarker = __webpack_exports__.createBuildMarker;
|
|
518
595
|
exports.createModuleFederationRemoteUrlHelpers = __webpack_exports__.createModuleFederationRemoteUrlHelpers;
|
|
519
596
|
exports.createModuleFederationRemotesConfig = __webpack_exports__.createModuleFederationRemotesConfig;
|
|
@@ -525,6 +602,7 @@ exports.createUltramodernBuildReexportModule = __webpack_exports__.createUltramo
|
|
|
525
602
|
exports.formatTsObjectLiteral = __webpack_exports__.formatTsObjectLiteral;
|
|
526
603
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
527
604
|
"createAppModernConfig",
|
|
605
|
+
"createBackendModuleFederationConfig",
|
|
528
606
|
"createBuildMarker",
|
|
529
607
|
"createModuleFederationRemoteUrlHelpers",
|
|
530
608
|
"createModuleFederationRemotesConfig",
|