@modern-js/utils 1.1.1 → 1.1.4

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 (39) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/js/modern/alias.js +10 -10
  3. package/dist/js/modern/compatRequire.js +11 -0
  4. package/dist/js/modern/constants.js +33 -3
  5. package/dist/js/modern/getEntryOptions.js +15 -6
  6. package/dist/js/modern/is/type.js +3 -0
  7. package/dist/js/modern/logger.js +2 -2
  8. package/dist/js/modern/monorepo.js +2 -2
  9. package/dist/js/modern/runtimeExports.js +5 -2
  10. package/dist/js/node/alias.js +10 -10
  11. package/dist/js/node/compatRequire.js +16 -2
  12. package/dist/js/node/constants.js +40 -6
  13. package/dist/js/node/getEntryOptions.js +16 -6
  14. package/dist/js/node/is/type.js +5 -0
  15. package/dist/js/node/logger.js +2 -2
  16. package/dist/js/node/monorepo.js +2 -2
  17. package/dist/js/node/runtimeExports.js +8 -2
  18. package/dist/js/treeshaking/alias.js +9 -9
  19. package/dist/js/treeshaking/compatRequire.js +14 -0
  20. package/dist/js/treeshaking/constants.js +33 -3
  21. package/dist/js/treeshaking/formatWebpackMessages.js +1 -1
  22. package/dist/js/treeshaking/getEntryOptions.js +16 -5
  23. package/dist/js/treeshaking/is/type.js +4 -1
  24. package/dist/js/treeshaking/logger.js +3 -3
  25. package/dist/js/treeshaking/monorepo.js +2 -2
  26. package/dist/js/treeshaking/runtimeExports.js +8 -2
  27. package/dist/types/compatRequire.d.ts +2 -1
  28. package/dist/types/constants.d.ts +22 -2
  29. package/dist/types/getEntryOptions.d.ts +1 -1
  30. package/dist/types/is/type.d.ts +2 -1
  31. package/dist/types/runtimeExports.d.ts +1 -1
  32. package/package.json +5 -4
  33. package/src/alias.ts +7 -7
  34. package/src/compatRequire.ts +15 -0
  35. package/src/constants.ts +31 -2
  36. package/src/getEntryOptions.ts +23 -4
  37. package/src/is/type.ts +4 -0
  38. package/src/runtimeExports.ts +12 -1
  39. package/tests/getEntryOptions.test.ts +11 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @modern-js/utils
2
2
 
3
+ ## 1.1.4
4
+
5
+ ### Patch Changes
6
+
7
+ - d927bc83: update plugins list
8
+ - d73ff455: support multi process product
9
+ - 9c1ab865: fix: filter invalid ts paths
10
+ - d73ff455: support multi process product
11
+ - d73ff455: support multi process product
12
+ - d73ff455: support multi process product
13
+ - d73ff455: support multi process product
14
+
15
+ ## 1.1.3
16
+
17
+ ### Patch Changes
18
+
19
+ - 085a6a58: refactor server plugin
20
+ - 085a6a58: refactor server plugin
21
+ - 085a6a58: refactor server conifg
22
+ - d280ea33: chore: runtime exports can choose to generate d.ts file
23
+ - 085a6a58: support server runtime
24
+ - 085a6a58: feat: refactor server plugin
25
+
26
+ ## 1.1.2
27
+
28
+ ### Patch Changes
29
+
30
+ - 0fa83663: support more .env files
31
+ - f594fbc8: fix apple icon and favicon support
32
+
3
33
  ## 1.1.1
4
34
 
5
35
  ### Patch Changes
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  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; }
6
6
 
@@ -63,12 +63,12 @@ export const getAlias = (aliasOption, option) => {
63
63
  }
64
64
 
65
65
  return aliasConfig;
66
- };
67
- export const getUserAlias = (alias = {}) => {
68
- const keys = Object.keys(alias);
69
- const userKeys = keys.filter(key => !key.includes('@modern-js/runtime'));
70
- return userKeys.reduce((o, k) => {
66
+ }; // filter invalid ts paths that are not array
67
+
68
+ export const getUserAlias = (alias = {}) => Object.keys(alias).reduce((o, k) => {
69
+ if (Array.isArray(alias[k])) {
71
70
  o[k] = alias[k];
72
- return o;
73
- }, {});
74
- };
71
+ }
72
+
73
+ return o;
74
+ }, {});
@@ -1,10 +1,21 @@
1
+ import { findExists } from "./findExists";
1
2
  /**
2
3
  * Require function compatible with esm and cjs module.
3
4
  * @param filePath - File to required.
4
5
  * @returns module export object.
5
6
  */
7
+
6
8
  export const compatRequire = filePath => {
7
9
  const mod = require(filePath);
8
10
 
9
11
  return mod !== null && mod !== void 0 && mod.__esModule ? mod.default : mod;
12
+ };
13
+ export const requireExistModule = (filename, extensions = ['.ts', '.js']) => {
14
+ const exist = findExists(extensions.map(ext => `${filename}${ext}`));
15
+
16
+ if (!exist) {
17
+ return null;
18
+ }
19
+
20
+ return compatRequire(exist);
10
21
  };
@@ -17,6 +17,11 @@ export const HMR_SOCK_PATH = '/_modern_js_hmr_ws';
17
17
  */
18
18
 
19
19
  export const ROUTE_SPEC_FILE = 'route.json';
20
+ /**
21
+ * main entry name
22
+ */
23
+
24
+ export const MAIN_ENTRY_NAME = 'main';
20
25
  /**
21
26
  * open editor request path
22
27
  */
@@ -42,7 +47,18 @@ export const SERVER_RENDER_FUNCTION_NAME = 'serverRender';
42
47
  */
43
48
 
44
49
  export const LOADABLE_STATS_FILE = 'loadable-stats.json';
50
+ /**
51
+ * real entry generate by modern.js
52
+ */
53
+
45
54
  export const HIDE_MODERN_JS_DIR = './node_modules/.modern-js';
