@rsdoctor/components 1.3.3 → 1.3.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/components/Alert/package-relation.mjs +1 -1
- package/dist/components/Alert/package-relation.mjs.map +1 -1
- package/dist/components/Alerts/collapse.mjs +1 -1
- package/dist/components/Alerts/collapse.mjs.map +1 -1
- package/dist/components/Card/size.mjs +1 -1
- package/dist/components/Card/size.mjs.map +1 -1
- package/dist/components/Charts/TimelineCharts/index.mjs +1 -1
- package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
- package/dist/components/Charts/loader.mjs +1 -1
- package/dist/components/Charts/loader.mjs.map +1 -1
- package/dist/components/Charts/utils.mjs +1 -1
- package/dist/components/Charts/utils.mjs.map +1 -1
- package/dist/components/Loader/Analysis/files.mjs +1 -1
- package/dist/components/Loader/Analysis/files.mjs.map +1 -1
- package/dist/components/Manifest/api.mjs +1 -1
- package/dist/components/Manifest/api.mjs.map +1 -1
- package/dist/components/Overall/bundle_module.css +0 -1
- package/dist/components/Overall/bundle_module.css.map +1 -1
- package/dist/components/Overall/help-center_module.css +0 -2
- package/dist/components/Overall/help-center_module.css.map +1 -1
- package/dist/components/Overall/list_module.css +12 -2
- package/dist/components/Overall/list_module.css.map +1 -1
- package/dist/components/Overall/project_module.css +0 -1
- package/dist/components/Overall/project_module.css.map +1 -1
- package/dist/components/Plugins/webpack.mjs +1 -1
- package/dist/components/Plugins/webpack.mjs.map +1 -1
- package/dist/components/Resolver/analysis.mjs +1 -1
- package/dist/components/Resolver/analysis.mjs.map +1 -1
- package/dist/components/Title/index.mjs +2 -2
- package/dist/components/Title/index.mjs.map +1 -1
- package/dist/components/base/CodeViewer/utils.mjs +1 -1
- package/dist/components/base/CodeViewer/utils.mjs.map +1 -1
- package/dist/pages/BundleSize/components/asset.mjs +1 -1
- package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.mjs +1 -1
- package/dist/pages/BundleSize/components/index.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index_module.css +6 -2
- package/dist/pages/BundleSize/components/index_module.css.map +1 -1
- package/dist/pages/ModuleAnalyze/chunks.mjs +1 -1
- package/dist/pages/ModuleAnalyze/chunks.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs +11 -2
- package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs.map +1 -1
- package/dist/pages/TreeShaking/index.css +28 -4
- package/dist/pages/TreeShaking/index.css.map +1 -1
- package/dist/pages/TreeShaking/utils.mjs +2 -2
- package/dist/pages/TreeShaking/utils.mjs.map +1 -1
- package/dist/utils/data/local.mjs +1 -1
- package/dist/utils/data/local.mjs.map +1 -1
- package/dist/utils/data/remote.mjs +1 -1
- package/dist/utils/data/remote.mjs.map +1 -1
- package/dist/utils/file.mjs +1 -1
- package/dist/utils/file.mjs.map +1 -1
- package/dist/utils/hooks.mjs +1 -1
- package/dist/utils/hooks.mjs.map +1 -1
- package/dist/utils/stats.mjs +1 -1
- package/dist/utils/stats.mjs.map +1 -1
- package/package.json +5 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/bundle.module.scss"],"names":[],"mappings":"AADA;EAEE,gBAAgB;EAChB,8BAA8B;EAC9B,mBAAmB;EACnB,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,aAAa;EACb,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,iBAAiB;EACjB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE;IACE,eAAe;EACjB;AACF;;AAEA;EACE,WAAW;EACX,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,iCAAiC;EACjC,OAAO;EACP,qBAAqB;EACrB,2BAA2B;AAC7B;;AAEA;EACE,qBAAqB;EACrB,qBAAqB;EACrB,eAAe;AACjB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,gBAAgB;EAChB,kCAAkC;EAClC,
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/bundle.module.scss"],"names":[],"mappings":"AADA;EAEE,gBAAgB;EAChB,8BAA8B;EAC9B,mBAAmB;EACnB,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,aAAa;EACb,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,iBAAiB;EACjB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE;IACE,eAAe;EACjB;AACF;;AAEA;EACE,WAAW;EACX,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,iCAAiC;EACjC,OAAO;EACP,qBAAqB;EACrB,2BAA2B;AAC7B;;AAEA;EACE,qBAAqB;EACrB,qBAAqB;EACrB,eAAe;AACjB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,gBAAgB;EAChB,kCAAkC;EAClC,8BAA8B;EAC9B,gBAAgB;EAChB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB","sourcesContent":[".title{height:40px;display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:500;line-height:20px;text-align:left;position:relative;top:-10px}.column{margin-bottom:14px}.description{font-size:20px;font-weight:500;line-height:32px;margin-right:5px;color:#000}@media(max-width: 1500px){.description{font-size:16px}}.unit{font-size:12px;font-weight:400;line-height:32px;color:#000}.treeContainer{display:flex}.treeContainer .line{border-bottom:1px dashed #e5e6eb;flex:1;transform:translateY(-45%);margin:0 15px 0 10px}.treeContainer .treeTitle{word-wrap:break-word;word-break:break-all;flex-wrap:wrap}.treeContainer .icon{font-size:16px}.treeContainer .tag{height:23px}.label{font-size:12px;font-weight:400;line-height:20px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none;color:rgba(0,0,0,.6509803922)}"],"sourceRoot":""}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
.title-dP_KVY {
|
|
2
2
|
text-align: left;
|
|
3
3
|
text-underline-position: from-font;
|
|
4
|
-
-webkit-text-decoration-skip-ink: none;
|
|
5
4
|
text-decoration-skip-ink: none;
|
|
6
5
|
justify-content: space-between;
|
|
7
6
|
align-items: center;
|
|
@@ -24,7 +23,6 @@
|
|
|
24
23
|
cursor: pointer;
|
|
25
24
|
text-align: left;
|
|
26
25
|
text-underline-position: from-font;
|
|
27
|
-
-webkit-text-decoration-skip-ink: none;
|
|
28
26
|
text-decoration-skip-ink: none;
|
|
29
27
|
width: 48%;
|
|
30
28
|
font-size: 14px;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/help-center.module.scss"],"names":[],"mappings":"AADA;EAEE,gBAAgB;EAChB,kCAAkC;EAClC,
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/help-center.module.scss"],"names":[],"mappings":"AADA;EAEE,gBAAgB;EAChB,kCAAkC;EAClC,8BAA8B;EAC9B,8BAA8B;EAC9B,mBAAmB;EACnB,YAAY;EACZ,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,aAAa;EACb,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,eAAe;EACf,8BAA8B;EAC9B,aAAa;AACf;;AAEA;EACE,eAAe;EACf,gBAAgB;EAChB,kCAAkC;EAClC,8BAA8B;EAC9B,UAAU;EACV,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,qBAAqB;AACvB;;AAEA;EACE,cAAc;AAChB","sourcesContent":[".title{display:flex;align-items:center;justify-content:space-between;position:relative;height:36px;position:relative;top:-12px;font-size:16px;font-weight:500;line-height:20px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.container{display:flex;justify-content:space-between;flex-wrap:wrap}.container .content{cursor:pointer;width:48%;transition:color .5s ease;font-size:14px;font-weight:400;line-height:16px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.container .content:hover{color:#1677ff}"],"sourceRoot":""}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
.projectOverall-T7onhG .ant-descriptions-item-label {
|
|
2
|
+
color: #000000a6;
|
|
3
|
+
font-size: 13px;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.projectOverall-T7onhG .ant-descriptions-item-content {
|
|
2
7
|
color: #000000a6;
|
|
3
8
|
font-size: 13px;
|
|
4
9
|
}
|
|
@@ -7,7 +12,12 @@
|
|
|
7
12
|
padding-bottom: 10px !important;
|
|
8
13
|
}
|
|
9
14
|
|
|
10
|
-
|
|
15
|
+
.bundleOverall-Ay7WmZ .ant-descriptions-item-label {
|
|
16
|
+
color: #000000a6;
|
|
17
|
+
font-size: 13px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.bundleOverall-Ay7WmZ .ant-descriptions-item-content {
|
|
11
21
|
color: #000000a6;
|
|
12
22
|
font-size: 13px;
|
|
13
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/list.module.scss"],"names":[],"mappings":"AADA;EAEE,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,4BAA4B;AAC9B","sourcesContent":[".projectOverall :global(.ant-descriptions-item-label),.projectOverall :global(.ant-descriptions-item-content){font-size:13px;color:rgba(0,0,0,.6509803922)}.projectOverall :global(.ant-descriptions-item){padding-bottom:10px !important}.bundleOverall :global(.ant-descriptions-item-label),.bundleOverall :global(.ant-descriptions-item-content){font-size:13px;color:rgba(0,0,0,.6509803922)}.bundleOverall :global(.ant-descriptions-item){padding-bottom:0px !important}"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/list.module.scss"],"names":[],"mappings":"AADA;EAEE,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,4BAA4B;AAC9B","sourcesContent":[".projectOverall :global(.ant-descriptions-item-label),.projectOverall :global(.ant-descriptions-item-content){font-size:13px;color:rgba(0,0,0,.6509803922)}.projectOverall :global(.ant-descriptions-item){padding-bottom:10px !important}.bundleOverall :global(.ant-descriptions-item-label),.bundleOverall :global(.ant-descriptions-item-content){font-size:13px;color:rgba(0,0,0,.6509803922)}.bundleOverall :global(.ant-descriptions-item){padding-bottom:0px !important}"],"sourceRoot":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Overall/project.module.scss"],"names":[],"mappings":"AADA;EAEE,mBAAmB;EACnB,aAAa;AACf;;AAEA;EACE,8BAA8B;EAC9B,mBAAmB;EACnB,oBAAoB;EACpB,aAAa;AACf;;AAEA;EACE,gBAAgB;EAChB,kCAAkC;EAClC,
|
|
1
|
+
{"version":3,"sources":["webpack://./src/components/Overall/project.module.scss"],"names":[],"mappings":"AADA;EAEE,mBAAmB;EACnB,aAAa;AACf;;AAEA;EACE,8BAA8B;EAC9B,mBAAmB;EACnB,oBAAoB;EACpB,aAAa;AACf;;AAEA;EACE,gBAAgB;EAChB,kCAAkC;EAClC,8BAA8B;EAC9B,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB","sourcesContent":[".overview{display:flex;margin-bottom:19px}.title{display:flex;justify-content:space-between;align-items:center;padding-bottom:20px}.title .left{font-size:16px;font-weight:500;line-height:24px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}"],"sourceRoot":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { Table, Tooltip } from "antd";
|
|
4
|
-
import { sumBy, uniq } from "
|
|
4
|
+
import { sumBy, uniq } from "es-toolkit/compat";
|
|
5
5
|
import { formatCosts } from "../../utils/index.mjs";
|
|
6
6
|
function useWebpackPluginsDataSource(plugin, selectedTapNames, selectedHooks) {
|
|
7
7
|
const tapNames = useMemo(()=>uniq(Object.values(plugin).flat().map((e)=>e.tapName)), [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Plugins/webpack.mjs","sources":["webpack://@rsdoctor/components/./src/components/Plugins/webpack.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Table, Tooltip } from 'antd';\nimport { sumBy, uniq } from '
|
|
1
|
+
{"version":3,"file":"components/Plugins/webpack.mjs","sources":["webpack://@rsdoctor/components/./src/components/Plugins/webpack.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Table, Tooltip } from 'antd';\nimport { sumBy, uniq } from 'es-toolkit/compat';\nimport { SDK } from '@rsdoctor/types';\nimport { formatCosts } from '../../utils';\n\ninterface WebpackPluginsTableDataItem {\n tapName: string;\n hook: string;\n key: string;\n hookData: SDK.PluginHookData[];\n}\nexport interface WebpackPluginsDataTableProps {\n dataSource: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetPluginData>;\n}\n\nexport function useWebpackPluginsDataSource(\n plugin: SDK.PluginData,\n selectedTapNames: string[],\n selectedHooks: string[],\n) {\n const tapNames = useMemo(\n () =>\n uniq(\n Object.values(plugin)\n .flat()\n .map((e) => e.tapName),\n ),\n [plugin],\n );\n\n const hooks = useMemo(() => Object.keys(plugin), [plugin]);\n\n const dataSource = useMemo(() => {\n if (!tapNames.length) return [];\n\n return tapNames.reduce((total, tapName) => {\n if (selectedTapNames.length && !selectedTapNames.includes(tapName)) {\n return total;\n }\n\n hooks.forEach((hook) => {\n if (selectedHooks.length && !selectedHooks.includes(hook)) {\n return;\n }\n\n const hookData = plugin[hook].filter((e) => e.tapName === tapName);\n if (hookData.length === 0) return;\n total.push({\n tapName,\n hook,\n key: `${tapName}${hook}`,\n hookData,\n });\n });\n\n return total;\n }, [] as WebpackPluginsTableDataItem[]);\n }, [plugin, selectedTapNames, selectedHooks]);\n\n return {\n dataSource,\n tapNames,\n hooks,\n };\n}\n\nexport const WebpackPluginsDataTable: React.FC<\n WebpackPluginsDataTableProps\n> = ({ dataSource }) => {\n return (\n <Table\n dataSource={dataSource}\n rowKey={(v) => `${v.tapName}_${v.hook}`}\n columns={[\n {\n title: `Plugin Tap Name`,\n render: (_v, r) => r.tapName,\n },\n {\n title: `Hook`,\n render: (_v, r) => r.hook,\n },\n {\n title: 'calls',\n render: (_v, r) => (\n <Tooltip\n title={`\"${r.hook}\" has been called ${r.data.length} times by \"${r.tapName}\"`}\n >\n {r.data.length}\n </Tooltip>\n ),\n sorter(a, b) {\n return a.data.length - b.data.length;\n },\n },\n {\n title: 'duration(total)',\n render: (_v, r) => formatCosts(sumBy(r.data, (e) => e.costs)),\n sorter(a, b) {\n return (\n sumBy(a.data, (e) => e.costs) - sumBy(b.data, (e) => e.costs)\n );\n },\n defaultSortOrder: 'descend',\n },\n ]}\n />\n );\n};\n"],"names":["useWebpackPluginsDataSource","plugin","selectedTapNames","selectedHooks","tapNames","useMemo","uniq","Object","e","hooks","dataSource","total","tapName","hook","hookData","WebpackPluginsDataTable","Table","v","_v","r","Tooltip","a","b","formatCosts","sumBy"],"mappings":";;;;;AAgBO,SAASA,4BACdC,MAAsB,EACtBC,gBAA0B,EAC1BC,aAAuB;IAEvB,MAAMC,WAAWC,QACf,IACEC,KACEC,OAAO,MAAM,CAACN,QACX,IAAI,GACJ,GAAG,CAAC,CAACO,IAAMA,EAAE,OAAO,IAE3B;QAACP;KAAO;IAGV,MAAMQ,QAAQJ,QAAQ,IAAME,OAAO,IAAI,CAACN,SAAS;QAACA;KAAO;IAEzD,MAAMS,aAAaL,QAAQ;QACzB,IAAI,CAACD,SAAS,MAAM,EAAE,OAAO,EAAE;QAE/B,OAAOA,SAAS,MAAM,CAAC,CAACO,OAAOC;YAC7B,IAAIV,iBAAiB,MAAM,IAAI,CAACA,iBAAiB,QAAQ,CAACU,UACxD,OAAOD;YAGTF,MAAM,OAAO,CAAC,CAACI;gBACb,IAAIV,cAAc,MAAM,IAAI,CAACA,cAAc,QAAQ,CAACU,OAClD;gBAGF,MAAMC,WAAWb,MAAM,CAACY,KAAK,CAAC,MAAM,CAAC,CAACL,IAAMA,EAAE,OAAO,KAAKI;gBAC1D,IAAIE,AAAoB,MAApBA,SAAS,MAAM,EAAQ;gBAC3BH,MAAM,IAAI,CAAC;oBACTC;oBACAC;oBACA,KAAK,GAAGD,UAAUC,MAAM;oBACxBC;gBACF;YACF;YAEA,OAAOH;QACT,GAAG,EAAE;IACP,GAAG;QAACV;QAAQC;QAAkBC;KAAc;IAE5C,OAAO;QACLO;QACAN;QACAK;IACF;AACF;AAEO,MAAMM,0BAET,CAAC,EAAEL,UAAU,EAAE,GACV,WAAP,GACE,IAACM,OAAKA;QACJ,YAAYN;QACZ,QAAQ,CAACO,IAAM,GAAGA,EAAE,OAAO,CAAC,CAAC,EAAEA,EAAE,IAAI,EAAE;QACvC,SAAS;YACP;gBACE,OAAO;gBACP,QAAQ,CAACC,IAAIC,IAAMA,EAAE,OAAO;YAC9B;YACA;gBACE,OAAO;gBACP,QAAQ,CAACD,IAAIC,IAAMA,EAAE,IAAI;YAC3B;YACA;gBACE,OAAO;gBACP,QAAQ,CAACD,IAAIC,IAAAA,WAAAA,GACX,IAACC,SAAOA;wBACN,OAAO,CAAC,CAAC,EAAED,EAAE,IAAI,CAAC,kBAAkB,EAAEA,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAEA,EAAE,OAAO,CAAC,CAAC,CAAC;kCAE5EA,EAAE,IAAI,CAAC,MAAM;;gBAGlB,QAAOE,CAAC,EAAEC,CAAC;oBACT,OAAOD,EAAE,IAAI,CAAC,MAAM,GAAGC,EAAE,IAAI,CAAC,MAAM;gBACtC;YACF;YACA;gBACE,OAAO;gBACP,QAAQ,CAACJ,IAAIC,IAAMI,YAAYC,MAAML,EAAE,IAAI,EAAE,CAACX,IAAMA,EAAE,KAAK;gBAC3D,QAAOa,CAAC,EAAEC,CAAC;oBACT,OACEE,MAAMH,EAAE,IAAI,EAAE,CAACb,IAAMA,EAAE,KAAK,IAAIgB,MAAMF,EAAE,IAAI,EAAE,CAACd,IAAMA,EAAE,KAAK;gBAEhE;gBACA,kBAAkB;YACpB;SACD"}
|
|
@@ -3,7 +3,7 @@ import { CloseCircleOutlined, FileSearchOutlined, MenuFoldOutlined, MenuUnfoldOu
|
|
|
3
3
|
import { SDK } from "@rsdoctor/types";
|
|
4
4
|
import { Resolver } from "@rsdoctor/utils/common";
|
|
5
5
|
import { Button, Card, Col, Row, Space, Table, Typography } from "antd";
|
|
6
|
-
import { get } from "
|
|
6
|
+
import { get } from "es-toolkit/compat";
|
|
7
7
|
import react, { useMemo, useState } from "react";
|
|
8
8
|
import { Size } from "../../constants.mjs";
|
|
9
9
|
import { createFileStructures, formatCosts, mapFileKey } from "../../utils/index.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Resolver/analysis.mjs","sources":["webpack://@rsdoctor/components/./src/components/Resolver/analysis.tsx"],"sourcesContent":["/* eslint-disable react/no-unescaped-entities */\nimport {\n CloseCircleOutlined,\n FileSearchOutlined,\n MenuFoldOutlined,\n MenuUnfoldOutlined,\n} from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport { Resolver } from '@rsdoctor/utils/common';\nimport { Button, Card, Col, Row, Space, Table, Typography } from 'antd';\nimport { get } from 'lodash-es';\nimport React, { useMemo, useState } from 'react';\nimport { Size } from '../../constants';\nimport { createFileStructures, formatCosts, mapFileKey } from '../../utils';\nimport { FileTree } from '../FileTree';\nimport { KeywordInput } from '../Form/keyword';\nimport { ServerAPIProvider, withServerAPI } from '../Manifest';\nimport { DiffViewer } from '../base';\n\nconst height = 735;\n\nconst ResolverDetailsPanel: React.FC<\n SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetResolverFileDetails>\n> = ({ filepath, before, after, resolvers }) => {\n const [collapsed, setCollapsed] = useState(false);\n\n return (\n <React.Fragment>\n <Col flex={1}>\n <Card\n title=\"Resolve Diff Viewer\"\n styles={{ body: { padding: 0, overflow: 'hidden' } }}\n >\n <DiffViewer\n style={{\n height: height + 50,\n }}\n isEmbed\n originalFilePath={filepath}\n modifiedFilePath={filepath}\n original={before}\n modified={after}\n />\n </Card>\n </Col>\n <Col span={collapsed ? 2 : 7}>\n <Card\n title={collapsed ? '...' : 'Resolve Details'}\n extra={\n <Button\n onClick={() => setCollapsed(!collapsed)}\n size=\"small\"\n icon={collapsed ? <MenuFoldOutlined /> : <MenuUnfoldOutlined />}\n ></Button>\n }\n style={collapsed ? { width: 80 } : undefined}\n >\n {collapsed ? null : (\n <Table\n style={{\n width: '100%',\n height,\n overflowY: 'scroll',\n wordBreak: 'break-all',\n }}\n size=\"small\"\n pagination={false}\n bordered\n rowKey={(e) => e.request}\n columns={[\n {\n title: 'Source Code',\n width: 200,\n render: (_v, r) => (\n <Typography.Text copyable>\n <Typography.Text code strong>\n {r.request}\n </Typography.Text>\n </Typography.Text>\n ),\n },\n {\n title: 'Duration',\n width: 80,\n render: (_v, r) => (\n <Typography.Text strong>\n {formatCosts(r.costs)}\n </Typography.Text>\n ),\n sorter: (a, b) => a.costs - b.costs,\n sortDirections: ['descend', 'ascend'],\n },\n {\n title: 'Resolve Result',\n render: (_v, r) => {\n if (Resolver.isResolveSuccessData(r))\n return (\n <Typography.Text copyable>{r.result}</Typography.Text>\n );\n return <CloseCircleOutlined style={{ color: '#f50' }} />;\n },\n },\n ]}\n dataSource={resolvers}\n />\n )}\n </Card>\n </Col>\n </React.Fragment>\n );\n};\n\nexport const ResolverFiles: React.FC<{\n filename: string;\n cwd: string;\n resolver: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetResolverFileTree>;\n}> = (props) => {\n const { resolver, cwd } = props;\n\n const [filepath, setFilepath] = useState('');\n\n const inlinedResourcePathKey = '__RESOURCEPATH__';\n const n = '/node_modules/';\n\n const paths = useMemo(() => {\n return resolver.map((e) => e.issuerPath).filter(Boolean);\n }, [resolver]);\n\n const filterPaths = useMemo(() => {\n return paths.filter((e) =>\n props.filename ? e.indexOf(props.filename) > -1 : true,\n );\n }, [props.filename, paths]);\n\n const allNodeModules =\n filterPaths.length && filterPaths.every((e) => e.indexOf(n) > -1);\n\n const files = useMemo(() => {\n return createFileStructures({\n files: filterPaths.length ? filterPaths : paths,\n cwd,\n fileTitle(file, basename) {\n return <div onClick={() => setFilepath(file)}>{basename}</div>;\n },\n });\n }, [props.filename]);\n\n return (\n <Row justify=\"start\" align=\"top\" wrap={false} gutter={Size.BasePadding}>\n <Col span={7}>\n <Card title=\"Files\">\n <FileTree\n style={{ width: '100%', height, overflow: 'scroll' }}\n treeData={files}\n defaultExpandedKeys={mapFileKey(\n files,\n allNodeModules ? 1 : 4,\n allNodeModules\n ? undefined\n : (node) => {\n const resourcePath: string = get(\n node,\n inlinedResourcePathKey,\n )!;\n const isNodeModules = resourcePath.indexOf(n) > -1;\n\n if (\n filterPaths.length &&\n filterPaths.every((e) => e.indexOf(n) > -1)\n ) {\n return true;\n }\n\n return !isNodeModules;\n },\n )}\n key={`tree_${props.filename}`}\n />\n </Card>\n </Col>\n {filepath && (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetResolverFileDetails}\n body={{ filepath }}\n >\n {(resolvers) => <ResolverDetailsPanel {...resolvers} />}\n </ServerAPIProvider>\n )}\n </Row>\n );\n};\n\nexport const ResolverAnalysisBase: React.FC<{\n project: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetProjectInfo>;\n}> = ({ project }) => {\n const { root: cwd } = project;\n const [filename, setFilename] = useState('');\n\n return (\n <div style={{ width: '100%' }}>\n <Space\n style={{ marginTop: Size.BasePadding, marginBottom: Size.BasePadding }}\n >\n <KeywordInput\n icon={<FileSearchOutlined />}\n label=\"Filename\"\n placeholder=\"search filename by keyword\"\n onChange={(e) => setFilename(e)}\n />\n </Space>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetResolverFileTree}>\n {(resolver) => (\n <ResolverFiles filename={filename} resolver={resolver} cwd={cwd} />\n )}\n </ServerAPIProvider>\n </div>\n );\n};\n\nexport const ResolverAnalysis = withServerAPI({\n api: SDK.ServerAPI.API.GetProjectInfo,\n responsePropName: 'project',\n Component: ResolverAnalysisBase,\n});\n"],"names":["height","ResolverDetailsPanel","filepath","before","after","resolvers","collapsed","setCollapsed","useState","React","Col","Card","DiffViewer","Button","MenuFoldOutlined","MenuUnfoldOutlined","undefined","Table","e","_v","r","Typography","formatCosts","a","b","Resolver","CloseCircleOutlined","ResolverFiles","props","resolver","cwd","setFilepath","inlinedResourcePathKey","n","paths","useMemo","Boolean","filterPaths","allNodeModules","files","createFileStructures","file","basename","Row","Size","FileTree","mapFileKey","node","resourcePath","get","isNodeModules","ServerAPIProvider","SDK","ResolverAnalysisBase","project","filename","setFilename","Space","KeywordInput","FileSearchOutlined","ResolverAnalysis","withServerAPI"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components/Resolver/analysis.mjs","sources":["webpack://@rsdoctor/components/./src/components/Resolver/analysis.tsx"],"sourcesContent":["/* eslint-disable react/no-unescaped-entities */\nimport {\n CloseCircleOutlined,\n FileSearchOutlined,\n MenuFoldOutlined,\n MenuUnfoldOutlined,\n} from '@ant-design/icons';\nimport { SDK } from '@rsdoctor/types';\nimport { Resolver } from '@rsdoctor/utils/common';\nimport { Button, Card, Col, Row, Space, Table, Typography } from 'antd';\nimport { get } from 'es-toolkit/compat';\nimport React, { useMemo, useState } from 'react';\nimport { Size } from '../../constants';\nimport { createFileStructures, formatCosts, mapFileKey } from '../../utils';\nimport { FileTree } from '../FileTree';\nimport { KeywordInput } from '../Form/keyword';\nimport { ServerAPIProvider, withServerAPI } from '../Manifest';\nimport { DiffViewer } from '../base';\n\nconst height = 735;\n\nconst ResolverDetailsPanel: React.FC<\n SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetResolverFileDetails>\n> = ({ filepath, before, after, resolvers }) => {\n const [collapsed, setCollapsed] = useState(false);\n\n return (\n <React.Fragment>\n <Col flex={1}>\n <Card\n title=\"Resolve Diff Viewer\"\n styles={{ body: { padding: 0, overflow: 'hidden' } }}\n >\n <DiffViewer\n style={{\n height: height + 50,\n }}\n isEmbed\n originalFilePath={filepath}\n modifiedFilePath={filepath}\n original={before}\n modified={after}\n />\n </Card>\n </Col>\n <Col span={collapsed ? 2 : 7}>\n <Card\n title={collapsed ? '...' : 'Resolve Details'}\n extra={\n <Button\n onClick={() => setCollapsed(!collapsed)}\n size=\"small\"\n icon={collapsed ? <MenuFoldOutlined /> : <MenuUnfoldOutlined />}\n ></Button>\n }\n style={collapsed ? { width: 80 } : undefined}\n >\n {collapsed ? null : (\n <Table\n style={{\n width: '100%',\n height,\n overflowY: 'scroll',\n wordBreak: 'break-all',\n }}\n size=\"small\"\n pagination={false}\n bordered\n rowKey={(e) => e.request}\n columns={[\n {\n title: 'Source Code',\n width: 200,\n render: (_v, r) => (\n <Typography.Text copyable>\n <Typography.Text code strong>\n {r.request}\n </Typography.Text>\n </Typography.Text>\n ),\n },\n {\n title: 'Duration',\n width: 80,\n render: (_v, r) => (\n <Typography.Text strong>\n {formatCosts(r.costs)}\n </Typography.Text>\n ),\n sorter: (a, b) => a.costs - b.costs,\n sortDirections: ['descend', 'ascend'],\n },\n {\n title: 'Resolve Result',\n render: (_v, r) => {\n if (Resolver.isResolveSuccessData(r))\n return (\n <Typography.Text copyable>{r.result}</Typography.Text>\n );\n return <CloseCircleOutlined style={{ color: '#f50' }} />;\n },\n },\n ]}\n dataSource={resolvers}\n />\n )}\n </Card>\n </Col>\n </React.Fragment>\n );\n};\n\nexport const ResolverFiles: React.FC<{\n filename: string;\n cwd: string;\n resolver: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetResolverFileTree>;\n}> = (props) => {\n const { resolver, cwd } = props;\n\n const [filepath, setFilepath] = useState('');\n\n const inlinedResourcePathKey = '__RESOURCEPATH__';\n const n = '/node_modules/';\n\n const paths = useMemo(() => {\n return resolver.map((e) => e.issuerPath).filter(Boolean);\n }, [resolver]);\n\n const filterPaths = useMemo(() => {\n return paths.filter((e) =>\n props.filename ? e.indexOf(props.filename) > -1 : true,\n );\n }, [props.filename, paths]);\n\n const allNodeModules =\n filterPaths.length && filterPaths.every((e) => e.indexOf(n) > -1);\n\n const files = useMemo(() => {\n return createFileStructures({\n files: filterPaths.length ? filterPaths : paths,\n cwd,\n fileTitle(file, basename) {\n return <div onClick={() => setFilepath(file)}>{basename}</div>;\n },\n });\n }, [props.filename]);\n\n return (\n <Row justify=\"start\" align=\"top\" wrap={false} gutter={Size.BasePadding}>\n <Col span={7}>\n <Card title=\"Files\">\n <FileTree\n style={{ width: '100%', height, overflow: 'scroll' }}\n treeData={files}\n defaultExpandedKeys={mapFileKey(\n files,\n allNodeModules ? 1 : 4,\n allNodeModules\n ? undefined\n : (node) => {\n const resourcePath: string = get(\n node,\n inlinedResourcePathKey,\n )!;\n const isNodeModules = resourcePath.indexOf(n) > -1;\n\n if (\n filterPaths.length &&\n filterPaths.every((e) => e.indexOf(n) > -1)\n ) {\n return true;\n }\n\n return !isNodeModules;\n },\n )}\n key={`tree_${props.filename}`}\n />\n </Card>\n </Col>\n {filepath && (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetResolverFileDetails}\n body={{ filepath }}\n >\n {(resolvers) => <ResolverDetailsPanel {...resolvers} />}\n </ServerAPIProvider>\n )}\n </Row>\n );\n};\n\nexport const ResolverAnalysisBase: React.FC<{\n project: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetProjectInfo>;\n}> = ({ project }) => {\n const { root: cwd } = project;\n const [filename, setFilename] = useState('');\n\n return (\n <div style={{ width: '100%' }}>\n <Space\n style={{ marginTop: Size.BasePadding, marginBottom: Size.BasePadding }}\n >\n <KeywordInput\n icon={<FileSearchOutlined />}\n label=\"Filename\"\n placeholder=\"search filename by keyword\"\n onChange={(e) => setFilename(e)}\n />\n </Space>\n <ServerAPIProvider api={SDK.ServerAPI.API.GetResolverFileTree}>\n {(resolver) => (\n <ResolverFiles filename={filename} resolver={resolver} cwd={cwd} />\n )}\n </ServerAPIProvider>\n </div>\n );\n};\n\nexport const ResolverAnalysis = withServerAPI({\n api: SDK.ServerAPI.API.GetProjectInfo,\n responsePropName: 'project',\n Component: ResolverAnalysisBase,\n});\n"],"names":["height","ResolverDetailsPanel","filepath","before","after","resolvers","collapsed","setCollapsed","useState","React","Col","Card","DiffViewer","Button","MenuFoldOutlined","MenuUnfoldOutlined","undefined","Table","e","_v","r","Typography","formatCosts","a","b","Resolver","CloseCircleOutlined","ResolverFiles","props","resolver","cwd","setFilepath","inlinedResourcePathKey","n","paths","useMemo","Boolean","filterPaths","allNodeModules","files","createFileStructures","file","basename","Row","Size","FileTree","mapFileKey","node","resourcePath","get","isNodeModules","ServerAPIProvider","SDK","ResolverAnalysisBase","project","filename","setFilename","Space","KeywordInput","FileSearchOutlined","ResolverAnalysis","withServerAPI"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import "react";
|
|
3
3
|
import { Typography } from "antd";
|
|
4
|
-
import { upperFirst as
|
|
4
|
+
import { upperFirst as compat_upperFirst } from "es-toolkit/compat";
|
|
5
5
|
const Title = ({ upperFirst = true, fontSize = 16, text, hash })=>{
|
|
6
|
-
const t = 'string' == typeof text ? upperFirst ?
|
|
6
|
+
const t = 'string' == typeof text ? upperFirst ? compat_upperFirst(text) : text : text;
|
|
7
7
|
return /*#__PURE__*/ jsx(Typography.Text, {
|
|
8
8
|
style: {
|
|
9
9
|
fontSize
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/Title/index.mjs","sources":["webpack://@rsdoctor/components/./src/components/Title/index.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { Typography } from 'antd';\nimport { upperFirst as upf } from '
|
|
1
|
+
{"version":3,"file":"components/Title/index.mjs","sources":["webpack://@rsdoctor/components/./src/components/Title/index.tsx"],"sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { Typography } from 'antd';\nimport { upperFirst as upf } from 'es-toolkit/compat';\n\ninterface TitleProps {\n /**\n * @default true\n */\n upperFirst?: boolean;\n /**\n * @default 16\n */\n fontSize?: number;\n text: string | React.ReactNode;\n hash?: string;\n}\n\nexport const Title: React.FC<PropsWithChildren<TitleProps>> = ({\n upperFirst = true,\n fontSize = 16,\n text,\n hash,\n}) => {\n const t = typeof text === 'string' ? (upperFirst ? upf(text) : text) : text;\n return (\n <Typography.Text style={{ fontSize }} strong>\n {hash ? (\n <a href={hash} id={hash.replace(/^#/, '')} style={{ color: 'inherit' }}>\n {t}\n </a>\n ) : (\n t\n )}\n </Typography.Text>\n );\n};\n"],"names":["Title","upperFirst","fontSize","text","hash","t","upf","Typography"],"mappings":";;;;AAiBO,MAAMA,QAAiD,CAAC,EAC7DC,aAAa,IAAI,EACjBC,WAAW,EAAE,EACbC,IAAI,EACJC,IAAI,EACL;IACC,MAAMC,IAAI,AAAgB,YAAhB,OAAOF,OAAqBF,aAAaK,kBAAIH,QAAQA,OAAQA;IACvE,OAAO,WAAP,GACE,IAACI,WAAW,IAAI;QAAC,OAAO;YAAEL;QAAS;QAAG,QAAM;kBACzCE,OAAO,WAAPA,GACC,IAAC;YAAE,MAAMA;YAAM,IAAIA,KAAK,OAAO,CAAC,MAAM;YAAK,OAAO;gBAAE,OAAO;YAAU;sBAClEC;aAGHA;;AAIR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/base/CodeViewer/utils.mjs","sources":["webpack://@rsdoctor/components/./src/components/base/CodeViewer/utils.ts"],"sourcesContent":["import { Monaco } from '@monaco-editor/react';\nimport { SDK } from '@rsdoctor/types';\nimport type { Range as RangeClass } from 'monaco-editor';\nimport { editor } from 'monaco-editor';\nimport { extname } from 'path';\n\n/**\n * 判断 data 协议文件格式 `data:[<mediatype>][;base64],<data>`\n * 完整协议: https://www.rfc-editor.org/rfc/rfc2397.html\n * @param {string} content 文件内容\n * @returns {string} 文件格式类型\n */\nfunction getDataProtocolFormat(content: string): string {\n // 如果内容为空返回空\n if (!content) {\n return '';\n }\n\n try {\n const prefix = 'data:';\n // 检查是否以 data: 开头\n if (!content.startsWith(prefix)) {\n return '';\n }\n\n const { mimeType } = parseDataUrl(content);\n\n // 根据 MIME 类型返回对应的格式\n switch (mimeType) {\n case 'text/javascript':\n return 'javascript';\n case 'text/html':\n return 'html';\n case 'text/css':\n return 'css';\n case 'text/plain':\n return 'text';\n case 'application/json':\n return 'json';\n // 可以根据需要添加更多类型\n default:\n return '';\n }\n } catch (error) {\n console.error('解析 data
|
|
1
|
+
{"version":3,"file":"components/base/CodeViewer/utils.mjs","sources":["webpack://@rsdoctor/components/./src/components/base/CodeViewer/utils.ts"],"sourcesContent":["import { Monaco } from '@monaco-editor/react';\nimport { SDK } from '@rsdoctor/types';\nimport type { Range as RangeClass } from 'monaco-editor';\nimport { editor } from 'monaco-editor';\nimport { extname } from 'path';\n\n/**\n * 判断 data 协议文件格式 `data:[<mediatype>][;base64],<data>`\n * 完整协议: https://www.rfc-editor.org/rfc/rfc2397.html\n * @param {string} content 文件内容\n * @returns {string} 文件格式类型\n */\nfunction getDataProtocolFormat(content: string): string {\n // 如果内容为空返回空\n if (!content) {\n return '';\n }\n\n try {\n const prefix = 'data:';\n // 检查是否以 data: 开头\n if (!content.startsWith(prefix)) {\n return '';\n }\n\n const { mimeType } = parseDataUrl(content);\n\n // 根据 MIME 类型返回对应的格式\n switch (mimeType) {\n case 'text/javascript':\n return 'javascript';\n case 'text/html':\n return 'html';\n case 'text/css':\n return 'css';\n case 'text/plain':\n return 'text';\n case 'application/json':\n return 'json';\n // 可以根据需要添加更多类型\n default:\n return '';\n }\n } catch (error) {\n console.error('解析 data 协议文件格式失败::', error);\n return '';\n }\n}\n\n/**\n * 解析 Data URL 并提取 MIME 类型\n * @param {string} dataUrl - 要解析的 Data URL 字符串\n * @returns {Object} 包含解析结果的对象\n */\nfunction parseDataUrl(dataUrl: string) {\n // 检查是否是 Data URL\n if (!dataUrl.startsWith('data:')) {\n throw new Error('输入不是有效的 Data URL');\n }\n\n // 提取内容部分 (去掉 \"data:\" 前缀)\n const content = dataUrl.substring(5);\n\n // 查找分隔数据和元数据的逗号\n const commaIndex = content.indexOf(',');\n\n if (commaIndex === -1) {\n throw new Error('无效的 Data URL 格式: 缺少数据分隔符');\n }\n\n // 提取元数据部分\n const metadataPart = content.substring(0, commaIndex);\n\n // 提取数据部分\n const dataPart = content.substring(commaIndex + 1);\n\n // 解析元数据\n let mimeType = '';\n let charset = '';\n let isBase64 = false;\n\n // 分割元数据部分\n const metadataSegments = metadataPart.split(';');\n\n // 第一部分通常是 MIME 类型\n if (metadataSegments.length > 0) {\n mimeType = metadataSegments[0] || 'text/plain'; // 默认为 text/plain\n }\n\n // 检查其他元数据参数\n for (let i = 1; i < metadataSegments.length; i++) {\n const segment = metadataSegments[i];\n\n if (segment === 'base64') {\n isBase64 = true;\n } else if (segment.startsWith('charset=')) {\n charset = segment.substring(8);\n }\n }\n\n // 返回解析结果\n return {\n mimeType,\n charset,\n isBase64,\n data: dataPart,\n };\n}\n\nexport function getFilePathFormat(filePath: string): string {\n if (!filePath) return '';\n\n const i = getDataProtocolFormat(filePath);\n\n if (i) {\n return i;\n }\n\n try {\n const ext = extname(filePath).slice(1);\n switch (ext) {\n case 'js':\n case 'cjs':\n case 'mjs':\n case 'jsx':\n return 'javascript';\n case 'ts':\n case 'tsx':\n return 'typescript';\n case 'md':\n return 'markdown';\n default:\n return ext;\n }\n } catch (e) {\n return '';\n }\n}\n\n/**\n * 默认编辑器样式, 适合预览代码\n */\nexport const DefaultEditorConfig: editor.IStandaloneEditorConstructionOptions =\n {\n // 设置编辑器为只读模式\n readOnly: true,\n // 设置 DOM 元素为只读模式\n domReadOnly: true,\n // 设置字体大小为 14px\n fontSize: 14,\n // 设置制表符宽度为 2 个空格\n tabSize: 2,\n // 设置行高为 24px\n lineHeight: 24,\n // 关闭验证装饰器的渲染(如错误、警告标记等)\n renderValidationDecorations: 'off',\n // 在概览标尺中隐藏光标\n hideCursorInOverviewRuler: true,\n // 启用平滑滚动\n smoothScrolling: true,\n // 设置文本换行方式\n wordWrap: 'on',\n // 启用颜色装饰器(如显示颜色预览)\n colorDecorators: true,\n // 禁用代码镜头功能(如显示引用次数等)\n codeLens: false,\n // 设置光标宽度为 0(隐藏光标)\n cursorWidth: 0,\n // 禁用右侧的小地图预览\n minimap: {\n enabled: false,\n },\n\n /** 禁用编辑器内置的右键菜单 */\n contextmenu: false,\n /** 禁用定义跳转功能 */\n gotoLocation: {\n multiple: 'goto',\n multipleDefinitions: 'goto',\n multipleTypeDefinitions: 'goto',\n multipleDeclarations: 'goto',\n multipleImplementations: 'goto',\n multipleReferences: 'goto',\n },\n /** 禁用悬停提示功能 */\n hover: { enabled: false },\n // 禁用链接功能 - 会禁用 Command/Ctrl + 点击\n links: false,\n };\n\n/**\n * get monaco options, it'll combine default config\n * @param options\n * @returns target options\n */\nexport function defineMonacoOptions(\n options?: editor.IStandaloneEditorConstructionOptions,\n): editor.IStandaloneEditorConstructionOptions {\n return {\n ...structuredClone(DefaultEditorConfig),\n ...options,\n };\n}\n\nexport function getFileName(filePath: string): string {\n // 如果内容为空返回空\n if (!filePath) {\n return '';\n }\n\n const prefix = 'data:';\n // 检查是否以 data: 开头\n if (filePath.startsWith(prefix)) {\n return 'data';\n }\n\n return filePath.split('/').at(-1) || '';\n}\n\nexport function getSelectionRange(\n source: SDK.SourceRange,\n Range: typeof RangeClass,\n) {\n const { start, end } = source;\n const { line = 1, column = 0 } = start;\n return new Range(\n line,\n column + 1,\n end?.line ?? line,\n (end?.column ?? 9999) + 1,\n );\n}\n\nexport function editorShowRange(\n editor: editor.IStandaloneCodeEditor,\n monaco: Monaco,\n ranges?: SDK.SourceRange[],\n) {\n if (!ranges || ranges.length === 0) return;\n\n const decorations = ranges.map((range) => ({\n range: getSelectionRange(range, monaco.Range),\n options: {\n inlineClassName: 'file-inline-decoration',\n },\n }));\n editor.deltaDecorations([], decorations);\n\n setTimeout(() => {\n editor.revealLine(decorations[0].range.startLineNumber);\n });\n}\n"],"names":["getDataProtocolFormat","content","prefix","mimeType","parseDataUrl","error","console","dataUrl","Error","commaIndex","metadataPart","dataPart","charset","isBase64","metadataSegments","i","segment","getFilePathFormat","filePath","ext","extname","e","DefaultEditorConfig","defineMonacoOptions","options","structuredClone","getFileName","getSelectionRange","source","Range","start","end","line","column","editorShowRange","editor","monaco","ranges","decorations","range","setTimeout"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { CodepenCircleOutlined, ColumnHeightOutlined, InfoCircleOutlined } from "@ant-design/icons";
|
|
3
3
|
import { SDK } from "@rsdoctor/types";
|
|
4
4
|
import { Button, Card, Col, Divider, Empty, Popover, Row, Space, Tag, Tooltip, Tree, Typography } from "antd";
|
|
5
|
-
import { omitBy, sumBy } from "
|
|
5
|
+
import { omitBy, sumBy } from "es-toolkit/compat";
|
|
6
6
|
import { dirname, relative } from "path";
|
|
7
7
|
import { useEffect, useMemo, useState } from "react";
|
|
8
8
|
import { CodeViewer } from "../../../components/base/index.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages/BundleSize/components/asset.mjs","sources":["webpack://@rsdoctor/components/./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 'src/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.scss';\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 GzippedSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The compressed file size that users actually download, as most web\n servers use gzip compression.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'orange'}>{`gzipped: ${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, gzipSize = 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 <>\n {typeof gzipSize === 'number' ? (\n <Popover\n placement=\"bottom\"\n content={<SourceSizeTag size={sourceSize} />}\n >\n <Space direction=\"horizontal\">\n <BundledSizeTag size={parsedSize} />\n <GzippedSizeTag size={gzipSize} />\n </Space>\n </Popover>\n ) : (\n <Space direction=\"horizontal\">\n <BundledSizeTag size={parsedSize} />\n <SourceSizeTag size={sourceSize} />\n </Space>\n )}\n </>\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 // @ts-ignore\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"],"names":["DirectoryTree","Tree","expandedModulesKeys","TAB_MAP","tagStyle","EmptyCodeItem","Empty","ModuleCodeViewer","data","tab","setTab","useState","t","useI18n","TAB_LAB_MAP","path","TextDrawer","Popover","CodepenCircleOutlined","ServerAPIProvider","SDK","source","Card","Object","omitBy","s","k","e","v","Typography","CodeViewer","ModuleGraphViewer","id","show","setShow","cwd","modules","ModuleAnalyzeComponent","inlinedResourcePathKey","getChildrenModule","node","mods","n","ModulesStatistics","chunks","filteredModules","sourceSize","parsedSize","filteredParsedSize","filteredSourceSize","useMemo","sumBy","Space","Tooltip","InfoCircleOutlined","Divider","formatSize","Bdg","ConcatenatedTag","moduleCount","Tag","TotalBundledSizeTag","size","BundledSizeTag","GzippedSizeTag","TotalSourceSizeTag","SourceSizeTag","AssetDetail","asset","includeChunks","includeModules","moduleSizeLimit","height","root","moduleKeyword","setModuleKeyword","defaultExpandAll","setDefaultExpandAll","moduleJumpList","setModuleJumpList","res","regexp","RegExp","fileStructures","createFileStructures","Boolean","file","basename","_mod_modules","mod","gzipSize","isConcatenation","containedOtherModules","styles","Keyword","isJsDataUrl","p","relative","dirname","dir","defaultTitle","paths","m","_e_size","onSearch","value","useEffect","ModuleGraphListContext","Row","Col","KeywordInput","Button","ColumnHeightOutlined","Size","expandedKeys"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pages/BundleSize/components/asset.mjs","sources":["webpack://@rsdoctor/components/./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 'es-toolkit/compat';\nimport { dirname, relative } from 'path';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { CodeViewer } from 'src/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.scss';\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 GzippedSizeTag = ({ size }: { size: number }) => {\n return (\n <Tooltip\n title={\n <Space>\n <Typography.Text style={{ color: 'inherit' }}>\n The compressed file size that users actually download, as most web\n servers use gzip compression.\n </Typography.Text>\n </Space>\n }\n >\n <Tag color={'orange'}>{`gzipped: ${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, gzipSize = 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 <>\n {typeof gzipSize === 'number' ? (\n <Popover\n placement=\"bottom\"\n content={<SourceSizeTag size={sourceSize} />}\n >\n <Space direction=\"horizontal\">\n <BundledSizeTag size={parsedSize} />\n <GzippedSizeTag size={gzipSize} />\n </Space>\n </Popover>\n ) : (\n <Space direction=\"horizontal\">\n <BundledSizeTag size={parsedSize} />\n <SourceSizeTag size={sourceSize} />\n </Space>\n )}\n </>\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 // @ts-ignore\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"],"names":["DirectoryTree","Tree","expandedModulesKeys","TAB_MAP","tagStyle","EmptyCodeItem","Empty","ModuleCodeViewer","data","tab","setTab","useState","t","useI18n","TAB_LAB_MAP","path","TextDrawer","Popover","CodepenCircleOutlined","ServerAPIProvider","SDK","source","Card","Object","omitBy","s","k","e","v","Typography","CodeViewer","ModuleGraphViewer","id","show","setShow","cwd","modules","ModuleAnalyzeComponent","inlinedResourcePathKey","getChildrenModule","node","mods","n","ModulesStatistics","chunks","filteredModules","sourceSize","parsedSize","filteredParsedSize","filteredSourceSize","useMemo","sumBy","Space","Tooltip","InfoCircleOutlined","Divider","formatSize","Bdg","ConcatenatedTag","moduleCount","Tag","TotalBundledSizeTag","size","BundledSizeTag","GzippedSizeTag","TotalSourceSizeTag","SourceSizeTag","AssetDetail","asset","includeChunks","includeModules","moduleSizeLimit","height","root","moduleKeyword","setModuleKeyword","defaultExpandAll","setDefaultExpandAll","moduleJumpList","setModuleJumpList","res","regexp","RegExp","fileStructures","createFileStructures","Boolean","file","basename","_mod_modules","mod","gzipSize","isConcatenation","containedOtherModules","styles","Keyword","isJsDataUrl","p","relative","dirname","dir","defaultTitle","paths","m","_e_size","onSearch","value","useEffect","ModuleGraphListContext","Row","Col","KeywordInput","Button","ColumnHeightOutlined","Size","expandedKeys"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { CodeOutlined, CodepenCircleOutlined, DeploymentUnitOutlined, InfoCircleOutlined } from "@ant-design/icons";
|
|
3
3
|
import { SDK } from "@rsdoctor/types";
|
|
4
4
|
import { Button, Card, Col, Divider, Empty, InputNumber, Row, Select, Space, Tag, Tooltip, Typography } from "antd";
|
|
5
|
-
import { debounce, sumBy } from "
|
|
5
|
+
import { debounce, sumBy } from "es-toolkit/compat";
|
|
6
6
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
7
7
|
import { useCodeDrawer } from "../../../components/base/CodeViewer/useCodeDrawer.mjs";
|
|
8
8
|
import { Badge } from "../../../components/Badge/index.mjs";
|