@bleedingdev/modern-js-server-core 3.8.3-ultramodern.6 → 3.9.0-ultramodern.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/cjs/adapters/node/index.js +4 -0
  2. package/dist/cjs/adapters/node/plugins/static.js +107 -29
  3. package/dist/cjs/index.js +10 -34
  4. package/dist/cjs/plugins/compat/index.js +1 -0
  5. package/dist/cjs/serverBase.js +58 -17
  6. package/dist/cjs/utils/error.js +0 -10
  7. package/dist/esm/adapters/node/index.mjs +1 -0
  8. package/dist/esm/adapters/node/plugins/static.mjs +107 -32
  9. package/dist/esm/index.mjs +1 -1
  10. package/dist/esm/plugins/compat/index.mjs +1 -0
  11. package/dist/esm/plugins/render/render.mjs +4 -5
  12. package/dist/esm/serverBase.mjs +58 -17
  13. package/dist/esm/utils/error.mjs +0 -1
  14. package/dist/esm-node/adapters/node/index.mjs +1 -0
  15. package/dist/esm-node/adapters/node/plugins/static.mjs +107 -32
  16. package/dist/esm-node/index.mjs +1 -1
  17. package/dist/esm-node/plugins/compat/index.mjs +1 -0
  18. package/dist/esm-node/plugins/render/render.mjs +4 -3
  19. package/dist/esm-node/serverBase.mjs +58 -17
  20. package/dist/esm-node/utils/error.mjs +0 -1
  21. package/dist/types/adapters/node/helper/index.d.ts +6 -6
  22. package/dist/types/adapters/node/helper/loadCache.d.ts +1 -1
  23. package/dist/types/adapters/node/helper/loadConfig.d.ts +1 -1
  24. package/dist/types/adapters/node/helper/loadEnv.d.ts +1 -1
  25. package/dist/types/adapters/node/helper/loadPlugin.d.ts +1 -1
  26. package/dist/types/adapters/node/helper/utils.d.ts +1 -1
  27. package/dist/types/adapters/node/hono.d.ts +2 -2
  28. package/dist/types/adapters/node/index.d.ts +7 -5
  29. package/dist/types/adapters/node/node.d.ts +1 -1
  30. package/dist/types/adapters/node/plugins/index.d.ts +3 -3
  31. package/dist/types/adapters/node/plugins/nodeServer.d.ts +1 -1
  32. package/dist/types/adapters/node/plugins/resource.d.ts +1 -1
  33. package/dist/types/adapters/node/plugins/static.d.ts +43 -5
  34. package/dist/types/helper.d.ts +1 -1
  35. package/dist/types/index.d.ts +13 -14
  36. package/dist/types/plugins/compat/hooks.d.ts +1 -1
  37. package/dist/types/plugins/compat/index.d.ts +2 -2
  38. package/dist/types/plugins/default.d.ts +2 -2
  39. package/dist/types/plugins/favicon.d.ts +1 -1
  40. package/dist/types/plugins/index.d.ts +8 -8
  41. package/dist/types/plugins/log.d.ts +1 -1
  42. package/dist/types/plugins/middlewares.d.ts +1 -1
  43. package/dist/types/plugins/monitors.d.ts +1 -1
  44. package/dist/types/plugins/processedBy.d.ts +1 -1
  45. package/dist/types/plugins/render/csrRscRender.d.ts +1 -1
  46. package/dist/types/plugins/render/dataHandler.d.ts +1 -1
  47. package/dist/types/plugins/render/index.d.ts +2 -2
  48. package/dist/types/plugins/render/inject.d.ts +1 -1
  49. package/dist/types/plugins/render/render.d.ts +2 -2
  50. package/dist/types/plugins/render/renderRscHandler.d.ts +1 -1
  51. package/dist/types/plugins/render/serverActionHandler.d.ts +1 -1
  52. package/dist/types/plugins/render/ssrCache.d.ts +1 -1
  53. package/dist/types/plugins/render/ssrRender.d.ts +2 -2
  54. package/dist/types/plugins/render/utils.d.ts +2 -2
  55. package/dist/types/plugins/route.d.ts +1 -1
  56. package/dist/types/serverBase.d.ts +9 -3
  57. package/dist/types/types/config/bff.d.ts +4 -15
  58. package/dist/types/types/config/index.d.ts +14 -14
  59. package/dist/types/types/config/server.d.ts +1 -3
  60. package/dist/types/types/config/source.d.ts +1 -1
  61. package/dist/types/types/index.d.ts +4 -4
  62. package/dist/types/types/plugins/base.d.ts +3 -3
  63. package/dist/types/types/plugins/index.d.ts +2 -2
  64. package/dist/types/types/plugins/plugin.d.ts +16 -2
  65. package/dist/types/types/render.d.ts +1 -1
  66. package/dist/types/types/requestHandler.d.ts +3 -4
  67. package/dist/types/types/server.d.ts +1 -1
  68. package/dist/types/utils/error.d.ts +0 -2
  69. package/dist/types/utils/index.d.ts +9 -9
  70. package/dist/types/utils/publicDir.d.ts +1 -1
  71. package/dist/types/utils/serverConfig.d.ts +1 -1
  72. package/package.json +8 -9
  73. package/dist/cjs/adapters/node/plugins/staticModuleFederation.js +0 -173
  74. package/dist/cjs/adapters/node/plugins/staticPrecompressed.js +0 -152
  75. package/dist/cjs/adapters/node/plugins/staticServing.js +0 -206
  76. package/dist/cjs/types/config/bffRuntime.js +0 -18
  77. package/dist/cjs/types/config/serverTelemetry.js +0 -18
  78. package/dist/esm/adapters/node/plugins/staticModuleFederation.mjs +0 -104
  79. package/dist/esm/adapters/node/plugins/staticPrecompressed.mjs +0 -111
  80. package/dist/esm/adapters/node/plugins/staticServing.mjs +0 -152
  81. package/dist/esm/types/config/bffRuntime.mjs +0 -0
  82. package/dist/esm/types/config/serverTelemetry.mjs +0 -0
  83. package/dist/esm-node/adapters/node/plugins/staticModuleFederation.mjs +0 -105
  84. package/dist/esm-node/adapters/node/plugins/staticPrecompressed.mjs +0 -112
  85. package/dist/esm-node/adapters/node/plugins/staticServing.mjs +0 -153
  86. package/dist/esm-node/types/config/bffRuntime.mjs +0 -1
  87. package/dist/esm-node/types/config/serverTelemetry.mjs +0 -1
  88. package/dist/types/adapters/node/plugins/staticModuleFederation.d.ts +0 -13
  89. package/dist/types/adapters/node/plugins/staticPrecompressed.d.ts +0 -13
  90. package/dist/types/adapters/node/plugins/staticServing.d.ts +0 -25
  91. package/dist/types/types/config/bffRuntime.d.ts +0 -116
  92. package/dist/types/types/config/serverTelemetry.d.ts +0 -319
  93. /package/dist/esm/{rslib-runtime.mjs → rslib-runtime~1.mjs} +0 -0
  94. /package/dist/esm-node/{rslib-runtime.mjs → rslib-runtime~0.mjs} +0 -0
