@umijs/plugins 4.0.34 → 4.0.35

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.
@@ -247,9 +247,10 @@ export { connectMaster } from './connectMaster';
247
247
  });
248
248
  },
249
249
  onProxyRes: (0, import_http_proxy_middleware.responseInterceptor)(async (responseBuffer, proxyRes, req2, res2) => {
250
+ var _a2;
250
251
  if (proxyRes.statusCode === 302) {
251
252
  const hostname = req2.hostname;
252
- const port = process.env.PORT;
253
+ const port = process.env.PORT || ((_a2 = api.appData) == null ? void 0 : _a2.port);
253
254
  const goto = `${hostname}:${port}`;
254
255
  const redirectUrl = proxyRes.headers.location.replace(encodeURIComponent(new URL(masterEntry).hostname), encodeURIComponent(goto)) || masterEntry;
255
256
  const redirectMessage = `[@umijs/plugin-qiankun]: redirect to ${redirectUrl}`;
@@ -0,0 +1,3 @@
1
+ import { IApi } from 'umi';
2
+ declare const _default: (api: IApi) => void;
3
+ export default _default;
@@ -0,0 +1,61 @@
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(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
20
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
+
22
+ // src/styled-components.ts
23
+ var styled_components_exports = {};
24
+ __export(styled_components_exports, {
25
+ default: () => styled_components_default
26
+ });
27
+ module.exports = __toCommonJS(styled_components_exports);
28
+ var import_path = require("path");
29
+ var styled_components_default = (api) => {
30
+ api.describe({
31
+ key: "styledComponents",
32
+ config: {
33
+ schema(Joi) {
34
+ return Joi.object({
35
+ babelPlugin: Joi.object()
36
+ });
37
+ }
38
+ },
39
+ enableBy: api.EnableBy.config
40
+ });
41
+ api.modifyBabelPresetOpts((memo) => {
42
+ if (api.env === "development") {
43
+ memo.pluginStyledComponents = {
44
+ ...api.config.styledComponents.babelPlugin
45
+ };
46
+ }
47
+ return memo;
48
+ });
49
+ const libPath = (0, import_path.dirname)(require.resolve("styled-components/package"));
50
+ api.onGenerateFiles(() => {
51
+ api.writeTmpFile({
52
+ path: "index.tsx",
53
+ content: `
54
+ import styled, { ThemeProvider, createGlobalStyle, css, keyframes, StyleSheetManager, useTheme } from '${libPath}';
55
+ export { styled, ThemeProvider, createGlobalStyle, css, keyframes, StyleSheetManager, useTheme };
56
+ `
57
+ });
58
+ });
59
+ };
60
+ // Annotate the CommonJS export names for ESM import in node:
61
+ 0 && (module.exports = {});
@@ -26,7 +26,6 @@ export declare class ModelUtils {
26
26
  sort?: object;
27
27
  extraModels: string[];
28
28
  }): Model[];
29
- getSortedNamespaces(models: Model[]): string[];
30
29
  getModels(opts: {
31
30
  base: string;
32
31
  pattern?: string;
@@ -35,6 +34,7 @@ export declare class ModelUtils {
35
34
  content: string;
36
35
  file: string;
37
36
  }): boolean;
37
+ static topologicalSort: (models: Model[]) => string[];
38
38
  static getModelsContent(models: Model[]): string;
39
39
  }
40
40
  export {};
@@ -89,7 +89,7 @@ var Model = class {
89
89
  return [...deps];
90
90
  }
91
91
  };
92
- var ModelUtils = class {
92
+ var _ModelUtils = class {
93
93
  constructor(api, opts) {
94
94
  this.opts = {};
95
95
  this.count = 1;
@@ -120,44 +120,11 @@ var ModelUtils = class {
120
120
  throw new Error(`Duplicate namespace in models: ${namespaces.sort().join(", ")}`);
121
121
  }
122
122
  if (opts.sort) {
123
- const namespaces2 = this.getSortedNamespaces(models);
123
+ const namespaces2 = _ModelUtils.topologicalSort(models);
124
124
  models.sort((a, b) => namespaces2.indexOf(a.namespace) - namespaces2.indexOf(b.namespace));
125
125
  }
126
126
  return models;
127
127
  }
128
- getSortedNamespaces(models) {
129
- let final = [];
130
- models.forEach((model, index) => {
131
- const { deps, namespace } = model;
132
- if (deps && deps.length) {
133
- const itemGroup = [...deps, namespace];
134
- const cannotUse = [namespace];
135
- for (let i = 0; i <= index; i += 1) {
136
- if (models[i].deps.filter((v) => cannotUse.includes(v)).length) {
137
- if (!cannotUse.includes(models[i].namespace)) {
138
- cannotUse.push(models[i].namespace);
139
- i = -1;
140
- }
141
- }
142
- }
143
- const errorList = deps.filter((v) => cannotUse.includes(v));
144
- if (errorList.length) {
145
- throw Error(`Circular dependencies: ${namespace} can't use ${errorList.join(", ")}`);
146
- }
147
- const intersection = final.filter((v) => itemGroup.includes(v));
148
- if (intersection.length) {
149
- const finalIndex = final.indexOf(intersection[0]);
150
- final = final.slice(0, finalIndex).concat(itemGroup).concat(final.slice(finalIndex + 1));
151
- } else {
152
- final.push(...itemGroup);
153
- }
154
- }
155
- if (!final.includes(namespace)) {
156
- final.push(namespace);
157
- }
158
- });
159
- return [...new Set(final)];
160
- }
161
128
  getModels(opts) {
162
129
  return import_plugin_utils.glob.sync(opts.pattern || "**/*.{ts,js}", {
163
130
  cwd: opts.base,
@@ -222,6 +189,55 @@ ${modelProps.join("\n")}
222
189
  } as const`;
223
190
  }
224
191
  };
192
+ var ModelUtils = _ModelUtils;
193
+ ModelUtils.topologicalSort = (models) => {
194
+ const graph = [];
195
+ const namespaceToNode = {};
196
+ models.forEach((model, index) => {
197
+ const node = {
198
+ namespace: model.namespace,
199
+ deps: model.deps,
200
+ index,
201
+ in: 0,
202
+ childs: []
203
+ };
204
+ if (namespaceToNode[model.namespace]) {
205
+ throw new Error(`Duplicate namespace in models: ${model.namespace}`);
206
+ }
207
+ namespaceToNode[model.namespace] = node;
208
+ graph.push(node);
209
+ });
210
+ graph.forEach((node) => {
211
+ node.deps.forEach((dep) => {
212
+ const depNode = namespaceToNode[dep];
213
+ if (!depNode) {
214
+ throw new Error(`Model namespace not found: ${dep}`);
215
+ }
216
+ depNode.childs.push(node);
217
+ node.in++;
218
+ });
219
+ });
220
+ const queue = [];
221
+ while (true) {
222
+ const zeronode = graph.find((n) => {
223
+ return n && n.in === 0;
224
+ });
225
+ if (!zeronode) {
226
+ break;
227
+ }
228
+ queue.push(zeronode.namespace);
229
+ zeronode.childs.forEach((child) => {
230
+ child.in--;
231
+ });
232
+ zeronode.childs = [];
233
+ delete graph[zeronode.index];
234
+ }
235
+ const leftNodes = graph.filter(Boolean);
236
+ if (leftNodes.length > 0) {
237
+ throw new Error(`Circle dependency detected in models: ${leftNodes.map((m) => import_plugin_utils.chalk.red(m.namespace)).join(", ")}`);
238
+ }
239
+ return queue;
240
+ };
225
241
  // Annotate the CommonJS export names for ESM import in node:
226
242
  0 && (module.exports = {
227
243
  Model,
package/dist/valtio.js CHANGED
@@ -34,7 +34,8 @@ var valtio_default = (api) => {
34
34
  schema(joi) {
35
35
  return joi.object();
36
36
  }
37
- }
37
+ },
38
+ enableBy: api.EnableBy.config
38
39
  });
39
40
  const libPath = (0, import_utils.winPath)((0, import_path.dirname)(require.resolve("@umijs/valtio/package.json")));
40
41
  api.onGenerateFiles(() => {
@@ -42,12 +43,18 @@ var valtio_default = (api) => {
42
43
  path: "index.ts",
43
44
  content: `
44
45
  export {
45
- proxy, useSnapshot, snapshot, subscribe,
46
+ proxy,
47
+ useSnapshot,
48
+ snapshot,
49
+ subscribe,
50
+ subscribeKey,
46
51
  proxyWithComputed,
47
52
  proxyWithHistory,
48
53
  proxyWithDevtools,
49
54
  proxyMap,
50
55
  proxySet,
56
+ derive,
57
+ underive,
51
58
  } from '${libPath}';
52
59
  `
53
60
  });
@@ -33,7 +33,11 @@ function patchMicroAppRouteComponent(routes: any[]) {
33
33
  });
34
34
 
35
35
  const getRootRoutes = (routes: any[]) => {
36
- const rootRoute = routes.find((route) => route.path === '/');
36
+ // 重定向根路由不能用作 microAppRuntimeRoutes 的父节点
37
+ const rootRoute = routes.find(
38
+ // 基于是否有 .to props 判断是否为 redirect
39
+ (route) => route.path === '/' && !route.element?.props?.to,
40
+ );
37
41
  if (rootRoute) {
38
42
  // 如果根路由是叶子节点,则直接返回其父节点
39
43
  if (!rootRoute.children?.length) {
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import { getPluginManager } from '@@/core/plugin';
3
3
  import ReactDOM from 'react-dom';
4
- import { ApplyPluginsType, __getRoot } from 'umi';
4
+ import { ApplyPluginsType, __getRoot, history } from 'umi';
5
5
  import { setModelState } from './qiankunModel';
6
6
 
7
7
  const noop = () => {};
@@ -1,13 +1,21 @@
1
1
  // @ts-nocheck
2
2
  import qiankunRender, { contextOptsStack } from './lifecycles';
3
+ import { createHistory } from '@@/core/history';
3
4
 
4
5
  export function render(oldRender: any) {
5
6
  return qiankunRender().then(oldRender);
6
7
  }
7
8
 
8
- export function modifyContextOpts(memo: any) {
9
+ export function modifyClientRenderOpts(memo: any) {
9
10
  // 每次应用 render 的时候会调 modifyClientRenderOpts,这时尝试从队列中取 render 的配置
10
11
  const clientRenderOpts = contextOptsStack.shift();
12
+ if (clientRenderOpts) {
13
+ clientRenderOpts.history = createHistory({
14
+ type: clientRenderOpts.historyType,
15
+ basename: clientRenderOpts.basename,
16
+ ...clientRenderOpts.historyOpts,
17
+ });
18
+ }
11
19
  return {
12
20
  ...memo,
13
21
  ...clientRenderOpts,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umijs/plugins",
3
- "version": "4.0.34",
3
+ "version": "4.0.35",
4
4
  "description": "@umijs/plugins",
5
5
  "homepage": "https://github.com/umijs/umi/tree/master/packages/plugins#readme",
6
6
  "bugs": "https://github.com/umijs/umi/issues",
@@ -27,8 +27,8 @@
27
27
  "@ant-design/antd-theme-variable": "^1.0.0",
28
28
  "@ant-design/icons": "^4.7.0",
29
29
  "@ant-design/pro-components": "^2.0.1",
30
- "@umijs/bundler-utils": "4.0.34",
31
- "@umijs/valtio": "^1.0.0",
30
+ "@umijs/bundler-utils": "4.0.35",
31
+ "@umijs/valtio": "^1.0.2",
32
32
  "antd-dayjs-webpack-plugin": "^1.0.6",
33
33
  "axios": "^0.27.2",
34
34
  "babel-plugin-import": "^1.13.5",
@@ -45,11 +45,12 @@
45
45
  "react-intl": "3.12.1",
46
46
  "react-redux": "^8.0.2",
47
47
  "redux": "^4.2.0",
48
+ "styled-components": "6.0.0-beta.6",
48
49
  "warning": "^4.0.3"
49
50
  },
50
51
  "devDependencies": {
51
52
  "antd": "^4.24.1",
52
- "umi": "4.0.34"
53
+ "umi": "4.0.35"
53
54
  },
54
55
  "publishConfig": {
55
56
  "access": "public"