55
+ /**
56
+ * internal specified folder
57
+ */
58
+
59
+ export const API_DIR = 'api';
60
+ export const SERVER_DIR = 'server';
61
+ export const SHARED_DIR = 'shared';
46
62
  /**
47
63
  * Internal plugins that work as soon as they are installed.
48
64
  */
@@ -113,6 +129,10 @@ export const INTERNAL_PLUGINS = {
113
129
  '@modern-js/plugin-server-build': {
114
130
  cli: '@modern-js/plugin-server-build'
115
131
  },
132
+ '@modern-js/plugin-server': {
133
+ cli: '@modern-js/plugin-server/cli',
134
+ server: '@modern-js/plugin-server/server'
135
+ },
116
136
  '@modern-js/plugin-micro-frontend': {
117
137
  cli: '@modern-js/plugin-micro-frontend/cli'
118
138
  },
@@ -139,6 +159,12 @@ export const INTERNAL_PLUGINS = {
139
159
  },
140
160
  '@modern-js/plugin-polyfill': {
141
161
  server: '@modern-js/plugin-polyfill'
162
+ },
163
+ '@modern-js/plugin-multiprocess': {
164
+ cli: '@modern-js/plugin-multiprocess/cli'
165
+ },
166
+ '@modern-js/plugin-nocode': {
167
+ cli: '@modern-js/plugin-nocode/cli'
142
168
  }
143
169
  };
144
170
  /**
@@ -170,7 +196,10 @@ export const PLUGIN_SCHEMAS = {
170
196
  type: 'object',
171
197
  properties: {
172
198
  prefix: {
173
- type: 'string'
199
+ type: ['string', 'array'],
200
+ items: {
201
+ type: 'string'
202
+ }
174
203
  },
175
204
  fetcher: {
176
205
  type: 'string'
@@ -178,7 +207,7 @@ export const PLUGIN_SCHEMAS = {
178
207
  proxy: {
179
208
  type: 'object'
180
209
  },
181
- requestCreater: {
210
+ requestCreator: {
182
211
  type: 'string'
183
212
  }
184
213
  }
@@ -281,5 +310,6 @@ export const PLUGIN_SCHEMAS = {
281
310
  schema: {
282
311
  type: ['object']
283
312
  }
284
- }]
313
+ }],
314
+ '@modern-js/plugin-nocode': []
285
315
  };
@@ -1,15 +1,24 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  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; }
6
6
 
7
7
  import { isPlainObject } from "./is";
8
- export const getEntryOptions = (name, baseOptions, optionsByEntries) => {
8
+ import { MAIN_ENTRY_NAME } from "./constants";
9
+ export const getEntryOptions = (name, baseOptions, optionsByEntries, packageName) => {
9
10
  if (optionsByEntries) {
10
- // eslint-disable-next-line no-nested-ternary
11
- return optionsByEntries.hasOwnProperty(name) ? isPlainObject(optionsByEntries[name]) && isPlainObject(baseOptions) ? _objectSpread(_objectSpread({}, baseOptions), optionsByEntries[name]) : optionsByEntries[name] : baseOptions;
11
+ let optionsByEntry = getOptionsByEntryName(name, optionsByEntries); // compatible with main entry using packageName as the key
12
+
13
+ if (optionsByEntry === undefined && name === MAIN_ENTRY_NAME && packageName) {
14
+ optionsByEntry = getOptionsByEntryName(packageName, optionsByEntries);
15
+ } // eslint-disable-next-line no-nested-ternary
16
+
17
+
18
+ return optionsByEntry !== undefined ? isPlainObject(optionsByEntry) && isPlainObject(baseOptions) ? _objectSpread(_objectSpread({}, baseOptions), optionsByEntry) : optionsByEntry : baseOptions;
12
19
  } else {
13
20
  return baseOptions;
14
21
  }
15
- };
22
+ };
23
+
24
+ const getOptionsByEntryName = (name, optionsByEntries) => optionsByEntries.hasOwnProperty(name) ? optionsByEntries[name] : undefined;
@@ -22,4 +22,7 @@ export function isPromise(obj) {
22
22
  /* eslint-disable promise/prefer-await-to-then */
23
23
  return Boolean(obj) && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
24
24
  /* eslint-enable promise/prefer-await-to-then */
25
+ }
26
+ export function isRegExp(obj) {
27
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
25
28
  }
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  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; }
6
6
 
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  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; }
6
6
 
@@ -18,8 +18,9 @@ const memo = fn => {
18
18
  };
19
19
  };
20
20
 
