@modern-js/utils 1.21.2 → 2.0.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # @modern-js/utils
2
2
 
3
+ ## 2.0.0-beta.0
4
+
5
+ ### Major Changes
6
+
7
+ - dda38c9: chore: v2
8
+
9
+ ### Minor Changes
10
+
11
+ - edd1cfb1a: feat: modernjs Access builder compiler
12
+ feat: modernjs 接入 builder 构建
13
+ - d5a31df78: refactor: remove unbundle configs and types
14
+
15
+ refactor: 移除 unbundle 相关的配置项和类型定义
16
+
17
+ - 543be95: feat: compile server loader and support handle loader request
18
+ feat: 编译 server loader 并支持处理 loader 的请求
19
+
20
+ ### Patch Changes
21
+
22
+ - cc971eabf: refactor: move server plugin load logic in `@modern-js/core`
23
+ refactor:移除在 `@modern-js/core` 中的 server 插件加载逻辑
24
+ - 5b9049f: feat: inject async js chunk when streaming ssr
25
+ feat: streaming ssr 时, 注入 async 类型的 js chunk
26
+ - b8bbe036c: feat: change type logic
27
+ feat: 修改类型相关的逻辑
28
+ - 3bbea92b2: feat: support Hook、Middleware new API
29
+ feat: 支持 Hook、Middleware 的新 API
30
+ - abf3421: fix(dev-server): isDepsExists add non pkgPath judege
31
+
32
+ 修复: isDepsExists 方法添加 package.json 不存在的兜底
33
+
34
+ - 14b712d: fix: use consistent alias type and default value across packages
35
+
36
+ fix: 在各个包中使用一致的 alias 类型定义和默认值
37
+
3
38
  ## 1.21.2
4
39
 
5
40
  ## 1.21.1
