@modern-js/bff-core 1.21.2-beta.4 → 1.21.3-beta.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/package.json +6 -5
  3. package/dist/js/modern/api.js +0 -54
  4. package/dist/js/modern/client/generate-client.js +0 -63
  5. package/dist/js/modern/client/index.js +0 -1
  6. package/dist/js/modern/client/result.js +0 -20
  7. package/dist/js/modern/errors/http.js +0 -22
  8. package/dist/js/modern/index.js +0 -7
  9. package/dist/js/modern/operators/http.js +0 -187
  10. package/dist/js/modern/router/constants.js +0 -14
  11. package/dist/js/modern/router/index.js +0 -299
  12. package/dist/js/modern/router/types.js +0 -1
  13. package/dist/js/modern/router/utils.js +0 -101
  14. package/dist/js/modern/types.js +0 -47
  15. package/dist/js/modern/utils/alias.js +0 -91
  16. package/dist/js/modern/utils/debug.js +0 -2
  17. package/dist/js/modern/utils/index.js +0 -5
  18. package/dist/js/modern/utils/meta.js +0 -4
  19. package/dist/js/modern/utils/storage.js +0 -48
  20. package/dist/js/modern/utils/validate.js +0 -49
  21. package/dist/js/node/api.js +0 -66
  22. package/dist/js/node/client/generate-client.js +0 -81
  23. package/dist/js/node/client/index.js +0 -18
  24. package/dist/js/node/client/result.js +0 -32
  25. package/dist/js/node/errors/http.js +0 -34
  26. package/dist/js/node/index.js +0 -125
  27. package/dist/js/node/operators/http.js +0 -226
  28. package/dist/js/node/router/constants.js +0 -29
  29. package/dist/js/node/router/index.js +0 -345
  30. package/dist/js/node/router/types.js +0 -5
  31. package/dist/js/node/router/utils.js +0 -123
  32. package/dist/js/node/types.js +0 -59
  33. package/dist/js/node/utils/alias.js +0 -115
  34. package/dist/js/node/utils/debug.js +0 -11
  35. package/dist/js/node/utils/index.js +0 -72
  36. package/dist/js/node/utils/meta.js +0 -14
  37. package/dist/js/node/utils/storage.js +0 -59
  38. package/dist/js/node/utils/validate.js +0 -68
  39. package/dist/types/api.d.ts +0 -3
  40. package/dist/types/client/generate-client.d.ts +0 -24
  41. package/dist/types/client/index.d.ts +0 -1
  42. package/dist/types/client/result.d.ts +0 -15
  43. package/dist/types/errors/http.d.ts +0 -8
  44. package/dist/types/index.d.ts +0 -7
  45. package/dist/types/operators/http.d.ts +0 -39
  46. package/dist/types/router/constants.d.ts +0 -17
  47. package/dist/types/router/index.d.ts +0 -51
  48. package/dist/types/router/types.d.ts +0 -17
  49. package/dist/types/router/utils.d.ts +0 -10
  50. package/dist/types/types.d.ts +0 -58
  51. package/dist/types/utils/alias.d.ts +0 -7
  52. package/dist/types/utils/debug.d.ts +0 -1
  53. package/dist/types/utils/index.d.ts +0 -5
  54. package/dist/types/utils/meta.d.ts +0 -2
  55. package/dist/types/utils/storage.d.ts +0 -5
  56. package/dist/types/utils/validate.d.ts +0 -5
