@bleedingdev/modern-js-server-runtime-extensions 0.0.0-trusted-publisher-bootstrap
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/LICENSE +21 -0
- package/README.md +67 -0
- package/dist/cjs/contractGateAutopilot.js +162 -0
- package/dist/cjs/contractGateSnapshotStore.js +253 -0
- package/dist/cjs/env.js +58 -0
- package/dist/cjs/index.js +162 -0
- package/dist/cjs/mfCache.js +106 -0
- package/dist/cjs/moduleFederationCss.js +285 -0
- package/dist/cjs/runtimeFallbackSignal.js +311 -0
- package/dist/cjs/telemetry.js +373 -0
- package/dist/cjs/telemetryCore.js +819 -0
- package/dist/esm/contractGateAutopilot.mjs +124 -0
- package/dist/esm/contractGateSnapshotStore.mjs +190 -0
- package/dist/esm/env.mjs +17 -0
- package/dist/esm/index.mjs +6 -0
- package/dist/esm/mfCache.mjs +55 -0
- package/dist/esm/moduleFederationCss.mjs +225 -0
- package/dist/esm/runtimeFallbackSignal.mjs +222 -0
- package/dist/esm/telemetry.mjs +275 -0
- package/dist/esm/telemetryCore.mjs +759 -0
- package/dist/esm-node/contractGateAutopilot.mjs +125 -0
- package/dist/esm-node/contractGateSnapshotStore.mjs +192 -0
- package/dist/esm-node/env.mjs +18 -0
- package/dist/esm-node/index.mjs +7 -0
- package/dist/esm-node/mfCache.mjs +56 -0
- package/dist/esm-node/moduleFederationCss.mjs +226 -0
- package/dist/esm-node/runtimeFallbackSignal.mjs +223 -0
- package/dist/esm-node/telemetry.mjs +276 -0
- package/dist/esm-node/telemetryCore.mjs +760 -0
- package/dist/types/contractGateAutopilot.d.ts +35 -0
- package/dist/types/contractGateSnapshotStore.d.ts +57 -0
- package/dist/types/env.d.ts +40 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/mfCache.d.ts +27 -0
- package/dist/types/moduleFederationCss.d.ts +87 -0
- package/dist/types/runtimeFallbackSignal.d.ts +94 -0
- package/dist/types/telemetry.d.ts +12 -0
- package/dist/types/telemetryCore.d.ts +257 -0
- package/package.json +69 -0
- package/rslib.config.mts +4 -0
- package/rstest.config.mts +7 -0
- package/src/contractGateAutopilot.ts +247 -0
- package/src/contractGateSnapshotStore.ts +420 -0
- package/src/env.ts +63 -0
- package/src/index.ts +84 -0
- package/src/mfCache.ts +119 -0
- package/src/moduleFederationCss.ts +473 -0
- package/src/runtimeFallbackSignal.ts +584 -0
- package/src/telemetry.ts +554 -0
- package/src/telemetryCore.ts +1332 -0
- package/tests/contractGateAutopilot.test.ts +203 -0
- package/tests/contractGateSnapshotStore.test.ts +223 -0
- package/tests/env.test.ts +73 -0
- package/tests/helpers.ts +19 -0
- package/tests/mfCache.test.ts +150 -0
- package/tests/moduleFederationCss.test.ts +392 -0
- package/tests/registration.test.ts +112 -0
- package/tests/telemetry.test.ts +360 -0
- package/tests/telemetryAutopilot.test.ts +993 -0
- package/tests/telemetryCanaryOrchestrator.test.ts +140 -0
- package/tests/telemetryLifecycle.test.ts +168 -0
- package/tests/telemetryTraceparent.test.ts +167 -0
- package/tests/tsconfig.json +11 -0
- package/tsconfig.json +10 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
CONTRACT_GATE_SNAPSHOT_SCHEMA_VERSION: ()=>external_contractGateSnapshotStore_js_namespaceObject.CONTRACT_GATE_SNAPSHOT_SCHEMA_VERSION,
|
|
32
|
+
ContractGateAutopilot: ()=>external_contractGateAutopilot_js_namespaceObject.ContractGateAutopilot,
|
|
33
|
+
DEFAULT_CONTRACT_GATE_SNAPSHOT_PATH: ()=>external_contractGateSnapshotStore_js_namespaceObject.DEFAULT_CONTRACT_GATE_SNAPSHOT_PATH,
|
|
34
|
+
DEFAULT_ENVIRONMENT_NAME: ()=>external_env_js_namespaceObject.DEFAULT_ENVIRONMENT_NAME,
|
|
35
|
+
DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT: ()=>external_telemetry_js_namespaceObject.DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT,
|
|
36
|
+
DEFAULT_RUNTIME_STATUS_ENDPOINT: ()=>external_telemetry_js_namespaceObject.DEFAULT_RUNTIME_STATUS_ENDPOINT,
|
|
37
|
+
TelemetryCanaryOrchestrator: ()=>external_telemetry_js_namespaceObject.TelemetryCanaryOrchestrator,
|
|
38
|
+
TelemetryRegistry: ()=>external_telemetry_js_namespaceObject.TelemetryRegistry,
|
|
39
|
+
TelemetryStartupHealthError: ()=>external_telemetry_js_namespaceObject.TelemetryStartupHealthError,
|
|
40
|
+
collectDirectRemoteModuleFederationCss: ()=>external_moduleFederationCss_js_namespaceObject.collectDirectRemoteModuleFederationCss,
|
|
41
|
+
collectDirectRemoteModuleFederationCssWithMeta: ()=>external_moduleFederationCss_js_namespaceObject.collectDirectRemoteModuleFederationCssWithMeta,
|
|
42
|
+
collectModuleFederationManifestCss: ()=>external_moduleFederationCss_js_namespaceObject.collectModuleFederationManifestCss,
|
|
43
|
+
createFileContractGateSnapshotStore: ()=>external_contractGateSnapshotStore_js_namespaceObject.createFileContractGateSnapshotStore,
|
|
44
|
+
createHttpContractGateSnapshotStore: ()=>external_contractGateSnapshotStore_js_namespaceObject.createHttpContractGateSnapshotStore,
|
|
45
|
+
createModuleFederationCssCollector: ()=>external_moduleFederationCss_js_namespaceObject.createModuleFederationCssCollector,
|
|
46
|
+
createOtlpTelemetryExporter: ()=>external_telemetry_js_namespaceObject.createOtlpTelemetryExporter,
|
|
47
|
+
createRuntimeFallbackSignalRuntimeState: ()=>external_telemetry_js_namespaceObject.createRuntimeFallbackSignalRuntimeState,
|
|
48
|
+
createRuntimeSignalError: ()=>external_telemetry_js_namespaceObject.createRuntimeSignalError,
|
|
49
|
+
createTelemetryAwareMetrics: ()=>external_telemetry_js_namespaceObject.createTelemetryAwareMetrics,
|
|
50
|
+
createVictoriaMetricsTelemetryExporter: ()=>external_telemetry_js_namespaceObject.createVictoriaMetricsTelemetryExporter,
|
|
51
|
+
enforceRuntimeFallbackSignalAuthToken: ()=>external_telemetry_js_namespaceObject.enforceRuntimeFallbackSignalAuthToken,
|
|
52
|
+
enforceRuntimeFallbackSignalTrustPolicy: ()=>external_telemetry_js_namespaceObject.enforceRuntimeFallbackSignalTrustPolicy,
|
|
53
|
+
getRequestPathname: ()=>external_mfCache_js_namespaceObject.getRequestPathname,
|
|
54
|
+
getRuntimeSignalErrorStatusCode: ()=>external_telemetry_js_namespaceObject.getRuntimeSignalErrorStatusCode,
|
|
55
|
+
hasEnabledTelemetryExporters: ()=>external_telemetry_js_namespaceObject.hasEnabledTelemetryExporters,
|
|
56
|
+
injectMfAssetCacheHeadersPlugin: ()=>external_mfCache_js_namespaceObject.injectMfAssetCacheHeadersPlugin,
|
|
57
|
+
injectModuleFederationCssPlugin: ()=>external_moduleFederationCss_js_namespaceObject.injectModuleFederationCssPlugin,
|
|
58
|
+
injectTelemetryPlugin: ()=>external_telemetry_js_namespaceObject.injectTelemetryPlugin,
|
|
59
|
+
isMfManifestAsset: ()=>external_mfCache_js_namespaceObject.isMfManifestAsset,
|
|
60
|
+
isMfRemoteEntryAsset: ()=>external_mfCache_js_namespaceObject.isMfRemoteEntryAsset,
|
|
61
|
+
normalizeRequiredRuntimeFallbackSignalAuthConfig: ()=>external_telemetry_js_namespaceObject.normalizeRequiredRuntimeFallbackSignalAuthConfig,
|
|
62
|
+
normalizeRuntimeFallbackSignalAuthConfig: ()=>external_telemetry_js_namespaceObject.normalizeRuntimeFallbackSignalAuthConfig,
|
|
63
|
+
normalizeRuntimeFallbackTrustPolicy: ()=>external_telemetry_js_namespaceObject.normalizeRuntimeFallbackTrustPolicy,
|
|
64
|
+
parseRuntimeFallbackSignalPayloadFromRawBody: ()=>external_telemetry_js_namespaceObject.parseRuntimeFallbackSignalPayloadFromRawBody,
|
|
65
|
+
parseServerRuntimeExtensionsEnv: ()=>external_env_js_namespaceObject.parseServerRuntimeExtensionsEnv,
|
|
66
|
+
resolveContractGateSnapshotPath: ()=>external_contractGateSnapshotStore_js_namespaceObject.resolveContractGateSnapshotPath,
|
|
67
|
+
resolveContractGateSnapshotStore: ()=>external_contractGateSnapshotStore_js_namespaceObject.resolveContractGateSnapshotStore,
|
|
68
|
+
resolveMfAssetCacheHeaders: ()=>external_mfCache_js_namespaceObject.resolveMfAssetCacheHeaders,
|
|
69
|
+
resolveRuntimeFallbackSignalEndpoint: ()=>external_telemetry_js_namespaceObject.resolveRuntimeFallbackSignalEndpoint,
|
|
70
|
+
resolveTelemetrySloOptions: ()=>external_telemetry_js_namespaceObject.resolveTelemetrySloOptions
|
|
71
|
+
});
|
|
72
|
+
const external_contractGateAutopilot_js_namespaceObject = require("./contractGateAutopilot.js");
|
|
73
|
+
const external_contractGateSnapshotStore_js_namespaceObject = require("./contractGateSnapshotStore.js");
|
|
74
|
+
const external_env_js_namespaceObject = require("./env.js");
|
|
75
|
+
const external_mfCache_js_namespaceObject = require("./mfCache.js");
|
|
76
|
+
const external_moduleFederationCss_js_namespaceObject = require("./moduleFederationCss.js");
|
|
77
|
+
const external_telemetry_js_namespaceObject = require("./telemetry.js");
|
|
78
|
+
exports.CONTRACT_GATE_SNAPSHOT_SCHEMA_VERSION = __webpack_exports__.CONTRACT_GATE_SNAPSHOT_SCHEMA_VERSION;
|
|
79
|
+
exports.ContractGateAutopilot = __webpack_exports__.ContractGateAutopilot;
|
|
80
|
+
exports.DEFAULT_CONTRACT_GATE_SNAPSHOT_PATH = __webpack_exports__.DEFAULT_CONTRACT_GATE_SNAPSHOT_PATH;
|
|
81
|
+
exports.DEFAULT_ENVIRONMENT_NAME = __webpack_exports__.DEFAULT_ENVIRONMENT_NAME;
|
|
82
|
+
exports.DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT = __webpack_exports__.DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT;
|
|
83
|
+
exports.DEFAULT_RUNTIME_STATUS_ENDPOINT = __webpack_exports__.DEFAULT_RUNTIME_STATUS_ENDPOINT;
|
|
84
|
+
exports.TelemetryCanaryOrchestrator = __webpack_exports__.TelemetryCanaryOrchestrator;
|
|
85
|
+
exports.TelemetryRegistry = __webpack_exports__.TelemetryRegistry;
|
|
86
|
+
exports.TelemetryStartupHealthError = __webpack_exports__.TelemetryStartupHealthError;
|
|
87
|
+
exports.collectDirectRemoteModuleFederationCss = __webpack_exports__.collectDirectRemoteModuleFederationCss;
|
|
88
|
+
exports.collectDirectRemoteModuleFederationCssWithMeta = __webpack_exports__.collectDirectRemoteModuleFederationCssWithMeta;
|
|
89
|
+
exports.collectModuleFederationManifestCss = __webpack_exports__.collectModuleFederationManifestCss;
|
|
90
|
+
exports.createFileContractGateSnapshotStore = __webpack_exports__.createFileContractGateSnapshotStore;
|
|
91
|
+
exports.createHttpContractGateSnapshotStore = __webpack_exports__.createHttpContractGateSnapshotStore;
|
|
92
|
+
exports.createModuleFederationCssCollector = __webpack_exports__.createModuleFederationCssCollector;
|
|
93
|
+
exports.createOtlpTelemetryExporter = __webpack_exports__.createOtlpTelemetryExporter;
|
|
94
|
+
exports.createRuntimeFallbackSignalRuntimeState = __webpack_exports__.createRuntimeFallbackSignalRuntimeState;
|
|
95
|
+
exports.createRuntimeSignalError = __webpack_exports__.createRuntimeSignalError;
|
|
96
|
+
exports.createTelemetryAwareMetrics = __webpack_exports__.createTelemetryAwareMetrics;
|
|
97
|
+
exports.createVictoriaMetricsTelemetryExporter = __webpack_exports__.createVictoriaMetricsTelemetryExporter;
|
|
98
|
+
exports.enforceRuntimeFallbackSignalAuthToken = __webpack_exports__.enforceRuntimeFallbackSignalAuthToken;
|
|
99
|
+
exports.enforceRuntimeFallbackSignalTrustPolicy = __webpack_exports__.enforceRuntimeFallbackSignalTrustPolicy;
|
|
100
|
+
exports.getRequestPathname = __webpack_exports__.getRequestPathname;
|
|
101
|
+
exports.getRuntimeSignalErrorStatusCode = __webpack_exports__.getRuntimeSignalErrorStatusCode;
|
|
102
|
+
exports.hasEnabledTelemetryExporters = __webpack_exports__.hasEnabledTelemetryExporters;
|
|
103
|
+
exports.injectMfAssetCacheHeadersPlugin = __webpack_exports__.injectMfAssetCacheHeadersPlugin;
|
|
104
|
+
exports.injectModuleFederationCssPlugin = __webpack_exports__.injectModuleFederationCssPlugin;
|
|
105
|
+
exports.injectTelemetryPlugin = __webpack_exports__.injectTelemetryPlugin;
|
|
106
|
+
exports.isMfManifestAsset = __webpack_exports__.isMfManifestAsset;
|
|
107
|
+
exports.isMfRemoteEntryAsset = __webpack_exports__.isMfRemoteEntryAsset;
|
|
108
|
+
exports.normalizeRequiredRuntimeFallbackSignalAuthConfig = __webpack_exports__.normalizeRequiredRuntimeFallbackSignalAuthConfig;
|
|
109
|
+
exports.normalizeRuntimeFallbackSignalAuthConfig = __webpack_exports__.normalizeRuntimeFallbackSignalAuthConfig;
|
|
110
|
+
exports.normalizeRuntimeFallbackTrustPolicy = __webpack_exports__.normalizeRuntimeFallbackTrustPolicy;
|
|
111
|
+
exports.parseRuntimeFallbackSignalPayloadFromRawBody = __webpack_exports__.parseRuntimeFallbackSignalPayloadFromRawBody;
|
|
112
|
+
exports.parseServerRuntimeExtensionsEnv = __webpack_exports__.parseServerRuntimeExtensionsEnv;
|
|
113
|
+
exports.resolveContractGateSnapshotPath = __webpack_exports__.resolveContractGateSnapshotPath;
|
|
114
|
+
exports.resolveContractGateSnapshotStore = __webpack_exports__.resolveContractGateSnapshotStore;
|
|
115
|
+
exports.resolveMfAssetCacheHeaders = __webpack_exports__.resolveMfAssetCacheHeaders;
|
|
116
|
+
exports.resolveRuntimeFallbackSignalEndpoint = __webpack_exports__.resolveRuntimeFallbackSignalEndpoint;
|
|
117
|
+
exports.resolveTelemetrySloOptions = __webpack_exports__.resolveTelemetrySloOptions;
|
|
118
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
119
|
+
"CONTRACT_GATE_SNAPSHOT_SCHEMA_VERSION",
|
|
120
|
+
"ContractGateAutopilot",
|
|
121
|
+
"DEFAULT_CONTRACT_GATE_SNAPSHOT_PATH",
|
|
122
|
+
"DEFAULT_ENVIRONMENT_NAME",
|
|
123
|
+
"DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT",
|
|
124
|
+
"DEFAULT_RUNTIME_STATUS_ENDPOINT",
|
|
125
|
+
"TelemetryCanaryOrchestrator",
|
|
126
|
+
"TelemetryRegistry",
|
|
127
|
+
"TelemetryStartupHealthError",
|
|
128
|
+
"collectDirectRemoteModuleFederationCss",
|
|
129
|
+
"collectDirectRemoteModuleFederationCssWithMeta",
|
|
130
|
+
"collectModuleFederationManifestCss",
|
|
131
|
+
"createFileContractGateSnapshotStore",
|
|
132
|
+
"createHttpContractGateSnapshotStore",
|
|
133
|
+
"createModuleFederationCssCollector",
|
|
134
|
+
"createOtlpTelemetryExporter",
|
|
135
|
+
"createRuntimeFallbackSignalRuntimeState",
|
|
136
|
+
"createRuntimeSignalError",
|
|
137
|
+
"createTelemetryAwareMetrics",
|
|
138
|
+
"createVictoriaMetricsTelemetryExporter",
|
|
139
|
+
"enforceRuntimeFallbackSignalAuthToken",
|
|
140
|
+
"enforceRuntimeFallbackSignalTrustPolicy",
|
|
141
|
+
"getRequestPathname",
|
|
142
|
+
"getRuntimeSignalErrorStatusCode",
|
|
143
|
+
"hasEnabledTelemetryExporters",
|
|
144
|
+
"injectMfAssetCacheHeadersPlugin",
|
|
145
|
+
"injectModuleFederationCssPlugin",
|
|
146
|
+
"injectTelemetryPlugin",
|
|
147
|
+
"isMfManifestAsset",
|
|
148
|
+
"isMfRemoteEntryAsset",
|
|
149
|
+
"normalizeRequiredRuntimeFallbackSignalAuthConfig",
|
|
150
|
+
"normalizeRuntimeFallbackSignalAuthConfig",
|
|
151
|
+
"normalizeRuntimeFallbackTrustPolicy",
|
|
152
|
+
"parseRuntimeFallbackSignalPayloadFromRawBody",
|
|
153
|
+
"parseServerRuntimeExtensionsEnv",
|
|
154
|
+
"resolveContractGateSnapshotPath",
|
|
155
|
+
"resolveContractGateSnapshotStore",
|
|
156
|
+
"resolveMfAssetCacheHeaders",
|
|
157
|
+
"resolveRuntimeFallbackSignalEndpoint",
|
|
158
|
+
"resolveTelemetrySloOptions"
|
|
159
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
160
|
+
Object.defineProperty(exports, '__esModule', {
|
|
161
|
+
value: true
|
|
162
|
+
});
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
const REMOTE_ENTRY_REGEXP = /(^|\/)remoteEntry(?:\.[a-zA-Z0-9_-]+)?\.js$/;
|
|
31
|
+
function firstQueryValue(value) {
|
|
32
|
+
if (Array.isArray(value)) return value.find((item)=>'string' == typeof item && item.length > 0);
|
|
33
|
+
if ('string' == typeof value && value.length > 0) return value;
|
|
34
|
+
}
|
|
35
|
+
function getRequestPathname(url) {
|
|
36
|
+
try {
|
|
37
|
+
return new URL(url, 'http://modernjs.local').pathname;
|
|
38
|
+
} catch (_error) {
|
|
39
|
+
return url.split('?')[0] || '/';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function isMfManifestAsset(pathname) {
|
|
43
|
+
return pathname.endsWith('/mf-manifest.json') || pathname.endsWith('/mf-stats.json');
|
|
44
|
+
}
|
|
45
|
+
function isMfRemoteEntryAsset(pathname) {
|
|
46
|
+
return REMOTE_ENTRY_REGEXP.test(pathname);
|
|
47
|
+
}
|
|
48
|
+
function hasRemoteVersionPin(query = {}) {
|
|
49
|
+
return Boolean(firstQueryValue(query.mfv) || firstQueryValue(query.v) || firstQueryValue(query.version));
|
|
50
|
+
}
|
|
51
|
+
function resolveMfAssetCacheHeaders(url, query = {}) {
|
|
52
|
+
const pathname = getRequestPathname(url);
|
|
53
|
+
if (isMfManifestAsset(pathname)) return {
|
|
54
|
+
'cache-control': 'no-cache, no-store, must-revalidate',
|
|
55
|
+
pragma: 'no-cache',
|
|
56
|
+
expires: '0'
|
|
57
|
+
};
|
|
58
|
+
if (isMfRemoteEntryAsset(pathname)) return hasRemoteVersionPin(query) ? {
|
|
59
|
+
'cache-control': 'public, max-age=31536000, immutable'
|
|
60
|
+
} : {
|
|
61
|
+
'cache-control': 'public, max-age=0, must-revalidate'
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const injectMfAssetCacheHeadersPlugin = ()=>({
|
|
65
|
+
name: '@modern-js/inject-mf-asset-cache-headers',
|
|
66
|
+
setup (api) {
|
|
67
|
+
api.onPrepare(()=>{
|
|
68
|
+
const { middlewares } = api.getServerContext();
|
|
69
|
+
const handler = async (c, next)=>{
|
|
70
|
+
await next();
|
|
71
|
+
if (!c.res || c.res.status >= 400) return;
|
|
72
|
+
const headers = resolveMfAssetCacheHeaders(c.req.path, c.req.query());
|
|
73
|
+
if (!headers) return;
|
|
74
|
+
for (const [name, value] of Object.entries(headers))c.res.headers.set(name, value);
|
|
75
|
+
};
|
|
76
|
+
middlewares.push({
|
|
77
|
+
name: 'mf-asset-cache-headers',
|
|
78
|
+
handler,
|
|
79
|
+
order: 'pre'
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
85
|
+
getRequestPathname: ()=>getRequestPathname,
|
|
86
|
+
isMfManifestAsset: ()=>isMfManifestAsset,
|
|
87
|
+
isMfRemoteEntryAsset: ()=>isMfRemoteEntryAsset,
|
|
88
|
+
resolveMfAssetCacheHeaders: ()=>resolveMfAssetCacheHeaders
|
|
89
|
+
}, {
|
|
90
|
+
injectMfAssetCacheHeadersPlugin: injectMfAssetCacheHeadersPlugin
|
|
91
|
+
});
|
|
92
|
+
exports.getRequestPathname = __webpack_exports__.getRequestPathname;
|
|
93
|
+
exports.injectMfAssetCacheHeadersPlugin = __webpack_exports__.injectMfAssetCacheHeadersPlugin;
|
|
94
|
+
exports.isMfManifestAsset = __webpack_exports__.isMfManifestAsset;
|
|
95
|
+
exports.isMfRemoteEntryAsset = __webpack_exports__.isMfRemoteEntryAsset;
|
|
96
|
+
exports.resolveMfAssetCacheHeaders = __webpack_exports__.resolveMfAssetCacheHeaders;
|
|
97
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
98
|
+
"getRequestPathname",
|
|
99
|
+
"injectMfAssetCacheHeadersPlugin",
|
|
100
|
+
"isMfManifestAsset",
|
|
101
|
+
"isMfRemoteEntryAsset",
|
|
102
|
+
"resolveMfAssetCacheHeaders"
|
|
103
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
104
|
+
Object.defineProperty(exports, '__esModule', {
|
|
105
|
+
value: true
|
|
106
|
+
});
|
|
@@ -0,0 +1,285 @@
|
|
|
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
|
+
collectDirectRemoteModuleFederationCss: ()=>collectDirectRemoteModuleFederationCss,
|
|
41
|
+
collectDirectRemoteModuleFederationCssWithMeta: ()=>collectDirectRemoteModuleFederationCssWithMeta,
|
|
42
|
+
collectModuleFederationManifestCss: ()=>collectModuleFederationManifestCss,
|
|
43
|
+
createModuleFederationCssCollector: ()=>createModuleFederationCssCollector,
|
|
44
|
+
injectModuleFederationCssPlugin: ()=>injectModuleFederationCssPlugin
|
|
45
|
+
});
|
|
46
|
+
const fileReader_namespaceObject = require("@modern-js/runtime-utils/fileReader");
|
|
47
|
+
const utils_namespaceObject = require("@modern-js/utils");
|
|
48
|
+
const external_path_namespaceObject = require("path");
|
|
49
|
+
var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
|
|
50
|
+
const MODULE_FEDERATION_MANIFEST_FILE = 'mf-manifest.json';
|
|
51
|
+
const DEFAULT_REMOTE_MANIFEST_TIMEOUT = 1500;
|
|
52
|
+
const warn = (monitors, message, ...args)=>{
|
|
53
|
+
if (monitors) return void monitors.warn(message, ...args);
|
|
54
|
+
console.warn(message, ...args);
|
|
55
|
+
};
|
|
56
|
+
const ensureTrailingSlash = (value)=>value.endsWith('/') ? value : `${value}/`;
|
|
57
|
+
const tryResolveUrl = (value, base)=>{
|
|
58
|
+
try {
|
|
59
|
+
return new URL(value, base).toString();
|
|
60
|
+
} catch {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const normalizeRemoteEntry = (entry)=>{
|
|
65
|
+
const value = entry.trim();
|
|
66
|
+
if (!value) return;
|
|
67
|
+
const atIndex = value.lastIndexOf('@');
|
|
68
|
+
return atIndex >= 0 ? value.slice(atIndex + 1) : value;
|
|
69
|
+
};
|
|
70
|
+
const getCssAssets = (assets)=>[
|
|
71
|
+
...assets?.css?.sync || [],
|
|
72
|
+
...assets?.css?.async || []
|
|
73
|
+
];
|
|
74
|
+
const getManifestFallbackBase = (manifestUrl)=>{
|
|
75
|
+
try {
|
|
76
|
+
return new URL('.', manifestUrl).toString();
|
|
77
|
+
} catch {
|
|
78
|
+
return ensureTrailingSlash(manifestUrl);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const getManifestPublicPathBase = (publicPath, manifestUrl)=>{
|
|
82
|
+
if (!publicPath || 'auto' === publicPath) return getManifestFallbackBase(manifestUrl);
|
|
83
|
+
const base = tryResolveUrl(ensureTrailingSlash(publicPath), manifestUrl);
|
|
84
|
+
return base || getManifestFallbackBase(manifestUrl);
|
|
85
|
+
};
|
|
86
|
+
const appendResolvedCssAssets = (result, seen, assets, base)=>{
|
|
87
|
+
for (const asset of assets){
|
|
88
|
+
if (!asset) continue;
|
|
89
|
+
const resolved = tryResolveUrl(asset, base);
|
|
90
|
+
if (resolved && !seen.has(resolved)) {
|
|
91
|
+
seen.add(resolved);
|
|
92
|
+
result.push(resolved);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const collectModuleFederationManifestCss = (manifest, manifestUrl)=>{
|
|
97
|
+
const base = getManifestPublicPathBase(manifest.metaData?.publicPath, manifestUrl);
|
|
98
|
+
const result = [];
|
|
99
|
+
const seen = new Set();
|
|
100
|
+
for (const item of manifest.shared || [])appendResolvedCssAssets(result, seen, getCssAssets(item.assets), base);
|
|
101
|
+
for (const item of manifest.exposes || [])appendResolvedCssAssets(result, seen, getCssAssets(item.assets), base);
|
|
102
|
+
return result;
|
|
103
|
+
};
|
|
104
|
+
const fetchJsonWithTimeout = async (url, fetcher, timeout)=>{
|
|
105
|
+
const controller = new AbortController();
|
|
106
|
+
let timeoutId;
|
|
107
|
+
try {
|
|
108
|
+
const response = await Promise.race([
|
|
109
|
+
fetcher(url, {
|
|
110
|
+
signal: controller.signal
|
|
111
|
+
}),
|
|
112
|
+
new Promise((_, reject)=>{
|
|
113
|
+
timeoutId = setTimeout(()=>{
|
|
114
|
+
controller.abort();
|
|
115
|
+
reject(new Error(`Request timed out after ${timeout}ms`));
|
|
116
|
+
}, timeout);
|
|
117
|
+
})
|
|
118
|
+
]);
|
|
119
|
+
if (!response.ok) throw new Error(`Unexpected status ${response.status}`);
|
|
120
|
+
return await response.json();
|
|
121
|
+
} finally{
|
|
122
|
+
if (timeoutId) clearTimeout(timeoutId);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const getHostManifest = async (pwd, monitors)=>{
|
|
126
|
+
const manifestPath = external_path_default().join(pwd, MODULE_FEDERATION_MANIFEST_FILE);
|
|
127
|
+
if (!await utils_namespaceObject.fs.pathExists(manifestPath)) return;
|
|
128
|
+
const manifestBuffer = await fileReader_namespaceObject.fileReader.readFileFromSystem(manifestPath, 'buffer');
|
|
129
|
+
if (null === manifestBuffer) return;
|
|
130
|
+
try {
|
|
131
|
+
return JSON.parse(manifestBuffer.toString('utf-8'));
|
|
132
|
+
} catch (error) {
|
|
133
|
+
warn(monitors, 'Parse module federation manifest failed, error = %s', error instanceof Error ? error.message : error);
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const collectDirectRemoteModuleFederationCssWithMeta = async (pwd, options = {})=>{
|
|
138
|
+
const hostManifest = await getHostManifest(pwd, options.monitors);
|
|
139
|
+
if (!hostManifest) return {
|
|
140
|
+
assets: [],
|
|
141
|
+
errored: false
|
|
142
|
+
};
|
|
143
|
+
const fetcher = options.fetcher || globalThis.fetch?.bind(globalThis);
|
|
144
|
+
if (!fetcher) {
|
|
145
|
+
warn(options.monitors, 'Skip module federation remote CSS collection because fetch is unavailable.');
|
|
146
|
+
return {
|
|
147
|
+
assets: [],
|
|
148
|
+
errored: false
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const timeout = options.timeout ?? DEFAULT_REMOTE_MANIFEST_TIMEOUT;
|
|
152
|
+
const remoteResults = await Promise.all((hostManifest.remotes || []).map(async (remote)=>{
|
|
153
|
+
if (!remote.entry) return {
|
|
154
|
+
assets: [],
|
|
155
|
+
errored: false
|
|
156
|
+
};
|
|
157
|
+
const remoteEntry = normalizeRemoteEntry(remote.entry);
|
|
158
|
+
if (!remoteEntry) return {
|
|
159
|
+
assets: [],
|
|
160
|
+
errored: false
|
|
161
|
+
};
|
|
162
|
+
let remoteManifestUrl;
|
|
163
|
+
try {
|
|
164
|
+
remoteManifestUrl = new URL(remoteEntry).toString();
|
|
165
|
+
} catch {
|
|
166
|
+
warn(options.monitors, 'Skip module federation remote CSS collection for non-absolute manifest URL %s', remoteEntry);
|
|
167
|
+
return {
|
|
168
|
+
assets: [],
|
|
169
|
+
errored: false
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const remoteManifest = await fetchJsonWithTimeout(remoteManifestUrl, fetcher, timeout);
|
|
174
|
+
return {
|
|
175
|
+
assets: collectModuleFederationManifestCss(remoteManifest, remoteManifestUrl),
|
|
176
|
+
errored: false
|
|
177
|
+
};
|
|
178
|
+
} catch (error) {
|
|
179
|
+
warn(options.monitors, 'Load module federation remote manifest %s failed, error = %s', remoteManifestUrl, error instanceof Error ? error.message : error);
|
|
180
|
+
return {
|
|
181
|
+
assets: [],
|
|
182
|
+
errored: true
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}));
|
|
186
|
+
const cssAssets = [];
|
|
187
|
+
const seen = new Set();
|
|
188
|
+
let errored = false;
|
|
189
|
+
for (const result of remoteResults){
|
|
190
|
+
errored = errored || result.errored;
|
|
191
|
+
for (const asset of result.assets)if (!seen.has(asset)) {
|
|
192
|
+
seen.add(asset);
|
|
193
|
+
cssAssets.push(asset);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
assets: cssAssets,
|
|
198
|
+
errored
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
const collectDirectRemoteModuleFederationCss = async (pwd, options = {})=>{
|
|
202
|
+
const { assets } = await collectDirectRemoteModuleFederationCssWithMeta(pwd, options);
|
|
203
|
+
return assets;
|
|
204
|
+
};
|
|
205
|
+
const createModuleFederationCssCollector = (pwd, options = {})=>{
|
|
206
|
+
const { ttlMs = 0, now = Date.now, ...collectOptions } = options;
|
|
207
|
+
const normalizedTtlMs = Math.max(0, ttlMs);
|
|
208
|
+
let cached;
|
|
209
|
+
let lastGoodAssets;
|
|
210
|
+
let inflight;
|
|
211
|
+
const refresh = (monitors)=>{
|
|
212
|
+
const promise = collectDirectRemoteModuleFederationCssWithMeta(pwd, {
|
|
213
|
+
...collectOptions,
|
|
214
|
+
monitors: monitors ?? collectOptions.monitors
|
|
215
|
+
}).then((result)=>{
|
|
216
|
+
if (!result.errored) {
|
|
217
|
+
lastGoodAssets = result.assets;
|
|
218
|
+
cached = {
|
|
219
|
+
assets: result.assets,
|
|
220
|
+
expiresAt: now() + normalizedTtlMs
|
|
221
|
+
};
|
|
222
|
+
return result.assets;
|
|
223
|
+
}
|
|
224
|
+
cached = void 0;
|
|
225
|
+
return lastGoodAssets ?? result.assets;
|
|
226
|
+
}).finally(()=>{
|
|
227
|
+
if (inflight === promise) inflight = void 0;
|
|
228
|
+
});
|
|
229
|
+
inflight = promise;
|
|
230
|
+
return promise;
|
|
231
|
+
};
|
|
232
|
+
return {
|
|
233
|
+
collect (monitors) {
|
|
234
|
+
if (cached && now() < cached.expiresAt) return Promise.resolve(cached.assets);
|
|
235
|
+
if (inflight) return inflight;
|
|
236
|
+
return refresh(monitors);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
const DEFAULT_REMOTE_CSS_CACHE_TTL_MS = 30000;
|
|
241
|
+
const injectModuleFederationCssPlugin = (options = {})=>({
|
|
242
|
+
name: '@modern-js/inject-module-federation-css',
|
|
243
|
+
setup (api) {
|
|
244
|
+
api.onPrepare(()=>{
|
|
245
|
+
const { middlewares, distDirectory: pwd } = api.getServerContext();
|
|
246
|
+
if (!pwd) return;
|
|
247
|
+
const ttlMs = Math.max(0, options.remoteCssCacheTtlMs ?? ((0, utils_namespaceObject.isProd)() ? DEFAULT_REMOTE_CSS_CACHE_TTL_MS : 0));
|
|
248
|
+
const collector = createModuleFederationCssCollector(pwd, {
|
|
249
|
+
ttlMs
|
|
250
|
+
});
|
|
251
|
+
if ((0, utils_namespaceObject.isProd)()) collector.collect().catch(()=>{});
|
|
252
|
+
const handler = async (c, next)=>{
|
|
253
|
+
const serverManifest = c.get('serverManifest');
|
|
254
|
+
if (serverManifest && !serverManifest.moduleFederationCssAssets) {
|
|
255
|
+
const monitors = c.get('monitors');
|
|
256
|
+
const moduleFederationCssAssets = await collector.collect(monitors);
|
|
257
|
+
c.set('serverManifest', {
|
|
258
|
+
...serverManifest,
|
|
259
|
+
moduleFederationCssAssets
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
await next();
|
|
263
|
+
};
|
|
264
|
+
middlewares.push({
|
|
265
|
+
name: 'inject-module-federation-css',
|
|
266
|
+
handler
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
exports.collectDirectRemoteModuleFederationCss = __webpack_exports__.collectDirectRemoteModuleFederationCss;
|
|
272
|
+
exports.collectDirectRemoteModuleFederationCssWithMeta = __webpack_exports__.collectDirectRemoteModuleFederationCssWithMeta;
|
|
273
|
+
exports.collectModuleFederationManifestCss = __webpack_exports__.collectModuleFederationManifestCss;
|
|
274
|
+
exports.createModuleFederationCssCollector = __webpack_exports__.createModuleFederationCssCollector;
|
|
275
|
+
exports.injectModuleFederationCssPlugin = __webpack_exports__.injectModuleFederationCssPlugin;
|
|
276
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
277
|
+
"collectDirectRemoteModuleFederationCss",
|
|
278
|
+
"collectDirectRemoteModuleFederationCssWithMeta",
|
|
279
|
+
"collectModuleFederationManifestCss",
|
|
280
|
+
"createModuleFederationCssCollector",
|
|
281
|
+
"injectModuleFederationCssPlugin"
|
|
282
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
283
|
+
Object.defineProperty(exports, '__esModule', {
|
|
284
|
+
value: true
|
|
285
|
+
});
|