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.
- package/bin/forkedDev.js +3 -0
- package/dist/assetParsers/block.d.ts +2 -0
- package/dist/assetParsers/block.js +4 -1
- package/dist/cli.js +2 -2
- package/dist/client/theme-api/DumiDemoGrid.js +2 -1
- package/dist/client/theme-api/DumiPage.js +9 -3
- package/dist/client/theme-api/index.d.ts +1 -0
- package/dist/client/theme-api/index.js +1 -0
- package/dist/client/theme-api/openCodeSandbox.d.ts +9 -0
- package/dist/client/theme-api/openCodeSandbox.js +110 -0
- package/dist/client/theme-api/types.d.ts +11 -7
- package/dist/client/theme-api/useLocale.d.ts +2 -1
- package/dist/client/theme-api/utils.d.ts +6 -0
- package/dist/client/theme-api/utils.js +15 -0
- package/dist/constants.d.ts +4 -1
- package/dist/constants.js +22 -1
- package/dist/features/assets.d.ts +5 -1
- package/dist/features/assets.js +7 -1
- package/dist/features/autoAlias.d.ts +3 -0
- package/dist/features/autoAlias.js +65 -0
- package/dist/features/compile.js +4 -6
- package/dist/features/configPlugins/index.js +3 -1
- package/dist/features/configPlugins/schema.js +1 -1
- package/dist/features/derivative.d.ts +11 -0
- package/dist/features/derivative.js +110 -0
- package/dist/features/exports.d.ts +0 -5
- package/dist/features/exports.js +3 -24
- package/dist/features/locales.js +15 -8
- package/dist/features/routes.js +11 -13
- package/dist/features/tabs.js +1 -0
- package/dist/features/theme/index.js +22 -7
- package/dist/features/theme/loader.d.ts +4 -0
- package/dist/features/theme/loader.js +5 -1
- package/dist/loaders/markdown/index.d.ts +2 -1
- package/dist/loaders/markdown/index.js +24 -10
- package/dist/loaders/markdown/transformer/index.d.ts +2 -1
- package/dist/loaders/markdown/transformer/index.js +14 -3
- package/dist/loaders/markdown/transformer/rehypeDemo.d.ts +4 -1
- package/dist/loaders/markdown/transformer/rehypeDemo.js +10 -8
- package/dist/loaders/markdown/transformer/rehypeEnhancedTag.js +3 -0
- package/dist/loaders/markdown/transformer/rehypeImg.js +1 -1
- package/dist/loaders/markdown/transformer/remarkEmbed.d.ts +1 -1
- package/dist/loaders/markdown/transformer/remarkEmbed.js +6 -2
- package/dist/loaders/markdown/transformer/remarkMeta.d.ts +4 -3
- package/dist/loaders/markdown/transformer/remarkMeta.js +20 -2
- package/dist/preset.js +15 -0
- package/dist/service/cli.d.ts +5 -0
- package/dist/service/cli.js +69 -0
- package/dist/service/constants.d.ts +4 -0
- package/dist/service/constants.js +38 -0
- package/dist/service/dev.d.ts +1 -0
- package/dist/service/dev.js +45 -0
- package/dist/service/forkedDev.d.ts +1 -0
- package/dist/service/forkedDev.js +37 -0
- package/dist/service/printHelp.d.ts +1 -0
- package/dist/service/printHelp.js +37 -0
- package/dist/service/service.d.ts +13 -0
- package/dist/service/service.js +63 -0
- package/dist/techStacks/react.js +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +26 -2
- package/package.json +11 -7
- package/theme-default/builtins/API/index.js +2 -1
- package/theme-default/builtins/Previewer/index.js +4 -122
- package/theme-default/builtins/Previewer/index.less +0 -165
- package/theme-default/builtins/Table/index.d.ts +6 -0
- package/theme-default/builtins/Table/index.js +59 -0
- package/theme-default/builtins/Table/index.less +61 -0
- package/theme-default/layouts/DocLayout/index.js +5 -1
- package/theme-default/layouts/DocLayout/index.less +18 -0
- package/theme-default/locales/en-US.json +1 -1
- package/theme-default/locales/zh-CN.json +1 -1
- package/theme-default/slots/Content/index.less +7 -1
- package/theme-default/slots/Features/index.js +6 -2
- package/theme-default/slots/Features/index.less +9 -1
- package/theme-default/slots/Footer/index.d.ts +4 -0
- package/theme-default/slots/Footer/index.js +18 -0
- package/theme-default/slots/Footer/index.less +19 -0
- package/theme-default/slots/Hero/index.js +8 -8
- package/theme-default/slots/Hero/index.less +10 -6
- package/theme-default/slots/LangSwitch/index.js +33 -16
- package/theme-default/slots/LangSwitch/index.less +23 -0
- package/theme-default/slots/PreviewerActions/index.d.ts +11 -0
- package/theme-default/slots/PreviewerActions/index.js +125 -0
- package/theme-default/slots/PreviewerActions/index.less +168 -0
- package/theme-default/slots/PreviewerActionsExtra/index.d.ts +4 -0
- package/theme-default/slots/PreviewerActionsExtra/index.js +7 -0
- package/theme-default/slots/Sidebar/index.js +3 -2
- package/theme-default/slots/Toc/index.less +4 -0
- package/theme.d.ts +0 -1
package/bin/forkedDev.js
ADDED
|
@@ -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:
|
|
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,
|
|
23
|
+
await (0, import_cli.run)({
|
|
24
24
|
presets: [require.resolve("./preset")]
|
|
25
25
|
});
|
|
26
26
|
} catch (e) {
|
|
@@ -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
|
|
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
|
-
*
|
|
13
|
+
* filename of current demo
|
|
14
14
|
*/
|
|
15
|
-
|
|
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
|
-
|
|
65
|
-
|
|
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
|
|
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
|
-
|
|
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
|
};
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export declare const
|
|
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
|
|
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
|
*/
|
package/dist/features/assets.js
CHANGED
|
@@ -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,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 = {});
|
package/dist/features/compile.js
CHANGED
|
@@ -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
|
-
|
|
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 `.
|
|
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;
|