21
- export const createRuntimeExportsUtils = memo((pwd, namespace) => {
22
- const entryExportFile = path.join(pwd, `.runtime-exports/${namespace ? `${namespace}.js` : 'index.js'}`); // const ensure = () => {
21
+ export const createRuntimeExportsUtils = memo((pwd = '', namespace, ts = false) => {
22
+ const entryExportFile = path.join(pwd, `.runtime-exports/${namespace ? `${namespace}.js` : 'index.js'}`);
23
+ const entryExportTsFile = path.join(pwd, `.runtime-exports/${namespace ? `${namespace}.d.ts` : 'index.d.ts'}`); // const ensure = () => {
23
24
  // if (!fs.existsSync(entryExportFile)) {
24
25
  // fs.outputFileSync(entryExportFile, '');
25
26
  // }
@@ -32,9 +33,11 @@ export const createRuntimeExportsUtils = memo((pwd, namespace) => {
32
33
 
33
34
  try {
34
35
  fs.ensureFileSync(entryExportFile);
36
+ fs.ensureFileSync(entryExportTsFile);
35
37
 
36
38
  if (!fs.readFileSync(entryExportFile, 'utf8').includes(statement)) {
37
39
  fs.appendFileSync(entryExportFile, `${statement}\n`);
40
+ ts && fs.appendFileSync(entryExportTsFile, `${statement.replace('.js', '.d')}\n`);
38
41
  }
39
42
  } catch (_unused) {// FIXME:
40
43
  }
@@ -17,9 +17,9 @@ var _applyOptionsChain = require("./applyOptionsChain");
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
21
 
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
23
 
24
24
  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; }
25
25
 
@@ -81,17 +81,17 @@ const getAlias = (aliasOption, option) => {
81
81
  }
82
82
 
83
83
  return aliasConfig;
84
- };
84
+ }; // filter invalid ts paths that are not array
85
+
85
86
 
86
87
  exports.getAlias = getAlias;
87
88
 
88
- const getUserAlias = (alias = {}) => {
89
- const keys = Object.keys(alias);
90
- const userKeys = keys.filter(key => !key.includes('@modern-js/runtime'));
91
- return userKeys.reduce((o, k) => {
89
+ const getUserAlias = (alias = {}) => Object.keys(alias).reduce((o, k) => {
90
+ if (Array.isArray(alias[k])) {
92
91
  o[k] = alias[k];
93
- return o;
94
- }, {});
95
- };
92
+ }
93
+
94
+ return o;
95
+ }, {});
96
96
 
97
97
  exports.getUserAlias = getUserAlias;
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.compatRequire = void 0;
6
+ exports.requireExistModule = exports.compatRequire = void 0;
7
+
8
+ var _findExists = require("./findExists");
7
9
 
8
10
  /**
9
11
  * Require function compatible with esm and cjs module.
@@ -16,4 +18,16 @@ const compatRequire = filePath => {
16
18
  return mod !== null && mod !== void 0 && mod.__esModule ? mod.default : mod;
17
19
  };
18
20
 
19
- exports.compatRequire = compatRequire;
21
+ exports.compatRequire = compatRequire;
22
+
23
+ const requireExistModule = (filename, extensions = ['.ts', '.js']) => {
24
+ const exist = (0, _findExists.findExists)(extensions.map(ext => `${filename}${ext}`));
25
+
26
+ if (!exist) {
27
+ return null;
28
+ }
29
+
30
+ return compatRequire(exist);
31
+ };
32
+
33
+ exports.requireExistModule = requireExistModule;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SERVER_RENDER_FUNCTION_NAME = exports.SERVER_BUNDLE_DIRECTORY = exports.ROUTE_SPEC_FILE = exports.PLUGIN_SCHEMAS = exports.LOADABLE_STATS_FILE = exports.LAUNCH_EDITOR_ENDPOINT = exports.INTERNAL_SRC_ALIAS = exports.INTERNAL_PLUGINS = exports.INTERNAL_DIR_ALAIS = exports.HMR_SOCK_PATH = exports.HIDE_MODERN_JS_DIR = exports.ENTRY_NAME_PATTERN = void 0;
6
+ exports.SHARED_DIR = exports.SERVER_RENDER_FUNCTION_NAME = exports.SERVER_DIR = exports.SERVER_BUNDLE_DIRECTORY = exports.ROUTE_SPEC_FILE = exports.PLUGIN_SCHEMAS = exports.MAIN_ENTRY_NAME = exports.LOADABLE_STATS_FILE = exports.LAUNCH_EDITOR_ENDPOINT = exports.INTERNAL_SRC_ALIAS = exports.INTERNAL_PLUGINS = exports.INTERNAL_DIR_ALAIS = exports.HMR_SOCK_PATH = exports.HIDE_MODERN_JS_DIR = exports.ENTRY_NAME_PATTERN = exports.API_DIR = void 0;
7
7
 
8
8
  /**
9
9
  * alias to src directory
@@ -28,10 +28,16 @@ const HMR_SOCK_PATH = '/_modern_js_hmr_ws';
28
28
  exports.HMR_SOCK_PATH = HMR_SOCK_PATH;
29
29
  const ROUTE_SPEC_FILE = 'route.json';
30
30
  /**
31
- * open editor request path
31
+ * main entry name
32
32
  */
33
33
 
34
34
  exports.ROUTE_SPEC_FILE = ROUTE_SPEC_FILE;
35
+ const MAIN_ENTRY_NAME = 'main';
36
+ /**
37
+ * open editor request path
38
+ */
39
+
40
+ exports.MAIN_ENTRY_NAME = MAIN_ENTRY_NAME;
35
41
  const LAUNCH_EDITOR_ENDPOINT = '/__open-stack-frame-in-editor';
36
42
  /**
37
43
  * server side bundles directory, which relative to dist.
@@ -57,13 +63,27 @@ const SERVER_RENDER_FUNCTION_NAME = 'serverRender';
57
63
 
58
64
  exports.SERVER_RENDER_FUNCTION_NAME = SERVER_RENDER_FUNCTION_NAME;
59
65
  const LOADABLE_STATS_FILE = 'loadable-stats.json';
66
+ /**
67
+ * real entry generate by modern.js
68
+ */
69
+
60
70
  exports.LOADABLE_STATS_FILE = LOADABLE_STATS_FILE;
61
71
  const HIDE_MODERN_JS_DIR = './node_modules/.modern-js';
62
72
  /**
63
- * Internal plugins that work as soon as they are installed.
73
+ * internal specified folder
64
74
  */
65
75
 
66
76
  exports.HIDE_MODERN_JS_DIR = HIDE_MODERN_JS_DIR;
77
+ const API_DIR = 'api';
78
+ exports.API_DIR = API_DIR;
79
+ const SERVER_DIR = 'server';
80
+ exports.SERVER_DIR = SERVER_DIR;
81
+ const SHARED_DIR = 'shared';
82
+ /**
83
+ * Internal plugins that work as soon as they are installed.
84
+ */
85
+
86
+ exports.SHARED_DIR = SHARED_DIR;
67
87
  const INTERNAL_PLUGINS = {
68
88
  '@modern-js/app-tools': {
69
89
  cli: '@modern-js/app-tools/cli'
@@ -130,6 +150,10 @@ const INTERNAL_PLUGINS = {
130
150
  '@modern-js/plugin-server-build': {
131
151
  cli: '@modern-js/plugin-server-build'
132
152
  },
153
+ '@modern-js/plugin-server': {
154
+ cli: '@modern-js/plugin-server/cli',
155
+ server: '@modern-js/plugin-server/server'
156
+ },
133
157
  '@modern-js/plugin-micro-frontend': {
134
158
  cli: '@modern-js/plugin-micro-frontend/cli'
135
159
  },
@@ -156,6 +180,12 @@ const INTERNAL_PLUGINS = {
156
180
  },
157
181
  '@modern-js/plugin-polyfill': {
158
182
  server: '@modern-js/plugin-polyfill'
183
+ },
184
+ '@modern-js/plugin-multiprocess': {
185
+ cli: '@modern-js/plugin-multiprocess/cli'
186
+ },
187
+ '@modern-js/plugin-nocode': {
188
+ cli: '@modern-js/plugin-nocode/cli'
159
189
  }
160
190
  };
161
191
  /**
@@ -188,7 +218,10 @@ const PLUGIN_SCHEMAS = {
188
218
  type: 'object',
189
219
  properties: {
190
220
  prefix: {
191
- type: 'string'
221
+ type: ['string', 'array'],
222
+ items: {
223
+ type: 'string'
224
+ }
192
225
  },
193
226
  fetcher: {
194
227
  type: 'string'
@@ -196,7 +229,7 @@ const PLUGIN_SCHEMAS = {
196
229
  proxy: {
197
230
  type: 'object'
198
231
  },
199
- requestCreater: {
232
+ requestCreator: {
200
233
  type: 'string'
201
234
  }
202
235
  }
@@ -299,6 +332,7 @@ const PLUGIN_SCHEMAS = {
299
332
  schema: {
300
333
  type: ['object']
301
334
  }
302
- }]
335
+ }],
336
+ '@modern-js/plugin-nocode': []
303
337
  };
304
338
  exports.PLUGIN_SCHEMAS = PLUGIN_SCHEMAS;
@@ -7,19 +7,29 @@ exports.getEntryOptions = void 0;
7
7
 
8
8
  var _is = require("./is");
9
9
 
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
10
+ var _constants = require("./constants");
11
11
 
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
+
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
15
 
14
16
  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; }
15
17
 
16
- const getEntryOptions = (name, baseOptions, optionsByEntries) => {
18
+ const getEntryOptions = (name, baseOptions, optionsByEntries, packageName) => {
17
19
  if (optionsByEntries) {
18
- // eslint-disable-next-line no-nested-ternary
19
- return optionsByEntries.hasOwnProperty(name) ? (0, _is.isPlainObject)(optionsByEntries[name]) && (0, _is.isPlainObject)(baseOptions) ? _objectSpread(_objectSpread({}, baseOptions), optionsByEntries[name]) : optionsByEntries[name] : baseOptions;
20
+ let optionsByEntry = getOptionsByEntryName(name, optionsByEntries); // compatible with main entry using packageName as the key
21
+
22
+ if (optionsByEntry === undefined && name === _constants.MAIN_ENTRY_NAME && packageName) {
23
+ optionsByEntry = getOptionsByEntryName(packageName, optionsByEntries);
24
+ } // eslint-disable-next-line no-nested-ternary
25
+
26
+
27
+ return optionsByEntry !== undefined ? (0, _is.isPlainObject)(optionsByEntry) && (0, _is.isPlainObject)(baseOptions) ? _objectSpread(_objectSpread({}, baseOptions), optionsByEntry) : optionsByEntry : baseOptions;
20
28
  } else {
21
29
  return baseOptions;
22
30
  }
23
31
  };
24
32
 
25
- exports.getEntryOptions = getEntryOptions;
33
+ exports.getEntryOptions = getEntryOptions;
34
+
35
+ const getOptionsByEntryName = (name, optionsByEntries) => optionsByEntries.hasOwnProperty(name) ? optionsByEntries[name] : undefined;
@@ -8,6 +8,7 @@ exports.isFunction = isFunction;
8
8
  exports.isObject = isObject;
9
9
  exports.isPlainObject = isPlainObject;
10
10
  exports.isPromise = isPromise;
11
+ exports.isRegExp = isRegExp;
11
12
  exports.isString = isString;
12
13
  exports.isUndefined = isUndefined;
13
14
 
@@ -41,4 +42,8 @@ function isPromise(obj) {
41
42
  /* eslint-disable promise/prefer-await-to-then */
42
43
  return Boolean(obj) && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
43
44
  /* eslint-enable promise/prefer-await-to-then */
45
+ }
46
+
47
+ function isRegExp(obj) {
48
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
44
49
  }
@@ -9,9 +9,9 @@ var _chalk = _interopRequireDefault(require("chalk"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
12
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
13
 
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
15
 
16
16
  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; }
17
17
 
@@ -15,9 +15,9 @@ var _yaml = _interopRequireDefault(require("yaml"));
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
19
 
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
21
 
22
22
  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; }
23
23
 
@@ -29,8 +29,10 @@ const memo = fn => {
29
29
  };
30
30
  };
31
31
 
32
- const createRuntimeExportsUtils = memo((pwd, namespace) => {
33
- const entryExportFile = _path.default.join(pwd, `.runtime-exports/${namespace ? `${namespace}.js` : 'index.js'}`); // const ensure = () => {
32
+ const createRuntimeExportsUtils = memo((pwd = '', namespace, ts = false) => {
33
+ const entryExportFile = _path.default.join(pwd, `.runtime-exports/${namespace ? `${namespace}.js` : 'index.js'}`);
34
+
35
+ const entryExportTsFile = _path.default.join(pwd, `.runtime-exports/${namespace ? `${namespace}.d.ts` : 'index.d.ts'}`); // const ensure = () => {
34
36
  // if (!fs.existsSync(entryExportFile)) {
35
37
  // fs.outputFileSync(entryExportFile, '');
36
38
  // }
@@ -45,8 +47,12 @@ const createRuntimeExportsUtils = memo((pwd, namespace) => {
45
47
  try {
46
48
  _fsExtra.default.ensureFileSync(entryExportFile);
47
49
 
50
+ _fsExtra.default.ensureFileSync(entryExportTsFile);
51
+
48
52
  if (!_fsExtra.default.readFileSync(entryExportFile, 'utf8').includes(statement)) {
49
53
  _fsExtra.default.appendFileSync(entryExportFile, `${statement}\n`);
54
+
55
+ ts && _fsExtra.default.appendFileSync(entryExportTsFile, `${statement.replace('.js', '.d')}\n`);
50
56
  }
51
57
  } catch (_unused) {// FIXME:
52
58
  }
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  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; }
6
6
 
@@ -58,15 +58,15 @@ export var getAlias = function getAlias(aliasOption, option) {
58
58
  }
59
59
 
60
60
  return aliasConfig;
61
- };
61
+ }; // filter invalid ts paths that are not array
62
+
62
63
  export var getUserAlias = function getUserAlias() {
63
64
  var alias = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
64
- var keys = Object.keys(alias);
65
- var userKeys = keys.filter(function (key) {
66
- return !key.includes('@modern-js/runtime');
67
- });
68
- return userKeys.reduce(function (o, k) {
69
- o[k] = alias[k];
65
+ return Object.keys(alias).reduce(function (o, k) {
66
+ if (Array.isArray(alias[k])) {
67
+ o[k] = alias[k];
68
+ }
69
+
70
70
  return o;
71
71
  }, {});
72
72
  };
@@ -1,10 +1,24 @@
1
+ import { findExists } from "./findExists";
1
2
  /**
2
3
  * Require function compatible with esm and cjs module.
3
4
  * @param filePath - File to required.
4
5
  * @returns module export object.
5
6
  */
7
+
6
8
  export var compatRequire = function compatRequire(filePath) {
7
9
  var mod = require(filePath);
8
10
 
9
11
  return mod !== null && mod !== void 0 && mod.__esModule ? mod["default"] : mod;
12
+ };
13
+ export var requireExistModule = function requireExistModule(filename) {
14
+ var extensions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['.ts', '.js'];
15
+ var exist = findExists(extensions.map(function (ext) {
16
+ return "".concat(filename).concat(ext);
17
+ }));
18
+
19
+ if (!exist) {
20
+ return null;
21
+ }
22
+
23
+ return compatRequire(exist);
10
24
  };
@@ -19,6 +19,11 @@ export var HMR_SOCK_PATH = '/_modern_js_hmr_ws';
19
19
  */
20
20
 
21
21
  export var ROUTE_SPEC_FILE = 'route.json';
22
+ /**
23
+ * main entry name
24
+ */
25
+
26
+ export var MAIN_ENTRY_NAME = 'main';
22
27
  /**
23
28
  * open editor request path
24
29
  */
@@ -44,7 +49,18 @@ export var SERVER_RENDER_FUNCTION_NAME = 'serverRender';
44
49
  */
45
50
 
46
51
  export var LOADABLE_STATS_FILE = 'loadable-stats.json';
52
+ /**
53
+ * real entry generate by modern.js
54
+ */
55
+
47
56
  export var HIDE_MODERN_JS_DIR = './node_modules/.modern-js';
57
+ /**
58
+ * internal specified folder
59
+ */
60
+
61
+ export var API_DIR = 'api';
62
+ export var SERVER_DIR = 'server';
63
+ export var SHARED_DIR = 'shared';
48
64
  /**
49
65
  * Internal plugins that work as soon as they are installed.
50
66
  */
@@ -115,6 +131,10 @@ export var INTERNAL_PLUGINS = {
115
131
  '@modern-js/plugin-server-build': {
116
132
  cli: '@modern-js/plugin-server-build'
117
133
  },
134
+ '@modern-js/plugin-server': {
135
+ cli: '@modern-js/plugin-server/cli',
136
+ server: '@modern-js/plugin-server/server'
137
+ },
118
138
  '@modern-js/plugin-micro-frontend': {
119
139
  cli: '@modern-js/plugin-micro-frontend/cli'
120
140
  },
@@ -141,6 +161,12 @@ export var INTERNAL_PLUGINS = {
141
161
  },
142
162
  '@modern-js/plugin-polyfill': {
143
163
  server: '@modern-js/plugin-polyfill'
164
+ },
165
+ '@modern-js/plugin-multiprocess': {
166
+ cli: '@modern-js/plugin-multiprocess/cli'
167
+ },
168
+ '@modern-js/plugin-nocode': {
169
+ cli: '@modern-js/plugin-nocode/cli'
144
170
  }
145
171
  };
146
172
  /**
@@ -170,7 +196,10 @@ export var PLUGIN_SCHEMAS = {
170
196
  type: 'object',
171
197
  properties: {
172
198
  prefix: {
173
- type: 'string'
199
+ type: ['string', 'array'],
200
+ items: {
201
+ type: 'string'
202
+ }
174
203
  },
175
204
  fetcher: {
176
205
  type: 'string'
@@ -178,7 +207,7 @@ export var PLUGIN_SCHEMAS = {
178
207
  proxy: {
179
208
  type: 'object'
180
209
  },
181
- requestCreater: {
210
+ requestCreator: {
182
211
  type: 'string'
183
212
  }
184
213
  }
@@ -281,5 +310,6 @@ export var PLUGIN_SCHEMAS = {
281
310
  schema: {
282
311
  type: ['object']
283
312
  }
284
- }]
313
+ }],
314
+ '@modern-js/plugin-nocode': []
285
315
  };
@@ -10,7 +10,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
10
10
 
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
14
14
 
15
15
  /* eslint-disable no-param-reassign */
16
16
 
@@ -1,15 +1,26 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  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; }
6
6
 
7
7
  import { isPlainObject } from "./is";
8
- export var getEntryOptions = function getEntryOptions(name, baseOptions, optionsByEntries) {
8
+ import { MAIN_ENTRY_NAME } from "./constants";
9
+ export var getEntryOptions = function getEntryOptions(name, baseOptions, optionsByEntries, packageName) {
9
10
  if (optionsByEntries) {
10
- // eslint-disable-next-line no-nested-ternary
11
- return optionsByEntries.hasOwnProperty(name) ? isPlainObject(optionsByEntries[name]) && isPlainObject(baseOptions) ? _objectSpread(_objectSpread({}, baseOptions), optionsByEntries[name]) : optionsByEntries[name] : baseOptions;
11
+ var optionsByEntry = getOptionsByEntryName(name, optionsByEntries); // compatible with main entry using packageName as the key
12
+
13
+ if (optionsByEntry === undefined && name === MAIN_ENTRY_NAME && packageName) {
14
+ optionsByEntry = getOptionsByEntryName(packageName, optionsByEntries);
15
+ } // eslint-disable-next-line no-nested-ternary
16
+
17
+
18
+ return optionsByEntry !== undefined ? isPlainObject(optionsByEntry) && isPlainObject(baseOptions) ? _objectSpread(_objectSpread({}, baseOptions), optionsByEntry) : optionsByEntry : baseOptions;
12
19
  } else {
13
20
  return baseOptions;
14
21
  }
22
+ };
23
+
24
+ var getOptionsByEntryName = function getOptionsByEntryName(name, optionsByEntries) {
25
+ return optionsByEntries.hasOwnProperty(name) ? optionsByEntries[name] : undefined;
15
26
  };
@@ -1,4 +1,4 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
2
 
3
3
  export function isString(str) {
4
4
  return typeof str === 'string';
@@ -24,4 +24,7 @@ export function isPromise(obj) {
24
24
  /* eslint-disable promise/prefer-await-to-then */
25
25
  return Boolean(obj) && (_typeof(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
26
26
  /* eslint-enable promise/prefer-await-to-then */
27
+ }
28
+ export function isRegExp(obj) {
29
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
27
30
  }
@@ -10,9 +10,9 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
10
10
 
11
11
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
12
 
13
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
14
 
15
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
16
 
17
17
  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; }
18
18
 
@@ -20,7 +20,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
20
20
 
21
21
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
22
22
 
23
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
23
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
24
24
 
25
25
  import chalk from 'chalk';
26
26
  var grey = chalk.grey,
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  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; }
6
6
 
@@ -22,8 +22,12 @@ var memo = function memo(fn) {
22
22
  };
23
23
  };
24
24
 
25
- export var createRuntimeExportsUtils = memo(function (pwd, namespace) {
26
- var entryExportFile = path.join(pwd, ".runtime-exports/".concat(namespace ? "".concat(namespace, ".js") : 'index.js')); // const ensure = () => {
25
+ export var createRuntimeExportsUtils = memo(function () {
26
+ var pwd = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
27
+ var namespace = arguments.length > 1 ? arguments[1] : undefined;
28
+ var ts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
29
+ var entryExportFile = path.join(pwd, ".runtime-exports/".concat(namespace ? "".concat(namespace, ".js") : 'index.js'));
30
+ var entryExportTsFile = path.join(pwd, ".runtime-exports/".concat(namespace ? "".concat(namespace, ".d.ts") : 'index.d.ts')); // const ensure = () => {
27
31
  // if (!fs.existsSync(entryExportFile)) {
28
32
  // fs.outputFileSync(entryExportFile, '');
29
33
  // }
@@ -36,9 +40,11 @@ export var createRuntimeExportsUtils = memo(function (pwd, namespace) {
36
40
 
37
41
  try {
38
42
  fs.ensureFileSync(entryExportFile);
43
+ fs.ensureFileSync(entryExportTsFile);
39
44
 
40
45
  if (!fs.readFileSync(entryExportFile, 'utf8').includes(statement)) {
41
46
  fs.appendFileSync(entryExportFile, "".concat(statement, "\n"));
47
+ ts && fs.appendFileSync(entryExportTsFile, "".concat(statement.replace('.js', '.d'), "\n"));
42
48
  }
43
49
  } catch (_unused) {// FIXME:
44
50
  }
@@ -3,4 +3,5 @@
3
3
  * @param filePath - File to required.
4
4
  * @returns module export object.
5
5
  */
6
- export declare const compatRequire: (filePath: string) => any;
6
+ export declare const compatRequire: (filePath: string) => any;
7
+ export declare const requireExistModule: (filename: string, extensions?: string[]) => any;
@@ -17,6 +17,11 @@ export declare const HMR_SOCK_PATH = "/_modern_js_hmr_ws";
17
17
  */
18
18
 
19
19
  export declare const ROUTE_SPEC_FILE = "route.json";
20
+ /**
21
+ * main entry name
22
+ */
23
+
24
+ export declare const MAIN_ENTRY_NAME = "main";
20
25
  /**
21
26
  * open editor request path
22
27
  */
@@ -42,7 +47,18 @@ export declare const SERVER_RENDER_FUNCTION_NAME = "serverRender";
42
47
  */
43
48
 
44
49
  export declare const LOADABLE_STATS_FILE = "loadable-stats.json";
50
+ /**
51
+ * real entry generate by modern.js
52
+ */
53
+
45
54
  export declare const HIDE_MODERN_JS_DIR = "./node_modules/.modern-js";
55
+ /**
56
+ * internal specified folder
57
+ */
58
+
59
+ export declare const API_DIR = "api";
60
+ export declare const SERVER_DIR = "server";
61
+ export declare const SHARED_DIR = "shared";
46
62
  /**
47
63
  * Internal plugins that work as soon as they are installed.
48
64
  */
@@ -83,7 +99,10 @@ export declare const PLUGIN_SCHEMAS: {
83
99
  type: string;
84
100
  properties: {
85
101
  prefix: {
86
- type: string;
102
+ type: string[];
103
+ items: {
104
+ type: string;
105
+ };
87
106
  };
88
107
  fetcher: {
89
108
  type: string;
@@ -91,7 +110,7 @@ export declare const PLUGIN_SCHEMAS: {
91
110
  proxy: {
92
111
  type: string;
93
112
  };
94
- requestCreater: {
113
+ requestCreator: {
95
114
  type: string;
96
115
  };
97
116
  };
@@ -175,4 +194,5 @@ export declare const PLUGIN_SCHEMAS: {
175
194
  type: string[];
176
195
  };
177
196
  }[];
197
+ '@modern-js/plugin-nocode': never[];
178
198
  };
@@ -1 +1 @@
1
- export declare const getEntryOptions: <T>(name: string, baseOptions?: T | undefined, optionsByEntries?: Record<string, T> | undefined) => T | undefined;
1
+ export declare const getEntryOptions: <T>(name: string, baseOptions?: T | undefined, optionsByEntries?: Record<string, T> | undefined, packageName?: string | undefined) => T | undefined;
@@ -4,4 +4,5 @@ export declare function isArray(obj: any): obj is any[];
4
4
  export declare function isFunction(func: any): func is Function;
5
5
  export declare function isObject(obj: any): obj is object;
6
6
  export declare function isPlainObject(obj: any): obj is Record<string, any>;
7
- export declare function isPromise(obj: any): obj is Promise<any>;
7
+ export declare function isPromise(obj: any): obj is Promise<any>;
8
+ export declare function isRegExp(obj: any): obj is RegExp;
@@ -1,4 +1,4 @@
1
- export declare const createRuntimeExportsUtils: (pwd: string, namespace: string) => {
1
+ export declare const createRuntimeExportsUtils: (pwd: any, namespace: string, ts?: any) => {
2
2
  addExport: (statement: string) => void;
3
3
  getPath: () => string;
4
4
  };
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.1.1",
14
+ "version": "1.1.4",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/js/node/index.js",
@@ -65,8 +65,8 @@
65
65
  "@types/recursive-readdir": "^2.2.0",
66
66
  "typescript": "^4",
67
67
  "webpack": "^5.54.0",
68
- "@modern-js/plugin-testing": "^1.1.0",
69
- "@modern-js/module-tools": "^1.1.0"
68
+ "@modern-js/plugin-testing": "^1.1.1",
69
+ "@modern-js/module-tools": "^1.1.1"
70
70
  },
71
71
  "peerDependencies": {
72
72
  "typescript": "^4.4.3"
@@ -80,5 +80,6 @@
80
80
  "new": "modern new",
81
81
  "build": "modern build",
82
82
  "test": "modern test --passWithNoTests"
83
- }
83
+ },
84
+ "readme": "\n<p align=\"center\">\n <a href=\"https://modernjs.dev\" target=\"blank\"><img src=\"https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png\" width=\"300\" alt=\"Modern.js Logo\" /></a>\n</p>\n<p align=\"center\">\n现代 Web 工程体系\n <br/>\n <a href=\"https://modernjs.dev\" target=\"blank\">\n modernjs.dev\n </a>\n</p>\n<p align=\"center\">\n The meta-framework suite designed from scratch for frontend-focused modern web development\n</p>\n\n# Introduction\n\n> The doc site ([modernjs.dev](https://modernjs.dev)) and articles are only available in Chinese for now, we are planning to add English versions soon.\n\n- [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)\n\n## Getting Started\n\n- [Quick Start](https://modernjs.dev/docs/start)\n- [Guides](https://modernjs.dev/docs/guides)\n- [API References](https://modernjs.dev/docs/apis)\n\n## Contributing\n\n- [Contributing Guide](https://github.com/modern-js-dev/modern.js/blob/main/CONTRIBUTING.md)\n"
84
85
  }
package/src/alias.ts CHANGED
@@ -80,11 +80,11 @@ export const getAlias = (
80
80
  return aliasConfig;
81
81
  };
82
82
 
83
- export const getUserAlias = (alias: Record<string, string | string[]> = {}) => {
84
- const keys = Object.keys(alias);
85
- const userKeys = keys.filter(key => !key.includes('@modern-js/runtime'));
86
- return userKeys.reduce<Record<string, string | string[]>>((o, k) => {
87
- o[k] = alias[k];
83
+ // filter invalid ts paths that are not array
84
+ export const getUserAlias = (alias: Record<string, string | string[]> = {}) =>
85
+ Object.keys(alias).reduce((o, k) => {
86
+ if (Array.isArray(alias[k])) {
87
+ o[k] = alias[k];
88
+ }
88
89
  return o;
89
- }, {});
90
- };
90
+ }, {} as Record<string, string | string[]>);
@@ -1,3 +1,5 @@
1
+ import { findExists } from './findExists';
2
+
1
3
  /**
2
4
  * Require function compatible with esm and cjs module.
3
5
  * @param filePath - File to required.
@@ -8,3 +10,16 @@ export const compatRequire = (filePath: string) => {
8
10
 
9
11
  return mod?.__esModule ? mod.default : mod;
10
12
  };
13
+
14
+ export const requireExistModule = (
15
+ filename: string,
16
+ extensions = ['.ts', '.js'],
17
+ ) => {
18
+ const exist = findExists(extensions.map(ext => `${filename}${ext}`));
19
+
20
+ if (!exist) {
21
+ return null;
22
+ }
23
+
24
+ return compatRequire(exist);
25
+ };
package/src/constants.ts CHANGED
@@ -18,6 +18,11 @@ export const HMR_SOCK_PATH = '/_modern_js_hmr_ws';
18
18
  */
19
19
  export const ROUTE_SPEC_FILE = 'route.json';
20
20
 
21
+ /**
22
+ * main entry name
23
+ */
24
+ export const MAIN_ENTRY_NAME = 'main';
25
+
21
26
  /**
22
27
  * open editor request path
23
28
  */
@@ -43,8 +48,20 @@ export const SERVER_RENDER_FUNCTION_NAME = 'serverRender';
43
48
  */
44
49
  export const LOADABLE_STATS_FILE = 'loadable-stats.json';
45
50
 
51
+ /**
52
+ * real entry generate by modern.js
53
+ */
46
54
  export const HIDE_MODERN_JS_DIR = './node_modules/.modern-js';
47
55
 
56
+ /**
57
+ * internal specified folder
58
+ */
59
+ export const API_DIR = 'api';
60
+
61
+ export const SERVER_DIR = 'server';
62
+
63
+ export const SHARED_DIR = 'shared';
64
+
48
65
  /**
49
66
  * Internal plugins that work as soon as they are installed.
50
67
  */
@@ -86,6 +103,10 @@ export const INTERNAL_PLUGINS: {
86
103
  },
87
104
  '@modern-js/plugin-unbundle': { cli: '@modern-js/plugin-unbundle' },
88
105
  '@modern-js/plugin-server-build': { cli: '@modern-js/plugin-server-build' },
106
+ '@modern-js/plugin-server': {
107
+ cli: '@modern-js/plugin-server/cli',
108
+ server: '@modern-js/plugin-server/server',
109
+ },
89
110
  '@modern-js/plugin-micro-frontend': {
90
111
  cli: '@modern-js/plugin-micro-frontend/cli',
91
112
  },
@@ -99,6 +120,10 @@ export const INTERNAL_PLUGINS: {
99
120
  cli: '@modern-js/plugin-static-hosting/cli',
100
121
  },
101
122
  '@modern-js/plugin-polyfill': { server: '@modern-js/plugin-polyfill' },
123
+ '@modern-js/plugin-multiprocess': {
124
+ cli: '@modern-js/plugin-multiprocess/cli',
125
+ },
126
+ '@modern-js/plugin-nocode': { cli: '@modern-js/plugin-nocode/cli' },
102
127
  };
103
128
 
104
129
  /**
@@ -128,10 +153,13 @@ export const PLUGIN_SCHEMAS = {
128
153
  schema: {
129
154
  type: 'object',
130
155
  properties: {
131
- prefix: { type: 'string' },
156
+ prefix: {
157
+ type: ['string', 'array'],
158
+ items: { type: 'string' },
159
+ },
132
160
  fetcher: { type: 'string' },
133
161
  proxy: { type: 'object' },
134
- requestCreater: { type: 'string' },
162
+ requestCreator: { type: 'string' },
135
163
  },
136
164
  },
137
165
  },
@@ -230,4 +258,5 @@ export const PLUGIN_SCHEMAS = {
230
258
  schema: { type: ['object'] },
231
259
  },
232
260
  ],
261
+ '@modern-js/plugin-nocode': [],
233
262
  };
@@ -1,18 +1,37 @@
1
1
  import { isPlainObject } from './is';
2
+ import { MAIN_ENTRY_NAME } from './constants';
2
3
 
3
4
  export const getEntryOptions = <T>(
4
5
  name: string,
5
6
  baseOptions?: T,
6
7
  optionsByEntries?: Record<string, T>,
8
+ packageName?: string,
7
9
  ) => {
8
10
  if (optionsByEntries) {
11
+ let optionsByEntry = getOptionsByEntryName(name, optionsByEntries);
12
+
13
+ // compatible with main entry using packageName as the key
14
+ if (
15
+ optionsByEntry === undefined &&
16
+ name === MAIN_ENTRY_NAME &&
17
+ packageName
18
+ ) {
19
+ optionsByEntry = getOptionsByEntryName(packageName, optionsByEntries);
20
+ }
21
+
9
22
  // eslint-disable-next-line no-nested-ternary
10
- return optionsByEntries.hasOwnProperty(name)
11
- ? isPlainObject(optionsByEntries[name]) && isPlainObject(baseOptions)
12
- ? { ...baseOptions, ...optionsByEntries[name] }
13
- : optionsByEntries[name]
23
+ return optionsByEntry !== undefined
24
+ ? isPlainObject(optionsByEntry) && isPlainObject(baseOptions)
25
+ ? { ...baseOptions, ...optionsByEntry }
26
+ : optionsByEntry
14
27
  : baseOptions;
15
28
  } else {
16
29
  return baseOptions;
17
30
  }
18
31
  };
32
+
33
+ const getOptionsByEntryName = <T>(
34
+ name: string,
35
+ optionsByEntries: Record<string, T>,
36
+ ) =>
37
+ optionsByEntries.hasOwnProperty(name) ? optionsByEntries[name] : undefined;
package/src/is/type.ts CHANGED
@@ -37,3 +37,7 @@ export function isPromise(obj: any): obj is Promise<any> {
37
37
  );
38
38
  /* eslint-enable promise/prefer-await-to-then */
39
39
  }
40
+
41
+ export function isRegExp(obj: any): obj is RegExp {
42
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
43
+ }
@@ -21,11 +21,15 @@ const memo = <T extends (...args: any[]) => any>(fn: T) => {
21
21
  };
22
22
 
23
23
  export const createRuntimeExportsUtils = memo(
24
- (pwd: string, namespace: string) => {
24
+ (pwd = '', namespace: string, ts = false) => {
25
25
  const entryExportFile = path.join(
26
26
  pwd,
27
27
  `.runtime-exports/${namespace ? `${namespace}.js` : 'index.js'}`,
28
28
  );
29
+ const entryExportTsFile = path.join(
30
+ pwd,
31
+ `.runtime-exports/${namespace ? `${namespace}.d.ts` : 'index.d.ts'}`,
32
+ );
29
33
 
30
34
  // const ensure = () => {
31
35
  // if (!fs.existsSync(entryExportFile)) {
@@ -39,8 +43,15 @@ export const createRuntimeExportsUtils = memo(
39
43
  statement = normalizeOutputPath(statement);
40
44
  try {
41
45
  fs.ensureFileSync(entryExportFile);
46
+ fs.ensureFileSync(entryExportTsFile);
47
+
42
48
  if (!fs.readFileSync(entryExportFile, 'utf8').includes(statement)) {
43
49
  fs.appendFileSync(entryExportFile, `${statement}\n`);
50
+ ts &&
51
+ fs.appendFileSync(
52
+ entryExportTsFile,
53
+ `${statement.replace('.js', '.d')}\n`,
54
+ );
44
55
  }
45
56
  } catch {
46
57
  // FIXME:
@@ -15,6 +15,17 @@ describe('get entry options', () => {
15
15
  ).toEqual('a');
16
16
  });
17
17
 
18
+ test(`should compatible with main entry using packageName as key`, () => {
19
+ expect(
20
+ getEntryOptions(
21
+ 'main',
22
+ 'default value',
23
+ { 'package-name': 'a' },
24
+ 'package-name',
25
+ ),
26
+ ).toEqual('a');
27
+ });
28
+
18
29
  expect(
19
30
  getEntryOptions(
20
31
  'page-a',