@bleedingdev/modern-js-app-tools-extensions 3.9.0-ultramodern.17 → 3.9.0-ultramodern.19
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/backend-federation-build/codegen.js +22 -16
- package/dist/cjs/build-config/build-environment.js +2 -141
- package/dist/cjs/build-config/public.js +2 -5
- package/dist/cjs/cloudflare-builder.js +0 -30
- package/dist/cjs/config.js +2 -5
- package/dist/cjs/deploy-output/trace-files.js +90 -0
- package/dist/cjs/release-identity.js +2 -0
- package/dist/cjs/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/dist/cjs/templates/cloudflare-entry.004-rendering-css.mjs +1 -1
- package/dist/esm/backend-federation-build/codegen.mjs +22 -16
- package/dist/esm/build-config/build-environment.mjs +1 -137
- package/dist/esm/build-config/public.mjs +1 -1
- package/dist/esm/cloudflare-builder.mjs +0 -30
- package/dist/esm/config.mjs +1 -1
- package/dist/esm/deploy-output/trace-files.mjs +38 -0
- package/dist/esm/release-identity.mjs +2 -0
- package/dist/esm/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/dist/esm/templates/cloudflare-entry.004-rendering-css.mjs +1 -1
- package/dist/esm-node/backend-federation-build/codegen.mjs +22 -16
- package/dist/esm-node/build-config/build-environment.mjs +1 -137
- package/dist/esm-node/build-config/public.mjs +1 -1
- package/dist/esm-node/cloudflare-builder.mjs +0 -30
- package/dist/esm-node/config.mjs +1 -1
- package/dist/esm-node/deploy-output/trace-files.mjs +39 -0
- package/dist/esm-node/release-identity.mjs +2 -0
- package/dist/esm-node/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/dist/esm-node/templates/cloudflare-entry.004-rendering-css.mjs +1 -1
- package/dist/types/build-config/build-environment.d.ts +0 -8
- package/dist/types/build-config/public.d.ts +1 -1
- package/dist/types/config.d.ts +1 -1
- package/dist/types/deploy-output/trace-files.d.ts +17 -0
- package/package.json +35 -17
- package/src/backend-federation-build/codegen.ts +22 -17
- package/src/build-config/build-environment.ts +0 -244
- package/src/build-config/public.ts +0 -1
- package/src/cloudflare/index.ts +0 -3
- package/src/cloudflare-builder.ts +0 -85
- package/src/config.ts +0 -1
- package/src/deploy-output/trace-files.ts +67 -0
- package/src/release-identity.ts +10 -0
- package/src/templates/cloudflare-entry.002-assets-routes.mjs +1 -1
- package/src/templates/cloudflare-entry.004-rendering-css.mjs +1 -1
- package/dist/cjs/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/dist/cjs/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/dist/cjs/templates/cloudflare-worker-path.mjs +0 -98
- package/dist/esm/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/dist/esm/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/dist/esm/templates/cloudflare-worker-path.mjs +0 -98
- package/dist/esm-node/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/dist/esm-node/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/dist/esm-node/templates/cloudflare-worker-path.mjs +0 -98
- package/dist/types/templates/cloudflare-worker-fs-promises.d.mts +0 -5
- package/dist/types/templates/cloudflare-worker-loadable-server.d.mts +0 -48
- package/dist/types/templates/cloudflare-worker-path.d.mts +0 -21
- package/src/templates/cloudflare-worker-fs-promises.mjs +0 -11
- package/src/templates/cloudflare-worker-loadable-server.mjs +0 -281
- package/src/templates/cloudflare-worker-path.mjs +0 -98
|
@@ -88,28 +88,34 @@ const createBackendRemoteEntrySource = async (workspaceRoot, app, effectApiPath,
|
|
|
88
88
|
} : {}
|
|
89
89
|
};
|
|
90
90
|
const source = `// Generated by Modern.js backend federation build.
|
|
91
|
-
import
|
|
91
|
+
import { adoptEffectBffShareScope } from '@modern-js/bff-effect/effect-edge';
|
|
92
92
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
93
|
+
// The expose evaluates lazily so defineEffectBff registers its handler
|
|
94
|
+
// factories with the registry the host shares through init().
|
|
95
|
+
let exposedModule;
|
|
96
|
+
const loadExposedModule = () =>
|
|
97
|
+
(exposedModule ??= import(${JSON.stringify(effectApiSpecifier)}).then(exposedNamespace => ({
|
|
98
|
+
...exposedNamespace,
|
|
99
|
+
backendFederationContract: {
|
|
100
|
+
...(exposedNamespace.backendFederationContract ?? {}),
|
|
101
|
+
compatibility: {
|
|
102
|
+
...(exposedNamespace.backendFederationContract?.compatibility ?? {}),
|
|
103
|
+
...${JSON.stringify(compatibility)},
|
|
104
|
+
},
|
|
105
|
+
name: ${JSON.stringify(app.backendName)},
|
|
106
|
+
role: 'microvertical-server',
|
|
107
|
+
runtimeFramework: 'effect',
|
|
108
|
+
strictEffectApproach: true,
|
|
100
109
|
},
|
|
101
|
-
|
|
102
|
-
role: 'microvertical-server',
|
|
103
|
-
runtimeFramework: 'effect',
|
|
104
|
-
strictEffectApproach: true,
|
|
105
|
-
},
|
|
106
|
-
};
|
|
110
|
+
})));
|
|
107
111
|
const exposedModules = {
|
|
108
|
-
${JSON.stringify(backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE)}:
|
|
112
|
+
${JSON.stringify(backend_federation_contracts_namespaceObject.BACKEND_FEDERATION_EFFECT_EXPOSE)}: loadExposedModule,
|
|
109
113
|
};
|
|
110
114
|
const __modernjsBackendFederation = ${JSON.stringify(containerMetadata)};
|
|
111
115
|
|
|
112
|
-
function init() {
|
|
116
|
+
function init(shareScope) {
|
|
117
|
+
return adoptEffectBffShareScope(shareScope);
|
|
118
|
+
}
|
|
113
119
|
|
|
114
120
|
function get(id) {
|
|
115
121
|
const load = exposedModules[id];
|
|
@@ -29,8 +29,7 @@ var __webpack_exports__ = {};
|
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
getBuildConfigEnvironment: ()=>getBuildConfigEnvironment,
|
|
32
|
-
resolveEffectTsgoCompiler: ()=>resolveEffectTsgoCompiler
|
|
33
|
-
withBuildConfigEnvironment: ()=>withBuildConfigEnvironment
|
|
32
|
+
resolveEffectTsgoCompiler: ()=>resolveEffectTsgoCompiler
|
|
34
33
|
});
|
|
35
34
|
const external_node_child_process_namespaceObject = require("node:child_process");
|
|
36
35
|
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
@@ -42,127 +41,6 @@ const EFFECT_TSGO_PACKAGE = '@effect/tsgo';
|
|
|
42
41
|
const EFFECT_TSGO_BIN = 'effect-tsgo';
|
|
43
42
|
const EFFECT_TSGO_RESOLUTION_ERROR = 'Unable to resolve the Effect TS-Go compiler. Install "@effect/tsgo" and a native TypeScript backend for this build config, or set EFFECT_TSGO_BIN.';
|
|
44
43
|
const executableEffectTsgoCompilers = new Map();
|
|
45
|
-
const BUILD_CONFIG_ENVIRONMENT_PLUGIN = 'ModernJsBuildConfigEnvironmentLeasePlugin';
|
|
46
|
-
const ENVIRONMENT_LEASE_REGISTRY_KEY = Symbol.for('@modern-js/app-tools/build-config-environment-lease-registry/v1');
|
|
47
|
-
const ENVIRONMENT_LEASE_REGISTRY_BRAND = Symbol.for('@modern-js/app-tools/build-config-environment-lease-registry-brand/v1');
|
|
48
|
-
const LIFECYCLE_HOOK_NAMES = [
|
|
49
|
-
'run',
|
|
50
|
-
'watchRun',
|
|
51
|
-
'afterDone',
|
|
52
|
-
'failed',
|
|
53
|
-
'shutdown',
|
|
54
|
-
'watchClose'
|
|
55
|
-
];
|
|
56
|
-
function restoreEnvironment(name, value) {
|
|
57
|
-
if (void 0 === value) delete process.env[name];
|
|
58
|
-
else process.env[name] = value;
|
|
59
|
-
}
|
|
60
|
-
function createEnvironmentLeaseRegistry() {
|
|
61
|
-
const environmentLeases = new Map();
|
|
62
|
-
return Object.freeze({
|
|
63
|
-
acquire (name, value) {
|
|
64
|
-
let lease = environmentLeases.get(name);
|
|
65
|
-
if (lease) {
|
|
66
|
-
if (lease.value !== value) throw new Error(`Build config environment "${name}" already has an active lease for a different value.`);
|
|
67
|
-
if (process.env[name] !== lease.value) throw new Error(`Build config environment lease for "${name}" lost ownership before another lease was acquired.`);
|
|
68
|
-
} else {
|
|
69
|
-
lease = {
|
|
70
|
-
originalValue: process.env[name],
|
|
71
|
-
owners: new Set(),
|
|
72
|
-
value
|
|
73
|
-
};
|
|
74
|
-
process.env[name] = value;
|
|
75
|
-
environmentLeases.set(name, lease);
|
|
76
|
-
}
|
|
77
|
-
const owner = Symbol(name);
|
|
78
|
-
lease.owners.add(owner);
|
|
79
|
-
let released = false;
|
|
80
|
-
return ()=>{
|
|
81
|
-
if (released) return;
|
|
82
|
-
if (environmentLeases.get(name) !== lease || !lease.owners.has(owner)) throw new Error(`Build config environment lease for "${name}" cannot be restored because its ownership record was lost.`);
|
|
83
|
-
released = true;
|
|
84
|
-
const lostOwnership = process.env[name] !== lease.value;
|
|
85
|
-
lease.owners.delete(owner);
|
|
86
|
-
if (0 === lease.owners.size) {
|
|
87
|
-
environmentLeases.delete(name);
|
|
88
|
-
restoreEnvironment(name, lease.originalValue);
|
|
89
|
-
} else if (lostOwnership) process.env[name] = lease.value;
|
|
90
|
-
if (lostOwnership) throw new Error(`Build config environment lease for "${name}" lost ownership before restoration.`);
|
|
91
|
-
};
|
|
92
|
-
},
|
|
93
|
-
brand: ENVIRONMENT_LEASE_REGISTRY_BRAND
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
function getEnvironmentLeaseRegistry() {
|
|
97
|
-
const descriptor = Object.getOwnPropertyDescriptor(process, ENVIRONMENT_LEASE_REGISTRY_KEY);
|
|
98
|
-
if (descriptor) {
|
|
99
|
-
const registry = descriptor.value;
|
|
100
|
-
if (descriptor.configurable || descriptor.enumerable || descriptor.writable || registry?.brand !== ENVIRONMENT_LEASE_REGISTRY_BRAND || 'function' != typeof registry.acquire) throw new Error('The process-global build config environment lease registry is occupied by an incompatible value.');
|
|
101
|
-
return registry;
|
|
102
|
-
}
|
|
103
|
-
const registry = createEnvironmentLeaseRegistry();
|
|
104
|
-
Object.defineProperty(process, ENVIRONMENT_LEASE_REGISTRY_KEY, {
|
|
105
|
-
configurable: false,
|
|
106
|
-
enumerable: false,
|
|
107
|
-
value: registry,
|
|
108
|
-
writable: false
|
|
109
|
-
});
|
|
110
|
-
return registry;
|
|
111
|
-
}
|
|
112
|
-
function acquireEnvironmentLease(name, value) {
|
|
113
|
-
return getEnvironmentLeaseRegistry().acquire(name, value);
|
|
114
|
-
}
|
|
115
|
-
function releaseAfterFailure(release, originalError) {
|
|
116
|
-
try {
|
|
117
|
-
release();
|
|
118
|
-
} catch (restorationError) {
|
|
119
|
-
throw new AggregateError([
|
|
120
|
-
originalError,
|
|
121
|
-
restorationError
|
|
122
|
-
], 'Build config environment setup and restoration both failed.');
|
|
123
|
-
}
|
|
124
|
-
throw originalError;
|
|
125
|
-
}
|
|
126
|
-
class BuildConfigEnvironmentLeasePlugin {
|
|
127
|
-
apply(compiler) {
|
|
128
|
-
const hooks = compiler.hooks;
|
|
129
|
-
try {
|
|
130
|
-
const lifecycleHooks = {};
|
|
131
|
-
for (const hookName of LIFECYCLE_HOOK_NAMES){
|
|
132
|
-
const hook = hooks[hookName];
|
|
133
|
-
if (!hook || 'function' != typeof hook.tap) throw new Error(`Rspack does not expose the "${hookName}" lifecycle hook required to restore build config environment leases.`);
|
|
134
|
-
lifecycleHooks[hookName] = hook;
|
|
135
|
-
}
|
|
136
|
-
let mode = 'pending';
|
|
137
|
-
const modeTap = {
|
|
138
|
-
name: BUILD_CONFIG_ENVIRONMENT_PLUGIN,
|
|
139
|
-
stage: Number.MIN_SAFE_INTEGER
|
|
140
|
-
};
|
|
141
|
-
const releaseTap = {
|
|
142
|
-
name: BUILD_CONFIG_ENVIRONMENT_PLUGIN,
|
|
143
|
-
stage: Number.MAX_SAFE_INTEGER
|
|
144
|
-
};
|
|
145
|
-
const releaseAfterOneShot = ()=>{
|
|
146
|
-
if ('watch' !== mode && true !== compiler.watchMode) this.release();
|
|
147
|
-
};
|
|
148
|
-
lifecycleHooks.run.tap(modeTap, ()=>{
|
|
149
|
-
mode = 'run';
|
|
150
|
-
});
|
|
151
|
-
lifecycleHooks.watchRun.tap(modeTap, ()=>{
|
|
152
|
-
mode = 'watch';
|
|
153
|
-
});
|
|
154
|
-
lifecycleHooks.afterDone.tap(releaseTap, releaseAfterOneShot);
|
|
155
|
-
lifecycleHooks.failed.tap(releaseTap, releaseAfterOneShot);
|
|
156
|
-
lifecycleHooks.shutdown.tap(releaseTap, this.release);
|
|
157
|
-
lifecycleHooks.watchClose.tap(releaseTap, this.release);
|
|
158
|
-
} catch (error) {
|
|
159
|
-
releaseAfterFailure(this.release, error);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
constructor(release){
|
|
163
|
-
this.release = release;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
44
|
function resolveEffectTsgoCli(from) {
|
|
167
45
|
const projectRequire = (0, external_node_module_namespaceObject.createRequire)(from);
|
|
168
46
|
const packageJsonPath = projectRequire.resolve(`${EFFECT_TSGO_PACKAGE}/package.json`);
|
|
@@ -222,21 +100,6 @@ function resolveExecutableEffectTsgoCompiler(compilerPath) {
|
|
|
222
100
|
function getBuildConfigEnvironment(name) {
|
|
223
101
|
return process.env[name];
|
|
224
102
|
}
|
|
225
|
-
function withBuildConfigEnvironment(name, value, setup) {
|
|
226
|
-
return async (config, ...args)=>{
|
|
227
|
-
const release = acquireEnvironmentLease(name, value);
|
|
228
|
-
try {
|
|
229
|
-
const configured = await setup(config, ...args) ?? config;
|
|
230
|
-
configured.plugins = [
|
|
231
|
-
...configured.plugins ?? [],
|
|
232
|
-
new BuildConfigEnvironmentLeasePlugin(release)
|
|
233
|
-
];
|
|
234
|
-
return configured;
|
|
235
|
-
} catch (error) {
|
|
236
|
-
releaseAfterFailure(release, error);
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
103
|
function resolveEffectTsgoCompiler(options) {
|
|
241
104
|
const configuredCompiler = getBuildConfigEnvironment('EFFECT_TSGO_BIN')?.trim();
|
|
242
105
|
if (configuredCompiler) try {
|
|
@@ -257,11 +120,9 @@ function resolveEffectTsgoCompiler(options) {
|
|
|
257
120
|
}
|
|
258
121
|
exports.getBuildConfigEnvironment = __webpack_exports__.getBuildConfigEnvironment;
|
|
259
122
|
exports.resolveEffectTsgoCompiler = __webpack_exports__.resolveEffectTsgoCompiler;
|
|
260
|
-
exports.withBuildConfigEnvironment = __webpack_exports__.withBuildConfigEnvironment;
|
|
261
123
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
262
124
|
"getBuildConfigEnvironment",
|
|
263
|
-
"resolveEffectTsgoCompiler"
|
|
264
|
-
"withBuildConfigEnvironment"
|
|
125
|
+
"resolveEffectTsgoCompiler"
|
|
265
126
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
266
127
|
Object.defineProperty(exports, '__esModule', {
|
|
267
128
|
value: true
|
|
@@ -29,17 +29,14 @@ var __webpack_exports__ = {};
|
|
|
29
29
|
__webpack_require__.r(__webpack_exports__);
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
getBuildConfigEnvironment: ()=>external_build_environment_js_namespaceObject.getBuildConfigEnvironment,
|
|
32
|
-
resolveEffectTsgoCompiler: ()=>external_build_environment_js_namespaceObject.resolveEffectTsgoCompiler
|
|
33
|
-
withBuildConfigEnvironment: ()=>external_build_environment_js_namespaceObject.withBuildConfigEnvironment
|
|
32
|
+
resolveEffectTsgoCompiler: ()=>external_build_environment_js_namespaceObject.resolveEffectTsgoCompiler
|
|
34
33
|
});
|
|
35
34
|
const external_build_environment_js_namespaceObject = require("./build-environment.js");
|
|
36
35
|
exports.getBuildConfigEnvironment = __webpack_exports__.getBuildConfigEnvironment;
|
|
37
36
|
exports.resolveEffectTsgoCompiler = __webpack_exports__.resolveEffectTsgoCompiler;
|
|
38
|
-
exports.withBuildConfigEnvironment = __webpack_exports__.withBuildConfigEnvironment;
|
|
39
37
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
40
38
|
"getBuildConfigEnvironment",
|
|
41
|
-
"resolveEffectTsgoCompiler"
|
|
42
|
-
"withBuildConfigEnvironment"
|
|
39
|
+
"resolveEffectTsgoCompiler"
|
|
43
40
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
44
41
|
Object.defineProperty(exports, '__esModule', {
|
|
45
42
|
value: true
|
|
@@ -480,9 +480,6 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
|
|
|
480
480
|
appContext.appDirectory,
|
|
481
481
|
process.cwd()
|
|
482
482
|
];
|
|
483
|
-
const tanstackRouterSsrServerFile = resolvePackageFile('@tanstack/router-core', 'dist/esm/ssr/ssr-server.js', resolvePaths);
|
|
484
|
-
const runtimeRscWorkerFile = resolvePackageFile('@modern-js/runtime', 'dist/esm/rsc/server.worker.mjs', resolvePaths);
|
|
485
|
-
const renderRscWorkerFile = resolvePackageFile('@modern-js/render', 'dist/esm/rscWorker.mjs', resolvePaths);
|
|
486
483
|
const reactFile = resolvePackageFile('react', 'index.js', resolvePaths);
|
|
487
484
|
const reactJsxRuntimeFile = resolvePackageFile('react', 'jsx-runtime.js', resolvePaths);
|
|
488
485
|
const reactJsxDevRuntimeFile = resolvePackageFile('react', 'jsx-dev-runtime.js', resolvePaths);
|
|
@@ -492,9 +489,6 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
|
|
|
492
489
|
...resolvePaths,
|
|
493
490
|
(0, external_read_template_js_namespaceObject.getTemplatePath)('')
|
|
494
491
|
]);
|
|
495
|
-
const loadableServerWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-loadable-server.mjs');
|
|
496
|
-
const fsPromisesWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-fs-promises.mjs');
|
|
497
|
-
const pathWorkerFile = (0, external_read_template_js_namespaceObject.getTemplatePath)('cloudflare-worker-path.mjs');
|
|
498
492
|
const entryNames = [
|
|
499
493
|
...workerEntryNames
|
|
500
494
|
];
|
|
@@ -519,36 +513,12 @@ const createCloudflareBundlerChain = (appContext, workerEntryNames)=>{
|
|
|
519
513
|
});
|
|
520
514
|
chain.plugin('cloudflare-worker-absent-optional-dependencies').use(AbsentOptionalDependencyPlugin);
|
|
521
515
|
applyCloudflareWorkerMfRuntimeBoundary(chain);
|
|
522
|
-
if (tanstackRouterSsrServerFile) {
|
|
523
|
-
chain.resolve.alias.set('@tanstack/router-core/ssr/server$', tanstackRouterSsrServerFile);
|
|
524
|
-
chain.resolve.alias.set('@tanstack/router-core/ssr/server', tanstackRouterSsrServerFile);
|
|
525
|
-
}
|
|
526
|
-
if (runtimeRscWorkerFile) {
|
|
527
|
-
chain.resolve.alias.set('@modern-js/runtime/rsc/server$', runtimeRscWorkerFile);
|
|
528
|
-
chain.resolve.alias.set('@modern-js/runtime/rsc/server', runtimeRscWorkerFile);
|
|
529
|
-
}
|
|
530
|
-
if (renderRscWorkerFile) {
|
|
531
|
-
chain.resolve.alias.set('@modern-js/render/rsc$', renderRscWorkerFile);
|
|
532
|
-
chain.resolve.alias.set('@modern-js/render/rsc', renderRscWorkerFile);
|
|
533
|
-
chain.resolve.alias.set('@modern-js/render/rsc-worker$', renderRscWorkerFile);
|
|
534
|
-
}
|
|
535
516
|
setAliasIfPresent(chain.resolve.alias, 'react$', reactFile);
|
|
536
517
|
setAliasIfPresent(chain.resolve.alias, 'react/jsx-runtime$', reactJsxRuntimeFile);
|
|
537
518
|
setAliasIfPresent(chain.resolve.alias, 'react/jsx-dev-runtime$', reactJsxDevRuntimeFile);
|
|
538
519
|
setAliasIfPresent(chain.resolve.alias, 'react-dom$', reactDomFile);
|
|
539
520
|
setAliasIfPresent(chain.resolve.alias, 'react-dom/server.edge$', reactDomServerEdgeFile);
|
|
540
521
|
setAliasIfPresent(chain.resolve.alias, '@loadable/component$', loadableComponentFile);
|
|
541
|
-
setAliasIfPresent(chain.resolve.alias, '@loadable/server$', loadableServerWorkerFile);
|
|
542
|
-
setAliasIfPresent(chain.resolve.alias, 'fs/promises$', fsPromisesWorkerFile);
|
|
543
|
-
setAliasIfPresent(chain.resolve.alias, 'node:fs/promises$', fsPromisesWorkerFile);
|
|
544
|
-
setAliasIfPresent(chain.resolve.alias, 'path$', pathWorkerFile);
|
|
545
|
-
setAliasIfPresent(chain.resolve.alias, 'node:path$', pathWorkerFile);
|
|
546
|
-
chain.resolve.alias.set('react-server-dom-rspack/server.node$', 'react-server-dom-rspack/server.edge');
|
|
547
|
-
chain.resolve.alias.set('react-server-dom-rspack/server.node', 'react-server-dom-rspack/server.edge');
|
|
548
|
-
chain.resolve.alias.set('react-server-dom-rspack/client.node$', 'react-server-dom-rspack/client.edge');
|
|
549
|
-
chain.resolve.alias.set('react-server-dom-rspack/client.node', 'react-server-dom-rspack/client.edge');
|
|
550
|
-
chain.resolve.fallback.set('fs', false);
|
|
551
|
-
chain.resolve.fallback.set('node:fs', false);
|
|
552
522
|
};
|
|
553
523
|
};
|
|
554
524
|
function getCloudflareBuilderEnvironments({ appContext, environments, normalizedConfig, resolveDeployProvider = resolveStdEnvDeployProvider }) {
|
package/dist/cjs/config.js
CHANGED
|
@@ -30,20 +30,17 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
30
30
|
__webpack_require__.d(__webpack_exports__, {
|
|
31
31
|
createRemoteManifestUrl: ()=>remote_address_js_namespaceObject.createRemoteManifestUrl,
|
|
32
32
|
getBuildConfigEnvironment: ()=>public_js_namespaceObject.getBuildConfigEnvironment,
|
|
33
|
-
resolveEffectTsgoCompiler: ()=>public_js_namespaceObject.resolveEffectTsgoCompiler
|
|
34
|
-
withBuildConfigEnvironment: ()=>public_js_namespaceObject.withBuildConfigEnvironment
|
|
33
|
+
resolveEffectTsgoCompiler: ()=>public_js_namespaceObject.resolveEffectTsgoCompiler
|
|
35
34
|
});
|
|
36
35
|
const public_js_namespaceObject = require("./build-config/public.js");
|
|
37
36
|
const remote_address_js_namespaceObject = require("./build-config/remote-address.js");
|
|
38
37
|
exports.createRemoteManifestUrl = __webpack_exports__.createRemoteManifestUrl;
|
|
39
38
|
exports.getBuildConfigEnvironment = __webpack_exports__.getBuildConfigEnvironment;
|
|
40
39
|
exports.resolveEffectTsgoCompiler = __webpack_exports__.resolveEffectTsgoCompiler;
|
|
41
|
-
exports.withBuildConfigEnvironment = __webpack_exports__.withBuildConfigEnvironment;
|
|
42
40
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
43
41
|
"createRemoteManifestUrl",
|
|
44
42
|
"getBuildConfigEnvironment",
|
|
45
|
-
"resolveEffectTsgoCompiler"
|
|
46
|
-
"withBuildConfigEnvironment"
|
|
43
|
+
"resolveEffectTsgoCompiler"
|
|
47
44
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
48
45
|
Object.defineProperty(exports, '__esModule', {
|
|
49
46
|
value: true
|
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
createBuildHostIgnore: ()=>createBuildHostIgnore,
|
|
41
|
+
traceDeployFiles: ()=>traceDeployFiles
|
|
42
|
+
});
|
|
43
|
+
const external_node_os_namespaceObject = require("node:os");
|
|
44
|
+
var external_node_os_default = /*#__PURE__*/ __webpack_require__.n(external_node_os_namespaceObject);
|
|
45
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
46
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
47
|
+
const nft_namespaceObject = require("@vercel/nft");
|
|
48
|
+
const SYSTEM_ROOTS = 'win32' === process.platform ? [] : [
|
|
49
|
+
'/dev',
|
|
50
|
+
'/etc',
|
|
51
|
+
'/proc',
|
|
52
|
+
'/run',
|
|
53
|
+
'/sys',
|
|
54
|
+
'/var/run'
|
|
55
|
+
];
|
|
56
|
+
const GLOB_SEGMENT = /[*?[{]/;
|
|
57
|
+
const isInside = (parent, child)=>child === parent || child.startsWith(`${parent}${external_node_path_default().sep}`);
|
|
58
|
+
const globRoot = (absolutePattern)=>{
|
|
59
|
+
const { root } = external_node_path_default().parse(absolutePattern);
|
|
60
|
+
const segments = absolutePattern.slice(root.length).split(external_node_path_default().sep);
|
|
61
|
+
const index = segments.findIndex((segment)=>GLOB_SEGMENT.test(segment));
|
|
62
|
+
return -1 === index ? void 0 : external_node_path_default().join(root, ...segments.slice(0, index));
|
|
63
|
+
};
|
|
64
|
+
const createBuildHostIgnore = (base)=>{
|
|
65
|
+
const wholeDirectories = new Set([
|
|
66
|
+
external_node_path_default().parse(external_node_path_default().resolve(base)).root,
|
|
67
|
+
external_node_path_default().resolve(external_node_os_default().homedir()),
|
|
68
|
+
external_node_path_default().resolve(external_node_os_default().tmpdir())
|
|
69
|
+
]);
|
|
70
|
+
return (relativePath)=>{
|
|
71
|
+
const absolutePath = external_node_path_default().resolve(base, relativePath);
|
|
72
|
+
if (SYSTEM_ROOTS.some((root)=>isInside(root, absolutePath))) return true;
|
|
73
|
+
const root = globRoot(absolutePath);
|
|
74
|
+
return void 0 !== root && wholeDirectories.has(root);
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
const traceDeployFiles = ({ entryFiles, sourceDir, base = '/' })=>(0, nft_namespaceObject.nodeFileTrace)(entryFiles, {
|
|
78
|
+
base,
|
|
79
|
+
processCwd: sourceDir,
|
|
80
|
+
ignore: createBuildHostIgnore(base)
|
|
81
|
+
});
|
|
82
|
+
exports.createBuildHostIgnore = __webpack_exports__.createBuildHostIgnore;
|
|
83
|
+
exports.traceDeployFiles = __webpack_exports__.traceDeployFiles;
|
|
84
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
85
|
+
"createBuildHostIgnore",
|
|
86
|
+
"traceDeployFiles"
|
|
87
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
88
|
+
Object.defineProperty(exports, '__esModule', {
|
|
89
|
+
value: true
|
|
90
|
+
});
|
|
@@ -36,11 +36,13 @@ const external_node_child_process_namespaceObject = require("node:child_process"
|
|
|
36
36
|
const external_node_crypto_namespaceObject = require("node:crypto");
|
|
37
37
|
const BUILD_MARKER_NAMESPACE = 'ultramodern-delivery-unit-release-build-marker:v1';
|
|
38
38
|
const PROMOTABLE_SOURCE_REVISION_PATTERN = /^(?:[a-f0-9]{40}|[a-f0-9]{64})$/u;
|
|
39
|
+
const workspaceGitEnv = ()=>Object.fromEntries(Object.entries(process.env).filter(([name])=>!name.toUpperCase().startsWith('GIT_')));
|
|
39
40
|
const gitOutput = (workspaceRoot, args)=>{
|
|
40
41
|
try {
|
|
41
42
|
return (0, external_node_child_process_namespaceObject.execFileSync)('git', args, {
|
|
42
43
|
cwd: workspaceRoot,
|
|
43
44
|
encoding: 'utf8',
|
|
45
|
+
env: workspaceGitEnv(),
|
|
44
46
|
stdio: [
|
|
45
47
|
'ignore',
|
|
46
48
|
'pipe',
|
|
@@ -1138,7 +1138,7 @@ async function withRouteCssLinks(
|
|
|
1138
1138
|
seenCssHrefs.add(entry.preloadHref);
|
|
1139
1139
|
return true;
|
|
1140
1140
|
});
|
|
1141
|
-
for (const {
|
|
1141
|
+
for (const { preloadHref } of uniqueCssEntries) {
|
|
1142
1142
|
const preloadUrl = new URL(preloadHref);
|
|
1143
1143
|
const preloadReference =
|
|
1144
1144
|
preloadUrl.origin === requestOrigin
|
|
@@ -45,28 +45,34 @@ const createBackendRemoteEntrySource = async (workspaceRoot, app, effectApiPath,
|
|
|
45
45
|
} : {}
|
|
46
46
|
};
|
|
47
47
|
const source = `// Generated by Modern.js backend federation build.
|
|
48
|
-
import
|
|
48
|
+
import { adoptEffectBffShareScope } from '@modern-js/bff-effect/effect-edge';
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
// The expose evaluates lazily so defineEffectBff registers its handler
|
|
51
|
+
// factories with the registry the host shares through init().
|
|
52
|
+
let exposedModule;
|
|
53
|
+
const loadExposedModule = () =>
|
|
54
|
+
(exposedModule ??= import(${JSON.stringify(effectApiSpecifier)}).then(exposedNamespace => ({
|
|
55
|
+
...exposedNamespace,
|
|
56
|
+
backendFederationContract: {
|
|
57
|
+
...(exposedNamespace.backendFederationContract ?? {}),
|
|
58
|
+
compatibility: {
|
|
59
|
+
...(exposedNamespace.backendFederationContract?.compatibility ?? {}),
|
|
60
|
+
...${JSON.stringify(compatibility)},
|
|
61
|
+
},
|
|
62
|
+
name: ${JSON.stringify(app.backendName)},
|
|
63
|
+
role: 'microvertical-server',
|
|
64
|
+
runtimeFramework: 'effect',
|
|
65
|
+
strictEffectApproach: true,
|
|
57
66
|
},
|
|
58
|
-
|
|
59
|
-
role: 'microvertical-server',
|
|
60
|
-
runtimeFramework: 'effect',
|
|
61
|
-
strictEffectApproach: true,
|
|
62
|
-
},
|
|
63
|
-
};
|
|
67
|
+
})));
|
|
64
68
|
const exposedModules = {
|
|
65
|
-
${JSON.stringify(BACKEND_FEDERATION_EFFECT_EXPOSE)}:
|
|
69
|
+
${JSON.stringify(BACKEND_FEDERATION_EFFECT_EXPOSE)}: loadExposedModule,
|
|
66
70
|
};
|
|
67
71
|
const __modernjsBackendFederation = ${JSON.stringify(containerMetadata)};
|
|
68
72
|
|
|
69
|
-
function init() {
|
|
73
|
+
function init(shareScope) {
|
|
74
|
+
return adoptEffectBffShareScope(shareScope);
|
|
75
|
+
}
|
|
70
76
|
|
|
71
77
|
function get(id) {
|
|
72
78
|
const load = exposedModules[id];
|
|
@@ -8,127 +8,6 @@ const EFFECT_TSGO_PACKAGE = '@effect/tsgo';
|
|
|
8
8
|
const EFFECT_TSGO_BIN = 'effect-tsgo';
|
|
9
9
|
const EFFECT_TSGO_RESOLUTION_ERROR = 'Unable to resolve the Effect TS-Go compiler. Install "@effect/tsgo" and a native TypeScript backend for this build config, or set EFFECT_TSGO_BIN.';
|
|
10
10
|
const executableEffectTsgoCompilers = new Map();
|
|
11
|
-
const BUILD_CONFIG_ENVIRONMENT_PLUGIN = 'ModernJsBuildConfigEnvironmentLeasePlugin';
|
|
12
|
-
const ENVIRONMENT_LEASE_REGISTRY_KEY = Symbol.for('@modern-js/app-tools/build-config-environment-lease-registry/v1');
|
|
13
|
-
const ENVIRONMENT_LEASE_REGISTRY_BRAND = Symbol.for('@modern-js/app-tools/build-config-environment-lease-registry-brand/v1');
|
|
14
|
-
const LIFECYCLE_HOOK_NAMES = [
|
|
15
|
-
'run',
|
|
16
|
-
'watchRun',
|
|
17
|
-
'afterDone',
|
|
18
|
-
'failed',
|
|
19
|
-
'shutdown',
|
|
20
|
-
'watchClose'
|
|
21
|
-
];
|
|
22
|
-
function restoreEnvironment(name, value) {
|
|
23
|
-
if (void 0 === value) delete process.env[name];
|
|
24
|
-
else process.env[name] = value;
|
|
25
|
-
}
|
|
26
|
-
function createEnvironmentLeaseRegistry() {
|
|
27
|
-
const environmentLeases = new Map();
|
|
28
|
-
return Object.freeze({
|
|
29
|
-
acquire (name, value) {
|
|
30
|
-
let lease = environmentLeases.get(name);
|
|
31
|
-
if (lease) {
|
|
32
|
-
if (lease.value !== value) throw new Error(`Build config environment "${name}" already has an active lease for a different value.`);
|
|
33
|
-
if (process.env[name] !== lease.value) throw new Error(`Build config environment lease for "${name}" lost ownership before another lease was acquired.`);
|
|
34
|
-
} else {
|
|
35
|
-
lease = {
|
|
36
|
-
originalValue: process.env[name],
|
|
37
|
-
owners: new Set(),
|
|
38
|
-
value
|
|
39
|
-
};
|
|
40
|
-
process.env[name] = value;
|
|
41
|
-
environmentLeases.set(name, lease);
|
|
42
|
-
}
|
|
43
|
-
const owner = Symbol(name);
|
|
44
|
-
lease.owners.add(owner);
|
|
45
|
-
let released = false;
|
|
46
|
-
return ()=>{
|
|
47
|
-
if (released) return;
|
|
48
|
-
if (environmentLeases.get(name) !== lease || !lease.owners.has(owner)) throw new Error(`Build config environment lease for "${name}" cannot be restored because its ownership record was lost.`);
|
|
49
|
-
released = true;
|
|
50
|
-
const lostOwnership = process.env[name] !== lease.value;
|
|
51
|
-
lease.owners.delete(owner);
|
|
52
|
-
if (0 === lease.owners.size) {
|
|
53
|
-
environmentLeases.delete(name);
|
|
54
|
-
restoreEnvironment(name, lease.originalValue);
|
|
55
|
-
} else if (lostOwnership) process.env[name] = lease.value;
|
|
56
|
-
if (lostOwnership) throw new Error(`Build config environment lease for "${name}" lost ownership before restoration.`);
|
|
57
|
-
};
|
|
58
|
-
},
|
|
59
|
-
brand: ENVIRONMENT_LEASE_REGISTRY_BRAND
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
function getEnvironmentLeaseRegistry() {
|
|
63
|
-
const descriptor = Object.getOwnPropertyDescriptor(process, ENVIRONMENT_LEASE_REGISTRY_KEY);
|
|
64
|
-
if (descriptor) {
|
|
65
|
-
const registry = descriptor.value;
|
|
66
|
-
if (descriptor.configurable || descriptor.enumerable || descriptor.writable || registry?.brand !== ENVIRONMENT_LEASE_REGISTRY_BRAND || 'function' != typeof registry.acquire) throw new Error('The process-global build config environment lease registry is occupied by an incompatible value.');
|
|
67
|
-
return registry;
|
|
68
|
-
}
|
|
69
|
-
const registry = createEnvironmentLeaseRegistry();
|
|
70
|
-
Object.defineProperty(process, ENVIRONMENT_LEASE_REGISTRY_KEY, {
|
|
71
|
-
configurable: false,
|
|
72
|
-
enumerable: false,
|
|
73
|
-
value: registry,
|
|
74
|
-
writable: false
|
|
75
|
-
});
|
|
76
|
-
return registry;
|
|
77
|
-
}
|
|
78
|
-
function acquireEnvironmentLease(name, value) {
|
|
79
|
-
return getEnvironmentLeaseRegistry().acquire(name, value);
|
|
80
|
-
}
|
|
81
|
-
function releaseAfterFailure(release, originalError) {
|
|
82
|
-
try {
|
|
83
|
-
release();
|
|
84
|
-
} catch (restorationError) {
|
|
85
|
-
throw new AggregateError([
|
|
86
|
-
originalError,
|
|
87
|
-
restorationError
|
|
88
|
-
], 'Build config environment setup and restoration both failed.');
|
|
89
|
-
}
|
|
90
|
-
throw originalError;
|
|
91
|
-
}
|
|
92
|
-
class BuildConfigEnvironmentLeasePlugin {
|
|
93
|
-
apply(compiler) {
|
|
94
|
-
const hooks = compiler.hooks;
|
|
95
|
-
try {
|
|
96
|
-
const lifecycleHooks = {};
|
|
97
|
-
for (const hookName of LIFECYCLE_HOOK_NAMES){
|
|
98
|
-
const hook = hooks[hookName];
|
|
99
|
-
if (!hook || 'function' != typeof hook.tap) throw new Error(`Rspack does not expose the "${hookName}" lifecycle hook required to restore build config environment leases.`);
|
|
100
|
-
lifecycleHooks[hookName] = hook;
|
|
101
|
-
}
|
|
102
|
-
let mode = 'pending';
|
|
103
|
-
const modeTap = {
|
|
104
|
-
name: BUILD_CONFIG_ENVIRONMENT_PLUGIN,
|
|
105
|
-
stage: Number.MIN_SAFE_INTEGER
|
|
106
|
-
};
|
|
107
|
-
const releaseTap = {
|
|
108
|
-
name: BUILD_CONFIG_ENVIRONMENT_PLUGIN,
|
|
109
|
-
stage: Number.MAX_SAFE_INTEGER
|
|
110
|
-
};
|
|
111
|
-
const releaseAfterOneShot = ()=>{
|
|
112
|
-
if ('watch' !== mode && true !== compiler.watchMode) this.release();
|
|
113
|
-
};
|
|
114
|
-
lifecycleHooks.run.tap(modeTap, ()=>{
|
|
115
|
-
mode = 'run';
|
|
116
|
-
});
|
|
117
|
-
lifecycleHooks.watchRun.tap(modeTap, ()=>{
|
|
118
|
-
mode = 'watch';
|
|
119
|
-
});
|
|
120
|
-
lifecycleHooks.afterDone.tap(releaseTap, releaseAfterOneShot);
|
|
121
|
-
lifecycleHooks.failed.tap(releaseTap, releaseAfterOneShot);
|
|
122
|
-
lifecycleHooks.shutdown.tap(releaseTap, this.release);
|
|
123
|
-
lifecycleHooks.watchClose.tap(releaseTap, this.release);
|
|
124
|
-
} catch (error) {
|
|
125
|
-
releaseAfterFailure(this.release, error);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
constructor(release){
|
|
129
|
-
this.release = release;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
11
|
function resolveEffectTsgoCli(from) {
|
|
133
12
|
const projectRequire = createRequire(from);
|
|
134
13
|
const packageJsonPath = projectRequire.resolve(`${EFFECT_TSGO_PACKAGE}/package.json`);
|
|
@@ -188,21 +67,6 @@ function resolveExecutableEffectTsgoCompiler(compilerPath) {
|
|
|
188
67
|
function getBuildConfigEnvironment(name) {
|
|
189
68
|
return process.env[name];
|
|
190
69
|
}
|
|
191
|
-
function withBuildConfigEnvironment(name, value, setup) {
|
|
192
|
-
return async (config, ...args)=>{
|
|
193
|
-
const release = acquireEnvironmentLease(name, value);
|
|
194
|
-
try {
|
|
195
|
-
const configured = await setup(config, ...args) ?? config;
|
|
196
|
-
configured.plugins = [
|
|
197
|
-
...configured.plugins ?? [],
|
|
198
|
-
new BuildConfigEnvironmentLeasePlugin(release)
|
|
199
|
-
];
|
|
200
|
-
return configured;
|
|
201
|
-
} catch (error) {
|
|
202
|
-
releaseAfterFailure(release, error);
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
70
|
function resolveEffectTsgoCompiler(options) {
|
|
207
71
|
const configuredCompiler = getBuildConfigEnvironment('EFFECT_TSGO_BIN')?.trim();
|
|
208
72
|
if (configuredCompiler) try {
|
|
@@ -221,4 +85,4 @@ function resolveEffectTsgoCompiler(options) {
|
|
|
221
85
|
} catch {}
|
|
222
86
|
throw new Error(EFFECT_TSGO_RESOLUTION_ERROR);
|
|
223
87
|
}
|
|
224
|
-
export { getBuildConfigEnvironment, resolveEffectTsgoCompiler
|
|
88
|
+
export { getBuildConfigEnvironment, resolveEffectTsgoCompiler };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { getBuildConfigEnvironment, resolveEffectTsgoCompiler
|
|
1
|
+
export { getBuildConfigEnvironment, resolveEffectTsgoCompiler } from "./build-environment.mjs";
|