@rsdoctor/components 1.3.3 → 1.3.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/components/Alert/package-relation.mjs +1 -1
  2. package/dist/components/Alert/package-relation.mjs.map +1 -1
  3. package/dist/components/Alerts/bundle-alert.mjs +0 -1
  4. package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
  5. package/dist/components/Alerts/collapse.mjs +1 -1
  6. package/dist/components/Alerts/collapse.mjs.map +1 -1
  7. package/dist/components/Card/size.mjs +1 -1
  8. package/dist/components/Card/size.mjs.map +1 -1
  9. package/dist/components/Charts/TimelineCharts/index.mjs +1 -1
  10. package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
  11. package/dist/components/Charts/loader.mjs +1 -1
  12. package/dist/components/Charts/loader.mjs.map +1 -1
  13. package/dist/components/Charts/utils.mjs +1 -1
  14. package/dist/components/Charts/utils.mjs.map +1 -1
  15. package/dist/components/Loader/Analysis/files.mjs +1 -1
  16. package/dist/components/Loader/Analysis/files.mjs.map +1 -1
  17. package/dist/components/Manifest/api.mjs +1 -1
  18. package/dist/components/Manifest/api.mjs.map +1 -1
  19. package/dist/components/Overall/bundle_module.css +0 -1
  20. package/dist/components/Overall/bundle_module.css.map +1 -1
  21. package/dist/components/Overall/help-center_module.css +0 -2
  22. package/dist/components/Overall/help-center_module.css.map +1 -1
  23. package/dist/components/Overall/list_module.css +12 -2
  24. package/dist/components/Overall/list_module.css.map +1 -1
  25. package/dist/components/Overall/project_module.css +0 -1
  26. package/dist/components/Overall/project_module.css.map +1 -1
  27. package/dist/components/Plugins/webpack.mjs +1 -1
  28. package/dist/components/Plugins/webpack.mjs.map +1 -1
  29. package/dist/components/Resolver/analysis.mjs +1 -1
  30. package/dist/components/Resolver/analysis.mjs.map +1 -1
  31. package/dist/components/Title/index.mjs +2 -2
  32. package/dist/components/Title/index.mjs.map +1 -1
  33. package/dist/components/base/CodeViewer/utils.mjs +1 -1
  34. package/dist/components/base/CodeViewer/utils.mjs.map +1 -1
  35. package/dist/pages/BundleSize/components/asset.mjs +1 -1
  36. package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
  37. package/dist/pages/BundleSize/components/index.mjs +1 -1
  38. package/dist/pages/BundleSize/components/index.mjs.map +1 -1
  39. package/dist/pages/BundleSize/components/index_module.css +6 -2
  40. package/dist/pages/BundleSize/components/index_module.css.map +1 -1
  41. package/dist/pages/ModuleAnalyze/chunks.mjs +1 -1
  42. package/dist/pages/ModuleAnalyze/chunks.mjs.map +1 -1
  43. package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs +1 -1
  44. package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs.map +1 -1
  45. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs +1 -1
  46. package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
  47. package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs +1 -1
  48. package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs.map +1 -1
  49. package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs +1 -1
  50. package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs.map +1 -1
  51. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs +11 -2
  52. package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs.map +1 -1
  53. package/dist/pages/TreeShaking/index.css +28 -4
  54. package/dist/pages/TreeShaking/index.css.map +1 -1
  55. package/dist/pages/TreeShaking/utils.mjs +2 -2
  56. package/dist/pages/TreeShaking/utils.mjs.map +1 -1
  57. package/dist/utils/data/local.mjs +1 -1
  58. package/dist/utils/data/local.mjs.map +1 -1
  59. package/dist/utils/data/remote.mjs +1 -1
  60. package/dist/utils/data/remote.mjs.map +1 -1
  61. package/dist/utils/file.mjs +1 -1
  62. package/dist/utils/file.mjs.map +1 -1
  63. package/dist/utils/hooks.mjs +1 -1
  64. package/dist/utils/hooks.mjs.map +1 -1
  65. package/dist/utils/stats.mjs +1 -1
  66. package/dist/utils/stats.mjs.map +1 -1
  67. package/package.json +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/packages.mjs","sources":["webpack://@rsdoctor/components/./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 'lodash-es';\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
+ {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/packages.mjs","sources":["webpack://@rsdoctor/components/./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,7 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { InfoCircleOutlined, SearchOutlined } from "@ant-design/icons";
3
3
  import { Button, Divider, Input, Space, Table, Tag, Tooltip, Typography } from "antd";
4
- import { upperFirst } from "lodash-es";
4
+ import { upperFirst } from "es-toolkit/compat";
5
5
  import { useMemo, useRef, useState } from "react";
6
6
  import { Client } from "@rsdoctor/types";
7
7
  import { Color } from "../../../../constants.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/row.mjs","sources":["webpack://@rsdoctor/components/./src/pages/Resources/BundleDiff/DiffContainer/row.tsx"],"sourcesContent":["import { InfoCircleOutlined, SearchOutlined } from '@ant-design/icons';\nimport {\n Button,\n Divider,\n Input,\n InputRef,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport {\n ColumnGroupType,\n ColumnType,\n FilterConfirmProps,\n} from 'antd/es/table/interface';\nimport { upperFirst } from 'lodash-es';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { Client } from '@rsdoctor/types';\nimport { CompareFn } from 'antd/lib/table/interface';\nimport { Color } from '../../../../constants';\nimport {\n beautifyModulePath,\n formatPercent,\n formatSize,\n} from '../../../../utils';\nimport { ViewChanges } from './changes';\nimport { FileUpdateTypeTag, getUpdateType } from './modules';\nimport {\n BundleDiffComponentCardProps,\n BundleDiffTableAssetsData,\n BundleDiffTableModulesData,\n} from './types';\nimport { UpdateType } from './constants';\nimport { formatDiffSize } from './utils';\nimport { Graph } from '@rsdoctor/utils/common';\n\nexport const ModuleHashPattern = /[a-fA-F0-9]{20,}/;\n\nexport const getSizeColumnPropsForModuleRow = (\n key: 'baseline' | 'current',\n sizeKey: 'parsedSize' | 'sourceSize',\n sortByChanged?: boolean,\n): ColumnType<BundleDiffTableModulesData> => {\n const sortByChangedFn: CompareFn<any> = (a, b) =>\n (a.current?.size[sizeKey] || 0) -\n (a.baseline?.size[sizeKey] || 0) -\n (b.current?.size[sizeKey] || 0) +\n (b.baseline?.size[sizeKey] || 0);\n\n const sorterFn: CompareFn<any> = sortByChanged\n ? (a, b) => sortByChangedFn(a, b)\n : (a, b) => (a[key]?.size[sizeKey] || 0) - (b[key]?.size[sizeKey] || 0);\n\n return {\n width: 200,\n sorter: (a, b) => sorterFn(a, b),\n render: (_v, r) => {\n if (!r[key]) return '-';\n const size = r[key]!.size[sizeKey];\n return (\n <Space>\n <Typography.Text>{formatSize(size)}</Typography.Text>\n {key === 'current'\n ? formatDiffSize(\n r.baseline?.size[sizeKey] || 0,\n size,\n (r.baseline?.size[sizeKey] || 0) > size\n ? Client.RsdoctorClientDiffState.Down\n : Client.RsdoctorClientDiffState.Up,\n )\n : null}\n </Space>\n );\n },\n };\n};\n\nexport const getTargetColumnPropsForModuleRow = (\n key: 'baseline' | 'current',\n bModulesCount: number,\n cModulesCount: number,\n): ColumnGroupType<BundleDiffTableModulesData> => {\n const [sortByChanged, setSortByChanged] = useState(false);\n\n const isB = key === 'baseline';\n return {\n title: () => {\n const count = isB ? bModulesCount : cModulesCount;\n const title = upperFirst(key);\n const diff = Graph.diffSize(bModulesCount, cModulesCount);\n return (\n <div>\n <Typography.Text>{title}</Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n {title} modules is {count}\n </Typography.Text>\n {isB ? null : (\n <Typography.Text style={{ color: 'inherit' }}>\n Percent is {formatPercent(diff.percent)}\n </Typography.Text>\n )}\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400 }}\n >\n {count}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n </div>\n );\n },\n children: [\n {\n title: 'Source Size',\n ...getSizeColumnPropsForModuleRow(key, 'sourceSize', sortByChanged),\n },\n {\n title: 'Parsed Size',\n defaultSortOrder: isB ? undefined : 'descend',\n ...getSizeColumnPropsForModuleRow(key, 'parsedSize', sortByChanged),\n },\n ],\n filterSearch: true,\n filters: [\n {\n text: 'Show Changed',\n value: UpdateType.NotChanged,\n },\n {\n text: 'Show All',\n value: 'All',\n },\n ],\n onFilter(v, r) {\n if (v === UpdateType.NotChanged) {\n setSortByChanged(true);\n } else {\n setSortByChanged(false);\n }\n return v === UpdateType.NotChanged ? getUpdateType(r) !== v : true;\n },\n };\n};\n\nexport const ModuleRowForAsset: React.FC<\n { data: BundleDiffTableAssetsData } & Pick<\n BundleDiffComponentCardProps,\n 'baseline' | 'current'\n >\n> = ({ data, baseline, current }) => {\n const { modules: bTotalModules } = baseline.moduleGraph;\n const { modules: cTotalModules } = current.moduleGraph;\n const { chunks: bToTalChunks } = baseline.chunkGraph;\n const { chunks: cToTalChunks } = current.chunkGraph;\n const bRoot = baseline.root;\n const cRoot = current.root;\n\n const [searchText, setSearchText] = useState('');\n const searchInput = useRef<InputRef>(null);\n\n const handleSearch = (\n selectedKeys: string[],\n confirm: (param?: FilterConfirmProps) => void,\n ) => {\n confirm();\n setSearchText(selectedKeys[0]);\n };\n\n const handleReset = (clearFilters: () => void) => {\n clearFilters();\n setSearchText('');\n };\n\n const isBaseline = '__is_baseline__' as const;\n\n const bModules = useMemo(\n () =>\n data.baseline\n ? Graph.getModulesByAsset(data.baseline, bToTalChunks, bTotalModules)\n .map((e) => ({\n ...e,\n [isBaseline]: true,\n }))\n .filter((cModule) => !cModule.concatenationModules?.length)\n : [],\n [data, baseline],\n );\n const cModules = useMemo(\n () =>\n data.current\n ? Graph.getModulesByAsset(data.current, cToTalChunks, cTotalModules)\n .map((e) => ({\n ...e,\n [isBaseline]: false,\n }))\n .filter((cModule) => !cModule.concatenationModules?.length)\n : [],\n [data, current],\n );\n\n const getPathInfo = (r: BundleDiffTableModulesData) =>\n beautifyModulePath(r.path, r.__is_baseline__ ? bRoot : cRoot);\n\n const dataSource: BundleDiffTableModulesData[] = useMemo(() => {\n const mods = [...bModules, ...cModules];\n const map = new Map<string, BundleDiffTableModulesData>();\n\n // group by module.path\n mods.forEach((mod) => {\n const modPath =\n mod.webpackId?.replace(ModuleHashPattern, '') ||\n mod.path?.replace(ModuleHashPattern, '');\n let t: BundleDiffTableModulesData = map.get(modPath)!;\n\n if (!t) {\n t = { path: modPath };\n }\n\n if (mod[isBaseline]) {\n t.baseline = mod;\n } else {\n t.current = mod;\n }\n map.set(modPath, t);\n });\n\n return [...map.values()];\n }, [bModules, cModules, searchText]);\n\n const { bModulesCount, cModulesCount, totalCount } = useMemo(() => {\n const fileNameFilter = (e: BundleDiffTableModulesData) =>\n getPathInfo(e).alias.indexOf(searchText) > -1;\n\n let b = dataSource.filter((e) => e.baseline);\n let c = dataSource.filter((e) => e.current);\n let totalCount = dataSource.length;\n\n if (searchText) {\n b = b.filter(fileNameFilter);\n c = c.filter(fileNameFilter);\n totalCount = dataSource.filter(fileNameFilter).length;\n }\n\n return {\n bModulesCount: b.length,\n cModulesCount: c.length,\n totalCount,\n };\n }, [dataSource, searchText]);\n\n return (\n <Table\n dataSource={dataSource}\n rowKey={(e) => e.path}\n size=\"small\"\n pagination={{\n size: 'small',\n }}\n bordered\n scroll={{ x: 1500 }}\n columns={[\n {\n fixed: 'left',\n title: () => {\n return (\n <div>\n <Typography.Text>\n Modules of {`\"${data.alias}\"`}\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n filtered modules: {totalCount}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n total modules: {dataSource.length}\n </Typography.Text>\n </Space>\n }\n >\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {totalCount}/{dataSource.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n </div>\n );\n },\n filterDropdown({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) {\n return (\n <div\n style={{ padding: 8 }}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Input\n ref={searchInput}\n placeholder={`Search by file name`}\n value={selectedKeys[0]}\n onChange={(e) =>\n setSelectedKeys(e.target.value ? [e.target.value] : [])\n }\n onPressEnter={() =>\n handleSearch(selectedKeys as string[], confirm)\n }\n style={{ marginBottom: 8, display: 'block' }}\n />\n <Space>\n <Button\n type=\"primary\"\n onClick={() =>\n handleSearch(selectedKeys as string[], confirm)\n }\n icon={<SearchOutlined />}\n size=\"small\"\n style={{ width: 90 }}\n >\n Search\n </Button>\n <Button\n onClick={() => {\n clearFilters && handleReset(clearFilters);\n setSelectedKeys([]);\n handleSearch([], confirm);\n }}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n </Button>\n </Space>\n </div>\n );\n },\n filterSearch: true,\n filterIcon: (filtered) => (\n <Space>\n <Typography.Text\n type={searchText ? undefined : 'secondary'}\n style={{ fontWeight: 400 }}\n >\n {searchText || 'Search by file name'}\n </Typography.Text>\n <SearchOutlined\n style={{ color: filtered ? Color.Blue : undefined }}\n />\n </Space>\n ),\n onFilterDropdownOpenChange: (visible) => {\n if (visible) {\n setTimeout(() => searchInput.current?.focus(), 100);\n }\n },\n onFilter(v, r) {\n return getPathInfo(r).alias.indexOf(v as string) > -1;\n },\n render: (_v, r) => {\n const { alias, inNodeModules } = getPathInfo(r);\n return (\n <Space>\n <Tooltip title={r.path}>\n <Typography.Text copyable={{ text: r.path }}>\n {alias}\n </Typography.Text>\n </Tooltip>\n {inNodeModules ? <Tag color=\"warning\">node_modules</Tag> : null}\n <FileUpdateTypeTag type={getUpdateType(r)} />\n </Space>\n );\n },\n },\n getTargetColumnPropsForModuleRow(\n 'current',\n bModulesCount,\n cModulesCount,\n ),\n getTargetColumnPropsForModuleRow(\n 'baseline',\n bModulesCount,\n cModulesCount,\n ),\n {\n title: 'Actions',\n width: 200,\n render: (_v, r) => {\n return (\n <Space direction=\"vertical\" style={{ maxWidth: 170 }}>\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]?.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 </Space>\n );\n },\n },\n ]}\n />\n );\n};\n"],"names":["ModuleHashPattern","getSizeColumnPropsForModuleRow","key","sizeKey","sortByChanged","sortByChangedFn","a","b","_a_current","_a_baseline","_b_current","_b_baseline","sorterFn","_a_key","_b_key","_v","r","_r_baseline","_r_baseline1","size","Space","Typography","formatSize","formatDiffSize","Client","getTargetColumnPropsForModuleRow","bModulesCount","cModulesCount","setSortByChanged","useState","isB","count","title","upperFirst","diff","Graph","Divider","Tooltip","formatPercent","InfoCircleOutlined","undefined","UpdateType","v","getUpdateType","ModuleRowForAsset","data","baseline","current","bTotalModules","cTotalModules","bToTalChunks","cToTalChunks","bRoot","cRoot","searchText","setSearchText","searchInput","useRef","handleSearch","selectedKeys","confirm","handleReset","clearFilters","isBaseline","bModules","useMemo","e","cModule","_cModule_concatenationModules","cModules","getPathInfo","beautifyModulePath","dataSource","mods","map","Map","mod","_mod_webpackId","_mod_path","modPath","t","totalCount","fileNameFilter","c","Table","setSelectedKeys","Input","Button","SearchOutlined","filtered","Color","visible","setTimeout","_searchInput_current","alias","inNodeModules","Tag","FileUpdateTypeTag","_baseline_moduleCodeMap_r_baseline_id","_current_moduleCodeMap_r_current_id","_r_current","_baseline_moduleCodeMap_r_baseline_id1","_current_moduleCodeMap_r_current_id1","_r_current1","_baseline_moduleCodeMap_r_baseline_id2","_r_baseline2","_current_moduleCodeMap_r_current_id2","_r_current2","ViewChanges"],"mappings":"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"}
