@umijs/plugins 4.0.0-beta.8 → 4.0.0-canary-20240513.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +4 -1
- package/dist/access.d.ts +1 -1
- package/dist/access.js +194 -4
- package/dist/{sass.d.ts → analytics.d.ts} +1 -1
- package/dist/analytics.js +118 -0
- package/dist/antd.d.ts +1 -1
- package/dist/antd.js +345 -157
- package/dist/{icons.d.ts → confetti.d.ts} +1 -1
- package/dist/confetti.js +64 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +30 -0
- package/dist/dva.d.ts +4 -1
- package/dist/dva.js +302 -8
- package/dist/initial-state.d.ts +1 -1
- package/dist/initial-state.js +147 -4
- package/dist/layout.d.ts +1 -1
- package/dist/layout.js +754 -4
- package/dist/locale.d.ts +2 -1
- package/dist/locale.js +257 -4
- package/dist/mf.d.ts +2 -0
- package/dist/mf.js +358 -0
- package/dist/model.d.ts +1 -1
- package/dist/model.js +109 -4
- package/dist/moment2dayjs.d.ts +3 -0
- package/dist/moment2dayjs.js +125 -0
- package/dist/qiankun/constants.d.ts +5 -0
- package/dist/qiankun/constants.js +41 -0
- package/dist/qiankun/master.d.ts +6 -0
- package/dist/qiankun/master.js +236 -0
- package/dist/qiankun/slave.d.ts +3 -0
- package/dist/qiankun/slave.js +345 -0
- package/dist/qiankun.d.ts +1 -1
- package/dist/qiankun.js +51 -4
- package/dist/react-query.d.ts +3 -0
- package/dist/react-query.js +193 -0
- package/dist/request.d.ts +1 -1
- package/dist/request.js +384 -4
- package/dist/styled-components.d.ts +3 -0
- package/dist/styled-components.js +150 -0
- package/dist/tailwindcss.d.ts +3 -0
- package/dist/tailwindcss.js +106 -0
- package/dist/unocss.d.ts +3 -0
- package/dist/unocss.js +71 -0
- package/dist/utils/astUtils.d.ts +3 -0
- package/dist/utils/astUtils.js +49 -0
- package/dist/utils/localeUtils.d.ts +33 -0
- package/dist/utils/localeUtils.js +139 -0
- package/dist/utils/mfUtils.d.ts +14 -0
- package/dist/utils/mfUtils.js +56 -0
- package/dist/utils/modelUtils.d.ts +40 -0
- package/dist/utils/modelUtils.js +286 -0
- package/dist/utils/resolveProjectDep.d.ts +5 -0
- package/dist/utils/resolveProjectDep.js +40 -0
- package/dist/utils/withTmpPath.d.ts +6 -0
- package/dist/utils/withTmpPath.js +39 -0
- package/dist/valtio.d.ts +3 -0
- package/dist/valtio.js +81 -0
- package/libs/dva.tsx +45 -0
- package/libs/model.tsx +180 -0
- package/libs/qiankun/master/AntdErrorBoundary.tsx +34 -0
- package/libs/qiankun/master/AntdLoader.tsx +15 -0
- package/libs/qiankun/master/ErrorBoundary.tsx +7 -0
- package/libs/qiankun/master/MicroApp.tsx +327 -0
- package/libs/qiankun/master/MicroAppWithMemoHistory.tsx +43 -0
- package/libs/qiankun/master/common.ts +172 -0
- package/libs/qiankun/master/constants.ts +19 -0
- package/libs/qiankun/master/getMicroAppRouteComponent.tsx.tpl +45 -0
- package/libs/qiankun/master/masterRuntimePlugin.tsx +161 -0
- package/libs/qiankun/master/routeUtils.ts +26 -0
- package/libs/qiankun/master/types.ts +54 -0
- package/libs/qiankun/slave/MicroAppLink.tsx +122 -0
- package/libs/qiankun/slave/connectMaster.tsx +14 -0
- package/libs/qiankun/slave/constants.ts +5 -0
- package/libs/qiankun/slave/lifecycles.ts +164 -0
- package/libs/qiankun/slave/qiankunModel.ts +18 -0
- package/libs/qiankun/slave/slaveRuntimePlugin.ts +36 -0
- package/package.json +54 -24
- package/templates/antd/runtime.ts.tpl +170 -0
- package/templates/antd/types.d.ts.tpl +17 -0
- package/templates/locale/SelectLang.tpl +502 -0
- package/templates/locale/locale.tpl +82 -0
- package/templates/locale/localeExports.tpl +307 -0
- package/templates/locale/runtime.tpl +34 -0
- package/templates/mf/runtime.ts.tpl +149 -0
- package/dist/access.d.ts.map +0 -1
- package/dist/antd.d.ts.map +0 -1
- package/dist/dva.d.ts.map +0 -1
- package/dist/icons.d.ts.map +0 -1
- package/dist/icons.js +0 -5
- package/dist/initial-state.d.ts.map +0 -1
- package/dist/layout.d.ts.map +0 -1
- package/dist/locale.d.ts.map +0 -1
- package/dist/model.d.ts.map +0 -1
- package/dist/qiankun.d.ts.map +0 -1
- package/dist/request.d.ts.map +0 -1
- package/dist/sass.d.ts.map +0 -1
- package/dist/sass.js +0 -5
package/dist/model.js
CHANGED
|
@@ -1,5 +1,110 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
10
|
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/model.ts
|
|
30
|
+
var model_exports = {};
|
|
31
|
+
__export(model_exports, {
|
|
32
|
+
default: () => model_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(model_exports);
|
|
35
|
+
var t = __toESM(require("@umijs/bundler-utils/compiled/babel/types"));
|
|
36
|
+
var import_fs = require("fs");
|
|
37
|
+
var import_path = require("path");
|
|
38
|
+
var import_plugin_utils = require("umi/plugin-utils");
|
|
39
|
+
var import_modelUtils = require("./utils/modelUtils");
|
|
40
|
+
var import_withTmpPath = require("./utils/withTmpPath");
|
|
41
|
+
var model_default = (api) => {
|
|
42
|
+
api.describe({
|
|
43
|
+
config: {
|
|
44
|
+
schema({ zod }) {
|
|
45
|
+
return zod.object({
|
|
46
|
+
extraModels: zod.array(zod.string())
|
|
47
|
+
}).partial();
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
enableBy: api.EnableBy.config
|
|
51
|
+
});
|
|
52
|
+
api.onGenerateFiles(async () => {
|
|
53
|
+
const models = await getAllModels(api);
|
|
54
|
+
api.writeTmpFile({
|
|
55
|
+
path: "model.ts",
|
|
56
|
+
content: import_modelUtils.ModelUtils.getModelsContent(models)
|
|
57
|
+
});
|
|
58
|
+
const indexContent = (0, import_fs.readFileSync)(
|
|
59
|
+
(0, import_path.join)(__dirname, "../libs/model.tsx"),
|
|
60
|
+
"utf-8"
|
|
61
|
+
).replace("fast-deep-equal", (0, import_plugin_utils.winPath)(require.resolve("fast-deep-equal")));
|
|
62
|
+
api.writeTmpFile({
|
|
63
|
+
path: "index.tsx",
|
|
64
|
+
content: indexContent
|
|
65
|
+
});
|
|
66
|
+
api.writeTmpFile({
|
|
67
|
+
path: "runtime.tsx",
|
|
68
|
+
content: `
|
|
69
|
+
import React from 'react';
|
|
70
|
+
import { Provider } from './';
|
|
71
|
+
import { models as rawModels } from './model';
|
|
72
|
+
|
|
73
|
+
function ProviderWrapper(props: any) {
|
|
74
|
+
const models = React.useMemo(() => {
|
|
75
|
+
return Object.keys(rawModels).reduce((memo, key) => {
|
|
76
|
+
memo[rawModels[key].namespace] = rawModels[key].model;
|
|
77
|
+
return memo;
|
|
78
|
+
}, {});
|
|
79
|
+
}, []);
|
|
80
|
+
return <Provider models={models} {...props}>{ props.children }</Provider>
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function dataflowProvider(container, opts) {
|
|
84
|
+
return <ProviderWrapper {...opts}>{ container }</ProviderWrapper>;
|
|
85
|
+
}
|
|
86
|
+
`
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
api.addTmpGenerateWatcherPaths(() => {
|
|
90
|
+
return [(0, import_path.join)(api.paths.absSrcPath, "models")];
|
|
91
|
+
});
|
|
92
|
+
api.addRuntimePlugin(() => {
|
|
93
|
+
return [(0, import_withTmpPath.withTmpPath)({ api, path: "runtime.tsx" })];
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
async function getAllModels(api) {
|
|
97
|
+
const extraModels = await api.applyPlugins({
|
|
98
|
+
key: "addExtraModels",
|
|
99
|
+
type: api.ApplyPluginsType.add,
|
|
100
|
+
initialValue: []
|
|
101
|
+
});
|
|
102
|
+
return new import_modelUtils.ModelUtils(api, {
|
|
103
|
+
astTest({ node }) {
|
|
104
|
+
return t.isArrowFunctionExpression(node) || t.isFunctionDeclaration(node);
|
|
105
|
+
}
|
|
106
|
+
}).getAllModels({
|
|
107
|
+
sort: {},
|
|
108
|
+
extraModels: [...extraModels, ...api.config.model.extraModels || []]
|
|
109
|
+
});
|
|
110
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/moment2dayjs.ts
|
|
30
|
+
var moment2dayjs_exports = {};
|
|
31
|
+
__export(moment2dayjs_exports, {
|
|
32
|
+
default: () => moment2dayjs_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(moment2dayjs_exports);
|
|
35
|
+
var import_path = require("path");
|
|
36
|
+
var import_plugin_utils = require("umi/plugin-utils");
|
|
37
|
+
var moment2dayjs_default = (api) => {
|
|
38
|
+
api.describe({
|
|
39
|
+
key: "moment2dayjs",
|
|
40
|
+
config: {
|
|
41
|
+
schema({ zod }) {
|
|
42
|
+
return zod.object({
|
|
43
|
+
preset: zod.enum(["antd", "antdv3", "none"]),
|
|
44
|
+
// 'antd' | 'antdv3 | 'none'
|
|
45
|
+
plugins: zod.array(zod.string())
|
|
46
|
+
}).partial();
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
enableBy: api.EnableBy.config
|
|
50
|
+
});
|
|
51
|
+
const presets = {
|
|
52
|
+
antd: [
|
|
53
|
+
"isSameOrBefore",
|
|
54
|
+
"isSameOrAfter",
|
|
55
|
+
"advancedFormat",
|
|
56
|
+
"customParseFormat",
|
|
57
|
+
"weekday",
|
|
58
|
+
"weekYear",
|
|
59
|
+
"weekOfYear",
|
|
60
|
+
"isMoment",
|
|
61
|
+
"localeData",
|
|
62
|
+
"localizedFormat"
|
|
63
|
+
],
|
|
64
|
+
antdv3: [
|
|
65
|
+
"isSameOrBefore",
|
|
66
|
+
"isSameOrAfter",
|
|
67
|
+
"advancedFormat",
|
|
68
|
+
"customParseFormat",
|
|
69
|
+
"weekday",
|
|
70
|
+
"weekYear",
|
|
71
|
+
"weekOfYear",
|
|
72
|
+
"isMoment",
|
|
73
|
+
"localeData",
|
|
74
|
+
"localizedFormat",
|
|
75
|
+
"badMutable"
|
|
76
|
+
]
|
|
77
|
+
};
|
|
78
|
+
const getDayjsPlugins = (api2) => {
|
|
79
|
+
let { preset = "antd", plugins = [] } = api2.config.moment2dayjs || {};
|
|
80
|
+
switch (preset) {
|
|
81
|
+
case "antd":
|
|
82
|
+
return Array.from(new Set(presets["antd"].concat(plugins)));
|
|
83
|
+
case "antdv3":
|
|
84
|
+
return Array.from(new Set(presets["antdv3"].concat(plugins)));
|
|
85
|
+
case "none":
|
|
86
|
+
return [].concat(plugins);
|
|
87
|
+
default:
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
api.modifyConfig((memo) => {
|
|
92
|
+
memo.alias.moment = (0, import_path.dirname)(require.resolve("dayjs/package.json"));
|
|
93
|
+
return memo;
|
|
94
|
+
});
|
|
95
|
+
api.onGenerateFiles(() => {
|
|
96
|
+
const plugins = getDayjsPlugins(api);
|
|
97
|
+
const runtimeTpl = `
|
|
98
|
+
import dayjs from '{{{dayjsPath}}}';
|
|
99
|
+
import antdPlugin from '{{{dayjsAntdPluginPath}}}';
|
|
100
|
+
|
|
101
|
+
{{#plugins}}
|
|
102
|
+
import {{.}} from '{{{dayjsPath}}}/plugin/{{.}}';
|
|
103
|
+
{{/plugins}}
|
|
104
|
+
|
|
105
|
+
{{#plugins}}
|
|
106
|
+
dayjs.extend({{.}});
|
|
107
|
+
{{/plugins}}
|
|
108
|
+
|
|
109
|
+
dayjs.extend(antdPlugin);
|
|
110
|
+
`;
|
|
111
|
+
const dayjsAntdPluginPath = (0, import_plugin_utils.winPath)(
|
|
112
|
+
require.resolve("antd-dayjs-webpack-plugin/src/antd-plugin")
|
|
113
|
+
);
|
|
114
|
+
const dayjsPath = (0, import_plugin_utils.winPath)((0, import_path.dirname)(require.resolve("dayjs/package.json")));
|
|
115
|
+
api.writeTmpFile({
|
|
116
|
+
path: "runtime.tsx",
|
|
117
|
+
content: import_plugin_utils.Mustache.render(runtimeTpl, {
|
|
118
|
+
plugins,
|
|
119
|
+
dayjsPath,
|
|
120
|
+
dayjsAntdPluginPath
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
api.addEntryCodeAhead(() => [`import './plugin-moment2dayjs/runtime.tsx'`]);
|
|
125
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const defaultMasterRootId = "root-master";
|
|
2
|
+
export declare const defaultHistoryType = "browser";
|
|
3
|
+
export declare const qiankunStateForSlaveModelNamespace = "@@qiankunStateForSlave";
|
|
4
|
+
export declare const qiankunStateFromMasterModelNamespace = "@@qiankunStateFromMaster";
|
|
5
|
+
export declare const MODEL_EXPORT_NAME = "useQiankunStateForSlave";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/qiankun/constants.ts
|
|
20
|
+
var constants_exports = {};
|
|
21
|
+
__export(constants_exports, {
|
|
22
|
+
MODEL_EXPORT_NAME: () => MODEL_EXPORT_NAME,
|
|
23
|
+
defaultHistoryType: () => defaultHistoryType,
|
|
24
|
+
defaultMasterRootId: () => defaultMasterRootId,
|
|
25
|
+
qiankunStateForSlaveModelNamespace: () => qiankunStateForSlaveModelNamespace,
|
|
26
|
+
qiankunStateFromMasterModelNamespace: () => qiankunStateFromMasterModelNamespace
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(constants_exports);
|
|
29
|
+
var defaultMasterRootId = "root-master";
|
|
30
|
+
var defaultHistoryType = "browser";
|
|
31
|
+
var qiankunStateForSlaveModelNamespace = "@@qiankunStateForSlave";
|
|
32
|
+
var qiankunStateFromMasterModelNamespace = "@@qiankunStateFromMaster";
|
|
33
|
+
var MODEL_EXPORT_NAME = "useQiankunStateForSlave";
|
|
34
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
35
|
+
0 && (module.exports = {
|
|
36
|
+
MODEL_EXPORT_NAME,
|
|
37
|
+
defaultHistoryType,
|
|
38
|
+
defaultMasterRootId,
|
|
39
|
+
qiankunStateForSlaveModelNamespace,
|
|
40
|
+
qiankunStateFromMasterModelNamespace
|
|
41
|
+
});
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/qiankun/master.ts
|
|
30
|
+
var master_exports = {};
|
|
31
|
+
__export(master_exports, {
|
|
32
|
+
default: () => master_default,
|
|
33
|
+
isMasterEnable: () => isMasterEnable
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(master_exports);
|
|
36
|
+
var import_assert = __toESM(require("assert"));
|
|
37
|
+
var import_fs = require("fs");
|
|
38
|
+
var import_path = require("path");
|
|
39
|
+
var import_umi = require("umi");
|
|
40
|
+
var import_plugin_utils = require("umi/plugin-utils");
|
|
41
|
+
var import_withTmpPath = require("../utils/withTmpPath");
|
|
42
|
+
var import_constants = require("./constants");
|
|
43
|
+
function isMasterEnable(opts) {
|
|
44
|
+
var _a;
|
|
45
|
+
const masterCfg = (_a = opts.userConfig.qiankun) == null ? void 0 : _a.master;
|
|
46
|
+
if (masterCfg) {
|
|
47
|
+
return masterCfg.enable !== false;
|
|
48
|
+
}
|
|
49
|
+
return !!process.env.INITIAL_QIANKUN_MASTER_OPTIONS;
|
|
50
|
+
}
|
|
51
|
+
function getDefaultMicroAppProps(api, key) {
|
|
52
|
+
var _a, _b, _c;
|
|
53
|
+
const microAppProps = (_b = (_a = api.config.qiankun) == null ? void 0 : _a.master) == null ? void 0 : _b[key];
|
|
54
|
+
(0, import_assert.default)(
|
|
55
|
+
!microAppProps || ((_c = microAppProps.startsWith) == null ? void 0 : _c.call(microAppProps, "@/")),
|
|
56
|
+
`[@umijs/plugin-qiankun]: ${key} only support src path, eg: @/${key}`
|
|
57
|
+
);
|
|
58
|
+
return microAppProps;
|
|
59
|
+
}
|
|
60
|
+
var master_default = (api) => {
|
|
61
|
+
api.describe({
|
|
62
|
+
key: "qiankun-master",
|
|
63
|
+
enableBy: isMasterEnable
|
|
64
|
+
});
|
|
65
|
+
api.addRuntimePlugin(() => {
|
|
66
|
+
return [(0, import_withTmpPath.withTmpPath)({ api, path: "masterRuntimePlugin.tsx" })];
|
|
67
|
+
});
|
|
68
|
+
api.modifyDefaultConfig((config) => ({
|
|
69
|
+
...config,
|
|
70
|
+
mountElementId: import_constants.defaultMasterRootId,
|
|
71
|
+
qiankun: {
|
|
72
|
+
...config.qiankun,
|
|
73
|
+
master: {
|
|
74
|
+
...JSON.parse(process.env.INITIAL_QIANKUN_MASTER_OPTIONS || "{}"),
|
|
75
|
+
...(config.qiankun || {}).master
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
79
|
+
api.modifyRoutes((memo) => {
|
|
80
|
+
Object.keys(memo).forEach((id) => {
|
|
81
|
+
var _a;
|
|
82
|
+
const route = memo[id];
|
|
83
|
+
if (route.microApp) {
|
|
84
|
+
const appName = route.microApp;
|
|
85
|
+
const base = api.config.base || "/";
|
|
86
|
+
const masterHistoryType = ((_a = api.config.history) == null ? void 0 : _a.type) || "browser";
|
|
87
|
+
const routeProps = route.microAppProps || {};
|
|
88
|
+
const normalizedRouteProps = JSON.stringify(routeProps).replace(
|
|
89
|
+
/"/g,
|
|
90
|
+
"'"
|
|
91
|
+
);
|
|
92
|
+
route.file = `(async () => {
|
|
93
|
+
const { getMicroAppRouteComponent } = await import('@@/plugin-qiankun-master/getMicroAppRouteComponent');
|
|
94
|
+
return getMicroAppRouteComponent({ appName: '${appName}', base: '${base}', routePath: '${route.path}', masterHistoryType: '${masterHistoryType}', routeProps: ${normalizedRouteProps} })
|
|
95
|
+
})()`;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return memo;
|
|
99
|
+
});
|
|
100
|
+
api.addRuntimePluginKey(() => [import_constants.MODEL_EXPORT_NAME]);
|
|
101
|
+
api.register({
|
|
102
|
+
key: "addExtraModels",
|
|
103
|
+
fn() {
|
|
104
|
+
const { path, exports } = api.appData.appJS || {};
|
|
105
|
+
return path && exports.includes(import_constants.MODEL_EXPORT_NAME) ? [
|
|
106
|
+
`${path}#{"namespace":"${import_constants.qiankunStateForSlaveModelNamespace}","exportName":"${import_constants.MODEL_EXPORT_NAME}"}`
|
|
107
|
+
] : [];
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
function getFileContent(file) {
|
|
111
|
+
return (0, import_fs.readFileSync)(
|
|
112
|
+
(0, import_path.join)(__dirname, "../../libs/qiankun/master", file),
|
|
113
|
+
"utf-8"
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
api.onGenerateFiles(() => {
|
|
117
|
+
var _a;
|
|
118
|
+
api.writeTmpFile({
|
|
119
|
+
path: import_umi.RUNTIME_TYPE_FILE_NAME,
|
|
120
|
+
content: `
|
|
121
|
+
import { MasterOptions } from './types'
|
|
122
|
+
type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };
|
|
123
|
+
type XOR<T, U> = (Without<T, U> & U) | (Without<U, T> & T);
|
|
124
|
+
interface Config {
|
|
125
|
+
master?: MasterOptions;
|
|
126
|
+
}
|
|
127
|
+
export interface IRuntimeConfig {
|
|
128
|
+
qiankun?: XOR<MasterOptions, Config>;
|
|
129
|
+
${import_constants.MODEL_EXPORT_NAME}?: () => Record<string, any>;
|
|
130
|
+
}
|
|
131
|
+
`
|
|
132
|
+
});
|
|
133
|
+
api.writeTmpFile({
|
|
134
|
+
path: "masterOptions.ts",
|
|
135
|
+
content: `
|
|
136
|
+
let options = ${JSON.stringify({
|
|
137
|
+
masterHistoryType: ((_a = api.config.history) == null ? void 0 : _a.type) || import_constants.defaultHistoryType,
|
|
138
|
+
base: api.config.base || "/",
|
|
139
|
+
...api.config.qiankun.master
|
|
140
|
+
})};
|
|
141
|
+
export const getMasterOptions = () => options;
|
|
142
|
+
export const setMasterOptions = (newOpts) => options = ({ ...options, ...newOpts });
|
|
143
|
+
`
|
|
144
|
+
});
|
|
145
|
+
api.writeTmpFile({
|
|
146
|
+
path: "MicroAppLoader.tsx",
|
|
147
|
+
content: api.isPluginEnable("antd") ? getFileContent("AntdLoader.tsx") : (
|
|
148
|
+
// 开启了 antd 插件的时候,使用 antd 的 loader 组件,否则提示用户必须设置一个自定义的 loader 组件
|
|
149
|
+
`export default function Loader() { console.warn(\`[plugins/qiankun]: Seems like you'r not using @umijs/plugin-antd, you need to provide a custom loader or set autoSetLoading false to shut down this warning!\`); return null; }`
|
|
150
|
+
)
|
|
151
|
+
});
|
|
152
|
+
api.writeTmpFile({
|
|
153
|
+
path: "defaultErrorBoundary.tsx",
|
|
154
|
+
content: getDefaultMicroAppProps(api, "defaultErrorBoundary") ? `export { default } from '${getDefaultMicroAppProps(
|
|
155
|
+
api,
|
|
156
|
+
"defaultErrorBoundary"
|
|
157
|
+
)}';` : (
|
|
158
|
+
// 返回 null
|
|
159
|
+
`export default null;`
|
|
160
|
+
)
|
|
161
|
+
});
|
|
162
|
+
api.writeTmpFile({
|
|
163
|
+
path: "defaultLoader.tsx",
|
|
164
|
+
content: getDefaultMicroAppProps(api, "defaultLoader") ? `export { default } from '${getDefaultMicroAppProps(
|
|
165
|
+
api,
|
|
166
|
+
"defaultLoader"
|
|
167
|
+
)}';` : (
|
|
168
|
+
// 返回 null
|
|
169
|
+
`export default null;`
|
|
170
|
+
)
|
|
171
|
+
});
|
|
172
|
+
[
|
|
173
|
+
"common.ts",
|
|
174
|
+
"constants.ts",
|
|
175
|
+
"types.ts",
|
|
176
|
+
"routeUtils.ts",
|
|
177
|
+
"masterRuntimePlugin.tsx",
|
|
178
|
+
"getMicroAppRouteComponent.tsx.tpl",
|
|
179
|
+
"ErrorBoundary.tsx",
|
|
180
|
+
"MicroApp.tsx",
|
|
181
|
+
"MicroAppWithMemoHistory.tsx"
|
|
182
|
+
].forEach((file) => {
|
|
183
|
+
if (file.endsWith(".tpl")) {
|
|
184
|
+
api.writeTmpFile({
|
|
185
|
+
path: file.replace(/\.tpl$/, ""),
|
|
186
|
+
tpl: getFileContent(file),
|
|
187
|
+
context: {
|
|
188
|
+
dynamicRoot: false,
|
|
189
|
+
hasModelPlugin: api.isPluginEnable("model")
|
|
190
|
+
// dynamicRoot:
|
|
191
|
+
// api.config.exportStatic && api.config.exportStatic.dynamicRoot,
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
} else {
|
|
195
|
+
let content = getFileContent(file);
|
|
196
|
+
if (!api.config.qiankun.externalQiankun) {
|
|
197
|
+
content = content.replace(
|
|
198
|
+
/from 'qiankun'/g,
|
|
199
|
+
`from '${(0, import_plugin_utils.winPath)((0, import_path.dirname)(require.resolve("qiankun/package")))}'`
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
api.writeTmpFile({
|
|
203
|
+
path: file.replace(/\.tpl$/, ""),
|
|
204
|
+
content: content.replace(
|
|
205
|
+
"__USE_MODEL__",
|
|
206
|
+
api.isPluginEnable("model") ? `import { useModel } from '@@/plugin-model'` : `const useModel = null;`
|
|
207
|
+
).replace(
|
|
208
|
+
/from 'lodash\//g,
|
|
209
|
+
`from '${(0, import_plugin_utils.winPath)((0, import_path.dirname)(require.resolve("lodash/package")))}/`
|
|
210
|
+
)
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
api.writeTmpFile({
|
|
215
|
+
path: "index.ts",
|
|
216
|
+
content: `
|
|
217
|
+
export { MicroApp } from './MicroApp';
|
|
218
|
+
export { MicroAppWithMemoHistory } from './MicroAppWithMemoHistory';
|
|
219
|
+
`
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
api.chainWebpack((config, { ssr }) => {
|
|
223
|
+
if (ssr) {
|
|
224
|
+
const originalExternals = config.get("externals");
|
|
225
|
+
config.externals({
|
|
226
|
+
...originalExternals,
|
|
227
|
+
qiankun: "fs"
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
return config;
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
234
|
+
0 && (module.exports = {
|
|
235
|
+
isMasterEnable
|
|
236
|
+
});
|