@@ -1,9 +1,9 @@
1
- export * from './entry';
2
- export * from './env';
3
- export * from './error';
4
- export * from './middlewareCollector';
5
- export * from './publicDir';
6
- export * from './request';
7
- export * from './serverConfig';
8
- export * from './transformStream';
9
- export * from './warmup';
1
+ export * from './entry.js';
2
+ export * from './env.js';
3
+ export * from './error.js';
4
+ export * from './middlewareCollector.js';
5
+ export * from './publicDir.js';
6
+ export * from './request.js';
7
+ export * from './serverConfig.js';
8
+ export * from './transformStream.js';
9
+ export * from './warmup.js';
@@ -1,4 +1,4 @@
1
- import type { ServerNormalizedConfig } from '../types';
1
+ import type { ServerNormalizedConfig } from '../types/index.js';
2
2
  /**
3
3
  * Normalize publicDir configuration to an array of strings
4
4
  * @param publicDir - publicDir configuration (string | string[] | undefined)
@@ -1,4 +1,4 @@
1
- import type { CliConfig, ServerConfig } from '../types';
1
+ import type { CliConfig, ServerConfig } from '../types/index.js';
2
2
  /**
3
3
  * 对配置进行合并,cliConfig 与 serverConfig 进行深合并
4
4
  */
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "modern",
18
18
  "modern.js"
19
19
  ],
20
- "version": "3.8.3-ultramodern.6",
20
+ "version": "3.9.0-ultramodern.10",
21
21
  "types": "./dist/types/index.d.ts",
22
22
  "main": "./dist/cjs/index.js",
23
23
  "exports": {
@@ -66,26 +66,25 @@
66
66
  "node": ">=20"
67
67
  },