1
+ {"version":3,"file":"pages/Resources/BundleDiff/DiffContainer/row.mjs","sources":["webpack://@rsdoctor/components/./src/pages/Resources/BundleDiff/DiffContainer/row.tsx"],"sourcesContent":["import { InfoCircleOutlined, SearchOutlined } from '@ant-design/icons';\nimport {\n Button,\n Divider,\n Input,\n InputRef,\n Space,\n Table,\n Tag,\n Tooltip,\n Typography,\n} from 'antd';\nimport {\n ColumnGroupType,\n ColumnType,\n FilterConfirmProps,\n} from 'antd/es/table/interface';\nimport { upperFirst } from 'es-toolkit/compat';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { Client } from '@rsdoctor/types';\nimport { CompareFn } from 'antd/lib/table/interface';\nimport { Color } from '../../../../constants';\nimport {\n beautifyModulePath,\n formatPercent,\n formatSize,\n} from '../../../../utils';\nimport { ViewChanges } from './changes';\nimport { FileUpdateTypeTag, getUpdateType } from './modules';\nimport {\n BundleDiffComponentCardProps,\n BundleDiffTableAssetsData,\n BundleDiffTableModulesData,\n} from './types';\nimport { UpdateType } from './constants';\nimport { formatDiffSize } from './utils';\nimport { Graph } from '@rsdoctor/utils/common';\n\nexport const ModuleHashPattern = /[a-fA-F0-9]{20,}/;\n\nexport const getSizeColumnPropsForModuleRow = (\n key: 'baseline' | 'current',\n sizeKey: 'parsedSize' | 'sourceSize',\n sortByChanged?: boolean,\n): ColumnType<BundleDiffTableModulesData> => {\n const sortByChangedFn: CompareFn<any> = (a, b) =>\n (a.current?.size[sizeKey] || 0) -\n (a.baseline?.size[sizeKey] || 0) -\n (b.current?.size[sizeKey] || 0) +\n (b.baseline?.size[sizeKey] || 0);\n\n const sorterFn: CompareFn<any> = sortByChanged\n ? (a, b) => sortByChangedFn(a, b)\n : (a, b) => (a[key]?.size[sizeKey] || 0) - (b[key]?.size[sizeKey] || 0);\n\n return {\n width: 200,\n sorter: (a, b) => sorterFn(a, b),\n render: (_v, r) => {\n if (!r[key]) return '-';\n const size = r[key]!.size[sizeKey];\n return (\n <Space>\n <Typography.Text>{formatSize(size)}</Typography.Text>\n {key === 'current'\n ? formatDiffSize(\n r.baseline?.size[sizeKey] || 0,\n size,\n (r.baseline?.size[sizeKey] || 0) > size\n ? Client.RsdoctorClientDiffState.Down\n : Client.RsdoctorClientDiffState.Up,\n )\n : null}\n </Space>\n );\n },\n };\n};\n\nexport const getTargetColumnPropsForModuleRow = (\n key: 'baseline' | 'current',\n bModulesCount: number,\n cModulesCount: number,\n): ColumnGroupType<BundleDiffTableModulesData> => {\n const [sortByChanged, setSortByChanged] = useState(false);\n\n const isB = key === 'baseline';\n return {\n title: () => {\n const count = isB ? bModulesCount : cModulesCount;\n const title = upperFirst(key);\n const diff = Graph.diffSize(bModulesCount, cModulesCount);\n return (\n <div>\n <Typography.Text>{title}</Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n {title} modules is {count}\n </Typography.Text>\n {isB ? null : (\n <Typography.Text style={{ color: 'inherit' }}>\n Percent is {formatPercent(diff.percent)}\n </Typography.Text>\n )}\n </Space>\n }\n >\n <Space>\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400 }}\n >\n {count}\n </Typography.Text>\n <InfoCircleOutlined />\n </Space>\n </Tooltip>\n </div>\n );\n },\n children: [\n {\n title: 'Source Size',\n ...getSizeColumnPropsForModuleRow(key, 'sourceSize', sortByChanged),\n },\n {\n title: 'Parsed Size',\n defaultSortOrder: isB ? undefined : 'descend',\n ...getSizeColumnPropsForModuleRow(key, 'parsedSize', sortByChanged),\n },\n ],\n filterSearch: true,\n filters: [\n {\n text: 'Show Changed',\n value: UpdateType.NotChanged,\n },\n {\n text: 'Show All',\n value: 'All',\n },\n ],\n onFilter(v, r) {\n if (v === UpdateType.NotChanged) {\n setSortByChanged(true);\n } else {\n setSortByChanged(false);\n }\n return v === UpdateType.NotChanged ? getUpdateType(r) !== v : true;\n },\n };\n};\n\nexport const ModuleRowForAsset: React.FC<\n { data: BundleDiffTableAssetsData } & Pick<\n BundleDiffComponentCardProps,\n 'baseline' | 'current'\n >\n> = ({ data, baseline, current }) => {\n const { modules: bTotalModules } = baseline.moduleGraph;\n const { modules: cTotalModules } = current.moduleGraph;\n const { chunks: bToTalChunks } = baseline.chunkGraph;\n const { chunks: cToTalChunks } = current.chunkGraph;\n const bRoot = baseline.root;\n const cRoot = current.root;\n\n const [searchText, setSearchText] = useState('');\n const searchInput = useRef<InputRef>(null);\n\n const handleSearch = (\n selectedKeys: string[],\n confirm: (param?: FilterConfirmProps) => void,\n ) => {\n confirm();\n setSearchText(selectedKeys[0]);\n };\n\n const handleReset = (clearFilters: () => void) => {\n clearFilters();\n setSearchText('');\n };\n\n const isBaseline = '__is_baseline__' as const;\n\n const bModules = useMemo(\n () =>\n data.baseline\n ? Graph.getModulesByAsset(data.baseline, bToTalChunks, bTotalModules)\n .map((e) => ({\n ...e,\n [isBaseline]: true,\n }))\n .filter((cModule) => !cModule.concatenationModules?.length)\n : [],\n [data, baseline],\n );\n const cModules = useMemo(\n () =>\n data.current\n ? Graph.getModulesByAsset(data.current, cToTalChunks, cTotalModules)\n .map((e) => ({\n ...e,\n [isBaseline]: false,\n }))\n .filter((cModule) => !cModule.concatenationModules?.length)\n : [],\n [data, current],\n );\n\n const getPathInfo = (r: BundleDiffTableModulesData) =>\n beautifyModulePath(r.path, r.__is_baseline__ ? bRoot : cRoot);\n\n const dataSource: BundleDiffTableModulesData[] = useMemo(() => {\n const mods = [...bModules, ...cModules];\n const map = new Map<string, BundleDiffTableModulesData>();\n\n // group by module.path\n mods.forEach((mod) => {\n const modPath =\n mod.webpackId?.replace(ModuleHashPattern, '') ||\n mod.path?.replace(ModuleHashPattern, '');\n let t: BundleDiffTableModulesData = map.get(modPath)!;\n\n if (!t) {\n t = { path: modPath };\n }\n\n if (mod[isBaseline]) {\n t.baseline = mod;\n } else {\n t.current = mod;\n }\n map.set(modPath, t);\n });\n\n return [...map.values()];\n }, [bModules, cModules, searchText]);\n\n const { bModulesCount, cModulesCount, totalCount } = useMemo(() => {\n const fileNameFilter = (e: BundleDiffTableModulesData) =>\n getPathInfo(e).alias.indexOf(searchText) > -1;\n\n let b = dataSource.filter((e) => e.baseline);\n let c = dataSource.filter((e) => e.current);\n let totalCount = dataSource.length;\n\n if (searchText) {\n b = b.filter(fileNameFilter);\n c = c.filter(fileNameFilter);\n totalCount = dataSource.filter(fileNameFilter).length;\n }\n\n return {\n bModulesCount: b.length,\n cModulesCount: c.length,\n totalCount,\n };\n }, [dataSource, searchText]);\n\n return (\n <Table\n dataSource={dataSource}\n rowKey={(e) => e.path}\n size=\"small\"\n pagination={{\n size: 'small',\n }}\n bordered\n scroll={{ x: 1500 }}\n columns={[\n {\n fixed: 'left',\n title: () => {\n return (\n <div>\n <Typography.Text>\n Modules of {`\"${data.alias}\"`}\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={\n <Space direction=\"vertical\">\n <Typography.Text style={{ color: 'inherit' }}>\n filtered modules: {totalCount}\n </Typography.Text>\n <Typography.Text style={{ color: 'inherit' }}>\n total modules: {dataSource.length}\n </Typography.Text>\n </Space>\n }\n >\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 10, fontWeight: 400, marginRight: 4 }}\n >\n {totalCount}/{dataSource.length}\n </Typography.Text>\n <InfoCircleOutlined />\n </Tooltip>\n </div>\n );\n },\n filterDropdown({\n setSelectedKeys,\n selectedKeys,\n confirm,\n clearFilters,\n }) {\n return (\n <div\n style={{ padding: 8 }}\n onKeyDown={(e) => e.stopPropagation()}\n >\n <Input\n ref={searchInput}\n placeholder={`Search by file name`}\n value={selectedKeys[0]}\n onChange={(e) =>\n setSelectedKeys(e.target.value ? [e.target.value] : [])\n }\n onPressEnter={() =>\n handleSearch(selectedKeys as string[], confirm)\n }\n style={{ marginBottom: 8, display: 'block' }}\n />\n <Space>\n <Button\n type=\"primary\"\n onClick={() =>\n handleSearch(selectedKeys as string[], confirm)\n }\n icon={<SearchOutlined />}\n size=\"small\"\n style={{ width: 90 }}\n >\n Search\n </Button>\n <Button\n onClick={() => {\n clearFilters && handleReset(clearFilters);\n setSelectedKeys([]);\n handleSearch([], confirm);\n }}\n size=\"small\"\n style={{ width: 90 }}\n >\n Reset\n </Button>\n </Space>\n </div>\n );\n },\n filterSearch: true,\n filterIcon: (filtered) => (\n <Space>\n <Typography.Text\n type={searchText ? undefined : 'secondary'}\n style={{ fontWeight: 400 }}\n >\n {searchText || 'Search by file name'}\n </Typography.Text>\n <SearchOutlined\n style={{ color: filtered ? Color.Blue : undefined }}\n />\n </Space>\n ),\n onFilterDropdownOpenChange: (visible) => {\n if (visible) {\n setTimeout(() => searchInput.current?.focus(), 100);\n }\n },\n onFilter(v, r) {\n return getPathInfo(r).alias.indexOf(v as string) > -1;\n },\n render: (_v, r) => {\n const { alias, inNodeModules } = getPathInfo(r);\n return (\n <Space>\n <Tooltip title={r.path}>\n <Typography.Text copyable={{ text: r.path }}>\n {alias}\n </Typography.Text>\n </Tooltip>\n {inNodeModules ? <Tag color=\"warning\">node_modules</Tag> : null}\n <FileUpdateTypeTag type={getUpdateType(r)} />\n </Space>\n );\n },\n },\n getTargetColumnPropsForModuleRow(\n 'current',\n bModulesCount,\n cModulesCount,\n ),\n getTargetColumnPropsForModuleRow(\n 'baseline',\n bModulesCount,\n cModulesCount,\n ),\n {\n title: 'Actions',\n width: 200,\n render: (_v, r) => {\n return (\n <Space direction=\"vertical\" style={{ maxWidth: 170 }}>\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]?.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 </Space>\n );\n },\n },\n ]}\n />\n );\n};\n"],"names":["ModuleHashPattern","getSizeColumnPropsForModuleRow","key","sizeKey","sortByChanged","sortByChangedFn","a","b","_a_current","_a_baseline","_b_current","_b_baseline","sorterFn","_a_key","_b_key","_v","r","_r_baseline","_r_baseline1","size","Space","Typography","formatSize","formatDiffSize","Client","getTargetColumnPropsForModuleRow","bModulesCount","cModulesCount","setSortByChanged","useState","isB","count","title","upperFirst","diff","Graph","Divider","Tooltip","formatPercent","InfoCircleOutlined","undefined","UpdateType","v","getUpdateType","ModuleRowForAsset","data","baseline","current","bTotalModules","cTotalModules","bToTalChunks","cToTalChunks","bRoot","cRoot","searchText","setSearchText","searchInput","useRef","handleSearch","selectedKeys","confirm","handleReset","clearFilters","isBaseline","bModules","useMemo","e","cModule","_cModule_concatenationModules","cModules","getPathInfo","beautifyModulePath","dataSource","mods","map","Map","mod","_mod_webpackId","_mod_path","modPath","t","totalCount","fileNameFilter","c","Table","setSelectedKeys","Input","Button","SearchOutlined","filtered","Color","visible","setTimeout","_searchInput_current","alias","inNodeModules","Tag","FileUpdateTypeTag","_baseline_moduleCodeMap_r_baseline_id","_current_moduleCodeMap_r_current_id","_r_current","_baseline_moduleCodeMap_r_baseline_id1","_current_moduleCodeMap_r_current_id1","_r_current1","_baseline_moduleCodeMap_r_baseline_id2","_r_baseline2","_current_moduleCodeMap_r_current_id2","_r_current2","ViewChanges"],"mappings":"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"}
@@ -1,15 +1,24 @@
1
1
  import { Fragment, jsx } from "react/jsx-runtime";
