@modern-js/core 2.0.0-beta.0 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +128 -0
- package/dist/bin.js +1 -4
- package/dist/config/createLoadedConfig.d.ts +6 -0
- package/dist/config/createLoadedConfig.js +35 -0
- package/dist/config/createResolvedConfig.d.ts +3 -0
- package/dist/config/createResolvedConfig.js +92 -0
- package/dist/config/index.d.ts +2 -17
- package/dist/config/index.js +2 -136
- package/dist/context.d.ts +5 -9
- package/dist/index.d.ts +12 -14
- package/dist/index.js +30 -58
- package/dist/loadPlugins.d.ts +2 -12
- package/dist/loadPlugins.js +12 -5
- package/dist/manager.d.ts +80 -64
- package/dist/manager.js +11 -5
- package/dist/schema/patchSchema.d.ts +19 -0
- package/dist/{config/schema/index.js → schema/patchSchema.js} +8 -45
- package/dist/schema/source.d.ts +9 -0
- package/dist/schema/source.js +10 -0
- package/dist/schema/testing.d.ts +13 -0
- package/dist/schema/testing.js +11 -0
- package/dist/schema/traverseSchema.d.ts +2 -0
- package/dist/schema/traverseSchema.js +20 -0
- package/dist/types/config/index.d.ts +41 -0
- package/dist/{config/types → types/config}/index.js +0 -0
- package/dist/types/config/testing.d.ts +15 -0
- package/dist/{config/types/electron.js → types/config/testing.js} +0 -0
- package/dist/types/context.d.ts +26 -0
- package/dist/{config/types/less.js → types/context.js} +0 -0
- package/dist/types/hooks.d.ts +26 -0
- package/dist/{config/types/postcss.js → types/hooks.js} +0 -0
- package/dist/types/index.d.ts +10 -1
- package/dist/types/index.js +5 -1
- package/dist/types/plugin.d.ts +26 -0
- package/dist/{config/types/sass.js → types/plugin.js} +0 -0
- package/dist/types/pluginAPI.d.ts +18 -0
- package/dist/{config/types/ssg.js → types/pluginAPI.js} +0 -0
- package/dist/utils/mergeConfig.d.ts +2 -0
- package/dist/{config → utils}/mergeConfig.js +1 -8
- package/dist/utils/repeatKeyWarning.d.ts +2 -2
- package/dist/utils/repeatKeyWarning.js +2 -2
- package/package.json +17 -10
- package/compiled/v8-compile-cache/index.d.ts +0 -1
- package/compiled/v8-compile-cache/index.js +0 -1
- package/compiled/v8-compile-cache/license +0 -21
- package/compiled/v8-compile-cache/package.json +0 -1
- package/dist/config/defaults.d.ts +0 -29
- package/dist/config/defaults.js +0 -110
- package/dist/config/mergeConfig.d.ts +0 -32
- package/dist/config/schema/deploy.d.ts +0 -16
- package/dist/config/schema/deploy.js +0 -16
- package/dist/config/schema/index.d.ts +0 -499
- package/dist/config/schema/output.d.ts +0 -146
- package/dist/config/schema/output.js +0 -68
- package/dist/config/schema/server.d.ts +0 -194
- package/dist/config/schema/server.js +0 -111
- package/dist/config/schema/source.d.ts +0 -64
- package/dist/config/schema/source.js +0 -38
- package/dist/config/schema/tools.d.ts +0 -51
- package/dist/config/schema/tools.js +0 -24
- package/dist/config/types/electron.d.ts +0 -13
- package/dist/config/types/index.d.ts +0 -260
- package/dist/config/types/less.d.ts +0 -12
- package/dist/config/types/postcss.d.ts +0 -28
- package/dist/config/types/sass.d.ts +0 -10
- package/dist/config/types/ssg.d.ts +0 -15
- package/dist/config/types/test.d.ts +0 -14
- package/dist/config/types/test.js +0 -2
- package/dist/config/types/ts-loader.d.ts +0 -23
- package/dist/config/types/ts-loader.js +0 -2
- package/dist/initWatcher.d.ts +0 -3
- package/dist/initWatcher.js +0 -66
- package/dist/pluginAPI.d.ts +0 -13
- package/dist/pluginAPI.js +0 -16
- package/dist/types/cli.d.ts +0 -59
- package/dist/types/cli.js +0 -2
package/dist/index.js
CHANGED
|
@@ -21,14 +21,13 @@ exports.initAppContext = exports.initAppDir = exports.cli = exports.mergeOptions
|
|
|
21
21
|
const path_1 = __importDefault(require("path"));
|
|
22
22
|
const utils_1 = require("@modern-js/utils");
|
|
23
23
|
const commander_1 = require("./utils/commander");
|
|
24
|
-
const config_1 = require("./config");
|
|
25
24
|
const loadPlugins_1 = require("./loadPlugins");
|
|
26
25
|
const context_1 = require("./context");
|
|
27
26
|
Object.defineProperty(exports, "initAppContext", { enumerable: true, get: function () { return context_1.initAppContext; } });
|
|
28
|
-
const initWatcher_1 = require("./initWatcher");
|
|
29
27
|
const loadEnv_1 = require("./loadEnv");
|
|
30
28
|
const manager_1 = require("./manager");
|
|
31
|
-
|
|
29
|
+
const config_1 = require("./config");
|
|
30
|
+
__exportStar(require("./types"), exports);
|
|
32
31
|
__exportStar(require("@modern-js/plugin"), exports);
|
|
33
32
|
// TODO: remove export after refactor all plugins
|
|
34
33
|
var manager_2 = require("./manager");
|
|
@@ -36,14 +35,13 @@ Object.defineProperty(exports, "manager", { enumerable: true, get: function () {
|
|
|
36
35
|
Object.defineProperty(exports, "mountHook", { enumerable: true, get: function () { return manager_2.mountHook; } });
|
|
37
36
|
Object.defineProperty(exports, "createPlugin", { enumerable: true, get: function () { return manager_2.createPlugin; } });
|
|
38
37
|
Object.defineProperty(exports, "registerHook", { enumerable: true, get: function () { return manager_2.registerHook; } });
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Object.defineProperty(exports, "
|
|
42
|
-
Object.defineProperty(exports, "
|
|
43
|
-
Object.defineProperty(exports, "
|
|
44
|
-
Object.defineProperty(exports, "
|
|
45
|
-
Object.defineProperty(exports, "
|
|
46
|
-
Object.defineProperty(exports, "useResolvedConfigContext", { enumerable: true, get: function () { return pluginAPI_1.useResolvedConfigContext; } });
|
|
38
|
+
var context_2 = require("./context");
|
|
39
|
+
Object.defineProperty(exports, "AppContext", { enumerable: true, get: function () { return context_2.AppContext; } });
|
|
40
|
+
Object.defineProperty(exports, "ConfigContext", { enumerable: true, get: function () { return context_2.ConfigContext; } });
|
|
41
|
+
Object.defineProperty(exports, "ResolvedConfigContext", { enumerable: true, get: function () { return context_2.ResolvedConfigContext; } });
|
|
42
|
+
Object.defineProperty(exports, "useAppContext", { enumerable: true, get: function () { return context_2.useAppContext; } });
|
|
43
|
+
Object.defineProperty(exports, "useConfigContext", { enumerable: true, get: function () { return context_2.useConfigContext; } });
|
|
44
|
+
Object.defineProperty(exports, "useResolvedConfigContext", { enumerable: true, get: function () { return context_2.useResolvedConfigContext; } });
|
|
47
45
|
const initAppDir = async (cwd) => {
|
|
48
46
|
if (!cwd) {
|
|
49
47
|
// eslint-disable-next-line no-param-reassign
|
|
@@ -71,21 +69,19 @@ const setProgramVersion = (version = 'unknown') => {
|
|
|
71
69
|
};
|
|
72
70
|
const createCli = () => {
|
|
73
71
|
let hooksRunner;
|
|
74
|
-
let
|
|
75
|
-
|
|
76
|
-
let restartOptions;
|
|
77
|
-
const init = async (argv = [], options) => {
|
|
72
|
+
let initOptions;
|
|
73
|
+
const init = async (options) => {
|
|
78
74
|
var _a, _b, _c, _d;
|
|
79
75
|
manager_1.manager.clear();
|
|
80
76
|
const mergedOptions = (0, exports.mergeOptions)(options);
|
|
81
|
-
|
|
82
|
-
const appDirectory = await initAppDir();
|
|
77
|
+
initOptions = mergedOptions;
|
|
78
|
+
const appDirectory = await initAppDir(options === null || options === void 0 ? void 0 : options.cwd);
|
|
83
79
|
(0, commander_1.initCommandsMap)();
|
|
84
80
|
setProgramVersion(options === null || options === void 0 ? void 0 : options.version);
|
|
85
81
|
const metaName = (_b = (_a = mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.options) === null || _a === void 0 ? void 0 : _a.metaName) !== null && _b !== void 0 ? _b : 'MODERN';
|
|
86
82
|
(0, loadEnv_1.loadEnv)(appDirectory, process.env[`${metaName.toUpperCase()}_ENV`]);
|
|
87
|
-
const loaded = await (0, config_1.
|
|
88
|
-
const plugins = (0, loadPlugins_1.loadPlugins)(appDirectory, loaded.config, {
|
|
83
|
+
const loaded = await (0, config_1.createLoadedConfig)(appDirectory, mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.configFile, mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.packageJsonConfig);
|
|
84
|
+
const plugins = await (0, loadPlugins_1.loadPlugins)(appDirectory, loaded.config, {
|
|
89
85
|
internalPlugins: (_c = mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.internalPlugins) === null || _c === void 0 ? void 0 : _c.cli,
|
|
90
86
|
transformPlugin: mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.transformPlugin,
|
|
91
87
|
});
|
|
@@ -98,8 +94,6 @@ const createCli = () => {
|
|
|
98
94
|
serverConfigFile: mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.serverConfigFile,
|
|
99
95
|
serverInternalPlugins: ((_d = mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.internalPlugins) === null || _d === void 0 ? void 0 : _d.server) || utils_1.INTERNAL_SERVER_PLUGINS,
|
|
100
96
|
});
|
|
101
|
-
// 将 server.config 加入到 loaded.dependencies,以便对文件监听做热更新
|
|
102
|
-
(0, config_1.addServerConfigToDeps)(loaded.dependencies, appDirectory, mergedOptions.serverConfigFile);
|
|
103
97
|
context_1.ConfigContext.set(loaded.config);
|
|
104
98
|
context_1.AppContext.set(appContext);
|
|
105
99
|
hooksRunner = await manager_1.manager.init();
|
|
@@ -117,57 +111,35 @@ const createCli = () => {
|
|
|
117
111
|
});
|
|
118
112
|
const extraConfigs = await hooksRunner.config();
|
|
119
113
|
const extraSchemas = await hooksRunner.validateSchema();
|
|
120
|
-
const
|
|
114
|
+
const normalizedConfig = await (0, config_1.createResolveConfig)(loaded, extraConfigs, extraSchemas, options === null || options === void 0 ? void 0 : options.onSchemaError);
|
|
121
115
|
const { resolved } = await hooksRunner.resolvedConfig({
|
|
122
|
-
resolved:
|
|
116
|
+
resolved: normalizedConfig,
|
|
123
117
|
});
|
|
118
|
+
// FIXME: Why need to configContext again?
|
|
124
119
|
// update context value
|
|
125
120
|
context_1.ConfigContext.set(loaded.config);
|
|
126
121
|
context_1.ResolvedConfigContext.set(resolved);
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
port: resolved.server.port,
|
|
130
|
-
distDirectory: (0, utils_1.ensureAbsolutePath)(appDirectory, resolved.output.path),
|
|
131
|
-
});
|
|
122
|
+
// TODO: confirm the `addRuntimeExports` run order
|
|
123
|
+
await hooksRunner.addRuntimeExports();
|
|
132
124
|
await hooksRunner.prepare();
|
|
133
|
-
return {
|
|
134
|
-
loadedConfig: loaded,
|
|
135
|
-
// appContext may be updated in `prepare` hook, should return latest value
|
|
136
|
-
appContext: (0, context_1.useAppContext)(),
|
|
137
|
-
resolved,
|
|
138
|
-
};
|
|
139
125
|
};
|
|
140
|
-
async function run(
|
|
141
|
-
|
|
126
|
+
async function run(options) {
|
|
127
|
+
await init(options);
|
|
142
128
|
await hooksRunner.commands({ program: utils_1.program });
|
|
143
|
-
(0, initWatcher_1.initWatcher)(loadedConfig, appContext.appDirectory, resolved.source.configDir, hooksRunner, argv);
|
|
144
129
|
utils_1.program.parse(process.argv);
|
|
145
130
|
}
|
|
146
|
-
async function
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const runner = manager_1.manager.useRunner();
|
|
153
|
-
await runner.beforeRestart();
|
|
154
|
-
try {
|
|
155
|
-
await init(process.argv.slice(2), restartOptions);
|
|
156
|
-
}
|
|
157
|
-
catch (err) {
|
|
158
|
-
console.error(err);
|
|
159
|
-
hasGetError = true;
|
|
160
|
-
}
|
|
161
|
-
finally {
|
|
162
|
-
if (!hasGetError) {
|
|
163
|
-
utils_1.program.parse(process.argv);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
131
|
+
async function test(argv, options) {
|
|
132
|
+
const newProgram = new utils_1.Command();
|
|
133
|
+
const { coreOptions } = options !== null && options !== void 0 ? options : {};
|
|
134
|
+
await init(coreOptions);
|
|
135
|
+
await hooksRunner.commands({ program: newProgram });
|
|
136
|
+
await newProgram.parseAsync(argv);
|
|
166
137
|
}
|
|
167
138
|
return {
|
|
168
139
|
init,
|
|
169
140
|
run,
|
|
170
|
-
|
|
141
|
+
test,
|
|
142
|
+
initOptions,
|
|
171
143
|
};
|
|
172
144
|
};
|
|
173
145
|
exports.cli = createCli();
|
package/dist/loadPlugins.d.ts
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import { InternalPlugins } from '@modern-js/types';
|
|
2
|
-
import type { UserConfig } from './
|
|
3
|
-
import { CliPlugin } from './manager';
|
|
4
|
-
declare type PluginItem = string | [string, any];
|
|
2
|
+
import type { CliPlugin, UserConfig, OldPluginConfig, PluginConfig } from './types';
|
|
5
3
|
export declare type TransformPlugin = (plugin: PluginConfig, resolvedConfig: UserConfig, pluginOptions?: any) => PluginConfig;
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated
|
|
8
|
-
* Using NewPluginConfig instead.
|
|
9
|
-
*/
|
|
10
|
-
declare type OldPluginConfig = Array<PluginItem>;
|
|
11
|
-
export declare type NewPluginConfig<T = {}> = CliPlugin<T>[];
|
|
12
|
-
export declare type PluginConfig = OldPluginConfig | NewPluginConfig;
|
|
13
4
|
export declare const isOldPluginConfig: (config?: PluginConfig) => config is OldPluginConfig;
|
|
14
5
|
/**
|
|
15
6
|
* Load internal plugins which in @modern-js scope and user's custom plugins.
|
|
@@ -22,5 +13,4 @@ export declare const isOldPluginConfig: (config?: PluginConfig) => config is Old
|
|
|
22
13
|
export declare const loadPlugins: (appDirectory: string, userConfig: UserConfig, options?: {
|
|
23
14
|
internalPlugins?: InternalPlugins;
|
|
24
15
|
transformPlugin?: TransformPlugin;
|
|
25
|
-
}) => CliPlugin<{}>[]
|
|
26
|
-
export {};
|
|
16
|
+
}) => Promise<CliPlugin<{}, {}, {}, {}>[]>;
|
package/dist/loadPlugins.js
CHANGED
|
@@ -4,11 +4,18 @@ exports.loadPlugins = exports.isOldPluginConfig = void 0;
|
|
|
4
4
|
const utils_1 = require("@modern-js/utils");
|
|
5
5
|
const manager_1 = require("./manager");
|
|
6
6
|
const debug = (0, utils_1.createDebugger)('load-plugins');
|
|
7
|
-
const resolveCliPlugin = (p, userConfig, appDirectory, transformPlugin) => {
|
|
7
|
+
const resolveCliPlugin = async (p, userConfig, appDirectory, transformPlugin) => {
|
|
8
8
|
const pkg = typeof p === 'string' ? p : p[0];
|
|
9
9
|
const pluginOptions = typeof p === 'string' ? undefined : p[1];
|
|
10
10
|
const path = (0, utils_1.tryResolve)(pkg, appDirectory);
|
|
11
|
-
let module
|
|
11
|
+
let module;
|
|
12
|
+
try {
|
|
13
|
+
module = (0, utils_1.compatRequire)(path);
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
// load esm module
|
|
17
|
+
({ default: module } = await (0, utils_1.dynamicImport)(path));
|
|
18
|
+
}
|
|
12
19
|
if (transformPlugin) {
|
|
13
20
|
module = transformPlugin(module, userConfig, pluginOptions);
|
|
14
21
|
}
|
|
@@ -31,18 +38,18 @@ exports.isOldPluginConfig = isOldPluginConfig;
|
|
|
31
38
|
* @param options.transformPlugin - transform plugin before using it. Used for compatible with legacy jupiter plugins.
|
|
32
39
|
* @returns Plugin Objects has been required.
|
|
33
40
|
*/
|
|
34
|
-
const loadPlugins = (appDirectory, userConfig, options = {}) => {
|
|
41
|
+
const loadPlugins = async (appDirectory, userConfig, options = {}) => {
|
|
35
42
|
const pluginConfig = userConfig.plugins;
|
|
36
43
|
const plugins = [
|
|
37
44
|
...(0, utils_1.getInternalPlugins)(appDirectory, options.internalPlugins),
|
|
38
45
|
...((0, exports.isOldPluginConfig)(pluginConfig) ? pluginConfig : []),
|
|
39
46
|
];
|
|
40
|
-
const loadedPlugins = plugins.map(plugin => {
|
|
47
|
+
const loadedPlugins = await Promise.all(plugins.map(plugin => {
|
|
41
48
|
const loadedPlugin = resolveCliPlugin(plugin, userConfig, appDirectory, options.transformPlugin);
|
|
42
49
|
// server plugins don't support to accept params
|
|
43
50
|
debug(`resolve plugin %s: %s`, plugin, loadedPlugin);
|
|
44
51
|
return loadedPlugin;
|
|
45
|
-
});
|
|
52
|
+
}));
|
|
46
53
|
if (!(0, exports.isOldPluginConfig)(pluginConfig)) {
|
|
47
54
|
if (pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.length) {
|
|
48
55
|
loadedPlugins.push(...pluginConfig.map(item => (0, manager_1.createPlugin)(item.setup, item)));
|
package/dist/manager.d.ts
CHANGED
|
@@ -1,71 +1,87 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { pluginAPI } from './pluginAPI';
|
|
7
|
-
export declare type HooksRunner = ToRunners<{
|
|
8
|
-
config: ParallelWorkflow<void, UserConfig>;
|
|
9
|
-
resolvedConfig: AsyncWaterfall<{
|
|
10
|
-
resolved: NormalizedConfig;
|
|
1
|
+
import { BasePluginAPI } from './types';
|
|
2
|
+
export declare const manager: import("@modern-js/plugin").AsyncManager<{
|
|
3
|
+
config: import("@modern-js/plugin").ParallelWorkflow<void, import("./types").UserConfig<{}, {}, {}, {}>>;
|
|
4
|
+
resolvedConfig: import("@modern-js/plugin").AsyncWaterfall<{
|
|
5
|
+
resolved: import("./types").NormalizedConfig<{}, {}, {}, {}>;
|
|
11
6
|
}>;
|
|
12
|
-
validateSchema: ParallelWorkflow<void>;
|
|
13
|
-
prepare: AsyncWorkflow<void, void>;
|
|
14
|
-
commands: AsyncWorkflow<{
|
|
15
|
-
program: Command;
|
|
7
|
+
validateSchema: import("@modern-js/plugin").ParallelWorkflow<void, any>;
|
|
8
|
+
prepare: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
9
|
+
commands: import("@modern-js/plugin").AsyncWorkflow<{
|
|
10
|
+
program: import("@modern-js/utils").Command;
|
|
16
11
|
}, void>;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
beforeExit: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
13
|
+
addRuntimeExports: import("@modern-js/plugin").AsyncWaterfall<void>;
|
|
14
|
+
}, BasePluginAPI<{}, {}, {}, {}>>;
|
|
15
|
+
export declare const createPlugin: (setup?: import("@modern-js/plugin").AsyncSetup<{
|
|
16
|
+
config: import("@modern-js/plugin").ParallelWorkflow<void, import("./types").UserConfig<{}, {}, {}, {}>>;
|
|
17
|
+
resolvedConfig: import("@modern-js/plugin").AsyncWaterfall<{
|
|
18
|
+
resolved: import("./types").NormalizedConfig<{}, {}, {}, {}>;
|
|
19
|
+
}>;
|
|
20
|
+
validateSchema: import("@modern-js/plugin").ParallelWorkflow<void, any>;
|
|
21
|
+
prepare: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
22
|
+
commands: import("@modern-js/plugin").AsyncWorkflow<{
|
|
23
|
+
program: import("@modern-js/utils").Command;
|
|
21
24
|
}, void>;
|
|
22
|
-
beforeExit: AsyncWorkflow<void, void>;
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
resolved: NormalizedConfig;
|
|
25
|
+
beforeExit: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
26
|
+
addRuntimeExports: import("@modern-js/plugin").AsyncWaterfall<void>;
|
|
27
|
+
}, BasePluginAPI<{}, {}, {}, {}>> | undefined, options?: import("@modern-js/plugin").PluginOptions<{
|
|
28
|
+
config: import("@modern-js/plugin").ParallelWorkflow<void, import("./types").UserConfig<{}, {}, {}, {}>>;
|
|
29
|
+
resolvedConfig: import("@modern-js/plugin").AsyncWaterfall<{
|
|
30
|
+
resolved: import("./types").NormalizedConfig<{}, {}, {}, {}>;
|
|
29
31
|
}>;
|
|
30
|
-
validateSchema: ParallelWorkflow<void,
|
|
31
|
-
prepare: AsyncWorkflow<void, void>;
|
|
32
|
-
commands: AsyncWorkflow<{
|
|
33
|
-
program: Command;
|
|
32
|
+
validateSchema: import("@modern-js/plugin").ParallelWorkflow<void, any>;
|
|
33
|
+
prepare: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
34
|
+
commands: import("@modern-js/plugin").AsyncWorkflow<{
|
|
35
|
+
program: import("@modern-js/utils").Command;
|
|
34
36
|
}, void>;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
beforeExit: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
38
|
+
addRuntimeExports: import("@modern-js/plugin").AsyncWaterfall<void>;
|
|
39
|
+
}, import("@modern-js/plugin").AsyncSetup<{
|
|
40
|
+
config: import("@modern-js/plugin").ParallelWorkflow<void, import("./types").UserConfig<{}, {}, {}, {}>>;
|
|
41
|
+
resolvedConfig: import("@modern-js/plugin").AsyncWaterfall<{
|
|
42
|
+
resolved: import("./types").NormalizedConfig<{}, {}, {}, {}>;
|
|
43
|
+
}>;
|
|
44
|
+
validateSchema: import("@modern-js/plugin").ParallelWorkflow<void, any>;
|
|
45
|
+
prepare: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
46
|
+
commands: import("@modern-js/plugin").AsyncWorkflow<{
|
|
47
|
+
program: import("@modern-js/utils").Command;
|
|
48
|
+
}, void>;
|
|
49
|
+
beforeExit: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
50
|
+
addRuntimeExports: import("@modern-js/plugin").AsyncWaterfall<void>;
|
|
51
|
+
}, BasePluginAPI<{}, {}, {}, {}>>, Record<string, unknown>, any, any> | undefined) => import("@modern-js/plugin").AsyncPlugin<{
|
|
52
|
+
config: import("@modern-js/plugin").ParallelWorkflow<void, import("./types").UserConfig<{}, {}, {}, {}>>;
|
|
53
|
+
resolvedConfig: import("@modern-js/plugin").AsyncWaterfall<{
|
|
54
|
+
resolved: import("./types").NormalizedConfig<{}, {}, {}, {}>;
|
|
55
|
+
}>;
|
|
56
|
+
validateSchema: import("@modern-js/plugin").ParallelWorkflow<void, any>;
|
|
57
|
+
prepare: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
58
|
+
commands: import("@modern-js/plugin").AsyncWorkflow<{
|
|
59
|
+
program: import("@modern-js/utils").Command;
|
|
60
|
+
}, void>;
|
|
61
|
+
beforeExit: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
62
|
+
addRuntimeExports: import("@modern-js/plugin").AsyncWaterfall<void>;
|
|
63
|
+
}, BasePluginAPI<{}, {}, {}, {}>>, registerHook: (newHooks: Partial<{
|
|
64
|
+
config: import("@modern-js/plugin").ParallelWorkflow<void, import("./types").UserConfig<{}, {}, {}, {}>>;
|
|
65
|
+
resolvedConfig: import("@modern-js/plugin").AsyncWaterfall<{
|
|
66
|
+
resolved: import("./types").NormalizedConfig<{}, {}, {}, {}>;
|
|
67
|
+
}>;
|
|
68
|
+
validateSchema: import("@modern-js/plugin").ParallelWorkflow<void, any>;
|
|
69
|
+
prepare: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
70
|
+
commands: import("@modern-js/plugin").AsyncWorkflow<{
|
|
71
|
+
program: import("@modern-js/utils").Command;
|
|
72
|
+
}, void>;
|
|
73
|
+
beforeExit: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
74
|
+
addRuntimeExports: import("@modern-js/plugin").AsyncWaterfall<void>;
|
|
75
|
+
}>) => void, mountHook: () => import("@modern-js/plugin").ToRunners<{
|
|
76
|
+
config: import("@modern-js/plugin").ParallelWorkflow<void, import("./types").UserConfig<{}, {}, {}, {}>>;
|
|
77
|
+
resolvedConfig: import("@modern-js/plugin").AsyncWaterfall<{
|
|
78
|
+
resolved: import("./types").NormalizedConfig<{}, {}, {}, {}>;
|
|
79
|
+
}>;
|
|
80
|
+
validateSchema: import("@modern-js/plugin").ParallelWorkflow<void, any>;
|
|
81
|
+
prepare: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
82
|
+
commands: import("@modern-js/plugin").AsyncWorkflow<{
|
|
83
|
+
program: import("@modern-js/utils").Command;
|
|
39
84
|
}, void>;
|
|
40
|
-
beforeExit: AsyncWorkflow<void, void>;
|
|
41
|
-
|
|
42
|
-
};
|
|
43
|
-
/** All hooks of cli plugin. */
|
|
44
|
-
export declare type CliHooks = typeof baseHooks & Hooks;
|
|
45
|
-
/** All hook callbacks of cli plugin. */
|
|
46
|
-
export declare type CliHookCallbacks = ToThreads<CliHooks>;
|
|
47
|
-
export declare const manager: import("@modern-js/plugin").AsyncManager<CliHooks, {
|
|
48
|
-
setAppContext: (value: import("@modern-js/types/cli").IAppContext) => void;
|
|
49
|
-
useAppContext: () => import("@modern-js/types/cli").IAppContext;
|
|
50
|
-
useConfigContext: () => UserConfig;
|
|
51
|
-
useResolvedConfigContext: () => NormalizedConfig;
|
|
85
|
+
beforeExit: import("@modern-js/plugin").AsyncWorkflow<void, void>;
|
|
86
|
+
addRuntimeExports: import("@modern-js/plugin").AsyncWaterfall<void>;
|
|
52
87
|
}>;
|
|
53
|
-
/** Plugin options of a cli plugin. */
|
|
54
|
-
export declare type CliPlugin<ExtendHooks = {}> = PluginOptions<CliHooks, AsyncSetup<CliHooks & ExtendHooks, typeof pluginAPI>, ExtendHooks>;
|
|
55
|
-
export declare const createPlugin: (setup?: AsyncSetup<CliHooks, {
|
|
56
|
-
setAppContext: (value: import("@modern-js/types/cli").IAppContext) => void;
|
|
57
|
-
useAppContext: () => import("@modern-js/types/cli").IAppContext;
|
|
58
|
-
useConfigContext: () => UserConfig;
|
|
59
|
-
useResolvedConfigContext: () => NormalizedConfig;
|
|
60
|
-
}> | undefined, options?: PluginOptions<CliHooks, AsyncSetup<CliHooks, {
|
|
61
|
-
setAppContext: (value: import("@modern-js/types/cli").IAppContext) => void;
|
|
62
|
-
useAppContext: () => import("@modern-js/types/cli").IAppContext;
|
|
63
|
-
useConfigContext: () => UserConfig;
|
|
64
|
-
useResolvedConfigContext: () => NormalizedConfig;
|
|
65
|
-
}>, Record<string, unknown>> | undefined) => import("@modern-js/plugin").AsyncPlugin<CliHooks, {
|
|
66
|
-
setAppContext: (value: import("@modern-js/types/cli").IAppContext) => void;
|
|
67
|
-
useAppContext: () => import("@modern-js/types/cli").IAppContext;
|
|
68
|
-
useConfigContext: () => UserConfig;
|
|
69
|
-
useResolvedConfigContext: () => NormalizedConfig;
|
|
70
|
-
}>, registerHook: (newHooks: Partial<CliHooks>) => void, mountHook: () => ToRunners<CliHooks>;
|
|
71
|
-
export {};
|
package/dist/manager.js
CHANGED
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mountHook = exports.registerHook = exports.createPlugin = exports.manager = void 0;
|
|
4
4
|
const plugin_1 = require("@modern-js/plugin");
|
|
5
|
-
const
|
|
5
|
+
const context_1 = require("./context");
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
6
7
|
const baseHooks = {
|
|
7
8
|
config: (0, plugin_1.createParallelWorkflow)(),
|
|
8
9
|
resolvedConfig: (0, plugin_1.createAsyncWaterfall)(),
|
|
9
10
|
validateSchema: (0, plugin_1.createParallelWorkflow)(),
|
|
10
11
|
prepare: (0, plugin_1.createAsyncWorkflow)(),
|
|
11
12
|
commands: (0, plugin_1.createAsyncWorkflow)(),
|
|
12
|
-
watchFiles: (0, plugin_1.createParallelWorkflow)(),
|
|
13
|
-
fileChange: (0, plugin_1.createAsyncWorkflow)(),
|
|
14
13
|
beforeExit: (0, plugin_1.createAsyncWorkflow)(),
|
|
15
|
-
|
|
14
|
+
addRuntimeExports: (0, plugin_1.createAsyncWaterfall)(),
|
|
16
15
|
};
|
|
17
|
-
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
17
|
+
const pluginAPI = {
|
|
18
|
+
setAppContext: context_1.setAppContext,
|
|
19
|
+
useAppContext: context_1.useAppContext,
|
|
20
|
+
useConfigContext: context_1.useConfigContext,
|
|
21
|
+
useResolvedConfigContext: context_1.useResolvedConfigContext,
|
|
22
|
+
};
|
|
23
|
+
exports.manager = (0, plugin_1.createAsyncManager)(baseHooks, pluginAPI);
|
|
18
24
|
exports.createPlugin = exports.manager.createPlugin, exports.registerHook = exports.manager.registerHook, exports.mountHook = exports.manager.useRunner;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PluginValidateSchema } from '../types';
|
|
2
|
+
export declare const patchSchema: (pluginSchemas: Array<PluginValidateSchema | PluginValidateSchema[]>) => {
|
|
3
|
+
type: string;
|
|
4
|
+
properties: {
|
|
5
|
+
testing: {
|
|
6
|
+
type: string;
|
|
7
|
+
additionalProperties: boolean;
|
|
8
|
+
properties: {
|
|
9
|
+
transformer: {
|
|
10
|
+
type: string;
|
|
11
|
+
enum: string[];
|
|
12
|
+
};
|
|
13
|
+
jest: {
|
|
14
|
+
typeof: string[];
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -1,45 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.patchSchema = void 0;
|
|
4
4
|
const utils_1 = require("@modern-js/utils");
|
|
5
5
|
const lodash_1 = require("@modern-js/utils/lodash");
|
|
6
|
-
const
|
|
7
|
-
const output_1 = require("./output");
|
|
8
|
-
const server_1 = require("./server");
|
|
9
|
-
const deploy_1 = require("./deploy");
|
|
10
|
-
const tools_1 = require("./tools");
|
|
6
|
+
const testing_1 = require("./testing");
|
|
11
7
|
const debug = (0, utils_1.createDebugger)('validate-schema');
|
|
12
|
-
const plugins = {
|
|
13
|
-
type: 'array',
|
|
14
|
-
additionalProperties: false,
|
|
15
|
-
};
|
|
16
|
-
const dev = {
|
|
17
|
-
type: 'object',
|
|
18
|
-
properties: {
|
|
19
|
-
assetPrefix: { type: ['boolean', 'string'] },
|
|
20
|
-
https: {
|
|
21
|
-
type: 'boolean',
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
additionalProperties: false,
|
|
25
|
-
};
|
|
26
8
|
const patchSchema = (pluginSchemas) => {
|
|
27
9
|
const finalSchema = (0, lodash_1.cloneDeep)({
|
|
28
10
|
type: 'object',
|
|
29
|
-
additionalProperties: false,
|
|
30
11
|
properties: {
|
|
31
|
-
|
|
32
|
-
output: output_1.output,
|
|
33
|
-
server: server_1.server,
|
|
34
|
-
deploy: deploy_1.deploy,
|
|
35
|
-
plugins,
|
|
36
|
-
dev,
|
|
37
|
-
tools: tools_1.tools,
|
|
12
|
+
testing: testing_1.testing,
|
|
38
13
|
},
|
|
39
14
|
});
|
|
40
15
|
const findTargetNode = (props) => {
|
|
41
16
|
let node = finalSchema.properties;
|
|
42
17
|
for (const prop of props) {
|
|
18
|
+
if (!node[prop]) {
|
|
19
|
+
node[prop] = {
|
|
20
|
+
type: 'object',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
43
23
|
node = node[prop];
|
|
44
24
|
if (!node || !(0, utils_1.isObject)(node)) {
|
|
45
25
|
throw new Error(`add schema ${props.join('.')} error`);
|
|
@@ -75,20 +55,3 @@ const patchSchema = (pluginSchemas) => {
|
|
|
75
55
|
return finalSchema;
|
|
76
56
|
};
|
|
77
57
|
exports.patchSchema = patchSchema;
|
|
78
|
-
const traverseSchema = (schema) => {
|
|
79
|
-
const keys = [];
|
|
80
|
-
const traverse = ({ properties }, old = []) => {
|
|
81
|
-
for (const key of Object.keys(properties)) {
|
|
82
|
-
const current = [...old, key];
|
|
83
|
-
if (properties[key].type === 'object' && properties[key].properties) {
|
|
84
|
-
traverse(properties[key], current);
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
keys.push(current.join('.'));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
traverse(schema);
|
|
92
|
-
return keys;
|
|
93
|
-
};
|
|
94
|
-
exports.traverseSchema = traverseSchema;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.testing = void 0;
|
|
4
|
+
exports.testing = {
|
|
5
|
+
type: 'object',
|
|
6
|
+
additionalProperties: false,
|
|
7
|
+
properties: {
|
|
8
|
+
transformer: { type: 'string', enum: ['babel-jest', 'ts-jest'] },
|
|
9
|
+
jest: { typeof: ['object', 'function'] },
|
|
10
|
+
},
|
|
11
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.traverseSchema = void 0;
|
|
4
|
+
const traverseSchema = (schema) => {
|
|
5
|
+
const keys = [];
|
|
6
|
+
const traverse = ({ properties }, old = []) => {
|
|
7
|
+
for (const key of Object.keys(properties)) {
|
|
8
|
+
const current = [...old, key];
|
|
9
|
+
if (properties[key].type === 'object' && properties[key].properties) {
|
|
10
|
+
traverse(properties[key], current);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
keys.push(current.join('.'));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
traverse(schema);
|
|
18
|
+
return keys;
|
|
19
|
+
};
|
|
20
|
+
exports.traverseSchema = traverseSchema;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { PluginConfig } from '../plugin';
|
|
2
|
+
import type { BaseTestingNormalizedConfig, BaseTestingUserConfig } from './testing';
|
|
3
|
+
export type { Jest as JestConfig, BaseTestingUserConfig as TestConfig, } from './testing';
|
|
4
|
+
declare type DropUndefined<T> = T extends undefined ? never : T;
|
|
5
|
+
export declare type UserConfig<Extends extends {
|
|
6
|
+
hooks?: ExtendHooks;
|
|
7
|
+
userConfig?: ExtendUserConfig;
|
|
8
|
+
normalizedConfig?: ExtendNormalizedConfig;
|
|
9
|
+
} = {}, ExtendHooks extends Record<string, any> = {}, ExtendUserConfig extends {
|
|
10
|
+
source?: Record<string, any>;
|
|
11
|
+
tools?: Record<string, any>;
|
|
12
|
+
testing?: Record<string, any>;
|
|
13
|
+
[property: string]: any;
|
|
14
|
+
} = {}, ExtendNormalizedConfig extends Record<string, any> = {}> = {
|
|
15
|
+
testing?: BaseTestingUserConfig<DropUndefined<Extends['userConfig']>['testing']>;
|
|
16
|
+
plugins?: PluginConfig<Extends>;
|
|
17
|
+
} & Omit<Extends['userConfig'], 'plugins' | 'testing'>;
|
|
18
|
+
export declare type NormalizedConfig<Extends extends {
|
|
19
|
+
hooks?: ExtendHooks;
|
|
20
|
+
userConfig?: ExtendUserConfig;
|
|
21
|
+
normalizedConfig?: ExtendNormalizedConfig;
|
|
22
|
+
} = {}, ExtendHooks extends Record<string, any> = {}, ExtendUserConfig extends Record<string, any> = {}, ExtendNormalizedConfig extends {
|
|
23
|
+
source?: Record<string, any>;
|
|
24
|
+
tools?: Record<string, any>;
|
|
25
|
+
testing?: Record<string, any>;
|
|
26
|
+
[property: string]: any;
|
|
27
|
+
} = {}> = {
|
|
28
|
+
plugins: PluginConfig<Extends>;
|
|
29
|
+
testing: BaseTestingNormalizedConfig<DropUndefined<Extends['normalizedConfig']>['testing']>;
|
|
30
|
+
} & Omit<Extends['normalizedConfig'], 'plugins' | 'testing'>;
|
|
31
|
+
export declare type LoadedConfig<Extends extends {
|
|
32
|
+
hooks?: ExtendHooks;
|
|
33
|
+
userConfig?: ExtendUserConfig;
|
|
34
|
+
} = {}, ExtendHooks extends {} = {}, ExtendUserConfig extends Record<string, any> = {}> = {
|
|
35
|
+
config: UserConfig<Extends>;
|
|
36
|
+
filePath: string | false;
|
|
37
|
+
dependencies: string[];
|
|
38
|
+
pkgConfig: UserConfig<Extends>;
|
|
39
|
+
jsConfig: UserConfig<Extends>;
|
|
40
|
+
};
|
|
41
|
+
export declare type ConfigParams = UserConfig | Promise<UserConfig> | ((env: any) => UserConfig | Promise<UserConfig>);
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { JestConfigTypes, Merge } from '@modern-js/types';
|
|
2
|
+
export declare type Jest = JestConfigTypes.InitialOptions;
|
|
3
|
+
export declare type BaseTestingUserConfig<ExtendTestingUserConfig = {}> = Merge<{
|
|
4
|
+
/**
|
|
5
|
+
* Decide which transformer will be used to compile file
|
|
6
|
+
* Default: babel-jest
|
|
7
|
+
*/
|
|
8
|
+
transformer?: 'babel-jest' | 'ts-jest';
|
|
9
|
+
/**
|
|
10
|
+
* Original jest config
|
|
11
|
+
* Doc: https://jestjs.io/docs/configuration
|
|
12
|
+
*/
|
|
13
|
+
jest?: Jest | ((jestConfig: Jest) => Jest);
|
|
14
|
+
}, ExtendTestingUserConfig>;
|
|
15
|
+
export declare type BaseTestingNormalizedConfig<ExtendTestingNormailzedConfig = {}> = BaseTestingUserConfig<ExtendTestingNormailzedConfig>;
|
|
File without changes
|