package/dist/alias.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- declare type AliasOption = Record<string, string> | ((aliases: Record<string, string>) => Record<string, unknown>) | Record<string, string> | undefined;
1
+ export declare type Alias = Record<string, string | string[]>;
2
+ export declare type AliasOption = Alias | ((aliases: Alias) => Alias | void);
2
3
  interface NormalizedConfig {
3
4
  source: {
4
5
  alias?: AliasOption | Array<AliasOption>;
@@ -13,7 +14,8 @@ interface IAliasConfig {
13
14
  export declare const validAlias: <T extends NormalizedConfig>(modernConfig: T, { tsconfigPath }: {
14
15
  tsconfigPath: string;
15
16
  }) => string | null;
16
- export declare const getAlias: (aliasOption: AliasOption | Array<AliasOption>, option: {
17
+ export declare const mergeAlias: (alias: NormalizedConfig['source']['alias']) => Alias;
18
+ export declare const getAliasConfig: (aliasOption: NormalizedConfig['source']['alias'], option: {
17
19
  appDirectory: string;
18
20
  tsconfigPath: string;
19
21
  }) => IAliasConfig;
package/dist/alias.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getUserAlias = exports.getAlias = exports.validAlias = void 0;
6
+ exports.getUserAlias = exports.getAliasConfig = exports.mergeAlias = exports.validAlias = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const compiled_1 = require("./compiled");
@@ -25,36 +25,35 @@ const validAlias = (modernConfig, { tsconfigPath }) => {
25
25
  return null;
26
26
  };
27
27
  exports.validAlias = validAlias;
28
- const getAlias = (aliasOption, option) => {
28
+ const mergeAlias = (alias) => (0, applyOptionsChain_1.applyOptionsChain)({}, alias);
29
+ exports.mergeAlias = mergeAlias;
30
+ const getAliasConfig = (aliasOption, option) => {
29
31
  var _a, _b;
30
32
  const isTsProject = fs_1.default.existsSync(option.tsconfigPath);
31
- let aliasConfig;
33
+ const alias = (0, exports.mergeAlias)(aliasOption);
32
34
  if (!isTsProject) {
33
- aliasConfig = {
35
+ return {
34
36
  absoluteBaseUrl: option.appDirectory,
35
- paths: (0, applyOptionsChain_1.applyOptionsChain)({ '@': ['./src'] }, aliasOption),
37
+ paths: alias,
36
38
  isTsPath: false,
37
39
  isTsProject,
38
40
  };
39
41
  }
40
- else {
41
- const tsconfig = (0, readTsConfig_1.readTsConfigByFile)(option.tsconfigPath);
42
- const baseUrl = (_a = tsconfig === null || tsconfig === void 0 ? void 0 : tsconfig.compilerOptions) === null || _a === void 0 ? void 0 : _a.baseUrl;
43
- aliasConfig = {
44
- absoluteBaseUrl: baseUrl
45
- ? path_1.default.join(option.appDirectory, baseUrl)
46
- : option.appDirectory,
47
- paths: {
48
- ...(aliasOption || {}),
49
- ...(_b = tsconfig === null || tsconfig === void 0 ? void 0 : tsconfig.compilerOptions) === null || _b === void 0 ? void 0 : _b.paths,
50
- },
51
- isTsPath: true,
52
- isTsProject,
53
- };
54
- }
55
- return aliasConfig;
42
+ const tsconfig = (0, readTsConfig_1.readTsConfigByFile)(option.tsconfigPath);
43
+ const baseUrl = (_a = tsconfig === null || tsconfig === void 0 ? void 0 : tsconfig.compilerOptions) === null || _a === void 0 ? void 0 : _a.baseUrl;
44
+ return {
45
+ absoluteBaseUrl: baseUrl
46
+ ? path_1.default.join(option.appDirectory, baseUrl)
47
+ : option.appDirectory,
48
+ paths: {
49
+ ...alias,
50
+ ...(_b = tsconfig === null || tsconfig === void 0 ? void 0 : tsconfig.compilerOptions) === null || _b === void 0 ? void 0 : _b.paths,
51
+ },
52
+ isTsPath: true,
53
+ isTsProject,
54
+ };
56
55
  };
57
- exports.getAlias = getAlias;
56
+ exports.getAliasConfig = getAliasConfig;
58
57
  // filter invalid ts paths that are not array
59
58
  const getUserAlias = (alias = {}) => Object.keys(alias).reduce((o, k) => {
60
59
  if (Array.isArray(alias[k])) {
package/dist/chainId.d.ts CHANGED
@@ -31,6 +31,8 @@ export declare const CHAIN_ID: {
31
31
  readonly TOML: "toml";
32
32
  /** Rule for yaml */
33
33
  readonly YAML: "yaml";
34
+ /** Rule for bff */
35
+ readonly JS_BFF_API: "js-bff-api";
34
36
  };
35
37
  /** Predefined rule groups */
36
38
  readonly ONE_OF: {
@@ -83,12 +85,16 @@ export declare const CHAIN_ID: {
83
85
  readonly BABEL: "babel";
84
86
  /** esbuild-loader */
85
87
  readonly ESBUILD: "esbuild";
88
+ /** swc-loader */
89
+ readonly SWC: "swc";
86
90
  /** style-loader */
87
91
  readonly STYLE: "style-loader";
88
92
  /** postcss-loader */
89
93
  readonly POSTCSS: "postcss";
90
94
  /** markdown-loader */
91
95
  readonly MARKDOWN: "markdown";
96
+ /** ignore-css-loader */
97
+ readonly IGNORE_CSS: "ignore-css";
92
98
  /** css-modules-typescript-loader */
93
99
  readonly CSS_MODULES_TS: "css-modules-typescript";
94
100
  /** mini-css-extract-plugin.loader */
@@ -140,6 +146,8 @@ export declare const CHAIN_ID: {
140
146
  readonly ASSETS_RETRY: "ASSETS_RETRY";
141
147
  /** AutoSetRootFontSizePlugin */
142
148
  readonly AUTO_SET_ROOT_SIZE: "auto-set-root-size";
149
+ /** HtmlAsyncChunkPlugin */
150
+ readonly HTML_ASYNC_CHUNK: "html-async-chunk";
143
151
  };
144
152
  /** Predefined minimizers */
145
153
  readonly MINIMIZER: {
@@ -149,6 +157,8 @@ export declare const CHAIN_ID: {
149
157
  readonly CSS: "css";
150
158
  /** ESBuildPlugin */
151
159
  readonly ESBUILD: "js-css";
160
+ /** SWCPlugin */
161
+ readonly SWC: "swc";
152
162
  };
153
163
  /** Predefined resolve plugins */
154
164
  readonly RESOLVE_PLUGIN: {
package/dist/chainId.js CHANGED
@@ -34,6 +34,8 @@ exports.CHAIN_ID = {
34
34
  TOML: 'toml',
35
35
  /** Rule for yaml */
36
36
  YAML: 'yaml',
37
+ /** Rule for bff */
38
+ JS_BFF_API: 'js-bff-api',
37
39
  },
38
40
  /** Predefined rule groups */
39
41
  ONE_OF: {
@@ -86,12 +88,16 @@ exports.CHAIN_ID = {
86
88
  BABEL: 'babel',
87
89
  /** esbuild-loader */
88
90
  ESBUILD: 'esbuild',
91
+ /** swc-loader */
92
+ SWC: 'swc',
89
93
  /** style-loader */
90
94
  STYLE: 'style-loader',
91
95
  /** postcss-loader */
92
96
  POSTCSS: 'postcss',
93
97
  /** markdown-loader */
94
98
  MARKDOWN: 'markdown',
99
+ /** ignore-css-loader */
100
+ IGNORE_CSS: 'ignore-css',
95
101
  /** css-modules-typescript-loader */
96
102
  CSS_MODULES_TS: 'css-modules-typescript',
97
103
  /** mini-css-extract-plugin.loader */
@@ -143,6 +149,8 @@ exports.CHAIN_ID = {
143
149
  ASSETS_RETRY: 'ASSETS_RETRY',
144
150
  /** AutoSetRootFontSizePlugin */
145
151
  AUTO_SET_ROOT_SIZE: 'auto-set-root-size',
152
+ /** HtmlAsyncChunkPlugin */
153
+ HTML_ASYNC_CHUNK: 'html-async-chunk',
146
154
  },
147
155
  /** Predefined minimizers */
148
156
  MINIMIZER: {
@@ -152,6 +160,8 @@ exports.CHAIN_ID = {
152
160
  CSS: 'css',
153
161
  /** ESBuildPlugin */
154
162
  ESBUILD: 'js-css',
163
+ /** SWCPlugin */
164
+ SWC: 'swc',
155
165
  },
156
166
  /** Predefined resolve plugins */
157
167
  RESOLVE_PLUGIN: {
@@ -3,6 +3,9 @@
3
3
  * @param filePath - File to required.
4
4
  * @returns module export object.
5
5
  */
6
- export declare const compatRequire: (filePath: string) => any;
7
- export declare const requireExistModule: (filename: string, extensions?: string[]) => any;
6
+ export declare const compatRequire: (filePath: string, interop?: boolean) => any;
7
+ export declare const requireExistModule: (filename: string, opt?: {
8
+ extensions?: string[];
9
+ interop?: boolean;
10
+ }) => any;
8
11
  export declare const cleanRequireCache: (filelist: string[]) => void;
@@ -7,17 +7,23 @@ const findExists_1 = require("./findExists");
7
7
  * @param filePath - File to required.
8
8
  * @returns module export object.
9
9
  */
10
- const compatRequire = (filePath) => {
10
+ const compatRequire = (filePath, interop = true) => {
11
11
  const mod = require(filePath);
12
- return (mod === null || mod === void 0 ? void 0 : mod.__esModule) ? mod.default : mod;
12
+ const rtnESMDefault = interop && (mod === null || mod === void 0 ? void 0 : mod.__esModule);
13
+ return rtnESMDefault ? mod.default : mod;
13
14
  };
14
15
  exports.compatRequire = compatRequire;
15
- const requireExistModule = (filename, extensions = ['.ts', '.js']) => {
16
- const exist = (0, findExists_1.findExists)(extensions.map(ext => `${filename}${ext}`));
16
+ const requireExistModule = (filename, opt) => {
17
+ const final = {
18
+ extensions: ['.ts', '.js'],
19
+ interop: true,
20
+ ...opt,
21
+ };
22
+ const exist = (0, findExists_1.findExists)(final.extensions.map(ext => `${filename}${ext}`));
17
23
  if (!exist) {
18
24
  return null;
19
25
  }
20
- return (0, exports.compatRequire)(exist);
26
+ return (0, exports.compatRequire)(exist, final.interop);
21
27
  };
22
28
  exports.requireExistModule = requireExistModule;
23
29
  const cleanRequireCache = (filelist) => {
@@ -1,3 +1,4 @@
1
+ import { InternalPlugins } from '@modern-js/types';
1
2
  /**
2
3
  * hmr socket connect path
3
4
  */
@@ -52,12 +53,8 @@ export declare const DEFAULT_SERVER_CONFIG = "modern.server-runtime.config";
52
53
  /**
53
54
  * Internal plugins that work as soon as they are installed.
54
55
  */
55
- export declare const INTERNAL_PLUGINS: {
56
- [name: string]: {
57
- cli?: string;
58
- server?: string;
59
- };
60
- };
56
+ export declare const INTERNAL_CLI_PLUGINS: InternalPlugins;
57
+ export declare const INTERNAL_SERVER_PLUGINS: InternalPlugins;
61
58
  /**
62
59
  * The schema registered in the plugin.
63
60
  */
@@ -104,24 +101,6 @@ export declare const PLUGIN_SCHEMAS: {
104
101
  };
105
102
  };
106
103
  }[];
107
- '@modern-js/plugin-esbuild': {
108
- target: string;
109
- schema: {
110
- typeof: string[];
111
- };
112
- }[];
113
- '@modern-js/plugin-less': {
114
- target: string;
115
- schema: {
116
- typeof: string[];
117
- };
118
- }[];
119
- '@modern-js/plugin-sass': {
120
- target: string;
121
- schema: {
122
- typeof: string[];
123
- };
124
- }[];
125
104
  '@modern-js/plugin-tailwindcss': {
126
105
  target: string;
127
106
  schema: {
@@ -134,35 +113,6 @@ export declare const PLUGIN_SCHEMAS: {
134
113
  typeof: string[];
135
114
  };
136
115
  }[];
137
- '@modern-js/plugin-unbundle': ({
138
- target: string;
139
- schema: {
140
- type: string;
141
- properties?: undefined;
142
- };
143
- } | {
144
- target: string;
145
- schema: {
146
- type: string;
147
- properties: {
148
- ignore: {
149
- type: string[];
150
- items: {
151
- type: string;
152
- };
153
- };
154
- ignoreModuleCache: {
155
- type: string;
156
- };
157
- clearPdnCache: {
158
- type: string;
159
- };
160
- pdnHost: {
161
- type: string;
162
- };
163
- };
164
- };
165
- })[];
166
116
  '@modern-js/plugin-ssg': {
167
117
  target: string;
168
118
  schema: {
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PLUGIN_SCHEMAS = exports.INTERNAL_PLUGINS = exports.DEFAULT_SERVER_CONFIG = exports.OUTPUT_CONFIG_FILE = exports.CONFIG_FILE_EXTENSIONS = exports.CONFIG_CACHE_DIR = exports.SHARED_DIR = exports.SERVER_DIR = exports.API_DIR = exports.LOADABLE_STATS_FILE = exports.SERVER_RENDER_FUNCTION_NAME = exports.ENTRY_NAME_PATTERN = exports.SERVER_BUNDLE_DIRECTORY = exports.LAUNCH_EDITOR_ENDPOINT = exports.MAIN_ENTRY_NAME = exports.ROUTE_SPEC_FILE = exports.HMR_SOCK_PATH = void 0;
3
+ exports.PLUGIN_SCHEMAS = exports.INTERNAL_SERVER_PLUGINS = exports.INTERNAL_CLI_PLUGINS = exports.DEFAULT_SERVER_CONFIG = exports.OUTPUT_CONFIG_FILE = exports.CONFIG_FILE_EXTENSIONS = exports.CONFIG_CACHE_DIR = exports.SHARED_DIR = exports.SERVER_DIR = exports.API_DIR = exports.LOADABLE_STATS_FILE = exports.SERVER_RENDER_FUNCTION_NAME = exports.ENTRY_NAME_PATTERN = exports.SERVER_BUNDLE_DIRECTORY = exports.LAUNCH_EDITOR_ENDPOINT = exports.MAIN_ENTRY_NAME = exports.ROUTE_SPEC_FILE = exports.HMR_SOCK_PATH = void 0;
4
4
  /**
5
5
  * hmr socket connect path
6
6
  */
@@ -55,55 +55,38 @@ exports.DEFAULT_SERVER_CONFIG = 'modern.server-runtime.config';
55
55
  /**
56
56
  * Internal plugins that work as soon as they are installed.
57
57
  */
58
- exports.INTERNAL_PLUGINS = {
59
- '@modern-js/app-tools': { cli: '@modern-js/app-tools/cli' },
60
- '@modern-js/monorepo-tools': { cli: '@modern-js/monorepo-tools/cli' },
61
- '@modern-js/module-tools': { cli: '@modern-js/module-tools/cli' },
62
- '@modern-js/runtime': { cli: '@modern-js/runtime/cli' },
63
- '@modern-js/plugin-less': { cli: '@modern-js/plugin-less/cli' },
64
- '@modern-js/plugin-sass': { cli: '@modern-js/plugin-sass/cli' },
65
- '@modern-js/plugin-esbuild': { cli: '@modern-js/plugin-esbuild/cli' },
66
- '@modern-js/plugin-proxy': { cli: '@modern-js/plugin-proxy/cli' },
67
- '@modern-js/plugin-ssg': { cli: '@modern-js/plugin-ssg/cli' },
68
- '@modern-js/plugin-bff': {
69
- cli: '@modern-js/plugin-bff/cli',
70
- server: '@modern-js/plugin-bff/server',
71
- },
72
- '@modern-js/plugin-electron': { cli: '@modern-js/plugin-electron/cli' },
73
- '@modern-js/plugin-testing': { cli: '@modern-js/plugin-testing/cli' },
74
- '@modern-js/plugin-storybook': { cli: '@modern-js/plugin-storybook/cli' },
75
- '@modern-js/plugin-express': {
76
- cli: '@modern-js/plugin-express/cli',
77
- server: '@modern-js/plugin-express',
78
- },
79
- '@modern-js/plugin-egg': {
80
- cli: '@modern-js/plugin-egg/cli',
81
- server: '@modern-js/plugin-egg',
82
- },
83
- '@modern-js/plugin-koa': {
84
- cli: '@modern-js/plugin-koa/cli',
85
- server: '@modern-js/plugin-koa',
86
- },
87
- '@modern-js/plugin-nest': {
88
- cli: '@modern-js/plugin-nest/cli',
89
- server: '@modern-js/plugin-nest/server',
90
- },
91
- // TODO: remove unbundle configs after we completely deprecate it.
92
- '@modern-js/plugin-unbundle': { cli: '@modern-js/plugin-unbundle' },
93
- '@modern-js/plugin-server': {
94
- cli: '@modern-js/plugin-server/cli',
95
- server: '@modern-js/plugin-server/server',
96
- },
97
- '@modern-js/plugin-garfish': {
98
- cli: '@modern-js/plugin-garfish/cli',
99
- },
100
- '@modern-js/plugin-tailwindcss': { cli: '@modern-js/plugin-tailwindcss/cli' },
101
- '@modern-js/plugin-polyfill': {
102
- cli: '@modern-js/plugin-polyfill/cli',
103
- server: '@modern-js/plugin-polyfill',
104
- },
58
+ exports.INTERNAL_CLI_PLUGINS = {
59
+ '@modern-js/app-tools': '@modern-js/app-tools/cli',
60
+ '@modern-js/monorepo-tools': '@modern-js/monorepo-tools/cli',
61
+ '@modern-js/module-tools': '@modern-js/module-tools/cli',
62
+ '@modern-js/module-tools-v2': '@modern-js/module-tools-v2',
63
+ '@modern-js/runtime': '@modern-js/runtime/cli',
64
+ '@modern-js/plugin-proxy': '@modern-js/plugin-proxy/cli',
65
+ '@modern-js/plugin-ssg': '@modern-js/plugin-ssg/cli',
66
+ '@modern-js/plugin-bff': '@modern-js/plugin-bff/cli',
67
+ '@modern-js/plugin-testing': '@modern-js/plugin-testing/cli',
68
+ '@modern-js/plugin-storybook': '@modern-js/plugin-storybook/cli',
69
+ '@modern-js/plugin-express': '@modern-js/plugin-express/cli',
70
+ '@modern-js/plugin-egg': '@modern-js/plugin-egg/cli',
71
+ '@modern-js/plugin-koa': '@modern-js/plugin-koa/cli',
72
+ '@modern-js/plugin-nest': '@modern-js/plugin-nest/cli',
73
+ '@modern-js/plugin-server': '@modern-js/plugin-server/cli',
74
+ '@modern-js/plugin-garfish': '@modern-js/plugin-garfish/cli',
75
+ '@modern-js/plugin-tailwindcss': '@modern-js/plugin-tailwindcss/cli',
76
+ '@modern-js/plugin-polyfill': '@modern-js/plugin-polyfill/cli',
105
77
  // TODO: Maybe can remove it
106
- '@modern-js/plugin-nocode': { cli: '@modern-js/plugin-nocode/cli' },
78
+ '@modern-js/plugin-nocode': '@modern-js/plugin-nocode/cli',
79
+ // legacy router (inner react-router-dom v5)
80
+ '@modern-js/plugin-router-legacy': '@modern-js/plugin-router-legacy/cli',
81
+ };
82
+ exports.INTERNAL_SERVER_PLUGINS = {
83
+ '@modern-js/plugin-bff': '@modern-js/plugin-bff/server',
84
+ '@modern-js/plugin-express': '@modern-js/plugin-express',
85
+ '@modern-js/plugin-egg': '@modern-js/plugin-egg',
86
+ '@modern-js/plugin-koa': '@modern-js/plugin-koa',
87
+ '@modern-js/plugin-nest': '@modern-js/plugin-nest/server',
88
+ '@modern-js/plugin-server': '@modern-js/plugin-server/server',
89
+ '@modern-js/plugin-polyfill': '@modern-js/plugin-polyfill',
107
90
  };
108
91
  /**
109
92
  * The schema registered in the plugin.
@@ -143,24 +126,6 @@ exports.PLUGIN_SCHEMAS = {
143
126
  },
144
127
  },
145
128
  ],
146
- '@modern-js/plugin-esbuild': [
147
- {
148
- target: 'tools.esbuild',
149
- schema: { typeof: ['object'] },
150
- },
151
- ],
152
- '@modern-js/plugin-less': [
153
- {
154
- target: 'tools.less',
155
- schema: { typeof: ['object', 'function'] },
156
- },
157
- ],
158
- '@modern-js/plugin-sass': [
159
- {
160
- target: 'tools.sass',
161
- schema: { typeof: ['object', 'function'] },
162
- },
163
- ],
164
129
  '@modern-js/plugin-tailwindcss': [
165
130
  {
166
131
  target: 'tools.tailwindcss',
@@ -173,28 +138,6 @@ exports.PLUGIN_SCHEMAS = {
173
138
  schema: { typeof: ['string', 'object'] },
174
139
  },
175
140
  ],
176
- // TODO: remove unbundle configs after we completely deprecate it.
177
- '@modern-js/plugin-unbundle': [
178
- {
179
- target: 'output.disableAutoImportStyle',
180
- schema: { type: 'boolean' },
181
- },
182
- {
183
- target: 'dev.unbundle',
184
- schema: {
185
- type: 'object',
186
- properties: {
187
- ignore: {
188
- type: ['string', 'array'],
189
- items: { type: 'string' },
190
- },
191
- ignoreModuleCache: { type: 'boolean' },
192
- clearPdnCache: { type: 'boolean' },
193
- pdnHost: { type: 'string' },
194
- },
195
- },
196
- },
197
- ],
198
141
  '@modern-js/plugin-ssg': [
199
142
  {
200
143
  target: 'output.ssg',
package/dist/format.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * https://github.com/facebook/create-react-app/blob/master/LICENSE
7
7
  */
8
8
  import type { StatsCompilation } from 'webpack';
9
- declare function formatWebpackMessages(json: StatsCompilation): {
9
+ declare function formatWebpackMessages(json?: StatsCompilation): {
10
10
  errors: string[];
11
11
  warnings: string[];
12
12
  };
package/dist/format.js CHANGED
@@ -69,8 +69,8 @@ function formatMessage(stats) {
69
69
  }
70
70
  function formatWebpackMessages(json) {
71
71
  var _a, _b, _c;
72
- const formattedErrors = (_a = json.errors) === null || _a === void 0 ? void 0 : _a.map(formatMessage);
73
- const formattedWarnings = (_b = json.warnings) === null || _b === void 0 ? void 0 : _b.map(formatMessage);
72
+ const formattedErrors = (_a = json === null || json === void 0 ? void 0 : json.errors) === null || _a === void 0 ? void 0 : _a.map(formatMessage);
73
+ const formattedWarnings = (_b = json === null || json === void 0 ? void 0 : json.warnings) === null || _b === void 0 ? void 0 : _b.map(formatMessage);
74
74
  const result = {
75
75
  errors: formattedErrors || [],
76
76
  warnings: formattedWarnings || [],
package/dist/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export * from './getPackageManager';
21
21
  export * from './runtimeExports';
22
22
  export * from './readTsConfig';
23
23
  export * from './path';
24
+ export * from './pathSerializer';
24
25
  export * from './generateMetaTags';
25
26
  export * from './prettyInstructions';
26
27
  export * from './alias';
@@ -35,3 +36,5 @@ export * from './tryResolve';
35
36
  export * from './analyzeProject';
36
37
  export * from './chainId';
37
38
  export * from './version';
39
+ export * from './plugin';
40
+ export * from './routes';
package/dist/index.js CHANGED
@@ -37,6 +37,7 @@ __exportStar(require("./getPackageManager"), exports);
37
37
  __exportStar(require("./runtimeExports"), exports);
38
38
  __exportStar(require("./readTsConfig"), exports);
39
39
  __exportStar(require("./path"), exports);
40
+ __exportStar(require("./pathSerializer"), exports);
40
41
  __exportStar(require("./generateMetaTags"), exports);
41
42
  __exportStar(require("./prettyInstructions"), exports);
42
43
  __exportStar(require("./alias"), exports);
@@ -51,3 +52,5 @@ __exportStar(require("./tryResolve"), exports);
51
52
  __exportStar(require("./analyzeProject"), exports);
52
53
  __exportStar(require("./chainId"), exports);
53
54
  __exportStar(require("./version"), exports);
55
+ __exportStar(require("./plugin"), exports);
56
+ __exportStar(require("./routes"), exports);
package/dist/is/index.js CHANGED
@@ -20,7 +20,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.isFastRefresh = exports.isUseSSRBundle = exports.isSSR = exports.isEmpty = exports.isTypescript = exports.isDepExists = void 0;
21
21
  const fs_1 = __importDefault(require("fs"));
22
22
  const path_1 = __importDefault(require("path"));
23
+ const debug_1 = require("../debug");
23
24
  const node_env_1 = require("./node-env");
25
+ const debug = (0, debug_1.createDebugger)('judge-depExists');
24
26
  /**
25
27
  * Check if the package name is in dependencies or devDependencies.
26
28
  *
@@ -29,7 +31,12 @@ const node_env_1 = require("./node-env");
29
31
  * @returns True if the name is in dependencies or devDependencies, false otherwise.
30
32
  */
31
33
  const isDepExists = (appDirectory, name) => {
32
- const json = require(path_1.default.resolve(appDirectory, './package.json'));
34
+ const pkgPath = path_1.default.resolve(appDirectory, './package.json');
35
+ if (!fs_1.default.existsSync(pkgPath)) {
36
+ debug(`can't find package.json under: %s`, appDirectory);
37
+ return false;
38
+ }
39
+ const json = require(pkgPath);
33
40
  const { dependencies = {}, devDependencies = {} } = json;
34
41
  return (dependencies.hasOwnProperty(name) || devDependencies.hasOwnProperty(name));
35
42
  };
package/dist/path.d.ts CHANGED
@@ -1,5 +1,16 @@
1
+ import { lodash as _ } from './compiled';
1
2
  export declare const isPathString: (test: string) => boolean;
2
3
  export declare const isRelativePath: (test: string) => boolean;
3
4
  export declare const normalizeOutputPath: (s: string) => string;
4
5
  export declare const normalizeToPosixPath: (p: string | undefined) => string;
5
6
  export declare const getTemplatePath: (prefix?: string) => string;
7
+ /**
8
+ * Compile path string to RegExp.
9
+ * @note Only support posix path.
10
+ */
11
+ export declare function compilePathMatcherRegExp(match: string | RegExp): RegExp;
12
+ /** @internal @see {@link upwardPaths} */
13
+ export declare const _joinPathParts: (_part: unknown, i: number, parts: _.List<string>) => string;
14
+ export declare function upwardPaths(start: string): string[];
15
+ export declare function getRealTemporaryDirectory(): string | null;
16
+ export declare function splitPathString(str: string): string[];
package/dist/path.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getTemplatePath = exports.normalizeToPosixPath = exports.normalizeOutputPath = exports.isRelativePath = exports.isPathString = void 0;
6
+ exports.splitPathString = exports.getRealTemporaryDirectory = exports.upwardPaths = exports._joinPathParts = exports.compilePathMatcherRegExp = exports.getTemplatePath = exports.normalizeToPosixPath = exports.normalizeOutputPath = exports.isRelativePath = exports.isPathString = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const fs_1 = __importDefault(require("fs"));
@@ -26,3 +26,46 @@ const getTemplatePath = (prefix) => {
26
26
  return path_1.default.resolve(...parts);
27
27
  };
28
28
  exports.getTemplatePath = getTemplatePath;
29
+ /**
30
+ * Compile path string to RegExp.
31
+ * @note Only support posix path.
32
+ */
33
+ function compilePathMatcherRegExp(match) {
34
+ if (typeof match !== 'string') {
35
+ return match;
36
+ }
37
+ const escaped = compiled_1.lodash.escapeRegExp(match);
38
+ return new RegExp(`(?<=\\W|^)${escaped}(?=\\W|$)`);
39
+ }
40
+ exports.compilePathMatcherRegExp = compilePathMatcherRegExp;
41
+ /** @internal @see {@link upwardPaths} */
42
+ const _joinPathParts = (_part, i, parts) => (0, compiled_1.lodash)(parts)
43
+ .filter(part => !['/', '\\'].includes(part))
44
+ .tap(parts => parts.unshift(''))
45
+ .slice(0, i + 2)
46
+ .join('/');
47
+ exports._joinPathParts = _joinPathParts;
48
+ function upwardPaths(start) {
49
+ return (0, compiled_1.lodash)(start)
50
+ .split(/[/\\]/)
51
+ .filter(Boolean)
52
+ .map(exports._joinPathParts)
53
+ .reverse()
54
+ .push('/')
55
+ .value();
56
+ }
57
+ exports.upwardPaths = upwardPaths;
58
+ function getRealTemporaryDirectory() {
59
+ let ret = null;
60
+ try {
61
+ ret = os_1.default.tmpdir();
62
+ ret = fs_1.default.realpathSync(ret);
63
+ }
64
+ catch { }
65
+ return ret;
66
+ }
67
+ exports.getRealTemporaryDirectory = getRealTemporaryDirectory;
68
+ function splitPathString(str) {
69
+ return str.split(/[\\/]/);
70
+ }
71
+ exports.splitPathString = splitPathString;
@@ -0,0 +1,16 @@
1
+ /** Different from */
2
+ export declare type PathMatchExpression = string | RegExp;
3
+ export interface PathMatcher {
4
+ match: PathMatchExpression;
5
+ mark: string | ((substring: string, ...args: any[]) => string);
6
+ }
7
+ export declare const matchUpwardPathsAsUnknown: (p: string) => {
8
+ match: string;
9
+ mark: string;
10
+ }[];
11
+ export interface ApplyPathMatcherOptions {
12
+ minPartials?: number;
13
+ }
14
+ export declare function applyPathMatcher(matcher: PathMatcher, str: string, options?: ApplyPathMatcherOptions): string;
15
+ export declare function applyMatcherReplacement(matchers: PathMatcher[], str: string, options?: ApplyPathMatcherOptions): string;
16
+ export declare const createDefaultPathMatchers: (root: string) => PathMatcher[];
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createDefaultPathMatchers = exports.applyMatcherReplacement = exports.applyPathMatcher = exports.matchUpwardPathsAsUnknown = void 0;
7
+ const os_1 = __importDefault(require("os"));
8
+ const lodash_1 = __importDefault(require("../compiled/lodash"));
9
+ const path_1 = require("./path");
10
+ const matchUpwardPathsAsUnknown = (p) => (0, lodash_1.default)((0, path_1.upwardPaths)((0, path_1.normalizeToPosixPath)(p)))
11
+ .map(match => ({ match, mark: 'unknown' }))
12
+ .slice(1, -1)
13
+ .value();
14
+ exports.matchUpwardPathsAsUnknown = matchUpwardPathsAsUnknown;
15
+ function applyPathMatcher(matcher, str, options = {}) {
16
+ const regex = (0, path_1.compilePathMatcherRegExp)(matcher.match);
17
+ const replacer = (substring, ...args) => {
18
+ if (options.minPartials &&
19
+ (0, path_1.splitPathString)(substring).length < options.minPartials) {
20
+ return substring;
21
+ }
22
+ const ret = typeof matcher.mark === 'string'
23
+ ? matcher.mark
24
+ : matcher.mark(substring, ...args);
25
+ return `<${lodash_1.default.snakeCase(ret).toUpperCase()}>`;
26
+ };
27
+ return str.replace(regex, replacer);
28
+ }
29
+ exports.applyPathMatcher = applyPathMatcher;
30
+ function applyMatcherReplacement(matchers, str, options = {}) {
31
+ return matchers.reduce((ret, matcher) => {
32
+ return applyPathMatcher(matcher, ret, options);
33
+ }, str);
34
+ }
35
+ exports.applyMatcherReplacement = applyMatcherReplacement;
36
+ const createDefaultPathMatchers = (root) => {
37
+ const ret = [
38
+ {
39
+ match: /(?<=\/)(\.pnpm\/.+?\/node_modules)(?=\/)/,
40
+ mark: 'pnpmInner',
41
+ },
42
+ ];
43
+ const tmpdir = (0, path_1.getRealTemporaryDirectory)();
44
+ tmpdir && ret.push({ match: tmpdir, mark: 'temp' });
45
+ ret.push({ match: os_1.default.tmpdir(), mark: 'temp' });
46
+ ret.push({ match: os_1.default.homedir(), mark: 'home' });
47
+ ret.push(...(0, exports.matchUpwardPathsAsUnknown)(root));
48
+ return ret;
49
+ };
50
+ exports.createDefaultPathMatchers = createDefaultPathMatchers;
@@ -0,0 +1,2 @@
1
+ import { InternalPlugins } from '@modern-js/types';
2
+ export declare function getInternalPlugins(appDirectory: string, internalPlugins?: InternalPlugins): string[];
package/dist/plugin.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getInternalPlugins = void 0;
4
+ const constants_1 = require("./constants");
5
+ const is_1 = require("./is");
6
+ function getInternalPlugins(appDirectory, internalPlugins = constants_1.INTERNAL_CLI_PLUGINS) {
7
+ return [
8
+ ...Object.keys(internalPlugins)
9
+ .filter(name => {
10
+ const config = internalPlugins[name];
11
+ if (typeof config !== 'string' && config.forced === true) {
12
+ return true;
13
+ }
14
+ return (0, is_1.isDepExists)(appDirectory, name);
15
+ })
16
+ .map(name => {
17
+ const config = internalPlugins[name];
18
+ if (typeof config !== 'string') {
19
+ return config.path;
20
+ }
21
+ else {
22
+ return config;
23
+ }
24
+ }),
25
+ ];
26
+ }
27
+ exports.getInternalPlugins = getInternalPlugins;
@@ -0,0 +1,2 @@
1
+ export declare const getPathWithoutExt: (filename: string) => string;
2
+ export declare const getRouteId: (componentPath: string, routesDir: string) => string;
package/dist/routes.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getRouteId = exports.getPathWithoutExt = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const path_2 = require("./path");
9
+ const getPathWithoutExt = (filename) => {
10
+ const extname = path_1.default.extname(filename);
11
+ return filename.slice(0, -extname.length);
12
+ };
13
+ exports.getPathWithoutExt = getPathWithoutExt;
14
+ const getRouteId = (componentPath, routesDir) => {
15
+ const relativePath = (0, path_2.normalizeToPosixPath)(path_1.default.relative(routesDir, componentPath));
16
+ const id = (0, exports.getPathWithoutExt)(relativePath);
17
+ return id;
18
+ };
19
+ exports.getRouteId = getRouteId;
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.21.2",
14
+ "version": "2.0.0-beta.0",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/index.d.ts",
17
17
  "main": "./dist/index.js",
@@ -129,9 +129,9 @@
129
129
  "lodash": "^4.17.21"
130
130
  },
131
131
  "devDependencies": {
132
- "@modern-js/types": "1.21.2",
133
- "@scripts/build": "1.21.2",
134
- "@scripts/jest-config": "1.21.2",
132
+ "@modern-js/types": "2.0.0-beta.0",
133
+ "@scripts/build": "2.0.0-beta.0",
134
+ "@scripts/jest-config": "2.0.0-beta.0",
135
135
  "@types/jest": "^27",
136
136
  "@types/node": "^14",
137
137
  "typescript": "^4",
@@ -139,33 +139,10 @@
139
139
  "webpack": "^5.74.0"
140
140
  },
141
141
  "sideEffects": false,
142
- "wireit": {
143
- "build": {
144
- "command": "tsc",
145
- "files": [
146
- "src/**/*",
147
- "tsconfig.json",
148
- "package.json"
149
- ],
150
- "output": [
151
- "dist/**/*"
152
- ]
153
- },
154
- "test": {
155
- "command": "jest --passWithNoTests",
156
- "files": [
157
- "src/**/*",
158
- "tsconfig.json",
159
- "package.json",
160
- "tests/**/*"
161
- ],
162
- "output": []
163
- }
164
- },
165
142
  "scripts": {
166
143
  "new": "modern new",
167
144
  "dev": "tsc --watch",
168
- "build": "wireit",
169
- "test": "wireit"
145
+ "build": "tsc",
146
+ "test": "jest --passWithNoTests"
170
147
  }
171
148
  }