68
68
  "dependencies": {
69
- "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.8.3-ultramodern.6",
70
- "@modern-js/runtime-extensions": "npm:@bleedingdev/modern-js-runtime-extensions@3.8.3-ultramodern.6",
71
- "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.8.3-ultramodern.6",
72
- "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.8.3-ultramodern.6",
69
+ "@modern-js/plugin": "npm:@bleedingdev/modern-js-plugin@3.9.0-ultramodern.10",
70
+ "@modern-js/runtime-utils": "npm:@bleedingdev/modern-js-runtime-utils@3.9.0-ultramodern.10",
71
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.9.0-ultramodern.10",
73
72
  "@swc/helpers": "^0.5.23",
74
73
  "@web-std/fetch": "^4.2.1",
75
74
  "@web-std/file": "^3.0.3",
76
75
  "@web-std/stream": "^1.0.3",
77
76
  "cloneable-readable": "^3.0.0",
78
77
  "flatted": "^3.4.4",
79
- "hono": "^4.12.28",
78
+ "hono": "^4.13.7",
80
79
  "ts-deepmerge": "8.0.0"
81
80
  },
82
81
  "devDependencies": {
83
- "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.8.3-ultramodern.6",
84
- "@rslib/core": "0.23.2",
82
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.9.0-ultramodern.10",
83
+ "@rslib/core": "1.0.0",
85
84
  "@scripts/rstest-config": "2.66.0",
86
85
  "@types/cloneable-readable": "^2.0.3",
87
86
  "@types/merge-deep": "^3.0.3",
88
- "@types/node": "^26.2.0",
87
+ "@types/node": "^26.4.1",
89
88
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
90
89
  "http-proxy-middleware": "^4.2.0",
91
90
  "typescript": "^7.0.2"
@@ -1,173 +0,0 @@
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
- MODULE_FEDERATION_MANIFEST_FILE: ()=>MODULE_FEDERATION_MANIFEST_FILE,
41
- applyModuleFederationAssetHeaders: ()=>applyModuleFederationAssetHeaders,
42
- getModuleFederationAssetList: ()=>getModuleFederationAssetList,
43
- getModuleFederationRequestPath: ()=>getModuleFederationRequestPath,
44
- isBackendModuleFederationManifestRequest: ()=>isBackendModuleFederationManifestRequest,
45
- isModuleFederationManifestRequest: ()=>isModuleFederationManifestRequest,
46
- patchModuleFederationManifestPublicPath: ()=>patchModuleFederationManifestPublicPath,
47
- patchModuleFederationRemoteEntryPublicPath: ()=>patchModuleFederationRemoteEntryPublicPath
48
- });
49
- const fileReader_namespaceObject = require("@modern-js/runtime-utils/fileReader");
50
- const utils_namespaceObject = require("@modern-js/utils");
51
- const external_path_namespaceObject = require("path");
52
- var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
53
- const MODULE_FEDERATION_MANIFEST_FILE = 'mf-manifest.json';
54
- const BACKEND_MODULE_FEDERATION_MANIFEST_FILE = 'backend-mf-manifest.json';
55
- const MODULE_FEDERATION_MANIFEST_FILES = [
56
- MODULE_FEDERATION_MANIFEST_FILE,
57
- BACKEND_MODULE_FEDERATION_MANIFEST_FILE
58
- ];
59
- const MODULE_FEDERATION_OPTIONAL_FILES = [
60
- 'mf-stats.json'
61
- ];
62
- const trimLeadingSlash = (value)=>value.replace(/^\/+/, '');
63
- const getModuleFederationRequestPath = (pathname, pathPrefix)=>{
64
- const normalizedPrefix = `/${trimLeadingSlash(pathPrefix)}`.replace(/\/+$/u, '');
65
- const requestPath = normalizedPrefix && (pathname === normalizedPrefix || pathname.startsWith(`${normalizedPrefix}/`)) ? pathname.slice(normalizedPrefix.length) : pathname;
66
- return trimLeadingSlash(requestPath);
67
- };
68
- const isModuleFederationManifestRequest = (requestPath)=>MODULE_FEDERATION_MANIFEST_FILES.includes(requestPath);
69
- const isBackendModuleFederationManifestRequest = (requestPath)=>requestPath === BACKEND_MODULE_FEDERATION_MANIFEST_FILE;
70
- const applyModuleFederationAssetHeaders = (c)=>{
71
- c.header('Access-Control-Allow-Origin', '*');
72
- c.header('Access-Control-Allow-Headers', '*');
73
- c.header('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS');
74
- };
75
- const joinModuleFederationAssetPath = (assetPath, assetName)=>{
76
- if (!assetName) return '';
77
- return trimLeadingSlash(external_path_default().posix.join(assetPath || '', assetName));
78
- };
79
- const appendModuleFederationAsset = (set, assetPath)=>{
80
- if (assetPath) set.add(trimLeadingSlash(assetPath));
81
- };
82
- const appendModuleFederationAssets = (set, assets)=>{
83
- assets?.js?.sync?.forEach((asset)=>appendModuleFederationAsset(set, asset));
84
- assets?.js?.async?.forEach((asset)=>appendModuleFederationAsset(set, asset));
85
- assets?.css?.sync?.forEach((asset)=>appendModuleFederationAsset(set, asset));
86
- assets?.css?.async?.forEach((asset)=>appendModuleFederationAsset(set, asset));
87
- };
88
- const hasAbsoluteProtocol = (value)=>/^https?:\/\//i.test(value) || value.startsWith('//');
89
- const ensureLeadingSlash = (value)=>{
90
- if ('' === value) return '/';
91
- return value.startsWith('/') ? value : `/${value}`;
92
- };
93
- const ensureTrailingSlash = (value)=>value.endsWith('/') ? value : `${value}/`;
94
- const patchModuleFederationManifestPublicPath = (c, manifestBuffer, pathPrefix)=>{
95
- try {
96
- const manifest = JSON.parse(manifestBuffer.toString('utf-8'));
97
- const publicPath = manifest.metaData?.publicPath;
98
- if (!publicPath || hasAbsoluteProtocol(publicPath)) return manifestBuffer;
99
- const requestURL = new URL(c.req.url);
100
- const prefixPath = ensureTrailingSlash(ensureLeadingSlash(pathPrefix || '/'));
101
- manifest.metaData = {
102
- ...manifest.metaData,
103
- publicPath: `${requestURL.origin}${prefixPath}`
104
- };
105
- return Buffer.from(JSON.stringify(manifest), 'utf-8');
106
- } catch {
107
- return manifestBuffer;
108
- }
109
- };
110
- const patchModuleFederationRemoteEntryPublicPath = (c, remoteEntryBuffer, pathPrefix)=>{
111
- const requestURL = new URL(c.req.url);
112
- const prefixPath = ensureTrailingSlash(ensureLeadingSlash(pathPrefix || '/'));
113
- const publicPath = `${requestURL.origin}${prefixPath}`;
114
- const source = remoteEntryBuffer.toString('utf-8');
115
- const patched = source.replace(/__webpack_require__\.p\s*=\s*(['"`])[^'"`]*\1;/, `__webpack_require__.p = ${JSON.stringify(publicPath)};`).replace(/__rspack_require__\.p\s*=\s*(['"`])[^'"`]*\1;/, `__rspack_require__.p = ${JSON.stringify(publicPath)};`);
116
- if (patched === source) return remoteEntryBuffer;
117
- return Buffer.from(patched, 'utf-8');
118
- };
119
- const getModuleFederationAssetList = async (pwd)=>{
120
- const assets = new Set();
121
- const remoteEntries = new Set();
122
- let manifestFound = false;
123
- for (const manifestFile of MODULE_FEDERATION_MANIFEST_FILES){
124
- const manifestPath = external_path_default().join(pwd, manifestFile);
125
- if (!await utils_namespaceObject.fs.pathExists(manifestPath)) continue;
126
- manifestFound = true;
127
- assets.add(manifestFile);
128
- const manifestBuffer = await fileReader_namespaceObject.fileReader.readFileFromSystem(manifestPath, 'buffer');
129
- if (null !== manifestBuffer) try {
130
- const manifest = JSON.parse(manifestBuffer.toString('utf-8'));
131
- const remoteEntry = joinModuleFederationAssetPath(manifest.metaData?.remoteEntry?.path, manifest.metaData?.remoteEntry?.name);
132
- const dtsZip = joinModuleFederationAssetPath(manifest.metaData?.types?.path, manifest.metaData?.types?.zip);
133
- const dtsApi = joinModuleFederationAssetPath(manifest.metaData?.types?.path, manifest.metaData?.types?.api);
134
- if (remoteEntry) {
135
- assets.add(remoteEntry);
136
- remoteEntries.add(remoteEntry);
137
- }
138
- appendModuleFederationAsset(assets, dtsZip);
139
- appendModuleFederationAsset(assets, dtsApi);
140
- manifest.shared?.forEach((item)=>appendModuleFederationAssets(assets, item.assets));
141
- manifest.remotes?.forEach((item)=>appendModuleFederationAssets(assets, item.assets));
142
- manifest.exposes?.forEach((item)=>appendModuleFederationAssets(assets, item.assets));
143
- } catch {}
144
- }
145
- if (manifestFound) {
146
- for (const filename of MODULE_FEDERATION_OPTIONAL_FILES)if (await utils_namespaceObject.fs.pathExists(external_path_default().join(pwd, filename))) assets.add(filename);
147
- }
148
- return {
149
- assets,
150
- remoteEntries
151
- };
152
- };
153
- exports.MODULE_FEDERATION_MANIFEST_FILE = __webpack_exports__.MODULE_FEDERATION_MANIFEST_FILE;
154
- exports.applyModuleFederationAssetHeaders = __webpack_exports__.applyModuleFederationAssetHeaders;
155
- exports.getModuleFederationAssetList = __webpack_exports__.getModuleFederationAssetList;
156
- exports.getModuleFederationRequestPath = __webpack_exports__.getModuleFederationRequestPath;
157
- exports.isBackendModuleFederationManifestRequest = __webpack_exports__.isBackendModuleFederationManifestRequest;
158
- exports.isModuleFederationManifestRequest = __webpack_exports__.isModuleFederationManifestRequest;
159
- exports.patchModuleFederationManifestPublicPath = __webpack_exports__.patchModuleFederationManifestPublicPath;
160
- exports.patchModuleFederationRemoteEntryPublicPath = __webpack_exports__.patchModuleFederationRemoteEntryPublicPath;
161
- for(var __rspack_i in __webpack_exports__)if (-1 === [
162
- "MODULE_FEDERATION_MANIFEST_FILE",
163
- "applyModuleFederationAssetHeaders",
164
- "getModuleFederationAssetList",
165
- "getModuleFederationRequestPath",
166
- "isBackendModuleFederationManifestRequest",
167
- "isModuleFederationManifestRequest",
168
- "patchModuleFederationManifestPublicPath",
169
- "patchModuleFederationRemoteEntryPublicPath"
170
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
171
- Object.defineProperty(exports, '__esModule', {
172
- value: true
173
- });
@@ -1,152 +0,0 @@
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
- applyPreCompressedAssetHeaders: ()=>applyPreCompressedAssetHeaders,
32
- resolvePreCompressedAsset: ()=>resolvePreCompressedAsset
33
- });
34
- const utils_namespaceObject = require("@modern-js/utils");
35
- const PRE_COMPRESSED_ASSET_EXTENSIONS = {
36
- br: '.br',
37
- gzip: '.gz'
38
- };
39
- const PRE_COMPRESSED_SUPPORTED_ENCODINGS = [
40
- 'br',
41
- 'gzip'
42
- ];
43
- const QUALITY_VALUE_PATTERN = /^(?:0(?:\.\d{0,3})?|1(?:\.0{0,3})?)$/u;
44
- const parseAcceptEncoding = (value)=>value.split(',').map((item)=>item.trim()).filter(Boolean).map((item)=>{
45
- const [rawName, ...params] = item.split(';');
46
- const name = rawName.trim().toLowerCase();
47
- let q = 1;
48
- let qualitySeen = false;
49
- for (const param of params){
50
- const [key, rawValue] = param.split('=').map((v)=>v.trim());
51
- if ('q' === key.toLowerCase()) {
52
- if (qualitySeen || null == rawValue || !QUALITY_VALUE_PATTERN.test(rawValue)) {
53
- q = 0;
54
- break;
55
- }
56
- qualitySeen = true;
57
- q = Number(rawValue);
58
- }
59
- }
60
- return {
61
- name,
62
- q
63
- };
64
- });
65
- const getAcceptedRepresentations = (value)=>{
66
- if (!value) return [
67
- 'identity'
68
- ];
69
- const parsed = parseAcceptEncoding(value);
70
- const qualityByEncoding = new Map();
71
- let wildcardQuality;
72
- for (const { name, q } of parsed){
73
- if ('*' === name) {
74
- wildcardQuality = q;
75
- continue;
76
- }
77
- qualityByEncoding.set(name, q);
78
- }
79
- const getQuality = (encoding)=>{
80
- const explicit = qualityByEncoding.get(encoding);
81
- if (void 0 !== explicit) return explicit;
82
- return wildcardQuality ?? 0;
83
- };
84
- const identityQuality = qualityByEncoding.get('identity') ?? (0 === wildcardQuality ? 0 : 1);
85
- return [
86
- ...PRE_COMPRESSED_SUPPORTED_ENCODINGS.map((encoding)=>({
87
- encoding,
88
- quality: getQuality(encoding)
89
- })),
90
- {
91
- encoding: 'identity',
92
- quality: identityQuality
93
- }
94
- ].filter((item)=>item.quality > 0).sort((a, b)=>b.quality - a.quality).map((item)=>item.encoding);
95
- };
96
- const appendVaryHeader = (c, value)=>{
97
- const current = c.res.headers.get('Vary');
98
- if (!current) return void c.header('Vary', value);
99
- const values = current.split(',').map((item)=>item.trim().toLowerCase()).filter(Boolean);
100
- if (!values.includes(value.toLowerCase())) c.header('Vary', `${current}, ${value}`);
101
- };
102
- const resolvePreCompressedAsset = async (c, filepath)=>{
103
- const brPath = `${filepath}${PRE_COMPRESSED_ASSET_EXTENSIONS.br}`;
104
- const gzipPath = `${filepath}${PRE_COMPRESSED_ASSET_EXTENSIONS.gzip}`;
105
- const [hasBr, hasGzip] = await Promise.all([
106
- utils_namespaceObject.fs.pathExists(brPath),
107
- utils_namespaceObject.fs.pathExists(gzipPath)
108
- ]);
109
- const hasVariant = hasBr || hasGzip;
110
- const acceptedRepresentations = getAcceptedRepresentations(c.req.header('accept-encoding'));
111
- for (const encoding of acceptedRepresentations){
112
- if ('identity' === encoding) return {
113
- selected: null,
114
- hasVariant,
115
- acceptable: true
116
- };
117
- if ('br' === encoding && hasBr) return {
118
- selected: {
119
- filepath: brPath,
120
- encoding
121
- },
122
- hasVariant: true,
123
- acceptable: true
124
- };
125
- if ('gzip' === encoding && hasGzip) return {
126
- selected: {
127
- filepath: gzipPath,
128
- encoding
129
- },
130
- hasVariant: true,
131
- acceptable: true
132
- };
133
- }
134
- return {
135
- selected: null,
136
- hasVariant,
137
- acceptable: false
138
- };
139
- };
140
- const applyPreCompressedAssetHeaders = (c, preCompressedAsset)=>{
141
- if (preCompressedAsset.hasVariant || !preCompressedAsset.acceptable) appendVaryHeader(c, 'Accept-Encoding');
142
- if (preCompressedAsset.selected) c.header('Content-Encoding', preCompressedAsset.selected.encoding);
143
- };
144
- exports.applyPreCompressedAssetHeaders = __webpack_exports__.applyPreCompressedAssetHeaders;
145
- exports.resolvePreCompressedAsset = __webpack_exports__.resolvePreCompressedAsset;
146
- for(var __rspack_i in __webpack_exports__)if (-1 === [
147
- "applyPreCompressedAssetHeaders",
148
- "resolvePreCompressedAsset"
149
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
150
- Object.defineProperty(exports, '__esModule', {
151
- value: true
152
- });
@@ -1,206 +0,0 @@
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
- createModuleFederationStaticServing: ()=>createModuleFederationStaticServing,
41
- servePreCompressedPublicRouteAsset: ()=>servePreCompressedPublicRouteAsset,
42
- servePublicDirectoryAsset: ()=>servePublicDirectoryAsset
43
- });
44
- const fileReader_namespaceObject = require("@modern-js/runtime-utils/fileReader");
45
- const utils_namespaceObject = require("@modern-js/utils");
46
- const mime_namespaceObject = require("hono/utils/mime");
47
- const external_path_namespaceObject = require("path");
48
- var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
49
- const external_staticModuleFederation_js_namespaceObject = require("./staticModuleFederation.js");
50
- const external_staticPrecompressed_js_namespaceObject = require("./staticPrecompressed.js");
51
- const MODULE_FEDERATION_ASSET_REFRESH_INTERVAL_MS = 1000;
52
- const getStaticMimeType = (filename)=>(0, mime_namespaceObject.getMimeType)(filename) ?? ('.cjs' === external_path_default().extname(filename).toLowerCase() ? "text/javascript; charset=UTF-8" : void 0);
53
- const servePreCompressedPublicRouteAsset = async (c, pwd, route)=>{
54
- const { entryPath } = route;
55
- const originFilename = external_path_default().join(pwd, entryPath);
56
- const preCompressedAsset = await (0, external_staticPrecompressed_js_namespaceObject.resolvePreCompressedAsset)(c, originFilename);
57
- if (!preCompressedAsset.acceptable) {
58
- (0, external_staticPrecompressed_js_namespaceObject.applyPreCompressedAssetHeaders)(c, preCompressedAsset);
59
- return c.body(null, 406);
60
- }
61
- const filename = preCompressedAsset.selected?.filepath ?? originFilename;
62
- const data = await fileReader_namespaceObject.fileReader.readFile(filename, 'buffer');
63
- const mimeType = getStaticMimeType(originFilename);
64
- if (null === data) return null;
65
- const body = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
66
- if (mimeType) c.header('Content-Type', mimeType);
67
- Object.entries(route.responseHeaders || {}).forEach(([k, v])=>{
68
- c.header(k, v);
69
- });
70
- (0, external_staticPrecompressed_js_namespaceObject.applyPreCompressedAssetHeaders)(c, preCompressedAsset);
71
- c.header('Content-Length', String(data.byteLength));
72
- return c.body(body, 200);
73
- };
74
- const isPathInside = (target, root)=>{
75
- const relative = external_path_default().relative(external_path_default().resolve(root), external_path_default().resolve(target));
76
- return '' === relative || !relative.startsWith(`..${external_path_default().sep}`) && '..' !== relative && !external_path_default().isAbsolute(relative);
77
- };
78
- const resolvePublicDirectoryAsset = async (pwd, pathname)=>{
79
- let decodedPathname;
80
- try {
81
- decodedPathname = decodeURIComponent(pathname).replace(/\\/gu, '/');
82
- } catch {
83
- return null;
84
- }
85
- if (decodedPathname.includes('\0') || decodedPathname.split('/').includes('..')) return null;
86
- const publicDirectory = external_path_default().join(pwd, 'public');
87
- const filepath = external_path_default().resolve(publicDirectory, decodedPathname.replace(/^\/+/u, ''));
88
- if (!isPathInside(filepath, publicDirectory)) return null;
89
- try {
90
- const [realPublicDirectory, realFilepath, stat] = await Promise.all([
91
- utils_namespaceObject.fs.realpath(publicDirectory),
92
- utils_namespaceObject.fs.realpath(filepath),
93
- utils_namespaceObject.fs.stat(filepath)
94
- ]);
95
- if (!stat.isFile() || !isPathInside(realFilepath, realPublicDirectory)) return null;
96
- return realFilepath;
97
- } catch {
98
- return null;
99
- }
100
- };
101
- const servePublicDirectoryAsset = async (c, pwd)=>{
102
- const method = c.req.raw.method.toUpperCase();
103
- if ('GET' !== method && 'HEAD' !== method) return null;
104
- const originFilename = await resolvePublicDirectoryAsset(pwd, c.req.path);
105
- if (null === originFilename) return null;
106
- const preCompressedAsset = await (0, external_staticPrecompressed_js_namespaceObject.resolvePreCompressedAsset)(c, originFilename);
107
- if (!preCompressedAsset.acceptable) {
108
- (0, external_staticPrecompressed_js_namespaceObject.applyPreCompressedAssetHeaders)(c, preCompressedAsset);
109
- return c.body(null, 406);
110
- }
111
- const selectedFilename = preCompressedAsset.selected?.filepath ?? originFilename;
112
- const publicDirectory = await utils_namespaceObject.fs.realpath(external_path_default().join(pwd, 'public'));
113
- let realSelectedFilename;
114
- try {
115
- realSelectedFilename = await utils_namespaceObject.fs.realpath(selectedFilename);
116
- } catch {
117
- return null;
118
- }
119
- if (!isPathInside(realSelectedFilename, publicDirectory)) return null;
120
- const data = await fileReader_namespaceObject.fileReader.readFileFromSystem(realSelectedFilename, 'buffer');
121
- if (null === data) return null;
122
- const mimeType = getStaticMimeType(originFilename);
123
- if (mimeType) c.header('Content-Type', mimeType);
124
- (0, external_staticPrecompressed_js_namespaceObject.applyPreCompressedAssetHeaders)(c, preCompressedAsset);
125
- c.header('Content-Length', String(data.byteLength));
126
- if ('HEAD' === method) return c.body(null, 200);
127
- const body = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
128
- return c.body(body, 200);
129
- };
130
- const createModuleFederationStaticServing = ({ pwd, pathPrefix })=>{
131
- let moduleFederationAssets = null;
132
- let moduleFederationAssetsExpiresAt = 0;
133
- let moduleFederationAssetsRefresh = null;
134
- const getModuleFederationAssets = async ()=>{
135
- if (moduleFederationAssets && Date.now() < moduleFederationAssetsExpiresAt) return moduleFederationAssets;
136
- if (!moduleFederationAssetsRefresh) moduleFederationAssetsRefresh = (0, external_staticModuleFederation_js_namespaceObject.getModuleFederationAssetList)(pwd).then((assets)=>{
137
- moduleFederationAssets = assets;
138
- moduleFederationAssetsExpiresAt = Date.now() + MODULE_FEDERATION_ASSET_REFRESH_INTERVAL_MS;
139
- return assets;
140
- }).finally(()=>{
141
- moduleFederationAssetsRefresh = null;
142
- });
143
- return moduleFederationAssetsRefresh;
144
- };
145
- const resolveRequest = async (pathname)=>{
146
- const requestPath = (0, external_staticModuleFederation_js_namespaceObject.getModuleFederationRequestPath)(pathname, pathPrefix);
147
- if (requestPath.includes('..')) return null;
148
- const moduleFederationAssetMeta = await getModuleFederationAssets();
149
- return {
150
- requestPath,
151
- isModuleFederationAsset: moduleFederationAssetMeta.assets.has(requestPath),
152
- isModuleFederationRemoteEntry: moduleFederationAssetMeta.remoteEntries.has(requestPath)
153
- };
154
- };
155
- const serveFile = async (c, filepath, moduleFederationAsset = false, moduleFederationRemoteEntry = false, requestPath = '')=>{
156
- if (moduleFederationAsset) (0, external_staticModuleFederation_js_namespaceObject.applyModuleFederationAssetHeaders)(c);
157
- const mimeType = getStaticMimeType(filepath);
158
- if (mimeType) c.header('Content-Type', mimeType);
159
- const shouldPatchManifest = moduleFederationAsset && (0, external_staticModuleFederation_js_namespaceObject.isModuleFederationManifestRequest)(requestPath) && !(0, external_staticModuleFederation_js_namespaceObject.isBackendModuleFederationManifestRequest)(requestPath);
160
- const shouldPatchRemoteEntry = moduleFederationRemoteEntry;
161
- const canUsePreCompressed = !shouldPatchManifest && !shouldPatchRemoteEntry;
162
- const preCompressedAsset = canUsePreCompressed ? await (0, external_staticPrecompressed_js_namespaceObject.resolvePreCompressedAsset)(c, filepath) : {
163
- selected: null,
164
- hasVariant: false,
165
- acceptable: true
166
- };
167
- if (!preCompressedAsset.acceptable) {
168
- (0, external_staticPrecompressed_js_namespaceObject.applyPreCompressedAssetHeaders)(c, preCompressedAsset);
169
- return c.body(null, 406);
170
- }
171
- const targetFilepath = preCompressedAsset.selected?.filepath ?? filepath;
172
- const chunk = await fileReader_namespaceObject.fileReader.readFileFromSystem(targetFilepath, 'buffer');
173
- if (null === chunk) return null;
174
- const responseChunk = shouldPatchManifest ? (0, external_staticModuleFederation_js_namespaceObject.patchModuleFederationManifestPublicPath)(c, chunk, pathPrefix) : shouldPatchRemoteEntry ? (0, external_staticModuleFederation_js_namespaceObject.patchModuleFederationRemoteEntryPublicPath)(c, chunk, pathPrefix) : chunk;
175
- (0, external_staticPrecompressed_js_namespaceObject.applyPreCompressedAssetHeaders)(c, preCompressedAsset);
176
- c.header('Content-Length', String(responseChunk.byteLength));
177
- const body = new Uint8Array(responseChunk.buffer, responseChunk.byteOffset, responseChunk.byteLength);
178
- return c.body(body, 200);
179
- };
180
- const serveByPath = async (c, filepath, request, moduleFederationAsset = false, moduleFederationRemoteEntry = false)=>{
181
- if (!isPathInside(filepath, pwd)) return null;
182
- if (!await utils_namespaceObject.fs.pathExists(filepath)) return null;
183
- return serveFile(c, filepath, moduleFederationAsset, moduleFederationRemoteEntry, request.requestPath);
184
- };
185
- const serveStaticHit = (c, request)=>serveByPath(c, external_path_default().join(pwd, request.requestPath), request, request.isModuleFederationAsset, request.isModuleFederationRemoteEntry);
186
- const serveModuleFederationAsset = (c, request)=>{
187
- if (!request.isModuleFederationAsset) return null;
188
- return serveByPath(c, external_path_default().join(pwd, request.requestPath), request, true, request.isModuleFederationRemoteEntry);
189
- };
190
- return {
191
- resolveRequest,
192
- serveStaticHit,
193
- serveModuleFederationAsset
194
- };
195
- };
196
- exports.createModuleFederationStaticServing = __webpack_exports__.createModuleFederationStaticServing;
197
- exports.servePreCompressedPublicRouteAsset = __webpack_exports__.servePreCompressedPublicRouteAsset;
198
- exports.servePublicDirectoryAsset = __webpack_exports__.servePublicDirectoryAsset;
199
- for(var __rspack_i in __webpack_exports__)if (-1 === [
200
- "createModuleFederationStaticServing",
201
- "servePreCompressedPublicRouteAsset",
202
- "servePublicDirectoryAsset"
203
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
204
- Object.defineProperty(exports, '__esModule', {
205
- value: true
206
- });
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.r = (exports1)=>{
5
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
6
- value: 'Module'
7
- });
8
- Object.defineProperty(exports1, '__esModule', {
9
- value: true
10
- });
11
- };
12
- })();
13
- var __webpack_exports__ = {};
14
- __webpack_require__.r(__webpack_exports__);
15
- for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
16
- Object.defineProperty(exports, '__esModule', {
17
- value: true
18
- });
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.r = (exports1)=>{
5
- if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
6
- value: 'Module'
7
- });
8
- Object.defineProperty(exports1, '__esModule', {
9
- value: true
10
- });
11
- };
12
- })();
13
- var __webpack_exports__ = {};
14
- __webpack_require__.r(__webpack_exports__);
15
- for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
16
- Object.defineProperty(exports, '__esModule', {
17
- value: true
18
- });