@@ -1,345 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- ApiRouter: true
8
- };
9
- exports.ApiRouter = void 0;
10
-
11
- var _path = _interopRequireDefault(require("path"));
12
-
13
- var _utils = require("@modern-js/utils");
14
-
15
- require("reflect-metadata");
16
-
17
- var _types = require("../types");
18
-
19
- var _utils2 = require("../utils");
20
-
21
- var _constants = require("./constants");
22
-
23
- Object.keys(_constants).forEach(function (key) {
24
- if (key === "default" || key === "__esModule") return;
25
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
- if (key in exports && exports[key] === _constants[key]) return;
27
- Object.defineProperty(exports, key, {
28
- enumerable: true,
29
- get: function () {
30
- return _constants[key];
31
- }
32
- });
33
- });
34
-
35
- var _utils3 = require("./utils");
36
-
37
- var _types2 = require("./types");
38
-
39
- Object.keys(_types2).forEach(function (key) {
40
- if (key === "default" || key === "__esModule") return;
41
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
42
- if (key in exports && exports[key] === _types2[key]) return;
43
- Object.defineProperty(exports, key, {
44
- enumerable: true,
45
- get: function () {
46
- return _types2[key];
47
- }
48
- });
49
- });
50
-
51
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
52
-
53
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
54
-
55
- class ApiRouter {
56
- // lambdaDir is the dir which equal to the apiDir in function mode, and equal to the api/lambda dir in framework mode
57
- constructor({
58
- apiDir: _apiDir,
59
- lambdaDir: _lambdaDir,
60
- prefix
61
- }) {
62
- _defineProperty(this, "apiMode", void 0);
63
-
64
- _defineProperty(this, "apiDir", void 0);
65
-
66
- _defineProperty(this, "existLambdaDir", void 0);
67
-
68
- _defineProperty(this, "lambdaDir", void 0);
69
-
70
- _defineProperty(this, "prefix", void 0);
71
-
72
- _defineProperty(this, "apiFiles", []);
73
-
74
- _defineProperty(this, "getExactApiMode", apiDir => {
75
- const exist = this.createExistChecker(apiDir);
76
- const existLambdaDir = exist(_constants.FRAMEWORK_MODE_LAMBDA_DIR);
77
- const existAppDir = exist(_constants.FRAMEWORK_MODE_APP_DIR);
78
- const existAppFile = exist('app.ts') || exist('app.js');
79
-
80
- if (existLambdaDir || existAppDir || existAppFile) {
81
- return _constants.APIMode.FARMEWORK;
82
- }
83
-
84
- return _constants.APIMode.FUNCTION;
85
- });
86
-
87
- _defineProperty(this, "createExistChecker", base => target => _utils.fs.pathExistsSync(_path.default.resolve(base, target)));
88
-
89
- _defineProperty(this, "getExactLambdaDir", apiDir => {
90
- if (this.lambdaDir) {
91
- return this.lambdaDir;
92
- }
93
-
94
- const lambdaDir = this.apiMode === _constants.APIMode.FARMEWORK ? _path.default.join(apiDir, _constants.FRAMEWORK_MODE_LAMBDA_DIR) : apiDir;
95
- return lambdaDir;
96
- });
97
-
98
- this.validateAbsolute(_apiDir, 'apiDir');
99
- this.validateAbsolute(_lambdaDir, 'lambdaDir');
100
- this.prefix = this.initPrefix(prefix);
101
- this.apiDir = _apiDir;
102
- this.apiMode = this.getExactApiMode(_apiDir);
103
- this.lambdaDir = _lambdaDir || this.getExactLambdaDir(this.apiDir);
104
- this.existLambdaDir = _utils.fs.existsSync(this.lambdaDir);
105
- }
106
-
107
- isExistLambda() {
108
- return this.existLambdaDir;
109
- }
110
-
111
- getApiMode() {
112
- return this.apiMode;
113
- }
114
-
115
- getLambdaDir() {
116
- return this.lambdaDir;
117
- }
118
-
119
- isApiFile(filename) {
120
- if (this.existLambdaDir) {
121
- return false;
122
- }
123
-
124
- if (!this.apiFiles.includes(filename)) {
125
- return false;
126
- }
127
-
128
- return true;
129
- }
130
-
131
- getSingleModuleHandlers(filename) {
132
- const moduleInfo = this.getModuleInfo(filename);
133
-
134
- if (moduleInfo) {
135
- return this.getModuleHandlerInfos(moduleInfo);
136
- }
137
-
138
- return null;
139
- }
140
-
141
- getHandlerInfo(filename, originFuncName, handler) {
142
- const httpMethod = this.getHttpMethod(originFuncName, handler);
143
- const routeName = this.getRouteName(filename, handler);
144
-
145
- if (httpMethod && routeName) {
146
- return {
147
- handler,
148
- name: originFuncName,
149
- httpMethod,
150
- routeName,
151
- filename,
152
- routePath: this.getRoutePath(this.prefix, routeName)
153
- };
154
- }
155
-
156
- return null;
157
- } // TODO: 性能提升,开发环境,判断下 lambda 目录修改时间
158
-
159
-
160
- getSafeRoutePath(filename, handler) {
161
- this.loadApiFiles();
162
- this.validateValidApifile(filename);
163
- return this.getRouteName(filename, handler);
164
- }
165
-
166
- getRouteName(filename, handler) {
167
- if (handler) {
168
- const trigger = Reflect.getMetadata(_types.OperatorType.Trigger, handler);
169
-
170
- if (trigger && trigger.type === _types.TriggerType.Http) {
171
- if (!trigger.path) {
172
- throw new Error(`The http trigger ${trigger.name} needs to specify a path`);
173
- }
174
-
175
- return trigger.path;
176
- }
177
- }
178
-
179
- const routePath = (0, _utils3.getPathFromFilename)(this.lambdaDir, filename);
180
- return routePath;
181
- }
182
-
183
- getHttpMethod(originHandlerName, handler) {
184
- if (handler) {
185
- const trigger = Reflect.getMetadata(_types.OperatorType.Trigger, handler);
186
-
187
- if (trigger && _types.httpMethods.includes(trigger.method)) {
188
- return trigger.method;
189
- }
190
- }
191
-
192
- const upperName = originHandlerName.toUpperCase();
193
-
194
- switch (upperName) {
195
- case 'GET':
196
- return _types.HttpMethod.Get;
197
-
198
- case 'POST':
199
- return _types.HttpMethod.Post;
200
-
201
- case 'PUT':
202
- return _types.HttpMethod.Put;
203
-
204
- case 'DELETE':
205
- case 'DEL':
206
- return _types.HttpMethod.Delete;
207
-
208
- case 'CONNECT':
209
- return _types.HttpMethod.Connect;
210
-
211
- case 'TRACE':
212
- return _types.HttpMethod.Trace;
213
-
214
- case 'PATCH':
215
- return _types.HttpMethod.Patch;
216
-
217
- case 'OPTION':
218
- return _types.HttpMethod.Option;
219
-
220
- case 'DEFAULT':
221
- {
222
- return _types.HttpMethod.Get;
223
- }
224
-
225
- default:
226
- _utils.logger.warn(`Only api handlers are allowd to be exported, please remove the function ${originHandlerName} from exports`);
227
-
228
- return null;
229
- }
230
- }
231
-
232
- loadApiFiles() {
233
- if (!this.existLambdaDir) {
234
- return [];
235
- } // eslint-disable-next-line no-multi-assign
236
-
237
-
238
- const apiFiles = this.apiFiles = (0, _utils3.getFiles)(this.lambdaDir, _constants.API_FILE_RULES);
239
- return apiFiles;
240
- }
241
-
242
- getApiFiles() {
243
- if (!this.existLambdaDir) {
244
- return [];
245
- }
246
-
247
- if (this.apiFiles.length > 0) {
248
- return this.apiFiles;
249
- }
250
-
251
- return this.loadApiFiles();
252
- }
253
-
254
- getApiHandlers() {
255
- const filenames = this.getApiFiles();
256
- const moduleInfos = this.getModuleInfos(filenames);
257
- const apiHandlers = this.getHandlerInfos(moduleInfos);
258
- (0, _utils2.debug)('apiHandlers', apiHandlers.length, apiHandlers);
259
- return apiHandlers;
260
- }
261
- /**
262
- * 如果用户未传入或传入空串,默认为 /api
263
- * 如果传入 /,则 prefix 为 /
264
- */
265
-
266
-
267
- initPrefix(prefix) {
268
- if (prefix === '/') {
269
- return '';
270
- }
271
-
272
- return prefix || '/api';
273
- }
274
-
275
- validateAbsolute(filename, paramsName) {
276
- if (typeof filename === 'string' && !_path.default.isAbsolute(filename)) {
277
- throw new Error(`The ${paramsName} ${filename} is not a abolute path`);
278
- }
279
- }
280
-
281
- getModuleInfos(filenames) {
282
- return filenames.map(filename => this.getModuleInfo(filename)).filter(moduleInfo => Boolean(moduleInfo));
283
- }
284
-
285
- getModuleInfo(filename) {
286
- try {
287
- const module = (0, _utils3.requireHandlerModule)(filename);
288
- return {
289
- filename,
290
- module
291
- };
292
- } catch (err) {
293
- if (process.env.NODE_ENV === 'production') {
294
- throw err;
295
- } else {
296
- console.error(err);
297
- return null;
298
- }
299
- }
300
- }
301
-
302
- getHandlerInfos(moduleInfos) {
303
- let apiHandlers = [];
304
- moduleInfos.forEach(moduleInfo => {
305
- const handlerInfos = this.getModuleHandlerInfos(moduleInfo);
306
-
307
- if (handlerInfos) {
308
- apiHandlers = apiHandlers.concat(handlerInfos);
309
- }
310
- });
311
- const sortedHandlers = (0, _utils3.sortRoutes)(apiHandlers);
312
- return sortedHandlers;
313
- }
314
-
315
- getModuleHandlerInfos(moduleInfo) {
316
- const {
317
- module,
318
- filename
319
- } = moduleInfo;
320
- return Object.entries(module).filter(([, handler]) => typeof handler === 'function').map(([key]) => {
321
- const handler = module[key];
322
- const handlerInfo = this.getHandlerInfo(filename, key, handler);
323
- return handlerInfo;
324
- }).filter(handlerInfo => Boolean(handlerInfo));
325
- }
326
-
327
- validateValidApifile(filename) {
328
- if (!this.apiFiles.includes(filename)) {
329
- throw new Error(`The ${filename} is not a valid api file.`);
330
- }
331
- }
332
-
333
- getRoutePath(prefix, routeName) {
334
- const finalRouteName = routeName === '/' ? '' : routeName;
335
-
336
- if (prefix === '' && finalRouteName === '') {
337
- return '/';
338
- }
339
-
340
- return `${prefix}${finalRouteName}`;
341
- }
342
-
343
- }
344
-
345
- exports.ApiRouter = ApiRouter;
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
@@ -1,123 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.sortRoutes = exports.requireHandlerModule = exports.isHandler = exports.getPathFromFilename = exports.getFiles = void 0;
7
-
8
- var _path = _interopRequireDefault(require("path"));
9
-
10
- var _utils = require("@modern-js/utils");
11
-
12
- var _constants = require("./constants");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- const getFiles = (lambdaDir, rules) => _utils.globby.sync(rules, {
17
- cwd: lambdaDir,
18
- gitignore: true
19
- }).map(file => _path.default.resolve(lambdaDir, file));
20
-
21
- exports.getFiles = getFiles;
22
-
23
- const getPathFromFilename = (baseDir, filename) => {
24
- const relativeName = filename.substring(baseDir.length);
25
- const relativePath = relativeName.split('.').slice(0, -1).join('.');
26
- const nameSplit = relativePath.split(_path.default.sep).map(item => {
27
- if (item.length > 2) {
28
- if (item.startsWith('[') && item.endsWith(']')) {
29
- return `:${item.substring(1, item.length - 1)}`;
30
- }
31
- }
32
-
33
- return item;
34
- });
35
- const name = nameSplit.join('/');
36
- const finalName = name.endsWith(_constants.INDEX_SUFFIX) ? name.substring(0, name.length - _constants.INDEX_SUFFIX.length) : name;
37
- return clearRouteName(finalName);
38
- };
39
-
40
- exports.getPathFromFilename = getPathFromFilename;
41
-
42
- const clearRouteName = routeName => {
43
- let finalRouteName = routeName.trim();
44
-
45
- if (!finalRouteName.startsWith('/')) {
46
- finalRouteName = `/${finalRouteName}`;
47
- }
48
-
49
- if (finalRouteName.length > 1 && finalRouteName.endsWith('/')) {
50
- finalRouteName = finalRouteName.substring(0, finalRouteName.length - 1);
51
- }
52
-
53
- return finalRouteName;
54
- };
55
-
56
- const isHandler = input => input && typeof input === 'function';
57
-
58
- exports.isHandler = isHandler;
59
-
60
- const enableRegister = requireFn => {
61
- // esbuild-register 做 unRegister 时,不会删除 register 添加的 require.extensions,导致第二次调用时 require.extensions['.ts'] 是 nodejs 默认 loader
62
- // 所以这里根据第一次调用时,require.extensions 有没有,来判断是否需要使用 esbuild-register
63
- let existTsLoader = false;
64
- let firstCall = true;
65
- return modulePath => {
66
- if (firstCall) {
67
- // eslint-disable-next-line node/no-deprecated-api
68
- existTsLoader = Boolean(require.extensions['.ts']);
69
- firstCall = false;
70
- }
71
-
72
- if (!existTsLoader) {
73
- const {
74
- register
75
- } = require('esbuild-register/dist/node');
76
-
77
- const {
78
- unregister
79
- } = register({
80
- extension: ['.ts']
81
- });
82
- const requiredModule = requireFn(modulePath);
83
- unregister();
84
- return requiredModule;
85
- }
86
-
87
- const requiredModule = requireFn(modulePath);
88
- return requiredModule;
89
- };
90
- };
91
-
92
- const isFunction = input => input && {}.toString.call(input) === '[object Function]';
93
-
94
- const requireHandlerModule = enableRegister(modulePath => {
95
- // 测试环境不走缓存,因为缓存的 h andler 文件,会被 mockAPI 函数进行 mock,升级 jest28,setupFilesAfterEnv 能做异步操作的话,可解此问题
96
- const originRequire = process.env.NODE_ENV === 'test' ? jest.requireActual : require;
97
- const module = originRequire(modulePath);
98
-
99
- if (isFunction(module)) {
100
- return {
101
- default: module
102
- };
103
- }
104
-
105
- return module;
106
- });
107
- exports.requireHandlerModule = requireHandlerModule;
108
-
109
- const routeValue = routePath => {
110
- if (routePath.includes(':')) {
111
- return 11;
112
- }
113
-
114
- return 1;
115
- };
116
-
117
- const sortRoutes = apiHandlers => {
118
- return apiHandlers.sort((handlerA, handlerB) => {
119
- return routeValue(handlerA.routeName) - routeValue(handlerB.routeName);
120
- });
121
- };
122
-
123
- exports.sortRoutes = sortRoutes;
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.httpMethods = exports.TriggerType = exports.ResponseMetaType = exports.OperatorType = exports.HttpMethod = exports.HttpMetadata = void 0;
7
- let OperatorType;
8
- exports.OperatorType = OperatorType;
9
-
10
- (function (OperatorType) {
11
- OperatorType[OperatorType["Trigger"] = 0] = "Trigger";
12
- OperatorType[OperatorType["Middleware"] = 1] = "Middleware";
13
- })(OperatorType || (exports.OperatorType = OperatorType = {}));
14
-
15
- let TriggerType;
16
- exports.TriggerType = TriggerType;
17
-
18
- (function (TriggerType) {
19
- TriggerType[TriggerType["Http"] = 0] = "Http";
20
- })(TriggerType || (exports.TriggerType = TriggerType = {}));
21
-
22
- let HttpMetadata;
23
- exports.HttpMetadata = HttpMetadata;
24
-
25
- (function (HttpMetadata) {
26
- HttpMetadata["Method"] = "METHOD";
27
- HttpMetadata["Data"] = "DATA";
28
- HttpMetadata["Query"] = "QUERY";
29
- HttpMetadata["Params"] = "PARAMS";
30
- HttpMetadata["Headers"] = "HEADERS";
31
- HttpMetadata["Response"] = "RESPONSE";
32
- })(HttpMetadata || (exports.HttpMetadata = HttpMetadata = {}));
33
-
34
- let ResponseMetaType;
35
- exports.ResponseMetaType = ResponseMetaType;
36
-
37
- (function (ResponseMetaType) {
38
- ResponseMetaType[ResponseMetaType["StatusCode"] = 0] = "StatusCode";
39
- ResponseMetaType[ResponseMetaType["Redirect"] = 1] = "Redirect";
40
- ResponseMetaType[ResponseMetaType["Headers"] = 2] = "Headers";
41
- })(ResponseMetaType || (exports.ResponseMetaType = ResponseMetaType = {}));
42
-
43
- let HttpMethod;
44
- exports.HttpMethod = HttpMethod;
45
-
46
- (function (HttpMethod) {
47
- HttpMethod["Get"] = "GET";
48
- HttpMethod["Post"] = "POST";
49
- HttpMethod["Put"] = "PUT";
50
- HttpMethod["Delete"] = "DELETE";
51
- HttpMethod["Connect"] = "CONNECT";
52
- HttpMethod["Trace"] = "TRACE";
53
- HttpMethod["Patch"] = "PATCH";
54
- HttpMethod["Option"] = "OPTION";
55
- HttpMethod["Head"] = "HEAD";
56
- })(HttpMethod || (exports.HttpMethod = HttpMethod = {}));
57
-
58
- const httpMethods = Object.values(HttpMethod);
59
- exports.httpMethods = httpMethods;
@@ -1,115 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.registerPaths = exports.getRelativeRuntimePath = exports.createMatchPath = void 0;
7
-
8
- var path = _interopRequireWildcard(require("path"));
9
-
10
- var os = _interopRequireWildcard(require("os"));
11
-
12
- var _fs = _interopRequireDefault(require("fs"));
13
-
14
- var _module = _interopRequireDefault(require("module"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
- const getRelativeRuntimePath = (appDirectory, serverRuntimePath) => {
23
- let relativeRuntimePath = '';
24
-
25
- if (os.platform() === 'win32') {
26
- // isRelative function in babel-plugin-resolver plugin can't handle windows relative path correctly, see babel-plugin-resolver's utils.
27
- relativeRuntimePath = `../${path.relative(appDirectory, serverRuntimePath)}`;
28
- } else {
29
- // Look up one level, because the artifacts after build have dist directories
30
- relativeRuntimePath = path.join('../', path.relative(appDirectory, serverRuntimePath));
31
- }
32
-
33
- if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {
34
- relativeRuntimePath = `./${path.relative(appDirectory, serverRuntimePath)}`;
35
- }
36
-
37
- return relativeRuntimePath;
38
- };
39
-
40
- exports.getRelativeRuntimePath = getRelativeRuntimePath;
41
-
42
- const sortByLongestPrefix = arr => {
43
- return arr.concat().sort((a, b) => b.length - a.length);
44
- };
45
-
46
- const createMatchPath = paths => {
47
- const sortedKeys = sortByLongestPrefix(Object.keys(paths));
48
- const sortedPaths = {};
49
- sortedKeys.forEach(key => {
50
- sortedPaths[key] = paths[key];
51
- });
52
- return request => {
53
- const found = Object.keys(sortedPaths).find(key => {
54
- return request.startsWith(key);
55
- });
56
-
57
- if (found) {
58
- let foundPaths = sortedPaths[found];
59
-
60
- if (!Array.isArray(foundPaths)) {
61
- foundPaths = [foundPaths];
62
- }
63
-
64
- foundPaths = foundPaths.filter(foundPath => path.isAbsolute(foundPath));
65
-
66
- for (const p of foundPaths) {
67
- const foundPath = request.replace(found, p);
68
-
69
- if (_fs.default.existsSync(foundPath)) {
70
- return foundPath;
71
- }
72
- }
73
-
74
- return request.replace(found, foundPaths[0]);
75
- }
76
-
77
- return null;
78
- };
79
- }; // every path must be a absolute path;
80
-
81
-
82
- exports.createMatchPath = createMatchPath;
83
-
84
- const registerPaths = paths => {
85
- const originalResolveFilename = _module.default._resolveFilename; // eslint-disable-next-line node/no-unsupported-features/node-builtins
86
-
87
- const {
88
- builtinModules
89
- } = _module.default;
90
- const matchPath = createMatchPath(paths);
91
-
92
- _module.default._resolveFilename = function (request, _parent) {
93
- const isCoreModule = builtinModules.includes(request);
94
-
95
- if (!isCoreModule) {
96
- const matched = matchPath(request);
97
-
98
- if (matched) {
99
- // eslint-disable-next-line prefer-rest-params
100
- const modifiedArguments = [matched, ...[].slice.call(arguments, 1)]; // Passes all arguments. Even those that is not specified above.
101
-
102
- return originalResolveFilename.apply(this, modifiedArguments);
103
- }
104
- } // eslint-disable-next-line prefer-rest-params
105
-
106
-
107
- return originalResolveFilename.apply(this, arguments);
108
- };
109
-
110
- return () => {
111
- _module.default._resolveFilename = originalResolveFilename;
112
- };
113
- };
114
-
115
- exports.registerPaths = registerPaths;
@@ -1,11 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.debug = void 0;
7
-
8
- var _utils = require("@modern-js/utils");
9
-
10
- const debug = (0, _utils.createDebugger)('bff');
11
- exports.debug = debug;