@umijs/preset-umi 4.0.63 → 4.0.65

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.
@@ -0,0 +1,6 @@
1
+ import { IApi } from '../../types';
2
+ export declare function getGlobalVars(opts: {
3
+ content: string;
4
+ }): Promise<string[]>;
5
+ declare const _default: (api: IApi) => void;
6
+ export default _default;
@@ -0,0 +1,123 @@
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/features/esbuildHelperChecker/esbuildHelperChecker.ts
30
+ var esbuildHelperChecker_exports = {};
31
+ __export(esbuildHelperChecker_exports, {
32
+ default: () => esbuildHelperChecker_default,
33
+ getGlobalVars: () => getGlobalVars
34
+ });
35
+ module.exports = __toCommonJS(esbuildHelperChecker_exports);
36
+ var parser = __toESM(require("@umijs/bundler-utils/compiled/babel/parser"));
37
+ var t = __toESM(require("@umijs/bundler-utils/compiled/babel/types"));
38
+ var import_utils = require("@umijs/utils");
39
+ var import_assert = __toESM(require("assert"));
40
+ var import_fs = __toESM(require("fs"));
41
+ var import_path = __toESM(require("path"));
42
+ async function checkDir(opts) {
43
+ import_utils.logger.info(
44
+ `[esbuildHelperChecker] Checking esbuild helpers from your dist files...`
45
+ );
46
+ const jsFiles = import_fs.default.readdirSync(opts.dir).filter((file) => file.endsWith(".js"));
47
+ const varMap = {};
48
+ for (const jsFile of jsFiles) {
49
+ const vars = await getGlobalVars({
50
+ content: import_fs.default.readFileSync(import_path.default.join(opts.dir, jsFile), "utf-8")
51
+ });
52
+ for (const v of vars) {
53
+ varMap[v] = varMap[v] || [];
54
+ varMap[v].push(jsFile);
55
+ }
56
+ }
57
+ const conflicts = Object.keys(varMap).filter((v) => varMap[v].length > 1).map((v) => `${v} (${varMap[v].join(", ")})`);
58
+ if (conflicts.length) {
59
+ throw new Error(
60
+ `Found conflicts in esbuild helpers: ${conflicts.join(
61
+ ", "
62
+ )}, please set esbuildMinifyIIFE: true in your config file.`
63
+ );
64
+ }
65
+ import_utils.logger.info(`[esbuildHelperChecker] No conflicts found.`);
66
+ }
67
+ async function getGlobalVars(opts) {
68
+ const ast = parser.parse(opts.content, {
69
+ sourceType: "module",
70
+ sourceFilename: "foo.js",
71
+ plugins: []
72
+ });
73
+ const vars = [];
74
+ ast.program.body.forEach((node) => {
75
+ if (t.isVariableDeclaration(node)) {
76
+ node.declarations.forEach((declaration) => {
77
+ if (t.isVariableDeclarator(declaration)) {
78
+ if (t.isIdentifier(declaration.id)) {
79
+ vars.push(declaration.id.name);
80
+ }
81
+ }
82
+ });
83
+ }
84
+ });
85
+ return vars;
86
+ }
87
+ var esbuildHelperChecker_default = (api) => {
88
+ api.registerCommand({
89
+ name: "esbuildHelperChecker",
90
+ description: "check esbuild helper conflicts",
91
+ configResolveMode: "loose",
92
+ async fn({ args }) {
93
+ const targetDir = args._[0];
94
+ (0, import_assert.default)(targetDir, "target directory is required");
95
+ await checkDir({
96
+ dir: import_path.default.resolve(process.cwd(), targetDir)
97
+ });
98
+ }
99
+ });
100
+ api.onBuildComplete(async ({ err }) => {
101
+ if (err)
102
+ return;
103
+ const jsMinifier = api.config.jsMinifier || "esbuild";
104
+ if (jsMinifier !== "esbuild")
105
+ return;
106
+ if (api.config.esbuildMinifyIIFE)
107
+ return;
108
+ if (process.env.COMPRESS === "none")
109
+ return;
110
+ try {
111
+ await checkDir({
112
+ dir: api.paths.absOutputPath
113
+ });
114
+ } catch (e) {
115
+ import_utils.logger.fatal(import_utils.chalk.red(`[esbuildHelperChecker] ${e.message}`));
116
+ process.exit(1);
117
+ }
118
+ });
119
+ };
120
+ // Annotate the CommonJS export names for ESM import in node:
121
+ 0 && (module.exports = {
122
+ getGlobalVars
123
+ });
@@ -58,7 +58,8 @@ var mpa_default = (api) => {
58
58
  memo.mpa = {
59
59
  entry: await collectEntryWithTimeCount(
60
60
  api.paths.absPagesPath,
61
- api.config.mpa
61
+ api.config.mpa,
62
+ api.userConfig.mountElementId
62
63
  )
63
64
  };
64
65
  return memo;
@@ -67,7 +68,8 @@ var mpa_default = (api) => {
67
68
  if (!isFirstTime) {
68
69
  api.appData.mpa.entry = await collectEntryWithTimeCount(
69
70
  api.paths.absPagesPath,
70
- api.config.mpa
71
+ api.config.mpa,
72
+ api.userConfig.mountElementId
71
73
  );
72
74
  }
73
75
  const isReact18 = api.appData.react.version.startsWith("18.");
@@ -128,9 +130,9 @@ ${renderer}
128
130
  return memo;
129
131
  });