2
- import { Client } from "@rsdoctor/types";
2
+ import { Client, Constants } from "@rsdoctor/types";
3
3
  import { ServerAPIProvider } from "../../../../components/Manifest/index.mjs";
4
4
  import { fetchManifest, useUrlQuery } from "../../../../utils/index.mjs";
5
+ import { Algorithm } from "@rsdoctor/utils/common";
5
6
  const DiffServerAPIProvider = (props)=>{
6
7
  var _query_Client_RsdoctorClientUrlQuery_BundleDiffFiles;
7
8
  const { api, body, children, manifests } = props;
8
9
  const query = useUrlQuery();
9
- const [baselineFile, currentFile] = (null == (_query_Client_RsdoctorClientUrlQuery_BundleDiffFiles = query[Client.RsdoctorClientUrlQuery.BundleDiffFiles]) ? void 0 : _query_Client_RsdoctorClientUrlQuery_BundleDiffFiles.split(',')) || [];
10
+ const windowData = window[Constants.WINDOW_RSDOCTOR_TAG];
11
+ if ((null == windowData ? void 0 : windowData.baseline) && (null == windowData ? void 0 : windowData.current)) {
12
+ const baseline = JSON.parse(Algorithm.decompressText(windowData.baseline));
13
+ const current = JSON.parse(Algorithm.decompressText(windowData.current));
14
+ return /*#__PURE__*/ jsx(Fragment, {
15
+ children: children(baseline, current)
16
+ });
17
+ }
10
18
  if (null == manifests ? void 0 : manifests.length) return /*#__PURE__*/ jsx(Fragment, {
11
19
  children: children(manifests[0].data, manifests[1].data)
12
20
  });
21
+ const [baselineFile, currentFile] = (null == (_query_Client_RsdoctorClientUrlQuery_BundleDiffFiles = query[Client.RsdoctorClientUrlQuery.BundleDiffFiles]) ? void 0 : _query_Client_RsdoctorClientUrlQuery_BundleDiffFiles.split(',')) || [];
13
22
  return /*#__PURE__*/ jsx(ServerAPIProvider, {
14
23
  api: api,
15
24
  body: body,
@@ -1 +1 @@
1
- {"version":3,"file":"pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs","sources":["webpack://@rsdoctor/components/./src/pages/Resources/BundleDiff/DiffServerAPIProvider/index.tsx"],"sourcesContent":["import { Client, SDK } from '@rsdoctor/types';\nimport { ServerAPIProvider } from 'src/components/Manifest';\nimport { fetchManifest, useUrlQuery } from 'src/utils';\nimport { BundleDiffServerAPIProviderComponentCommonProps } from '../DiffContainer/types';\n\nexport const DiffServerAPIProvider = <\n T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends,\n>(\n props: BundleDiffServerAPIProviderComponentCommonProps<T>,\n): JSX.Element => {\n const { api, body, children, manifests } = props;\n const query = useUrlQuery();\n const [baselineFile, currentFile] =\n query[Client.RsdoctorClientUrlQuery.BundleDiffFiles]?.split(',') || [];\n\n if (manifests?.length) {\n // 兼容 webpack stats 场景\n return <>{children(manifests[0].data as any, manifests[1].data as any)}</>;\n }\n\n return (\n <ServerAPIProvider\n api={api}\n body={body}\n manifestLoader={\n baselineFile ? () => fetchManifest(baselineFile) : undefined\n }\n >\n {(baseline) => {\n return (\n <ServerAPIProvider\n api={api}\n body={body}\n manifestLoader={\n currentFile ? () => fetchManifest(currentFile) : undefined\n }\n >\n {(current) => {\n return children(baseline, current);\n }}\n </ServerAPIProvider>\n );\n }}\n </ServerAPIProvider>\n );\n};\n"],"names":["DiffServerAPIProvider","props","_query_Client_RsdoctorClientUrlQuery_BundleDiffFiles","api","body","children","manifests","query","useUrlQuery","baselineFile","currentFile","Client","ServerAPIProvider","fetchManifest","undefined","baseline","current"],"mappings":";;;;AAKO,MAAMA,wBAAwB,CAGnCC;QAKEC;IAHF,MAAM,EAAEC,GAAG,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGL;IAC3C,MAAMM,QAAQC;IACd,MAAM,CAACC,cAAcC,YAAY,GAC/BR,AAAAA,SAAAA,CAAAA,uDAAAA,KAAK,CAACS,OAAO,sBAAsB,CAAC,eAAe,CAAC,AAAD,IAAnDT,KAAAA,IAAAA,qDAAsD,KAAK,CAAC,IAAG,KAAK,EAAE;IAExE,IAAII,QAAAA,YAAAA,KAAAA,IAAAA,UAAW,MAAM,EAEnB,OAAO,WAAP,GAAO;kBAAGD,SAASC,SAAS,CAAC,EAAE,CAAC,IAAI,EAASA,SAAS,CAAC,EAAE,CAAC,IAAI;;IAGhE,OAAO,WAAP,GACE,IAACM,mBAAiBA;QAChB,KAAKT;QACL,MAAMC;QACN,gBACEK,eAAe,IAAMI,cAAcJ,gBAAgBK;kBAGpD,CAACC,WACO,WAAP,GACE,IAACH,mBAAiBA;gBAChB,KAAKT;gBACL,MAAMC;gBACN,gBACEM,cAAc,IAAMG,cAAcH,eAAeI;0BAGlD,CAACE,UACOX,SAASU,UAAUC;;;AAOxC"}
1
+ {"version":3,"file":"pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs","sources":["webpack://@rsdoctor/components/./src/pages/Resources/BundleDiff/DiffServerAPIProvider/index.tsx"],"sourcesContent":["import { Client, SDK, Constants } from '@rsdoctor/types';\nimport { ServerAPIProvider } from 'src/components/Manifest';\nimport { fetchManifest, useUrlQuery } from 'src/utils';\nimport { Algorithm } from '@rsdoctor/utils/common';\nimport { BundleDiffServerAPIProviderComponentCommonProps } from '../DiffContainer/types';\n\nexport const DiffServerAPIProvider = <\n T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends,\n>(\n props: BundleDiffServerAPIProviderComponentCommonProps<T>,\n): JSX.Element => {\n const { api, body, children, manifests } = props;\n const query = useUrlQuery();\n\n const windowData = (window as any)[Constants.WINDOW_RSDOCTOR_TAG];\n if (windowData?.baseline && windowData?.current) {\n const baseline = JSON.parse(Algorithm.decompressText(windowData.baseline));\n const current = JSON.parse(Algorithm.decompressText(windowData.current));\n return <>{children(baseline, current)}</>;\n }\n\n if (manifests?.length) {\n return <>{children(manifests[0].data as any, manifests[1].data as any)}</>;\n }\n\n const [baselineFile, currentFile] =\n query[Client.RsdoctorClientUrlQuery.BundleDiffFiles]?.split(',') || [];\n\n return (\n <ServerAPIProvider\n api={api}\n body={body}\n manifestLoader={\n baselineFile ? () => fetchManifest(baselineFile) : undefined\n }\n >\n {(baseline) => {\n return (\n <ServerAPIProvider\n api={api}\n body={body}\n manifestLoader={\n currentFile ? () => fetchManifest(currentFile) : undefined\n }\n >\n {(current) => {\n return children(baseline, current);\n }}\n </ServerAPIProvider>\n );\n }}\n </ServerAPIProvider>\n );\n};\n"],"names":["DiffServerAPIProvider","props","_query_Client_RsdoctorClientUrlQuery_BundleDiffFiles","api","body","children","manifests","query","useUrlQuery","windowData","window","Constants","baseline","JSON","Algorithm","current","baselineFile","currentFile","Client","ServerAPIProvider","fetchManifest","undefined"],"mappings":";;;;;AAMO,MAAMA,wBAAwB,CAGnCC;QAiBEC;IAfF,MAAM,EAAEC,GAAG,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGL;IAC3C,MAAMM,QAAQC;IAEd,MAAMC,aAAcC,MAAc,CAACC,UAAU,mBAAmB,CAAC;IACjE,IAAIF,AAAAA,CAAAA,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,QAAQ,AAAD,KAAKA,CAAAA,QAAAA,aAAAA,KAAAA,IAAAA,WAAY,OAAO,AAAD,GAAG;QAC/C,MAAMG,WAAWC,KAAK,KAAK,CAACC,UAAU,cAAc,CAACL,WAAW,QAAQ;QACxE,MAAMM,UAAUF,KAAK,KAAK,CAACC,UAAU,cAAc,CAACL,WAAW,OAAO;QACtE,OAAO,WAAP,GAAO;sBAAGJ,SAASO,UAAUG;;IAC/B;IAEA,IAAIT,QAAAA,YAAAA,KAAAA,IAAAA,UAAW,MAAM,EACnB,OAAO,WAAP,GAAO;kBAAGD,SAASC,SAAS,CAAC,EAAE,CAAC,IAAI,EAASA,SAAS,CAAC,EAAE,CAAC,IAAI;;IAGhE,MAAM,CAACU,cAAcC,YAAY,GAC/Bf,AAAAA,SAAAA,CAAAA,uDAAAA,KAAK,CAACgB,OAAO,sBAAsB,CAAC,eAAe,CAAC,AAAD,IAAnDhB,KAAAA,IAAAA,qDAAsD,KAAK,CAAC,IAAG,KAAK,EAAE;IAExE,OAAO,WAAP,GACE,IAACiB,mBAAiBA;QAChB,KAAKhB;QACL,MAAMC;QACN,gBACEY,eAAe,IAAMI,cAAcJ,gBAAgBK;kBAGpD,CAACT,WACO,WAAP,GACE,IAACO,mBAAiBA;gBAChB,KAAKhB;gBACL,MAAMC;gBACN,gBACEa,cAAc,IAAMG,cAAcH,eAAeI;0BAGlD,CAACN,UACOV,SAASO,UAAUG;;;AAOxC"}
@@ -57,12 +57,36 @@
57
57
  border-top: 1px solid #0505050f;
58
58
  }
59
59
 
60
- .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:first-child {
61
- border-start-start-radius: 0;
60
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:first-child:not(:-webkit-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
61
+ border-top-left-radius: 0;
62
62
  }
63
63
 
64
- .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:last-child {
65
- border-start-end-radius: 0;
64
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:first-child:not(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
65
+ border-top-left-radius: 0;
66
+ }
67
+
68
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:first-child:-webkit-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi)) {
69
+ border-top-right-radius: 0;
70
+ }
71
+
72
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:first-child:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi)) {
73
+ border-top-right-radius: 0;
74
+ }
75
+
76
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:last-child:not(:-webkit-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
77
+ border-top-right-radius: 0;
78
+ }
79
+
80
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:last-child:not(:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi))) {
81
+ border-top-right-radius: 0;
82
+ }
83
+
84
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:last-child:-webkit-any(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi)) {
85
+ border-top-left-radius: 0;
86
+ }
87
+
88
+ .tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody > tr:last-child > td .ant-table-container table > thead > tr:first-child th th:last-child:is(:lang(ae), :lang(ar), :lang(arc), :lang(bcc), :lang(bqi), :lang(ckb), :lang(dv), :lang(fa), :lang(glk), :lang(he), :lang(ku), :lang(mzn), :lang(nqo), :lang(pnb), :lang(ps), :lang(sd), :lang(ug), :lang(ur), :lang(yi)) {
89
+ border-top-left-radius: 0;
66
90
  }
