@rsdoctor/components 1.5.3 → 1.5.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.
Files changed (163) hide show
  1. package/dist/common/imgs/connection-point.mjs +1 -1
  2. package/dist/common/imgs/rsdoctor-navbar.mjs +1 -1
  3. package/dist/common/imgs/webpack.mjs +1 -1
  4. package/dist/common/svg/bundle-size.mjs +1 -1
  5. package/dist/common/svg/cursor.mjs +1 -1
  6. package/dist/common/svg/error.mjs +1 -1
  7. package/dist/common/svg/file-css.mjs +1 -1
  8. package/dist/common/svg/file-html.mjs +1 -1
  9. package/dist/common/svg/file-image.mjs +1 -1
  10. package/dist/common/svg/file-js.mjs +1 -1
  11. package/dist/common/svg/file-unknown.mjs +1 -1
  12. package/dist/common/svg/file.mjs +1 -1
  13. package/dist/common/svg/files/css.mjs +1 -1
  14. package/dist/common/svg/files/html.mjs +1 -1
  15. package/dist/common/svg/files/image.mjs +1 -1
  16. package/dist/common/svg/files/js.mjs +1 -1
  17. package/dist/common/svg/files/unkown-file.mjs +1 -1
  18. package/dist/common/svg/loader/input.mjs +1 -1
  19. package/dist/common/svg/loader/output.mjs +1 -1
  20. package/dist/common/svg/loader/step.mjs +1 -1
  21. package/dist/common/svg/navbar/bundle-size-active.mjs +1 -1
  22. package/dist/common/svg/navbar/bundle-size-inactive.mjs +1 -1
  23. package/dist/common/svg/navbar/compile-analysis-active.mjs +1 -1
  24. package/dist/common/svg/navbar/compile-analysis-inactive.mjs +1 -1
  25. package/dist/common/svg/navbar/overall-active.mjs +1 -1
  26. package/dist/common/svg/navbar/overall-inactive.mjs +1 -1
  27. package/dist/common/svg/output.mjs +1 -1
  28. package/dist/common/svg/source-size.mjs +1 -1
  29. package/dist/common/svg/source.mjs +1 -1
  30. package/dist/common/svg/total-size.mjs +1 -1
  31. package/dist/common/svg/trae.mjs +1 -1
  32. package/dist/common/svg/version.mjs +1 -1
  33. package/dist/common/svg/vscode.mjs +1 -1
  34. package/dist/components/Alert/change.mjs.map +1 -1
  35. package/dist/components/Alert/ecma-version-check.mjs +1 -1
  36. package/dist/components/Alert/ecma-version-check.mjs.map +1 -1
  37. package/dist/components/Alert/ecma-version-check.module.mjs +1 -1
  38. package/dist/components/Alert/package-relation.module.mjs +1 -1
  39. package/dist/components/Alert/view.mjs.map +1 -1
  40. package/dist/components/Alerts/bundle-alert.mjs +37 -2
  41. package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
  42. package/dist/components/Alerts/bundle-alert.module.mjs +1 -1
  43. package/dist/components/Alerts/collapse-cjs-require.d.ts +6 -0
  44. package/dist/components/Alerts/collapse-cjs-require.mjs +142 -0
  45. package/dist/components/Alerts/collapse-cjs-require.mjs.map +1 -0
  46. package/dist/components/Alerts/collapse-cross-chunks.mjs +2 -23
  47. package/dist/components/Alerts/collapse-cross-chunks.mjs.map +1 -1
  48. package/dist/components/Alerts/collapse-module-mixed-chunks.mjs +2 -23
  49. package/dist/components/Alerts/collapse-module-mixed-chunks.mjs.map +1 -1
  50. package/dist/components/Alerts/collapse-shared.d.ts +9 -0
  51. package/dist/components/Alerts/collapse-shared.mjs +90 -0
  52. package/dist/components/Alerts/collapse-shared.mjs.map +1 -0
  53. package/dist/components/Alerts/collapse-side-effects-only-imports.d.ts +6 -0
  54. package/dist/components/Alerts/collapse-side-effects-only-imports.mjs +131 -0
  55. package/dist/components/Alerts/collapse-side-effects-only-imports.mjs.map +1 -0
  56. package/dist/components/Alerts/collapse.mjs +2 -23
  57. package/dist/components/Alerts/collapse.mjs.map +1 -1
  58. package/dist/components/Alerts/collapse.module.mjs +1 -1
  59. package/dist/components/Alerts/list.module.mjs +1 -1
  60. package/dist/components/Alerts/overlay.mjs.map +1 -1
  61. package/dist/components/Alerts/overlay.module.mjs +1 -1
  62. package/dist/components/Card/diff.mjs.map +1 -1
  63. package/dist/components/Card/index.mjs +1 -1
  64. package/dist/components/Card/size.mjs +2 -2
  65. package/dist/components/Card/size.mjs.map +1 -1
  66. package/dist/components/Card/size.module.mjs +1 -1
  67. package/dist/components/Charts/TimelineCharts/index.mjs +1 -1
  68. package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
  69. package/dist/components/Charts/TreeMap.mjs +1 -1
  70. package/dist/components/Charts/TreeMap.mjs.map +1 -1
  71. package/dist/components/Charts/constants.mjs +1 -1
  72. package/dist/components/Charts/loader.mjs +2 -2
  73. package/dist/components/Charts/loader.mjs.map +1 -1
  74. package/dist/components/Charts/treemap.module.mjs +1 -1
  75. package/dist/components/Configuration/builder.module.mjs +1 -1
  76. package/dist/components/FileTree/css.mjs +1 -1
  77. package/dist/components/FileTree/html.mjs +1 -1
  78. package/dist/components/FileTree/image.mjs +1 -1
  79. package/dist/components/FileTree/index.mjs +1 -1
  80. package/dist/components/FileTree/index.mjs.map +1 -1
  81. package/dist/components/FileTree/js.mjs +1 -1
  82. package/dist/components/FileTree/unkown-file.mjs +1 -1
  83. package/dist/components/Keyword/style.module.mjs +1 -1
  84. package/dist/components/Layout/bundle-size-icon.mjs +1 -1
  85. package/dist/components/Layout/compile-icon.mjs +1 -1
  86. package/dist/components/Layout/index.mjs.map +1 -1
  87. package/dist/components/Layout/overall-icon.mjs +1 -1
  88. package/dist/components/Layout/project-info-context.mjs.map +1 -1
  89. package/dist/components/Loader/Analysis/input.mjs +1 -1
  90. package/dist/components/Loader/Analysis/output.mjs +1 -1
  91. package/dist/components/Loader/Analysis/style.module.mjs +1 -1
  92. package/dist/components/Loader/executions.mjs.map +1 -1
  93. package/dist/components/Loader/step.mjs +1 -1
  94. package/dist/components/Manifest/api.mjs.map +1 -1
  95. package/dist/components/Overall/DataSummary.module.mjs +1 -1
  96. package/dist/components/Overall/bundle.mjs +1 -1
  97. package/dist/components/Overall/bundle.mjs.map +1 -1
  98. package/dist/components/Overall/bundle.module.mjs +1 -1
  99. package/dist/components/Overall/card.module.mjs +1 -1
  100. package/dist/components/Overall/compile.mjs.map +1 -1
  101. package/dist/components/Overall/compile.module.mjs +1 -1
  102. package/dist/components/Overall/help-center.module.mjs +1 -1
  103. package/dist/components/Overall/list.module.mjs +1 -1
  104. package/dist/components/Overall/overview.mjs +2 -1
  105. package/dist/components/Overall/overview.module.mjs +1 -1
  106. package/dist/components/Overall/project.module.mjs +1 -1
  107. package/dist/components/Resolver/analysis.mjs +2 -2
  108. package/dist/components/Resolver/analysis.mjs.map +1 -1
  109. package/dist/components/Select/index.mjs.map +1 -1
  110. package/dist/components/Status/failed.mjs.map +1 -1
  111. package/dist/components/TextDrawer/duplicate.mjs.map +1 -1
  112. package/dist/components/TextDrawer/index.mjs +1 -1
  113. package/dist/components/base/CodeViewer/index.mjs +2 -2
  114. package/dist/components/base/CodeViewer/index.mjs.map +1 -1
  115. package/dist/components/base/CodeViewer/index.module.mjs +1 -1
  116. package/dist/components/base/DiffViewer/index.mjs +2 -2
  117. package/dist/components/base/DiffViewer/index.mjs.map +1 -1
  118. package/dist/components/base/DiffViewer/index.module.mjs +1 -1
  119. package/dist/components/index.mjs +1 -2
  120. package/dist/config.mjs.map +1 -1
  121. package/dist/constants.mjs +1 -1
  122. package/dist/pages/BundleSize/components/asset.mjs +2 -2
  123. package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
  124. package/dist/pages/BundleSize/components/card.module.mjs +1 -1
  125. package/dist/pages/BundleSize/components/cards.mjs +2 -2
  126. package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
  127. package/dist/pages/BundleSize/components/index.mjs +1 -1
  128. package/dist/pages/BundleSize/components/index.mjs.map +1 -1
  129. package/dist/pages/BundleSize/components/index.module.mjs +1 -1
  130. package/dist/pages/BundleSize/components/search-modal.mjs +1 -1
  131. package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
  132. package/dist/pages/BundleSize/config.mjs.map +1 -1
  133. package/dist/pages/BundleSize/constants.mjs +1 -1
  134. package/dist/pages/BundleSize/index.mjs +1 -1
  135. package/dist/pages/ModuleAnalyze/constants.mjs +1 -1
  136. package/dist/pages/ModuleAnalyze/dependency.mjs +1 -1
  137. package/dist/pages/ModuleResolve/index.mjs +1 -1
  138. package/dist/pages/Overall/index.mjs +1 -1
  139. package/dist/pages/Overall/index.module.mjs +1 -1
  140. package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs.map +1 -1
  141. package/dist/pages/Resources/BundleDiff/DiffContainer/changes.mjs.map +1 -1
  142. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
  143. package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs.map +1 -1
  144. package/dist/pages/Resources/BundleDiff/constants.mjs.map +1 -1
  145. package/dist/pages/Resources/BundleDiff/index.mjs +2 -2
  146. package/dist/pages/Resources/RuleIndex/index.mjs +1 -1
  147. package/dist/pages/TreeShaking/index.mjs +1 -1
  148. package/dist/pages/TreeShaking/open-tag.mjs +1 -1
  149. package/dist/pages/TreeShaking/table.mjs.map +1 -1
  150. package/dist/pages/Uploader/index.mjs +1 -1
  151. package/dist/pages/WebpackLoaders/Analysis/index.mjs +2 -2
  152. package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +1 -1
  153. package/dist/pages/WebpackLoaders/Overall/index.mjs +1 -1
  154. package/dist/pages/WebpackPlugins/index.mjs +1 -1
  155. package/dist/pages/index.mjs +1 -1
  156. package/dist/utils/i18n/cn.mjs +1 -1
  157. package/dist/utils/i18n/en.mjs +1 -1
  158. package/dist/utils/i18n/index.mjs +1 -1
  159. package/dist/utils/loader.mjs +1 -1
  160. package/dist/utils/loader.mjs.map +1 -1
  161. package/dist/utils/time.mjs +1 -1
  162. package/dist/utils/time.mjs.map +1 -1
  163. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/modules.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/modules.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n Col,\n Divider,\n Row,\n Select,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport { uniq } from 'es-toolkit/compat';\nimport { InfoCircleOutlined, FileSearchOutlined } from '@ant-design/icons';\nimport {\n BundleDiffComponentCardProps,\n BundleDiffTableModulesData,\n} from './types';\nimport { beautifyModulePath, useUniqModules } from '../../../../utils';\nimport { Size } from '../../../../constants';\nimport { KeywordInput } from '../../../../components/Form/keyword';\nimport { ViewChanges } from './changes';\nimport { UpdateType } from './constants';\nimport { Badge as Bdg } from '../../../../components/Badge';\nimport { ModuleHashPattern, getTargetColumnPropsForModuleRow } from './row';\nimport { Graph } from '@rsdoctor/utils/common';\n\nexport function getUpdateType(e: BundleDiffTableModulesData): UpdateType {\n if (e.baseline && !e.current) {\n // deleted\n return UpdateType.Deleted;\n }\n\n if (!e.baseline && e.current) {\n // new\n return UpdateType.New;\n }\n\n if (e.baseline && e.current) {\n if (\n e.baseline.size.sourceSize === e.current.size.sourceSize &&\n e.baseline.size.parsedSize === e.current.size.parsedSize\n ) {\n // not changed\n return UpdateType.NotChanged;\n }\n // update\n return UpdateType.Changed;\n }\n\n throw new Error('Update Type not match');\n}\n\nexport const FileUpdateTypeTag: React.FC<{ type: UpdateType }> = ({ type }) => {\n if (type === UpdateType.NotChanged) {\n return (\n <Tooltip title=\"It hasn't changed between Baseline and Current\">\n <Tag color=\"success\">Not Changed</Tag>\n </Tooltip>\n );\n }\n if (type === UpdateType.Changed) {\n return (\n <Tooltip title=\"It has been changed between Baseline and Current\">\n <Tag color=\"warning\">Changed</Tag>\n </Tooltip>\n );\n }\n if (type === UpdateType.New) {\n return (\n <Tooltip title=\"It is created in Current\">\n <Tag color=\"error\">New</Tag>\n </Tooltip>\n );\n }\n if (type === UpdateType.Deleted) {\n return (\n <Tooltip title=\"It has been deleted in Current\">\n <Tag color=\"error\">Deleted</Tag>\n </Tooltip>\n );\n }\n return null;\n};\n\nexport const Modules: React.FC<BundleDiffComponentCardProps> = ({\n baseline,\n current,\n}) => {\n const bModules = useMemo(\n () => useUniqModules(baseline.moduleGraph.modules),\n [baseline],\n );\n const cModules = useMemo(\n () => useUniqModules(current.moduleGraph.modules),\n [current],\n );\n\n const bChunks = baseline.chunkGraph.chunks;\n const cChunks = current.chunkGraph.chunks;\n\n const bRoot = baseline.root;\n const cRoot = current.root;\n\n const [keyword, setKeyword] = useState<string>();\n const [selectedUpdateTypes, setSelectedUpdateTypes] = useState<UpdateType[]>(\n [],\n );\n\n const dataSource = useMemo(() => {\n const res: Record<string, BundleDiffTableModulesData> = {};\n\n bModules.forEach((mod) => {\n const modPath =\n mod.webpackId?.replace(ModuleHashPattern, '') ||\n mod.path?.replace(ModuleHashPattern, '');\n\n if (!res[modPath]) {\n res[modPath] = {\n path: modPath,\n baseline: mod,\n };\n } else {\n console.warn('[Baseline Module Exists]: ', mod, res);\n }\n });\n\n cModules.forEach((mod) => {\n const modPath =\n mod.webpackId?.replace(ModuleHashPattern, '') ||\n mod.path?.replace(ModuleHashPattern, '');\n\n if (!res[modPath]) {\n res[modPath] = {\n path: modPath,\n };\n }\n res[modPath].current = mod;\n });\n\n return Object.values(res);\n }, [bModules, cModules]);\n\n const filteredDataSource = useMemo(() => {\n let list = dataSource.slice();\n\n if (keyword) {\n list = list.filter((e) => e.path.indexOf(keyword) > -1);\n }\n\n if (selectedUpdateTypes.length) {\n list = list.filter((e) => {\n return selectedUpdateTypes.includes(getUpdateType(e));\n });\n }\n\n return list;\n }, [dataSource, keyword, selectedUpdateTypes]);\n\n const { bFilteredModulesLength, cFilteredModulesLength } = useMemo(() => {\n return {\n bFilteredModulesLength: filteredDataSource.filter((e) => e.baseline)\n .length,\n cFilteredModulesLength: filteredDataSource.filter((e) => e.current)\n .length,\n };\n }, [filteredDataSource]);\n\n return (\n <Row gutter={[Size.BasePadding, Size.BasePadding]}>\n <Col span={24}>\n <Space wrap>\n <KeywordInput\n icon={<FileSearchOutlined />}\n label=\"\"\n labelStyle={{ width: 45 }}\n placeholder=\"Search by name\"\n onChange={(e) => {\n setKeyword(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by changed type\"\n style={{ width: 200 }}\n options={Object.values(UpdateType).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedUpdateTypes(e);\n }}\n />\n </Space>\n </Col>\n <Col span={24}>\n <Table\n bordered\n sticky={{ offsetHeader: 54 }}\n pagination={{\n pageSize: 20,\n size: 'small',\n }}\n scroll={{ x: 1700 }}\n dataSource={filteredDataSource}\n rowKey={(e) => e.path}\n columns={[\n {\n fixed: 'left',\n title: (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n filtered modules is {filteredDataSource.length} (Current\n & Baseline)\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n total modules is {dataSource.length} (Current &\n Baseline)\n </Typography.Text>\n </Space>\n }\n >\n <Typography.Text strong>Modules</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {filteredDataSource.length}/{dataSource.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n ),\n render: (_v, r) => {\n const { alias, inNodeModules } = beautifyModulePath(\n r.path,\n r.baseline ? bRoot : cRoot,\n );\n return (\n <Space>\n <Tooltip title={r.path}>\n <Typography.Text copyable={{ text: r.path }}>\n {alias}\n </Typography.Text>\n </Tooltip>\n <FileUpdateTypeTag type={getUpdateType(r)} />\n {inNodeModules ? (\n <Tag color=\"warning\">node_modules</Tag>\n ) : null}\n </Space>\n );\n },\n },\n getTargetColumnPropsForModuleRow(\n 'current',\n bFilteredModulesLength,\n cFilteredModulesLength,\n ),\n getTargetColumnPropsForModuleRow(\n 'baseline',\n bFilteredModulesLength,\n cFilteredModulesLength,\n ),\n {\n title: 'in Assets',\n render: (_v, r) => {\n const b: string[] = [];\n const c: string[] = [];\n if (r.current) {\n Graph.getChunksByModule(r.current, cChunks).forEach((e) =>\n e.assets.forEach((asset) => c.push(asset)),\n );\n }\n\n if (r.baseline) {\n Graph.getChunksByModule(r.baseline, bChunks).forEach((e) =>\n e.assets.forEach((asset) => b.push(asset)),\n );\n }\n\n if (!b.length && !c.length) return null;\n\n return (\n <Space direction=\"vertical\">\n {uniq(c)\n .filter(Boolean)\n .map((e) => (\n <Bdg label=\"Current\" value={e} key={`c_${e}`} />\n ))}\n {uniq(b)\n .filter(Boolean)\n .map((e) => (\n <Bdg label=\"Baseline\" value={e} key={`b_${e}`} />\n ))}\n </Space>\n );\n },\n },\n {\n title: 'Actions',\n width: 200,\n render: (_v, r) => {\n const isChanged = getUpdateType(r) === UpdateType.Changed;\n return (\n <Space direction=\"vertical\" style={{ maxWidth: 170 }}>\n {isChanged ? (\n <ViewChanges\n text=\"View Changes\"\n file={r.path}\n data={[\n {\n baseline:\n baseline.moduleCodeMap[r.baseline?.id as number]\n ?.source,\n current:\n current.moduleCodeMap[r.current?.id as number]\n ?.source,\n group: 'Source',\n },\n {\n baseline:\n baseline.moduleCodeMap[r.baseline?.id as number]\n ?.transformed,\n current:\n current.moduleCodeMap[r.current?.id as number]\n ?.transformed,\n group: 'Transformed Source',\n },\n {\n baseline:\n baseline.moduleCodeMap[r.baseline?.id as number]\n ?.parsedSource,\n current:\n current.moduleCodeMap[r.current?.id as number]\n ?.parsedSource,\n group: 'Parsed Source',\n },\n ]}\n />\n ) : null}\n {r?.current ? (\n <ViewChanges\n text=\"Current Result Viewer\"\n file={r.path}\n data={[\n {\n baseline:\n current.moduleCodeMap[r.current!.id]?.source,\n current:\n current.moduleCodeMap[r.current!.id]?.transformed,\n baselineTitle: 'Current Source',\n currentTitle: 'Current Transformed Source',\n group: 'Transformed Source',\n },\n {\n baseline:\n current.moduleCodeMap[r.current!.id]?.source,\n current:\n current.moduleCodeMap[r.current!.id]\n ?.parsedSource,\n baselineTitle: 'Current Source',\n currentTitle: 'Current Parsed Source',\n group: 'Parsed Source',\n },\n ]}\n />\n ) : null}\n </Space>\n );\n },\n },\n ]}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["getUpdateType","e","UpdateType","Error","FileUpdateTypeTag","type","Tooltip","Tag","Modules","baseline","current","bModules","useMemo","useUniqModules","cModules","bChunks","cChunks","bRoot","cRoot","keyword","setKeyword","useState","selectedUpdateTypes","setSelectedUpdateTypes","dataSource","res","mod","modPath","ModuleHashPattern","console","Object","filteredDataSource","list","bFilteredModulesLength","cFilteredModulesLength","Row","Size","Col","Space","KeywordInput","FileSearchOutlined","Select","Table","Typography","Divider","InfoCircleOutlined","_v","r","alias","inNodeModules","beautifyModulePath","getTargetColumnPropsForModuleRow","b","c","Graph","asset","uniq","Boolean","Bdg","isChanged","ViewChanges"],"mappings":";;;;;;;;;;;;;AA2BO,SAASA,cAAcC,CAA6B;IACzD,IAAIA,EAAE,QAAQ,IAAI,CAACA,EAAE,OAAO,EAE1B,OAAOC,WAAW,OAAO;IAG3B,IAAI,CAACD,EAAE,QAAQ,IAAIA,EAAE,OAAO,EAE1B,OAAOC,WAAW,GAAG;IAGvB,IAAID,EAAE,QAAQ,IAAIA,EAAE,OAAO,EAAE;QAC3B,IACEA,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAKA,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,IACxDA,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAKA,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAGxD,OAAOC,WAAW,UAAU;QAG9B,OAAOA,WAAW,OAAO;IAC3B;IAEA,MAAM,IAAIC,MAAM;AAClB;AAEO,MAAMC,oBAAoD,CAAC,EAAEC,IAAI,EAAE;IACxE,IAAIA,SAASH,WAAW,UAAU,EAChC,OAAO,WAAP,GACE,IAACI,SAAOA;QAAC,OAAM;kBACb,kBAACC,KAAGA;YAAC,OAAM;sBAAU;;;IAI3B,IAAIF,SAASH,WAAW,OAAO,EAC7B,OAAO,WAAP,GACE,IAACI,SAAOA;QAAC,OAAM;kBACb,kBAACC,KAAGA;YAAC,OAAM;sBAAU;;;IAI3B,IAAIF,SAASH,WAAW,GAAG,EACzB,OAAO,WAAP,GACE,IAACI,SAAOA;QAAC,OAAM;kBACb,kBAACC,KAAGA;YAAC,OAAM;sBAAQ;;;IAIzB,IAAIF,SAASH,WAAW,OAAO,EAC7B,OAAO,WAAP,GACE,IAACI,SAAOA;QAAC,OAAM;kBACb,kBAACC,KAAGA;YAAC,OAAM;sBAAQ;;;IAIzB,OAAO;AACT;AAEO,MAAMC,UAAkD,CAAC,EAC9DC,QAAQ,EACRC,OAAO,EACR;IACC,MAAMC,WAAWC,QACf,IAAMC,eAAeJ,SAAS,WAAW,CAAC,OAAO,GACjD;QAACA;KAAS;IAEZ,MAAMK,WAAWF,QACf,IAAMC,eAAeH,QAAQ,WAAW,CAAC,OAAO,GAChD;QAACA;KAAQ;IAGX,MAAMK,UAAUN,SAAS,UAAU,CAAC,MAAM;IAC1C,MAAMO,UAAUN,QAAQ,UAAU,CAAC,MAAM;IAEzC,MAAMO,QAAQR,SAAS,IAAI;IAC3B,MAAMS,QAAQR,QAAQ,IAAI;IAE1B,MAAM,CAACS,SAASC,WAAW,GAAGC;IAC9B,MAAM,CAACC,qBAAqBC,uBAAuB,GAAGF,SACpD,EAAE;IAGJ,MAAMG,aAAaZ,QAAQ;QACzB,MAAMa,MAAkD,CAAC;QAEzDd,SAAS,OAAO,CAAC,CAACe;YAChB,MAAMC,UACJD,IAAI,SAAS,EAAE,QAAQE,mBAAmB,OAC1CF,IAAI,IAAI,EAAE,QAAQE,mBAAmB;YAEvC,IAAKH,GAAG,CAACE,QAAQ,EAMfE,QAAQ,IAAI,CAAC,8BAA8BH,KAAKD;iBALhDA,GAAG,CAACE,QAAQ,GAAG;gBACb,MAAMA;gBACN,UAAUD;YACZ;QAIJ;QAEAZ,SAAS,OAAO,CAAC,CAACY;YAChB,MAAMC,UACJD,IAAI,SAAS,EAAE,QAAQE,mBAAmB,OAC1CF,IAAI,IAAI,EAAE,QAAQE,mBAAmB;YAEvC,IAAI,CAACH,GAAG,CAACE,QAAQ,EACfF,GAAG,CAACE,QAAQ,GAAG;gBACb,MAAMA;YACR;YAEFF,GAAG,CAACE,QAAQ,CAAC,OAAO,GAAGD;QACzB;QAEA,OAAOI,OAAO,MAAM,CAACL;IACvB,GAAG;QAACd;QAAUG;KAAS;IAEvB,MAAMiB,qBAAqBnB,QAAQ;QACjC,IAAIoB,OAAOR,WAAW,KAAK;QAE3B,IAAIL,SACFa,OAAOA,KAAK,MAAM,CAAC,CAAC/B,IAAMA,EAAE,IAAI,CAAC,OAAO,CAACkB,WAAW;QAGtD,IAAIG,oBAAoB,MAAM,EAC5BU,OAAOA,KAAK,MAAM,CAAC,CAAC/B,IACXqB,oBAAoB,QAAQ,CAACtB,cAAcC;QAItD,OAAO+B;IACT,GAAG;QAACR;QAAYL;QAASG;KAAoB;IAE7C,MAAM,EAAEW,sBAAsB,EAAEC,sBAAsB,EAAE,GAAGtB,QAAQ,IAC1D;YACL,wBAAwBmB,mBAAmB,MAAM,CAAC,CAAC9B,IAAMA,EAAE,QAAQ,EAChE,MAAM;YACT,wBAAwB8B,mBAAmB,MAAM,CAAC,CAAC9B,IAAMA,EAAE,OAAO,EAC/D,MAAM;QACX,IACC;QAAC8B;KAAmB;IAEvB,OAAO,WAAP,GACE,KAACI,KAAGA;QAAC,QAAQ;YAACC,KAAK,WAAW;YAAEA,KAAK,WAAW;SAAC;;0BAC/C,IAACC,KAAGA;gBAAC,MAAM;0BACT,mBAACC,OAAKA;oBAAC,MAAI;;sCACT,IAACC,cAAYA;4BACX,oBAAM,IAACC,oBAAkBA,CAAAA;4BACzB,OAAM;4BACN,YAAY;gCAAE,OAAO;4BAAG;4BACxB,aAAY;4BACZ,UAAU,CAACvC;gCACTmB,WAAWnB;4BACb;;sCAEF,IAACwC,QAAMA;4BACL,MAAK;4BACL,aAAY;4BACZ,OAAO;gCAAE,OAAO;4BAAI;4BACpB,SAASX,OAAO,MAAM,CAAC5B,YAAY,GAAG,CAAC,CAACD,IAAO;oCAC7C,OAAOA;oCACP,OAAOA;gCACT;4BACA,YAAU;4BACV,UAAU,CAACA;gCACTsB,uBAAuBtB;4BACzB;;;;;0BAIN,IAACoC,KAAGA;gBAAC,MAAM;0BACT,kBAACK,OAAKA;oBACJ,UAAQ;oBACR,QAAQ;wBAAE,cAAc;oBAAG;oBAC3B,YAAY;wBACV,UAAU;wBACV,MAAM;oBACR;oBACA,QAAQ;wBAAE,GAAG;oBAAK;oBAClB,YAAYX;oBACZ,QAAQ,CAAC9B,IAAMA,EAAE,IAAI;oBACrB,SAAS;wBACP;4BACE,OAAO;4BACP,OAAO,WAAP,GACE,KAACK,SAAOA;gCACN,qBACE,KAACgC,OAAKA;oCAAC,WAAU;;sDACf,KAACK,WAAW,IAAI;4CAAC,OAAO;gDAAE,OAAO;4CAAU;;gDAAG;gDACvBZ,mBAAmB,MAAM;gDAAC;;;sDAGjD,KAACY,WAAW,IAAI;4CAAC,OAAO;gDAAE,OAAO;4CAAU;;gDAAG;gDAC1BnB,WAAW,MAAM;gDAAC;;;;;;kDAM1C,IAACmB,WAAW,IAAI;wCAAC,QAAM;kDAAC;;kDACxB,IAACC,SAAOA;wCAAC,MAAK;;kDACd,KAACD,WAAW,IAAI;wCACd,MAAK;wCACL,OAAO;4CAAE,UAAU;4CAAI,YAAY;4CAAK,aAAa;wCAAE;;4CAEtDZ,mBAAmB,MAAM;4CAAC;4CAAEP,WAAW,MAAM;;;kDAEhD,IAACqB,oBAAkBA,CAAAA;;;4BAGvB,QAAQ,CAACC,IAAIC;gCACX,MAAM,EAAEC,KAAK,EAAEC,aAAa,EAAE,GAAGC,mBAC/BH,EAAE,IAAI,EACNA,EAAE,QAAQ,GAAG9B,QAAQC;gCAEvB,OAAO,WAAP,GACE,KAACoB,OAAKA;;sDACJ,IAAChC,SAAOA;4CAAC,OAAOyC,EAAE,IAAI;sDACpB,kBAACJ,WAAW,IAAI;gDAAC,UAAU;oDAAE,MAAMI,EAAE,IAAI;gDAAC;0DACvCC;;;sDAGL,IAAC5C,mBAAAA;4CAAkB,MAAMJ,cAAc+C;;wCACtCE,gBAAgB,WAAhBA,GACC,IAAC1C,KAAGA;4CAAC,OAAM;sDAAU;6CACnB;;;4BAGV;wBACF;wBACA4C,iCACE,WACAlB,wBACAC;wBAEFiB,iCACE,YACAlB,wBACAC;wBAEF;4BACE,OAAO;4BACP,QAAQ,CAACY,IAAIC;gCACX,MAAMK,IAAc,EAAE;gCACtB,MAAMC,IAAc,EAAE;gCACtB,IAAIN,EAAE,OAAO,EACXO,MAAM,iBAAiB,CAACP,EAAE,OAAO,EAAE/B,SAAS,OAAO,CAAC,CAACf,IACnDA,EAAE,MAAM,CAAC,OAAO,CAAC,CAACsD,QAAUF,EAAE,IAAI,CAACE;gCAIvC,IAAIR,EAAE,QAAQ,EACZO,MAAM,iBAAiB,CAACP,EAAE,QAAQ,EAAEhC,SAAS,OAAO,CAAC,CAACd,IACpDA,EAAE,MAAM,CAAC,OAAO,CAAC,CAACsD,QAAUH,EAAE,IAAI,CAACG;gCAIvC,IAAI,CAACH,EAAE,MAAM,IAAI,CAACC,EAAE,MAAM,EAAE,OAAO;gCAEnC,OAAO,WAAP,GACE,KAACf,OAAKA;oCAAC,WAAU;;wCACdkB,KAAKH,GACH,MAAM,CAACI,SACP,GAAG,CAAC,CAACxD,IAAAA,WAAAA,GACJ,IAACyD,OAAGA;gDAAC,OAAM;gDAAU,OAAOzD;+CAAQ,CAAC,EAAE,EAAEA,GAAG;wCAE/CuD,KAAKJ,GACH,MAAM,CAACK,SACP,GAAG,CAAC,CAACxD,IAAAA,WAAAA,GACJ,IAACyD,OAAGA;gDAAC,OAAM;gDAAW,OAAOzD;+CAAQ,CAAC,EAAE,EAAEA,GAAG;;;4BAIvD;wBACF;wBACA;4BACE,OAAO;4BACP,OAAO;4BACP,QAAQ,CAAC6C,IAAIC;gCACX,MAAMY,YAAY3D,cAAc+C,OAAO7C,WAAW,OAAO;gCACzD,OAAO,WAAP,GACE,KAACoC,OAAKA;oCAAC,WAAU;oCAAW,OAAO;wCAAE,UAAU;oCAAI;;wCAChDqB,YAAY,WAAZA,GACC,IAACC,aAAWA;4CACV,MAAK;4CACL,MAAMb,EAAE,IAAI;4CACZ,MAAM;gDACJ;oDACE,UACEtC,SAAS,aAAa,CAACsC,EAAE,QAAQ,EAAE,GAAa,EAC5C;oDACN,SACErC,QAAQ,aAAa,CAACqC,EAAE,OAAO,EAAE,GAAa,EAC1C;oDACN,OAAO;gDACT;gDACA;oDACE,UACEtC,SAAS,aAAa,CAACsC,EAAE,QAAQ,EAAE,GAAa,EAC5C;oDACN,SACErC,QAAQ,aAAa,CAACqC,EAAE,OAAO,EAAE,GAAa,EAC1C;oDACN,OAAO;gDACT;gDACA;oDACE,UACEtC,SAAS,aAAa,CAACsC,EAAE,QAAQ,EAAE,GAAa,EAC5C;oDACN,SACErC,QAAQ,aAAa,CAACqC,EAAE,OAAO,EAAE,GAAa,EAC1C;oDACN,OAAO;gDACT;6CACD;6CAED;wCACHA,GAAG,UAAU,WAAV,GACF,IAACa,aAAWA;4CACV,MAAK;4CACL,MAAMb,EAAE,IAAI;4CACZ,MAAM;gDACJ;oDACE,UACErC,QAAQ,aAAa,CAACqC,EAAE,OAAO,CAAE,EAAE,CAAC,EAAE;oDACxC,SACErC,QAAQ,aAAa,CAACqC,EAAE,OAAO,CAAE,EAAE,CAAC,EAAE;oDACxC,eAAe;oDACf,cAAc;oDACd,OAAO;gDACT;gDACA;oDACE,UACErC,QAAQ,aAAa,CAACqC,EAAE,OAAO,CAAE,EAAE,CAAC,EAAE;oDACxC,SACErC,QAAQ,aAAa,CAACqC,EAAE,OAAO,CAAE,EAAE,CAAC,EAChC;oDACN,eAAe;oDACf,cAAc;oDACd,OAAO;gDACT;6CACD;6CAED;;;4BAGV;wBACF;qBACD;;;;;AAKX"}
1
+ {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/modules.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/modules.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n Col,\n Divider,\n Row,\n Select,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport { uniq } from 'es-toolkit/compat';\nimport { InfoCircleOutlined, FileSearchOutlined } from '@ant-design/icons';\nimport {\n BundleDiffComponentCardProps,\n BundleDiffTableModulesData,\n} from './types';\nimport { beautifyModulePath, useUniqModules } from '../../../../utils';\nimport { Size } from '../../../../constants';\nimport { KeywordInput } from '../../../../components/Form/keyword';\nimport { ViewChanges } from './changes';\nimport { UpdateType } from './constants';\nimport { Badge as Bdg } from '../../../../components/Badge';\nimport { ModuleHashPattern, getTargetColumnPropsForModuleRow } from './row';\nimport { Graph } from '@rsdoctor/utils/common';\n\nexport function getUpdateType(e: BundleDiffTableModulesData): UpdateType {\n if (e.baseline && !e.current) {\n // deleted\n return UpdateType.Deleted;\n }\n\n if (!e.baseline && e.current) {\n // new\n return UpdateType.New;\n }\n\n if (e.baseline && e.current) {\n if (\n e.baseline.size.sourceSize === e.current.size.sourceSize &&\n e.baseline.size.parsedSize === e.current.size.parsedSize\n ) {\n // not changed\n return UpdateType.NotChanged;\n }\n // update\n return UpdateType.Changed;\n }\n\n throw new Error('Update Type not match');\n}\n\nexport const FileUpdateTypeTag: React.FC<{ type: UpdateType }> = ({ type }) => {\n if (type === UpdateType.NotChanged) {\n return (\n <Tooltip title=\"It hasn't changed between Baseline and Current\">\n <Tag color=\"success\">Not Changed</Tag>\n </Tooltip>\n );\n }\n if (type === UpdateType.Changed) {\n return (\n <Tooltip title=\"It has been changed between Baseline and Current\">\n <Tag color=\"warning\">Changed</Tag>\n </Tooltip>\n );\n }\n if (type === UpdateType.New) {\n return (\n <Tooltip title=\"It is created in Current\">\n <Tag color=\"error\">New</Tag>\n </Tooltip>\n );\n }\n if (type === UpdateType.Deleted) {\n return (\n <Tooltip title=\"It has been deleted in Current\">\n <Tag color=\"error\">Deleted</Tag>\n </Tooltip>\n );\n }\n return null;\n};\n\nexport const Modules: React.FC<BundleDiffComponentCardProps> = ({\n baseline,\n current,\n}) => {\n const bModules = useMemo(\n () => useUniqModules(baseline.moduleGraph.modules),\n [baseline],\n );\n const cModules = useMemo(\n () => useUniqModules(current.moduleGraph.modules),\n [current],\n );\n\n const bChunks = baseline.chunkGraph.chunks;\n const cChunks = current.chunkGraph.chunks;\n\n const bRoot = baseline.root;\n const cRoot = current.root;\n\n const [keyword, setKeyword] = useState<string>();\n const [selectedUpdateTypes, setSelectedUpdateTypes] = useState<UpdateType[]>(\n [],\n );\n\n const dataSource = useMemo(() => {\n const res: Record<string, BundleDiffTableModulesData> = {};\n\n bModules.forEach((mod) => {\n const modPath =\n mod.webpackId?.replace(ModuleHashPattern, '') ||\n mod.path?.replace(ModuleHashPattern, '');\n\n if (!res[modPath]) {\n res[modPath] = {\n path: modPath,\n baseline: mod,\n };\n } else {\n console.warn('[Baseline Module Exists]: ', mod, res);\n }\n });\n\n cModules.forEach((mod) => {\n const modPath =\n mod.webpackId?.replace(ModuleHashPattern, '') ||\n mod.path?.replace(ModuleHashPattern, '');\n\n if (!res[modPath]) {\n res[modPath] = {\n path: modPath,\n };\n }\n res[modPath].current = mod;\n });\n\n return Object.values(res);\n }, [bModules, cModules]);\n\n const filteredDataSource = useMemo(() => {\n let list = dataSource.slice();\n\n if (keyword) {\n list = list.filter((e) => e.path.indexOf(keyword) > -1);\n }\n\n if (selectedUpdateTypes.length) {\n list = list.filter((e) => {\n return selectedUpdateTypes.includes(getUpdateType(e));\n });\n }\n\n return list;\n }, [dataSource, keyword, selectedUpdateTypes]);\n\n const { bFilteredModulesLength, cFilteredModulesLength } = useMemo(() => {\n return {\n bFilteredModulesLength: filteredDataSource.filter((e) => e.baseline)\n .length,\n cFilteredModulesLength: filteredDataSource.filter((e) => e.current)\n .length,\n };\n }, [filteredDataSource]);\n\n return (\n <Row gutter={[Size.BasePadding, Size.BasePadding]}>\n <Col span={24}>\n <Space wrap>\n <KeywordInput\n icon={<FileSearchOutlined />}\n label=\"\"\n labelStyle={{ width: 45 }}\n placeholder=\"Search by name\"\n onChange={(e) => {\n setKeyword(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by changed type\"\n style={{ width: 200 }}\n options={Object.values(UpdateType).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedUpdateTypes(e);\n }}\n />\n </Space>\n </Col>\n <Col span={24}>\n <Table\n bordered\n sticky={{ offsetHeader: 54 }}\n pagination={{\n pageSize: 20,\n size: 'small',\n }}\n scroll={{ x: 1700 }}\n dataSource={filteredDataSource}\n rowKey={(e) => e.path}\n columns={[\n {\n fixed: 'left',\n title: (\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n filtered modules is {filteredDataSource.length} (Current\n & Baseline)\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n total modules is {dataSource.length} (Current &\n Baseline)\n </Typography.Text>\n </Space>\n }\n >\n <Typography.Text strong>Modules</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {filteredDataSource.length}/{dataSource.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n ),\n render: (_v, r) => {\n const { alias, inNodeModules } = beautifyModulePath(\n r.path,\n r.baseline ? bRoot : cRoot,\n );\n return (\n <Space>\n <Tooltip title={r.path}>\n <Typography.Text copyable={{ text: r.path }}>\n {alias}\n </Typography.Text>\n </Tooltip>\n <FileUpdateTypeTag type={getUpdateType(r)} />\n {inNodeModules ? (\n <Tag color=\"warning\">node_modules</Tag>\n ) : null}\n </Space>\n );\n },\n },\n getTargetColumnPropsForModuleRow(\n 'current',\n bFilteredModulesLength,\n cFilteredModulesLength,\n ),\n getTargetColumnPropsForModuleRow(\n 'baseline',\n bFilteredModulesLength,\n cFilteredModulesLength,\n ),\n {\n title: 'in Assets',\n render: (_v, r) => {\n const b: string[] = [];\n const c: string[] = [];\n if (r.current) {\n Graph.getChunksByModule(r.current, cChunks).forEach((e) =>\n e.assets.forEach((asset) => c.push(asset)),\n );\n }\n\n if (r.baseline) {\n Graph.getChunksByModule(r.baseline, bChunks).forEach((e) =>\n e.assets.forEach((asset) => b.push(asset)),\n );\n }\n\n if (!b.length && !c.length) return null;\n\n return (\n <Space direction=\"vertical\">\n {uniq(c)\n .filter(Boolean)\n .map((e) => (\n <Bdg label=\"Current\" value={e} key={`c_${e}`} />\n ))}\n {uniq(b)\n .filter(Boolean)\n .map((e) => (\n <Bdg label=\"Baseline\" value={e} key={`b_${e}`} />\n ))}\n </Space>\n );\n },\n },\n {\n title: 'Actions',\n width: 200,\n render: (_v, r) => {\n const isChanged = getUpdateType(r) === UpdateType.Changed;\n return (\n <Space direction=\"vertical\" style={{ maxWidth: 170 }}>\n {isChanged ? (\n <ViewChanges\n text=\"View Changes\"\n file={r.path}\n data={[\n {\n baseline:\n baseline.moduleCodeMap[r.baseline?.id as number]\n ?.source,\n current:\n current.moduleCodeMap[r.current?.id as number]\n ?.source,\n group: 'Source',\n },\n {\n baseline:\n baseline.moduleCodeMap[r.baseline?.id as number]\n ?.transformed,\n current:\n current.moduleCodeMap[r.current?.id as number]\n ?.transformed,\n group: 'Transformed Source',\n },\n {\n baseline:\n baseline.moduleCodeMap[r.baseline?.id as number]\n ?.parsedSource,\n current:\n current.moduleCodeMap[r.current?.id as number]\n ?.parsedSource,\n group: 'Parsed Source',\n },\n ]}\n />\n ) : null}\n {r?.current ? (\n <ViewChanges\n text=\"Current Result Viewer\"\n file={r.path}\n data={[\n {\n baseline:\n current.moduleCodeMap[r.current!.id]?.source,\n current:\n current.moduleCodeMap[r.current!.id]?.transformed,\n baselineTitle: 'Current Source',\n currentTitle: 'Current Transformed Source',\n group: 'Transformed Source',\n },\n {\n baseline:\n current.moduleCodeMap[r.current!.id]?.source,\n current:\n current.moduleCodeMap[r.current!.id]\n ?.parsedSource,\n baselineTitle: 'Current Source',\n currentTitle: 'Current Parsed Source',\n group: 'Parsed Source',\n },\n ]}\n />\n ) : null}\n </Space>\n );\n },\n },\n ]}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["getUpdateType","e","UpdateType","Error","FileUpdateTypeTag","type","Tooltip","Tag","Modules","baseline","current","bModules","useMemo","useUniqModules","cModules","bChunks","cChunks","bRoot","cRoot","keyword","setKeyword","useState","selectedUpdateTypes","setSelectedUpdateTypes","dataSource","res","mod","modPath","ModuleHashPattern","console","Object","filteredDataSource","list","bFilteredModulesLength","cFilteredModulesLength","Row","Size","Col","Space","KeywordInput","FileSearchOutlined","Select","Table","Typography","Divider","InfoCircleOutlined","_v","r","alias","inNodeModules","beautifyModulePath","getTargetColumnPropsForModuleRow","b","c","Graph","asset","uniq","Boolean","Bdg","isChanged","ViewChanges"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/packages.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/packages.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n Col,\n Divider,\n Empty,\n Row,\n Select,\n Space,\n Table,\n Tooltip,\n Typography,\n} from 'antd';\nimport { sumBy, uniq } from 'es-toolkit/compat';\nimport { SDK } from '@rsdoctor/types';\nimport { BundleDiffTablePackagesData } from './types';\nimport { formatSize } from '../../../../utils';\nimport { Size } from '../../../../constants';\nimport { FileUpdateTypeTag } from './modules';\nimport { UpdateType } from './constants';\nimport { Badge as Bdg } from '../../../../components/Badge';\nimport { SizePercent } from '../../../../components/Card/diff';\n\nconst getChangedType = (data: BundleDiffTablePackagesData): UpdateType => {\n if (data.baseline && data.current) {\n const bvs = data.baseline\n .map((e) => e.version)\n .sort()\n .join();\n const dcs = data.current\n .map((e) => e.version)\n .sort()\n .join();\n\n return bvs === dcs ? UpdateType.NotChanged : UpdateType.Changed;\n }\n\n if (!data.baseline && !data.current) {\n return UpdateType.NotChanged;\n }\n\n if (data.baseline && !data.current) {\n return UpdateType.Deleted;\n }\n\n return UpdateType.New;\n};\n\nconst isChanged = (data: BundleDiffTablePackagesData) => {\n return getChangedType(data) !== UpdateType.NotChanged;\n};\n\nexport const PackagesStatistic: React.FC<{\n dataSource: ReturnType<typeof getPackagesTableDataSource>;\n}> = ({ dataSource }) => {\n const { newCount, deleteCount, changedCount } = useMemo(() => {\n return {\n newCount: dataSource.filter((e) => e.updateType === UpdateType.New)\n .length,\n deleteCount: dataSource.filter((e) => e.updateType === UpdateType.Deleted)\n .length,\n changedCount: dataSource.filter(\n (e) => e.updateType === UpdateType.Changed,\n ).length,\n };\n }, [dataSource]);\n\n return (\n <Space>\n <Bdg\n label=\"New\"\n value={newCount}\n type={newCount > 0 ? 'error' : 'default'}\n tooltip={`Current has ${newCount} packages which not found in Baseline`}\n />\n <Bdg\n label=\"Deleted\"\n value={deleteCount}\n type={deleteCount > 0 ? 'error' : 'default'}\n tooltip={`Current delete ${deleteCount} packages than Baseline`}\n />\n <Bdg\n label=\"Changed\"\n value={changedCount}\n type={changedCount > 0 ? 'error' : 'default'}\n tooltip={`Current has ${changedCount} changed packages than Baseline`}\n />\n </Space>\n );\n};\n\nexport const getPackagesTableDataSource = ({\n baseline,\n current,\n}: {\n baseline: SDK.PackageGraphData;\n current: SDK.PackageGraphData;\n}) => {\n const { packages: bPkgs = [] } = baseline || {};\n const { packages: cPkgs = [] } = current || {};\n\n const res: Record<string, BundleDiffTablePackagesData> = {};\n\n const setter = (pkg: SDK.PackageData, type: 'baseline' | 'current') => {\n if (!res[pkg.name]) {\n res[pkg.name] = { name: pkg.name, updateType: UpdateType.NotChanged };\n }\n if (!res[pkg.name][type]) {\n res[pkg.name][type] = [];\n }\n\n res[pkg.name][type]!.push(pkg);\n };\n\n bPkgs.forEach((e) => setter(e, 'baseline'));\n cPkgs.forEach((e) => setter(e, 'current'));\n\n const pre: BundleDiffTablePackagesData[] = [];\n const post: BundleDiffTablePackagesData[] = [];\n\n Object.values(res).forEach((a) => {\n if (isChanged(a)) {\n pre.push(a);\n } else {\n post.push(a);\n }\n });\n\n return pre.concat(post).map((e) => {\n return {\n ...e,\n updateType: getChangedType(e),\n };\n });\n};\n\nexport const Packages: React.FC<{\n baseline: SDK.PackageGraphData;\n current: SDK.PackageGraphData;\n}> = ({ baseline, current }) => {\n const { packages: bPkgs = [] } = baseline || {};\n const { packages: cPkgs = [] } = current || {};\n\n if (!bPkgs.length && !cPkgs.length) {\n return <Empty />;\n }\n\n const pkgNames = useMemo(() => {\n return uniq(bPkgs.concat(cPkgs).map((e) => e.name));\n }, [bPkgs, cPkgs]);\n\n const [selectedPkgNames, setSelectedPkgNames] = useState<string[]>([]);\n const [selectedUpdateTypes, setSelectedUpdateTypes] = useState<UpdateType[]>(\n [],\n );\n\n const dataSource = useMemo(() => {\n return getPackagesTableDataSource({ baseline, current });\n }, [baseline, current]);\n\n const filteredDataSource = useMemo(() => {\n return dataSource.filter((e) => {\n if (selectedUpdateTypes.length) {\n return selectedUpdateTypes.indexOf(e.updateType) > -1;\n }\n\n if (selectedPkgNames.length) {\n return selectedPkgNames.indexOf(e.name) > -1;\n }\n\n return true;\n });\n }, [dataSource, selectedPkgNames, selectedUpdateTypes]);\n\n return (\n <Row gutter={[Size.BasePadding, Size.BasePadding]}>\n <Col span={24} style={{ marginTop: 16 }}>\n <Space wrap>\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by package names\"\n style={{ width: 400 }}\n options={pkgNames.map((e) => {\n const r = dataSource.find((el) => el.name === e);\n\n if (r && isChanged(r)) {\n return {\n label: (\n <Space>\n <Typography.Text>{e}</Typography.Text>\n <FileUpdateTypeTag type={getChangedType(r)} />\n </Space>\n ),\n value: e,\n };\n }\n\n return {\n label: e,\n value: e,\n };\n })}\n allowClear\n onChange={(e) => {\n setSelectedPkgNames(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by changed type\"\n style={{ width: 200 }}\n options={Object.values(UpdateType).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedUpdateTypes(e);\n }}\n />\n </Space>\n </Col>\n <Col span={24}>\n <Table\n bordered\n sticky={{ offsetHeader: 54 }}\n pagination={{\n pageSize: 20,\n size: 'small',\n }}\n // scroll={{ x: 1700 }}\n dataSource={filteredDataSource}\n rowKey={(e) => e.name}\n columns={[\n {\n title: () => (\n <Space>\n <Typography.Text>Package Name</Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={`Filtered Package Count is ${filteredDataSource.length}, Total Package Count is ${dataSource.length}`}\n >\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400 }}\n >\n {filteredDataSource.length} / {dataSource.length}\n </Typography.Text>\n </Tooltip>\n </Space>\n ),\n render: (_v, r) => {\n if (r.updateType !== UpdateType.NotChanged) {\n return (\n <Space>\n <Typography.Text>{r.name}</Typography.Text>\n <FileUpdateTypeTag type={r.updateType} />\n </Space>\n );\n }\n return r.name;\n },\n },\n {\n title: () => {\n return (\n <Space>\n <Typography.Text>Current</Typography.Text>\n <Divider type=\"vertical\" />\n <PackagesStatistic dataSource={dataSource} />\n </Space>\n );\n },\n children: [\n {\n title: 'Version',\n render: (_v, r) => {\n if (r.current) {\n return (\n <Space direction=\"vertical\">\n {r.current.map((e) => (\n <Bdg\n label=\"version\"\n value={e.version}\n tooltip={e.root}\n key={e.version}\n type={\n r.updateType === UpdateType.Deleted\n ? 'error'\n : r.updateType === UpdateType.Changed\n ? 'warn'\n : 'default'\n }\n />\n ))}\n </Space>\n );\n }\n return null;\n },\n },\n {\n title: 'Parsed Size',\n render: (_v, r) => {\n const parsedSize = sumBy(\n r.current,\n (e) => e.size.parsedSize,\n );\n const DiffComponent = () => (\n <SizePercent\n baseline={sumBy(r.baseline, (e) => e.size.parsedSize)}\n current={parsedSize}\n />\n );\n\n if (r.current) {\n return (\n <Space>\n <Typography.Text\n strong={r.updateType !== UpdateType.NotChanged}\n >\n {formatSize(parsedSize)}\n </Typography.Text>\n <DiffComponent />\n </Space>\n );\n }\n return <DiffComponent />;\n },\n },\n ],\n },\n {\n title: 'Baseline',\n children: [\n {\n title: 'Version',\n render: (_v, r) => {\n if (r.baseline) {\n return (\n <Space direction=\"vertical\">\n {r.baseline.map((e) => (\n <Bdg\n label=\"version\"\n value={e.version}\n tooltip={e.root}\n key={e.version}\n type={\n r.updateType === UpdateType.Deleted\n ? 'error'\n : r.updateType === UpdateType.Changed\n ? 'warn'\n : 'default'\n }\n />\n ))}\n </Space>\n );\n }\n return null;\n },\n },\n {\n title: 'Parsed Size',\n render: (_v, r) => {\n if (r.baseline) {\n const parsedSize = sumBy(\n r.baseline,\n (e) => e.size.parsedSize,\n );\n return (\n <Typography.Text>\n {formatSize(parsedSize)}\n </Typography.Text>\n );\n }\n return null;\n },\n },\n ],\n },\n ]}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["getChangedType","data","bvs","e","dcs","UpdateType","isChanged","PackagesStatistic","dataSource","newCount","deleteCount","changedCount","useMemo","Space","Bdg","getPackagesTableDataSource","baseline","current","bPkgs","cPkgs","res","setter","pkg","type","pre","post","Object","a","Packages","Empty","pkgNames","uniq","selectedPkgNames","setSelectedPkgNames","useState","selectedUpdateTypes","setSelectedUpdateTypes","filteredDataSource","Row","Size","Col","Select","r","el","Typography","FileUpdateTypeTag","Table","Divider","Tooltip","_v","parsedSize","sumBy","DiffComponent","SizePercent","formatSize"],"mappings":";;;;;;;;;;AAsBA,MAAMA,iBAAiB,CAACC;IACtB,IAAIA,KAAK,QAAQ,IAAIA,KAAK,OAAO,EAAE;QACjC,MAAMC,MAAMD,KAAK,QAAQ,CACtB,GAAG,CAAC,CAACE,IAAMA,EAAE,OAAO,EACpB,IAAI,GACJ,IAAI;QACP,MAAMC,MAAMH,KAAK,OAAO,CACrB,GAAG,CAAC,CAACE,IAAMA,EAAE,OAAO,EACpB,IAAI,GACJ,IAAI;QAEP,OAAOD,QAAQE,MAAMC,WAAW,UAAU,GAAGA,WAAW,OAAO;IACjE;IAEA,IAAI,CAACJ,KAAK,QAAQ,IAAI,CAACA,KAAK,OAAO,EACjC,OAAOI,WAAW,UAAU;IAG9B,IAAIJ,KAAK,QAAQ,IAAI,CAACA,KAAK,OAAO,EAChC,OAAOI,WAAW,OAAO;IAG3B,OAAOA,WAAW,GAAG;AACvB;AAEA,MAAMC,YAAY,CAACL,OACVD,eAAeC,UAAUI,WAAW,UAAU;AAGhD,MAAME,oBAER,CAAC,EAAEC,UAAU,EAAE;IAClB,MAAM,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,YAAY,EAAE,GAAGC,QAAQ,IAC/C;YACL,UAAUJ,WAAW,MAAM,CAAC,CAACL,IAAMA,EAAE,UAAU,KAAKE,WAAW,GAAG,EAC/D,MAAM;YACT,aAAaG,WAAW,MAAM,CAAC,CAACL,IAAMA,EAAE,UAAU,KAAKE,WAAW,OAAO,EACtE,MAAM;YACT,cAAcG,WAAW,MAAM,CAC7B,CAACL,IAAMA,EAAE,UAAU,KAAKE,WAAW,OAAO,EAC1C,MAAM;QACV,IACC;QAACG;KAAW;IAEf,OAAO,WAAP,GACE,KAACK,OAAKA;;0BACJ,IAACC,OAAGA;gBACF,OAAM;gBACN,OAAOL;gBACP,MAAMA,WAAW,IAAI,UAAU;gBAC/B,SAAS,CAAC,YAAY,EAAEA,SAAS,qCAAqC,CAAC;;0BAEzE,IAACK,OAAGA;gBACF,OAAM;gBACN,OAAOJ;gBACP,MAAMA,cAAc,IAAI,UAAU;gBAClC,SAAS,CAAC,eAAe,EAAEA,YAAY,uBAAuB,CAAC;;0BAEjE,IAACI,OAAGA;gBACF,OAAM;gBACN,OAAOH;gBACP,MAAMA,eAAe,IAAI,UAAU;gBACnC,SAAS,CAAC,YAAY,EAAEA,aAAa,+BAA+B,CAAC;;;;AAI7E;AAEO,MAAMI,6BAA6B,CAAC,EACzCC,QAAQ,EACRC,OAAO,EAIR;IACC,MAAM,EAAE,UAAUC,QAAQ,EAAE,EAAE,GAAGF,YAAY,CAAC;IAC9C,MAAM,EAAE,UAAUG,QAAQ,EAAE,EAAE,GAAGF,WAAW,CAAC;IAE7C,MAAMG,MAAmD,CAAC;IAE1D,MAAMC,SAAS,CAACC,KAAsBC;QACpC,IAAI,CAACH,GAAG,CAACE,IAAI,IAAI,CAAC,EAChBF,GAAG,CAACE,IAAI,IAAI,CAAC,GAAG;YAAE,MAAMA,IAAI,IAAI;YAAE,YAAYjB,WAAW,UAAU;QAAC;QAEtE,IAAI,CAACe,GAAG,CAACE,IAAI,IAAI,CAAC,CAACC,KAAK,EACtBH,GAAG,CAACE,IAAI,IAAI,CAAC,CAACC,KAAK,GAAG,EAAE;QAG1BH,GAAG,CAACE,IAAI,IAAI,CAAC,CAACC,KAAK,CAAE,IAAI,CAACD;IAC5B;IAEAJ,MAAM,OAAO,CAAC,CAACf,IAAMkB,OAAOlB,GAAG;IAC/BgB,MAAM,OAAO,CAAC,CAAChB,IAAMkB,OAAOlB,GAAG;IAE/B,MAAMqB,MAAqC,EAAE;IAC7C,MAAMC,OAAsC,EAAE;IAE9CC,OAAO,MAAM,CAACN,KAAK,OAAO,CAAC,CAACO;QAC1B,IAAIrB,UAAUqB,IACZH,IAAI,IAAI,CAACG;aAETF,KAAK,IAAI,CAACE;IAEd;IAEA,OAAOH,IAAI,MAAM,CAACC,MAAM,GAAG,CAAC,CAACtB,IACpB;YACL,GAAGA,CAAC;YACJ,YAAYH,eAAeG;QAC7B;AAEJ;AAEO,MAAMyB,WAGR,CAAC,EAAEZ,QAAQ,EAAEC,OAAO,EAAE;IACzB,MAAM,EAAE,UAAUC,QAAQ,EAAE,EAAE,GAAGF,YAAY,CAAC;IAC9C,MAAM,EAAE,UAAUG,QAAQ,EAAE,EAAE,GAAGF,WAAW,CAAC;IAE7C,IAAI,CAACC,MAAM,MAAM,IAAI,CAACC,MAAM,MAAM,EAChC,OAAO,WAAP,GAAO,IAACU,OAAKA,CAAAA;IAGf,MAAMC,WAAWlB,QAAQ,IAChBmB,KAAKb,MAAM,MAAM,CAACC,OAAO,GAAG,CAAC,CAAChB,IAAMA,EAAE,IAAI,IAChD;QAACe;QAAOC;KAAM;IAEjB,MAAM,CAACa,kBAAkBC,oBAAoB,GAAGC,SAAmB,EAAE;IACrE,MAAM,CAACC,qBAAqBC,uBAAuB,GAAGF,SACpD,EAAE;IAGJ,MAAM1B,aAAaI,QAAQ,IAClBG,2BAA2B;YAAEC;YAAUC;QAAQ,IACrD;QAACD;QAAUC;KAAQ;IAEtB,MAAMoB,qBAAqBzB,QAAQ,IAC1BJ,WAAW,MAAM,CAAC,CAACL;YACxB,IAAIgC,oBAAoB,MAAM,EAC5B,OAAOA,oBAAoB,OAAO,CAAChC,EAAE,UAAU,IAAI;YAGrD,IAAI6B,iBAAiB,MAAM,EACzB,OAAOA,iBAAiB,OAAO,CAAC7B,EAAE,IAAI,IAAI;YAG5C,OAAO;QACT,IACC;QAACK;QAAYwB;QAAkBG;KAAoB;IAEtD,OAAO,WAAP,GACE,KAACG,KAAGA;QAAC,QAAQ;YAACC,KAAK,WAAW;YAAEA,KAAK,WAAW;SAAC;;0BAC/C,IAACC,KAAGA;gBAAC,MAAM;gBAAI,OAAO;oBAAE,WAAW;gBAAG;0BACpC,mBAAC3B,OAAKA;oBAAC,MAAI;;sCACT,IAAC4B,QAAMA;4BACL,MAAK;4BACL,aAAY;4BACZ,OAAO;gCAAE,OAAO;4BAAI;4BACpB,SAASX,SAAS,GAAG,CAAC,CAAC3B;gCACrB,MAAMuC,IAAIlC,WAAW,IAAI,CAAC,CAACmC,KAAOA,GAAG,IAAI,KAAKxC;gCAE9C,IAAIuC,KAAKpC,UAAUoC,IACjB,OAAO;oCACL,OAAO,WAAP,GACE,KAAC7B,OAAKA;;0DACJ,IAAC+B,WAAW,IAAI;0DAAEzC;;0DAClB,IAAC0C,mBAAiBA;gDAAC,MAAM7C,eAAe0C;;;;oCAG5C,OAAOvC;gCACT;gCAGF,OAAO;oCACL,OAAOA;oCACP,OAAOA;gCACT;4BACF;4BACA,YAAU;4BACV,UAAU,CAACA;gCACT8B,oBAAoB9B;4BACtB;;sCAEF,IAACsC,QAAMA;4BACL,MAAK;4BACL,aAAY;4BACZ,OAAO;gCAAE,OAAO;4BAAI;4BACpB,SAASf,OAAO,MAAM,CAACrB,YAAY,GAAG,CAAC,CAACF,IAAO;oCAC7C,OAAOA;oCACP,OAAOA;gCACT;4BACA,YAAU;4BACV,UAAU,CAACA;gCACTiC,uBAAuBjC;4BACzB;;;;;0BAIN,IAACqC,KAAGA;gBAAC,MAAM;0BACT,kBAACM,OAAKA;oBACJ,UAAQ;oBACR,QAAQ;wBAAE,cAAc;oBAAG;oBAC3B,YAAY;wBACV,UAAU;wBACV,MAAM;oBACR;oBAEA,YAAYT;oBACZ,QAAQ,CAAClC,IAAMA,EAAE,IAAI;oBACrB,SAAS;wBACP;4BACE,OAAO,kBACL,KAACU,OAAKA;;sDACJ,IAAC+B,WAAW,IAAI;sDAAC;;sDACjB,IAACG,SAAOA;4CAAC,MAAK;;sDACd,IAACC,SAAOA;4CACN,OAAO,CAAC,0BAA0B,EAAEX,mBAAmB,MAAM,CAAC,yBAAyB,EAAE7B,WAAW,MAAM,EAAE;sDAE5G,mBAACoC,WAAW,IAAI;gDACd,MAAK;gDACL,OAAO;oDAAE,UAAU;oDAAI,YAAY;gDAAI;;oDAEtCP,mBAAmB,MAAM;oDAAC;oDAAI7B,WAAW,MAAM;;;;;;4BAKxD,QAAQ,CAACyC,IAAIP;gCACX,IAAIA,EAAE,UAAU,KAAKrC,WAAW,UAAU,EACxC,OAAO,WAAP,GACE,KAACQ,OAAKA;;sDACJ,IAAC+B,WAAW,IAAI;sDAAEF,EAAE,IAAI;;sDACxB,IAACG,mBAAiBA;4CAAC,MAAMH,EAAE,UAAU;;;;gCAI3C,OAAOA,EAAE,IAAI;4BACf;wBACF;wBACA;4BACE,OAAO,IACE,WAAP,GACE,KAAC7B,OAAKA;;sDACJ,IAAC+B,WAAW,IAAI;sDAAC;;sDACjB,IAACG,SAAOA;4CAAC,MAAK;;sDACd,IAACxC,mBAAAA;4CAAkB,YAAYC;;;;4BAIrC,UAAU;gCACR;oCACE,OAAO;oCACP,QAAQ,CAACyC,IAAIP;wCACX,IAAIA,EAAE,OAAO,EACX,OAAO,WAAP,GACE,IAAC7B,OAAKA;4CAAC,WAAU;sDACd6B,EAAE,OAAO,CAAC,GAAG,CAAC,CAACvC,IAAAA,WAAAA,GACd,IAACW,OAAGA;oDACF,OAAM;oDACN,OAAOX,EAAE,OAAO;oDAChB,SAASA,EAAE,IAAI;oDAEf,MACEuC,EAAE,UAAU,KAAKrC,WAAW,OAAO,GAC/B,UACAqC,EAAE,UAAU,KAAKrC,WAAW,OAAO,GACjC,SACA;mDANHF,EAAE,OAAO;;wCAaxB,OAAO;oCACT;gCACF;gCACA;oCACE,OAAO;oCACP,QAAQ,CAAC8C,IAAIP;wCACX,MAAMQ,aAAaC,MACjBT,EAAE,OAAO,EACT,CAACvC,IAAMA,EAAE,IAAI,CAAC,UAAU;wCAE1B,MAAMiD,gBAAgB,kBACpB,IAACC,aAAWA;gDACV,UAAUF,MAAMT,EAAE,QAAQ,EAAE,CAACvC,IAAMA,EAAE,IAAI,CAAC,UAAU;gDACpD,SAAS+C;;wCAIb,IAAIR,EAAE,OAAO,EACX,OAAO,WAAP,GACE,KAAC7B,OAAKA;;8DACJ,IAAC+B,WAAW,IAAI;oDACd,QAAQF,EAAE,UAAU,KAAKrC,WAAW,UAAU;8DAE7CiD,WAAWJ;;8DAEd,IAACE,eAAAA,CAAAA;;;wCAIP,OAAO,WAAP,GAAO,IAACA,eAAAA,CAAAA;oCACV;gCACF;6BACD;wBACH;wBACA;4BACE,OAAO;4BACP,UAAU;gCACR;oCACE,OAAO;oCACP,QAAQ,CAACH,IAAIP;wCACX,IAAIA,EAAE,QAAQ,EACZ,OAAO,WAAP,GACE,IAAC7B,OAAKA;4CAAC,WAAU;sDACd6B,EAAE,QAAQ,CAAC,GAAG,CAAC,CAACvC,IAAAA,WAAAA,GACf,IAACW,OAAGA;oDACF,OAAM;oDACN,OAAOX,EAAE,OAAO;oDAChB,SAASA,EAAE,IAAI;oDAEf,MACEuC,EAAE,UAAU,KAAKrC,WAAW,OAAO,GAC/B,UACAqC,EAAE,UAAU,KAAKrC,WAAW,OAAO,GACjC,SACA;mDANHF,EAAE,OAAO;;wCAaxB,OAAO;oCACT;gCACF;gCACA;oCACE,OAAO;oCACP,QAAQ,CAAC8C,IAAIP;wCACX,IAAIA,EAAE,QAAQ,EAAE;4CACd,MAAMQ,aAAaC,MACjBT,EAAE,QAAQ,EACV,CAACvC,IAAMA,EAAE,IAAI,CAAC,UAAU;4CAE1B,OAAO,WAAP,GACE,IAACyC,WAAW,IAAI;0DACbU,WAAWJ;;wCAGlB;wCACA,OAAO;oCACT;gCACF;6BACD;wBACH;qBACD;;;;;AAKX"}
1
+ {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/packages.mjs","sources":["../../../../../src/pages/Resources/BundleDiff/DiffContainer/packages.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n Col,\n Divider,\n Empty,\n Row,\n Select,\n Space,\n Table,\n Tooltip,\n Typography,\n} from 'antd';\nimport { sumBy, uniq } from 'es-toolkit/compat';\nimport { SDK } from '@rsdoctor/types';\nimport { BundleDiffTablePackagesData } from './types';\nimport { formatSize } from '../../../../utils';\nimport { Size } from '../../../../constants';\nimport { FileUpdateTypeTag } from './modules';\nimport { UpdateType } from './constants';\nimport { Badge as Bdg } from '../../../../components/Badge';\nimport { SizePercent } from '../../../../components/Card/diff';\n\nconst getChangedType = (data: BundleDiffTablePackagesData): UpdateType => {\n if (data.baseline && data.current) {\n const bvs = data.baseline\n .map((e) => e.version)\n .sort()\n .join();\n const dcs = data.current\n .map((e) => e.version)\n .sort()\n .join();\n\n return bvs === dcs ? UpdateType.NotChanged : UpdateType.Changed;\n }\n\n if (!data.baseline && !data.current) {\n return UpdateType.NotChanged;\n }\n\n if (data.baseline && !data.current) {\n return UpdateType.Deleted;\n }\n\n return UpdateType.New;\n};\n\nconst isChanged = (data: BundleDiffTablePackagesData) => {\n return getChangedType(data) !== UpdateType.NotChanged;\n};\n\nexport const PackagesStatistic: React.FC<{\n dataSource: ReturnType<typeof getPackagesTableDataSource>;\n}> = ({ dataSource }) => {\n const { newCount, deleteCount, changedCount } = useMemo(() => {\n return {\n newCount: dataSource.filter((e) => e.updateType === UpdateType.New)\n .length,\n deleteCount: dataSource.filter((e) => e.updateType === UpdateType.Deleted)\n .length,\n changedCount: dataSource.filter(\n (e) => e.updateType === UpdateType.Changed,\n ).length,\n };\n }, [dataSource]);\n\n return (\n <Space>\n <Bdg\n label=\"New\"\n value={newCount}\n type={newCount > 0 ? 'error' : 'default'}\n tooltip={`Current has ${newCount} packages which not found in Baseline`}\n />\n <Bdg\n label=\"Deleted\"\n value={deleteCount}\n type={deleteCount > 0 ? 'error' : 'default'}\n tooltip={`Current delete ${deleteCount} packages than Baseline`}\n />\n <Bdg\n label=\"Changed\"\n value={changedCount}\n type={changedCount > 0 ? 'error' : 'default'}\n tooltip={`Current has ${changedCount} changed packages than Baseline`}\n />\n </Space>\n );\n};\n\nexport const getPackagesTableDataSource = ({\n baseline,\n current,\n}: {\n baseline: SDK.PackageGraphData;\n current: SDK.PackageGraphData;\n}) => {\n const { packages: bPkgs = [] } = baseline || {};\n const { packages: cPkgs = [] } = current || {};\n\n const res: Record<string, BundleDiffTablePackagesData> = {};\n\n const setter = (pkg: SDK.PackageData, type: 'baseline' | 'current') => {\n if (!res[pkg.name]) {\n res[pkg.name] = { name: pkg.name, updateType: UpdateType.NotChanged };\n }\n if (!res[pkg.name][type]) {\n res[pkg.name][type] = [];\n }\n\n res[pkg.name][type]!.push(pkg);\n };\n\n bPkgs.forEach((e) => setter(e, 'baseline'));\n cPkgs.forEach((e) => setter(e, 'current'));\n\n const pre: BundleDiffTablePackagesData[] = [];\n const post: BundleDiffTablePackagesData[] = [];\n\n Object.values(res).forEach((a) => {\n if (isChanged(a)) {\n pre.push(a);\n } else {\n post.push(a);\n }\n });\n\n return pre.concat(post).map((e) => {\n return {\n ...e,\n updateType: getChangedType(e),\n };\n });\n};\n\nexport const Packages: React.FC<{\n baseline: SDK.PackageGraphData;\n current: SDK.PackageGraphData;\n}> = ({ baseline, current }) => {\n const { packages: bPkgs = [] } = baseline || {};\n const { packages: cPkgs = [] } = current || {};\n\n if (!bPkgs.length && !cPkgs.length) {\n return <Empty />;\n }\n\n const pkgNames = useMemo(() => {\n return uniq(bPkgs.concat(cPkgs).map((e) => e.name));\n }, [bPkgs, cPkgs]);\n\n const [selectedPkgNames, setSelectedPkgNames] = useState<string[]>([]);\n const [selectedUpdateTypes, setSelectedUpdateTypes] = useState<UpdateType[]>(\n [],\n );\n\n const dataSource = useMemo(() => {\n return getPackagesTableDataSource({ baseline, current });\n }, [baseline, current]);\n\n const filteredDataSource = useMemo(() => {\n return dataSource.filter((e) => {\n if (selectedUpdateTypes.length) {\n return selectedUpdateTypes.indexOf(e.updateType) > -1;\n }\n\n if (selectedPkgNames.length) {\n return selectedPkgNames.indexOf(e.name) > -1;\n }\n\n return true;\n });\n }, [dataSource, selectedPkgNames, selectedUpdateTypes]);\n\n return (\n <Row gutter={[Size.BasePadding, Size.BasePadding]}>\n <Col span={24} style={{ marginTop: 16 }}>\n <Space wrap>\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by package names\"\n style={{ width: 400 }}\n options={pkgNames.map((e) => {\n const r = dataSource.find((el) => el.name === e);\n\n if (r && isChanged(r)) {\n return {\n label: (\n <Space>\n <Typography.Text>{e}</Typography.Text>\n <FileUpdateTypeTag type={getChangedType(r)} />\n </Space>\n ),\n value: e,\n };\n }\n\n return {\n label: e,\n value: e,\n };\n })}\n allowClear\n onChange={(e) => {\n setSelectedPkgNames(e);\n }}\n />\n <Select\n mode=\"multiple\"\n placeholder=\"Filter by changed type\"\n style={{ width: 200 }}\n options={Object.values(UpdateType).map((e) => ({\n label: e,\n value: e,\n }))}\n allowClear\n onChange={(e) => {\n setSelectedUpdateTypes(e);\n }}\n />\n </Space>\n </Col>\n <Col span={24}>\n <Table\n bordered\n sticky={{ offsetHeader: 54 }}\n pagination={{\n pageSize: 20,\n size: 'small',\n }}\n // scroll={{ x: 1700 }}\n dataSource={filteredDataSource}\n rowKey={(e) => e.name}\n columns={[\n {\n title: () => (\n <Space>\n <Typography.Text>Package Name</Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={`Filtered Package Count is ${filteredDataSource.length}, Total Package Count is ${dataSource.length}`}\n >\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400 }}\n >\n {filteredDataSource.length} / {dataSource.length}\n </Typography.Text>\n </Tooltip>\n </Space>\n ),\n render: (_v, r) => {\n if (r.updateType !== UpdateType.NotChanged) {\n return (\n <Space>\n <Typography.Text>{r.name}</Typography.Text>\n <FileUpdateTypeTag type={r.updateType} />\n </Space>\n );\n }\n return r.name;\n },\n },\n {\n title: () => {\n return (\n <Space>\n <Typography.Text>Current</Typography.Text>\n <Divider type=\"vertical\" />\n <PackagesStatistic dataSource={dataSource} />\n </Space>\n );\n },\n children: [\n {\n title: 'Version',\n render: (_v, r) => {\n if (r.current) {\n return (\n <Space direction=\"vertical\">\n {r.current.map((e) => (\n <Bdg\n label=\"version\"\n value={e.version}\n tooltip={e.root}\n key={e.version}\n type={\n r.updateType === UpdateType.Deleted\n ? 'error'\n : r.updateType === UpdateType.Changed\n ? 'warn'\n : 'default'\n }\n />\n ))}\n </Space>\n );\n }\n return null;\n },\n },\n {\n title: 'Parsed Size',\n render: (_v, r) => {\n const parsedSize = sumBy(\n r.current,\n (e) => e.size.parsedSize,\n );\n const DiffComponent = () => (\n <SizePercent\n baseline={sumBy(r.baseline, (e) => e.size.parsedSize)}\n current={parsedSize}\n />\n );\n\n if (r.current) {\n return (\n <Space>\n <Typography.Text\n strong={r.updateType !== UpdateType.NotChanged}\n >\n {formatSize(parsedSize)}\n </Typography.Text>\n <DiffComponent />\n </Space>\n );\n }\n return <DiffComponent />;\n },\n },\n ],\n },\n {\n title: 'Baseline',\n children: [\n {\n title: 'Version',\n render: (_v, r) => {\n if (r.baseline) {\n return (\n <Space direction=\"vertical\">\n {r.baseline.map((e) => (\n <Bdg\n label=\"version\"\n value={e.version}\n tooltip={e.root}\n key={e.version}\n type={\n r.updateType === UpdateType.Deleted\n ? 'error'\n : r.updateType === UpdateType.Changed\n ? 'warn'\n : 'default'\n }\n />\n ))}\n </Space>\n );\n }\n return null;\n },\n },\n {\n title: 'Parsed Size',\n render: (_v, r) => {\n if (r.baseline) {\n const parsedSize = sumBy(\n r.baseline,\n (e) => e.size.parsedSize,\n );\n return (\n <Typography.Text>\n {formatSize(parsedSize)}\n </Typography.Text>\n );\n }\n return null;\n },\n },\n ],\n },\n ]}\n />\n </Col>\n </Row>\n );\n};\n"],"names":["getChangedType","data","bvs","e","dcs","UpdateType","isChanged","PackagesStatistic","dataSource","newCount","deleteCount","changedCount","useMemo","Space","Bdg","getPackagesTableDataSource","baseline","current","bPkgs","cPkgs","res","setter","pkg","type","pre","post","Object","a","Packages","Empty","pkgNames","uniq","selectedPkgNames","setSelectedPkgNames","useState","selectedUpdateTypes","setSelectedUpdateTypes","filteredDataSource","Row","Size","Col","Select","r","el","Typography","FileUpdateTypeTag","Table","Divider","Tooltip","_v","parsedSize","sumBy","DiffComponent","SizePercent","formatSize"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pages/Resources/BundleDiff/constants.mjs","sources":["../../../../src/pages/Resources/BundleDiff/constants.tsx"],"sourcesContent":["import React from 'react';\nimport { Client, Manifest } from '@rsdoctor/types';\n\nexport const name = 'Bundle Diff';\n\nexport const route = Client.RsdoctorClientRoutes.BundleDiff;\n\nexport const BundleDiffContext = React.createContext({\n manifests: [] as Manifest.RsdoctorManifest[],\n setManifests(_manifests: Manifest.RsdoctorManifest[]): void {},\n loading: false,\n setLoading(_loading: boolean): void {},\n async withLoading(\n _func: (...args: unknown[]) => Promise<unknown> | unknown,\n ) {},\n});\n"],"names":["name","route","Client","BundleDiffContext","React","_manifests","_loading","_func"],"mappings":";;AAGO,MAAMA,iBAAO;AAEb,MAAMC,QAAQC,OAAO,oBAAoB,CAAC,UAAU;AAEpD,MAAMC,oBAAoB,WAApBA,GAAoBC,MAAAA,aAAmB,CAAC;IACnD,WAAW,EAAE;IACb,cAAaC,UAAuC,GAAS;IAC7D,SAAS;IACT,YAAWC,QAAiB,GAAS;IACrC,MAAM,aACJC,KAAyD,GACxD;AACL"}
1
+ {"version":3,"file":"pages/Resources/BundleDiff/constants.mjs","sources":["../../../../src/pages/Resources/BundleDiff/constants.tsx"],"sourcesContent":["import React from 'react';\nimport { Client, Manifest } from '@rsdoctor/types';\n\nexport const name = 'Bundle Diff';\n\nexport const route = Client.RsdoctorClientRoutes.BundleDiff;\n\nexport const BundleDiffContext = React.createContext({\n manifests: [] as Manifest.RsdoctorManifest[],\n setManifests(_manifests: Manifest.RsdoctorManifest[]): void {},\n loading: false,\n setLoading(_loading: boolean): void {},\n async withLoading(\n _func: (...args: unknown[]) => Promise<unknown> | unknown,\n ) {},\n});\n"],"names":["name","route","Client","BundleDiffContext","React","_manifests","_loading","_func"],"mappings":";;AAGO,MAAMA,iBAAO;AAEb,MAAMC,QAAQC,OAAO,oBAAoB,CAAC,UAAU;AAEpD,MAAMC,oBAAoB,WAAHA,GAAGC,MAAAA,aAAmB,CAAC;IACnD,WAAW,EAAE;IACb,cAAaC,UAAuC,GAAS;IAC7D,SAAS;IACT,YAAWC,QAAiB,GAAS;IACrC,MAAM,aACJC,KAAyD,GACxD;AACL"}
@@ -1,8 +1,8 @@
1
+ export * from "./constants.mjs";
2
+ export * from "./DiffContainer/index.mjs";
1
3
  import { jsx } from "react/jsx-runtime";
2
4
  import "react";
3
5
  import { DiffContainer } from "./DiffContainer/index.mjs";
4
- export * from "./constants.mjs";
5
- export * from "./DiffContainer/index.mjs";
6
6
  const Page = ()=>/*#__PURE__*/ jsx(DiffContainer, {
7
7
  manifests: []
8
8
  });
@@ -1,3 +1,4 @@
1
+ export * from "./constants.mjs";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import { useEffect, useState } from "react";
3
4
  import { Rule } from "@rsdoctor/types";
@@ -6,7 +7,6 @@ import react_markdown from "react-markdown";
6
7
  import { Title } from "../../../components/Title/index.mjs";
7
8
  import { Size } from "../../../constants.mjs";
8
9
  import { useUrlQuery } from "../../../utils/index.mjs";
9
- export * from "./constants.mjs";
10
10
  const Page = ()=>{
11
11
  const query = useUrlQuery();
12
12
  const defaultErrorCode = query[Rule.RsdoctorRuleClientConstant.UrlQueryForErrorCode] || '';
@@ -1,3 +1,4 @@
1
+ export * from "./constants.mjs";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import { useMemo, useState } from "react";
3
4
  import { Card, Col, Radio, Row } from "antd";
@@ -15,7 +16,6 @@ import { CodeEditor } from "./editor.mjs";
15
16
  import { Space } from "./space.mjs";
16
17
  import { TreeShakingTable } from "./table.mjs";
17
18
  import "./index.css";
18
- export * from "./constants.mjs";
19
19
  const Component = ({ data, cwd })=>{
20
20
  const moduleGraph = useModuleGraphInstanceByModuleGraph(data);
21
21
  if (0 === moduleGraph.size()) return /*#__PURE__*/ jsx(Space, {});
@@ -32,6 +32,6 @@ function parseOpenTag(dom) {
32
32
  }
33
33
  return result;
34
34
  }
35
- export { open_tag_AttributeKey as AttributeKey, getOpenTagText, parseOpenTag };
35
+ export { getOpenTagText, open_tag_AttributeKey as AttributeKey, parseOpenTag };
36
36
 
37
37
  //# sourceMappingURL=open-tag.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pages/TreeShaking/table.mjs","sources":["../../../src/pages/TreeShaking/table.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport {\n Space,\n Table,\n Typography,\n Divider,\n Tooltip,\n Button,\n Input,\n InputRef,\n} from 'antd';\nimport { SearchOutlined } from '@ant-design/icons';\nimport type { ColumnType, FilterConfirmProps } from 'antd/es/table/interface';\nimport React, { useMemo, useState, useRef } from 'react';\nimport Highlighter from 'react-highlight-words';\nimport { Card } from '../../components/Card';\nimport type { TableKind, SetEditorStatus } from './types';\nimport { ellipsisPath } from './utils';\nimport { isDef } from '../../utils';\n\nconst tableHeight = 600;\n\ninterface TableProps {\n module: SDK.ModuleInstance;\n moduleGraph: SDK.ModuleGraphInstance;\n setEditorData: SetEditorStatus;\n kind: TableKind;\n}\n\nfunction getDeclarationElement(\n val: SDK.StatementInstance | undefined,\n setEditorData: SetEditorStatus,\n) {\n if (!val) {\n return <div>Can not find declaration.</div>;\n }\n\n const { module } = val;\n const range = module.isPreferSource\n ? val.position.source!\n : val.position.transformed;\n\n return (\n <Tooltip title={`${module.path}, line ${range.start.line}`}>\n <Button\n type=\"link\"\n onClick={() => setEditorData(module, [range], range.start.line)}\n >\n Move To\n </Button>\n </Tooltip>\n );\n}\n\nfunction useSearchCell<Data>(dataIndex: string): ColumnType<Data> {\n const [searchText, setSearchText] = useState('');\n const [searchedColumn, setSearchedColumn] = useState('');\n const searchInput = useRef<InputRef>(null);\n\n const handleSearch = (\n selectedKeys: string[],\n confirm: (param?: FilterConfirmProps) => void,\n dataIndex: string,\n ) => {\n confirm();\n setSearchText(selectedKeys[0]);\n setSearchedColumn(dataIndex);\n };\n\n const handleReset = (clearFilters: () => void) => {\n clearFilters();\n setSearchText('');\n };\n\n return {\n filterDropdown: ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n close,\n }) => (\n <div style={{ padding: 8 }} onKeyDown={(e) => e.stopPropagation()}>\n <Input\n ref={searchInput}\n placeholder={`Search ${dataIndex}`}\n value={selectedKeys[0]}\n onChange={(e) =>\n setSelectedKeys(e.target.value ? [e.target.value] : [])\n }\n onPressEnter={() =>\n handleSearch(selectedKeys as string[], confirm, dataIndex)\n }\n style={{ marginBottom: 8, display: 'block' }}\n />\n <Space>\n <Button\n type=\"primary\"\n onClick={() =>\n handleSearch(selectedKeys as string[], confirm, dataIndex)\n }\n icon={<SearchOutlined />}\n size=\"small\"\n style={{ width: 90 }}\n >\n Search\n </Button>\n <Button\n onClick={() => clearFilters && handleReset(clearFilters)}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n </Button>\n <Button type=\"link\" size=\"small\" onClick={close}>\n close\n </Button>\n </Space>\n </div>\n ),\n filterIcon: (filtered: boolean) => (\n <SearchOutlined style={{ color: filtered ? '#1890ff' : undefined }} />\n ),\n onFilter: (value, record): boolean => {\n // @ts-ignore\n return record[dataIndex]\n .toString()\n .toLowerCase()\n .includes((value as string).toLowerCase());\n },\n render: (text: string) => {\n return searchedColumn === dataIndex ? (\n <Highlighter\n highlightStyle={{ backgroundColor: '#ffc069', padding: 0 }}\n searchWords={[searchText]}\n autoEscape\n textToHighlight={text ? text.toString() : ''}\n />\n ) : (\n text\n );\n },\n };\n}\n\nexport const SideEffectTable: React.FC<TableProps> = ({\n module,\n moduleGraph,\n setEditorData,\n}) => {\n interface SideEffectDataRowData {\n key: number;\n name: string;\n identifier: SDK.SourceRange;\n declaration?: SDK.StatementInstance;\n children?: SideEffectDataRowData[];\n }\n\n const sideEffects = useMemo(\n () => moduleGraph.getModuleGraphModule(module)!.getSideEffects(),\n [module],\n );\n const dataSource = sideEffects\n .map(({ variable, name, identifier }, i): SideEffectDataRowData => {\n return {\n key: i,\n name,\n identifier: module.isPreferSource\n ? identifier.position.source!\n : identifier.position.transformed,\n declaration: variable?.identifier,\n };\n })\n .sort((pre, next) => {\n // 名称相同则看行数\n if (pre.name === next.name) {\n return pre.identifier.start.line! > next.identifier.start.line!\n ? 1\n : -1;\n }\n\n // 名称不同则比较名称\n return pre.name > next.name ? 1 : -1;\n })\n .reduce((ans, item) => {\n const lastItem = ans[ans.length - 1];\n\n if (!lastItem || lastItem.name !== item.name) {\n ans.push(item);\n return ans;\n }\n\n if (!lastItem.children) {\n lastItem.children = [];\n }\n\n lastItem.children.push(item);\n return ans;\n }, [] as SideEffectDataRowData[]);\n\n const columns: ColumnType<any>[] = [\n {\n title: 'Name',\n dataIndex: 'name',\n key: 'name',\n align: 'center',\n ...useSearchCell<SDK.ExportData>('name'),\n },\n {\n title: 'SideEffect',\n dataIndex: 'identifier',\n key: 'identifier',\n align: 'center',\n render: (val: SDK.SourceRange) => {\n return (\n <Tooltip title={`Current File line ${val.start.line}`}>\n <Button\n type=\"link\"\n onClick={() => setEditorData(module, [val], val.start.line)}\n >\n Move To\n </Button>\n </Tooltip>\n );\n },\n },\n {\n title: 'Declaration',\n dataIndex: 'declaration',\n key: 'declaration',\n align: 'center',\n render: (val: SDK.StatementInstance) => {\n return getDeclarationElement(val, setEditorData);\n },\n },\n ];\n\n const titleInfo = (\n <React.Fragment>\n <Space style={{ fontWeight: 400 }}>\n Import\n <Typography.Text strong>{dataSource.length}</Typography.Text>\n variables\n <Divider type=\"vertical\" />\n <Typography.Text strong>{sideEffects.length}</Typography.Text>\n sideEffects\n </Space>\n </React.Fragment>\n );\n\n return (\n <Card\n style={{ marginBottom: 10 }}\n title={titleInfo}\n className=\"tree-shaking-export-table\"\n >\n <Table\n size=\"small\"\n dataSource={dataSource}\n columns={columns}\n pagination={false}\n scroll={{ y: tableHeight }}\n />\n </Card>\n );\n};\n\nexport const ExportTable: React.FC<TableProps> = ({\n module,\n moduleGraph,\n setEditorData,\n}) => {\n const exportsData = useMemo(\n () => moduleGraph.getModuleGraphModule(module)!.getExports(),\n [module],\n );\n const allUnUsedExports = exportsData.filter(\n (item) => item.getSideEffects().length === 0,\n );\n const titleInfo = (\n <React.Fragment>\n <Space style={{ fontWeight: 400 }}>\n Export\n <Typography.Text strong>{exportsData.length}</Typography.Text>\n </Space>\n {exportsData.length > 0 ? (\n <>\n <Divider type=\"vertical\" />\n <Typography.Text style={{ fontWeight: 400 }} code>\n <Typography.Text>Unused</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text strong>{allUnUsedExports.length}</Typography.Text>\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text style={{ fontWeight: 400 }} code>\n <Typography.Text>Used</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text strong>\n {exportsData.length - allUnUsedExports.length}\n </Typography.Text>\n </Typography.Text>\n </>\n ) : (\n ''\n )}\n </React.Fragment>\n );\n\n interface RowData {\n key: number;\n name: string;\n declaration?: SDK.StatementInstance;\n used: {\n module: SDK.ModuleInstance;\n range: SDK.SourceRange;\n }[];\n }\n\n const dataSource: RowData[] = exportsData.map((item, i) => {\n const { variable } = item;\n\n return {\n key: i,\n name: item.name,\n declaration: variable?.identifier,\n used: item\n .getSideEffects()\n .map(({ module, identifier }) => {\n const range = module?.isPreferSource\n ? identifier.position.source\n : identifier.position.transformed;\n\n if (!module || !range) {\n return;\n }\n\n return {\n module,\n range,\n };\n })\n .filter(isDef),\n };\n });\n\n const columns: ColumnType<any>[] = [\n {\n title: 'Name',\n dataIndex: 'name',\n key: 'name',\n align: 'center',\n ...useSearchCell<SDK.ExportInstance>('name'),\n },\n {\n title: 'Declaration',\n dataIndex: 'declaration',\n key: 'declaration',\n align: 'center',\n render: (val?: SDK.StatementInstance) => {\n return getDeclarationElement(val, setEditorData);\n },\n },\n {\n title: 'Info',\n dataIndex: 'used',\n key: 'used',\n align: 'center',\n sorter: (a: RowData, b: RowData) => a.used.length - b.used.length,\n sortDirections: ['descend', 'ascend'],\n render: (val: RowData['used']) => <span>Used {val.length} times</span>,\n },\n ];\n\n const expandElement = (data: any) => {\n return (\n <div className=\"tree-shaking-side-effect-list\">\n <Typography.Text>List of SideEffect:</Typography.Text>\n {data.used.map(({ module, range }: any) => (\n <Tooltip key={module.id} title={`${module.path}:${range.start.line}`}>\n <Button\n className=\"tree-shaking-side-effect-list-item\"\n type=\"link\"\n onClick={() => {\n setEditorData(module, [range], range.start.line);\n }}\n >\n {`${ellipsisPath(module.path)}:${range.start.line}`}\n </Button>\n </Tooltip>\n ))}\n </div>\n );\n };\n\n return (\n <Card title={titleInfo} className=\"tree-shaking-export-table\">\n <Table\n size=\"small\"\n dataSource={dataSource}\n columns={columns}\n pagination={false}\n scroll={{ y: tableHeight }}\n expandable={{\n expandedRowRender: expandElement,\n rowExpandable: (val: any) => val.used.length > 0,\n }}\n />\n </Card>\n );\n};\n\nexport const TreeShakingTable: React.FC<TableProps> = (props) => {\n return props.kind === 'side-effect' ? (\n <SideEffectTable {...props} />\n ) : (\n <ExportTable {...props} />\n );\n};\n"],"names":["tableHeight","getDeclarationElement","val","setEditorData","module","range","Tooltip","Button","useSearchCell","dataIndex","searchText","setSearchText","useState","searchedColumn","setSearchedColumn","searchInput","useRef","handleSearch","selectedKeys","confirm","handleReset","clearFilters","setSelectedKeys","close","e","Input","Space","SearchOutlined","filtered","undefined","value","record","text","Highlighter","SideEffectTable","moduleGraph","sideEffects","useMemo","dataSource","variable","name","identifier","i","pre","next","ans","item","lastItem","columns","titleInfo","React","Typography","Divider","Card","Table","ExportTable","exportsData","allUnUsedExports","isDef","a","b","expandElement","data","ellipsisPath","TreeShakingTable","props"],"mappings":"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"}
1
+ {"version":3,"file":"pages/TreeShaking/table.mjs","sources":["../../../src/pages/TreeShaking/table.tsx"],"sourcesContent":["import { SDK } from '@rsdoctor/types';\nimport {\n Space,\n Table,\n Typography,\n Divider,\n Tooltip,\n Button,\n Input,\n InputRef,\n} from 'antd';\nimport { SearchOutlined } from '@ant-design/icons';\nimport type { ColumnType, FilterConfirmProps } from 'antd/es/table/interface';\nimport React, { useMemo, useState, useRef } from 'react';\nimport Highlighter from 'react-highlight-words';\nimport { Card } from '../../components/Card';\nimport type { TableKind, SetEditorStatus } from './types';\nimport { ellipsisPath } from './utils';\nimport { isDef } from '../../utils';\n\nconst tableHeight = 600;\n\ninterface TableProps {\n module: SDK.ModuleInstance;\n moduleGraph: SDK.ModuleGraphInstance;\n setEditorData: SetEditorStatus;\n kind: TableKind;\n}\n\nfunction getDeclarationElement(\n val: SDK.StatementInstance | undefined,\n setEditorData: SetEditorStatus,\n) {\n if (!val) {\n return <div>Can not find declaration.</div>;\n }\n\n const { module } = val;\n const range = module.isPreferSource\n ? val.position.source!\n : val.position.transformed;\n\n return (\n <Tooltip title={`${module.path}, line ${range.start.line}`}>\n <Button\n type=\"link\"\n onClick={() => setEditorData(module, [range], range.start.line)}\n >\n Move To\n </Button>\n </Tooltip>\n );\n}\n\nfunction useSearchCell<Data>(dataIndex: string): ColumnType<Data> {\n const [searchText, setSearchText] = useState('');\n const [searchedColumn, setSearchedColumn] = useState('');\n const searchInput = useRef<InputRef>(null);\n\n const handleSearch = (\n selectedKeys: string[],\n confirm: (param?: FilterConfirmProps) => void,\n dataIndex: string,\n ) => {\n confirm();\n setSearchText(selectedKeys[0]);\n setSearchedColumn(dataIndex);\n };\n\n const handleReset = (clearFilters: () => void) => {\n clearFilters();\n setSearchText('');\n };\n\n return {\n filterDropdown: ({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n close,\n }) => (\n <div style={{ padding: 8 }} onKeyDown={(e) => e.stopPropagation()}>\n <Input\n ref={searchInput}\n placeholder={`Search ${dataIndex}`}\n value={selectedKeys[0]}\n onChange={(e) =>\n setSelectedKeys(e.target.value ? [e.target.value] : [])\n }\n onPressEnter={() =>\n handleSearch(selectedKeys as string[], confirm, dataIndex)\n }\n style={{ marginBottom: 8, display: 'block' }}\n />\n <Space>\n <Button\n type=\"primary\"\n onClick={() =>\n handleSearch(selectedKeys as string[], confirm, dataIndex)\n }\n icon={<SearchOutlined />}\n size=\"small\"\n style={{ width: 90 }}\n >\n Search\n </Button>\n <Button\n onClick={() => clearFilters && handleReset(clearFilters)}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n </Button>\n <Button type=\"link\" size=\"small\" onClick={close}>\n close\n </Button>\n </Space>\n </div>\n ),\n filterIcon: (filtered: boolean) => (\n <SearchOutlined style={{ color: filtered ? '#1890ff' : undefined }} />\n ),\n onFilter: (value, record): boolean => {\n // @ts-ignore\n return record[dataIndex]\n .toString()\n .toLowerCase()\n .includes((value as string).toLowerCase());\n },\n render: (text: string) => {\n return searchedColumn === dataIndex ? (\n <Highlighter\n highlightStyle={{ backgroundColor: '#ffc069', padding: 0 }}\n searchWords={[searchText]}\n autoEscape\n textToHighlight={text ? text.toString() : ''}\n />\n ) : (\n text\n );\n },\n };\n}\n\nexport const SideEffectTable: React.FC<TableProps> = ({\n module,\n moduleGraph,\n setEditorData,\n}) => {\n interface SideEffectDataRowData {\n key: number;\n name: string;\n identifier: SDK.SourceRange;\n declaration?: SDK.StatementInstance;\n children?: SideEffectDataRowData[];\n }\n\n const sideEffects = useMemo(\n () => moduleGraph.getModuleGraphModule(module)!.getSideEffects(),\n [module],\n );\n const dataSource = sideEffects\n .map(({ variable, name, identifier }, i): SideEffectDataRowData => {\n return {\n key: i,\n name,\n identifier: module.isPreferSource\n ? identifier.position.source!\n : identifier.position.transformed,\n declaration: variable?.identifier,\n };\n })\n .sort((pre, next) => {\n // 名称相同则看行数\n if (pre.name === next.name) {\n return pre.identifier.start.line! > next.identifier.start.line!\n ? 1\n : -1;\n }\n\n // 名称不同则比较名称\n return pre.name > next.name ? 1 : -1;\n })\n .reduce((ans, item) => {\n const lastItem = ans[ans.length - 1];\n\n if (!lastItem || lastItem.name !== item.name) {\n ans.push(item);\n return ans;\n }\n\n if (!lastItem.children) {\n lastItem.children = [];\n }\n\n lastItem.children.push(item);\n return ans;\n }, [] as SideEffectDataRowData[]);\n\n const columns: ColumnType<any>[] = [\n {\n title: 'Name',\n dataIndex: 'name',\n key: 'name',\n align: 'center',\n ...useSearchCell<SDK.ExportData>('name'),\n },\n {\n title: 'SideEffect',\n dataIndex: 'identifier',\n key: 'identifier',\n align: 'center',\n render: (val: SDK.SourceRange) => {\n return (\n <Tooltip title={`Current File line ${val.start.line}`}>\n <Button\n type=\"link\"\n onClick={() => setEditorData(module, [val], val.start.line)}\n >\n Move To\n </Button>\n </Tooltip>\n );\n },\n },\n {\n title: 'Declaration',\n dataIndex: 'declaration',\n key: 'declaration',\n align: 'center',\n render: (val: SDK.StatementInstance) => {\n return getDeclarationElement(val, setEditorData);\n },\n },\n ];\n\n const titleInfo = (\n <React.Fragment>\n <Space style={{ fontWeight: 400 }}>\n Import\n <Typography.Text strong>{dataSource.length}</Typography.Text>\n variables\n <Divider type=\"vertical\" />\n <Typography.Text strong>{sideEffects.length}</Typography.Text>\n sideEffects\n </Space>\n </React.Fragment>\n );\n\n return (\n <Card\n style={{ marginBottom: 10 }}\n title={titleInfo}\n className=\"tree-shaking-export-table\"\n >\n <Table\n size=\"small\"\n dataSource={dataSource}\n columns={columns}\n pagination={false}\n scroll={{ y: tableHeight }}\n />\n </Card>\n );\n};\n\nexport const ExportTable: React.FC<TableProps> = ({\n module,\n moduleGraph,\n setEditorData,\n}) => {\n const exportsData = useMemo(\n () => moduleGraph.getModuleGraphModule(module)!.getExports(),\n [module],\n );\n const allUnUsedExports = exportsData.filter(\n (item) => item.getSideEffects().length === 0,\n );\n const titleInfo = (\n <React.Fragment>\n <Space style={{ fontWeight: 400 }}>\n Export\n <Typography.Text strong>{exportsData.length}</Typography.Text>\n </Space>\n {exportsData.length > 0 ? (\n <>\n <Divider type=\"vertical\" />\n <Typography.Text style={{ fontWeight: 400 }} code>\n <Typography.Text>Unused</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text strong>{allUnUsedExports.length}</Typography.Text>\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text style={{ fontWeight: 400 }} code>\n <Typography.Text>Used</Typography.Text>\n <Divider type=\"vertical\" />\n <Typography.Text strong>\n {exportsData.length - allUnUsedExports.length}\n </Typography.Text>\n </Typography.Text>\n </>\n ) : (\n ''\n )}\n </React.Fragment>\n );\n\n interface RowData {\n key: number;\n name: string;\n declaration?: SDK.StatementInstance;\n used: {\n module: SDK.ModuleInstance;\n range: SDK.SourceRange;\n }[];\n }\n\n const dataSource: RowData[] = exportsData.map((item, i) => {\n const { variable } = item;\n\n return {\n key: i,\n name: item.name,\n declaration: variable?.identifier,\n used: item\n .getSideEffects()\n .map(({ module, identifier }) => {\n const range = module?.isPreferSource\n ? identifier.position.source\n : identifier.position.transformed;\n\n if (!module || !range) {\n return;\n }\n\n return {\n module,\n range,\n };\n })\n .filter(isDef),\n };\n });\n\n const columns: ColumnType<any>[] = [\n {\n title: 'Name',\n dataIndex: 'name',\n key: 'name',\n align: 'center',\n ...useSearchCell<SDK.ExportInstance>('name'),\n },\n {\n title: 'Declaration',\n dataIndex: 'declaration',\n key: 'declaration',\n align: 'center',\n render: (val?: SDK.StatementInstance) => {\n return getDeclarationElement(val, setEditorData);\n },\n },\n {\n title: 'Info',\n dataIndex: 'used',\n key: 'used',\n align: 'center',\n sorter: (a: RowData, b: RowData) => a.used.length - b.used.length,\n sortDirections: ['descend', 'ascend'],\n render: (val: RowData['used']) => <span>Used {val.length} times</span>,\n },\n ];\n\n const expandElement = (data: any) => {\n return (\n <div className=\"tree-shaking-side-effect-list\">\n <Typography.Text>List of SideEffect:</Typography.Text>\n {data.used.map(({ module, range }: any) => (\n <Tooltip key={module.id} title={`${module.path}:${range.start.line}`}>\n <Button\n className=\"tree-shaking-side-effect-list-item\"\n type=\"link\"\n onClick={() => {\n setEditorData(module, [range], range.start.line);\n }}\n >\n {`${ellipsisPath(module.path)}:${range.start.line}`}\n </Button>\n </Tooltip>\n ))}\n </div>\n );\n };\n\n return (\n <Card title={titleInfo} className=\"tree-shaking-export-table\">\n <Table\n size=\"small\"\n dataSource={dataSource}\n columns={columns}\n pagination={false}\n scroll={{ y: tableHeight }}\n expandable={{\n expandedRowRender: expandElement,\n rowExpandable: (val: any) => val.used.length > 0,\n }}\n />\n </Card>\n );\n};\n\nexport const TreeShakingTable: React.FC<TableProps> = (props) => {\n return props.kind === 'side-effect' ? (\n <SideEffectTable {...props} />\n ) : (\n <ExportTable {...props} />\n );\n};\n"],"names":["tableHeight","getDeclarationElement","val","setEditorData","module","range","Tooltip","Button","useSearchCell","dataIndex","searchText","setSearchText","useState","searchedColumn","setSearchedColumn","searchInput","useRef","handleSearch","selectedKeys","confirm","handleReset","clearFilters","setSelectedKeys","close","e","Input","Space","SearchOutlined","filtered","undefined","value","record","text","Highlighter","SideEffectTable","moduleGraph","sideEffects","useMemo","dataSource","variable","name","identifier","i","pre","next","ans","item","lastItem","columns","titleInfo","React","Typography","Divider","Card","Table","ExportTable","exportsData","allUnUsedExports","isDef","a","b","expandElement","data","ellipsisPath","TreeShakingTable","props"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export * from "./constants.mjs";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import { InboxOutlined } from "@ant-design/icons";
3
4
  import { Spin, Upload, message } from "antd";
@@ -5,7 +6,6 @@ import { useState } from "react";
5
6
  import { readJSONByFileReader } from "../../utils/index.mjs";
6
7
  import { isRspackStats } from "../../utils/stats.mjs";
7
8
  import { handleRsdoctorManifest, handleRspackStats } from "./utils.mjs";
8
- export * from "./constants.mjs";
9
9
  const Component = ()=>{
10
10
  const [loading, setLoading] = useState(false);
11
11
  const handleFileUpload = async (file)=>{
@@ -1,3 +1,4 @@
1
+ export * from "./constants.mjs";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import "react";
3
4
  import { LoaderAnalysis } from "../../../components/Loader/Analysis/index.mjs";
@@ -6,8 +7,7 @@ import { Card } from "../../../components/Card/index.mjs";
6
7
  import { Popover, Space, Tag, Typography, theme } from "antd";
7
8
  import { ExclamationCircleOutlined } from "@ant-design/icons";
8
9
  import { t } from "i18next";
9
- export * from "./constants.mjs";
10
- const { useToken } = theme;
10
+ const { useToken: useToken } = theme;
11
11
  const Page = ()=>{
12
12
  const { token } = useToken();
13
13
  return /*#__PURE__*/ jsx(Card, {
@@ -1 +1 @@
1
- {"version":3,"file":"pages/WebpackLoaders/Analysis/index.mjs","sources":["../../../../src/pages/WebpackLoaders/Analysis/index.tsx"],"sourcesContent":["import React from 'react';\nimport { LoaderAnalysis } from '../../../components/Loader/Analysis';\nimport { WebpackConfigurationViewer } from '../../../components/Configuration';\nimport { Card } from '../../../components/Card';\nimport { Popover, Space, Tag, theme, Typography } from 'antd';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\nimport { t } from 'i18next';\nconst { useToken } = theme;\n\nexport const Page: React.FC = () => {\n const { token } = useToken();\n\n return (\n <Card\n title={\n <Space align=\"baseline\">\n <Typography.Title level={5} style={{ margin: 0 }}>\n Loader Analysis\n </Typography.Title>\n <Popover\n content={\n <div>\n {t('AsyncLoaderInfo')}\n <a\n href=\"https://rsdoctor.rs/guide/more/faq#cssextractrspackplugin-%E7%9A%84-loader-%E8%80%97%E6%97%B6%E8%BF%87%E9%95%BF%E9%97%AE%E9%A2%98\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {t('Details')}\n </a>\n </div>\n }\n title=\"Info\"\n >\n <Tag icon={<ExclamationCircleOutlined />} color=\"warning\">\n Info\n </Tag>\n </Popover>\n </Space>\n }\n extra={<WebpackConfigurationViewer defaultKeys={['module', 'resolve']} />}\n bodyStyle={{ paddingTop: token.padding, height: 800 }}\n >\n <LoaderAnalysis />\n </Card>\n );\n};\n\nexport * from './constants';\n"],"names":["useToken","theme","Page","token","Card","Space","Typography","Popover","t","Tag","ExclamationCircleOutlined","WebpackConfigurationViewer","LoaderAnalysis"],"mappings":";;;;;;;;;AAOA,MAAM,EAAEA,QAAQ,EAAE,GAAGC;AAEd,MAAMC,OAAiB;IAC5B,MAAM,EAAEC,KAAK,EAAE,GAAGH;IAElB,OAAO,WAAP,GACE,IAACI,MAAIA;QACH,qBACE,KAACC,OAAKA;YAAC,OAAM;;8BACX,IAACC,WAAW,KAAK;oBAAC,OAAO;oBAAG,OAAO;wBAAE,QAAQ;oBAAE;8BAAG;;8BAGlD,IAACC,SAAOA;oBACN,uBACE,KAAC;;4BACEC,EAAE;0CACH,IAAC;gCACC,MAAK;gCACL,QAAO;gCACP,KAAI;0CAEHA,EAAE;;;;oBAIT,OAAM;8BAEN,kBAACC,KAAGA;wBAAC,oBAAM,IAACC,2BAAyBA,CAAAA;wBAAK,OAAM;kCAAU;;;;;QAMhE,qBAAO,IAACC,4BAA0BA;YAAC,aAAa;gBAAC;gBAAU;aAAU;;QACrE,WAAW;YAAE,YAAYR,MAAM,OAAO;YAAE,QAAQ;QAAI;kBAEpD,kBAACS,gBAAcA,CAAAA;;AAGrB"}
1
+ {"version":3,"file":"pages/WebpackLoaders/Analysis/index.mjs","sources":["../../../../src/pages/WebpackLoaders/Analysis/index.tsx"],"sourcesContent":["import React from 'react';\nimport { LoaderAnalysis } from '../../../components/Loader/Analysis';\nimport { WebpackConfigurationViewer } from '../../../components/Configuration';\nimport { Card } from '../../../components/Card';\nimport { Popover, Space, Tag, theme, Typography } from 'antd';\nimport { ExclamationCircleOutlined } from '@ant-design/icons';\nimport { t } from 'i18next';\nconst { useToken } = theme;\n\nexport const Page: React.FC = () => {\n const { token } = useToken();\n\n return (\n <Card\n title={\n <Space align=\"baseline\">\n <Typography.Title level={5} style={{ margin: 0 }}>\n Loader Analysis\n </Typography.Title>\n <Popover\n content={\n <div>\n {t('AsyncLoaderInfo')}\n <a\n href=\"https://rsdoctor.rs/guide/more/faq#cssextractrspackplugin-%E7%9A%84-loader-%E8%80%97%E6%97%B6%E8%BF%87%E9%95%BF%E9%97%AE%E9%A2%98\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {t('Details')}\n </a>\n </div>\n }\n title=\"Info\"\n >\n <Tag icon={<ExclamationCircleOutlined />} color=\"warning\">\n Info\n </Tag>\n </Popover>\n </Space>\n }\n extra={<WebpackConfigurationViewer defaultKeys={['module', 'resolve']} />}\n bodyStyle={{ paddingTop: token.padding, height: 800 }}\n >\n <LoaderAnalysis />\n </Card>\n );\n};\n\nexport * from './constants';\n"],"names":["useToken","theme","Page","token","Card","Space","Typography","Popover","t","Tag","ExclamationCircleOutlined","WebpackConfigurationViewer","LoaderAnalysis"],"mappings":";;;;;;;;;AAOA,MAAM,EAAEA,UAAAA,QAAQ,EAAE,GAAGC;AAEd,MAAMC,OAAiB;IAC5B,MAAM,EAAEC,KAAK,EAAE,GAAGH;IAElB,OAAO,WAAP,GACE,IAACI,MAAIA;QACH,qBACE,KAACC,OAAKA;YAAC,OAAM;;8BACX,IAACC,WAAW,KAAK;oBAAC,OAAO;oBAAG,OAAO;wBAAE,QAAQ;oBAAE;8BAAG;;8BAGlD,IAACC,SAAOA;oBACN,uBACE,KAAC;;4BACEC,EAAE;0CACH,IAAC;gCACC,MAAK;gCACL,QAAO;gCACP,KAAI;0CAEHA,EAAE;;;;oBAIT,OAAM;8BAEN,kBAACC,KAAGA;wBAAC,oBAAM,IAACC,2BAAyBA,CAAAA;wBAAK,OAAM;kCAAU;;;;;QAMhE,qBAAO,IAACC,4BAA0BA;YAAC,aAAa;gBAAC;gBAAU;aAAU;;QACrE,WAAW;YAAE,YAAYR,MAAM,OAAO;YAAE,QAAQ;QAAI;kBAEpD,kBAACS,gBAAcA,CAAAA;;AAGrB"}
@@ -1,3 +1,4 @@
1
+ export * from "./constants.mjs";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import "react";
3
4
  import { WebpackConfigurationViewer } from "../../../components/Configuration/index.mjs";
@@ -6,7 +7,6 @@ import { LoaderChart } from "../../../components/Charts/index.mjs";
6
7
  import { Popover, Space, Tag, Typography } from "antd/lib";
7
8
  import { ExclamationCircleOutlined } from "@ant-design/icons";
8
9
  import { useTranslation } from "react-i18next";
9
- export * from "./constants.mjs";
10
10
  const Page = ()=>{
11
11
  const { t } = useTranslation();
12
12
  return /*#__PURE__*/ jsx(Card, {
@@ -1,3 +1,4 @@
1
+ export * from "./constants.mjs";
1
2
  import { jsx, jsxs } from "react/jsx-runtime";
2
3
  import { ApiOutlined, PartitionOutlined } from "@ant-design/icons";
3
4
  import { SDK } from "@rsdoctor/types";
@@ -8,7 +9,6 @@ import { ServerAPIProvider } from "../../components/Manifest/index.mjs";
8
9
  import { WebpackPluginsDataTable } from "../../components/Plugins/webpack.mjs";
9
10
  import { Size } from "../../constants.mjs";
10
11
  import "./index.css";
11
- export * from "./constants.mjs";
12
12
  const Page = ()=>{
13
13
  const [selectedTapNames, setSelectedTapNames] = useState([]);
14
14
  const [selectedHooks, setSelectedHooks] = useState([]);
@@ -9,4 +9,4 @@ import * as __rspack_external__Resources_RuleIndex_index_mjs_458631cc from "./Re
9
9
  import * as __rspack_external__TreeShaking_index_mjs_1daf5cdb from "./TreeShaking/index.mjs";
10
10
  import * as __rspack_external__Resources_BundleDiff_index_mjs_3b739fff from "./Resources/BundleDiff/index.mjs";
11
11
  import * as __rspack_external__Uploader_index_mjs_e3f3ea84 from "./Uploader/index.mjs";
12
- export { __rspack_external__Resources_BundleDiff_index_mjs_3b739fff as BundleDiff, __rspack_external__BundleSize_index_mjs_d0a2fb23 as BundleSize, __rspack_external__WebpackLoaders_Analysis_index_mjs_a1d3659a as LoaderFiles, __rspack_external__WebpackLoaders_Overall_index_mjs_7fb4d495 as LoaderTimeline, __rspack_external__ModuleAnalyze_index_mjs_4385c65f as ModuleAnalyze, __rspack_external__ModuleResolve_index_mjs_2463b148 as ModuleResolve, __rspack_external__Overall_index_mjs_0ded43f9 as Overall, __rspack_external__WebpackPlugins_index_mjs_a5b22b8e as PluginsAnalyze, __rspack_external__Resources_RuleIndex_index_mjs_458631cc as RuleIndex, __rspack_external__TreeShaking_index_mjs_1daf5cdb as TreeShaking, __rspack_external__Uploader_index_mjs_e3f3ea84 as Uploader };
12
+ export { __rspack_external__BundleSize_index_mjs_d0a2fb23 as BundleSize, __rspack_external__ModuleAnalyze_index_mjs_4385c65f as ModuleAnalyze, __rspack_external__ModuleResolve_index_mjs_2463b148 as ModuleResolve, __rspack_external__Overall_index_mjs_0ded43f9 as Overall, __rspack_external__Resources_BundleDiff_index_mjs_3b739fff as BundleDiff, __rspack_external__Resources_RuleIndex_index_mjs_458631cc as RuleIndex, __rspack_external__TreeShaking_index_mjs_1daf5cdb as TreeShaking, __rspack_external__Uploader_index_mjs_e3f3ea84 as Uploader, __rspack_external__WebpackLoaders_Analysis_index_mjs_a1d3659a as LoaderFiles, __rspack_external__WebpackLoaders_Overall_index_mjs_7fb4d495 as LoaderTimeline, __rspack_external__WebpackPlugins_index_mjs_a5b22b8e as PluginsAnalyze };
@@ -37,6 +37,6 @@ const cn = {
37
37
  Collapse: '收起'
38
38
  };
39
39
  const i18n_cn = cn;
40
- export { i18n_cn as default };
40
+ export default i18n_cn;
41
41
 
42
42
  //# sourceMappingURL=cn.mjs.map
@@ -37,6 +37,6 @@ const en = {
37
37
  Collapse: 'Collapse'
38
38
  };
39
39
  const i18n_en = en;
40
- export { i18n_en as default };
40
+ export default i18n_en;
41
41
 
42
42
  //# sourceMappingURL=en.mjs.map
@@ -32,6 +32,6 @@ i18next.use(initReactI18next).init({
32
32
  }
33
33
  });
34
34
  const i18n = i18next;
35
- export { i18n as default };
35
+ export default i18n;
36
36
 
37
37
  //# sourceMappingURL=index.mjs.map
@@ -1,5 +1,5 @@
1
1
  import { Loader } from "@rsdoctor/utils/common";
2
- const { findLoaderTotalTiming, getLoaderCosts } = Loader;
2
+ const { findLoaderTotalTiming: findLoaderTotalTiming, getLoaderCosts: getLoaderCosts } = Loader;
3
3
  function flattenLoaderData(loaderData) {
4
4
  return loaderData.flatMap((e)=>e.loaders);
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils/loader.mjs","sources":["../../src/utils/loader.ts"],"sourcesContent":["import { Loader } from '@rsdoctor/utils/common';\nimport { SDK } from '@rsdoctor/types';\n\nconst { findLoaderTotalTiming, getLoaderCosts } = Loader;\nexport { findLoaderTotalTiming, getLoaderCosts };\n\nexport function flattenLoaderData(loaderData: SDK.LoaderData) {\n return loaderData.flatMap((e) => e.loaders);\n}\n\nexport function filterLoaders(\n loaderData: SDK.ResourceLoaderData,\n keyword: string,\n loaderNames: string[],\n layer?: string,\n) {\n return loaderData.loaders.filter((item) => {\n return filterLoader(\n loaderData.resource.path,\n item.loader,\n keyword,\n loaderNames,\n loaderData.resource.layer,\n layer,\n );\n });\n}\n\nexport function filterLoader(\n resourcePath: string,\n loader: string,\n keyword: string,\n loaderNames: string[],\n resorceLayer?: string,\n layer?: string,\n) {\n if (keyword) {\n if (resourcePath.indexOf(keyword) === -1) return false;\n }\n\n if (resorceLayer && layer && resorceLayer !== layer) {\n return false;\n }\n\n if (loaderNames?.length) {\n if (!loaderNames.includes(loader)) return false;\n }\n\n return true;\n}\n"],"names":["findLoaderTotalTiming","getLoaderCosts","Loader","flattenLoaderData","loaderData","e","filterLoaders","keyword","loaderNames","layer","item","filterLoader","resourcePath","loader","resorceLayer"],"mappings":";AAGA,MAAM,EAAEA,qBAAqB,EAAEC,cAAc,EAAE,GAAGC;AAG3C,SAASC,kBAAkBC,UAA0B;IAC1D,OAAOA,WAAW,OAAO,CAAC,CAACC,IAAMA,EAAE,OAAO;AAC5C;AAEO,SAASC,cACdF,UAAkC,EAClCG,OAAe,EACfC,WAAqB,EACrBC,KAAc;IAEd,OAAOL,WAAW,OAAO,CAAC,MAAM,CAAC,CAACM,OACzBC,aACLP,WAAW,QAAQ,CAAC,IAAI,EACxBM,KAAK,MAAM,EACXH,SACAC,aACAJ,WAAW,QAAQ,CAAC,KAAK,EACzBK;AAGN;AAEO,SAASE,aACdC,YAAoB,EACpBC,MAAc,EACdN,OAAe,EACfC,WAAqB,EACrBM,YAAqB,EACrBL,KAAc;IAEd,IAAIF,SACF;QAAA,IAAIK,AAAkC,OAAlCA,aAAa,OAAO,CAACL,UAAiB,OAAO;IAAK;IAGxD,IAAIO,gBAAgBL,SAASK,iBAAiBL,OAC5C,OAAO;IAGT,IAAID,aAAa,QACf;QAAA,IAAI,CAACA,YAAY,QAAQ,CAACK,SAAS,OAAO;IAAK;IAGjD,OAAO;AACT"}
1
+ {"version":3,"file":"utils/loader.mjs","sources":["../../src/utils/loader.ts"],"sourcesContent":["import { Loader } from '@rsdoctor/utils/common';\nimport { SDK } from '@rsdoctor/types';\n\nconst { findLoaderTotalTiming, getLoaderCosts } = Loader;\nexport { findLoaderTotalTiming, getLoaderCosts };\n\nexport function flattenLoaderData(loaderData: SDK.LoaderData) {\n return loaderData.flatMap((e) => e.loaders);\n}\n\nexport function filterLoaders(\n loaderData: SDK.ResourceLoaderData,\n keyword: string,\n loaderNames: string[],\n layer?: string,\n) {\n return loaderData.loaders.filter((item) => {\n return filterLoader(\n loaderData.resource.path,\n item.loader,\n keyword,\n loaderNames,\n loaderData.resource.layer,\n layer,\n );\n });\n}\n\nexport function filterLoader(\n resourcePath: string,\n loader: string,\n keyword: string,\n loaderNames: string[],\n resorceLayer?: string,\n layer?: string,\n) {\n if (keyword) {\n if (resourcePath.indexOf(keyword) === -1) return false;\n }\n\n if (resorceLayer && layer && resorceLayer !== layer) {\n return false;\n }\n\n if (loaderNames?.length) {\n if (!loaderNames.includes(loader)) return false;\n }\n\n return true;\n}\n"],"names":["findLoaderTotalTiming","getLoaderCosts","Loader","flattenLoaderData","loaderData","e","filterLoaders","keyword","loaderNames","layer","item","filterLoader","resourcePath","loader","resorceLayer"],"mappings":";AAGA,MAAM,EAAEA,uBAAAA,qBAAqB,EAAEC,gBAAAA,cAAc,EAAE,GAAGC;AAG3C,SAASC,kBAAkBC,UAA0B;IAC1D,OAAOA,WAAW,OAAO,CAAC,CAACC,IAAMA,EAAE,OAAO;AAC5C;AAEO,SAASC,cACdF,UAAkC,EAClCG,OAAe,EACfC,WAAqB,EACrBC,KAAc;IAEd,OAAOL,WAAW,OAAO,CAAC,MAAM,CAAC,CAACM,OACzBC,aACLP,WAAW,QAAQ,CAAC,IAAI,EACxBM,KAAK,MAAM,EACXH,SACAC,aACAJ,WAAW,QAAQ,CAAC,KAAK,EACzBK;AAGN;AAEO,SAASE,aACdC,YAAoB,EACpBC,MAAc,EACdN,OAAe,EACfC,WAAqB,EACrBM,YAAqB,EACrBL,KAAc;IAEd,IAAIF,SACF;QAAA,IAAIK,AAAkC,OAAlCA,aAAa,OAAO,CAACL,UAAiB,OAAO;IAAK;IAGxD,IAAIO,gBAAgBL,SAASK,iBAAiBL,OAC5C,OAAO;IAGT,IAAID,aAAa,QACf;QAAA,IAAI,CAACA,YAAY,QAAQ,CAACK,SAAS,OAAO;IAAK;IAGjD,OAAO;AACT"}
@@ -1,5 +1,5 @@
1
1
  import { Time } from "@rsdoctor/utils/common";
2
- const { toFixedDigits, getUnit, formatCosts } = Time;
2
+ const { toFixedDigits: toFixedDigits, getUnit: getUnit, formatCosts: formatCosts } = Time;
3
3
  export { formatCosts, getUnit, toFixedDigits as toFixed };
4
4
 
5
5
  //# sourceMappingURL=time.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils/time.mjs","sources":["../../src/utils/time.ts"],"sourcesContent":["import { Time } from '@rsdoctor/utils/common';\n\nconst { toFixedDigits, getUnit, formatCosts } = Time;\n\nexport { toFixedDigits as toFixed, getUnit, formatCosts };\n"],"names":["toFixedDigits","getUnit","formatCosts","Time"],"mappings":";AAEA,MAAM,EAAEA,aAAa,EAAEC,OAAO,EAAEC,WAAW,EAAE,GAAGC"}
1
+ {"version":3,"file":"utils/time.mjs","sources":["../../src/utils/time.ts"],"sourcesContent":["import { Time } from '@rsdoctor/utils/common';\n\nconst { toFixedDigits, getUnit, formatCosts } = Time;\n\nexport { toFixedDigits as toFixed, getUnit, formatCosts };\n"],"names":["toFixedDigits","getUnit","formatCosts","Time"],"mappings":";AAEA,MAAM,EAAEA,eAAAA,aAAa,EAAEC,SAAAA,OAAO,EAAEC,aAAAA,WAAW,EAAE,GAAGC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdoctor/components",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "license": "MIT",
5
5
  "types": "dist/index.d.ts",
6
6
  "repository": {
@@ -39,9 +39,9 @@
39
39
  },
40
40
  "devDependencies": {
41
41
  "@rsbuild/plugin-check-syntax": "1.6.1",
42
- "@rsbuild/plugin-react": "^1.4.5",
43
- "@rsbuild/plugin-sass": "^1.5.0",
44
- "@rsbuild/plugin-svgr": "^1.2.4",
42
+ "@rsbuild/plugin-react": "^1.4.6",
43
+ "@rsbuild/plugin-sass": "^1.5.1",
44
+ "@rsbuild/plugin-svgr": "^1.3.1",
45
45
  "@types/node": "^22.8.1",
46
46
  "@types/path-browserify": "1.0.3",
47
47
  "@types/react": "^18.3.28",
@@ -61,7 +61,7 @@
61
61
  "dayjs": "1.11.19",
62
62
  "echarts": "^5.6.0",
63
63
  "echarts-for-react": "^3.0.6",
64
- "es-toolkit": "^1.44.0",
64
+ "es-toolkit": "^1.45.1",
65
65
  "i18next": "22.0.4",
66
66
  "monaco-editor": "0.49.0",
67
67
  "path-browserify": "1.0.1",
@@ -74,9 +74,9 @@
74
74
  "react-markdown": "^9.1.0",
75
75
  "socket.io-client": "4.8.1",
76
76
  "url-parse": "1.5.10",
77
- "@rsdoctor/types": "1.5.3",
78
- "@rsdoctor/graph": "1.5.3",
79
- "@rsdoctor/utils": "1.5.3"
77
+ "@rsdoctor/types": "1.5.4",
78
+ "@rsdoctor/utils": "1.5.4",
79
+ "@rsdoctor/graph": "1.5.4"
80
80
  },
81
81
  "peerDependencies": {
82
82
  "react": ">=18.3.1",