dumi 2.0.0-beta.9 → 2.0.0-rc.0

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.
Files changed (91) hide show
  1. package/bin/forkedDev.js +3 -0
  2. package/dist/assetParsers/block.d.ts +2 -0
  3. package/dist/assetParsers/block.js +4 -1
  4. package/dist/cli.js +2 -2
  5. package/dist/client/theme-api/DumiDemoGrid.js +2 -1
  6. package/dist/client/theme-api/DumiPage.js +9 -3
  7. package/dist/client/theme-api/index.d.ts +1 -0
  8. package/dist/client/theme-api/index.js +1 -0
  9. package/dist/client/theme-api/openCodeSandbox.d.ts +9 -0
  10. package/dist/client/theme-api/openCodeSandbox.js +110 -0
  11. package/dist/client/theme-api/types.d.ts +11 -7
  12. package/dist/client/theme-api/useLocale.d.ts +2 -1
  13. package/dist/client/theme-api/utils.d.ts +6 -0
  14. package/dist/client/theme-api/utils.js +15 -0
  15. package/dist/constants.d.ts +4 -1
  16. package/dist/constants.js +22 -1
  17. package/dist/features/assets.d.ts +5 -1
  18. package/dist/features/assets.js +7 -1
  19. package/dist/features/autoAlias.d.ts +3 -0
  20. package/dist/features/autoAlias.js +65 -0
  21. package/dist/features/compile.js +4 -6
  22. package/dist/features/configPlugins/index.js +3 -1
  23. package/dist/features/configPlugins/schema.js +1 -1
  24. package/dist/features/derivative.d.ts +11 -0
  25. package/dist/features/derivative.js +110 -0
  26. package/dist/features/exports.d.ts +0 -5
  27. package/dist/features/exports.js +3 -24
  28. package/dist/features/locales.js +15 -8
  29. package/dist/features/routes.js +11 -13
  30. package/dist/features/tabs.js +1 -0
  31. package/dist/features/theme/index.js +22 -7
  32. package/dist/features/theme/loader.d.ts +4 -0
  33. package/dist/features/theme/loader.js +5 -1
  34. package/dist/loaders/markdown/index.d.ts +2 -1
  35. package/dist/loaders/markdown/index.js +24 -10
  36. package/dist/loaders/markdown/transformer/index.d.ts +2 -1
  37. package/dist/loaders/markdown/transformer/index.js +14 -3
  38. package/dist/loaders/markdown/transformer/rehypeDemo.d.ts +4 -1
  39. package/dist/loaders/markdown/transformer/rehypeDemo.js +10 -8
  40. package/dist/loaders/markdown/transformer/rehypeEnhancedTag.js +3 -0
  41. package/dist/loaders/markdown/transformer/rehypeImg.js +1 -1
  42. package/dist/loaders/markdown/transformer/remarkEmbed.d.ts +1 -1
  43. package/dist/loaders/markdown/transformer/remarkEmbed.js +6 -2
  44. package/dist/loaders/markdown/transformer/remarkMeta.d.ts +4 -3
  45. package/dist/loaders/markdown/transformer/remarkMeta.js +20 -2
  46. package/dist/preset.js +15 -0
  47. package/dist/service/cli.d.ts +5 -0
  48. package/dist/service/cli.js +69 -0
  49. package/dist/service/constants.d.ts +4 -0
  50. package/dist/service/constants.js +38 -0
  51. package/dist/service/dev.d.ts +1 -0
  52. package/dist/service/dev.js +45 -0
  53. package/dist/service/forkedDev.d.ts +1 -0
  54. package/dist/service/forkedDev.js +37 -0
  55. package/dist/service/printHelp.d.ts +1 -0
  56. package/dist/service/printHelp.js +37 -0
  57. package/dist/service/service.d.ts +13 -0
  58. package/dist/service/service.js +63 -0
  59. package/dist/techStacks/react.js +1 -0
  60. package/dist/types.d.ts +1 -0
  61. package/dist/utils.d.ts +4 -0
  62. package/dist/utils.js +26 -2
  63. package/package.json +11 -7
  64. package/theme-default/builtins/API/index.js +2 -1
  65. package/theme-default/builtins/Previewer/index.js +4 -122
  66. package/theme-default/builtins/Previewer/index.less +0 -165
  67. package/theme-default/builtins/Table/index.d.ts +6 -0
  68. package/theme-default/builtins/Table/index.js +59 -0
  69. package/theme-default/builtins/Table/index.less +61 -0
  70. package/theme-default/layouts/DocLayout/index.js +5 -1
  71. package/theme-default/layouts/DocLayout/index.less +18 -0
  72. package/theme-default/locales/en-US.json +1 -1
  73. package/theme-default/locales/zh-CN.json +1 -1
  74. package/theme-default/slots/Content/index.less +7 -1
  75. package/theme-default/slots/Features/index.js +6 -2
  76. package/theme-default/slots/Features/index.less +9 -1
  77. package/theme-default/slots/Footer/index.d.ts +4 -0
  78. package/theme-default/slots/Footer/index.js +18 -0
  79. package/theme-default/slots/Footer/index.less +19 -0
  80. package/theme-default/slots/Hero/index.js +8 -8
  81. package/theme-default/slots/Hero/index.less +10 -6
  82. package/theme-default/slots/LangSwitch/index.js +33 -16
  83. package/theme-default/slots/LangSwitch/index.less +23 -0
  84. package/theme-default/slots/PreviewerActions/index.d.ts +11 -0
  85. package/theme-default/slots/PreviewerActions/index.js +125 -0
  86. package/theme-default/slots/PreviewerActions/index.less +168 -0
  87. package/theme-default/slots/PreviewerActionsExtra/index.d.ts +4 -0
  88. package/theme-default/slots/PreviewerActionsExtra/index.js +7 -0
  89. package/theme-default/slots/Sidebar/index.js +3 -2
  90. package/theme-default/slots/Toc/index.less +4 -0
  91. package/theme.d.ts +0 -1
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('../dist/service/forkedDev');
@@ -1,5 +1,6 @@
1
1
  import { parseCodeFrontmatter } from "../utils";
