@rsdoctor/components 1.5.17 → 1.5.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/components/Alerts/bundle-alert.d.ts +1 -1
  2. package/dist/components/Alerts/bundle-alert.mjs +74 -67
  3. package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
  4. package/dist/components/Alerts/list.d.ts +1 -0
  5. package/dist/components/Alerts/list.mjs +13 -5
  6. package/dist/components/Alerts/list.mjs.map +1 -1
  7. package/dist/components/Alerts/list.module.mjs +2 -1
  8. package/dist/components/Alerts/list.module.mjs.map +1 -1
  9. package/dist/components/Alerts/list_module.css +8 -0
  10. package/dist/components/Alerts/list_module.css.map +1 -1
  11. package/dist/components/Charts/TreeMap.mjs +36 -6
  12. package/dist/components/Charts/TreeMap.mjs.map +1 -1
  13. package/dist/components/Opener/ide.mjs +36 -2
  14. package/dist/components/Opener/ide.mjs.map +1 -1
  15. package/dist/pages/BundleSize/components/asset-path.d.ts +7 -0
  16. package/dist/pages/BundleSize/components/asset-path.mjs +9 -0
  17. package/dist/pages/BundleSize/components/asset-path.mjs.map +1 -0
  18. package/dist/pages/BundleSize/components/asset-path.test.d.ts +1 -0
  19. package/dist/pages/BundleSize/components/asset-path.test.mjs +27 -0
  20. package/dist/pages/BundleSize/components/asset-path.test.mjs.map +1 -0
  21. package/dist/pages/BundleSize/components/index.mjs +4 -3
  22. package/dist/pages/BundleSize/components/index.mjs.map +1 -1
  23. package/dist/pages/BundleSize/components/tree-graph.mjs +30 -13
  24. package/dist/pages/BundleSize/components/tree-graph.mjs.map +1 -1
  25. package/dist/utils/assets.d.ts +1 -0
  26. package/dist/utils/assets.mjs +17 -0
  27. package/dist/utils/assets.mjs.map +1 -0
  28. package/dist/utils/assets.test.d.ts +1 -0
  29. package/dist/utils/assets.test.mjs +22 -0
  30. package/dist/utils/assets.test.mjs.map +1 -0
  31. package/package.json +8 -8
@@ -1,5 +1,5 @@
1
1
  import { ViewMode } from '../../constants.js';
2
- import { AlertProps } from '../Alert/types.js';
2
+ import type { AlertProps } from '../Alert/types.js';
3
3
  import type { Rule } from '@rsdoctor/types';
4
4
  interface BundleAlertProps {
5
5
  title: string;
@@ -1,88 +1,89 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Empty, Tabs, Tag } from "antd";
3
+ import { useEffect, useState } from "react";
3
4
  import { Card } from "../Card/index.mjs";
4
5
  import { ECMAVersionCheck } from "../Alert/ecma-version-check.mjs";
5
6
  import { Overview } from "../Overall/overview.mjs";
6
7
  import { AlertCollapse } from "./collapse.mjs";
7
8
  import { CommonList } from "./list.mjs";
8
9
  import bundle_alert_module from "./bundle-alert.module.mjs";
9
- import { useState } from "react";
10
10
  import { CrossChunksAlertCollapse } from "./collapse-cross-chunks.mjs";
11
11
  import { ModuleMixedChunksAlertCollapse } from "./collapse-module-mixed-chunks.mjs";
12
12
  import { SideEffectsOnlyImportsAlertCollapse } from "./collapse-side-effects-only-imports.mjs";
13
13
  import { CjsRequireAlertCollapse } from "./collapse-cjs-require.mjs";
14
14
  import { EsmResolvedToCjsAlertCollapse } from "./collapse-esm-cjs.mjs";