130
132
  };
131
- async function collectEntryWithTimeCount(root, opts) {
133
+ async function collectEntryWithTimeCount(root, opts, mountElementId) {
132
134
  const d = new Date();
133
- const entries = await collectEntry(root, opts);
135
+ const entries = await collectEntry(root, opts, mountElementId);
134
136
  import_utils.logger.info(
135
137
  `[MPA] Collect Entries in ${new Date().getTime() - d.getTime()}ms`
136
138
  );
@@ -143,7 +145,7 @@ function filterEntry(dir) {
143
145
  const entries = process.env.MPA_FILTER.split(",");
144
146
  return entries.includes(dir);
145
147
  }
146
- async function collectEntry(root, opts) {
148
+ async function collectEntry(root, opts, mountElementId) {
147
149
  return await (0, import_fs.readdirSync)(root).reduce(
148
150
  async (memoP, dir) => {
149
151
  var _a;
@@ -162,7 +164,7 @@ async function collectEntry(root, opts) {
162
164
  name,
163
165
  file: indexFile,
164
166
  tmpFilePath: `mpa/${dir}${(0, import_path.extname)(indexFile)}`,
165
- mountElementId: "root",
167
+ mountElementId: mountElementId || "root",
166
168
  ...globalConfig,
167
169
  ...config,
168
170
  title: (globalConfig == null ? void 0 : globalConfig.title) || config.title || dir
@@ -52,7 +52,9 @@ var prepare_default = (api) => {
52
52
  };
53
53
  }
54
54
  async function parseProjectImportSpecifiers(br) {
55
- const files = Object.keys(br.metafile.inputs) || [];
55
+ const files = (Object.keys(br.metafile.inputs) || []).filter(
56
+ import_utils.isJavaScriptFile
57
+ );
56
58
  if (files.length === 0) {
57
59
  return {};
58
60
  }
@@ -77,13 +79,15 @@ var prepare_default = (api) => {
77
79
  api.register({
78
80
  key: "onGenerateFiles",
79
81
  async fn({ isFirstTime }) {
82
+ var _a, _b;
80
83
  if (api.appData.framework === "vue") {
81
84
  return;
82
85
  }
83
86
  if (!isFirstTime)
84
87
  return;
85
88
  import_utils.logger.info("Preparing...");
86
- const entryFile = import_path.default.join(api.paths.absTmpPath, "umi.ts");
89
+ const umiEntry = import_path.default.join(api.paths.absTmpPath, "umi.ts");
90
+ const entryPoints = [umiEntry];
87
91
  const { build } = await import("./build.js");
88
92
  const watch = api.name === "dev";
89
93
  const plugins = await api.applyPlugins({
@@ -93,8 +97,13 @@ var prepare_default = (api) => {
93
97
  const unwrappedAlias = import_utils.aliasUtils.parseCircleAlias({
94
98
  alias: api.config.alias
95
99
  });
100
+ if (api.userConfig.mpa) {
101
+ (_b = (_a = api.appData.mpa) == null ? void 0 : _a.entry) == null ? void 0 : _b.forEach(({ tmpFilePath }) => {
102
+ entryPoints.push(import_path.default.join(api.paths.absTmpPath, tmpFilePath));
103
+ });
104
+ }
96
105
  const buildResult = await build({
97
- entryPoints: [entryFile],
106
+ entryPoints,
98
107
  watch: watch && {
99
108
  async onRebuildSuccess({ result }) {
100
109
  const fileImports2 = await parseProjectImportSpecifiers(result);
@@ -117,8 +126,8 @@ var prepare_default = (api) => {
117
126
  });
118
127
  if (watch) {
119
128
  (0, import_watch.addUnWatch)(() => {
120
- var _a;
121
- (_a = buildResult.stop) == null ? void 0 : _a.call(buildResult);
129
+ var _a2;
130
+ (_a2 = buildResult.stop) == null ? void 0 : _a2.call(buildResult);
122
131
  });
123
132
  }
124
133
  const fileImports = await parseProjectImportSpecifiers(buildResult);
@@ -1,6 +1,8 @@
1
+ var __create = Object.create;
1
2
  var __defProp = Object.defineProperty;
2
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
4
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
7
  var __export = (target, all) => {
6
8
  for (var name in all)
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
14
16
  }
15
17
  return to;
16
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
+ ));
17
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
28
 
19
29
  // src/features/ui/ui.ts
@@ -22,18 +32,114 @@ __export(ui_exports, {
22
32
  default: () => ui_default
23
33
  });
24
34
  module.exports = __toCommonJS(ui_exports);
35
+ var import_utils = require("@umijs/utils");
36
+ var import_fs = __toESM(require("fs"));
37
+ var import_path = __toESM(require("path"));
38
+ var import_sirv = __toESM(require("../../../compiled/sirv"));
25
39
  var ENTRY_PATH = "/__umi_ui/entry";
26
40
  var ui_default = (api) => {
27
41
  api.describe({
28
42
  enableBy() {
29
- return api.name === "dev" && api.args.ui;
43
+ return api.name === "dev" && api.userConfig.ui;
44
+ },
45
+ config: {
46
+ schema({ zod }) {
47
+ return zod.object({});
48
+ }
49
+ }
50
+ });
51
+ const uiDir = import_path.default.dirname(require.resolve("@umijs/ui/package.json"));
52
+ api.onCheck(() => {
53
+ if (!import_fs.default.existsSync(import_path.default.join(uiDir, "dist"))) {
54
+ if ((0, import_utils.isLocalDev)()) {
55
+ throw new Error(
56
+ `@umijs/ui not built, please run 'pnpm ui:build' first.`
57
+ );
58
+ } else {
59
+ throw new Error(`@umijs/ui not found, please fill an issue on github.`);
60
+ }
30
61
  }
31
62
  });
32
63
  api.onBeforeMiddleware(({ app }) => {
33
- app.use(ENTRY_PATH, async (req, _res) => {
34
- req;
64
+ app.use(
65
+ ENTRY_PATH,
66
+ (0, import_sirv.default)(import_path.default.join(uiDir, "dist"), {
67
+ etag: true,
68
+ dev: true,
69
+ single: true
70
+ })
71
+ );
72
+ });
73
+ api.addHTMLStyles(() => {
74
+ return [
75
+ `
76
+ #umi-ui-container.umi-ui-container-show {
77
+ display: block;
78
+ }
79
+ #umi-ui-container {
80
+ position: fixed;
81
+ bottom: 10px;
82
+ left: calc(10vw + 10px);
83
+ height: calc(75vh - 20px);
84
+ width: calc(80vw - 20px);
85
+ display: none;
86
+ border-radius: .5rem;
87
+ z-index: 2147483646;
88
+ }
89
+ #umi-ui-toggle-btn {
90
+ width: 40px;
91
+ height: 40px;
92
+ position: fixed;
93
+ left: 50%;
94
+ bottom: -20px;
95
+ transform: translateX(-50%);
96
+ cursor: pointer;
97
+ display: flex;
98
+ background-size: 100% 100%;
99
+ background-image: url('data:image/png;base64,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');
100
+ transition: bottom 0.1s linear;
101
+ z-index: 2147483647;
102
+ }
103
+ #umi-ui-toggle-btn:hover {
104
+ bottom: 0px;
105
+ }
106
+ #umi-ui-iframe {
107
+ width: 100%;
108
+ height: 100%;
109
+ outline: none;
110
+ border: 1px solid rgba(125,125,125,0.2);
111
+ border-radius: 0.5rem;
112
+ }
113
+ `
114
+ ];
115
+ });
116
+ api.onGenerateFiles(({ isFirstTime }) => {
117
+ if (!isFirstTime)
118
+ return;
119
+ api.writeTmpFile({
120
+ path: "core/ui.ts",
121
+ noPluginDir: true,
122
+ content: `
123
+ // button and iframe
124
+ const container = document.createElement('div')
125
+ container.id = 'umi-ui-container';
126
+ const iframe = document.createElement('iframe');
127
+ iframe.id = 'umi-ui-iframe';
128
+ iframe.src = '${process.env.DEBUG_UMI_UI_PATH || ENTRY_PATH}';
129
+ const uiBtn = document.createElement('div');
130
+ uiBtn.id = 'umi-ui-toggle-btn';
131
+ container.appendChild(iframe);
132
+ document.body.appendChild(uiBtn);
133
+ document.body.appendChild(container);
134
+ uiBtn.addEventListener('click', () => {
135
+ container.classList.toggle('umi-ui-container-show');
136
+ });
137
+ `
35
138
  });
36
139
  });
140
+ api.addEntryImports(() => {
141
+ return [{ source: "@@/core/ui" }];
142
+ });
37
143
  };
38
144
  // Annotate the CommonJS export names for ESM import in node:
39
145
  0 && (module.exports = {});
package/dist/index.js CHANGED
@@ -48,6 +48,7 @@ var src_default = () => {
48
48
  require.resolve("./features/crossorigin/crossorigin"),
49
49
  require.resolve("./features/depsOnDemand/depsOnDemand"),
50
50
  require.resolve("./features/devTool/devTool"),
51
+ require.resolve("./features/esbuildHelperChecker/esbuildHelperChecker"),
51
52
  require.resolve("./features/esmi/esmi"),
52
53
  require.resolve("./features/exportStatic/exportStatic"),
53
54
  require.resolve("./features/favicons/favicons"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umijs/preset-umi",
3
- "version": "4.0.63",
3
+ "version": "4.0.65",
4
4
  "description": "@umijs/preset-umi",
5
5
  "homepage": "https://github.com/umijs/umi/tree/master/packages/preset-umi#readme",
6
6
  "bugs": "https://github.com/umijs/umi/issues",
@@ -21,7 +21,7 @@
21
21
  "dependencies": {
22
22
  "@iconify/utils": "2.1.1",
23
23
  "@svgr/core": "6.5.1",
24
- "@umijs/es-module-parser": "0.0.6",
24
+ "@umijs/es-module-parser": "0.0.7",
25
25
  "@umijs/history": "5.3.1",
26
26
  "babel-plugin-dynamic-import-node": "2.3.3",
27
27
  "click-to-react-component": "^1.0.8",
@@ -37,19 +37,20 @@
37
37
  "react-router": "6.3.0",
38
38
  "react-router-dom": "6.3.0",
39
39
  "regenerator-runtime": "0.13.11",
40
- "@umijs/ast": "4.0.63",
41
- "@umijs/babel-preset-umi": "4.0.63",
42
- "@umijs/bundler-utils": "4.0.63",
43
- "@umijs/bundler-vite": "4.0.63",
44
- "@umijs/bundler-webpack": "4.0.63",
45
- "@umijs/core": "4.0.63",
40
+ "@umijs/ast": "4.0.65",
41
+ "@umijs/babel-preset-umi": "4.0.65",
42
+ "@umijs/bundler-vite": "4.0.65",
43
+ "@umijs/core": "4.0.65",
46
44
  "@umijs/did-you-know": "1.0.3",
47
- "@umijs/mfsu": "4.0.63",
48
- "@umijs/plugin-run": "4.0.63",
49
- "@umijs/renderer-react": "4.0.63",
50
- "@umijs/server": "4.0.63",
51
- "@umijs/utils": "4.0.63",
52
- "@umijs/zod2ts": "4.0.63"
45
+ "@umijs/mfsu": "4.0.65",
46
+ "@umijs/renderer-react": "4.0.65",
47
+ "@umijs/bundler-utils": "4.0.65",
48
+ "@umijs/bundler-webpack": "4.0.65",
49
+ "@umijs/ui": "3.0.0-alpha.0",
50
+ "@umijs/utils": "4.0.65",
51
+ "@umijs/zod2ts": "4.0.65",
52
+ "@umijs/plugin-run": "4.0.65",
53
+ "@umijs/server": "4.0.65"
53
54
  },
54
55
  "devDependencies": {
55
56
  "@manypkg/get-packages": "1.1.3",
@@ -1,6 +1,6 @@
1
1
  {{{ beforeImport }}}
2
2
  interface IDefaultRuntimeConfig {
3
- onRouteChange?: (props: { routes: any, clientRoutes: any, location: any, action:any }) => void;
3
+ onRouteChange?: (props: { routes: any, clientRoutes: any, location: any, action: any, isFirst: boolean }) => void;
4
4
  patchRoutes?: (props: { routes: any }) => void;
5
5
  patchClientRoutes?: (props: { routes: any }) => void;
6
6
  render?: (oldRender: () => void) => void;
@@ -11,4 +11,4 @@ interface IDefaultRuntimeConfig {
11
11
 
12
12
  export function defineApp(config: RuntimeConfig): RuntimeConfig {
13
13
  return config;
14
- }
14
+ }