2
2
  import type { ExampleBlockAsset } from 'dumi-assets-types';
3
+ import type { sync } from 'enhanced-resolve';
3
4
  export interface IParsedBlockAsset {
4
5
  asset: ExampleBlockAsset;
5
6
  sources: Record<string, string>;
@@ -10,5 +11,6 @@ declare function parseBlockAsset(opts: {
10
11
  id: string;
11
12
  refAtomIds: string[];
12
13
  entryPointCode?: string;
14
+ resolver: typeof sync;
13
15
  }): Promise<IParsedBlockAsset>;
14
16
  export default parseBlockAsset;
@@ -27,6 +27,7 @@ __export(block_exports, {
27
27
  module.exports = __toCommonJS(block_exports);
28
28
  var import_utils = require("../utils");
29
29
  var import_esbuild = require("@umijs/bundler-utils/compiled/esbuild");
30
+ var import_assert = __toESM(require("assert"));
30
31
  var import_fs = __toESM(require("fs"));
31
32
  var import_path = __toESM(require("path"));
32
33
  var import_plugin_utils = require("umi/plugin-utils");
@@ -56,8 +57,10 @@ async function parseBlockAsset(opts) {
56
57
  setup: (builder) => {
57
58
  builder.onResolve({ filter: /.*/ }, (args) => {
58
59
  if (args.kind !== "entry-point" && !args.path.startsWith(".")) {
60
+ const resolved = opts.resolver(args.resolveDir, args.path);
61
+ (0, import_assert.default)(resolved, `Can't resolve ${args.path} from ${args.resolveDir}`);
59
62
  const pkgJsonPath = import_plugin_utils.pkgUp.pkgUpSync({
60
- cwd: require.resolve(args.path, { paths: [args.resolveDir] })
63
+ cwd: resolved
61
64
  });
62
65
  if (pkgJsonPath) {
63
66
  asset.dependencies[args.path] = {
package/dist/cli.js CHANGED
@@ -15,12 +15,12 @@ var __copyProps = (to, from, except, desc) => {
15
15
  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));
16
16
 
17
17
  // src/cli.ts
18
- var import_umi = require("umi");
19
18
  var import_plugin_utils = require("umi/plugin-utils");
19
+ var import_cli = require("./service/cli");
20
20
  (async () => {
21
21
  try {
22
22
  import_plugin_utils.logger.info(import_plugin_utils.chalk.cyan.bold(`dumi v${require("../package").version}`));
23
- await (0, import_umi.run)({
23
+ await (0, import_cli.run)({
24
24
  presets: [require.resolve("./preset")]
25
25
  });
26
26
  } catch (e) {
@@ -53,7 +53,8 @@ export var DumiDemoGrid = function DumiDemoGrid(props) {
53
53
  return /*#__PURE__*/React.createElement("section", {
54
54
  style: {
55
55
  flex: 1,
56
- padding: 8
56
+ padding: 8,
57
+ width: 0
57
58
  },
58
59
  key: String(i)
59
60
  }, col.map(function (item) {
@@ -16,7 +16,8 @@ import React, { useEffect, useState } from 'react';
16
16
  import { useTabQueryState } from "./useTabMeta";
17
17
  export var DumiPage = function DumiPage(props) {
18
18
  var _useLocation = useLocation(),
19
- hash = _useLocation.hash;
19
+ hash = _useLocation.hash,
20
+ pathname = _useLocation.pathname;
20
21
 
21
22
  var _useRouteMeta = useRouteMeta(),
22
23
  tabs = _useRouteMeta.tabs;
@@ -45,9 +46,14 @@ export var DumiPage = function DumiPage(props) {
45
46
  }, []); // handle hash change
46
47
 
47
48
  useEffect(function () {
48
- var elm = document.getElementById(hash.replace('#', ''));
49
+ var id = hash.replace('#', '');
50
+ var elm = id && document.getElementById(id);
49
51
  if (elm) elm.scrollIntoView();
50
- }, [hash]);
52
+ }, [hash]); // handle pathname change
53
+
54
+ useEffect(function () {
55
+ document.documentElement.scrollTo(0, 0);
56
+ }, [pathname]);
51
57
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ContentTabs, {
52
58
  tabs: tabs,
53
59
  tabKey: tabKey,
@@ -3,6 +3,7 @@ export { useSiteData } from './context';
3
3
  export { DumiDemo } from './DumiDemo';
4
4
  export { DumiDemoGrid } from './DumiDemoGrid';
5
5
  export { DumiPage } from './DumiPage';
6
+ export { openCodeSandbox } from './openCodeSandbox';
6
7
  export type { IPreviewerProps } from './types';
7
8
  export { useAtomAssets } from './useAtomAssets';
8
9
  export { useLocale } from './useLocale';
@@ -3,6 +3,7 @@ export { useSiteData } from "./context";
3
3
  export { DumiDemo } from "./DumiDemo";
4
4
  export { DumiDemoGrid } from "./DumiDemoGrid";
5
5
  export { DumiPage } from "./DumiPage";
6
+ export { openCodeSandbox } from "./openCodeSandbox";
6
7
  export { useAtomAssets } from "./useAtomAssets";
7
8
  export { useLocale } from "./useLocale";
8
9
  export { useNavData } from "./useNavData";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * use CodeSandbox.io
3
+ * @param data previewer opts
4
+ * @param opts the api that CodeSandbox calls when creating the demo
5
+ * @note return a open function for open demo on codesandbox.io
6
+ */
7
+ export declare const openCodeSandbox: (data: IPreviewerProps, opts?: {
8
+ api?: string;
9
+ }) => void;
@@ -0,0 +1,110 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+
5
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
+
7
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
+
9
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
+
11
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
+
13
+ import { getParameters } from 'codesandbox/lib/api/define';
14
+ import { genReactRenderCode } from "./utils";
15
+ var CSB_API_ENDPOINT = 'https://codesandbox.io/api/v1/sandboxes/define';
16
+ /**
17
+ * get serialized data that use to submit to codesandbox.io
18
+ * @param opts previewer props
19
+ */
20
+
21
+ function getCSBData(opts) {
22
+ var _opts$asset$dependenc, _react, _deps$_react, _reactDom, _deps$_reactDom;
23
+
24
+ var isTSX = Boolean((_opts$asset$dependenc = opts.asset.dependencies) === null || _opts$asset$dependenc === void 0 ? void 0 : _opts$asset$dependenc['index.tsx']);
25
+ var ext = isTSX ? '.tsx' : '.jsx';
26
+ var files = {};
27
+ var deps = {};
28
+ var entryFileName = "index".concat(ext);
29
+ Object.entries(opts.asset.dependencies).forEach(function (_ref) {
30
+ var _ref2 = _slicedToArray(_ref, 2),
31
+ name = _ref2[0],
32
+ _ref2$ = _ref2[1],
33
+ type = _ref2$.type,
34
+ value = _ref2$.value;
35
+
36
+ if (type === 'NPM') {
37
+ // generate dependencies
38
+ deps[name] = value;
39
+ } else {
40
+ // append other imported local files
41
+ files[name === entryFileName ? "App".concat(ext) : name] = {
42
+ content: value,
43
+ isBinary: false
44
+ };
45
+ }
46
+ }); // add react、react-dom dependency
47
+
48
+ (_deps$_react = deps[_react = 'react']) !== null && _deps$_react !== void 0 ? _deps$_react : deps[_react] = 'latest';
49
+ (_deps$_reactDom = deps[_reactDom = 'react-dom']) !== null && _deps$_reactDom !== void 0 ? _deps$_reactDom : deps[_reactDom] = deps.react; // append sandbox.config.json
50
+
51
+ files['sandbox.config.json'] = {
52
+ content: JSON.stringify({
53
+ template: isTSX ? 'create-react-app-typescript' : 'create-react-app'
54
+ }, null, 2),
55
+ isBinary: false
56
+ }; // append package.json
57
+
58
+ files['package.json'] = {
59
+ content: JSON.stringify({
60
+ name: opts.title,
61
+ description: opts.description || 'An auto-generated demo by dumi',
62
+ main: entryFileName,
63
+ dependencies: deps,
64
+ // add TypeScript dependency if required, must in devDeps to avoid csb compile error
65
+ devDependencies: isTSX ? {
66
+ typescript: '^4'
67
+ } : {}
68
+ }, null, 2),
69
+ isBinary: false
70
+ }; // append index.html
71
+
72
+ files['index.html'] = {
73
+ content: '<div style="margin: 16px;" id="root"></div>',
74
+ isBinary: false
75
+ }; // append entry file
76
+
77
+ files[entryFileName] = {
78
+ content: genReactRenderCode(deps.react),
79
+ isBinary: false
80
+ };
81
+ return getParameters({
82
+ files: files
83
+ });
84
+ }
85
+ /**
86
+ * use CodeSandbox.io
87
+ * @param data previewer opts
88
+ * @param opts the api that CodeSandbox calls when creating the demo
89
+ * @note return a open function for open demo on codesandbox.io
90
+ */
91
+
92
+
93
+ export var openCodeSandbox = function openCodeSandbox(data, opts) {
94
+ var _data$assets;
95
+
96
+ var form = document.createElement('form');
97
+ var input = document.createElement('input');
98
+ var CSBData = getCSBData(data);
99
+ form.method = 'POST';
100
+ form.target = '_blank';
101
+ form.style.display = 'none';
102
+ form.action = (opts === null || opts === void 0 ? void 0 : opts.api) || CSB_API_ENDPOINT;
103
+ form.appendChild(input);
104
+ form.setAttribute('data-demo', ((_data$assets = data.assets) === null || _data$assets === void 0 ? void 0 : _data$assets.id) || '');
105
+ input.name = 'parameters';
106
+ input.value = CSBData;
107
+ document.body.appendChild(form);
108
+ form.submit();
109
+ form.remove();
110
+ };
@@ -10,9 +10,9 @@ export interface IPreviewerProps {
10
10
  */
11
11
  description?: string;
12
12
  /**
13
- * file path of current demo
13
+ * filename of current demo
14
14
  */
15
- filePath?: string;
15
+ filename?: string;
16
16
  /**
17
17
  * use iframe to render demo
18
18
  */
@@ -61,8 +61,8 @@ export interface IRouteMeta {
61
61
  title?: string;
62
62
  description?: string;
63
63
  background?: string;
64
- links?: {
65
- title: string;
64
+ actions?: {
65
+ text: string;
66
66
  link: string;
67
67
  }[];
68
68
  [key: string]: any;
@@ -78,6 +78,9 @@ export interface IRouteMeta {
78
78
  cols?: number;
79
79
  tocDepth?: number;
80
80
  };
81
+ atomId?: string;
82
+ filename?: string;
83
+ [key: string]: any;
81
84
  };
82
85
  toc: {
83
86
  id: string;
@@ -110,17 +113,17 @@ export interface IRouteMeta {
110
113
  [key: string]: any;
111
114
  };
112
115
  }[];
113
- [key: string]: any;
114
116
  }
115
117
  declare type IBasicLocale = {
116
118
  id: string;
117
119
  name: string;
118
120
  };
119
- export declare type ILocalesConfig = ((IBasicLocale & {
121
+ export declare type ILocale = (IBasicLocale & {
120
122
  base: string;
121
123
  }) | (IBasicLocale & {
122
124
  suffix: string;
123
- }))[];
125
+ });
126
+ export declare type ILocalesConfig = ILocale[];
124
127
  export interface INavItem {
125
128
  title: string;
126
129
  link: string;
@@ -146,6 +149,7 @@ export interface IThemeConfig {
146
149
  children?: INavItem[];
147
150
  })[];
148
151
  sidebar?: Record<string, ISidebarGroup[]>;
152
+ footer?: string;
149
153
  [key: string]: any;
150
154
  }
151
155
  export declare type IRoutesById = Record<string, {
@@ -1 +1,2 @@
1
- export declare const useLocale: () => any;
1
+ import type { ILocale } from './types';
2
+ export declare const useLocale: () => ILocale;
@@ -1,2 +1,8 @@
1
1
  import type { IRoutesById } from './types';
2
2
  export declare const useLocaleDocRoutes: () => IRoutesById;
3
+ /**
4
+ * 在 react 18 中需要新的 render 方式,这个函数用来处理不同的 jsx 模式。
5
+ * @param version react version
6
+ * @returns code string
7
+ */
8
+ export declare const genReactRenderCode: (version: string) => string;
@@ -41,4 +41,19 @@ export var useLocaleDocRoutes = function useLocaleDocRoutes() {
41
41
  localeDocRoutes = _useState2[0];
42
42
 
43
43
  return localeDocRoutes;
44
+ };
45
+ /**
46
+ * 在 react 18 中需要新的 render 方式,这个函数用来处理不同的 jsx 模式。
47
+ * @param version react version
48
+ * @returns code string
49
+ */
50
+
51
+ export var genReactRenderCode = function genReactRenderCode(version) {
52
+ var annotation = "/**\n * This is an auto-generated demo by dumi\n * if you think it is not working as expected,\n * please report the issue at\n * https://github.com/umijs/dumi/issues\n */";
53
+
54
+ if (version.startsWith('18.') || version === 'latest') {
55
+ return "".concat(annotation, "\n\nimport React from 'react';\nimport { createRoot } from \"react-dom/client\";\nimport App from \"./App\";\n\nconst rootElement = document.getElementById(\"root\");\nconst root = createRoot(rootElement);\n\nroot.render(<App />);");
56
+ }
57
+
58
+ return "".concat(annotation, "\n \nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n \nReactDOM.render(\n <App />,\n document.getElementById('root'),\n);");
44
59
  };
@@ -1,4 +1,6 @@
1
- export declare const LOCAL_THEME_DIR = ".dumi/theme";
1
+ export declare const LOCAL_DUMI_DIR = ".dumi";
2
+ export declare const LOCAL_THEME_DIR: string;
3
+ export declare const LOCAL_PAGES_DIR: string;
2
4
  export declare const THEME_PREFIX = "dumi-theme-";
3
5
  export declare const SP_ROUTE_PREFIX = "~";
4
6
  export declare const PICKED_PKG_FIELDS: {
@@ -10,3 +12,4 @@ export declare const PICKED_PKG_FIELDS: {
10
12
  author: string;
11
13
  authors: string;
12
14
  };
15
+ export declare const CLIENT_DEPS: string[];
package/dist/constants.js CHANGED
@@ -19,13 +19,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  // src/constants.ts
20
20
  var constants_exports = {};
21
21
  __export(constants_exports, {
22
+ CLIENT_DEPS: () => CLIENT_DEPS,
23
+ LOCAL_DUMI_DIR: () => LOCAL_DUMI_DIR,
24
+ LOCAL_PAGES_DIR: () => LOCAL_PAGES_DIR,
22
25
  LOCAL_THEME_DIR: () => LOCAL_THEME_DIR,
23
26
  PICKED_PKG_FIELDS: () => PICKED_PKG_FIELDS,
24
27
  SP_ROUTE_PREFIX: () => SP_ROUTE_PREFIX,
25
28
  THEME_PREFIX: () => THEME_PREFIX
26
29
  });
27
30
  module.exports = __toCommonJS(constants_exports);
28
- var LOCAL_THEME_DIR = ".dumi/theme";
31
+ var LOCAL_DUMI_DIR = ".dumi";
32
+ var LOCAL_THEME_DIR = `${LOCAL_DUMI_DIR}/theme`;
33
+ var LOCAL_PAGES_DIR = `${LOCAL_DUMI_DIR}/pages`;
29
34
  var THEME_PREFIX = "dumi-theme-";
30
35
  var SP_ROUTE_PREFIX = "~";
31
36
  var PICKED_PKG_FIELDS = {
@@ -37,8 +42,24 @@ var PICKED_PKG_FIELDS = {
37
42
  author: "",
38
43
  authors: ""
39
44
  };
45
+ var CLIENT_DEPS = [
46
+ "@ant-design/icons-svg",
47
+ "@makotot/ghostui",
48
+ "deepmerge",
49
+ "highlight-words-core",
50
+ "lodash.throttle",
51
+ "prism-react-renderer",
52
+ "prismjs",
53
+ "rc-tabs",
54
+ "react-copy-to-clipboard",
55
+ "react-helmet",
56
+ "react-intl"
57
+ ];
40
58
  // Annotate the CommonJS export names for ESM import in node:
41
59
  0 && (module.exports = {
60
+ CLIENT_DEPS,
61
+ LOCAL_DUMI_DIR,
62
+ LOCAL_PAGES_DIR,
42
63
  LOCAL_THEME_DIR,
43
64
  PICKED_PKG_FIELDS,
44
65
  SP_ROUTE_PREFIX,
@@ -1,10 +1,14 @@
1
1
  import type { IApi } from "../types";
2
- import type { ExampleAsset } from 'dumi-assets-types';
2
+ import type { AtomAsset, ExampleAsset } from 'dumi-assets-types';
3
3
  declare const examples: ExampleAsset[];
4
4
  /**
5
5
  * internal function to add example assets
6
6
  */
7
7
  export declare function addExampleAssets(data: typeof examples): void;
8
+ /**
9
+ * internal function to add meta for atom
10
+ */
11
+ export declare function addAtomMeta(atomId: string, data: Partial<AtomAsset>): void;
8
12
  /**
9
13
  * plugin for generate assets.json
10
14
  */
@@ -22,6 +22,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
22
22
  // src/features/assets.ts
23
23
  var assets_exports = {};
24
24
  __export(assets_exports, {
25
+ addAtomMeta: () => addAtomMeta,
25
26
  addExampleAssets: () => addExampleAssets,
26
27
  default: () => assets_default
27
28
  });
@@ -30,9 +31,13 @@ var import_fs = __toESM(require("fs"));
30
31
  var import_path = __toESM(require("path"));
31
32
  var import_plugin_utils = require("umi/plugin-utils");
32
33
  var examples = [];
34
+ var atomsMeta = {};
33
35
  function addExampleAssets(data) {
34
36
  examples.push(...data);
35
37
  }
38
+ function addAtomMeta(atomId, data) {
39
+ atomsMeta[atomId] = import_plugin_utils.lodash.pick(data, ["title", "keywords", "deprecated"]);
40
+ }
36
41
  var assets_default = (api) => {
37
42
  api.describe({
38
43
  config: {
@@ -53,7 +58,7 @@ var assets_default = (api) => {
53
58
  homepage: api.pkg.homepage,
54
59
  repository: api.pkg.repository,
55
60
  assets: {
56
- atoms: Object.values(components),
61
+ atoms: Object.values(components).map((atom) => Object.assign(atom, atomsMeta[atom.id] || {})),
57
62
  examples: import_plugin_utils.lodash.uniqBy(examples, "id")
58
63
  }
59
64
  }
@@ -63,5 +68,6 @@ var assets_default = (api) => {
63
68
  };
64
69
  // Annotate the CommonJS export names for ESM import in node:
65
70
  0 && (module.exports = {
71
+ addAtomMeta,
66
72
  addExampleAssets
67
73
  });
@@ -0,0 +1,3 @@
1
+ import type { IApi } from "../types";
2
+ declare const _default: (api: IApi) => void;
3
+ export default _default;
@@ -0,0 +1,65 @@
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/features/autoAlias.ts
23
+ var autoAlias_exports = {};
24
+ __export(autoAlias_exports, {
25
+ default: () => autoAlias_default
26
+ });
27
+ module.exports = __toCommonJS(autoAlias_exports);
28
+ var import_utils = require("../utils");
29
+ var import_fs = __toESM(require("fs"));
30
+ var import_path = __toESM(require("path"));
31
+ var autoAlias_default = (api) => {
32
+ api.describe({
33
+ key: "autoAlias",
34
+ config: {
35
+ schema: (Joi) => Joi.bool()
36
+ },
37
+ enableBy: ({ userConfig }) => userConfig.autoAlias !== false
38
+ });
39
+ api.modifyDefaultConfig(async (memo) => {
40
+ var _a;
41
+ let entryDir = "";
42
+ if ((_a = api.userConfig.resolve) == null ? void 0 : _a.entryFile) {
43
+ entryDir = import_path.default.resolve(api.cwd, api.userConfig.resolve.entryFile);
44
+ } else if (import_fs.default.existsSync(import_path.default.join(api.cwd, "src"))) {
45
+ entryDir = import_path.default.join(api.cwd, "src");
46
+ }
47
+ if (entryDir && api.pkg.name) {
48
+ const fatherConfigs = await (0, import_utils.tryFatherBuildConfigs)(api.cwd);
49
+ fatherConfigs.sort((a, b) => {
50
+ var _a2, _b;
51
+ const aLevel = (((_a2 = a.output) == null ? void 0 : _a2.path) || a.output).split("/").length;
52
+ const bLevel = (((_b = b.output) == null ? void 0 : _b.path) || b.output).split("/").length;
53
+ return bLevel - aLevel;
54
+ });
55
+ fatherConfigs.forEach((item) => {
56
+ var _a2;
57
+ memo.alias[`${api.pkg.name}/${((_a2 = item.output) == null ? void 0 : _a2.path) || item.output}`] = import_path.default.join(api.cwd, item.entry || item.input);
58
+ });
59
+ memo.alias[api.pkg.name] = entryDir;
60
+ }
61
+ return memo;
62
+ });
63
+ };
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {});
@@ -33,10 +33,6 @@ var compile_default = (api) => {
33
33
  stage: Infinity,
34
34
  fn: () => new import_react.default()
35
35
  });
36
- api.modifyDefaultConfig((memo) => {
37
- memo.alias.dumi$ = memo.alias.umi;
38
- return memo;
39
- });
40
36
  api.chainWebpack(async (memo) => {
41
37
  const babelInUmi = memo.module.rule("src").use("babel-loader").entries();
42
38
  const techStacks = await api.applyPlugins({
@@ -47,7 +43,8 @@ var compile_default = (api) => {
47
43
  const loaderBaseOpts = {
48
44
  techStacks,
49
45
  cwd: api.cwd,
50
- codeBlockMode: api.config.resolve.codeBlockMode,
46
+ alias: api.config.alias,
47
+ resolve: api.config.resolve,
51
48
  extraRemarkPlugins: api.config.extraRemarkPlugins,
52
49
  extraRehypePlugins: api.config.extraRehypePlugins
53
50
  };
@@ -61,7 +58,8 @@ var compile_default = (api) => {
61
58
  return ret;
62
59
  }, []);
63
60
  (0, import_assets.addExampleAssets)(assets);
64
- }
61
+ },
62
+ onResolveAtomMeta: import_assets.addAtomMeta
65
63
  }).end().end().oneOf("md").use("babel-loader").loader(babelInUmi.loader).options(babelInUmi.options).end().use("md-loader").loader(loaderPath).options({
66
64
  ...loaderBaseOpts,
67
65
  builtins: api.service.themeData.builtins
@@ -30,7 +30,9 @@ var configPlugins_default = (api) => {
30
30
  atomDirs: [{ type: "component", dir: "src" }],
31
31
  codeBlockMode: "active"
32
32
  },
33
- themeConfig: {}
33
+ themeConfig: {
34
+ footer: `Copyright \xA9 ${new Date().getFullYear()} | Powered by <a href="https://d.umijs.org" target="_blank" rel="noreferrer">dumi</a>`
35
+ }
34
36
  };
35
37
  const schemas = (0, import_schema.getSchemas)();
36
38
  for (const key of Object.keys(schemas)) {
@@ -30,7 +30,7 @@ function getSchemas() {
30
30
  resolve: (Joi) => Joi.object({
31
31
  docDirs: Joi.array().items(Joi.alternatives(Joi.string(), Joi.object({ dir: Joi.string(), type: Joi.string().optional() }))).optional(),
32
32
  atomDirs: Joi.array().items(Joi.object({ type: Joi.string(), dir: Joi.string() })).optional(),
33
- entityDirs: Joi.forbidden().error(new Error("`entityDirs` is already deprecated, please rename it to `atomDirs` in `.umirc.ts` or `config/config.ts`")),
33
+ entityDirs: Joi.forbidden().error(new Error("`entityDirs` is already deprecated, please rename it to `atomDirs` in `.dumirc.ts`")),
34
34
  codeBlockMode: Joi.string().valid("active", "passive").optional(),
35
35
  entryFile: Joi.string().optional()
36
36
  }).optional(),
@@ -0,0 +1,11 @@
1
+ import type { IApi } from "../types";
2
+ /**
3
+ * exclude pre-compiling modules in mfsu mode
4
+ * and make sure there has no multiple instances problem (such as react)
5
+ */
6
+ export declare function safeExcludeInMFSU(api: IApi, excludes: RegExp[]): void;
7
+ /**
8
+ * plugin for derive default behaviors from umi
9
+ */
10
+ declare const _default: (api: IApi) => void;
11
+ export default _default;