15
+ const BUILTIN_RULE_TABS = [
16
+ {
17
+ key: 'E1001',
18
+ label: 'Duplicate Packages'
19
+ },
20
+ {
21
+ key: 'E1002',
22
+ label: 'Cross Chunks Package'
23
+ },
24
+ {
25
+ key: 'E1003',
26
+ label: 'Loader Performance Optimization'
27
+ },
28
+ {
29
+ key: 'E1004',
30
+ label: 'ECMA Version Check'
31
+ },
32
+ {
33
+ key: 'E1005',
34
+ label: 'Default Import Check'
35
+ },
36
+ {
37
+ key: 'E1006',
38
+ label: 'Module Mixed Chunks'
39
+ },
40
+ {
41
+ key: 'E1007',
42
+ label: 'Tree Shaking Side Effects Only'
43
+ },
44
+ {
45
+ key: 'E1008',
46
+ label: 'CJS Require Cannot Tree-Shake'
47
+ },
48
+ {
49
+ key: 'E1009',
50
+ label: 'ESM Import Resolved to CJS'
51
+ }
52
+ ];
15
53
  const BundleAlert = ({ title, dataSource, extraData })=>{
16
- const firstKeyWithData = [
17
- 'E1001',
18
- 'E1002',
19
- 'E1003',
20
- 'E1004',
21
- 'E1005',
22
- 'E1006',
23
- 'E1007',
24
- 'E1008',
25
- 'E1009'
26
- ].find((code)=>dataSource.some((d)=>d.code === code)) ?? 'E1001';
27
- const [activeKey, setActiveKey] = useState(firstKeyWithData);
28
- const tabData = [
29
- {
30
- key: 'E1001',
31
- label: 'Duplicate Packages',
32
- data: []
33
- },
34
- {
35
- key: 'E1002',
36
- label: 'Cross Chunks Package',
37
- data: []
38
- },
39
- {
40
- key: 'E1003',
41
- label: 'Loader Performance Optimization',
42
- data: []
43
- },
44
- {
45
- key: 'E1004',
46
- label: 'ECMA Version Check',
47
- data: []
48
- },
49
- {
50
- key: 'E1005',
51
- label: 'Default Import Check',
52
- data: []
53
- },
54
- {
55
- key: 'E1006',
56
- label: 'Module Mixed Chunks',
57
- data: []
58
- },
59
- {
60
- key: 'E1007',
61
- label: 'Tree Shaking Side Effects Only',
62
- data: []
63
- },
64
- {
65
- key: 'E1008',
66
- label: 'CJS Require Cannot Tree-Shake',
67
- data: []
68
- },
69
- {
70
- key: 'E1009',
71
- label: 'ESM Import Resolved to CJS',
72
- data: []
73
- }
74
- ];
54
+ const tabData = BUILTIN_RULE_TABS.map((tab)=>({
55
+ ...tab,
56
+ data: [],
57
+ tag: tab.key
58
+ }));
59
+ const customRulesData = [];
75
60
  dataSource.forEach((data)=>{
76
- const target = tabData.find((td)=>td.key === data.code)?.data;
77
- target?.push(data);
61
+ const target = tabData.find((td)=>td.key === data.code);
62
+ if (target) target.data.push(data);
63
+ else customRulesData.push(data);
64
+ });
65
+ if (customRulesData.length) tabData.push({
66
+ key: 'CUSTOM_RULES',
67
+ label: 'Custom Rules',
68
+ data: customRulesData,
69
+ tag: 'Custom'
78
70
  });
79
71
  tabData.sort((a, b)=>(b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0));
72
+ const defaultActiveKey = tabData[0]?.key ?? 'E1001';
73
+ const [activeKey, setActiveKey] = useState(defaultActiveKey);
74
+ const activeTab = tabData.find((tab)=>tab.key === activeKey);
75
+ const resolvedActiveKey = activeTab && (activeTab.data.length > 0 || 0 === dataSource.length) ? activeKey : defaultActiveKey;
76
+ useEffect(()=>{
77
+ setActiveKey(defaultActiveKey);
78
+ }, [
79
+ defaultActiveKey
80
+ ]);
80
81
  const tabItems = tabData.map((td)=>{
81
- const tagStyle = activeKey === td.key ? {
82
+ const tagStyle = resolvedActiveKey === td.key ? {
82
83
  border: '1px solid #91D5FF',
83
84
  backgroundColor: '#E6F7FF'
84
85
  } : {};
85
- const tagTextStyle = activeKey === td.key ? {
86
+ const tagTextStyle = resolvedActiveKey === td.key ? {
86
87
  color: '#1890FF'
87
88
  } : {};
88
89
  const LabelComponent = ()=>/*#__PURE__*/ jsx(Overview, {
@@ -112,7 +113,7 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
112
113
  style: {
113
114
  ...tagTextStyle
114
115
  },
115
- children: td.key
116
+ children: td.tag
116
117
  })
117
118
  })
118
119
  ]
@@ -174,6 +175,12 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
174
175
  extraData: extraData
175
176
  });
176
177
  break;
178
+ case 'CUSTOM_RULES':
179
+ children = /*#__PURE__*/ jsx(CommonList, {
180
+ data: td.data,
181
+ showCode: true
182
+ });
183
+ break;
177
184
  default:
178
185
  children = null;
179
186
  break;
@@ -198,7 +205,7 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
198
205
  backgroundColor: '#EAEDF1',
199
206
  borderRadius: '2px'
200
207
  },
201
- children: td.key
208
+ children: td.tag
202
209
  }),
