@rsdoctor/components 1.1.3 → 1.1.4
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/dist/pages/BundleSize/components/asset.js +87 -34
- package/dist/pages/BundleSize/components/asset.js.map +1 -1
- package/dist/pages/ModuleAnalyze/fileTree.js +3 -3
- package/dist/pages/ModuleAnalyze/fileTree.js.map +1 -1
- package/dist/pages/ModuleAnalyze/index.d.ts +2 -1
- package/dist/pages/ModuleAnalyze/index.js +5 -0
- package/dist/pages/ModuleAnalyze/index.js.map +1 -1
- package/dist/pages/WebpackLoaders/Analysis/index.js +26 -3
- package/dist/pages/WebpackLoaders/Analysis/index.js.map +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.js +27 -2
- package/dist/pages/WebpackLoaders/Overall/index.js.map +1 -1
- package/dist/utils/i18n/cn.js +3 -1
- package/dist/utils/i18n/cn.js.map +1 -1
- package/dist/utils/i18n/en.d.ts +2 -0
- package/dist/utils/i18n/en.js +3 -1
- package/dist/utils/i18n/en.js.map +1 -1
- package/package.json +6 -6
|
@@ -2,7 +2,6 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import {
|
|
3
3
|
CodepenCircleOutlined,
|
|
4
4
|
ColumnHeightOutlined,
|
|
5
|
-
DeploymentUnitOutlined,
|
|
6
5
|
InfoCircleOutlined
|
|
7
6
|
} from "@ant-design/icons";
|
|
8
7
|
import { SDK } from "@rsdoctor/types";
|
|
@@ -281,6 +280,63 @@ const ModulesStatistics = ({ modules, chunks, filteredModules }) => {
|
|
|
281
280
|
)
|
|
282
281
|
] });
|
|
283
282
|
};
|
|
283
|
+
const ConcatenatedTag = ({ moduleCount }) => {
|
|
284
|
+
return /* @__PURE__ */ jsx(
|
|
285
|
+
Tooltip,
|
|
286
|
+
{
|
|
287
|
+
title: /* @__PURE__ */ jsx(Space, { children: /* @__PURE__ */ jsxs(Typography.Text, { style: { color: "inherit" }, children: [
|
|
288
|
+
"This is a concatenated container module that includes ",
|
|
289
|
+
moduleCount,
|
|
290
|
+
" ",
|
|
291
|
+
"modules"
|
|
292
|
+
] }) }),
|
|
293
|
+
children: /* @__PURE__ */ jsx(Tag, { color: "blue", style: tagStyle, children: "concatenated container" })
|
|
294
|
+
}
|
|
295
|
+
);
|
|
296
|
+
};
|
|
297
|
+
const TotalBundledSizeTag = ({ size }) => {
|
|
298
|
+
return /* @__PURE__ */ jsx(
|
|
299
|
+
Tooltip,
|
|
300
|
+
{
|
|
301
|
+
title: /* @__PURE__ */ jsx(Space, { children: /* @__PURE__ */ jsx(Typography.Text, { style: { color: "inherit" }, children: "The total output size of all the files in this folder. If you enabled minification, this value shows the minified size." }) }),
|
|
302
|
+
children: /* @__PURE__ */ jsx(Tag, { style: tagStyle, color: "geekblue", children: `bundled size: ${formatSize(size)}` })
|
|
303
|
+
}
|
|
304
|
+
);
|
|
305
|
+
};
|
|
306
|
+
const BundledSizeTag = ({ size }) => {
|
|
307
|
+
return /* @__PURE__ */ jsx(
|
|
308
|
+
Tooltip,
|
|
309
|
+
{
|
|
310
|
+
title: /* @__PURE__ */ jsx(Space, { children: /* @__PURE__ */ jsx(Typography.Text, { style: { color: "inherit" }, children: "The final output size of this file. If you enabled minification, this value shows the minified size." }) }),
|
|
311
|
+
children: /* @__PURE__ */ jsx(Tag, { color: "geekblue", children: `bundled size: ${formatSize(size)}` })
|
|
312
|
+
}
|
|
313
|
+
);
|
|
314
|
+
};
|
|
315
|
+
const TotalSourceSizeTag = ({ size }) => {
|
|
316
|
+
return /* @__PURE__ */ jsx(
|
|
317
|
+
Tooltip,
|
|
318
|
+
{
|
|
319
|
+
title: /* @__PURE__ */ jsx(Space, { children: /* @__PURE__ */ jsx(Typography.Text, { style: { color: "inherit" }, children: "The total original size of all the files in this folder, before any transformations and minification." }) }),
|
|
320
|
+
children: /* @__PURE__ */ jsx(
|
|
321
|
+
Tag,
|
|
322
|
+
{
|
|
323
|
+
style: tagStyle,
|
|
324
|
+
color: "cyan",
|
|
325
|
+
children: `source size: ${formatSize(size)}`
|
|
326
|
+
}
|
|
327
|
+
)
|
|
328
|
+
}
|
|
329
|
+
);
|
|
330
|
+
};
|
|
331
|
+
const SourceSizeTag = ({ size }) => {
|
|
332
|
+
return /* @__PURE__ */ jsx(
|
|
333
|
+
Tooltip,
|
|
334
|
+
{
|
|
335
|
+
title: /* @__PURE__ */ jsx(Space, { children: /* @__PURE__ */ jsx(Typography.Text, { style: { color: "inherit" }, children: "The original size of this file, before any transformations and minification." }) }),
|
|
336
|
+
children: /* @__PURE__ */ jsx(Tag, { color: "cyan", children: `source size: ${formatSize(size)}` })
|
|
337
|
+
}
|
|
338
|
+
);
|
|
339
|
+
};
|
|
284
340
|
const AssetDetail = ({
|
|
285
341
|
asset,
|
|
286
342
|
chunks: includeChunks,
|
|
@@ -318,42 +374,48 @@ const AssetDetail = ({
|
|
|
318
374
|
(e) => e !== mod && e.modules && e.modules.indexOf(mod.id) > -1
|
|
319
375
|
);
|
|
320
376
|
return /* @__PURE__ */ jsxs("div", { className: styles["bundle-tree"], children: [
|
|
321
|
-
/* @__PURE__ */
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
377
|
+
/* @__PURE__ */ jsx(
|
|
378
|
+
Popover,
|
|
379
|
+
{
|
|
380
|
+
content: `Open the ${basename}’s module reasons tree.`,
|
|
381
|
+
placement: "bottom",
|
|
382
|
+
children: /* @__PURE__ */ jsxs(
|
|
383
|
+
"div",
|
|
384
|
+
{
|
|
385
|
+
className: styles.box,
|
|
386
|
+
onClick: () => {
|
|
387
|
+
setModuleJumpList([mod.id]);
|
|
388
|
+
setShow(true);
|
|
389
|
+
},
|
|
390
|
+
children: [
|
|
391
|
+
/* @__PURE__ */ jsx("div", { className: styles.keywords, children: /* @__PURE__ */ jsx(Keyword, { ellipsis: true, text: basename, keyword: "" }) }),
|
|
392
|
+
/* @__PURE__ */ jsx("div", { className: styles.dividerDiv, children: /* @__PURE__ */ jsx(Divider, { className: styles.divider, dashed: true }) })
|
|
393
|
+
]
|
|
394
|
+
}
|
|
395
|
+
)
|
|
396
|
+
}
|
|
397
|
+
),
|
|
325
398
|
/* @__PURE__ */ jsxs(Space, { children: [
|
|
326
399
|
parsedSize !== 0 ? /* @__PURE__ */ jsx(
|
|
327
400
|
Tooltip,
|
|
328
401
|
{
|
|
329
402
|
title: /* @__PURE__ */ jsxs(Space, { direction: "vertical", children: [
|
|
330
|
-
/* @__PURE__ */ jsx(
|
|
331
|
-
/* @__PURE__ */ jsx(
|
|
403
|
+
/* @__PURE__ */ jsx(BundledSizeTag, { size: parsedSize }),
|
|
404
|
+
/* @__PURE__ */ jsx(SourceSizeTag, { size: sourceSize })
|
|
332
405
|
] }),
|
|
333
406
|
color: "white",
|
|
334
|
-
children: /* @__PURE__ */ jsx(
|
|
407
|
+
children: /* @__PURE__ */ jsx(BundledSizeTag, { size: parsedSize })
|
|
335
408
|
}
|
|
336
409
|
) : sourceSize !== 0 ? (
|
|
337
410
|
// fallback to display tag for source size
|
|
338
|
-
/* @__PURE__ */ jsx(
|
|
339
|
-
) : null,
|
|
340
|
-
isConcatenation ? /* @__PURE__ */ jsx(
|
|
341
|
-
Tooltip,
|
|
342
|
-
{
|
|
343
|
-
title: /* @__PURE__ */ jsx(Space, { children: /* @__PURE__ */ jsxs(Typography.Text, { style: { color: "inherit" }, children: [
|
|
344
|
-
"this is a concatenated module, it contains",
|
|
345
|
-
" ",
|
|
346
|
-
mod.modules?.length,
|
|
347
|
-
" modules"
|
|
348
|
-
] }) }),
|
|
349
|
-
children: /* @__PURE__ */ jsx(Tag, { color: "green", style: tagStyle, children: "concatenated" })
|
|
350
|
-
}
|
|
411
|
+
/* @__PURE__ */ jsx(SourceSizeTag, { size: sourceSize })
|
|
351
412
|
) : null,
|
|
413
|
+
isConcatenation ? /* @__PURE__ */ jsx(ConcatenatedTag, { moduleCount: mod.modules?.length || 0 }) : null,
|
|
352
414
|
containedOtherModules && containedOtherModules.length ? /* @__PURE__ */ jsx(
|
|
353
415
|
Tooltip,
|
|
354
416
|
{
|
|
355
417
|
title: /* @__PURE__ */ jsxs(Space, { direction: "vertical", children: [
|
|
356
|
-
/* @__PURE__ */ jsx(Typography.Text, { style: { color: "inherit" }, children: "
|
|
418
|
+
/* @__PURE__ */ jsx(Typography.Text, { style: { color: "inherit" }, children: "This module is concatenated into another container module:" }),
|
|
357
419
|
containedOtherModules.map(({ id, path }) => {
|
|
358
420
|
if (isJsDataUrl(path)) {
|
|
359
421
|
return /* @__PURE__ */ jsx(
|
|
@@ -393,15 +455,6 @@ const AssetDetail = ({
|
|
|
393
455
|
children: /* @__PURE__ */ jsx(Tag, { color: "green", children: "concatenated" })
|
|
394
456
|
}
|
|
395
457
|
) : null,
|
|
396
|
-
/* @__PURE__ */ jsx(Popover, { content: "Open the Module Graph Box", children: /* @__PURE__ */ jsx(
|
|
397
|
-
DeploymentUnitOutlined,
|
|
398
|
-
{
|
|
399
|
-
onClick: () => {
|
|
400
|
-
setModuleJumpList([mod.id]);
|
|
401
|
-
setShow(true);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
) }),
|
|
405
458
|
/* @__PURE__ */ jsx(ModuleCodeViewer, { data: mod })
|
|
406
459
|
] })
|
|
407
460
|
] });
|
|
@@ -421,9 +474,9 @@ const AssetDetail = ({
|
|
|
421
474
|
/* @__PURE__ */ jsx("div", { className: styles.dividerDiv, children: /* @__PURE__ */ jsx(Divider, { className: styles.divider, dashed: true }) })
|
|
422
475
|
] }),
|
|
423
476
|
/* @__PURE__ */ jsx(Space, { children: parsedSize > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
424
|
-
/* @__PURE__ */ jsx(
|
|
425
|
-
/* @__PURE__ */ jsx(
|
|
426
|
-
] }) : /* @__PURE__ */ jsx(
|
|
477
|
+
/* @__PURE__ */ jsx(TotalBundledSizeTag, { size: parsedSize }),
|
|
478
|
+
/* @__PURE__ */ jsx(TotalSourceSizeTag, { size: sourceSize })
|
|
479
|
+
] }) : /* @__PURE__ */ jsx(TotalSourceSizeTag, { size: sourceSize }) })
|
|
427
480
|
] });
|
|
428
481
|
}
|
|
429
482
|
return defaultTitle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":["mods"],"ignoreList":[],"sources":["../../../../src/pages/BundleSize/components/asset.tsx"],"sourcesContent":["import {\n CodepenCircleOutlined,\n ColumnHeightOutlined,\n DeploymentUnitOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Button,\n Card,\n Col,\n Divider,\n Empty,\n Popover,\n Row,\n Space,\n Tag,\n Tooltip,\n Tree,\n Typography,\n} from 'antd';\nimport { DataNode as AntdDataNode } from 'antd/es/tree';\nimport { omitBy, sumBy } from 'lodash-es';\nimport { dirname, relative } from 'path';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { CodeViewer } from '../../../components/base';\nimport { Badge as Bdg } from '../../../components/Badge';\nimport { KeywordInput } from '../../../components/Form/keyword';\nimport { Keyword } from '../../../components/Keyword';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { TextDrawer } from '../../../components/TextDrawer';\nimport { Size } from '../../../constants';\nimport {\n DataNode,\n createFileStructures,\n formatSize,\n isJsDataUrl,\n useI18n,\n} from '../../../utils';\nimport { ModuleAnalyzeComponent } from '../../ModuleAnalyze';\nimport { ModuleGraphListContext } from '../config';\nimport styles from './index.module';\n\nconst { DirectoryTree } = Tree;\n\nlet expandedModulesKeys: React.Key[] = [];\nconst TAB_MAP = {\n source: 'source code',\n transformed: 'Transformed Code (After compile)',\n parsedSource: 'Bundled Code (After bundle and tree-shaking)',\n};\n\nconst tagStyle = {\n margin: 'none',\n marginInlineEnd: 0,\n};\nconst EmptyCodeItem = () => (\n <Empty\n description={`Do not have the module code.\n (1) If you use the brief mode, there will not have any codes to show.\n (2) If you use lite mode, there will not have source codes.`}\n />\n);\n\nexport const ModuleCodeViewer: React.FC<{ data: SDK.ModuleData }> = ({\n data,\n}) => {\n const [tab, setTab] = useState('');\n const { t } = useI18n();\n\n const TAB_LAB_MAP: Record<string, string> = {\n source: 'Source Code',\n transformed: `Transformed Code(${t('After Compile')})`,\n parsedSource: `Bundled Code(${t('After Bundled')})`,\n };\n if (!data) return null;\n\n const { path } = data;\n\n return (\n <TextDrawer\n text=\"\"\n buttonProps={{\n size: 'small',\n icon: (\n <Popover content=\"Open the Codes Box\">\n <CodepenCircleOutlined />\n </Popover>\n ),\n type: 'default',\n }}\n buttonStyle={{ padding: `0 4px` }}\n drawerProps={{\n destroyOnClose: true,\n title: `Code of \"${path}\"`,\n }}\n >\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetModuleCodeByModuleId}\n body={{ moduleId: data.id }}\n >\n {(source) => {\n return (\n <>\n {!source['source'] &&\n !source['parsedSource'] &&\n !source['transformed'] ? (\n <EmptyCodeItem />\n ) : (\n <Card\n className=\"code-size-card\"\n style={{ width: '100%' }}\n tabList={Object.keys(omitBy(source, (s) => !s))\n .map((k) => ({ tab: k }))\n .map((e) => ({\n ...e,\n tab: TAB_LAB_MAP[e.tab],\n key: e.tab,\n }))}\n defaultActiveTabKey={\n source['parsedSource'] ? 'parsedSource' : 'source'\n }\n onTabChange={(v) => setTab(v)}\n tabBarExtraContent={\n <Popover\n placement=\"bottom\"\n title={\n <Typography.Title level={5}>Explain</Typography.Title>\n }\n content={\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n marginBottom: 30,\n }}\n >\n <div>\n <Typography.Text strong>Source: </Typography.Text>\n <Typography.Text>\n {TAB_MAP.source}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Transformed:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.transformed}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Bundled Source:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.parsedSource}\n </Typography.Text>\n </div>\n <br />\n <Typography.Text strong>{'More'}</Typography.Text>\n <Typography.Text>\n {t('CodeModeExplain')}\n </Typography.Text>\n </div>\n </>\n }\n trigger={'hover'}\n >\n <a href=\"#\">Explain</a>\n </Popover>\n }\n styles={{ body: { padding: 0, overflow: 'hidden' } }}\n >\n {source['parsedSource'] ||\n source['source'] ||\n source['transformed'] ? (\n <CodeViewer\n isEmbed\n code={\n tab\n ? source[tab as keyof SDK.ModuleSource]\n : source['parsedSource']\n ? source['parsedSource']\n : source['source']\n }\n filePath={path}\n />\n ) : (\n <EmptyCodeItem />\n )}\n </Card>\n )}\n </>\n );\n }}\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n\nexport const ModuleGraphViewer: React.FC<{\n id: number | string;\n show: boolean;\n setShow: (_show: boolean) => void;\n cwd: string;\n}> = ({ id, show, setShow, cwd }) => {\n if (!id) return null;\n\n return (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetAllModuleGraph} body={{}}>\n {(modules) => (\n <ModuleAnalyzeComponent\n cwd={cwd}\n moduleId={id}\n modules={modules}\n show={show}\n setShow={setShow}\n />\n )}\n </ServerAPIProvider>\n );\n};\n\nconst inlinedResourcePathKey = '__RESOURCEPATH__';\n\nexport function getChildrenModule(node: DataNode, mods: string[]) {\n node.children &&\n node.children.forEach((n: DataNode) => {\n if (n.isLeaf) {\n mods.push(n[inlinedResourcePathKey]);\n } else {\n getChildrenModule(n, mods);\n }\n });\n\n return mods;\n}\n\nexport const ModulesStatistics: React.FC<{\n modules: SDK.ModuleData[];\n chunks: SDK.ChunkData[];\n filteredModules: SDK.ModuleData[];\n}> = ({ modules, chunks, filteredModules }) => {\n const { sourceSize, parsedSize, filteredParsedSize, filteredSourceSize } =\n useMemo(() => {\n return {\n sourceSize: sumBy(modules, (e) => e.size.sourceSize),\n parsedSize: sumBy(modules, (e) => e.size.parsedSize),\n filteredSourceSize: sumBy(filteredModules, (e) => e.size.sourceSize),\n filteredParsedSize: sumBy(filteredModules, (e) => e.size.parsedSize),\n };\n }, [modules, filteredModules]);\n\n return (\n <Space>\n <Tooltip\n title={`total modules count is ${modules.length}, the filtered modules count is ${filteredModules.length}`}\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules: {filteredModules.length} / {modules.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules bundled size: {formatSize(parsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules source size: {formatSize(sourceSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules bundled size: {formatSize(filteredParsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules source size: {formatSize(filteredSourceSize)}\n </Typography.Text>\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules Size:\n {filteredParsedSize === parsedSize\n ? formatSize(parsedSize)\n : `${formatSize(filteredParsedSize)} / ${formatSize(parsedSize)}`}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n this asset includes {chunks.length} chunks:\n </Typography.Text>\n {chunks.map((e) => (\n <Bdg label=\"chunk\" value={e.name} key={e.name} />\n ))}\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Chunks: {chunks.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n </Space>\n );\n};\n\nexport const AssetDetail: React.FC<{\n asset: SDK.AssetData;\n chunks: SDK.ChunkData[];\n modules: SDK.ModuleData[];\n moduleSizeLimit?: number;\n height?: number;\n root: string;\n}> = ({\n asset,\n chunks: includeChunks,\n modules: includeModules,\n moduleSizeLimit,\n height,\n root,\n}) => {\n const [moduleKeyword, setModuleKeyword] = useState('');\n const [defaultExpandAll, setDefaultExpandAll] = useState(false);\n const [moduleJumpList, setModuleJumpList] = useState([] as number[]);\n const [show, setShow] = useState(false);\n\n const filteredModules = useMemo(() => {\n let res = includeModules.slice();\n if (moduleKeyword) {\n const regexp = new RegExp(moduleKeyword, 'i');\n res = res.filter((e) => regexp.test(e.path));\n }\n\n if (moduleSizeLimit) {\n res = res.filter((e) => e.size.parsedSize >= moduleSizeLimit);\n }\n\n return res;\n }, [includeModules, moduleKeyword, moduleSizeLimit]);\n\n const fileStructures = useMemo(() => {\n const res = createFileStructures({\n files: filteredModules.map((e) => e.path).filter(Boolean),\n inlinedResourcePathKey,\n fileTitle(file, basename) {\n const mod = filteredModules.find((e) => e.path === file)!;\n\n if (!mod) return basename;\n\n const { parsedSize = 0, sourceSize = 0 } = mod.size;\n const isConcatenation = mod.kind === SDK.ModuleKind.Concatenation;\n\n const containedOtherModules =\n !isConcatenation &&\n parsedSize === 0 &&\n includeModules.filter(\n (e) => e !== mod && e.modules && e.modules.indexOf(mod.id) > -1,\n );\n\n return (\n <div className={styles['bundle-tree']}>\n <div className={styles.box}>\n <div className={styles.keywords}>\n <Keyword ellipsis text={basename} keyword={''} />\n </div>\n\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n <Space>\n {parsedSize !== 0 ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Tag color={'orange'}>\n {`Bundled Size: ${formatSize(parsedSize)}`}\n </Tag>\n <Tag color={'volcano'}>\n {`Source Size: ${formatSize(sourceSize)}`}\n </Tag>\n </Space>\n }\n color={'white'}\n >\n <Tag color={'purple'} style={tagStyle}>\n {`Bundled Size: ${formatSize(parsedSize)}`}\n </Tag>\n </Tooltip>\n ) : sourceSize !== 0 ? (\n // fallback to display tag for source size\n <Tag color={'geekblue'}>\n {`Source Size: ${formatSize(sourceSize)}`}\n </Tag>\n ) : null}\n {isConcatenation ? (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n this is a concatenated module, it contains{' '}\n {mod.modules?.length} modules\n </Typography.Text>\n </Space>\n }\n >\n <Tag color=\"green\" style={tagStyle}>\n concatenated\n </Tag>\n </Tooltip>\n ) : null}\n {containedOtherModules && containedOtherModules.length ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n this is a concatenated module, it is be contained in\n these modules below:\n </Typography.Text>\n {containedOtherModules.map(({ id, path }) => {\n if (isJsDataUrl(path)) {\n return (\n <Typography.Paragraph\n ellipsis={{ rows: 4 }}\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {path}\n </Typography.Paragraph>\n );\n }\n\n const p = relative(dirname(mod.path), path);\n if (p.startsWith('javascript;charset=utf-8;base64,')) {\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n }\n\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n })}\n </Space>\n }\n >\n <Tag color=\"green\">concatenated</Tag>\n </Tooltip>\n ) : null}\n <Popover content=\"Open the Module Graph Box\">\n <DeploymentUnitOutlined\n onClick={() => {\n setModuleJumpList([mod.id]);\n setShow(true);\n }}\n />\n </Popover>\n <ModuleCodeViewer data={mod} />\n </Space>\n </div>\n );\n },\n dirTitle(dir, defaultTitle) {\n const mods: string[] = [];\n const paths = getChildrenModule(dir, mods);\n if (paths.length) {\n const mods = paths.map(\n (e) => includeModules.find((m) => m.path === e)!,\n );\n\n const parsedSize = sumBy(mods, (e) => e.size?.parsedSize || 0);\n const sourceSize = sumBy(mods, (e) => e.size?.sourceSize || 0);\n return (\n <div className={styles['bundle-tree']}>\n <div className={styles.box}>\n <div className={styles.keywords}>\n <Keyword ellipsis text={defaultTitle} keyword={''} />\n </div>\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n <Space>\n {parsedSize > 0 ? (\n <>\n <Tag style={tagStyle} color={'orange'}>\n {`Bundled: ${formatSize(parsedSize)}`}\n </Tag>\n <Tag style={tagStyle} color={'lime'}>\n {`Source: ${formatSize(sourceSize)}`}\n </Tag>\n </>\n ) : (\n <Tag style={tagStyle} color={'lime'}>\n {`Source: ${formatSize(sourceSize)}`}\n </Tag>\n )}\n </Space>\n </div>\n );\n }\n\n return defaultTitle;\n },\n page: 'bundle',\n });\n return res;\n }, [filteredModules]);\n\n const onSearch = (value: string) => setModuleKeyword(value);\n\n useEffect(() => {\n setModuleKeyword('');\n setDefaultExpandAll(false);\n }, [asset]);\n\n useEffect(() => {\n setDefaultExpandAll(false);\n }, [moduleKeyword]);\n\n return (\n <ModuleGraphListContext.Provider\n value={{ moduleJumpList, setModuleJumpList }}\n >\n <Card\n className={styles.bundle}\n title={`Modules of \"${asset.path}\"`}\n bodyStyle={{ minHeight: height }}\n size=\"small\"\n >\n {includeModules.length ? (\n <Row>\n <Col span={24}>\n <ModulesStatistics\n modules={includeModules}\n chunks={includeChunks}\n filteredModules={filteredModules}\n />\n </Col>\n <Col span={24}>\n <Space>\n <KeywordInput\n placeholder=\"search module by keyword\"\n onChange={onSearch}\n key={asset.path}\n />\n <Button\n onClick={() => setDefaultExpandAll(true)}\n size=\"small\"\n icon={<ColumnHeightOutlined />}\n />\n </Space>\n </Col>\n <Col span={24} style={{ marginTop: Size.BasePadding }}>\n {filteredModules.length ? (\n <DirectoryTree\n key={`tree_${moduleKeyword}_${defaultExpandAll}_${asset.path}`}\n selectable={false}\n defaultExpandAll={\n defaultExpandAll || filteredModules.length <= 20\n }\n onExpand={(expandedKeys) => {\n expandedModulesKeys = expandedKeys;\n }}\n defaultExpandParent\n defaultExpandedKeys={\n expandedModulesKeys?.length\n ? expandedModulesKeys\n : fileStructures.length === 1\n ? [fileStructures[0].key]\n : []\n }\n treeData={fileStructures as AntdDataNode[]}\n rootStyle={{\n maxHeight: '500px',\n overflow: 'auto',\n border: '1px solid rgba(235, 237, 241)',\n padding: '14px 20px',\n }}\n />\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${moduleKeyword}\" can't match any modules`}</Typography.Text>\n }\n />\n )}\n </Col>\n </Row>\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${asset.path}\" doesn't have any modules`}</Typography.Text>\n }\n />\n )}\n\n <ModuleGraphViewer\n id={\n moduleJumpList?.length\n ? moduleJumpList[moduleJumpList.length - 1]\n : ''\n }\n show={show}\n setShow={setShow}\n cwd={root}\n />\n </Card>\n </ModuleGraphListContext.Provider>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
1
|
+
{"version":3,"mappings":"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","names":["mods"],"ignoreList":[],"sources":["../../../../src/pages/BundleSize/components/asset.tsx"],"sourcesContent":["import {\n CodepenCircleOutlined,\n ColumnHeightOutlined,\n InfoCircleOutlined,\n} from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport {\n Button,\n Card,\n Col,\n Divider,\n Empty,\n Popover,\n Row,\n Space,\n Tag,\n Tooltip,\n Tree,\n Typography,\n} from 'antd';\nimport { DataNode as AntdDataNode } from 'antd/es/tree';\nimport { omitBy, sumBy } from 'lodash-es';\nimport { dirname, relative } from 'path';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { CodeViewer } from '../../../components/base';\nimport { Badge as Bdg } from '../../../components/Badge';\nimport { KeywordInput } from '../../../components/Form/keyword';\nimport { Keyword } from '../../../components/Keyword';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { TextDrawer } from '../../../components/TextDrawer';\nimport { Size } from '../../../constants';\nimport {\n DataNode,\n createFileStructures,\n formatSize,\n isJsDataUrl,\n useI18n,\n} from '../../../utils';\nimport { ModuleAnalyzeComponent } from '../../ModuleAnalyze';\nimport { ModuleGraphListContext } from '../config';\nimport styles from './index.module';\n\nconst { DirectoryTree } = Tree;\n\nlet expandedModulesKeys: React.Key[] = [];\nconst TAB_MAP = {\n source: 'source code',\n transformed: 'Transformed Code (After compile)',\n parsedSource: 'Bundled Code (After bundle and tree-shaking)',\n};\n\nconst tagStyle = {\n margin: 'none',\n marginInlineEnd: 0,\n};\n\nconst EmptyCodeItem = () => (\n <Empty\n description={`Do not have the module code.\n (1) If you use the brief mode, there will not have any codes to show.\n (2) If you use lite mode, there will not have source codes.`}\n />\n);\n\nexport const ModuleCodeViewer: React.FC<{ data: SDK.ModuleData }> = ({\n data,\n}) => {\n const [tab, setTab] = useState('');\n const { t } = useI18n();\n\n const TAB_LAB_MAP: Record<string, string> = {\n source: 'Source Code',\n transformed: `Transformed Code(${t('After Compile')})`,\n parsedSource: `Bundled Code(${t('After Bundled')})`,\n };\n if (!data) return null;\n\n const { path } = data;\n\n return (\n <TextDrawer\n text=\"\"\n buttonProps={{\n size: 'small',\n icon: (\n <Popover content=\"Open the Codes Box\">\n <CodepenCircleOutlined />\n </Popover>\n ),\n type: 'default',\n }}\n buttonStyle={{ padding: `0 4px` }}\n drawerProps={{\n destroyOnClose: true,\n title: `Code of \"${path}\"`,\n }}\n >\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetModuleCodeByModuleId}\n body={{ moduleId: data.id }}\n >\n {(source) => {\n return (\n <>\n {!source['source'] &&\n !source['parsedSource'] &&\n !source['transformed'] ? (\n <EmptyCodeItem />\n ) : (\n <Card\n className=\"code-size-card\"\n style={{ width: '100%' }}\n tabList={Object.keys(omitBy(source, (s) => !s))\n .map((k) => ({ tab: k }))\n .map((e) => ({\n ...e,\n tab: TAB_LAB_MAP[e.tab],\n key: e.tab,\n }))}\n defaultActiveTabKey={\n source['parsedSource'] ? 'parsedSource' : 'source'\n }\n onTabChange={(v) => setTab(v)}\n tabBarExtraContent={\n <Popover\n placement=\"bottom\"\n title={\n <Typography.Title level={5}>Explain</Typography.Title>\n }\n content={\n <>\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n marginBottom: 30,\n }}\n >\n <div>\n <Typography.Text strong>Source: </Typography.Text>\n <Typography.Text>\n {TAB_MAP.source}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Transformed:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.transformed}\n </Typography.Text>\n </div>\n <div>\n <Typography.Text strong>\n Bundled Source:\n </Typography.Text>\n <Typography.Text>\n {TAB_MAP.parsedSource}\n </Typography.Text>\n </div>\n <br />\n <Typography.Text strong>{'More'}</Typography.Text>\n <Typography.Text>\n {t('CodeModeExplain')}\n </Typography.Text>\n </div>\n </>\n }\n trigger={'hover'}\n >\n <a href=\"#\">Explain</a>\n </Popover>\n }\n styles={{ body: { padding: 0, overflow: 'hidden' } }}\n >\n {source['parsedSource'] ||\n source['source'] ||\n source['transformed'] ? (\n <CodeViewer\n isEmbed\n code={\n tab\n ? source[tab as keyof SDK.ModuleSource]\n : source['parsedSource']\n ? source['parsedSource']\n : source['source']\n }\n filePath={path}\n />\n ) : (\n <EmptyCodeItem />\n )}\n </Card>\n )}\n </>\n );\n }}\n </ServerAPIProvider>\n </TextDrawer>\n );\n};\n\nexport const ModuleGraphViewer: React.FC<{\n id: number | string;\n show: boolean;\n setShow: (_show: boolean) => void;\n cwd: string;\n}> = ({ id, show, setShow, cwd }) => {\n if (!id) return null;\n\n return (\n <ServerAPIProvider api={SDK.ServerAPI.API.GetAllModuleGraph} body={{}}>\n {(modules) => (\n <ModuleAnalyzeComponent\n cwd={cwd}\n moduleId={id}\n modules={modules}\n show={show}\n setShow={setShow}\n />\n )}\n </ServerAPIProvider>\n );\n};\n\nconst inlinedResourcePathKey = '__RESOURCEPATH__';\n\nexport function getChildrenModule(node: DataNode, mods: string[]) {\n node.children &&\n node.children.forEach((n: DataNode) => {\n if (n.isLeaf) {\n mods.push(n[inlinedResourcePathKey]);\n } else {\n getChildrenModule(n, mods);\n }\n });\n\n return mods;\n}\n\nexport const ModulesStatistics: React.FC<{\n modules: SDK.ModuleData[];\n chunks: SDK.ChunkData[];\n filteredModules: SDK.ModuleData[];\n}> = ({ modules, chunks, filteredModules }) => {\n const { sourceSize, parsedSize, filteredParsedSize, filteredSourceSize } =\n useMemo(() => {\n return {\n sourceSize: sumBy(modules, (e) => e.size.sourceSize),\n parsedSize: sumBy(modules, (e) => e.size.parsedSize),\n filteredSourceSize: sumBy(filteredModules, (e) => e.size.sourceSize),\n filteredParsedSize: sumBy(filteredModules, (e) => e.size.parsedSize),\n };\n }, [modules, filteredModules]);\n\n return (\n <Space>\n <Tooltip\n title={`total modules count is ${modules.length}, the filtered modules count is ${filteredModules.length}`}\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules: {filteredModules.length} / {modules.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules bundled size: {formatSize(parsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Total modules source size: {formatSize(sourceSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules bundled size: {formatSize(filteredParsedSize)}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n Filtered modules source size: {formatSize(filteredSourceSize)}\n </Typography.Text>\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Modules Size:\n {filteredParsedSize === parsedSize\n ? formatSize(parsedSize)\n : `${formatSize(filteredParsedSize)} / ${formatSize(parsedSize)}`}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n this asset includes {chunks.length} chunks:\n </Typography.Text>\n {chunks.map((e) => (\n <Bdg label=\"chunk\" value={e.name} key={e.name} />\n ))}\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n Chunks: {chunks.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n </Space>\n );\n};\n\nconst ConcatenatedTag = ({ moduleCount }: { moduleCount: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n This is a concatenated container module that includes {moduleCount}{' '}\n modules\n </Typography.Text>\n </Space>\n }\n >\n <Tag color=\"blue\" style={tagStyle}>\n concatenated container\n </Tag>\n </Tooltip>\n );\n};\n\nconst TotalBundledSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The total output size of all the files in this folder. If you\n enabled minification, this value shows the minified size.\n </Typography.Text>\n </Space>\n }\n >\n <Tag style={tagStyle} color={'geekblue'}>\n {`bundled size: ${formatSize(size)}`}\n </Tag>\n </Tooltip>\n );\n};\n\nconst BundledSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The final output size of this file. If you enabled minification,\n this value shows the minified size.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'geekblue'}>{`bundled size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nconst TotalSourceSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The total original size of all the files in this folder, before any\n transformations and minification.\n </Typography.Text>\n </Space>\n }\n >\n <Tag\n style={tagStyle}\n color={'cyan'}\n >{`source size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nconst SourceSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The original size of this file, before any transformations and\n minification.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'cyan'}>{`source size: ${formatSize(size)}`}</Tag>\n </Tooltip>\n );\n};\n\nexport const AssetDetail: React.FC<{\n asset: SDK.AssetData;\n chunks: SDK.ChunkData[];\n modules: SDK.ModuleData[];\n moduleSizeLimit?: number;\n height?: number;\n root: string;\n}> = ({\n asset,\n chunks: includeChunks,\n modules: includeModules,\n moduleSizeLimit,\n height,\n root,\n}) => {\n const [moduleKeyword, setModuleKeyword] = useState('');\n const [defaultExpandAll, setDefaultExpandAll] = useState(false);\n const [moduleJumpList, setModuleJumpList] = useState([] as number[]);\n const [show, setShow] = useState(false);\n\n const filteredModules = useMemo(() => {\n let res = includeModules.slice();\n if (moduleKeyword) {\n const regexp = new RegExp(moduleKeyword, 'i');\n res = res.filter((e) => regexp.test(e.path));\n }\n\n if (moduleSizeLimit) {\n res = res.filter((e) => e.size.parsedSize >= moduleSizeLimit);\n }\n\n return res;\n }, [includeModules, moduleKeyword, moduleSizeLimit]);\n\n const fileStructures = useMemo(() => {\n const res = createFileStructures({\n files: filteredModules.map((e) => e.path).filter(Boolean),\n inlinedResourcePathKey,\n fileTitle(file, basename) {\n const mod = filteredModules.find((e) => e.path === file)!;\n\n if (!mod) return basename;\n\n const { parsedSize = 0, sourceSize = 0 } = mod.size;\n const isConcatenation = mod.kind === SDK.ModuleKind.Concatenation;\n\n const containedOtherModules =\n !isConcatenation &&\n parsedSize === 0 &&\n includeModules.filter(\n (e) => e !== mod && e.modules && e.modules.indexOf(mod.id) > -1,\n );\n\n return (\n <div className={styles['bundle-tree']}>\n <Popover\n content={`Open the ${basename}’s module reasons tree.`}\n placement=\"bottom\"\n >\n <div\n className={styles.box}\n onClick={() => {\n setModuleJumpList([mod.id]);\n setShow(true);\n }}\n >\n <div className={styles.keywords}>\n <Keyword ellipsis text={basename} keyword={''} />\n </div>\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n </Popover>\n <Space>\n {parsedSize !== 0 ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <BundledSizeTag size={parsedSize} />\n <SourceSizeTag size={sourceSize} />\n </Space>\n }\n color={'white'}\n >\n <BundledSizeTag size={parsedSize} />\n </Tooltip>\n ) : sourceSize !== 0 ? (\n // fallback to display tag for source size\n <SourceSizeTag size={sourceSize} />\n ) : null}\n {isConcatenation ? (\n <ConcatenatedTag moduleCount={mod.modules?.length || 0} />\n ) : null}\n {containedOtherModules && containedOtherModules.length ? (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n This module is concatenated into another container\n module:\n </Typography.Text>\n {containedOtherModules.map(({ id, path }) => {\n if (isJsDataUrl(path)) {\n return (\n <Typography.Paragraph\n ellipsis={{ rows: 4 }}\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {path}\n </Typography.Paragraph>\n );\n }\n\n const p = relative(dirname(mod.path), path);\n if (p.startsWith('javascript;charset=utf-8;base64,')) {\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit', maxWidth: '100%' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n }\n\n return (\n <Typography.Text\n key={id}\n style={{ color: 'inherit' }}\n code\n >\n {p[0] === '.' ? p : `./${p}`}\n </Typography.Text>\n );\n })}\n </Space>\n }\n >\n <Tag color=\"green\">concatenated</Tag>\n </Tooltip>\n ) : null}\n\n <ModuleCodeViewer data={mod} />\n </Space>\n </div>\n );\n },\n dirTitle(dir, defaultTitle) {\n const mods: string[] = [];\n const paths = getChildrenModule(dir, mods);\n if (paths.length) {\n const mods = paths.map(\n (e) => includeModules.find((m) => m.path === e)!,\n );\n\n const parsedSize = sumBy(mods, (e) => e.size?.parsedSize || 0);\n const sourceSize = sumBy(mods, (e) => e.size?.sourceSize || 0);\n return (\n <div className={styles['bundle-tree']}>\n <div className={styles.box}>\n <div className={styles.keywords}>\n <Keyword ellipsis text={defaultTitle} keyword={''} />\n </div>\n <div className={styles.dividerDiv}>\n <Divider className={styles.divider} dashed />\n </div>\n </div>\n <Space>\n {parsedSize > 0 ? (\n <>\n <TotalBundledSizeTag size={parsedSize} />\n <TotalSourceSizeTag size={sourceSize} />\n </>\n ) : (\n <TotalSourceSizeTag size={sourceSize} />\n )}\n </Space>\n </div>\n );\n }\n\n return defaultTitle;\n },\n page: 'bundle',\n });\n return res;\n }, [filteredModules]);\n\n const onSearch = (value: string) => setModuleKeyword(value);\n\n useEffect(() => {\n setModuleKeyword('');\n setDefaultExpandAll(false);\n }, [asset]);\n\n useEffect(() => {\n setDefaultExpandAll(false);\n }, [moduleKeyword]);\n\n return (\n <ModuleGraphListContext.Provider\n value={{ moduleJumpList, setModuleJumpList }}\n >\n <Card\n className={styles.bundle}\n title={`Modules of \"${asset.path}\"`}\n bodyStyle={{ minHeight: height }}\n size=\"small\"\n >\n {includeModules.length ? (\n <Row>\n <Col span={24}>\n <ModulesStatistics\n modules={includeModules}\n chunks={includeChunks}\n filteredModules={filteredModules}\n />\n </Col>\n <Col span={24}>\n <Space>\n <KeywordInput\n placeholder=\"search module by keyword\"\n onChange={onSearch}\n key={asset.path}\n />\n <Button\n onClick={() => setDefaultExpandAll(true)}\n size=\"small\"\n icon={<ColumnHeightOutlined />}\n />\n </Space>\n </Col>\n <Col span={24} style={{ marginTop: Size.BasePadding }}>\n {filteredModules.length ? (\n <DirectoryTree\n key={`tree_${moduleKeyword}_${defaultExpandAll}_${asset.path}`}\n selectable={false}\n defaultExpandAll={\n defaultExpandAll || filteredModules.length <= 20\n }\n onExpand={(expandedKeys) => {\n expandedModulesKeys = expandedKeys;\n }}\n defaultExpandParent\n defaultExpandedKeys={\n expandedModulesKeys?.length\n ? expandedModulesKeys\n : fileStructures.length === 1\n ? [fileStructures[0].key]\n : []\n }\n treeData={fileStructures as AntdDataNode[]}\n rootStyle={{\n maxHeight: '500px',\n overflow: 'auto',\n border: '1px solid rgba(235, 237, 241)',\n padding: '14px 20px',\n }}\n />\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${moduleKeyword}\" can't match any modules`}</Typography.Text>\n }\n />\n )}\n </Col>\n </Row>\n ) : (\n <Empty\n description={\n <Typography.Text\n strong\n >{`\"${asset.path}\" doesn't have any modules`}</Typography.Text>\n }\n />\n )}\n\n <ModuleGraphViewer\n id={\n moduleJumpList?.length\n ? moduleJumpList[moduleJumpList.length - 1]\n : ''\n }\n show={show}\n setShow={setShow}\n cwd={root}\n />\n </Card>\n </ModuleGraphListContext.Provider>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Col, Empty } from "antd";
|
|
2
|
+
import { Col, Empty, Tag, Popover } from "antd";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
import { Size } from "../../constants";
|
|
5
5
|
import { FileTree } from "./components/fileTreeCom";
|
|
@@ -39,7 +39,7 @@ const ModuleFilesTree = (props) => {
|
|
|
39
39
|
needJumpto: true,
|
|
40
40
|
selectedChunk
|
|
41
41
|
}
|
|
42
|
-
) : /* @__PURE__ */ jsx(Empty, { className: `${clsNamePrefix}-empty` }) }) : /* @__PURE__ */ jsx(
|
|
42
|
+
) : /* @__PURE__ */ jsx(Empty, { className: `${clsNamePrefix}-empty` }) }) : activeTabKey === TabList[TabList.Dependencies] ? /* @__PURE__ */ jsx(
|
|
43
43
|
"div",
|
|
44
44
|
{
|
|
45
45
|
className: `${clsNamePrefix}-file-tree`,
|
|
@@ -53,7 +53,7 @@ const ModuleFilesTree = (props) => {
|
|
|
53
53
|
}
|
|
54
54
|
) : /* @__PURE__ */ jsx(Empty, { className: `${clsNamePrefix}-empty` }) })
|
|
55
55
|
}
|
|
56
|
-
) });
|
|
56
|
+
) : /* @__PURE__ */ jsx("div", { children: curModule.bailoutReason?.map((reason) => /* @__PURE__ */ jsx("div", { style: { marginBottom: 10 }, children: /* @__PURE__ */ jsx(Tag, { children: /* @__PURE__ */ jsx(Popover, { content: reason, children: /* @__PURE__ */ jsx("span", { style: { display: "inline-block" }, children: reason.length > 120 ? `${reason.slice(0, 120)}...` : reason }) }) }, reason) })) }) });
|
|
57
57
|
};
|
|
58
58
|
export {
|
|
59
59
|
ModuleFilesTree
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AA6CQ,mBAEI,WAFJ;AA5CR,SAAS,KAAK,
|
|
1
|
+
{"version":3,"mappings":"AA6CQ,mBAEI,WAFJ;AA5CR,SAAS,KAAK,OAAO,KAAK,eAAe;AACzC,SAAgB,WAAW,gBAAgB;AAC3C,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,SAAS,qBAAqB;AAC9B,OAAO,oBAAoB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,6BAA6B;AACtC,SAAS,eAAe;AAEjB,MAAM,kBAOR,CAAC,UAAU;AACd,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,IAAI;AACJ,QAAM,CAAC,iBAAiB,kBAAkB,IAAI;AAAA,IAC5C,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,MAAM,eAAe,IAAI;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,YAAU,MAAM;AACd,UAAM,YAAY,aAAa,WAAW,OAAO;AACjD,uBAAmB,SAAS;AAAA,EAC9B,GAAG,CAAC,WAAW,OAAO,CAAC;AAEvB,SACE,gCACG,2BAAiB,QAAQ,QAAQ,OAAO,IACvC,gCACG,4BACC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ;AAAA;AAAA,EACF,IAEA,oBAAC,SAAM,WAAW,GAAG,aAAa,UAAU,GAEhD,IACE,iBAAiB,QAAQ,QAAQ,YAAY,IAC/C;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,aAAa;AAAA,MAC3B,OAAO,EAAE,SAAS,KAAK,cAAc,EAAE;AAAA,MAEvC,8BAAC,OAAI,MAAM,IAAI,OAAO,EAAE,WAAW,KAAK,cAAc,EAAE,GACrD,sBACC;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ;AAAA,UACR;AAAA,UACA;AAAA;AAAA,MACF,IAEA,oBAAC,SAAM,WAAW,GAAG,aAAa,UAAU,GAEhD;AAAA;AAAA,EACF,IAEA,oBAAC,SACE,oBAAU,eAAe,IAAI,CAAC,WAC7B,oBAAC,SAAI,OAAO,EAAE,cAAc,GAAG,GAC7B,8BAAC,OACC,8BAAC,WAAQ,SAAS,QAChB,8BAAC,UAAK,OAAO,EAAE,SAAS,eAAe,GACpC,iBAAO,SAAS,MACb,GAAG,OAAO,MAAM,GAAG,GAAG,CAAC,QACvB,QACN,GACF,KAPQ,MAQV,GACF,CACD,GACH,GAEJ;AAEJ","names":[],"ignoreList":[],"sources":["../../../src/pages/ModuleAnalyze/fileTree.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport { Col, Empty, Tag, Popover } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport { Size } from '../../constants';\nimport { FileTree } from './components/fileTreeCom';\nimport { clsNamePrefix } from './constants';\nimport DependencyTree from './dependency';\nimport { getImporteds } from './utils';\nimport { useCreateFileTreeData } from './utils/hooks';\nimport { TabList } from './index';\n\nexport const ModuleFilesTree: React.FC<{\n modules: SDK.ModuleData[];\n dependencies: SDK.DependencyData[];\n curModule: SDK.ModuleData;\n cwd: string;\n selectedChunk: string;\n activeTabKey: string;\n}> = (props) => {\n const {\n curModule,\n modules,\n dependencies,\n cwd,\n activeTabKey,\n selectedChunk = '',\n } = props;\n const [importedModules, setImportedModules] = useState(\n [] as SDK.ModuleData[],\n );\n\n const { data: fileStructures } = useCreateFileTreeData(\n modules,\n importedModules,\n curModule,\n );\n\n useEffect(() => {\n const importeds = getImporteds(curModule, modules);\n setImportedModules(importeds);\n }, [curModule, modules]);\n\n return (\n <>\n {activeTabKey === TabList[TabList.Reasons] ? (\n <>\n {importedModules ? (\n <FileTree\n cwd={cwd}\n treeData={fileStructures}\n needCode={true}\n needShowAllTree={true}\n needJumpto={true}\n selectedChunk={selectedChunk}\n />\n ) : (\n <Empty className={`${clsNamePrefix}-empty`} />\n )}\n </>\n ) : activeTabKey === TabList[TabList.Dependencies] ? (\n <div\n className={`${clsNamePrefix}-file-tree`}\n style={{ padding: Size.BasePadding / 2 }}\n >\n <Col span={24} style={{ marginTop: Size.BasePadding / 2 }}>\n {curModule ? (\n <DependencyTree\n module={curModule}\n dependencies={dependencies}\n cwd={cwd}\n />\n ) : (\n <Empty className={`${clsNamePrefix}-empty`} />\n )}\n </Col>\n </div>\n ) : (\n <div>\n {curModule.bailoutReason?.map((reason) => (\n <div style={{ marginBottom: 10 }}>\n <Tag key={reason}>\n <Popover content={reason}>\n <span style={{ display: 'inline-block' }}>\n {reason.length > 120\n ? `${reason.slice(0, 120)}...`\n : reason}\n </span>\n </Popover>\n </Tag>\n </div>\n ))}\n </div>\n )}\n </>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
var TabList = /* @__PURE__ */ ((TabList2) => {
|
|
26
26
|
TabList2[TabList2["Reasons"] = 0] = "Reasons";
|
|
27
27
|
TabList2[TabList2["Dependencies"] = 1] = "Dependencies";
|
|
28
|
+
TabList2[TabList2["BailoutReason"] = 2] = "BailoutReason";
|
|
28
29
|
return TabList2;
|
|
29
30
|
})(TabList || {});
|
|
30
31
|
const tabslist = [
|
|
@@ -35,6 +36,10 @@ const tabslist = [
|
|
|
35
36
|
{
|
|
36
37
|
key: TabList[1 /* Dependencies */],
|
|
37
38
|
label: TabList[1 /* Dependencies */]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: TabList[2 /* BailoutReason */],
|
|
42
|
+
label: TabList[2 /* BailoutReason */]
|
|
38
43
|
}
|
|
39
44
|
];
|
|
40
45
|
const ModuleAnalyzeComponent = ({ modules, cwd, moduleId, show, setShow }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"
|
|
1
|
+
{"version":3,"mappings":"AAgEc,SACE,KADF;AAhEd,SAAS,WAAW;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAgB,gBAAgB;AAChC,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AACvC,SAAS,uBAAuB;AAChC,OAAO;AACP,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,IAAK,UAAL,kBAAKA,aAAL;AACL,EAAAA,kBAAA;AACA,EAAAA,kBAAA;AACA,EAAAA,kBAAA;AAHU,SAAAA;AAAA;AAMZ,MAAM,WAAW;AAAA,EACf;AAAA,IACE,KAAK,QAAQ,eAAe;AAAA,IAC5B,OAAO,QAAQ,eAAe;AAAA,EAChC;AAAA,EACA;AAAA,IACE,KAAK,QAAQ,oBAAoB;AAAA,IACjC,OAAO,QAAQ,oBAAoB;AAAA,EACrC;AAAA,EACA;AAAA,IACE,KAAK,QAAQ,qBAAqB;AAAA,IAClC,OAAO,QAAQ,qBAAqB;AAAA,EACtC;AACF;AAEO,MAAM,yBAMR,CAAC,EAAE,SAAS,KAAK,UAAU,MAAM,QAAQ,MAAM;AAClD,QAAM,CAAC,eAAe,iBAAiB,IAAI,SAAS,EAAY;AAChE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,QAAQ,eAAe,CAAC;AAEzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,IAAI,UAAU,IAAI;AAAA,MACvB,MAAM,EAAE,UAAU,CAAC,SAAS;AAAA,MAE3B,WAAC,EAAE,QAAQ,aAAa,MAAM;AAC7B,eACE;AAAA,UAAC;AAAA;AAAA,YACC,OACE,qBAAC,SAAI,WAAU,sBACb;AAAA,kCAAC,WAAW,MAAX,EAAiB,uBAAa,OAAO,IAAI,GAAE;AAAA,cAC5C;AAAA,gBAAC,WAAW;AAAA,gBAAX;AAAA,kBACC,OAAO,EAAE,UAAU,IAAI,OAAO,sBAAsB;AAAA,kBAEnD,6BAAmB,OAAO,IAAI;AAAA;AAAA,cACjC;AAAA,eACF;AAAA,YAEF,MAAM;AAAA,YACN,cAAY;AAAA,YACZ,OAAO,cAAc;AAAA,YACrB,SAAS,MAAM,QAAQ,KAAK;AAAA,YAE5B;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK,IAAI,UAAU,IAAI;AAAA,gBACvB,MAAM,CAAC;AAAA,gBAEN,WAAC,YAAY;AACZ,yBACE,oBAAC,uBAAuB,UAAvB,EACE,WAAC,EAAE,gBAAgB,kBAAkB,MAAM;AAC1C,2BACE;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO,EAAE,WAAW,IAAI;AAAA,wBACxB,SAAS;AAAA,wBACT;AAAA,wBACA,UAAU;AAAA,0BACR,MAAM;AAAA,0BACN,OAAO;AAAA,4BACL,UAAU;AAAA,0BACZ;AAAA,wBACF;AAAA,wBACA,aAAa,CAAC,MAAM,gBAAgB,CAAC;AAAA,wBACrC,QAAQ;AAAA,0BACN,OAAO,EAAE,YAAY,EAAE;AAAA,wBACzB;AAAA,wBACA,OACE,qBAAC,SAAM,OAAO,EAAE,SAAS,WAAW,GAClC;AAAA;AAAA,4BAAC;AAAA;AAAA,8BACC,SAAS,MAAM;AACb,sCAAM,QAAQ;AAAA,kCACZ,GAAG,eAAe,MAAM,GAAG,EAAE;AAAA,gCAC/B;AACA,kDAAkB,KAAK;AAAA,8BACzB;AAAA;AAAA,0BACF;AAAA,0BACA,oBAAC,WAAW,MAAX,EAAgB,kDAEjB;AAAA,0BACA;AAAA,4BAAC;AAAA;AAAA,8BACC,SACE,oBAAC,SACC,+BAAC,SACC;AAAA,oDAAC,SAAM,QAAO,WAAU,MAAK,KAAI;AAAA,gCACjC,oBAAC,sBAAmB;AAAA,gCACpB,oBAAC,WAAW,MAAX,EAEG,iGAEJ;AAAA,iCACF,GACF;AAAA,8BAEF,OAAM;AAAA,8BAEN,8BAAC,0BAAuB;AAAA;AAAA,0BAC1B;AAAA,2BACF;AAAA,wBAGF,8BAAC,OAAI,SAAQ,SAAQ,OAAM,UACzB,8BAAC,OAAI,MAAM,IACT;AAAA,0BAAC;AAAA;AAAA,4BACC,WAAW;AAAA,4BACX;AAAA,4BACA;AAAA,4BACA;AAAA,4BACA;AAAA,4BACA;AAAA;AAAA,wBACF,GACF,GACF;AAAA;AAAA,oBACF;AAAA,kBAEJ,GACF;AAAA,gBAEJ;AAAA;AAAA,YACF;AAAA;AAAA,QACF;AAAA,MAEJ;AAAA;AAAA,EACF;AAEJ","names":["TabList"],"ignoreList":[],"sources":["../../../src/pages/ModuleAnalyze/index.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport {\n Badge,\n Card,\n Col,\n Drawer,\n Popover,\n Row,\n Space,\n Typography,\n} from 'antd';\nimport React, { useState } from 'react';\nimport { ServerAPIProvider } from '../../components/Manifest';\nimport { getShortPath } from '../../utils';\nimport { ModuleGraphListContext } from '../BundleSize/config';\nimport { ModuleFilesTree } from './fileTree';\nimport './index.css';\nimport { drawerWidth } from '../../constants';\nimport {\n LeftSquareOutlined,\n QuestionCircleOutlined,\n RightSquareTwoTone,\n} from '@ant-design/icons';\n\nexport enum TabList {\n Reasons,\n Dependencies,\n BailoutReason,\n}\n\nconst tabslist = [\n {\n key: TabList[TabList.Reasons],\n label: TabList[TabList.Reasons],\n },\n {\n key: TabList[TabList.Dependencies],\n label: TabList[TabList.Dependencies],\n },\n {\n key: TabList[TabList.BailoutReason],\n label: TabList[TabList.BailoutReason],\n },\n] as unknown as { key: string; label: string }[];\n\nexport const ModuleAnalyzeComponent: React.FC<{\n modules: SDK.ModuleData[];\n cwd: string;\n moduleId: string | number;\n show: boolean;\n setShow: (arg: boolean) => void;\n}> = ({ modules, cwd, moduleId, show, setShow }) => {\n const [selectedChunk, _setSelectedChunk] = useState('' as string);\n const [activeTabKey, setActiveTabKey] = useState(TabList[TabList.Reasons]);\n\n return (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetModuleDetails}\n body={{ moduleId: +moduleId }}\n >\n {({ module, dependencies }) => {\n return (\n <Drawer\n title={\n <div className=\"module-analyze-box\">\n <Typography.Text>{getShortPath(module.path)}</Typography.Text>\n <Typography.Text\n style={{ fontSize: 12, color: 'rgba(0, 0, 0, 0.45)' }}\n >\n {`Current Module: ${module.path}`}\n </Typography.Text>\n </div>\n }\n open={show}\n maskClosable\n width={drawerWidth * 0.8}\n onClose={() => setShow(false)}\n >\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAllChunkGraph}\n body={{}}\n >\n {(_chunks) => {\n return (\n <ModuleGraphListContext.Consumer>\n {({ moduleJumpList, setModuleJumpList }) => {\n return (\n <Card\n style={{ minHeight: 400 }}\n tabList={tabslist}\n activeTabKey={activeTabKey}\n tabProps={{\n size: 'small',\n style: {\n fontSize: 12,\n },\n }}\n onTabChange={(k) => setActiveTabKey(k)}\n styles={{\n title: { paddingTop: 0 },\n }}\n title={\n <Space style={{ padding: '10px 0px' }}>\n <LeftSquareOutlined\n onClick={() => {\n const _list = [\n ...moduleJumpList.slice(0, -1),\n ];\n setModuleJumpList(_list);\n }}\n />\n <Typography.Text>\n Current Module Imported Reasons Tree\n </Typography.Text>\n <Popover\n content={\n <div>\n <div>\n <Badge status=\"success\" text=\" \" />\n <RightSquareTwoTone />\n <Typography.Text>\n {\n ': Jump button, click to jump to the Module dependency analysis page of this module.'\n }\n </Typography.Text>\n </div>\n </div>\n }\n title=\"Usage\"\n >\n <QuestionCircleOutlined />\n </Popover>\n </Space>\n }\n >\n <Row justify=\"start\" align=\"middle\">\n <Col span={24}>\n <ModuleFilesTree\n curModule={module}\n modules={modules}\n dependencies={dependencies}\n cwd={cwd}\n selectedChunk={selectedChunk}\n activeTabKey={activeTabKey}\n />\n </Col>\n </Row>\n </Card>\n );\n }}\n </ModuleGraphListContext.Consumer>\n );\n }}\n </ServerAPIProvider>\n </Drawer>\n );\n }}\n </ServerAPIProvider>\n );\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -1,15 +1,38 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { LoaderAnalysis } from "../../../components/Loader/Analysis";
|
|
3
3
|
import { WebpackConfigurationViewer } from "../../../components/Configuration";
|
|
4
4
|
import { Card } from "../../../components/Card";
|
|
5
|
-
import { theme } from "antd";
|
|
5
|
+
import { Popover, Space, Tag, theme, Typography } from "antd";
|
|
6
|
+
import { ExclamationCircleOutlined } from "@ant-design/icons";
|
|
7
|
+
import { t } from "i18next";
|
|
6
8
|
const { useToken } = theme;
|
|
7
9
|
const Page = () => {
|
|
8
10
|
const { token } = useToken();
|
|
9
11
|
return /* @__PURE__ */ jsx(
|
|
10
12
|
Card,
|
|
11
13
|
{
|
|
12
|
-
title:
|
|
14
|
+
title: /* @__PURE__ */ jsxs(Space, { align: "baseline", children: [
|
|
15
|
+
/* @__PURE__ */ jsx(Typography.Title, { level: 5, style: { margin: 0 }, children: "Loader Analysis" }),
|
|
16
|
+
/* @__PURE__ */ jsx(
|
|
17
|
+
Popover,
|
|
18
|
+
{
|
|
19
|
+
content: /* @__PURE__ */ jsxs("div", { children: [
|
|
20
|
+
t("AsyncLoaderInfo"),
|
|
21
|
+
/* @__PURE__ */ jsx(
|
|
22
|
+
"a",
|
|
23
|
+
{
|
|
24
|
+
href: "https://rsdoctor.rs/guide/more/faq#cssextractrspackplugin-%E7%9A%84-loader-%E8%80%97%E6%97%B6%E8%BF%87%E9%95%BF%E9%97%AE%E9%A2%98",
|
|
25
|
+
target: "_blank",
|
|
26
|
+
rel: "noreferrer",
|
|
27
|
+
children: t("Details")
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
] }),
|
|
31
|
+
title: "Info",
|
|
32
|
+
children: /* @__PURE__ */ jsx(Tag, { icon: /* @__PURE__ */ jsx(ExclamationCircleOutlined, {}), color: "warning", children: "Info" })
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
] }),
|
|
13
36
|
extra: /* @__PURE__ */ jsx(WebpackConfigurationViewer, { defaultKeys: ["module", "resolve"] }),
|
|
14
37
|
bodyStyle: { paddingTop: token.padding, height: 800 },
|
|
15
38
|
children: /* @__PURE__ */ jsx(LoaderAnalysis, {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"
|
|
1
|
+
{"version":3,"mappings":"AAgBU,cAKI,YALJ;AAfV,SAAS,sBAAsB;AAC/B,SAAS,kCAAkC;AAC3C,SAAS,YAAY;AACrB,SAAS,SAAS,OAAO,KAAK,OAAO,kBAAkB;AACvD,SAAS,iCAAiC;AAC1C,SAAS,SAAS;AAClB,MAAM,EAAE,SAAS,IAAI;AAEd,MAAM,OAAiB,MAAM;AAClC,QAAM,EAAE,MAAM,IAAI,SAAS;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OACE,qBAAC,SAAM,OAAM,YACX;AAAA,4BAAC,WAAW,OAAX,EAAiB,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,6BAElD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SACE,qBAAC,SACE;AAAA,gBAAE,iBAAiB;AAAA,cACpB;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,QAAO;AAAA,kBACP,KAAI;AAAA,kBAEH,YAAE,SAAS;AAAA;AAAA,cACd;AAAA,eACF;AAAA,YAEF,OAAM;AAAA,YAEN,8BAAC,OAAI,MAAM,oBAAC,6BAA0B,GAAI,OAAM,WAAU,kBAE1D;AAAA;AAAA,QACF;AAAA,SACF;AAAA,MAEF,OAAO,oBAAC,8BAA2B,aAAa,CAAC,UAAU,SAAS,GAAG;AAAA,MACvE,WAAW,EAAE,YAAY,MAAM,SAAS,QAAQ,IAAI;AAAA,MAEpD,8BAAC,kBAAe;AAAA;AAAA,EAClB;AAEJ;AAEA,cAAc","names":[],"ignoreList":[],"sources":["../../../../src/pages/WebpackLoaders/Analysis/index.tsx"],"sourcesContent":["import React from 'react';\nimport { LoaderAnalysis } from '../../../components/Loader/Analysis';\nimport { WebpackConfigurationViewer } from '../../../components/Configuration';\nimport { Card } from '../../../components/Card';\nimport { Popover, Space, Tag, theme, Typography } from 'antd';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\nimport { t } from 'i18next';\nconst { useToken } = theme;\n\nexport const Page: React.FC = () => {\n const { token } = useToken();\n\n return (\n <Card\n title={\n <Space align=\"baseline\">\n <Typography.Title level={5} style={{ margin: 0 }}>\n Loader Analysis\n </Typography.Title>\n <Popover\n content={\n <div>\n {t('AsyncLoaderInfo')}\n <a\n href=\"https://rsdoctor.rs/guide/more/faq#cssextractrspackplugin-%E7%9A%84-loader-%E8%80%97%E6%97%B6%E8%BF%87%E9%95%BF%E9%97%AE%E9%A2%98\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {t('Details')}\n </a>\n </div>\n }\n title=\"Info\"\n >\n <Tag icon={<ExclamationCircleOutlined />} color=\"warning\">\n Info\n </Tag>\n </Popover>\n </Space>\n }\n extra={<WebpackConfigurationViewer defaultKeys={['module', 'resolve']} />}\n bodyStyle={{ paddingTop: token.padding, height: 800 }}\n >\n <LoaderAnalysis />\n </Card>\n );\n};\n\nexport * from './constants';\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
|
@@ -1,12 +1,37 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { WebpackConfigurationViewer } from "../../../components/Configuration";
|
|
3
3
|
import { Card } from "../../../components/Card";
|
|
4
4
|
import { LoaderChart } from "../../../components/Charts";
|
|
5
|
+
import { Popover, Space, Tag, Typography } from "antd/lib";
|
|
6
|
+
import { ExclamationCircleOutlined } from "@ant-design/icons";
|
|
7
|
+
import { useTranslation } from "react-i18next";
|
|
5
8
|
const Page = () => {
|
|
9
|
+
const { t } = useTranslation();
|
|
6
10
|
return /* @__PURE__ */ jsx(
|
|
7
11
|
Card,
|
|
8
12
|
{
|
|
9
|
-
title:
|
|
13
|
+
title: /* @__PURE__ */ jsxs(Space, { align: "baseline", children: [
|
|
14
|
+
/* @__PURE__ */ jsx(Typography.Title, { level: 5, style: { margin: 0 }, children: "Loader Timeline" }),
|
|
15
|
+
/* @__PURE__ */ jsx(
|
|
16
|
+
Popover,
|
|
17
|
+
{
|
|
18
|
+
content: /* @__PURE__ */ jsxs("div", { children: [
|
|
19
|
+
t("AsyncLoaderInfo"),
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
"a",
|
|
22
|
+
{
|
|
23
|
+
href: "https://rsdoctor.rs/guide/more/faq#cssextractrspackplugin-%E7%9A%84-loader-%E8%80%97%E6%97%B6%E8%BF%87%E9%95%BF%E9%97%AE%E9%A2%98",
|
|
24
|
+
target: "_blank",
|
|
25
|
+
rel: "noreferrer",
|
|
26
|
+
children: t("Details")
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
] }),
|
|
30
|
+
title: "Info",
|
|
31
|
+
children: /* @__PURE__ */ jsx(Tag, { icon: /* @__PURE__ */ jsx(ExclamationCircleOutlined, {}), color: "warning", children: "Info" })
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
] }),
|
|
10
35
|
extra: /* @__PURE__ */ jsx(WebpackConfigurationViewer, { defaultKeys: ["module"] }),
|
|
11
36
|
children: /* @__PURE__ */ jsx(LoaderChart, {})
|
|
12
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"
|
|
1
|
+
{"version":3,"mappings":"AAcU,cAKI,YALJ;AAbV,SAAS,kCAAkC;AAC3C,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAC5B,SAAS,SAAS,OAAO,KAAK,kBAAkB;AAChD,SAAS,iCAAiC;AAC1C,SAAS,sBAAsB;AAExB,MAAM,OAAiB,MAAM;AAClC,QAAM,EAAE,EAAE,IAAI,eAAe;AAC7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OACE,qBAAC,SAAM,OAAM,YACX;AAAA,4BAAC,WAAW,OAAX,EAAiB,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,6BAElD;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,SACE,qBAAC,SACE;AAAA,gBAAE,iBAAiB;AAAA,cACpB;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,QAAO;AAAA,kBACP,KAAI;AAAA,kBAEH,YAAE,SAAS;AAAA;AAAA,cACd;AAAA,eACF;AAAA,YAEF,OAAM;AAAA,YAEN,8BAAC,OAAI,MAAM,oBAAC,6BAA0B,GAAI,OAAM,WAAU,kBAE1D;AAAA;AAAA,QACF;AAAA,SACF;AAAA,MAEF,OAAO,oBAAC,8BAA2B,aAAa,CAAC,QAAQ,GAAG;AAAA,MAE5D,8BAAC,eAAY;AAAA;AAAA,EACf;AAEJ;AAEA,cAAc","names":[],"ignoreList":[],"sources":["../../../../src/pages/WebpackLoaders/Overall/index.tsx"],"sourcesContent":["import React from 'react';\nimport { WebpackConfigurationViewer } from '../../../components/Configuration';\nimport { Card } from '../../../components/Card';\nimport { LoaderChart } from '../../../components/Charts';\nimport { Popover, Space, Tag, Typography } from 'antd/lib';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\nimport { useTranslation } from 'react-i18next';\n\nexport const Page: React.FC = () => {\n const { t } = useTranslation();\n return (\n <Card\n title={\n <Space align=\"baseline\">\n <Typography.Title level={5} style={{ margin: 0 }}>\n Loader Timeline\n </Typography.Title>\n <Popover\n content={\n <div>\n {t('AsyncLoaderInfo')}\n <a\n href=\"https://rsdoctor.rs/guide/more/faq#cssextractrspackplugin-%E7%9A%84-loader-%E8%80%97%E6%97%B6%E8%BF%87%E9%95%BF%E9%97%AE%E9%A2%98\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {t('Details')}\n </a>\n </div>\n }\n title=\"Info\"\n >\n <Tag icon={<ExclamationCircleOutlined />} color=\"warning\">\n Info\n </Tag>\n </Popover>\n </Space>\n }\n extra={<WebpackConfigurationViewer defaultKeys={['module']} />}\n >\n <LoaderChart />\n </Card>\n );\n};\n\nexport * from './constants';\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
package/dist/utils/i18n/cn.js
CHANGED
|
@@ -30,7 +30,9 @@ const cn = {
|
|
|
30
30
|
"After Compile": "编译后",
|
|
31
31
|
"After Bundle": "打包后",
|
|
32
32
|
CodeModeExplain: "Lite 模式下或纯 stats.json 上传的情况下只有 source code.",
|
|
33
|
-
DuplicatePakCodeExplain: "纯 stats.json 输入的情况下没有代码,可使用 Rsdoctor 插件参与构建会有对应代码。"
|
|
33
|
+
DuplicatePakCodeExplain: "纯 stats.json 输入的情况下没有代码,可使用 Rsdoctor 插件参与构建会有对应代码。",
|
|
34
|
+
AsyncLoaderInfo: "对于异步 loader,单个 loader 的耗时可能不准确。例如:mini-css-extract-plugin 的 loader。",
|
|
35
|
+
Details: "详情"
|
|
34
36
|
};
|
|
35
37
|
var cn_default = cn;
|
|
36
38
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AAEA,MAAM,KAAgB;AAAA,EACpB,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBACE;AAAA,EACF,oBACE;AAAA,EAEF,gEACE;AAAA;AAAA,EAGF,sBAAsB;AAAA,EACtB,uEACE;AAAA,EACF,iEACE;AAAA,EACF,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,yBACE;
|
|
1
|
+
{"version":3,"mappings":"AAEA,MAAM,KAAgB;AAAA,EACpB,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBACE;AAAA,EACF,oBACE;AAAA,EAEF,gEACE;AAAA;AAAA,EAGF,sBAAsB;AAAA,EACtB,uEACE;AAAA,EACF,iEACE;AAAA,EACF,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,yBACE;AAAA,EACF,iBACE;AAAA,EACF,SAAS;AACX;AAEA,IAAO,aAAQ","names":[],"ignoreList":[],"sources":["../../../src/utils/i18n/cn.ts"],"sourcesContent":["import en from './en';\n// TODO: fix this\nconst cn: typeof en = {\n Overall: '概览',\n 'Compile Analysis': '编译分析',\n 'Bundle Alerts': '编译预警',\n 'Help Center': '帮助中心',\n 'Rsdoctor Introduction': 'Rsdoctor 介绍',\n 'Compilation Alerts': '编译预警',\n 'Plugins Analysis': 'Plugins 分析',\n LoadersAnalysis: 'Loaders 分析',\n 'Loaders Timeline': 'Loaders 概览',\n 'Loaders Analysis': 'Loaders 分析',\n PluginsAnalysis: 'Plugins 分析',\n ModuleResolve: 'Module Resolve 分析',\n 'Bundle Analysis': '产物分析',\n BundleSize: '产物体积分析',\n 'Module Graph': 'Module Graph',\n TreeShaking: 'Tree Shaking',\n 'Rule Index': '错误索引信息',\n Resources: '资源',\n 'Project Overall': '项目信息概览',\n 'Compile Overall': '编译数据概览',\n 'Bundle Overall': '产物数据概览',\n 'Expand Omitted':\n ' reasons 树会默认折叠中间的第三方引入的模块,点击这个图标可以查看完整树图',\n 'Concatenated Tag':\n '串联模块,hover 上去可以显示聚合成的主模块名称。注:聚合模块 bundled size 为零,有可能是因为被聚合到了主模块中。',\n\n 'the file content not changed after transpiled by this loader':\n '该文件内容在 loader 处理前后没有发生变化',\n\n /** Bundle Size */\n 'Output Assets List': '产物文件列表',\n 'filter the output assets which size is greater than the input value':\n '筛选大小大于输入值的产物文件',\n 'filter the modules which size is greater than the input value':\n '筛选大小大于输入值的模块',\n 'After Compile': '编译后',\n 'After Bundle': '打包后',\n CodeModeExplain: 'Lite 模式下或纯 stats.json 上传的情况下只有 source code.',\n DuplicatePakCodeExplain:\n '纯 stats.json 输入的情况下没有代码,可使用 Rsdoctor 插件参与构建会有对应代码。',\n AsyncLoaderInfo:\n '对于异步 loader,单个 loader 的耗时可能不准确。例如:mini-css-extract-plugin 的 loader。',\n Details: '详情',\n};\n\nexport default cn;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IiIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W119"]}
|
package/dist/utils/i18n/en.d.ts
CHANGED
package/dist/utils/i18n/en.js
CHANGED
|
@@ -30,7 +30,9 @@ const en = {
|
|
|
30
30
|
"After Compile": "After Compile",
|
|
31
31
|
"After Bundle": "After Bundle",
|
|
32
32
|
CodeModeExplain: "In lite mode or pure stats.json upload, only source code.",
|
|
33
|
-
DuplicatePakCodeExplain: "There is no code, when in the case of pure stats.json."
|
|
33
|
+
DuplicatePakCodeExplain: "There is no code, when in the case of pure stats.json.",
|
|
34
|
+
AsyncLoaderInfo: "For async loaders, the time cost of each loader is not accurate. For example: mini-css-extract-plugin's loader.",
|
|
35
|
+
Details: "Details"
|
|
34
36
|
};
|
|
35
37
|
var en_default = en;
|
|
36
38
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"AACA,MAAM,KAAK;AAAA,EACT,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBACE;AAAA,EACF,oBACE;AAAA,EAEF,gEACE;AAAA;AAAA,EAGF,sBAAsB;AAAA,EACtB,uEACE;AAAA,EACF,iEACE;AAAA,EACF,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,yBACE;
|
|
1
|
+
{"version":3,"mappings":"AACA,MAAM,KAAK;AAAA,EACT,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,kBACE;AAAA,EACF,oBACE;AAAA,EAEF,gEACE;AAAA;AAAA,EAGF,sBAAsB;AAAA,EACtB,uEACE;AAAA,EACF,iEACE;AAAA,EACF,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,yBACE;AAAA,EACF,iBACE;AAAA,EACF,SAAS;AACX;AAEA,IAAO,aAAQ","names":[],"ignoreList":[],"sources":["../../../src/utils/i18n/en.ts"],"sourcesContent":["// TODO: fix this\nconst en = {\n Overall: 'Overall',\n 'Compile Analysis': 'Compile Analysis',\n 'Bundle Alerts': 'Bundle Alerts',\n 'Help Center': 'Help Center',\n LoadersAnalysis: 'Loaders Analysis',\n 'Loaders Timeline': 'Loaders Timeline',\n 'Loaders Analysis': 'Loaders Analysis',\n 'Rsdoctor Introduction': 'Rsdoctor Introduction',\n 'Compilation Alerts': 'Compilation Alerts',\n 'Plugins Analysis': 'Plugins Analysis',\n PluginsAnalysis: 'Plugins Analysis',\n ModuleResolve: 'Module Resolve',\n 'Bundle Analysis': 'Bundle Analysis',\n BundleSize: 'Bundle Size',\n 'Module Graph': 'Module Graph',\n TreeShaking: 'Tree Shaking',\n 'Rule Index': 'Rule Index',\n Resources: 'Resources',\n 'Project Overall': 'Project Overall',\n 'Compile Overall': 'Compile Overall',\n 'Bundle Overall': 'Bundle Overall',\n 'Expand Omitted':\n 'By default, the reasons tree collapses to the middle of the module introduced by a third party. Click on this icon to view the full tree diagram',\n 'Concatenated Tag':\n 'Concatenated Module,hover can display the name of the concatenated main module. Note: the bundled size of the concatenated module is zero, possibly because it is aggregated into the main module.',\n\n 'the file content not changed after transpiled by this loader':\n 'the file content not changed after transpiled by this loader',\n\n /** Bundle Size */\n 'Output Assets List': 'Output Assets List',\n 'filter the output assets which size is greater than the input value':\n 'filter the output assets which size is greater than the input value',\n 'filter the modules which size is greater than the input value':\n 'filter the modules which size is greater than the input value',\n 'After Compile': 'After Compile',\n 'After Bundle': 'After Bundle',\n CodeModeExplain: 'In lite mode or pure stats.json upload, only source code.',\n DuplicatePakCodeExplain:\n 'There is no code, when in the case of pure stats.json.',\n AsyncLoaderInfo:\n \"For async loaders, the time cost of each loader is not accurate. For example: mini-css-extract-plugin's loader.\",\n Details: 'Details',\n};\n\nexport default en;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdoctor/components",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@types/lodash-es": "4.17.12",
|
|
45
45
|
"@types/node": "^22.8.1",
|
|
46
46
|
"@types/path-browserify": "1.0.3",
|
|
47
|
-
"@types/react": "^18.3.
|
|
47
|
+
"@types/react": "^18.3.23",
|
|
48
48
|
"@types/react-highlight-words": "^0.20.0",
|
|
49
49
|
"@types/url-parse": "1.4.11",
|
|
50
50
|
"react": "18.3.1",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@monaco-editor/react": "4.7.0",
|
|
56
56
|
"ansi-to-react": "6.1.6",
|
|
57
57
|
"antd": "5.19.1",
|
|
58
|
-
"axios": "^1.
|
|
58
|
+
"axios": "^1.10.0",
|
|
59
59
|
"clsx": "^2.1.1",
|
|
60
60
|
"dayjs": "1.11.13",
|
|
61
61
|
"echarts": "^5.6.0",
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
"react-router-dom": "6.4.3",
|
|
75
75
|
"socket.io-client": "4.6.1",
|
|
76
76
|
"url-parse": "1.5.10",
|
|
77
|
-
"@rsdoctor/graph": "1.1.
|
|
78
|
-
"@rsdoctor/utils": "1.1.
|
|
79
|
-
"@rsdoctor/types": "1.1.
|
|
77
|
+
"@rsdoctor/graph": "1.1.4",
|
|
78
|
+
"@rsdoctor/utils": "1.1.4",
|
|
79
|
+
"@rsdoctor/types": "1.1.4"
|
|
80
80
|
},
|
|
81
81
|
"publishConfig": {
|
|
82
82
|
"access": "public",
|