67
91
 
68
92
  .tree-shaking-page .tree-shaking-side-effect-list {
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://./src/pages/TreeShaking/index.scss"],"names":[],"mappings":"AADA;EAEE,WAAW;EACX,YAAY;AACd;;AAEA;EACE,sBAAsB;EACtB,aAAa;AACf;;AAEA;EACE,mBAAmB;EACnB,0BAA0B;AAC5B;;AAEA;EACE,mBAAmB;EACnB,0BAA0B;AAC5B;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,YAAY;EACZ,aAAa;AACf;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,WAAW;EACX,yBAAyB;AAC3B;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,aAAa;AACf;;AAEA;EACE,uBAAuB;EACvB,mBAAmB;EACnB,gBAAgB;AAClB;;AAEA;EACE,sBAAsB;EACtB,WAAW;AACb;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;AACnB;;AAEA;EACE,aAAa;AACf","sourcesContent":[".tree-shaking-page{width:100%;height:100%}.tree-shaking-page .ant-card{display:flex;flex-direction:column}.tree-shaking-page .tree-shaking-statement-side-effect{text-decoration:underline;background:#711f1c}.tree-shaking-page .tree-shaking-statement-declaration-identifier{text-decoration:underline;background:#2c87ec}.tree-shaking-page .tree-shaking-files-box{height:700px}.tree-shaking-page .tree-shaking-files{overflow:auto;height:100%}.tree-shaking-page .tree-shaking-editor{flex-grow:1;height:700px}.tree-shaking-page .tree-shaking-editor .ant-card-body{padding:0}.tree-shaking-page .tree-shaking-files-box,.tree-shaking-page .tree-shaking-editor .ant-card-body{width:auto;height:calc(100% - 48px)}.tree-shaking-page .tree-shaking-export-table .ant-card-body{padding:0}.tree-shaking-page .tree-shaking-export-table .ant-card-body .ant-divider{margin:24px}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td{border-bottom:none}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td .ant-table-container table>thead>tr:first-child th{border-top:1px solid rgba(5,5,5,.06)}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td .ant-table-container table>thead>tr:first-child th th:first-child{border-start-start-radius:0}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td .ant-table-container table>thead>tr:first-child th th:last-child{border-start-end-radius:0}.tree-shaking-page .tree-shaking-side-effect-list{display:flex;flex-direction:column;align-items:flex-start}.tree-shaking-page .tree-shaking-side-effect-list .tree-shaking-side-effect-list-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-hover .markdown-hover.hover-row hr{margin:2px;background-color:gray}.monaco-hover .markdown-hover.hover-row div[data-code=tree-shaking-hover] ol{margin:4px 0 10px 0;padding-left:4px}.monaco-hover .markdown-hover.hover-row div[data-code=tree-shaking-hover] ol pre{margin:2px 0}"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://./src/pages/TreeShaking/index.scss"],"names":[],"mappings":"AADA;EAEE,WAAW;EACX,YAAY;AACd;;AAEA;EACE,sBAAsB;EACtB,aAAa;AACf;;AAEA;EACE,mBAAmB;EACnB,0BAA0B;AAC5B;;AAEA;EACE,mBAAmB;EACnB,0BAA0B;AAC5B;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,YAAY;EACZ,aAAa;AACf;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,WAAW;EACX,yBAAyB;AAC3B;;AAEA;EACE,UAAU;AACZ;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,+BAA+B;AACjC;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,0BAA0B;AAC5B;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,aAAa;AACf;;AAEA;EACE,uBAAuB;EACvB,mBAAmB;EACnB,gBAAgB;AAClB;;AAEA;EACE,sBAAsB;EACtB,WAAW;AACb;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;AACnB;;AAEA;EACE,aAAa;AACf","sourcesContent":[".tree-shaking-page{width:100%;height:100%}.tree-shaking-page .ant-card{display:flex;flex-direction:column}.tree-shaking-page .tree-shaking-statement-side-effect{text-decoration:underline;background:#711f1c}.tree-shaking-page .tree-shaking-statement-declaration-identifier{text-decoration:underline;background:#2c87ec}.tree-shaking-page .tree-shaking-files-box{height:700px}.tree-shaking-page .tree-shaking-files{overflow:auto;height:100%}.tree-shaking-page .tree-shaking-editor{flex-grow:1;height:700px}.tree-shaking-page .tree-shaking-editor .ant-card-body{padding:0}.tree-shaking-page .tree-shaking-files-box,.tree-shaking-page .tree-shaking-editor .ant-card-body{width:auto;height:calc(100% - 48px)}.tree-shaking-page .tree-shaking-export-table .ant-card-body{padding:0}.tree-shaking-page .tree-shaking-export-table .ant-card-body .ant-divider{margin:24px}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td{border-bottom:none}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td .ant-table-container table>thead>tr:first-child th{border-top:1px solid rgba(5,5,5,.06)}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td .ant-table-container table>thead>tr:first-child th th:first-child{border-start-start-radius:0}.tree-shaking-page .tree-shaking-export-table .ant-table-wrapper .ant-table-tbody>tr:last-child>td .ant-table-container table>thead>tr:first-child th th:last-child{border-start-end-radius:0}.tree-shaking-page .tree-shaking-side-effect-list{display:flex;flex-direction:column;align-items:flex-start}.tree-shaking-page .tree-shaking-side-effect-list .tree-shaking-side-effect-list-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monaco-hover .markdown-hover.hover-row hr{margin:2px;background-color:gray}.monaco-hover .markdown-hover.hover-row div[data-code=tree-shaking-hover] ol{margin:4px 0 10px 0;padding-left:4px}.monaco-hover .markdown-hover.hover-row div[data-code=tree-shaking-hover] ol pre{margin:2px 0}"],"sourceRoot":""}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Module } from "@rsdoctor/graph";
3
3
  import { Space, Tag } from "antd";
4
- import { escape as external_lodash_es_escape, get } from "lodash-es";
4
+ import { escape as compat_escape, get } from "es-toolkit/compat";
5
5
  import path_browserify from "path-browserify";
6
6
  import { useMemo } from "react";
7
7
  import { getSelectionRange } from "../../components/base/CodeViewer/utils.mjs";
@@ -90,7 +90,7 @@ function getHoverMessageInModule(module, moduleGraph) {
90
90
  const lineCode = identifier.getLineCode();
91
91
  content += `\n<ol>
92
92
  ${getOpenTagText(id, isPreferSource ? identifier.position.source : identifier.position.transformed, getModulePositionString(identifier, module))}
93
- ${lineCode ? `<pre>${external_lodash_es_escape(lineCode)}</pre>` : ''}
93
+ ${lineCode ? `<pre>${compat_escape(lineCode)}</pre>` : ''}
94
94
  </ol>`;
95
95
  }
96
96
  content += '\n</li></div>';
@@ -1 +1 @@
1
- {"version":3,"file":"pages/TreeShaking/utils.mjs","sources":["webpack://@rsdoctor/components/./src/pages/TreeShaking/utils.tsx"],"sourcesContent":["import { Module } from '@rsdoctor/graph';\nimport { SDK } from '@rsdoctor/types';\nimport { Space, Tag } from 'antd';\nimport { escape, get } from 'lodash-es';\nimport type { editor, Range as RangeClass } from 'monaco-editor';\nimport path from 'path-browserify';\nimport { useMemo } from 'react';\nimport { getSelectionRange } from 'src/components/base/CodeViewer/utils';\nimport { Keyword } from '../../components/Keyword';\nimport { createFileStructures, mapFileKey } from '../../utils';\nimport { getOpenTagText } from './open-tag';\nimport { Range } from './range';\n\nexport function useFileStructures(\n modules: SDK.ModuleInstance[],\n moduleGraph: SDK.ModuleGraphInstance,\n searchInput: string,\n selectedModule: SDK.ModuleInstance,\n onItemClick: (file: string) => void,\n cwd: string,\n) {\n const files = useMemo(\n () =>\n createFileStructures({\n files: modules.map((item) => item.path),\n cwd,\n fileTitle(file, basename) {\n const module = moduleGraph\n .getModules()\n .find(\n (item) => item.path === file && item.kind === Module.kind.Normal,\n )!;\n const mgm = moduleGraph.getModuleGraphModule(module)!;\n const infos = mgm.getExports();\n const unused = infos.filter(\n (info) => info.getSideEffects().length === 0,\n );\n return (\n <Space style={{ wordBreak: 'break-all' }}>\n <Keyword\n text={basename}\n keyword={file}\n onClick={() => onItemClick(file)}\n />\n {mgm.dynamic ? <Tag color=\"cyan\">dynamic</Tag> : ''}\n {unused.length > 0 ? (\n <Tag color=\"green\">{unused.length} Unused</Tag>\n ) : (\n ''\n )}\n </Space>\n );\n },\n }),\n [searchInput, selectedModule],\n );\n\n return files;\n}\n\nexport function getTreeFilesDefaultExpandedKeys(files: any[]) {\n return mapFileKey(files, 3, (node) => {\n const resourcePath: string = get(node, '__RESOURCEPATH__')!;\n const isNodeModules = resourcePath.indexOf('/node_modules/') > -1;\n return !isNodeModules;\n });\n}\n\nexport function ellipsisPath(full: string) {\n let result = '';\n let current = full;\n\n for (let i = 0; i < 3; i++) {\n result = result\n ? `${path.basename(current)}/${result}`\n : path.basename(current);\n current = path.dirname(current);\n }\n\n return `...${result}`;\n}\n\nexport function getModulePositionString(\n statement: SDK.StatementInstance,\n module: SDK.ModuleInstance,\n) {\n const maxLen = 30;\n const { path, isPreferSource } = module;\n const start = isPreferSource\n ? statement.position.source!.start\n : statement.position.transformed.start;\n const suffix = `:${start.line ?? 1}:${start.column ?? 0}`;\n\n return path.length <= maxLen\n ? `${path}${suffix}`\n : `...${path.substring(path.length - 30)}${suffix}`;\n}\n\nexport function getHoverMessageInModule(\n module: SDK.ModuleInstance,\n moduleGraph: SDK.ModuleGraphInstance,\n) {\n const mgm = moduleGraph.getModuleGraphModule(module);\n /** 当前模块导出变量 */\n const exportLocals = mgm.getOwnExports();\n /** 当前模块声明变量 */\n const variables = exportLocals\n .map((item) => item.variable)\n .filter((item): item is SDK.VariableInstance => Boolean(item));\n\n if (exportLocals.length === 0 && variables.length === 0) {\n return [];\n }\n\n function getVariableMessage(data: SDK.VariableInstance) {\n const exportData = data.getExportInfo();\n\n if (!exportData) {\n return 'Can not find SideEffect info.';\n }\n\n const sideEffects = exportData.getSideEffects();\n\n if (sideEffects.length === 0) {\n return 'Have no sideEffect.';\n }\n\n /*\n * monaco hover html 代码允许的元素和标签\n * @link https://github.com/microsoft/vscode/blob/6d2920473c6f13759c978dd89104c4270a83422d/src/vs/base/browser/markdownRenderer.ts#L296-L317\n */\n\n let content = `Used **${sideEffects.length}** times:\\n\\n<div data-code=\"tree-shaking-hover\">\\n<li>`;\n\n for (const sideEffect of sideEffects) {\n if (!sideEffect) {\n continue;\n }\n\n const { identifier, module } = sideEffect;\n\n if (!module) {\n continue;\n }\n\n const { id, isPreferSource } = module;\n const lineCode = identifier.getLineCode();\n\n content += `\\n<ol>\n ${getOpenTagText(\n id,\n isPreferSource\n ? identifier.position.source!\n : identifier.position.transformed,\n getModulePositionString(identifier, module),\n )}\n ${lineCode ? `<pre>${escape(lineCode)}</pre>` : ''}\n </ol>`;\n }\n\n content += '\\n</li></div>';\n\n return content;\n }\n\n const { isPreferSource } = module;\n\n const declarationHovers = variables\n .map((item) => {\n const position = isPreferSource\n ? item.identifier.position.source\n : item.identifier.position.transformed;\n const range =\n position &&\n getSelectionRange(position, Range as unknown as typeof RangeClass);\n\n if (!position || !range) {\n return;\n }\n\n return {\n range,\n options: {\n stickiness: 1,\n inlineClassName: 'tree-shaking-statement-declaration-identifier',\n isWholeLine: false,\n showIfCollapsed: true,\n hoverMessage: {\n supportHtml: true,\n supportThemeIcons: true,\n isTrusted: true,\n value: getVariableMessage(item),\n },\n },\n } as unknown as editor.IModelDecoration;\n })\n .filter((item): item is editor.IModelDecoration => Boolean(item));\n\n /**\n * 导出部分的信息,需要先过滤声明和导出位置重叠的部分\n * export { foo };\n * export { foo } from 'foo';\n * export * as name from 'foo';\n * export * from 'foo';\n * 最后一种需要合并位置\n */\n\n return declarationHovers;\n}\n"],"names":["useFileStructures","modules","moduleGraph","searchInput","selectedModule","onItemClick","cwd","files","useMemo","createFileStructures","item","file","basename","module","Module","mgm","infos","unused","info","Space","Keyword","Tag","getTreeFilesDefaultExpandedKeys","mapFileKey","node","resourcePath","get","isNodeModules","ellipsisPath","full","result","current","i","path","getModulePositionString","statement","maxLen","isPreferSource","start","suffix","getHoverMessageInModule","exportLocals","variables","Boolean","getVariableMessage","data","exportData","sideEffects","content","sideEffect","identifier","id","lineCode","getOpenTagText","escape","declarationHovers","position","range","getSelectionRange","Range"],"mappings":"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"}
1
+ {"version":3,"file":"pages/TreeShaking/utils.mjs","sources":["webpack://@rsdoctor/components/./src/pages/TreeShaking/utils.tsx"],"sourcesContent":["import { Module } from '@rsdoctor/graph';\nimport { SDK } from '@rsdoctor/types';\nimport { Space, Tag } from 'antd';\nimport { escape, get } from 'es-toolkit/compat';\nimport type { editor, Range as RangeClass } from 'monaco-editor';\nimport path from 'path-browserify';\nimport { useMemo } from 'react';\nimport { getSelectionRange } from 'src/components/base/CodeViewer/utils';\nimport { Keyword } from '../../components/Keyword';\nimport { createFileStructures, mapFileKey } from '../../utils';\nimport { getOpenTagText } from './open-tag';\nimport { Range } from './range';\n\nexport function useFileStructures(\n modules: SDK.ModuleInstance[],\n moduleGraph: SDK.ModuleGraphInstance,\n searchInput: string,\n selectedModule: SDK.ModuleInstance,\n onItemClick: (file: string) => void,\n cwd: string,\n) {\n const files = useMemo(\n () =>\n createFileStructures({\n files: modules.map((item) => item.path),\n cwd,\n fileTitle(file, basename) {\n const module = moduleGraph\n .getModules()\n .find(\n (item) => item.path === file && item.kind === Module.kind.Normal,\n )!;\n const mgm = moduleGraph.getModuleGraphModule(module)!;\n const infos = mgm.getExports();\n const unused = infos.filter(\n (info) => info.getSideEffects().length === 0,\n );\n return (\n <Space style={{ wordBreak: 'break-all' }}>\n <Keyword\n text={basename}\n keyword={file}\n onClick={() => onItemClick(file)}\n />\n {mgm.dynamic ? <Tag color=\"cyan\">dynamic</Tag> : ''}\n {unused.length > 0 ? (\n <Tag color=\"green\">{unused.length} Unused</Tag>\n ) : (\n ''\n )}\n </Space>\n );\n },\n }),\n [searchInput, selectedModule],\n );\n\n return files;\n}\n\nexport function getTreeFilesDefaultExpandedKeys(files: any[]) {\n return mapFileKey(files, 3, (node) => {\n const resourcePath: string = get(node, '__RESOURCEPATH__')!;\n const isNodeModules = resourcePath.indexOf('/node_modules/') > -1;\n return !isNodeModules;\n });\n}\n\nexport function ellipsisPath(full: string) {\n let result = '';\n let current = full;\n\n for (let i = 0; i < 3; i++) {\n result = result\n ? `${path.basename(current)}/${result}`\n : path.basename(current);\n current = path.dirname(current);\n }\n\n return `...${result}`;\n}\n\nexport function getModulePositionString(\n statement: SDK.StatementInstance,\n module: SDK.ModuleInstance,\n) {\n const maxLen = 30;\n const { path, isPreferSource } = module;\n const start = isPreferSource\n ? statement.position.source!.start\n : statement.position.transformed.start;\n const suffix = `:${start.line ?? 1}:${start.column ?? 0}`;\n\n return path.length <= maxLen\n ? `${path}${suffix}`\n : `...${path.substring(path.length - 30)}${suffix}`;\n}\n\nexport function getHoverMessageInModule(\n module: SDK.ModuleInstance,\n moduleGraph: SDK.ModuleGraphInstance,\n) {\n const mgm = moduleGraph.getModuleGraphModule(module);\n /** 当前模块导出变量 */\n const exportLocals = mgm.getOwnExports();\n /** 当前模块声明变量 */\n const variables = exportLocals\n .map((item) => item.variable)\n .filter((item): item is SDK.VariableInstance => Boolean(item));\n\n if (exportLocals.length === 0 && variables.length === 0) {\n return [];\n }\n\n function getVariableMessage(data: SDK.VariableInstance) {\n const exportData = data.getExportInfo();\n\n if (!exportData) {\n return 'Can not find SideEffect info.';\n }\n\n const sideEffects = exportData.getSideEffects();\n\n if (sideEffects.length === 0) {\n return 'Have no sideEffect.';\n }\n\n /*\n * monaco hover html 代码允许的元素和标签\n * @link https://github.com/microsoft/vscode/blob/6d2920473c6f13759c978dd89104c4270a83422d/src/vs/base/browser/markdownRenderer.ts#L296-L317\n */\n\n let content = `Used **${sideEffects.length}** times:\\n\\n<div data-code=\"tree-shaking-hover\">\\n<li>`;\n\n for (const sideEffect of sideEffects) {\n if (!sideEffect) {\n continue;\n }\n\n const { identifier, module } = sideEffect;\n\n if (!module) {\n continue;\n }\n\n const { id, isPreferSource } = module;\n const lineCode = identifier.getLineCode();\n\n content += `\\n<ol>\n ${getOpenTagText(\n id,\n isPreferSource\n ? identifier.position.source!\n : identifier.position.transformed,\n getModulePositionString(identifier, module),\n )}\n ${lineCode ? `<pre>${escape(lineCode)}</pre>` : ''}\n </ol>`;\n }\n\n content += '\\n</li></div>';\n\n return content;\n }\n\n const { isPreferSource } = module;\n\n const declarationHovers = variables\n .map((item) => {\n const position = isPreferSource\n ? item.identifier.position.source\n : item.identifier.position.transformed;\n const range =\n position &&\n getSelectionRange(position, Range as unknown as typeof RangeClass);\n\n if (!position || !range) {\n return;\n }\n\n return {\n range,\n options: {\n stickiness: 1,\n inlineClassName: 'tree-shaking-statement-declaration-identifier',\n isWholeLine: false,\n showIfCollapsed: true,\n hoverMessage: {\n supportHtml: true,\n supportThemeIcons: true,\n isTrusted: true,\n value: getVariableMessage(item),\n },\n },\n } as unknown as editor.IModelDecoration;\n })\n .filter((item): item is editor.IModelDecoration => Boolean(item));\n\n /**\n * 导出部分的信息,需要先过滤声明和导出位置重叠的部分\n * export { foo };\n * export { foo } from 'foo';\n * export * as name from 'foo';\n * export * from 'foo';\n * 最后一种需要合并位置\n */\n\n return declarationHovers;\n}\n"],"names":["useFileStructures","modules","moduleGraph","searchInput","selectedModule","onItemClick","cwd","files","useMemo","createFileStructures","item","file","basename","module","Module","mgm","infos","unused","info","Space","Keyword","Tag","getTreeFilesDefaultExpandedKeys","mapFileKey","node","resourcePath","get","isNodeModules","ellipsisPath","full","result","current","i","path","getModulePositionString","statement","maxLen","isPreferSource","start","suffix","getHoverMessageInModule","exportLocals","variables","Boolean","getVariableMessage","data","exportData","sideEffects","content","sideEffect","identifier","id","lineCode","getOpenTagText","escape","declarationHovers","position","range","getSelectionRange","Range"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Manifest } from "@rsdoctor/utils/common";
2
2
  import { SDK } from "@rsdoctor/types";
3
- import { get } from "lodash-es";
3
+ import { get } from "es-toolkit/compat";
4
4
  import { BaseDataLoader } from "./base.mjs";
5
5
  import { getSocket } from "../socket.mjs";
6
6
  function _define_property(obj, key, value) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils/data/local.mjs","sources":["webpack://@rsdoctor/components/./src/utils/data/local.ts"],"sourcesContent":["import { Manifest as ManifestShared } from '@rsdoctor/utils/common';\nimport { Common, Manifest, SDK } from '@rsdoctor/types';\nimport { get } from 'lodash-es';\nimport { BaseDataLoader } from './base';\nimport { getSocket } from '../socket';\n\nexport class LocalServerDataLoader extends BaseDataLoader {\n protected events: Map<\n SDK.ServerAPI.API | SDK.ServerAPI.APIExtends,\n Set<Common.Function>\n > = new Map();\n\n public isLocal() {\n return true;\n }\n\n public async loadData<T extends keyof Manifest.RsdoctorManifestData>(\n key: T,\n ): Promise<void | Manifest.RsdoctorManifestData[T]>;\n\n public async loadData(key: string): Promise<unknown> {\n return this.limit(key, async () => {\n const [scope, ...rest] = this.getKeys(key);\n const data = this.getData(scope as keyof Manifest.RsdoctorManifestData);\n\n if (!data) return;\n\n let res: unknown = data;\n\n // sharding files\n if (ManifestShared.isShardingData(res)) {\n if (!this.shardingDataMap.has(key)) {\n const task = new Promise((resolve) => {\n getSocket().emit(\n SDK.ServerAPI.API.LoadDataByKey,\n { key },\n (\n res: SDK.ServerAPI.SocketResponseType<SDK.ServerAPI.API.LoadDataByKey>,\n ) => {\n resolve(res.res);\n },\n );\n });\n // const task = postServerAPI(SDK.ServerAPI.API.LoadDataByKey, { key }).catch((err) => {\n // this.log(`loadData error: `, res, key);\n // throw err;\n // });\n // save with every key\n this.shardingDataMap.set(key, task);\n }\n\n res = await this.shardingDataMap.get(key);\n this.shardingDataMap.delete(key);\n return res;\n }\n\n return rest.length > 0 ? get(res, this.joinKeys(rest)) : res;\n });\n }\n\n public async loadAPI<\n T extends SDK.ServerAPI.API,\n B extends\n SDK.ServerAPI.InferRequestBodyType<T> = SDK.ServerAPI.InferRequestBodyType<T>,\n R extends\n SDK.ServerAPI.InferResponseType<T> = SDK.ServerAPI.InferResponseType<T>,\n >(...args: B extends void ? [api: T] : [api: T, body: B]): Promise<R> {\n const [api, body] = args;\n // request limitation key\n const key = body ? `${api}_${JSON.stringify(body)}` : `${api}`;\n const socketPort = this.get('__SOCKET__PORT__') ?? '';\n\n return this.limit(key, async () => {\n return new Promise((resolve) => {\n getSocket(socketPort).emit(\n api,\n body,\n (res: SDK.ServerAPI.SocketResponseType<T>) => {\n resolve(res.res as R);\n },\n );\n });\n // const res = await postServerAPI(...args).catch((err) => {\n // this.log(`loadAPI error: `, key);\n // throw err;\n // });\n\n // return res as R;\n });\n }\n\n public dispose() {\n super.dispose();\n this.events.forEach((evs, api) => {\n evs.forEach((ev) => {\n this.removeOnDataUpdate(api, ev);\n });\n evs.clear();\n });\n this.events.clear();\n }\n\n /**\n * add event listener when received data from server.\n */\n public onDataUpdate<T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(\n api: T,\n fn: (response: SDK.ServerAPI.SocketResponseType<T>) => void,\n ) {\n if (!this.events.has(api)) {\n this.events.set(api, new Set());\n }\n\n if (this.events.get(api)!.has(fn)) {\n return;\n }\n\n this.events.get(api)!.add(fn);\n getSocket().on(api as string, fn);\n }\n\n public removeOnDataUpdate<\n T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends,\n >(api: T, fn: (response: SDK.ServerAPI.SocketResponseType<T>) => void) {\n getSocket().off(api as string, fn);\n this.events.get(api)!.delete(fn);\n }\n}\n"],"names":["LocalServerDataLoader","BaseDataLoader","key","scope","rest","data","res","ManifestShared","task","Promise","resolve","getSocket","SDK","get","args","api","body","JSON","socketPort","evs","ev","fn","Set","Map"],"mappings":";;;;;;;;;;;;;;;AAMO,MAAMA,8BAA8BC;IAMlC,UAAU;QACf,OAAO;IACT;IAMA,MAAa,SAASC,GAAW,EAAoB;QACnD,OAAO,IAAI,CAAC,KAAK,CAACA,KAAK;YACrB,MAAM,CAACC,OAAO,GAAGC,KAAK,GAAG,IAAI,CAAC,OAAO,CAACF;YACtC,MAAMG,OAAO,IAAI,CAAC,OAAO,CAACF;YAE1B,IAAI,CAACE,MAAM;YAEX,IAAIC,MAAeD;YAGnB,IAAIE,SAAAA,cAA6B,CAACD,MAAM;gBACtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAACJ,MAAM;oBAClC,MAAMM,OAAO,IAAIC,QAAQ,CAACC;wBACxBC,YAAY,IAAI,CACdC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,EAC/B;4BAAEV;wBAAI,GACN,CACEI;4BAEAI,QAAQJ,IAAI,GAAG;wBACjB;oBAEJ;oBAMA,IAAI,CAAC,eAAe,CAAC,GAAG,CAACJ,KAAKM;gBAChC;gBAEAF,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAACJ;gBACrC,IAAI,CAAC,eAAe,CAAC,MAAM,CAACA;gBAC5B,OAAOI;YACT;YAEA,OAAOF,KAAK,MAAM,GAAG,IAAIS,IAAIP,KAAK,IAAI,CAAC,QAAQ,CAACF,SAASE;QAC3D;IACF;IAEA,MAAa,QAMX,GAAGQ,IAAmD,EAAc;QACpE,MAAM,CAACC,KAAKC,KAAK,GAAGF;QAEpB,MAAMZ,MAAMc,OAAO,GAAGD,IAAI,CAAC,EAAEE,KAAK,SAAS,CAACD,OAAO,GAAG,GAAGD,KAAK;QAC9D,MAAMG,aAAa,IAAI,CAAC,GAAG,CAAC,uBAAuB;QAEnD,OAAO,IAAI,CAAC,KAAK,CAAChB,KAAK,UACd,IAAIO,QAAQ,CAACC;gBAClBC,UAAUO,YAAY,IAAI,CACxBH,KACAC,MACA,CAACV;oBACCI,QAAQJ,IAAI,GAAG;gBACjB;YAEJ;IAQJ;IAEO,UAAU;QACf,KAAK,CAAC;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAACa,KAAKJ;YACxBI,IAAI,OAAO,CAAC,CAACC;gBACX,IAAI,CAAC,kBAAkB,CAACL,KAAKK;YAC/B;YACAD,IAAI,KAAK;QACX;QACA,IAAI,CAAC,MAAM,CAAC,KAAK;IACnB;IAKO,aACLJ,GAAM,EACNM,EAA2D,EAC3D;QACA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAACN,MACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAACA,KAAK,IAAIO;QAG3B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAACP,KAAM,GAAG,CAACM,KAC5B;QAGF,IAAI,CAAC,MAAM,CAAC,GAAG,CAACN,KAAM,GAAG,CAACM;QAC1BV,YAAY,EAAE,CAACI,KAAeM;IAChC;IAEO,mBAELN,GAAM,EAAEM,EAA2D,EAAE;QACrEV,YAAY,GAAG,CAACI,KAAeM;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAACN,KAAM,MAAM,CAACM;IAC/B;;QAxHK,gBACL,uBAAU,UAGN,IAAIE;;AAqHV"}
1
+ {"version":3,"file":"utils/data/local.mjs","sources":["webpack://@rsdoctor/components/./src/utils/data/local.ts"],"sourcesContent":["import { Manifest as ManifestShared } from '@rsdoctor/utils/common';\nimport { Common, Manifest, SDK } from '@rsdoctor/types';\nimport { get } from 'es-toolkit/compat';\nimport { BaseDataLoader } from './base';\nimport { getSocket } from '../socket';\n\nexport class LocalServerDataLoader extends BaseDataLoader {\n protected events: Map<\n SDK.ServerAPI.API | SDK.ServerAPI.APIExtends,\n Set<Common.Function>\n > = new Map();\n\n public isLocal() {\n return true;\n }\n\n public async loadData<T extends keyof Manifest.RsdoctorManifestData>(\n key: T,\n ): Promise<void | Manifest.RsdoctorManifestData[T]>;\n\n public async loadData(key: string): Promise<unknown> {\n return this.limit(key, async () => {\n const [scope, ...rest] = this.getKeys(key);\n const data = this.getData(scope as keyof Manifest.RsdoctorManifestData);\n\n if (!data) return;\n\n let res: unknown = data;\n\n // sharding files\n if (ManifestShared.isShardingData(res)) {\n if (!this.shardingDataMap.has(key)) {\n const task = new Promise((resolve) => {\n getSocket().emit(\n SDK.ServerAPI.API.LoadDataByKey,\n { key },\n (\n res: SDK.ServerAPI.SocketResponseType<SDK.ServerAPI.API.LoadDataByKey>,\n ) => {\n resolve(res.res);\n },\n );\n });\n // const task = postServerAPI(SDK.ServerAPI.API.LoadDataByKey, { key }).catch((err) => {\n // this.log(`loadData error: `, res, key);\n // throw err;\n // });\n // save with every key\n this.shardingDataMap.set(key, task);\n }\n\n res = await this.shardingDataMap.get(key);\n this.shardingDataMap.delete(key);\n return res;\n }\n\n return rest.length > 0 ? get(res, this.joinKeys(rest)) : res;\n });\n }\n\n public async loadAPI<\n T extends SDK.ServerAPI.API,\n B extends\n SDK.ServerAPI.InferRequestBodyType<T> = SDK.ServerAPI.InferRequestBodyType<T>,\n R extends\n SDK.ServerAPI.InferResponseType<T> = SDK.ServerAPI.InferResponseType<T>,\n >(...args: B extends void ? [api: T] : [api: T, body: B]): Promise<R> {\n const [api, body] = args;\n // request limitation key\n const key = body ? `${api}_${JSON.stringify(body)}` : `${api}`;\n const socketPort = this.get('__SOCKET__PORT__') ?? '';\n\n return this.limit(key, async () => {\n return new Promise((resolve) => {\n getSocket(socketPort).emit(\n api,\n body,\n (res: SDK.ServerAPI.SocketResponseType<T>) => {\n resolve(res.res as R);\n },\n );\n });\n // const res = await postServerAPI(...args).catch((err) => {\n // this.log(`loadAPI error: `, key);\n // throw err;\n // });\n\n // return res as R;\n });\n }\n\n public dispose() {\n super.dispose();\n this.events.forEach((evs, api) => {\n evs.forEach((ev) => {\n this.removeOnDataUpdate(api, ev);\n });\n evs.clear();\n });\n this.events.clear();\n }\n\n /**\n * add event listener when received data from server.\n */\n public onDataUpdate<T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends>(\n api: T,\n fn: (response: SDK.ServerAPI.SocketResponseType<T>) => void,\n ) {\n if (!this.events.has(api)) {\n this.events.set(api, new Set());\n }\n\n if (this.events.get(api)!.has(fn)) {\n return;\n }\n\n this.events.get(api)!.add(fn);\n getSocket().on(api as string, fn);\n }\n\n public removeOnDataUpdate<\n T extends SDK.ServerAPI.API | SDK.ServerAPI.APIExtends,\n >(api: T, fn: (response: SDK.ServerAPI.SocketResponseType<T>) => void) {\n getSocket().off(api as string, fn);\n this.events.get(api)!.delete(fn);\n }\n}\n"],"names":["LocalServerDataLoader","BaseDataLoader","key","scope","rest","data","res","ManifestShared","task","Promise","resolve","getSocket","SDK","get","args","api","body","JSON","socketPort","evs","ev","fn","Set","Map"],"mappings":";;;;;;;;;;;;;;;AAMO,MAAMA,8BAA8BC;IAMlC,UAAU;QACf,OAAO;IACT;IAMA,MAAa,SAASC,GAAW,EAAoB;QACnD,OAAO,IAAI,CAAC,KAAK,CAACA,KAAK;YACrB,MAAM,CAACC,OAAO,GAAGC,KAAK,GAAG,IAAI,CAAC,OAAO,CAACF;YACtC,MAAMG,OAAO,IAAI,CAAC,OAAO,CAACF;YAE1B,IAAI,CAACE,MAAM;YAEX,IAAIC,MAAeD;YAGnB,IAAIE,SAAAA,cAA6B,CAACD,MAAM;gBACtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAACJ,MAAM;oBAClC,MAAMM,OAAO,IAAIC,QAAQ,CAACC;wBACxBC,YAAY,IAAI,CACdC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,EAC/B;4BAAEV;wBAAI,GACN,CACEI;4BAEAI,QAAQJ,IAAI,GAAG;wBACjB;oBAEJ;oBAMA,IAAI,CAAC,eAAe,CAAC,GAAG,CAACJ,KAAKM;gBAChC;gBAEAF,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAACJ;gBACrC,IAAI,CAAC,eAAe,CAAC,MAAM,CAACA;gBAC5B,OAAOI;YACT;YAEA,OAAOF,KAAK,MAAM,GAAG,IAAIS,IAAIP,KAAK,IAAI,CAAC,QAAQ,CAACF,SAASE;QAC3D;IACF;IAEA,MAAa,QAMX,GAAGQ,IAAmD,EAAc;QACpE,MAAM,CAACC,KAAKC,KAAK,GAAGF;QAEpB,MAAMZ,MAAMc,OAAO,GAAGD,IAAI,CAAC,EAAEE,KAAK,SAAS,CAACD,OAAO,GAAG,GAAGD,KAAK;QAC9D,MAAMG,aAAa,IAAI,CAAC,GAAG,CAAC,uBAAuB;QAEnD,OAAO,IAAI,CAAC,KAAK,CAAChB,KAAK,UACd,IAAIO,QAAQ,CAACC;gBAClBC,UAAUO,YAAY,IAAI,CACxBH,KACAC,MACA,CAACV;oBACCI,QAAQJ,IAAI,GAAG;gBACjB;YAEJ;IAQJ;IAEO,UAAU;QACf,KAAK,CAAC;QACN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAACa,KAAKJ;YACxBI,IAAI,OAAO,CAAC,CAACC;gBACX,IAAI,CAAC,kBAAkB,CAACL,KAAKK;YAC/B;YACAD,IAAI,KAAK;QACX;QACA,IAAI,CAAC,MAAM,CAAC,KAAK;IACnB;IAKO,aACLJ,GAAM,EACNM,EAA2D,EAC3D;QACA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAACN,MACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAACA,KAAK,IAAIO;QAG3B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAACP,KAAM,GAAG,CAACM,KAC5B;QAGF,IAAI,CAAC,MAAM,CAAC,GAAG,CAACN,KAAM,GAAG,CAACM;QAC1BV,YAAY,EAAE,CAACI,KAAeM;IAChC;IAEO,mBAELN,GAAM,EAAEM,EAA2D,EAAE;QACrEV,YAAY,GAAG,CAACI,KAAeM;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAACN,KAAM,MAAM,CAACM;IAC/B;;QAxHK,gBACL,uBAAU,UAGN,IAAIE;;AAqHV"}
@@ -1,5 +1,5 @@
1
1
  import { Manifest } from "@rsdoctor/utils/common";
2
- import { get } from "lodash-es";
2
+ import { get } from "es-toolkit/compat";
3
3
  import { BaseDataLoader } from "./base.mjs";
4
4
  import { fetchShardingFile } from "../request.mjs";
5
5
  class RemoteDataLoader extends BaseDataLoader {
@@ -1 +1 @@
1
- {"version":3,"file":"utils/data/remote.mjs","sources":["webpack://@rsdoctor/components/./src/utils/data/remote.ts"],"sourcesContent":["import { Manifest, SDK } from '@rsdoctor/types';\nimport { Manifest as ManifestShared } from '@rsdoctor/utils/common';\nimport { get } from 'lodash-es';\nimport { BaseDataLoader } from './base';\nimport { fetchShardingFile } from '../request';\n\nexport class RemoteDataLoader extends BaseDataLoader {\n public isLocal() {\n return false;\n }\n\n public async loadData<T extends Manifest.RsdoctorManifestMappingKeys>(\n key: T,\n ): Promise<Manifest.InferManifestDataValue<T>>;\n\n public async loadData(key: string): Promise<unknown> {\n return this.limit(key, async () => {\n const [scope, ...rest] = this.getKeys(key);\n const data = this.getData(\n scope as keyof Manifest.RsdoctorManifestData,\n 'cloudData',\n );\n\n if (!data) return;\n\n let res = data;\n\n // sharding files\n if (ManifestShared.isShardingData(res)) {\n // only cache by the root key in data\n if (!this.shardingDataMap.has(scope)) {\n const task = ManifestShared.fetchShardingData(\n res,\n fetchShardingFile,\n ).catch((err) => {\n this.log(`loadData error: `, res, key);\n throw err;\n });\n this.shardingDataMap.set(scope, task);\n }\n\n res = await this.shardingDataMap.get(scope);\n }\n\n return rest.length > 0 ? get(res, this.joinKeys(rest)) : res;\n });\n }\n\n public async loadAPI<\n T extends SDK.ServerAPI.API,\n B extends\n SDK.ServerAPI.InferRequestBodyType<T> = SDK.ServerAPI.InferRequestBodyType<T>,\n R extends\n SDK.ServerAPI.InferResponseType<T> = SDK.ServerAPI.InferResponseType<T>,\n >(...args: B extends void ? [api: T] : [api: T, body: B]): Promise<R> {\n const [api, body] = args;\n // request limitation key\n const key = body ? `${api}_${JSON.stringify(body)}` : `${api}`;\n\n return this.limit(key, async () => {\n return this.loader.loadAPI(...args) as R;\n });\n }\n\n public dispose() {\n super.dispose();\n }\n\n public onDataUpdate() {}\n\n public removeOnDataUpdate() {}\n}\n"],"names":["RemoteDataLoader","BaseDataLoader","key","scope","rest","data","res","ManifestShared","task","fetchShardingFile","err","get","args","api","body","JSON"],"mappings":";;;;AAMO,MAAMA,yBAAyBC;IAC7B,UAAU;QACf,OAAO;IACT;IAMA,MAAa,SAASC,GAAW,EAAoB;QACnD,OAAO,IAAI,CAAC,KAAK,CAACA,KAAK;YACrB,MAAM,CAACC,OAAO,GAAGC,KAAK,GAAG,IAAI,CAAC,OAAO,CAACF;YACtC,MAAMG,OAAO,IAAI,CAAC,OAAO,CACvBF,OACA;YAGF,IAAI,CAACE,MAAM;YAEX,IAAIC,MAAMD;YAGV,IAAIE,SAAAA,cAA6B,CAACD,MAAM;gBAEtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAACH,QAAQ;oBACpC,MAAMK,OAAOD,SAAAA,iBAAgC,CAC3CD,KACAG,mBACA,KAAK,CAAC,CAACC;wBACP,IAAI,CAAC,GAAG,CAAC,oBAAoBJ,KAAKJ;wBAClC,MAAMQ;oBACR;oBACA,IAAI,CAAC,eAAe,CAAC,GAAG,CAACP,OAAOK;gBAClC;gBAEAF,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAACH;YACvC;YAEA,OAAOC,KAAK,MAAM,GAAG,IAAIO,IAAIL,KAAK,IAAI,CAAC,QAAQ,CAACF,SAASE;QAC3D;IACF;IAEA,MAAa,QAMX,GAAGM,IAAmD,EAAc;QACpE,MAAM,CAACC,KAAKC,KAAK,GAAGF;QAEpB,MAAMV,MAAMY,OAAO,GAAGD,IAAI,CAAC,EAAEE,KAAK,SAAS,CAACD,OAAO,GAAG,GAAGD,KAAK;QAE9D,OAAO,IAAI,CAAC,KAAK,CAACX,KAAK,UACd,IAAI,CAAC,MAAM,CAAC,OAAO,IAAIU;IAElC;IAEO,UAAU;QACf,KAAK,CAAC;IACR;IAEO,eAAe,CAAC;IAEhB,qBAAqB,CAAC;AAC/B"}
1
+ {"version":3,"file":"utils/data/remote.mjs","sources":["webpack://@rsdoctor/components/./src/utils/data/remote.ts"],"sourcesContent":["import { Manifest, SDK } from '@rsdoctor/types';\nimport { Manifest as ManifestShared } from '@rsdoctor/utils/common';\nimport { get } from 'es-toolkit/compat';\nimport { BaseDataLoader } from './base';\nimport { fetchShardingFile } from '../request';\n\nexport class RemoteDataLoader extends BaseDataLoader {\n public isLocal() {\n return false;\n }\n\n public async loadData<T extends Manifest.RsdoctorManifestMappingKeys>(\n key: T,\n ): Promise<Manifest.InferManifestDataValue<T>>;\n\n public async loadData(key: string): Promise<unknown> {\n return this.limit(key, async () => {\n const [scope, ...rest] = this.getKeys(key);\n const data = this.getData(\n scope as keyof Manifest.RsdoctorManifestData,\n 'cloudData',\n );\n\n if (!data) return;\n\n let res = data;\n\n // sharding files\n if (ManifestShared.isShardingData(res)) {\n // only cache by the root key in data\n if (!this.shardingDataMap.has(scope)) {\n const task = ManifestShared.fetchShardingData(\n res,\n fetchShardingFile,\n ).catch((err) => {\n this.log(`loadData error: `, res, key);\n throw err;\n });\n this.shardingDataMap.set(scope, task);\n }\n\n res = await this.shardingDataMap.get(scope);\n }\n\n return rest.length > 0 ? get(res, this.joinKeys(rest)) : res;\n });\n }\n\n public async loadAPI<\n T extends SDK.ServerAPI.API,\n B extends\n SDK.ServerAPI.InferRequestBodyType<T> = SDK.ServerAPI.InferRequestBodyType<T>,\n R extends\n SDK.ServerAPI.InferResponseType<T> = SDK.ServerAPI.InferResponseType<T>,\n >(...args: B extends void ? [api: T] : [api: T, body: B]): Promise<R> {\n const [api, body] = args;\n // request limitation key\n const key = body ? `${api}_${JSON.stringify(body)}` : `${api}`;\n\n return this.limit(key, async () => {\n return this.loader.loadAPI(...args) as R;\n });\n }\n\n public dispose() {\n super.dispose();\n }\n\n public onDataUpdate() {}\n\n public removeOnDataUpdate() {}\n}\n"],"names":["RemoteDataLoader","BaseDataLoader","key","scope","rest","data","res","ManifestShared","task","fetchShardingFile","err","get","args","api","body","JSON"],"mappings":";;;;AAMO,MAAMA,yBAAyBC;IAC7B,UAAU;QACf,OAAO;IACT;IAMA,MAAa,SAASC,GAAW,EAAoB;QACnD,OAAO,IAAI,CAAC,KAAK,CAACA,KAAK;YACrB,MAAM,CAACC,OAAO,GAAGC,KAAK,GAAG,IAAI,CAAC,OAAO,CAACF;YACtC,MAAMG,OAAO,IAAI,CAAC,OAAO,CACvBF,OACA;YAGF,IAAI,CAACE,MAAM;YAEX,IAAIC,MAAMD;YAGV,IAAIE,SAAAA,cAA6B,CAACD,MAAM;gBAEtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAACH,QAAQ;oBACpC,MAAMK,OAAOD,SAAAA,iBAAgC,CAC3CD,KACAG,mBACA,KAAK,CAAC,CAACC;wBACP,IAAI,CAAC,GAAG,CAAC,oBAAoBJ,KAAKJ;wBAClC,MAAMQ;oBACR;oBACA,IAAI,CAAC,eAAe,CAAC,GAAG,CAACP,OAAOK;gBAClC;gBAEAF,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAACH;YACvC;YAEA,OAAOC,KAAK,MAAM,GAAG,IAAIO,IAAIL,KAAK,IAAI,CAAC,QAAQ,CAACF,SAASE;QAC3D;IACF;IAEA,MAAa,QAMX,GAAGM,IAAmD,EAAc;QACpE,MAAM,CAACC,KAAKC,KAAK,GAAGF;QAEpB,MAAMV,MAAMY,OAAO,GAAGD,IAAI,CAAC,EAAEE,KAAK,SAAS,CAACD,OAAO,GAAG,GAAGD,KAAK;QAE9D,OAAO,IAAI,CAAC,KAAK,CAACX,KAAK,UACd,IAAI,CAAC,MAAM,CAAC,OAAO,IAAIU;IAElC;IAEO,UAAU;QACf,KAAK,CAAC;IACR;IAEO,eAAe,CAAC;IAEhB,qBAAqB,CAAC;AAC/B"}
@@ -1,5 +1,5 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { get } from "lodash-es";
2
+ import { get } from "es-toolkit/compat";
3
3
  import { Space, message } from "antd";
4
4
  import { FileOutlined, FolderOpenTwoTone, FolderTwoTone, RightOutlined } from "@ant-design/icons";
5
5
  import { getFileCom } from "../components/FileTree/index.mjs";