203
210
  /*#__PURE__*/ jsx("span", {
204
211
  children: td.label
@@ -225,7 +232,7 @@ const BundleAlert = ({ title, dataSource, extraData })=>{
225
232
  onChange: setActiveKey,
226
233
  tabBarGutter: 10,
227
234
  type: "card",
228
- defaultActiveKey: tabData[0]?.key ?? 'E1001',
235
+ activeKey: resolvedActiveKey,
229
236
  items: tabItems
230
237
  }) : /*#__PURE__*/ jsx("div", {
231
238
  style: {
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["../../../src/components/Alerts/bundle-alert.tsx"],"sourcesContent":["import { Tabs, Empty, Tag } from 'antd';\n\nimport { Card } from '../Card';\nimport { ECMAVersionCheck } from '../Alert/ecma-version-check';\nimport { Overview } from '../Overall/overview';\nimport { AlertCollapse } from './collapse';\nimport { CommonList } from './list';\nimport { ViewMode } from '../../constants';\n\nimport { AlertProps } from '../Alert/types';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './bundle-alert.module.scss';\nimport { CSSProperties, useState } from 'react';\nimport { CrossChunksAlertCollapse } from './collapse-cross-chunks';\nimport { ModuleMixedChunksAlertCollapse } from './collapse-module-mixed-chunks';\nimport { SideEffectsOnlyImportsAlertCollapse } from './collapse-side-effects-only-imports';\nimport { CjsRequireAlertCollapse } from './collapse-cjs-require';\nimport { EsmResolvedToCjsAlertCollapse } from './collapse-esm-cjs';\n\ninterface BundleAlertProps {\n title: string;\n cwd: string;\n dataSource: Rule.RuleStoreDataItem[];\n extraData: Omit<AlertProps, 'data'>;\n viewMode: ViewMode;\n setViewMode(mode: ViewMode): void;\n extraCom?: React.JSX.Element | undefined;\n}\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const firstKeyWithData =\n [\n 'E1001',\n 'E1002',\n 'E1003',\n 'E1004',\n 'E1005',\n 'E1006',\n 'E1007',\n 'E1008',\n 'E1009',\n ].find((code) => dataSource.some((d) => d.code === code)) ?? 'E1001';\n const [activeKey, setActiveKey] = useState(firstKeyWithData);\n const tabData: Array<{\n key: string;\n label: string;\n data: Array<Rule.RuleStoreDataItem>;\n }> = [\n {\n key: 'E1001',\n label: 'Duplicate Packages',\n data: [],\n },\n {\n key: 'E1002',\n label: 'Cross Chunks Package',\n data: [],\n },\n {\n key: 'E1003',\n label: 'Loader Performance Optimization',\n data: [],\n },\n {\n key: 'E1004',\n label: 'ECMA Version Check',\n data: [],\n },\n {\n key: 'E1005',\n label: 'Default Import Check',\n data: [],\n },\n {\n key: 'E1006',\n label: 'Module Mixed Chunks',\n data: [],\n },\n {\n key: 'E1007',\n label: 'Tree Shaking Side Effects Only',\n data: [],\n },\n {\n key: 'E1008',\n label: 'CJS Require Cannot Tree-Shake',\n data: [],\n },\n {\n key: 'E1009',\n label: 'ESM Import Resolved to CJS',\n data: [],\n },\n ];\n\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code)?.data;\n target?.push(data);\n });\n\n tabData.sort(\n (a, b) => (b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0),\n );\n\n const tabItems = tabData.map((td) => {\n const tagStyle =\n activeKey === td.key\n ? ({\n border: '1px solid #91D5FF',\n backgroundColor: '#E6F7FF',\n } as CSSProperties)\n : {};\n\n const tagTextStyle =\n activeKey === td.key\n ? {\n color: '#1890FF',\n }\n : {};\n\n const LabelComponent = () => (\n <Overview\n style={{\n backgroundColor: 'transparent',\n paddingLeft: 0,\n paddingRight: 0,\n width: '100%',\n }}\n title={<span className={styles.labelTitle}>{td.label}</span>}\n description={\n <div className={styles.labelDescription}>\n <span>{td.data.length}</span>\n <Tag\n style={{ fontFamily: 'Menlo', borderRadius: '2px', ...tagStyle }}\n >\n <span style={{ ...tagTextStyle }}>{td.key}</span>\n </Tag>\n </div>\n }\n />\n );\n\n let children, description;\n switch (td.key) {\n case 'E1001':\n children = <AlertCollapse data={td.data} extraData={extraData} />;\n break;\n case 'E1002':\n children = (\n <CrossChunksAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1003':\n children = <CommonList data={td.data} />;\n break;\n case 'E1004':\n description = (\n <span>\n No ECMA Version Check Rules were found. Please refer to\n 「https://rsdoctor.rs/guide/usage/rule-config」.\n </span>\n );\n children = <ECMAVersionCheck data={td.data} />;\n break;\n case 'E1005':\n children = <CommonList data={td.data} />;\n break;\n case 'E1006':\n children = (\n <ModuleMixedChunksAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1007':\n children = (\n <SideEffectsOnlyImportsAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1008':\n children = (\n <CjsRequireAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1009':\n children = (\n <EsmResolvedToCjsAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n default:\n children = null;\n break;\n }\n\n if (!td.data.length) {\n children = (\n <Empty description={description} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n );\n }\n\n return {\n key: td.key,\n label: <LabelComponent />,\n children: (\n <Card\n className={styles.card}\n type=\"inner\"\n title={\n <>\n <Tag\n style={{\n fontFamily: 'Menlo',\n fontWeight: '700',\n fontSize: '13px',\n backgroundColor: '#EAEDF1',\n borderRadius: '2px',\n }}\n >\n {td.key}\n </Tag>\n <span>{td.label}</span>\n </>\n }\n >\n {children}\n </Card>\n ),\n };\n });\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div className={styles.container}>\n <div className={styles.title}>{title}</div>\n {!dataSource.length ? (\n <div\n style={{\n minHeight: '480px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Empty\n description={'No Bundle Alerts Data'}\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n />\n </div>\n ) : (\n <Tabs\n onChange={setActiveKey}\n tabBarGutter={10}\n type=\"card\"\n defaultActiveKey={tabData[0]?.key ?? 'E1001'}\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BundleAlert","title","dataSource","extraData","firstKeyWithData","code","d","activeKey","setActiveKey","useState","tabData","data","target","td","a","b","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","ModuleMixedChunksAlertCollapse","SideEffectsOnlyImportsAlertCollapse","CjsRequireAlertCollapse","EsmResolvedToCjsAlertCollapse","Empty","Card","Tabs"],"mappings":";;;;;;;;;;;;;;AA+BO,MAAMA,cAA0C,CAAC,EACtDC,KAAK,EACLC,UAAU,EACVC,SAAS,EACV;IACC,MAAMC,mBACJ;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KACD,CAAC,IAAI,CAAC,CAACC,OAASH,WAAW,IAAI,CAAC,CAACI,IAAMA,EAAE,IAAI,KAAKD,UAAU;IAC/D,MAAM,CAACE,WAAWC,aAAa,GAAGC,SAASL;IAC3C,MAAMM,UAID;QACH;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;QACA;YACE,KAAK;YACL,OAAO;YACP,MAAM,EAAE;QACV;KACD;IAEDR,WAAW,OAAO,CAAC,CAACS;QAClB,MAAMC,SAASF,QAAQ,IAAI,CAAC,CAACG,KAAOA,GAAG,GAAG,KAAKF,KAAK,IAAI,GAAG;QAC3DC,QAAQ,KAAKD;IACf;IAEAD,QAAQ,IAAI,CACV,CAACI,GAAGC,IAAOA,AAAAA,CAAAA,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI,KAAMD,CAAAA,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,IAAI;IAGnE,MAAME,WAAWN,QAAQ,GAAG,CAAC,CAACG;QAC5B,MAAMI,WACJV,cAAcM,GAAG,GAAG,GACf;YACC,QAAQ;YACR,iBAAiB;QACnB,IACA,CAAC;QAEP,MAAMK,eACJX,cAAcM,GAAG,GAAG,GAChB;YACE,OAAO;QACT,IACA,CAAC;QAEP,MAAMM,iBAAiB,kBACrB,IAACC,UAAQA;gBACP,OAAO;oBACL,iBAAiB;oBACjB,aAAa;oBACb,cAAc;oBACd,OAAO;gBACT;gBACA,qBAAO,IAAC;oBAAK,WAAWC,oBAAAA,UAAiB;8BAAGR,GAAG,KAAK;;gBACpD,2BACE,KAAC;oBAAI,WAAWQ,oBAAAA,gBAAuB;;sCACrC,IAAC;sCAAMR,GAAG,IAAI,CAAC,MAAM;;sCACrB,IAACS,KAAGA;4BACF,OAAO;gCAAE,YAAY;gCAAS,cAAc;gCAAO,GAAGL,QAAQ;4BAAC;sCAE/D,kBAAC;gCAAK,OAAO;oCAAE,GAAGC,YAAY;gCAAC;0CAAIL,GAAG,GAAG;;;;;;QAOnD,IAAIU,UAAUC;QACd,OAAQX,GAAG,GAAG;YACZ,KAAK;gBACHU,WAAW,WAAXA,GAAW,IAACE,eAAaA;oBAAC,MAAMZ,GAAG,IAAI;oBAAE,WAAWV;;gBACpD;YACF,KAAK;gBACHoB,WAAW,WAAXA,GACE,IAACG,0BAAwBA;oBAAC,MAAMb,GAAG,IAAI;oBAAE,WAAWV;;gBAEtD;YACF,KAAK;gBACHoB,WAAW,WAAXA,GAAW,IAACI,YAAUA;oBAAC,MAAMd,GAAG,IAAI;;gBACpC;YACF,KAAK;gBACHW,cAAc,WAAdA,GACE,IAAC;8BAAK;;gBAKRD,WAAW,WAAXA,GAAW,IAACK,kBAAgBA;oBAAC,MAAMf,GAAG,IAAI;;gBAC1C;YACF,KAAK;gBACHU,WAAW,WAAXA,GAAW,IAACI,YAAUA;oBAAC,MAAMd,GAAG,IAAI;;gBACpC;YACF,KAAK;gBACHU,WAAW,WAAXA,GACE,IAACM,gCAA8BA;oBAC7B,MAAMhB,GAAG,IAAI;oBACb,WAAWV;;gBAGf;YACF,KAAK;gBACHoB,WAAW,WAAXA,GACE,IAACO,qCAAmCA;oBAClC,MAAMjB,GAAG,IAAI;oBACb,WAAWV;;gBAGf;YACF,KAAK;gBACHoB,WAAW,WAAXA,GACE,IAACQ,yBAAuBA;oBAAC,MAAMlB,GAAG,IAAI;oBAAE,WAAWV;;gBAErD;YACF,KAAK;gBACHoB,WAAW,WAAXA,GACE,IAACS,+BAA6BA;oBAAC,MAAMnB,GAAG,IAAI;oBAAE,WAAWV;;gBAE3D;YACF;gBACEoB,WAAW;gBACX;QACJ;QAEA,IAAI,CAACV,GAAG,IAAI,CAAC,MAAM,EACjBU,WAAW,WAAXA,GACE,IAACU,OAAKA;YAAC,aAAaT;YAAa,OAAOS,MAAM,sBAAsB;;QAIxE,OAAO;YACL,KAAKpB,GAAG,GAAG;YACX,OAAO,WAAP,GAAO,IAACM,gBAAAA,CAAAA;YACR,UAAU,WAAV,GACE,IAACe,MAAIA;gBACH,WAAWb,oBAAAA,IAAW;gBACtB,MAAK;gBACL,qBACE;;sCACE,IAACC,KAAGA;4BACF,OAAO;gCACL,YAAY;gCACZ,YAAY;gCACZ,UAAU;gCACV,iBAAiB;gCACjB,cAAc;4BAChB;sCAECT,GAAG,GAAG;;sCAET,IAAC;sCAAMA,GAAG,KAAK;;;;0BAIlBU;;QAGP;IACF;IAEA,OAAO,WAAP,GACE,IAACW,MAAIA;QAAC,OAAO;YAAE,OAAO;YAAQ,cAAc;QAAO;kBACjD,mBAAC;YAAI,WAAWb,oBAAAA,SAAgB;;8BAC9B,IAAC;oBAAI,WAAWA,oBAAAA,KAAY;8BAAGpB;;gBAC7BC,WAAW,MAAM,G,cAejB,IAACiC,MAAIA;oBACH,UAAU3B;oBACV,cAAc;oBACd,MAAK;oBACL,kBAAkBE,OAAO,CAAC,EAAE,EAAE,OAAO;oBACrC,OAAOM;qBApBW,WAAH,GACjB,IAAC;oBACC,OAAO;wBACL,WAAW;wBACX,SAAS;wBACT,gBAAgB;wBAChB,YAAY;oBACd;8BAEA,kBAACiB,OAAKA;wBACJ,aAAa;wBACb,OAAOA,MAAM,sBAAsB;;;;;;AAejD"}
1
+ {"version":3,"file":"components/Alerts/bundle-alert.mjs","sources":["../../../src/components/Alerts/bundle-alert.tsx"],"sourcesContent":["import { Tabs, Empty, Tag } from 'antd';\nimport { useEffect, useState } from 'react';\n\nimport { Card } from '../Card';\nimport { ECMAVersionCheck } from '../Alert/ecma-version-check';\nimport { Overview } from '../Overall/overview';\nimport { AlertCollapse } from './collapse';\nimport { CommonList } from './list';\nimport { ViewMode } from '../../constants';\n\nimport type { AlertProps } from '../Alert/types';\nimport type { CSSProperties } from 'react';\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './bundle-alert.module.scss';\nimport { CrossChunksAlertCollapse } from './collapse-cross-chunks';\nimport { ModuleMixedChunksAlertCollapse } from './collapse-module-mixed-chunks';\nimport { SideEffectsOnlyImportsAlertCollapse } from './collapse-side-effects-only-imports';\nimport { CjsRequireAlertCollapse } from './collapse-cjs-require';\nimport { EsmResolvedToCjsAlertCollapse } from './collapse-esm-cjs';\n\ninterface BundleAlertProps {\n title: string;\n cwd: string;\n dataSource: Rule.RuleStoreDataItem[];\n extraData: Omit<AlertProps, 'data'>;\n viewMode: ViewMode;\n setViewMode(mode: ViewMode): void;\n extraCom?: React.JSX.Element | undefined;\n}\n\nconst BUILTIN_RULE_TABS = [\n {\n key: 'E1001',\n label: 'Duplicate Packages',\n },\n {\n key: 'E1002',\n label: 'Cross Chunks Package',\n },\n {\n key: 'E1003',\n label: 'Loader Performance Optimization',\n },\n {\n key: 'E1004',\n label: 'ECMA Version Check',\n },\n {\n key: 'E1005',\n label: 'Default Import Check',\n },\n {\n key: 'E1006',\n label: 'Module Mixed Chunks',\n },\n {\n key: 'E1007',\n label: 'Tree Shaking Side Effects Only',\n },\n {\n key: 'E1008',\n label: 'CJS Require Cannot Tree-Shake',\n },\n {\n key: 'E1009',\n label: 'ESM Import Resolved to CJS',\n },\n];\n\nexport const BundleAlert: React.FC<BundleAlertProps> = ({\n title,\n dataSource,\n extraData,\n}) => {\n const tabData: Array<{\n key: string;\n label: string;\n data: Array<Rule.RuleStoreDataItem>;\n tag: string;\n }> = BUILTIN_RULE_TABS.map((tab) => ({ ...tab, data: [], tag: tab.key }));\n const customRulesData: Array<Rule.RuleStoreDataItem> = [];\n\n dataSource.forEach((data) => {\n const target = tabData.find((td) => td.key === data.code);\n if (target) {\n target.data.push(data);\n } else {\n customRulesData.push(data);\n }\n });\n\n if (customRulesData.length) {\n tabData.push({\n key: 'CUSTOM_RULES',\n label: 'Custom Rules',\n data: customRulesData,\n tag: 'Custom',\n });\n }\n\n tabData.sort(\n (a, b) => (b.data.length > 0 ? 1 : 0) - (a.data.length > 0 ? 1 : 0),\n );\n\n const defaultActiveKey = tabData[0]?.key ?? 'E1001';\n const [activeKey, setActiveKey] = useState(defaultActiveKey);\n const activeTab = tabData.find((tab) => tab.key === activeKey);\n const resolvedActiveKey =\n activeTab && (activeTab.data.length > 0 || dataSource.length === 0)\n ? activeKey\n : defaultActiveKey;\n\n useEffect(() => {\n setActiveKey(defaultActiveKey);\n }, [defaultActiveKey]);\n\n const tabItems = tabData.map((td) => {\n const tagStyle =\n resolvedActiveKey === td.key\n ? ({\n border: '1px solid #91D5FF',\n backgroundColor: '#E6F7FF',\n } as CSSProperties)\n : {};\n\n const tagTextStyle =\n resolvedActiveKey === td.key\n ? {\n color: '#1890FF',\n }\n : {};\n\n const LabelComponent = () => (\n <Overview\n style={{\n backgroundColor: 'transparent',\n paddingLeft: 0,\n paddingRight: 0,\n width: '100%',\n }}\n title={<span className={styles.labelTitle}>{td.label}</span>}\n description={\n <div className={styles.labelDescription}>\n <span>{td.data.length}</span>\n <Tag\n style={{ fontFamily: 'Menlo', borderRadius: '2px', ...tagStyle }}\n >\n <span style={{ ...tagTextStyle }}>{td.tag}</span>\n </Tag>\n </div>\n }\n />\n );\n\n let children, description;\n switch (td.key) {\n case 'E1001':\n children = <AlertCollapse data={td.data} extraData={extraData} />;\n break;\n case 'E1002':\n children = (\n <CrossChunksAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1003':\n children = <CommonList data={td.data} />;\n break;\n case 'E1004':\n description = (\n <span>\n No ECMA Version Check Rules were found. Please refer to\n 「https://rsdoctor.rs/guide/usage/rule-config」.\n </span>\n );\n children = <ECMAVersionCheck data={td.data} />;\n break;\n case 'E1005':\n children = <CommonList data={td.data} />;\n break;\n case 'E1006':\n children = (\n <ModuleMixedChunksAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1007':\n children = (\n <SideEffectsOnlyImportsAlertCollapse\n data={td.data}\n extraData={extraData}\n />\n );\n break;\n case 'E1008':\n children = (\n <CjsRequireAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'E1009':\n children = (\n <EsmResolvedToCjsAlertCollapse data={td.data} extraData={extraData} />\n );\n break;\n case 'CUSTOM_RULES':\n children = <CommonList data={td.data} showCode />;\n break;\n default:\n children = null;\n break;\n }\n\n if (!td.data.length) {\n children = (\n <Empty description={description} image={Empty.PRESENTED_IMAGE_SIMPLE} />\n );\n }\n\n return {\n key: td.key,\n label: <LabelComponent />,\n children: (\n <Card\n className={styles.card}\n type=\"inner\"\n title={\n <>\n <Tag\n style={{\n fontFamily: 'Menlo',\n fontWeight: '700',\n fontSize: '13px',\n backgroundColor: '#EAEDF1',\n borderRadius: '2px',\n }}\n >\n {td.tag}\n </Tag>\n <span>{td.label}</span>\n </>\n }\n >\n {children}\n </Card>\n ),\n };\n });\n\n return (\n <Card style={{ width: '100%', borderRadius: '12px' }}>\n <div className={styles.container}>\n <div className={styles.title}>{title}</div>\n {!dataSource.length ? (\n <div\n style={{\n minHeight: '480px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Empty\n description={'No Bundle Alerts Data'}\n image={Empty.PRESENTED_IMAGE_SIMPLE}\n />\n </div>\n ) : (\n <Tabs\n onChange={setActiveKey}\n tabBarGutter={10}\n type=\"card\"\n activeKey={resolvedActiveKey}\n items={tabItems}\n />\n )}\n </div>\n </Card>\n );\n};\n"],"names":["BUILTIN_RULE_TABS","BundleAlert","title","dataSource","extraData","tabData","tab","customRulesData","data","target","td","a","b","defaultActiveKey","activeKey","setActiveKey","useState","activeTab","resolvedActiveKey","useEffect","tabItems","tagStyle","tagTextStyle","LabelComponent","Overview","styles","Tag","children","description","AlertCollapse","CrossChunksAlertCollapse","CommonList","ECMAVersionCheck","ModuleMixedChunksAlertCollapse","SideEffectsOnlyImportsAlertCollapse","CjsRequireAlertCollapse","EsmResolvedToCjsAlertCollapse","Empty","Card","Tabs"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Rule } from '@rsdoctor/types';
2
2
  export declare const CommonList: (props: {
3
3
  data: Array<Rule.RuleStoreDataItem>;
4
+ showCode?: boolean;
4
5
  }) => import("react").JSX.Element[];
@@ -1,10 +1,10 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Button } from "antd";
3
3
  import { Overview } from "../Overall/overview.mjs";
4
4
  import { useRuleIndexNavigate } from "../../utils/index.mjs";
5
5
  import list_module from "./list.module.mjs";
6
6
  const CommonList = (props)=>{
7
- const { data } = props;
7
+ const { data, showCode } = props;
8
8
  return data.map((d)=>{
9
9
  const { code, link, description } = d;
10
10
  const navigate = useRuleIndexNavigate(code, link);
@@ -12,12 +12,20 @@ const CommonList = (props)=>{
12
12
  style: {
13
13
  background: '#fff'
14
14
  },
15
- description: /*#__PURE__*/ jsx("div", {
15
+ description: /*#__PURE__*/ jsxs("div", {
16
16
  className: list_module.description,
17
- children: description || ''
17
+ children: [
18
+ showCode ? /*#__PURE__*/ jsx("div", {
19
+ className: list_module.code,
20
+ children: code
21
+ }) : null,
22
+ /*#__PURE__*/ jsx("div", {
23
+ children: description || ''
24
+ })
25
+ ]
18
26
  }),
19
27
  icon: /*#__PURE__*/ jsx(Button, {
20
- onClick: ()=>navigate,
28
+ onClick: navigate,
21
29
  type: "link",
22
30
  children: "more"
23
31
  })
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alerts/list.mjs","sources":["../../../src/components/Alerts/list.tsx"],"sourcesContent":["import { Button } from 'antd';\n\nimport { Overview } from '../Overall/overview';\nimport { useRuleIndexNavigate } from '../../utils';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './list.module.scss';\n\nexport const CommonList = (props: { data: Array<Rule.RuleStoreDataItem> }) => {\n const { data } = props;\n return data.map((d) => {\n const { code, link, description } = d;\n const navigate = useRuleIndexNavigate(code, link);\n\n return (\n <Overview\n style={{\n background: '#fff',\n }}\n description={\n <div className={styles.description}>{description || ''}</div>\n }\n icon={\n <Button onClick={() => navigate} type=\"link\">\n more\n </Button>\n }\n />\n );\n });\n};\n"],"names":["CommonList","props","data","d","code","link","description","navigate","useRuleIndexNavigate","Overview","styles","Button"],"mappings":";;;;;AASO,MAAMA,aAAa,CAACC;IACzB,MAAM,EAAEC,IAAI,EAAE,GAAGD;IACjB,OAAOC,KAAK,GAAG,CAAC,CAACC;QACf,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGH;QACpC,MAAMI,WAAWC,qBAAqBJ,MAAMC;QAE5C,OAAO,WAAP,GACE,IAACI,UAAQA;YACP,OAAO;gBACL,YAAY;YACd;YACA,2BACE,IAAC;gBAAI,WAAWC,YAAAA,WAAkB;0BAAGJ,eAAe;;YAEtD,oBACE,IAACK,QAAMA;gBAAC,SAAS,IAAMJ;gBAAU,MAAK;0BAAO;;;IAMrD;AACF"}
1
+ {"version":3,"file":"components/Alerts/list.mjs","sources":["../../../src/components/Alerts/list.tsx"],"sourcesContent":["import { Button } from 'antd';\n\nimport { Overview } from '../Overall/overview';\nimport { useRuleIndexNavigate } from '../../utils';\n\nimport type { Rule } from '@rsdoctor/types';\n\nimport styles from './list.module.scss';\n\nexport const CommonList = (props: {\n data: Array<Rule.RuleStoreDataItem>;\n showCode?: boolean;\n}) => {\n const { data, showCode } = props;\n return data.map((d) => {\n const { code, link, description } = d;\n const navigate = useRuleIndexNavigate(code, link);\n\n return (\n <Overview\n style={{\n background: '#fff',\n }}\n description={\n <div className={styles.description}>\n {showCode ? <div className={styles.code}>{code}</div> : null}\n <div>{description || ''}</div>\n </div>\n }\n icon={\n <Button onClick={navigate} type=\"link\">\n more\n </Button>\n }\n />\n );\n });\n};\n"],"names":["CommonList","props","data","showCode","d","code","link","description","navigate","useRuleIndexNavigate","Overview","styles","Button"],"mappings":";;;;;AASO,MAAMA,aAAa,CAACC;IAIzB,MAAM,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAGF;IAC3B,OAAOC,KAAK,GAAG,CAAC,CAACE;QACf,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGH;QACpC,MAAMI,WAAWC,qBAAqBJ,MAAMC;QAE5C,OAAO,WAAP,GACE,IAACI,UAAQA;YACP,OAAO;gBACL,YAAY;YACd;YACA,2BACE,KAAC;gBAAI,WAAWC,YAAAA,WAAkB;;oBAC/BR,WAAW,WAAXA,GAAW,IAAC;wBAAI,WAAWQ,YAAAA,IAAW;kCAAGN;yBAAc;kCACxD,IAAC;kCAAKE,eAAe;;;;YAGzB,oBACE,IAACK,QAAMA;gBAAC,SAASJ;gBAAU,MAAK;0BAAO;;;IAM/C;AACF"}
@@ -1,6 +1,7 @@
1
1
  import "./list_module.css";
2
2
  const list_module = {
3
- description: "description-h4sYv3"
3
+ description: "description-h4sYv3",
4
+ code: "code-ocfe7Q"
4
5
  };
5
6
  export default list_module;
6
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"components/Alerts/list.module.mjs","sources":["../../../src/components/Alerts/list.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./list_module.css\"\nexport default {\"description\":\"description-h4sYv3\"};"],"names":[],"mappings":";AAEA,oBAAe;IAAC,aAAc;AAAoB"}
1
+ {"version":3,"file":"components/Alerts/list.module.mjs","sources":["../../../src/components/Alerts/list.module.scss"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./list_module.css\"\nexport default {\"description\":\"description-h4sYv3\",\"code\":\"code-ocfe7Q\"};"],"names":[],"mappings":";AAEA,oBAAe;IAAC,aAAc;IAAqB,MAAO;AAAa"}
@@ -6,5 +6,13 @@
6
6
  line-height: 16px;
7
7
  }
8
8
 
9
+ .code-ocfe7Q {
10
+ color: #1890ff;
11
+ margin-bottom: 4px;
12
+ font-family: Menlo, Monaco, Consolas, Courier New, monospace;
13
+ font-size: 13px;
14
+ font-weight: 600;
15
+ }
16
+
9
17
 
10
18
  /*# sourceMappingURL=list_module.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://./src/components/Alerts/list.module.scss"],"names":[],"mappings":"AAAA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB","sourcesContent":[".description{font-size:14px;font-weight:400;line-height:16px;white-space:pre-wrap;word-break:break-word}"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://./src/components/Alerts/list.module.scss"],"names":[],"mappings":"AAAA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AANwG;EAStG,cAAc;EACd,kBAAkB;EAClB,4DAA4D;EAC5D,eAAe;EACf,gBAAgB;AAClB","sourcesContent":[".description{font-size:14px;font-weight:400;line-height:16px;white-space:pre-wrap;word-break:break-word}.code{margin-bottom:4px;color:#1890ff;font-family:Menlo,Monaco,Consolas,\"Courier New\",monospace;font-size:13px;font-weight:600}"],"sourceRoot":""}
@@ -13,6 +13,7 @@ import { ServerAPIProvider } from "../Manifest/index.mjs";
13
13
  import { ModuleAnalyzeComponent } from "../../pages/ModuleAnalyze/index.mjs";
14
14
  import treemap_module from "./treemap.module.mjs";
15
15
  import { TREE_COLORS } from "./constants.mjs";
16
+ import { isJavaScriptAsset } from "../../utils/assets.mjs";
16
17
  __rspack_external_echarts_core_d2845954.use([
17
18
  TreemapChart,
18
19
  TooltipComponent,
@@ -426,7 +427,27 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
426
427
  const [moduleId, setModuleId] = useState('');
427
428
  const [showAnalyze, setShowAnalyze] = useState(false);
428
429
  const [chunkSearchQuery, setChunkSearchQuery] = useState('');
430
+ const [showOnlyJavaScriptAssets, setShowOnlyJavaScriptAssets] = useState(false);
429
431
  const containerRef = react.useRef(null);
432
+ const visibleAssetNames = useMemo(()=>{
433
+ if (!showOnlyJavaScriptAssets) return assetNames;
434
+ return assetNames.filter(isJavaScriptAsset);
435
+ }, [
436
+ assetNames,
437
+ showOnlyJavaScriptAssets
438
+ ]);
439
+ const visibleAssetNamesKey = useMemo(()=>visibleAssetNames.join('\0'), [
440
+ visibleAssetNames
441
+ ]);
442
+ const previousVisibleAssetNamesKeyRef = react.useRef(void 0);
443
+ useEffect(()=>{
444
+ if (previousVisibleAssetNamesKeyRef.current === visibleAssetNamesKey) return;
445
+ previousVisibleAssetNamesKeyRef.current = visibleAssetNamesKey;
446
+ setCheckedAssets(visibleAssetNames);
447
+ }, [
448
+ visibleAssetNames,
449
+ visibleAssetNamesKey
450
+ ]);
430
451
  const handleChartClick = useCallback((params)=>{
431
452
  onChartClick?.(params);
432
453
  const data = params.data;
@@ -484,7 +505,7 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
484
505
  };
485
506
  }, []);
486
507
  const filteredTreeData = useMemo(()=>{
487
- let filtered = treeData.filter((item)=>checkedAssets.includes(item.name));
508
+ let filtered = treeData.filter((item)=>visibleAssetNames.includes(item.name) && checkedAssets.includes(item.name));
488
509
  if (chunkSearchQuery.trim()) {
489
510
  const searchLower = chunkSearchQuery.toLowerCase();
490
511
  filtered = filtered.filter((item)=>item.name.toLowerCase().includes(searchLower));
@@ -493,7 +514,8 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
493
514
  }, [
494
515
  treeData,
495
516
  checkedAssets,
496
- chunkSearchQuery
517
+ chunkSearchQuery,
518
+ visibleAssetNames
497
519
  ]);
498
520
  const searchResults = useMemo(()=>{
499
521
  if (!searchQuery.trim()) return [];
@@ -629,19 +651,27 @@ const AssetTreemapWithFilterInner = ({ treeData, onChartClick, bundledSize = tru
629
651
  }
630
652
  }),
631
653
  /*#__PURE__*/ jsx(Checkbox, {
632
- indeterminate: checkedAssets.length > 0 && checkedAssets.length < assetNames.length,
633
- checked: checkedAssets.length === assetNames.length,
634
- onChange: (e)=>setCheckedAssets(e.target.checked ? assetNames : []),
654
+ indeterminate: checkedAssets.length > 0 && checkedAssets.length < visibleAssetNames.length,
655
+ checked: visibleAssetNames.length > 0 && checkedAssets.length === visibleAssetNames.length,
656
+ onChange: (e)=>setCheckedAssets(e.target.checked ? visibleAssetNames : []),
635
657
  className: treemap_module["all-none-checkbox"],
636
658
  children: "All"
637
659
  }),
660
+ /*#__PURE__*/ jsx(Checkbox, {
661
+ checked: showOnlyJavaScriptAssets,
662
+ onChange: (e)=>{
663
+ setShowOnlyJavaScriptAssets(e.target.checked);
664
+ },
665
+ className: treemap_module["all-none-checkbox"],
666
+ children: "JS only"
667
+ }),
638
668
  /*#__PURE__*/ jsx("div", {
639
669
  className: treemap_module["chunk-list"],
640
670
  style: {
641
671
  maxHeight: 180,
642
672
  overflowY: 'auto'
643
673
  },
644
- children: assetNames.filter((name)=>name.toLowerCase().includes(chunkSearchQuery.toLowerCase())).map((name)=>/*#__PURE__*/ jsxs("div", {
674
+ children: visibleAssetNames.filter((name)=>name.toLowerCase().includes(chunkSearchQuery.toLowerCase())).map((name)=>/*#__PURE__*/ jsxs("div", {
645
675
  className: treemap_module["chunk-item"],
646
676
  style: {
647
677
  height: 15,