@bleedingdev/modern-js-server 3.2.0-ultramodern.0
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 +26 -0
- package/dist/cjs/createDevServer.js +102 -0
- package/dist/cjs/dev-tools/https/index.js +57 -0
- package/dist/cjs/dev-tools/watcher/dependencyTree.js +94 -0
- package/dist/cjs/dev-tools/watcher/index.js +143 -0
- package/dist/cjs/dev-tools/watcher/statsCache.js +95 -0
- package/dist/cjs/dev.js +111 -0
- package/dist/cjs/helpers/devOptions.js +61 -0
- package/dist/cjs/helpers/fileReader.js +53 -0
- package/dist/cjs/helpers/index.js +173 -0
- package/dist/cjs/helpers/mock.js +136 -0
- package/dist/cjs/helpers/repack.js +50 -0
- package/dist/cjs/helpers/utils.js +37 -0
- package/dist/cjs/index.js +36 -0
- package/dist/cjs/types.js +18 -0
- package/dist/esm/createDevServer.mjs +58 -0
- package/dist/esm/dev-tools/https/index.mjs +23 -0
- package/dist/esm/dev-tools/watcher/dependencyTree.mjs +57 -0
- package/dist/esm/dev-tools/watcher/index.mjs +91 -0
- package/dist/esm/dev-tools/watcher/statsCache.mjs +50 -0
- package/dist/esm/dev.mjs +77 -0
- package/dist/esm/helpers/devOptions.mjs +24 -0
- package/dist/esm/helpers/fileReader.mjs +19 -0
- package/dist/esm/helpers/index.mjs +65 -0
- package/dist/esm/helpers/mock.mjs +86 -0
- package/dist/esm/helpers/repack.mjs +16 -0
- package/dist/esm/helpers/utils.mjs +3 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/types.mjs +0 -0
- package/dist/esm-node/createDevServer.mjs +59 -0
- package/dist/esm-node/dev-tools/https/index.mjs +28 -0
- package/dist/esm-node/dev-tools/watcher/dependencyTree.mjs +58 -0
- package/dist/esm-node/dev-tools/watcher/index.mjs +93 -0
- package/dist/esm-node/dev-tools/watcher/statsCache.mjs +51 -0
- package/dist/esm-node/dev.mjs +78 -0
- package/dist/esm-node/helpers/devOptions.mjs +25 -0
- package/dist/esm-node/helpers/fileReader.mjs +20 -0
- package/dist/esm-node/helpers/index.mjs +67 -0
- package/dist/esm-node/helpers/mock.mjs +87 -0
- package/dist/esm-node/helpers/repack.mjs +18 -0
- package/dist/esm-node/helpers/utils.mjs +4 -0
- package/dist/esm-node/index.mjs +2 -0
- package/dist/esm-node/types.mjs +1 -0
- package/dist/types/createDevServer.d.ts +8 -0
- package/dist/types/dev-tools/https/index.d.ts +6 -0
- package/dist/types/dev-tools/watcher/dependencyTree.d.ts +28 -0
- package/dist/types/dev-tools/watcher/index.d.ts +17 -0
- package/dist/types/dev-tools/watcher/statsCache.d.ts +10 -0
- package/dist/types/dev.d.ts +9 -0
- package/dist/types/helpers/devOptions.d.ts +11 -0
- package/dist/types/helpers/fileReader.d.ts +3 -0
- package/dist/types/helpers/index.d.ts +15 -0
- package/dist/types/helpers/mock.d.ts +16 -0
- package/dist/types/helpers/repack.d.ts +2 -0
- package/dist/types/helpers/utils.d.ts +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/types.d.ts +56 -0
- package/package.json +89 -0
- package/rslib.config.mts +4 -0
- package/rstest.config.mts +5 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
getDevAssetPrefix: ()=>getDevAssetPrefix,
|
|
28
|
+
getDevOptions: ()=>getDevOptions
|
|
29
|
+
});
|
|
30
|
+
const getDevOptions = (devOptions)=>{
|
|
31
|
+
const defaultOptions = {
|
|
32
|
+
https: false,
|
|
33
|
+
server: {}
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
...defaultOptions,
|
|
37
|
+
...devOptions
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const getDevAssetPrefix = (builder)=>new Promise((resolve)=>{
|
|
41
|
+
if (!builder) return resolve('');
|
|
42
|
+
builder?.onAfterCreateCompiler((params)=>{
|
|
43
|
+
let webCompiler;
|
|
44
|
+
webCompiler = 'compilers' in params.compiler ? params.compiler.compilers.find((c)=>'web' === c.name || 'client' === c.name) : params.compiler;
|
|
45
|
+
const publicPath = webCompiler?.options?.output?.publicPath;
|
|
46
|
+
if (publicPath && 'string' == typeof publicPath) {
|
|
47
|
+
const formatPublicPath = publicPath.replace(/^https?:\/\/[^/]+/, '');
|
|
48
|
+
return resolve(formatPublicPath);
|
|
49
|
+
}
|
|
50
|
+
return resolve('');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
exports.getDevAssetPrefix = __webpack_exports__.getDevAssetPrefix;
|
|
54
|
+
exports.getDevOptions = __webpack_exports__.getDevOptions;
|
|
55
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
56
|
+
"getDevAssetPrefix",
|
|
57
|
+
"getDevOptions"
|
|
58
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
59
|
+
Object.defineProperty(exports, '__esModule', {
|
|
60
|
+
value: true
|
|
61
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
initFileReader: ()=>initFileReader
|
|
28
|
+
});
|
|
29
|
+
const fileReader_namespaceObject = require("@modern-js/runtime-utils/fileReader");
|
|
30
|
+
const initFileReader = (compiler)=>{
|
|
31
|
+
let isInit = false;
|
|
32
|
+
return async (ctx, next)=>{
|
|
33
|
+
if (isInit) return next();
|
|
34
|
+
isInit = true;
|
|
35
|
+
const { res } = ctx.env.node;
|
|
36
|
+
if (!compiler) {
|
|
37
|
+
fileReader_namespaceObject.fileReader.reset();
|
|
38
|
+
return next();
|
|
39
|
+
}
|
|
40
|
+
const resolvedCompiler = 'compilers' in compiler ? compiler.compilers[0] : compiler;
|
|
41
|
+
const outputFileSystem = resolvedCompiler?.outputFileSystem;
|
|
42
|
+
if (outputFileSystem) fileReader_namespaceObject.fileReader.reset(outputFileSystem);
|
|
43
|
+
else fileReader_namespaceObject.fileReader.reset();
|
|
44
|
+
return next();
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
exports.initFileReader = __webpack_exports__.initFileReader;
|
|
48
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
49
|
+
"initFileReader"
|
|
50
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
51
|
+
Object.defineProperty(exports, '__esModule', {
|
|
52
|
+
value: true
|
|
53
|
+
});
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_modules__ = {
|
|
3
|
+
"../dev-tools/watcher" (module) {
|
|
4
|
+
module.exports = require("../dev-tools/watcher/index.js");
|
|
5
|
+
},
|
|
6
|
+
"./devOptions" (module) {
|
|
7
|
+
module.exports = require("./devOptions.js");
|
|
8
|
+
},
|
|
9
|
+
"./fileReader" (module) {
|
|
10
|
+
module.exports = require("./fileReader.js");
|
|
11
|
+
},
|
|
12
|
+
"./mock" (module) {
|
|
13
|
+
module.exports = require("./mock.js");
|
|
14
|
+
},
|
|
15
|
+
"./repack" (module) {
|
|
16
|
+
module.exports = require("./repack.js");
|
|
17
|
+
},
|
|
18
|
+
"./utils" (module) {
|
|
19
|
+
module.exports = require("./utils.js");
|
|
20
|
+
},
|
|
21
|
+
"@modern-js/server-core" (module) {
|
|
22
|
+
module.exports = require("@modern-js/server-core");
|
|
23
|
+
},
|
|
24
|
+
"@modern-js/utils" (module) {
|
|
25
|
+
module.exports = require("@modern-js/utils");
|
|
26
|
+
},
|
|
27
|
+
path (module) {
|
|
28
|
+
module.exports = require("path");
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
var __webpack_module_cache__ = {};
|
|
32
|
+
function __webpack_require__(moduleId) {
|
|
33
|
+
var cachedModule = __webpack_module_cache__[moduleId];
|
|
34
|
+
if (void 0 !== cachedModule) return cachedModule.exports;
|
|
35
|
+
var module = __webpack_module_cache__[moduleId] = {
|
|
36
|
+
exports: {}
|
|
37
|
+
};
|
|
38
|
+
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
39
|
+
return module.exports;
|
|
40
|
+
}
|
|
41
|
+
(()=>{
|
|
42
|
+
__webpack_require__.n = (module)=>{
|
|
43
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
44
|
+
__webpack_require__.d(getter, {
|
|
45
|
+
a: getter
|
|
46
|
+
});
|
|
47
|
+
return getter;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
(()=>{
|
|
51
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
52
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
53
|
+
enumerable: true,
|
|
54
|
+
get: definition[key]
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
})();
|
|
58
|
+
(()=>{
|
|
59
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
60
|
+
})();
|
|
61
|
+
(()=>{
|
|
62
|
+
__webpack_require__.r = (exports1)=>{
|
|
63
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
64
|
+
value: 'Module'
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
67
|
+
value: true
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
})();
|
|
71
|
+
var __webpack_exports__ = {};
|
|
72
|
+
(()=>{
|
|
73
|
+
__webpack_require__.r(__webpack_exports__);
|
|
74
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
75
|
+
startWatcher: ()=>startWatcher
|
|
76
|
+
});
|
|
77
|
+
var _modern_js_server_core__rspack_import_0 = __webpack_require__("@modern-js/server-core");
|
|
78
|
+
var _modern_js_utils__rspack_import_1 = __webpack_require__("@modern-js/utils");
|
|
79
|
+
var path__rspack_import_2 = __webpack_require__("path");
|
|
80
|
+
var path__rspack_import_2_default = /*#__PURE__*/ __webpack_require__.n(path__rspack_import_2);
|
|
81
|
+
var _dev_tools_watcher__rspack_import_3 = __webpack_require__("../dev-tools/watcher");
|
|
82
|
+
var _dev_tools_watcher__rspack_import_3_default = /*#__PURE__*/ __webpack_require__.n(_dev_tools_watcher__rspack_import_3);
|
|
83
|
+
var _mock__rspack_import_4 = __webpack_require__("./mock");
|
|
84
|
+
var _utils__rspack_import_5 = __webpack_require__("./utils");
|
|
85
|
+
var _devOptions__rspack_import_6 = __webpack_require__("./devOptions");
|
|
86
|
+
var __rspack_reexport = {};
|
|
87
|
+
for(const __rspack_import_key in _devOptions__rspack_import_6)if ([
|
|
88
|
+
"startWatcher",
|
|
89
|
+
"default"
|
|
90
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_devOptions__rspack_import_6[__rspack_import_key];
|
|
91
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
92
|
+
var _fileReader__rspack_import_7 = __webpack_require__("./fileReader");
|
|
93
|
+
var __rspack_reexport = {};
|
|
94
|
+
for(const __rspack_import_key in _fileReader__rspack_import_7)if ([
|
|
95
|
+
"startWatcher",
|
|
96
|
+
"default"
|
|
97
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_fileReader__rspack_import_7[__rspack_import_key];
|
|
98
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
99
|
+
var __rspack_reexport = {};
|
|
100
|
+
for(const __rspack_import_key in _mock__rspack_import_4)if ([
|
|
101
|
+
"startWatcher",
|
|
102
|
+
"default"
|
|
103
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_mock__rspack_import_4[__rspack_import_key];
|
|
104
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
105
|
+
var _repack__rspack_import_8 = __webpack_require__("./repack");
|
|
106
|
+
var __rspack_reexport = {};
|
|
107
|
+
for(const __rspack_import_key in _repack__rspack_import_8)if ([
|
|
108
|
+
"startWatcher",
|
|
109
|
+
"default"
|
|
110
|
+
].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_repack__rspack_import_8[__rspack_import_key];
|
|
111
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
112
|
+
async function onServerChange({ pwd, filepath, event, server }) {
|
|
113
|
+
const { mock } = _modern_js_server_core__rspack_import_0.AGGRED_DIR;
|
|
114
|
+
const mockPath = path__rspack_import_2_default().normalize(path__rspack_import_2_default().join(pwd, mock));
|
|
115
|
+
const { hooks } = server;
|
|
116
|
+
if (filepath.startsWith(mockPath)) {
|
|
117
|
+
await (0, _mock__rspack_import_4.initOrUpdateMockMiddlewares)(pwd);
|
|
118
|
+
_modern_js_utils__rspack_import_1.logger.info('Finish update the mock handlers');
|
|
119
|
+
} else try {
|
|
120
|
+
const fileChangeEvent = {
|
|
121
|
+
type: 'file-change',
|
|
122
|
+
payload: [
|
|
123
|
+
{
|
|
124
|
+
filename: filepath,
|
|
125
|
+
event
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
};
|
|
129
|
+
await hooks.onReset.call({
|
|
130
|
+
event: fileChangeEvent
|
|
131
|
+
});
|
|
132
|
+
(0, _utils__rspack_import_5.debug)(`Finish reload server, trigger by ${filepath} ${event}`);
|
|
133
|
+
} catch (e) {
|
|
134
|
+
_modern_js_utils__rspack_import_1.logger.error(e);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function startWatcher({ pwd, distDir, apiDir, sharedDir, watchOptions, server }) {
|
|
138
|
+
const { mock } = _modern_js_server_core__rspack_import_0.AGGRED_DIR;
|
|
139
|
+
const defaultWatched = [
|
|
140
|
+
`${mock}/**/*`,
|
|
141
|
+
`${_modern_js_utils__rspack_import_1.SERVER_DIR}/**/*`,
|
|
142
|
+
`${apiDir}/**`,
|
|
143
|
+
`${sharedDir}/**/*`,
|
|
144
|
+
`${distDir}/${_modern_js_utils__rspack_import_1.SERVER_BUNDLE_DIRECTORY}/*-server-loaders.js`
|
|
145
|
+
];
|
|
146
|
+
const mergedWatchOptions = (0, _dev_tools_watcher__rspack_import_3.mergeWatchOptions)(watchOptions);
|
|
147
|
+
const defaultWatchedPaths = defaultWatched.map((p)=>{
|
|
148
|
+
const finalPath = path__rspack_import_2_default().isAbsolute(p) ? p : path__rspack_import_2_default().join(pwd, p);
|
|
149
|
+
return path__rspack_import_2_default().normalize(finalPath);
|
|
150
|
+
});
|
|
151
|
+
const watcher = new (_dev_tools_watcher__rspack_import_3_default())();
|
|
152
|
+
watcher.createDepTree();
|
|
153
|
+
watcher.listen(defaultWatchedPaths, mergedWatchOptions, (filepath, event)=>{
|
|
154
|
+
if (filepath.includes('-server-loaders.js')) return void delete require.cache[filepath];
|
|
155
|
+
watcher.updateDepTree();
|
|
156
|
+
watcher.cleanDepCache(filepath);
|
|
157
|
+
onServerChange({
|
|
158
|
+
pwd,
|
|
159
|
+
filepath,
|
|
160
|
+
event,
|
|
161
|
+
server
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
return watcher;
|
|
165
|
+
}
|
|
166
|
+
})();
|
|
167
|
+
exports.startWatcher = __webpack_exports__.startWatcher;
|
|
168
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
169
|
+
"startWatcher"
|
|
170
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
171
|
+
Object.defineProperty(exports, '__esModule', {
|
|
172
|
+
value: true
|
|
173
|
+
});
|
|
@@ -0,0 +1,136 @@
|
|
|
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, definition)=>{
|
|
14
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: definition[key]
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
20
|
+
(()=>{
|
|
21
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
22
|
+
})();
|
|
23
|
+
(()=>{
|
|
24
|
+
__webpack_require__.r = (exports1)=>{
|
|
25
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module'
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
getMatched: ()=>getMatched,
|
|
37
|
+
getMockMiddleware: ()=>getMockMiddleware,
|
|
38
|
+
initOrUpdateMockMiddlewares: ()=>initOrUpdateMockMiddlewares
|
|
39
|
+
});
|
|
40
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
41
|
+
var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
|
|
42
|
+
const server_core_namespaceObject = require("@modern-js/server-core");
|
|
43
|
+
const node_namespaceObject = require("@modern-js/server-core/node");
|
|
44
|
+
const utils_namespaceObject = require("@modern-js/utils");
|
|
45
|
+
const external_path_to_regexp_namespaceObject = require("path-to-regexp");
|
|
46
|
+
let mockAPIs = [];
|
|
47
|
+
let mockConfig;
|
|
48
|
+
const parseKey = (key)=>{
|
|
49
|
+
const _blank = ' ';
|
|
50
|
+
const splitted = key.split(_blank).filter(Boolean);
|
|
51
|
+
if (splitted.length > 1) {
|
|
52
|
+
const [method, pathname] = splitted;
|
|
53
|
+
return {
|
|
54
|
+
method: (method ?? 'get').toLowerCase(),
|
|
55
|
+
path: pathname ?? '/'
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
method: 'get',
|
|
60
|
+
path: key
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
const getMockModule = async (pwd)=>{
|
|
64
|
+
const exts = [
|
|
65
|
+
'.ts',
|
|
66
|
+
'.js'
|
|
67
|
+
];
|
|
68
|
+
let mockFilePath = '';
|
|
69
|
+
for (const ext of exts){
|
|
70
|
+
const maybeMatch = external_node_path_default().join(pwd, `${server_core_namespaceObject.AGGRED_DIR.mock}/index${ext}`);
|
|
71
|
+
if (await utils_namespaceObject.fs.pathExists(maybeMatch)) {
|
|
72
|
+
mockFilePath = maybeMatch;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (!mockFilePath) return;
|
|
77
|
+
const { default: mockHandlers, config } = await import(mockFilePath);
|
|
78
|
+
const enable = config?.enable;
|
|
79
|
+
if (false === enable) return;
|
|
80
|
+
if (!mockHandlers) throw new Error(`Mock file ${mockFilePath} parsed failed!`);
|
|
81
|
+
return {
|
|
82
|
+
mockHandlers,
|
|
83
|
+
config
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
const getMatched = (request, mockApis)=>{
|
|
87
|
+
const { path: targetPathname, method: targetMethod } = request;
|
|
88
|
+
const matched = mockApis.find((mockApi)=>{
|
|
89
|
+
const { method, path: pathname } = mockApi;
|
|
90
|
+
if (method.toLowerCase() === targetMethod.toLowerCase()) return (0, external_path_to_regexp_namespaceObject.match)(pathname, {
|
|
91
|
+
decode: decodeURIComponent
|
|
92
|
+
})(targetPathname);
|
|
93
|
+
return false;
|
|
94
|
+
});
|
|
95
|
+
return matched;
|
|
96
|
+
};
|
|
97
|
+
async function initOrUpdateMockMiddlewares(pwd) {
|
|
98
|
+
const mockModule = await getMockModule(pwd);
|
|
99
|
+
mockConfig = mockModule?.config;
|
|
100
|
+
mockAPIs = Object.entries(mockModule?.mockHandlers || {}).map(([key, handler])=>{
|
|
101
|
+
const { method, path } = parseKey(key);
|
|
102
|
+
return {
|
|
103
|
+
method,
|
|
104
|
+
path,
|
|
105
|
+
handler
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
async function getMockMiddleware(pwd) {
|
|
110
|
+
await initOrUpdateMockMiddlewares(pwd);
|
|
111
|
+
const mockMiddleware = async (c, next)=>{
|
|
112
|
+
if ('function' == typeof mockConfig?.enable) {
|
|
113
|
+
const isEnabled = mockConfig.enable(c.env.node.req, c.env.node.res);
|
|
114
|
+
if (!isEnabled) return next();
|
|
115
|
+
}
|
|
116
|
+
const matchedMockAPI = getMatched(c.req, mockAPIs);
|
|
117
|
+
if (matchedMockAPI) {
|
|
118
|
+
const { handler } = matchedMockAPI;
|
|
119
|
+
if ('function' == typeof handler) return await (0, node_namespaceObject.connectMockMid2HonoMid)(handler)(c, next);
|
|
120
|
+
return c.json(handler);
|
|
121
|
+
}
|
|
122
|
+
return next();
|
|
123
|
+
};
|
|
124
|
+
return mockMiddleware;
|
|
125
|
+
}
|
|
126
|
+
exports.getMatched = __webpack_exports__.getMatched;
|
|
127
|
+
exports.getMockMiddleware = __webpack_exports__.getMockMiddleware;
|
|
128
|
+
exports.initOrUpdateMockMiddlewares = __webpack_exports__.initOrUpdateMockMiddlewares;
|
|
129
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
130
|
+
"getMatched",
|
|
131
|
+
"getMockMiddleware",
|
|
132
|
+
"initOrUpdateMockMiddlewares"
|
|
133
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
134
|
+
Object.defineProperty(exports, '__esModule', {
|
|
135
|
+
value: true
|
|
136
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
onRepack: ()=>onRepack
|
|
28
|
+
});
|
|
29
|
+
const fileReader_namespaceObject = require("@modern-js/runtime-utils/fileReader");
|
|
30
|
+
const cleanSSRCache = (distDir)=>{
|
|
31
|
+
Object.keys(require.cache).forEach((key)=>{
|
|
32
|
+
if (key.startsWith(distDir)) delete require.cache[key];
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const onRepack = (distDir, hooks)=>{
|
|
36
|
+
cleanSSRCache(distDir);
|
|
37
|
+
fileReader_namespaceObject.fileReader.reset();
|
|
38
|
+
hooks.onReset.call({
|
|
39
|
+
event: {
|
|
40
|
+
type: 'repack'
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
exports.onRepack = __webpack_exports__.onRepack;
|
|
45
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
46
|
+
"onRepack"
|
|
47
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
48
|
+
Object.defineProperty(exports, '__esModule', {
|
|
49
|
+
value: true
|
|
50
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
debug: ()=>debug
|
|
28
|
+
});
|
|
29
|
+
const utils_namespaceObject = require("@modern-js/utils");
|
|
30
|
+
const debug = (0, utils_namespaceObject.createDebugger)('server');
|
|
31
|
+
exports.debug = __webpack_exports__.debug;
|
|
32
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
33
|
+
"debug"
|
|
34
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
35
|
+
Object.defineProperty(exports, '__esModule', {
|
|
36
|
+
value: true
|
|
37
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
createDevServer: ()=>external_createDevServer_js_namespaceObject.createDevServer
|
|
28
|
+
});
|
|
29
|
+
const external_createDevServer_js_namespaceObject = require("./createDevServer.js");
|
|
30
|
+
exports.createDevServer = __webpack_exports__.createDevServer;
|
|
31
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
32
|
+
"createDevServer"
|
|
33
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
34
|
+
Object.defineProperty(exports, '__esModule', {
|
|
35
|
+
value: true
|
|
36
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import node_path from "node:path";
|
|
2
|
+
import { createServerBase } from "@modern-js/server-core";
|
|
3
|
+
import { createNodeServer, loadServerRuntimeConfig } from "@modern-js/server-core/node";
|
|
4
|
+
import { devPlugin } from "./dev.mjs";
|
|
5
|
+
import { getDevAssetPrefix, getDevOptions } from "./helpers/index.mjs";
|
|
6
|
+
async function createDevServer(options, applyPlugins) {
|
|
7
|
+
const { config, pwd, serverConfigPath, builder } = options;
|
|
8
|
+
const dev = getDevOptions(options.dev);
|
|
9
|
+
const distDir = node_path.resolve(pwd, config.output.distPath?.root || 'dist');
|
|
10
|
+
const serverConfig = await loadServerRuntimeConfig(serverConfigPath) || {};
|
|
11
|
+
const prodServerOptions = {
|
|
12
|
+
...options,
|
|
13
|
+
pwd: distDir,
|
|
14
|
+
serverConfig: {
|
|
15
|
+
...serverConfig,
|
|
16
|
+
...options.serverConfig
|
|
17
|
+
},
|
|
18
|
+
plugins: [
|
|
19
|
+
...serverConfig.plugins || [],
|
|
20
|
+
...options.plugins || []
|
|
21
|
+
]
|
|
22
|
+
};
|
|
23
|
+
const server = createServerBase(prodServerOptions);
|
|
24
|
+
const devHttpsOption = 'object' == typeof dev && dev.https;
|
|
25
|
+
const isHttp2 = !!devHttpsOption;
|
|
26
|
+
let nodeServer;
|
|
27
|
+
if (devHttpsOption) {
|
|
28
|
+
const { genHttpsOptions } = await import("./dev-tools/https/index.mjs");
|
|
29
|
+
const httpsOptions = await genHttpsOptions(devHttpsOption, pwd);
|
|
30
|
+
nodeServer = await createNodeServer(server.handle.bind(server), httpsOptions, isHttp2);
|
|
31
|
+
} else nodeServer = await createNodeServer(server.handle.bind(server));
|
|
32
|
+
const promise = getDevAssetPrefix(builder);
|
|
33
|
+
let compiler = null;
|
|
34
|
+
builder?.onAfterCreateCompiler((context)=>{
|
|
35
|
+
compiler = context.compiler;
|
|
36
|
+
});
|
|
37
|
+
const builderDevServer = await builder?.createDevServer({
|
|
38
|
+
runCompile: options.runCompile
|
|
39
|
+
});
|
|
40
|
+
server.addPlugins([
|
|
41
|
+
devPlugin({
|
|
42
|
+
...options,
|
|
43
|
+
builderDevServer
|
|
44
|
+
}, compiler)
|
|
45
|
+
]);
|
|
46
|
+
const assetPrefix = await promise;
|
|
47
|
+
if (assetPrefix) prodServerOptions.config.output.assetPrefix = assetPrefix;
|
|
48
|
+
await applyPlugins(server, prodServerOptions, nodeServer);
|
|
49
|
+
await server.init();
|
|
50
|
+
const afterListen = async ()=>{
|
|
51
|
+
await builderDevServer?.afterListen();
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
server: nodeServer,
|
|
55
|
+
afterListen
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export { createDevServer };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { chalk, getPackageManager, logger, tryResolve } from "@modern-js/utils";
|
|
2
|
+
const genHttpsOptions = async (userOptions, pwd)=>{
|
|
3
|
+
const httpsOptions = 'boolean' == typeof userOptions ? {} : userOptions;
|
|
4
|
+
if (!httpsOptions.key || !httpsOptions.cert) {
|
|
5
|
+
let devcertPath;
|
|
6
|
+
try {
|
|
7
|
+
devcertPath = tryResolve('devcert', pwd, __dirname);
|
|
8
|
+
} catch (err) {
|
|
9
|
+
const packageManager = await getPackageManager(pwd);
|
|
10
|
+
const command = chalk.yellow.bold(`${packageManager} add devcert@1.2.2 -D`);
|
|
11
|
+
logger.error('You have enabled "dev.https" option, but the "devcert" package is not installed.');
|
|
12
|
+
logger.error(`Please run ${command} to install manually, otherwise the https can not work.`);
|
|
13
|
+
throw new Error('[https] "devcert" is not found.');
|
|
14
|
+
}
|
|
15
|
+
const devcert = require(devcertPath);
|
|
16
|
+
const selfsign = await devcert.certificateFor([
|
|
17
|
+
'localhost'
|
|
18
|
+
]);
|
|
19
|
+
return selfsign;
|
|
20
|
+
}
|
|
21
|
+
return httpsOptions;
|
|
22
|
+
};
|
|
23
|
+
export { genHttpsOptions };
|