@rsdoctor/components 1.3.7 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/imgs/connection-point.mjs.map +1 -1
- package/dist/common/imgs/webpack.mjs.map +1 -1
- package/dist/common/svg/bundle-size.mjs.map +1 -1
- package/dist/common/svg/error.mjs.map +1 -1
- package/dist/common/svg/file-css.mjs.map +1 -1
- package/dist/common/svg/file-html.mjs.map +1 -1
- package/dist/common/svg/file-image.mjs.map +1 -1
- package/dist/common/svg/file-js.mjs.map +1 -1
- package/dist/common/svg/file-unknown.mjs.map +1 -1
- package/dist/common/svg/file.mjs.map +1 -1
- package/dist/common/svg/files/css.mjs.map +1 -1
- package/dist/common/svg/files/html.mjs.map +1 -1
- package/dist/common/svg/files/image.mjs.map +1 -1
- package/dist/common/svg/files/js.mjs.map +1 -1
- package/dist/common/svg/files/unkown-file.mjs.map +1 -1
- package/dist/common/svg/loader/input.mjs.map +1 -1
- package/dist/common/svg/loader/output.mjs.map +1 -1
- package/dist/common/svg/loader/step.mjs.map +1 -1
- package/dist/common/svg/navbar/bundle-size-active.mjs.map +1 -1
- package/dist/common/svg/navbar/bundle-size-inactive.mjs.map +1 -1
- package/dist/common/svg/navbar/compile-analysis-active.mjs.map +1 -1
- package/dist/common/svg/navbar/compile-analysis-inactive.mjs.map +1 -1
- package/dist/common/svg/navbar/overall-active.mjs.map +1 -1
- package/dist/common/svg/navbar/overall-inactive.mjs.map +1 -1
- package/dist/common/svg/output.mjs.map +1 -1
- package/dist/common/svg/source-size.mjs.map +1 -1
- package/dist/common/svg/source.mjs.map +1 -1
- package/dist/common/svg/total-size.mjs.map +1 -1
- package/dist/common/svg/version.mjs.map +1 -1
- package/dist/components/Alert/change.d.ts +1 -1
- package/dist/components/Alert/change.mjs.map +1 -1
- package/dist/components/Alert/ecma-version-check.d.ts +1 -1
- package/dist/components/Alert/ecma-version-check.mjs.map +1 -1
- package/dist/components/Alert/ecma-version-check.module.mjs.map +1 -1
- package/dist/components/Alert/file-relation.d.ts +1 -1
- package/dist/components/Alert/file-relation.mjs.map +1 -1
- package/dist/components/Alert/package-relation.d.ts +1 -1
- package/dist/components/Alert/package-relation.mjs.map +1 -1
- package/dist/components/Alert/package-relation.module.mjs.map +1 -1
- package/dist/components/Alert/view.d.ts +1 -1
- package/dist/components/Alert/view.mjs.map +1 -1
- package/dist/components/Alerts/bundle-alert.d.ts +2 -2
- package/dist/components/Alerts/bundle-alert.mjs.map +1 -1
- package/dist/components/Alerts/bundle-alert.module.mjs.map +1 -1
- package/dist/components/Alerts/bundle.mjs.map +1 -1
- package/dist/components/Alerts/collapse-cross-chunks.d.ts +1 -1
- package/dist/components/Alerts/collapse-cross-chunks.mjs.map +1 -1
- package/dist/components/Alerts/collapse.d.ts +1 -1
- package/dist/components/Alerts/collapse.mjs.map +1 -1
- package/dist/components/Alerts/collapse.module.mjs.map +1 -1
- package/dist/components/Alerts/compile.mjs.map +1 -1
- package/dist/components/Alerts/index.d.ts +3 -3
- package/dist/components/Alerts/list.mjs.map +1 -1
- package/dist/components/Alerts/list.module.mjs.map +1 -1
- package/dist/components/Alerts/overlay.mjs.map +1 -1
- package/dist/components/Alerts/overlay.module.mjs.map +1 -1
- package/dist/components/Badge/index.mjs.map +1 -1
- package/dist/components/Card/diff.d.ts +1 -1
- package/dist/components/Card/diff.mjs.map +1 -1
- package/dist/components/Card/index.d.ts +1 -1
- package/dist/components/Card/index.mjs.map +1 -1
- package/dist/components/Card/size.mjs.map +1 -1
- package/dist/components/Card/size.module.mjs.map +1 -1
- package/dist/components/Card/statistic.mjs.map +1 -1
- package/dist/components/Charts/TimelineCharts/index.d.ts +2 -2
- package/dist/components/Charts/TimelineCharts/index.mjs.map +1 -1
- package/dist/components/Charts/TreeMap.mjs.map +1 -1
- package/dist/components/Charts/bootstrap.d.ts +1 -1
- package/dist/components/Charts/bootstrap.mjs.map +1 -1
- package/dist/components/Charts/common.d.ts +2 -2
- package/dist/components/Charts/common.mjs.map +1 -1
- package/dist/components/Charts/constants.mjs.map +1 -1
- package/dist/components/Charts/done.d.ts +1 -1
- package/dist/components/Charts/done.mjs.map +1 -1
- package/dist/components/Charts/index.mjs.map +1 -1
- package/dist/components/Charts/loader.d.ts +1 -1
- package/dist/components/Charts/loader.mjs.map +1 -1
- package/dist/components/Charts/minify.d.ts +1 -1
- package/dist/components/Charts/minify.mjs.map +1 -1
- package/dist/components/Charts/treemap.module.mjs.map +1 -1
- package/dist/components/Charts/types.mjs.map +1 -1
- package/dist/components/Charts/utils.d.ts +1 -1
- package/dist/components/Charts/utils.mjs.map +1 -1
- package/dist/components/Configuration/builder.mjs.map +1 -1
- package/dist/components/Configuration/builder.module.mjs.map +1 -1
- package/dist/components/Configuration/index.d.ts +1 -1
- package/dist/components/FileTree/css.mjs.map +1 -1
- package/dist/components/FileTree/html.mjs.map +1 -1
- package/dist/components/FileTree/image.mjs.map +1 -1
- package/dist/components/FileTree/index.mjs.map +1 -1
- package/dist/components/FileTree/js.mjs.map +1 -1
- package/dist/components/FileTree/unkown-file.mjs.map +1 -1
- package/dist/components/Form/keyword.mjs.map +1 -1
- package/dist/components/Keyword/index.mjs.map +1 -1
- package/dist/components/Keyword/style.module.mjs.map +1 -1
- package/dist/components/Layout/builder-select.mjs.map +1 -1
- package/dist/components/Layout/bundle-size-icon.mjs.map +1 -1
- package/dist/components/Layout/compile-icon.mjs.map +1 -1
- package/dist/components/Layout/constants.mjs.map +1 -1
- package/dist/components/Layout/header.mjs.map +1 -1
- package/dist/components/Layout/index.mjs.map +1 -1
- package/dist/components/Layout/menus.mjs.map +1 -1
- package/dist/components/Layout/overall-icon.mjs.map +1 -1
- package/dist/components/Layout/progress.mjs.map +1 -1
- package/dist/components/Loader/Analysis/files.mjs.map +1 -1
- package/dist/components/Loader/Analysis/index.mjs.map +1 -1
- package/dist/components/Loader/Analysis/input.mjs.map +1 -1
- package/dist/components/Loader/Analysis/output.mjs.map +1 -1
- package/dist/components/Loader/Analysis/style.module.mjs.map +1 -1
- package/dist/components/Loader/executions.mjs.map +1 -1
- package/dist/components/Loader/step.mjs.map +1 -1
- package/dist/components/Manifest/api.mjs.map +1 -1
- package/dist/components/Manifest/data.mjs.map +1 -1
- package/dist/components/Manifest/index.d.ts +2 -2
- package/dist/components/Opener/code.mjs.map +1 -1
- package/dist/components/Opener/index.d.ts +2 -2
- package/dist/components/Opener/vscode.mjs.map +1 -1
- package/dist/components/Overall/DataSummary.mjs.map +1 -1
- package/dist/components/Overall/DataSummary.module.mjs.map +1 -1
- package/dist/components/Overall/bundle.mjs.map +1 -1
- package/dist/components/Overall/bundle.module.mjs.map +1 -1
- package/dist/components/Overall/card.module.mjs.map +1 -1
- package/dist/components/Overall/compile.mjs.map +1 -1
- package/dist/components/Overall/compile.module.mjs.map +1 -1
- package/dist/components/Overall/help-center.mjs.map +1 -1
- package/dist/components/Overall/help-center.module.mjs.map +1 -1
- package/dist/components/Overall/index.d.ts +3 -3
- package/dist/components/Overall/list.module.mjs.map +1 -1
- package/dist/components/Overall/overview.mjs.map +1 -1
- package/dist/components/Overall/overview.module.mjs.map +1 -1
- package/dist/components/Overall/project.mjs.map +1 -1
- package/dist/components/Overall/project.module.mjs.map +1 -1
- package/dist/components/Plugins/webpack.mjs.map +1 -1
- package/dist/components/Resolver/analysis.mjs.map +1 -1
- package/dist/components/Select/index.mjs.map +1 -1
- package/dist/components/Status/failed.mjs.map +1 -1
- package/dist/components/Status/index.d.ts +1 -1
- package/dist/components/TextDrawer/duplicate.d.ts +2 -2
- package/dist/components/TextDrawer/duplicate.mjs.map +1 -1
- package/dist/components/TextDrawer/index.d.ts +1 -1
- package/dist/components/TextDrawer/index.mjs.map +1 -1
- package/dist/components/Title/index.mjs.map +1 -1
- package/dist/components/base/CodeViewer/index.d.ts +4 -4
- package/dist/components/base/CodeViewer/index.mjs.map +1 -1
- package/dist/components/base/CodeViewer/index.module.mjs.map +1 -1
- package/dist/components/base/CodeViewer/useCodeDrawer.d.ts +1 -1
- package/dist/components/base/CodeViewer/useCodeDrawer.mjs.map +1 -1
- package/dist/components/base/CodeViewer/utils.mjs.map +1 -1
- package/dist/components/base/DiffViewer/index.d.ts +4 -4
- package/dist/components/base/DiffViewer/index.mjs.map +1 -1
- package/dist/components/base/DiffViewer/index.module.mjs.map +1 -1
- package/dist/components/base/DiffViewer/useDiffDrawer.d.ts +1 -1
- package/dist/components/base/DiffViewer/useDiffDrawer.mjs.map +1 -1
- package/dist/components/base/DiffViewer/utils.mjs.map +1 -1
- package/dist/components/base/index.d.ts +2 -2
- package/dist/components/index.d.ts +10 -10
- package/dist/config.d.ts +1 -1
- package/dist/config.mjs.map +1 -1
- package/dist/constants.mjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/pages/BundleSize/components/asset.d.ts +1 -1
- package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
- package/dist/pages/BundleSize/components/card.module.mjs.map +1 -1
- package/dist/pages/BundleSize/components/cards.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.module.mjs.map +1 -1
- package/dist/pages/BundleSize/components/search-modal.mjs.map +1 -1
- package/dist/pages/BundleSize/config.mjs.map +1 -1
- package/dist/pages/BundleSize/constants.mjs.map +1 -1
- package/dist/pages/BundleSize/index.d.ts +1 -1
- package/dist/pages/BundleSize/index.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/chunks.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/components/fileTreeCom.d.ts +1 -1
- package/dist/pages/ModuleAnalyze/components/fileTreeCom.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/constants.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/dependency.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/fileTree.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/index.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/utils/hooks.mjs.map +1 -1
- package/dist/pages/ModuleAnalyze/utils/index.mjs.map +1 -1
- package/dist/pages/ModuleResolve/constants.mjs.map +1 -1
- package/dist/pages/ModuleResolve/index.d.ts +1 -1
- package/dist/pages/ModuleResolve/index.mjs.map +1 -1
- package/dist/pages/Overall/constants.mjs.map +1 -1
- package/dist/pages/Overall/index.d.ts +1 -1
- package/dist/pages/Overall/index.mjs.map +1 -1
- package/dist/pages/Overall/index.module.mjs.map +1 -1
- package/dist/pages/Overall/responsiveLayout.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/assets.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/cards.d.ts +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/cards.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/changes.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/constants.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/index.d.ts +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/index.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/modules.d.ts +2 -2
- package/dist/pages/Resources/BundleDiff/DiffContainer/modules.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/overview.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/packages.d.ts +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/packages.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/row.d.ts +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/row.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffContainer/types.d.ts +2 -2
- package/dist/pages/Resources/BundleDiff/DiffContainer/utils.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.d.ts +1 -1
- package/dist/pages/Resources/BundleDiff/DiffServerAPIProvider/index.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/constants.mjs.map +1 -1
- package/dist/pages/Resources/BundleDiff/index.d.ts +2 -2
- package/dist/pages/Resources/BundleDiff/index.mjs.map +1 -1
- package/dist/pages/Resources/RuleIndex/constants.mjs.map +1 -1
- package/dist/pages/Resources/RuleIndex/index.d.ts +1 -1
- package/dist/pages/Resources/RuleIndex/index.mjs.map +1 -1
- package/dist/pages/TreeShaking/constants.mjs.map +1 -1
- package/dist/pages/TreeShaking/editor.d.ts +1 -1
- package/dist/pages/TreeShaking/editor.mjs.map +1 -1
- package/dist/pages/TreeShaking/index.d.ts +1 -1
- package/dist/pages/TreeShaking/index.mjs.map +1 -1
- package/dist/pages/TreeShaking/open-tag.mjs.map +1 -1
- package/dist/pages/TreeShaking/range.mjs.map +1 -1
- package/dist/pages/TreeShaking/space.mjs.map +1 -1
- package/dist/pages/TreeShaking/table.d.ts +1 -1
- package/dist/pages/TreeShaking/table.mjs.map +1 -1
- package/dist/pages/TreeShaking/utils.d.ts +1 -1
- package/dist/pages/TreeShaking/utils.mjs.map +1 -1
- package/dist/pages/Uploader/constants.mjs.map +1 -1
- package/dist/pages/Uploader/index.d.ts +1 -1
- package/dist/pages/Uploader/index.mjs.map +1 -1
- package/dist/pages/Uploader/utils.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Analysis/constants.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Analysis/index.d.ts +1 -1
- package/dist/pages/WebpackLoaders/Analysis/index.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Overall/constants.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.d.ts +1 -1
- package/dist/pages/WebpackLoaders/Overall/index.mjs.map +1 -1
- package/dist/pages/WebpackLoaders/constants.mjs.map +1 -1
- package/dist/pages/WebpackPlugins/constants.mjs.map +1 -1
- package/dist/pages/WebpackPlugins/index.d.ts +1 -1
- package/dist/pages/WebpackPlugins/index.mjs.map +1 -1
- package/dist/pages/index.d.ts +11 -11
- package/dist/utils/data/base.mjs.map +1 -1
- package/dist/utils/data/brief.d.ts +1 -1
- package/dist/utils/data/brief.mjs.map +1 -1
- package/dist/utils/data/index.d.ts +1 -1
- package/dist/utils/data/index.mjs.map +1 -1
- package/dist/utils/data/local.d.ts +1 -1
- package/dist/utils/data/local.mjs.map +1 -1
- package/dist/utils/data/remote.d.ts +1 -1
- package/dist/utils/data/remote.mjs.map +1 -1
- package/dist/utils/file.mjs.map +1 -1
- package/dist/utils/hooks.d.ts +1 -1
- package/dist/utils/hooks.mjs +4 -3
- package/dist/utils/hooks.mjs.map +1 -1
- package/dist/utils/i18n/cn.d.ts +1 -1
- package/dist/utils/i18n/cn.mjs.map +1 -1
- package/dist/utils/i18n/en.mjs +3 -3
- package/dist/utils/i18n/en.mjs.map +1 -1
- package/dist/utils/i18n/index.mjs.map +1 -1
- package/dist/utils/index.d.ts +16 -16
- package/dist/utils/loader.mjs.map +1 -1
- package/dist/utils/locale.d.ts +1 -1
- package/dist/utils/locale.mjs.map +1 -1
- package/dist/utils/manifest.d.ts +4 -4
- package/dist/utils/manifest.mjs.map +1 -1
- package/dist/utils/request.mjs.map +1 -1
- package/dist/utils/routes.mjs.map +1 -1
- package/dist/utils/size.mjs.map +1 -1
- package/dist/utils/socket.mjs.map +1 -1
- package/dist/utils/stats.mjs.map +1 -1
- package/dist/utils/storage.d.ts +2 -2
- package/dist/utils/storage.mjs.map +1 -1
- package/dist/utils/string.mjs.map +1 -1
- package/dist/utils/time.mjs.map +1 -1
- package/dist/utils/url.mjs.map +1 -1
- package/dist/utils/worker/index.d.ts +4 -4
- package/dist/utils/worker/master.d.ts +2 -2
- package/dist/utils/worker/master.mjs.map +1 -1
- package/dist/utils/worker/utils.d.ts +1 -1
- package/dist/utils/worker/utils.mjs.map +1 -1
- package/dist/utils/worker/worker.d.ts +1 -1
- package/dist/utils/worker/worker.mjs.map +1 -1
- package/package.json +7 -7
package/dist/utils/file.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/file.mjs","sources":["webpack://@rsdoctor/components/./src/utils/file.tsx"],"sourcesContent":["import { get } from 'es-toolkit/compat';\nimport { Common, SDK } from '@rsdoctor/types';\nimport { message, Space, TreeNodeProps, UploadFile } from 'antd';\nimport { FieldDataNode } from 'rc-tree';\nimport {\n FolderOpenTwoTone,\n FolderTwoTone,\n FileOutlined,\n RightOutlined,\n} from '@ant-design/icons';\nimport { getFileCom } from 'src/components/FileTree';\n\nexport type DataNode = FieldDataNode<{\n key: string | number;\n title?: React.ReactNode | ((data: DataNode) => React.ReactNode);\n}> & { __BASENAME__?: any; __RESOURCEPATH__?: any; children?: DataNode[] };\n\nexport const rootDirname = (file: string, sep = '/'): string | null => {\n const idx = file?.indexOf(sep);\n if (idx === -1) {\n return null;\n }\n if (idx === 0) {\n return sep + (rootDirname(file?.slice(1)) || '');\n }\n return file?.slice(0, idx);\n};\n\nexport function mapFileKey(\n arr: DataNode[],\n depth = 2,\n filter: (node: DataNode) => boolean = () => true,\n): DataNode['key'][] {\n let d = 0;\n const res: DataNode['key'][] = [];\n let parent: DataNode[] = arr;\n while (d < depth) {\n parent.filter(filter).forEach((e) => {\n if (!e.isLeaf) {\n res.push(e.key);\n }\n });\n parent = parent.reduce<DataNode[]>(\n (t, e) => t.concat(e.children || []),\n [],\n );\n if (!parent.length) break;\n d++;\n }\n return res;\n}\n\nconst basenameKey = '__BASENAME__';\n\nexport function flattenDirectory(\n n: DataNode,\n parent: DataNode,\n sep = '/',\n inlinedResourcePathKey: keyof DataNode,\n dirTitle = (_dir: DataNode, defaultTitle: string): JSX.Element | string =>\n defaultTitle,\n) {\n if (n.isLeaf) return;\n if (parent.children && parent.children.length === 1) {\n const defaultTitle = [parent[basenameKey], n[basenameKey]].join(sep);\n parent[inlinedResourcePathKey] = n[inlinedResourcePathKey];\n parent[basenameKey] = defaultTitle;\n parent.key = [parent.key, n.key].join('-');\n parent.children = n.children;\n parent.title = dirTitle(parent, defaultTitle);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, parent, sep, inlinedResourcePathKey, dirTitle);\n });\n } else {\n // parent has more than 1 child.\n n.title = dirTitle(n, n[basenameKey]);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, n, sep, inlinedResourcePathKey, dirTitle);\n });\n }\n}\n\nexport function createFileStructures({\n files,\n sep = '/',\n inlinedResourcePathKey = '__RESOURCEPATH__',\n fileTitle = (_file: string, basename: string) => basename,\n dirTitle = (_dir: DataNode, defaultTitle: string) => defaultTitle,\n page = 'other',\n}: {\n files: string[];\n cwd?: string;\n sep?: string;\n inlinedResourcePathKey?: keyof DataNode;\n dirTitle?(dir: DataNode, defaultTitle: string): JSX.Element | string;\n fileTitle?(file: string, basename: string): JSX.Element | string;\n page?: 'bundle' | 'other';\n}): DataNode[] {\n const sepRegexp = new RegExp(sep);\n\n const res = files.reduce<DataNode>(\n (t, file) => {\n let dir = rootDirname(file, sep);\n let basename = dir ? file?.slice(dir.length + 1) : file;\n let parent: DataNode = t;\n\n while (dir) {\n // find the match directory.\n let exist = parent.children!.find((e) => e.title === dir) as DataNode;\n if (!exist) {\n const p = [parent[inlinedResourcePathKey], dir]\n .filter(Boolean)\n .join(sep);\n exist = {\n title: dir,\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps, false)\n : null,\n // key: [parent.key, parent.children!.length].join('-'),\n key: p,\n children: [],\n [inlinedResourcePathKey]: p,\n [basenameKey]: dir,\n };\n parent.children!.push(exist);\n }\n\n parent = exist;\n dir = rootDirname(basename);\n basename = dir\n ? basename.slice(dir.length).replace(sepRegexp, '')\n : basename;\n }\n\n // uniq\n if (parent.children!.some((e) => get(e, inlinedResourcePathKey) === file))\n return t;\n\n parent.children!.push({\n title() {\n return fileTitle(file, basename);\n },\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps)\n : null,\n key: file,\n isLeaf: true,\n [inlinedResourcePathKey]: file,\n [basenameKey]: basename,\n });\n\n return t;\n },\n { key: '0', children: [] },\n ).children!;\n\n res.forEach((e) => {\n e.children &&\n e.children.forEach((item) =>\n flattenDirectory(item, e, sep, inlinedResourcePathKey, dirTitle),\n );\n });\n\n return res;\n}\n\nexport function beautifyPath(path: string, cwd: string) {\n if (path.startsWith(cwd)) {\n return path.replace(cwd, '.');\n }\n\n return path;\n}\n\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: UploadFile,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: Blob,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: unknown,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const { result } = reader;\n console.log('reader result: ', result);\n try {\n const json = JSON.parse(result!.toString());\n resolve(json);\n } catch (err) {\n message.error('json parse error');\n reject(err);\n }\n };\n reader.onerror = () => {\n const msg = 'upload json file error, please try again.';\n message.error(msg);\n reject(new Error(msg));\n };\n reader.readAsText(((file as UploadFile).originFileObj || file) as Blob);\n });\n}\n\n/**\n * beautify module path, will replace cwd & last 'node_modules'\n */\nexport function beautifyModulePath(modulePath: string, cwd: string) {\n const res = beautifyPath(modulePath, cwd);\n\n const str = '/node_modules/';\n\n const idx = res.lastIndexOf(str);\n\n if (idx > -1) {\n return {\n alias: res.slice(idx + str.length),\n inNodeModules: true,\n };\n }\n\n return {\n alias: res,\n inNodeModules: false,\n };\n}\n\nexport function getFileIcon(props: TreeNodeProps, addRowIcon = true) {\n const { data } = props;\n const expanded = props.expanded;\n if (data?.children) {\n return (\n <Space>\n {addRowIcon ? (\n <RightOutlined\n className={`file-tree-switcher-arrow ${expanded ? 'file-tree-switcher-arrow-expand' : ''}`}\n />\n ) : (\n <></>\n )}\n {expanded ? <FolderOpenTwoTone /> : <FolderTwoTone />}\n </Space>\n );\n }\n if (props.eventKey && typeof props.eventKey === 'string') {\n return getFileCom(props.eventKey);\n }\n return <FileOutlined />;\n}\n\ntype TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n // Internal helper, not exported\n _map?: Map<string, TreeNode>;\n};\n\nexport function buildTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const root: TreeNode = { name: rootName, children: [], _map: new Map() };\n\n for (const mod of modules) {\n const parts = mod.path.split(/[\\\\/]/).filter(Boolean);\n let current = root;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n // File node\n if (!current.children) current.children = [];\n current.children.push({\n name: part,\n path: mod.path,\n sourceSize: mod.size?.sourceSize ?? 0,\n bundledSize: mod.size?.parsedSize ?? 0,\n gzipSize: mod.size?.gzipSize ?? 0,\n });\n } else {\n // Directory node\n if (!current._map) current._map = new Map();\n let child = current._map.get(part);\n if (!child) {\n child = { name: part, children: [], _map: new Map() };\n current.children!.push(child);\n current._map.set(part, child);\n }\n current = child;\n }\n }\n }\n\n // Clean up _map property\n function clean(node: TreeNode) {\n delete node._map;\n if (node.children) node.children.forEach(clean);\n }\n clean(root);\n\n return root;\n}\n\nfunction flattenSingleChildDirs(node: TreeNode): TreeNode {\n // Return directly if leaf node\n if (!node.children || node.children.length === 0) return node;\n\n let current = node;\n // As long as children has only one child and it's not a leaf, merge\n while (\n current.children &&\n current.children.length === 1 &&\n !current.children[0].sourceSize // Not a leaf\n ) {\n current = {\n name: current.name + '/' + current.children[0].name,\n children: current.children[0].children,\n };\n }\n\n // Recursively process all child nodes\n if (current.children) {\n current.children = current.children.map(flattenSingleChildDirs);\n }\n return current;\n}\n\nfunction sumDirValue(node: TreeNode): {\n sourceSize: number;\n bundledSize: number;\n gzipSize: number;\n} {\n if (!node.children || node.children.length === 0) {\n // Leaf node, just return value\n return {\n sourceSize: node.sourceSize ?? 0,\n bundledSize: node.bundledSize ?? 0,\n gzipSize: node.gzipSize ?? 0,\n };\n }\n // Recursively sum all child nodes\n let sourceSum = 0;\n let bundledSum = 0;\n let gzipSum = 0;\n for (const child of node.children) {\n const { sourceSize, bundledSize, gzipSize } = sumDirValue(child);\n sourceSum += sourceSize;\n bundledSum += bundledSize;\n gzipSum += gzipSize;\n }\n node.sourceSize = sourceSum;\n node.bundledSize = bundledSum;\n node.gzipSize = gzipSum;\n return { sourceSize: sourceSum, bundledSize: bundledSum, gzipSize: gzipSum };\n}\n\nexport function flattenTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const rawTree = buildTreemapData(modules, rootName);\n const flattenedTree = flattenSingleChildDirs(rawTree);\n sumDirValue(flattenedTree); // Recursive sum\n return flattenedTree;\n}\n"],"names":["rootDirname","file","sep","idx","mapFileKey","arr","depth","filter","d","res","parent","e","t","basenameKey","flattenDirectory","n","inlinedResourcePathKey","dirTitle","_dir","defaultTitle","c","createFileStructures","files","fileTitle","_file","basename","page","sepRegexp","RegExp","dir","exist","p","Boolean","props","getFileIcon","get","item","beautifyPath","path","cwd","readJSONByFileReader","Promise","resolve","reject","reader","FileReader","result","console","json","JSON","err","message","msg","Error","beautifyModulePath","modulePath","str","addRowIcon","data","expanded","Space","RightOutlined","FolderOpenTwoTone","FolderTwoTone","getFileCom","FileOutlined","buildTreemapData","modules","rootName","root","Map","mod","parts","current","i","part","child","clean","node","flattenSingleChildDirs","sumDirValue","sourceSum","bundledSum","gzipSum","sourceSize","bundledSize","gzipSize","flattenTreemapData","rawTree","flattenedTree"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils/file.mjs","sources":["../../src/utils/file.tsx"],"sourcesContent":["import { get } from 'es-toolkit/compat';\nimport { Common, SDK } from '@rsdoctor/types';\nimport { message, Space, TreeNodeProps, UploadFile } from 'antd';\nimport { FieldDataNode } from 'rc-tree';\nimport {\n FolderOpenTwoTone,\n FolderTwoTone,\n FileOutlined,\n RightOutlined,\n} from '@ant-design/icons';\nimport { getFileCom } from 'src/components/FileTree';\n\nexport type DataNode = FieldDataNode<{\n key: string | number;\n title?: React.ReactNode | ((data: DataNode) => React.ReactNode);\n}> & { __BASENAME__?: any; __RESOURCEPATH__?: any; children?: DataNode[] };\n\nexport const rootDirname = (file: string, sep = '/'): string | null => {\n const idx = file?.indexOf(sep);\n if (idx === -1) {\n return null;\n }\n if (idx === 0) {\n return sep + (rootDirname(file?.slice(1)) || '');\n }\n return file?.slice(0, idx);\n};\n\nexport function mapFileKey(\n arr: DataNode[],\n depth = 2,\n filter: (node: DataNode) => boolean = () => true,\n): DataNode['key'][] {\n let d = 0;\n const res: DataNode['key'][] = [];\n let parent: DataNode[] = arr;\n while (d < depth) {\n parent.filter(filter).forEach((e) => {\n if (!e.isLeaf) {\n res.push(e.key);\n }\n });\n parent = parent.reduce<DataNode[]>(\n (t, e) => t.concat(e.children || []),\n [],\n );\n if (!parent.length) break;\n d++;\n }\n return res;\n}\n\nconst basenameKey = '__BASENAME__';\n\nexport function flattenDirectory(\n n: DataNode,\n parent: DataNode,\n sep = '/',\n inlinedResourcePathKey: keyof DataNode,\n dirTitle = (_dir: DataNode, defaultTitle: string): JSX.Element | string =>\n defaultTitle,\n) {\n if (n.isLeaf) return;\n if (parent.children && parent.children.length === 1) {\n const defaultTitle = [parent[basenameKey], n[basenameKey]].join(sep);\n parent[inlinedResourcePathKey] = n[inlinedResourcePathKey];\n parent[basenameKey] = defaultTitle;\n parent.key = [parent.key, n.key].join('-');\n parent.children = n.children;\n parent.title = dirTitle(parent, defaultTitle);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, parent, sep, inlinedResourcePathKey, dirTitle);\n });\n } else {\n // parent has more than 1 child.\n n.title = dirTitle(n, n[basenameKey]);\n\n n.children &&\n n.children.forEach((c) => {\n flattenDirectory(c, n, sep, inlinedResourcePathKey, dirTitle);\n });\n }\n}\n\nexport function createFileStructures({\n files,\n sep = '/',\n inlinedResourcePathKey = '__RESOURCEPATH__',\n fileTitle = (_file: string, basename: string) => basename,\n dirTitle = (_dir: DataNode, defaultTitle: string) => defaultTitle,\n page = 'other',\n}: {\n files: string[];\n cwd?: string;\n sep?: string;\n inlinedResourcePathKey?: keyof DataNode;\n dirTitle?(dir: DataNode, defaultTitle: string): JSX.Element | string;\n fileTitle?(file: string, basename: string): JSX.Element | string;\n page?: 'bundle' | 'other';\n}): DataNode[] {\n const sepRegexp = new RegExp(sep);\n\n const res = files.reduce<DataNode>(\n (t, file) => {\n let dir = rootDirname(file, sep);\n let basename = dir ? file?.slice(dir.length + 1) : file;\n let parent: DataNode = t;\n\n while (dir) {\n // find the match directory.\n let exist = parent.children!.find((e) => e.title === dir) as DataNode;\n if (!exist) {\n const p = [parent[inlinedResourcePathKey], dir]\n .filter(Boolean)\n .join(sep);\n exist = {\n title: dir,\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps, false)\n : null,\n // key: [parent.key, parent.children!.length].join('-'),\n key: p,\n children: [],\n [inlinedResourcePathKey]: p,\n [basenameKey]: dir,\n };\n parent.children!.push(exist);\n }\n\n parent = exist;\n dir = rootDirname(basename);\n basename = dir\n ? basename.slice(dir.length).replace(sepRegexp, '')\n : basename;\n }\n\n // uniq\n if (parent.children!.some((e) => get(e, inlinedResourcePathKey) === file))\n return t;\n\n parent.children!.push({\n title() {\n return fileTitle(file, basename);\n },\n icon:\n page === 'bundle'\n ? (props) => getFileIcon(props as TreeNodeProps)\n : null,\n key: file,\n isLeaf: true,\n [inlinedResourcePathKey]: file,\n [basenameKey]: basename,\n });\n\n return t;\n },\n { key: '0', children: [] },\n ).children!;\n\n res.forEach((e) => {\n e.children &&\n e.children.forEach((item) =>\n flattenDirectory(item, e, sep, inlinedResourcePathKey, dirTitle),\n );\n });\n\n return res;\n}\n\nexport function beautifyPath(path: string, cwd: string) {\n if (path.startsWith(cwd)) {\n return path.replace(cwd, '.');\n }\n\n return path;\n}\n\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: UploadFile,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: Blob,\n): Promise<T>;\nexport function readJSONByFileReader<T extends Common.PlainObject>(\n file: unknown,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const { result } = reader;\n console.log('reader result: ', result);\n try {\n const json = JSON.parse(result!.toString());\n resolve(json);\n } catch (err) {\n message.error('json parse error');\n reject(err);\n }\n };\n reader.onerror = () => {\n const msg = 'upload json file error, please try again.';\n message.error(msg);\n reject(new Error(msg));\n };\n reader.readAsText(((file as UploadFile).originFileObj || file) as Blob);\n });\n}\n\n/**\n * beautify module path, will replace cwd & last 'node_modules'\n */\nexport function beautifyModulePath(modulePath: string, cwd: string) {\n const res = beautifyPath(modulePath, cwd);\n\n const str = '/node_modules/';\n\n const idx = res.lastIndexOf(str);\n\n if (idx > -1) {\n return {\n alias: res.slice(idx + str.length),\n inNodeModules: true,\n };\n }\n\n return {\n alias: res,\n inNodeModules: false,\n };\n}\n\nexport function getFileIcon(props: TreeNodeProps, addRowIcon = true) {\n const { data } = props;\n const expanded = props.expanded;\n if (data?.children) {\n return (\n <Space>\n {addRowIcon ? (\n <RightOutlined\n className={`file-tree-switcher-arrow ${expanded ? 'file-tree-switcher-arrow-expand' : ''}`}\n />\n ) : (\n <></>\n )}\n {expanded ? <FolderOpenTwoTone /> : <FolderTwoTone />}\n </Space>\n );\n }\n if (props.eventKey && typeof props.eventKey === 'string') {\n return getFileCom(props.eventKey);\n }\n return <FileOutlined />;\n}\n\ntype TreeNode = {\n name: string;\n value?: number;\n children?: TreeNode[];\n path?: string;\n sourceSize?: number;\n bundledSize?: number;\n gzipSize?: number;\n // Internal helper, not exported\n _map?: Map<string, TreeNode>;\n};\n\nexport function buildTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const root: TreeNode = { name: rootName, children: [], _map: new Map() };\n\n for (const mod of modules) {\n const parts = mod.path.split(/[\\\\/]/).filter(Boolean);\n let current = root;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n if (i === parts.length - 1) {\n // File node\n if (!current.children) current.children = [];\n current.children.push({\n name: part,\n path: mod.path,\n sourceSize: mod.size?.sourceSize ?? 0,\n bundledSize: mod.size?.parsedSize ?? 0,\n gzipSize: mod.size?.gzipSize ?? 0,\n });\n } else {\n // Directory node\n if (!current._map) current._map = new Map();\n let child = current._map.get(part);\n if (!child) {\n child = { name: part, children: [], _map: new Map() };\n current.children!.push(child);\n current._map.set(part, child);\n }\n current = child;\n }\n }\n }\n\n // Clean up _map property\n function clean(node: TreeNode) {\n delete node._map;\n if (node.children) node.children.forEach(clean);\n }\n clean(root);\n\n return root;\n}\n\nfunction flattenSingleChildDirs(node: TreeNode): TreeNode {\n // Return directly if leaf node\n if (!node.children || node.children.length === 0) return node;\n\n let current = node;\n // As long as children has only one child and it's not a leaf, merge\n while (\n current.children &&\n current.children.length === 1 &&\n !current.children[0].sourceSize // Not a leaf\n ) {\n current = {\n name: current.name + '/' + current.children[0].name,\n children: current.children[0].children,\n };\n }\n\n // Recursively process all child nodes\n if (current.children) {\n current.children = current.children.map(flattenSingleChildDirs);\n }\n return current;\n}\n\nfunction sumDirValue(node: TreeNode): {\n sourceSize: number;\n bundledSize: number;\n gzipSize: number;\n} {\n if (!node.children || node.children.length === 0) {\n // Leaf node, just return value\n return {\n sourceSize: node.sourceSize ?? 0,\n bundledSize: node.bundledSize ?? 0,\n gzipSize: node.gzipSize ?? 0,\n };\n }\n // Recursively sum all child nodes\n let sourceSum = 0;\n let bundledSum = 0;\n let gzipSum = 0;\n for (const child of node.children) {\n const { sourceSize, bundledSize, gzipSize } = sumDirValue(child);\n sourceSum += sourceSize;\n bundledSum += bundledSize;\n gzipSum += gzipSize;\n }\n node.sourceSize = sourceSum;\n node.bundledSize = bundledSum;\n node.gzipSize = gzipSum;\n return { sourceSize: sourceSum, bundledSize: bundledSum, gzipSize: gzipSum };\n}\n\nexport function flattenTreemapData(\n modules: SDK.ModuleData[],\n rootName = 'dist',\n): TreeNode {\n const rawTree = buildTreemapData(modules, rootName);\n const flattenedTree = flattenSingleChildDirs(rawTree);\n sumDirValue(flattenedTree); // Recursive sum\n return flattenedTree;\n}\n"],"names":["rootDirname","file","sep","idx","mapFileKey","arr","depth","filter","d","res","parent","e","t","basenameKey","flattenDirectory","n","inlinedResourcePathKey","dirTitle","_dir","defaultTitle","c","createFileStructures","files","fileTitle","_file","basename","page","sepRegexp","RegExp","dir","exist","p","Boolean","props","getFileIcon","get","item","beautifyPath","path","cwd","readJSONByFileReader","Promise","resolve","reject","reader","FileReader","result","console","json","JSON","err","message","msg","Error","beautifyModulePath","modulePath","str","addRowIcon","data","expanded","Space","RightOutlined","FolderOpenTwoTone","FolderTwoTone","getFileCom","FileOutlined","buildTreemapData","modules","rootName","root","Map","mod","parts","current","i","part","child","clean","node","flattenSingleChildDirs","sumDirValue","sourceSum","bundledSum","gzipSum","sourceSize","bundledSize","gzipSize","flattenTreemapData","rawTree","flattenedTree"],"mappings":";;;;;AAiBO,MAAMA,cAAc,CAACC,MAAcC,MAAM,GAAG;IACjD,MAAMC,MAAMF,MAAM,QAAQC;IAC1B,IAAIC,AAAQ,OAARA,KACF,OAAO;IAET,IAAIA,AAAQ,MAARA,KACF,OAAOD,MAAOF,CAAAA,YAAYC,MAAM,MAAM,OAAO,EAAC;IAEhD,OAAOA,MAAM,MAAM,GAAGE;AACxB;AAEO,SAASC,WACdC,GAAe,EACfC,QAAQ,CAAC,EACTC,SAAsC,IAAM,IAAI;IAEhD,IAAIC,IAAI;IACR,MAAMC,MAAyB,EAAE;IACjC,IAAIC,SAAqBL;IACzB,MAAOG,IAAIF,MAAO;QAChBI,OAAO,MAAM,CAACH,QAAQ,OAAO,CAAC,CAACI;YAC7B,IAAI,CAACA,EAAE,MAAM,EACXF,IAAI,IAAI,CAACE,EAAE,GAAG;QAElB;QACAD,SAASA,OAAO,MAAM,CACpB,CAACE,GAAGD,IAAMC,EAAE,MAAM,CAACD,EAAE,QAAQ,IAAI,EAAE,GACnC,EAAE;QAEJ,IAAI,CAACD,OAAO,MAAM,EAAE;QACpBF;IACF;IACA,OAAOC;AACT;AAEA,MAAMI,cAAc;AAEb,SAASC,iBACdC,CAAW,EACXL,MAAgB,EAChBR,MAAM,GAAG,EACTc,sBAAsC,EACtCC,WAAW,CAACC,MAAgBC,eAC1BA,YAAY;IAEd,IAAIJ,EAAE,MAAM,EAAE;IACd,IAAIL,OAAO,QAAQ,IAAIA,AAA2B,MAA3BA,OAAO,QAAQ,CAAC,MAAM,EAAQ;QACnD,MAAMS,eAAe;YAACT,MAAM,CAACG,YAAY;YAAEE,CAAC,CAACF,YAAY;SAAC,CAAC,IAAI,CAACX;QAChEQ,MAAM,CAACM,uBAAuB,GAAGD,CAAC,CAACC,uBAAuB;QAC1DN,MAAM,CAACG,YAAY,GAAGM;QACtBT,OAAO,GAAG,GAAG;YAACA,OAAO,GAAG;YAAEK,EAAE,GAAG;SAAC,CAAC,IAAI,CAAC;QACtCL,OAAO,QAAQ,GAAGK,EAAE,QAAQ;QAC5BL,OAAO,KAAK,GAAGO,SAASP,QAAQS;QAEhCJ,EAAE,QAAQ,IACRA,EAAE,QAAQ,CAAC,OAAO,CAAC,CAACK;YAClBN,iBAAiBM,GAAGV,QAAQR,KAAKc,wBAAwBC;QAC3D;IACJ,OAAO;QAELF,EAAE,KAAK,GAAGE,SAASF,GAAGA,CAAC,CAACF,YAAY;QAEpCE,EAAE,QAAQ,IACRA,EAAE,QAAQ,CAAC,OAAO,CAAC,CAACK;YAClBN,iBAAiBM,GAAGL,GAAGb,KAAKc,wBAAwBC;QACtD;IACJ;AACF;AAEO,SAASI,qBAAqB,EACnCC,KAAK,EACLpB,MAAM,GAAG,EACTc,yBAAyB,kBAAkB,EAC3CO,YAAY,CAACC,OAAeC,WAAqBA,QAAQ,EACzDR,WAAW,CAACC,MAAgBC,eAAyBA,YAAY,EACjEO,OAAO,OAAO,EASf;IACC,MAAMC,YAAY,IAAIC,OAAO1B;IAE7B,MAAMO,MAAMa,MAAM,MAAM,CACtB,CAACV,GAAGX;QACF,IAAI4B,MAAM7B,YAAYC,MAAMC;QAC5B,IAAIuB,WAAWI,MAAM5B,MAAM,MAAM4B,IAAI,MAAM,GAAG,KAAK5B;QACnD,IAAIS,SAAmBE;QAEvB,MAAOiB,IAAK;YAEV,IAAIC,QAAQpB,OAAO,QAAQ,CAAE,IAAI,CAAC,CAACC,IAAMA,EAAE,KAAK,KAAKkB;YACrD,IAAI,CAACC,OAAO;gBACV,MAAMC,IAAI;oBAACrB,MAAM,CAACM,uBAAuB;oBAAEa;iBAAI,CAC5C,MAAM,CAACG,SACP,IAAI,CAAC9B;gBACR4B,QAAQ;oBACN,OAAOD;oBACP,MACEH,AAAS,aAATA,OACI,CAACO,QAAUC,YAAYD,OAAwB,SAC/C;oBAEN,KAAKF;oBACL,UAAU,EAAE;oBACZ,CAACf,uBAAuB,EAAEe;oBAC1B,CAAClB,YAAY,EAAEgB;gBACjB;gBACAnB,OAAO,QAAQ,CAAE,IAAI,CAACoB;YACxB;YAEApB,SAASoB;YACTD,MAAM7B,YAAYyB;YAClBA,WAAWI,MACPJ,SAAS,KAAK,CAACI,IAAI,MAAM,EAAE,OAAO,CAACF,WAAW,MAC9CF;QACN;QAGA,IAAIf,OAAO,QAAQ,CAAE,IAAI,CAAC,CAACC,IAAMwB,IAAIxB,GAAGK,4BAA4Bf,OAClE,OAAOW;QAETF,OAAO,QAAQ,CAAE,IAAI,CAAC;YACpB;gBACE,OAAOa,UAAUtB,MAAMwB;YACzB;YACA,MACEC,AAAS,aAATA,OACI,CAACO,QAAUC,YAAYD,SACvB;YACN,KAAKhC;YACL,QAAQ;YACR,CAACe,uBAAuB,EAAEf;YAC1B,CAACY,YAAY,EAAEY;QACjB;QAEA,OAAOb;IACT,GACA;QAAE,KAAK;QAAK,UAAU,EAAE;IAAC,GACzB,QAAQ;IAEVH,IAAI,OAAO,CAAC,CAACE;QACXA,EAAE,QAAQ,IACRA,EAAE,QAAQ,CAAC,OAAO,CAAC,CAACyB,OAClBtB,iBAAiBsB,MAAMzB,GAAGT,KAAKc,wBAAwBC;IAE7D;IAEA,OAAOR;AACT;AAEO,SAAS4B,aAAaC,IAAY,EAAEC,GAAW;IACpD,IAAID,KAAK,UAAU,CAACC,MAClB,OAAOD,KAAK,OAAO,CAACC,KAAK;IAG3B,OAAOD;AACT;AAQO,SAASE,qBACdvC,IAAa;IAEb,OAAO,IAAIwC,QAAQ,CAACC,SAASC;QAC3B,MAAMC,SAAS,IAAIC;QACnBD,OAAO,SAAS,GAAG;YACjB,MAAM,EAAEE,MAAM,EAAE,GAAGF;YACnBG,QAAQ,GAAG,CAAC,mBAAmBD;YAC/B,IAAI;gBACF,MAAME,OAAOC,KAAK,KAAK,CAACH,OAAQ,QAAQ;gBACxCJ,QAAQM;YACV,EAAE,OAAOE,KAAK;gBACZC,QAAQ,KAAK,CAAC;gBACdR,OAAOO;YACT;QACF;QACAN,OAAO,OAAO,GAAG;YACf,MAAMQ,MAAM;YACZD,QAAQ,KAAK,CAACC;YACdT,OAAO,IAAIU,MAAMD;QACnB;QACAR,OAAO,UAAU,CAAG3C,KAAoB,aAAa,IAAIA;IAC3D;AACF;AAKO,SAASqD,mBAAmBC,UAAkB,EAAEhB,GAAW;IAChE,MAAM9B,MAAM4B,aAAakB,YAAYhB;IAErC,MAAMiB,MAAM;IAEZ,MAAMrD,MAAMM,IAAI,WAAW,CAAC+C;IAE5B,IAAIrD,MAAM,IACR,OAAO;QACL,OAAOM,IAAI,KAAK,CAACN,MAAMqD,IAAI,MAAM;QACjC,eAAe;IACjB;IAGF,OAAO;QACL,OAAO/C;QACP,eAAe;IACjB;AACF;AAEO,SAASyB,YAAYD,KAAoB,EAAEwB,aAAa,IAAI;IACjE,MAAM,EAAEC,IAAI,EAAE,GAAGzB;IACjB,MAAM0B,WAAW1B,MAAM,QAAQ;IAC/B,IAAIyB,MAAM,UACR,OAAO,WAAP,GACE,KAACE,OAAKA;;YACHH,aAAa,WAAbA,GACC,IAACI,eAAaA;gBACZ,WAAW,CAAC,yBAAyB,EAAEF,WAAW,oCAAoC,IAAI;+BAG5F;YAEDA,WAAW,WAAXA,GAAW,IAACG,mBAAiBA,CAAAA,KAAAA,WAAAA,GAAM,IAACC,eAAaA,CAAAA;;;IAIxD,IAAI9B,MAAM,QAAQ,IAAI,AAA0B,YAA1B,OAAOA,MAAM,QAAQ,EACzC,OAAO+B,WAAW/B,MAAM,QAAQ;IAElC,OAAO,WAAP,GAAO,IAACgC,cAAYA,CAAAA;AACtB;AAcO,SAASC,iBACdC,OAAyB,EACzBC,WAAW,MAAM;IAEjB,MAAMC,OAAiB;QAAE,MAAMD;QAAU,UAAU,EAAE;QAAE,MAAM,IAAIE;IAAM;IAEvE,KAAK,MAAMC,OAAOJ,QAAS;QACzB,MAAMK,QAAQD,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,MAAM,CAACvC;QAC7C,IAAIyC,UAAUJ;QAEd,IAAK,IAAIK,IAAI,GAAGA,IAAIF,MAAM,MAAM,EAAEE,IAAK;YACrC,MAAMC,OAAOH,KAAK,CAACE,EAAE;YACrB,IAAIA,MAAMF,MAAM,MAAM,GAAG,GAAG;gBAE1B,IAAI,CAACC,QAAQ,QAAQ,EAAEA,QAAQ,QAAQ,GAAG,EAAE;gBAC5CA,QAAQ,QAAQ,CAAC,IAAI,CAAC;oBACpB,MAAME;oBACN,MAAMJ,IAAI,IAAI;oBACd,YAAYA,IAAI,IAAI,EAAE,cAAc;oBACpC,aAAaA,IAAI,IAAI,EAAE,cAAc;oBACrC,UAAUA,IAAI,IAAI,EAAE,YAAY;gBAClC;YACF,OAAO;gBAEL,IAAI,CAACE,QAAQ,IAAI,EAAEA,QAAQ,IAAI,GAAG,IAAIH;gBACtC,IAAIM,QAAQH,QAAQ,IAAI,CAAC,GAAG,CAACE;gBAC7B,IAAI,CAACC,OAAO;oBACVA,QAAQ;wBAAE,MAAMD;wBAAM,UAAU,EAAE;wBAAE,MAAM,IAAIL;oBAAM;oBACpDG,QAAQ,QAAQ,CAAE,IAAI,CAACG;oBACvBH,QAAQ,IAAI,CAAC,GAAG,CAACE,MAAMC;gBACzB;gBACAH,UAAUG;YACZ;QACF;IACF;IAGA,SAASC,MAAMC,IAAc;QAC3B,OAAOA,KAAK,IAAI;QAChB,IAAIA,KAAK,QAAQ,EAAEA,KAAK,QAAQ,CAAC,OAAO,CAACD;IAC3C;IACAA,MAAMR;IAEN,OAAOA;AACT;AAEA,SAASU,uBAAuBD,IAAc;IAE5C,IAAI,CAACA,KAAK,QAAQ,IAAIA,AAAyB,MAAzBA,KAAK,QAAQ,CAAC,MAAM,EAAQ,OAAOA;IAEzD,IAAIL,UAAUK;IAEd,MACEL,QAAQ,QAAQ,IAChBA,AAA4B,MAA5BA,QAAQ,QAAQ,CAAC,MAAM,IACvB,CAACA,QAAQ,QAAQ,CAAC,EAAE,CAAC,UAAU,CAE/BA,UAAU;QACR,MAAMA,QAAQ,IAAI,GAAG,MAAMA,QAAQ,QAAQ,CAAC,EAAE,CAAC,IAAI;QACnD,UAAUA,QAAQ,QAAQ,CAAC,EAAE,CAAC,QAAQ;IACxC;IAIF,IAAIA,QAAQ,QAAQ,EAClBA,QAAQ,QAAQ,GAAGA,QAAQ,QAAQ,CAAC,GAAG,CAACM;IAE1C,OAAON;AACT;AAEA,SAASO,YAAYF,IAAc;IAKjC,IAAI,CAACA,KAAK,QAAQ,IAAIA,AAAyB,MAAzBA,KAAK,QAAQ,CAAC,MAAM,EAExC,OAAO;QACL,YAAYA,KAAK,UAAU,IAAI;QAC/B,aAAaA,KAAK,WAAW,IAAI;QACjC,UAAUA,KAAK,QAAQ,IAAI;IAC7B;IAGF,IAAIG,YAAY;IAChB,IAAIC,aAAa;IACjB,IAAIC,UAAU;IACd,KAAK,MAAMP,SAASE,KAAK,QAAQ,CAAE;QACjC,MAAM,EAAEM,UAAU,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAGN,YAAYJ;QAC1DK,aAAaG;QACbF,cAAcG;QACdF,WAAWG;IACb;IACAR,KAAK,UAAU,GAAGG;IAClBH,KAAK,WAAW,GAAGI;IACnBJ,KAAK,QAAQ,GAAGK;IAChB,OAAO;QAAE,YAAYF;QAAW,aAAaC;QAAY,UAAUC;IAAQ;AAC7E;AAEO,SAASI,mBACdpB,OAAyB,EACzBC,WAAW,MAAM;IAEjB,MAAMoB,UAAUtB,iBAAiBC,SAASC;IAC1C,MAAMqB,gBAAgBV,uBAAuBS;IAC7CR,YAAYS;IACZ,OAAOA;AACT"}
|
package/dist/utils/hooks.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Manifest, Rule, SDK } from '@rsdoctor/types';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
|
-
import './i18n';
|
|
3
|
+
import './i18n/index.js';
|
|
4
4
|
export declare const useI18n: typeof useTranslation;
|
|
5
5
|
export declare function useRuleIndexNavigate(code: string, link?: string | undefined): () => void;
|
|
6
6
|
export declare function useUrlQuery(): Record<string, string | undefined>;
|
package/dist/utils/hooks.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Algorithm } from "@rsdoctor/utils/common";
|
|
2
2
|
import { Client, Rule } from "@rsdoctor/types";
|
|
3
3
|
import { defaults, uniqBy } from "es-toolkit/compat";
|
|
4
|
-
import { useEffect, useState } from "react";
|
|
4
|
+
import { useEffect, useMemo, useState } from "react";
|
|
5
5
|
import { useTranslation } from "react-i18next";
|
|
6
6
|
import { useLocation, useNavigate } from "react-router-dom";
|
|
7
7
|
import url_parse from "url-parse";
|
|
@@ -32,8 +32,9 @@ function useRuleIndexNavigate(code, link) {
|
|
|
32
32
|
}
|
|
33
33
|
function useUrlQuery() {
|
|
34
34
|
const search = useLocation().search || location.search;
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
return useMemo(()=>url_parse(search, true).query, [
|
|
36
|
+
search
|
|
37
|
+
]);
|
|
37
38
|
}
|
|
38
39
|
function useLoading(defaultLoading = false) {
|
|
39
40
|
const [loading, setLoading] = useState(defaultLoading);
|
package/dist/utils/hooks.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/hooks.mjs","sources":["webpack://@rsdoctor/components/./src/utils/hooks.ts"],"sourcesContent":["import { Algorithm } from '@rsdoctor/utils/common';\nimport { Client, Manifest, Rule, SDK } from '@rsdoctor/types';\nimport { uniqBy, defaults } from 'es-toolkit/compat';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport parse from 'url-parse';\n\nimport './i18n';\nimport { Language } from '../constants';\nimport { setLocaleToStorage } from './storage';\n\nconst route = Client.RsdoctorClientRoutes.RuleIndex;\n\nexport const useI18n: typeof useTranslation = () => {\n const { i18n, ...rest } = useTranslation();\n\n return {\n ...rest,\n i18n: {\n ...i18n,\n changeLanguage(lng, callback) {\n return i18n.changeLanguage(lng, (error, t) => {\n if (!error) {\n setLocaleToStorage(lng as Language);\n }\n callback && callback(error, t);\n });\n },\n },\n };\n};\n\nexport function useRuleIndexNavigate(code: string, link?: string | undefined) {\n const navigate = useNavigate();\n\n if (link) {\n return () => window.open(link, '__blank');\n }\n\n return () => {\n navigate(\n `${route}?${Rule.RsdoctorRuleClientConstant.UrlQueryForErrorCode}=${code}`,\n );\n };\n}\n\nexport function useUrlQuery() {\n const search = useLocation().search || location.search;\n const { query } = parse(search, true);\n return query;\n}\n\nexport function useLoading(defaultLoading = false) {\n const [loading, setLoading] = useState<boolean>(defaultLoading);\n\n return {\n loading,\n setLoading,\n async withLoading(\n func: (...args: unknown[]) => Promise<unknown> | unknown,\n ) {\n try {\n setLoading(true);\n await func();\n } finally {\n setLoading(false);\n }\n },\n };\n}\n\nexport function useProjectRootByManifest(manifest: Manifest.RsdoctorManifest) {\n return manifest.data.root;\n}\n\nexport function useHashByManifest(manifest: Manifest.RsdoctorManifest) {\n return manifest.data.hash;\n}\n\nexport function useCloudManifestUrlByManifest(\n manifest:\n | Manifest.RsdoctorManifest\n | Manifest.RsdoctorManifestWithShardingFiles\n | void,\n) {\n if (!manifest) return;\n}\n\nfunction ensurePlainObject<T extends object>(value: T, dfts: T): T {\n if (value && typeof value === 'object') {\n if (Array.isArray(value)) {\n return dfts;\n }\n return defaults(value, dfts);\n }\n\n return dfts;\n}\n\nexport function useChunkGraphByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.chunkGraph;\n if (typeof prev === 'string') {\n manifest.data.chunkGraph = JSON.parse(\n Algorithm.decompressText(prev as string),\n );\n }\n\n return ensurePlainObject(manifest.data.chunkGraph, {\n assets: [],\n chunks: [],\n entrypoints: [],\n });\n}\n\nexport function useConfigOutputFileNameByManifest(\n manifest: Manifest.RsdoctorManifest,\n) {\n if (\n typeof manifest.data.configs?.[0]?.config?.output?.filename === 'string'\n ) {\n return manifest.data.configs?.[0]?.config?.output?.filename;\n }\n return '';\n}\n\nexport function useModuleGraphByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.moduleGraph;\n if (typeof prev === 'string') {\n manifest.data.moduleGraph = JSON.parse(\n Algorithm.decompressText(prev as string),\n );\n }\n\n return ensurePlainObject(manifest.data.moduleGraph, {\n dependencies: [],\n modules: [],\n moduleGraphModules: [],\n exports: [],\n sideEffects: [],\n variables: [],\n });\n}\n\nexport function useModuleGraph(moduleGraph: SDK.ModuleGraphData) {\n const prev = moduleGraph;\n if (typeof prev === 'string') {\n moduleGraph = JSON.parse(Algorithm.decompressText(prev as string));\n }\n\n return ensurePlainObject(moduleGraph, {\n dependencies: [],\n modules: [],\n moduleGraphModules: [],\n exports: [],\n sideEffects: [],\n variables: [],\n });\n}\n\nexport function usePackageGraphByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.packageGraph;\n if (typeof prev === 'string') {\n manifest.data.packageGraph = JSON.parse(\n Algorithm.decompressText(prev as string),\n );\n }\n return ensurePlainObject(manifest.data.packageGraph, {\n packages: [],\n dependencies: [],\n });\n}\n\nexport function useUniqModulesByManifest(manifest: Manifest.RsdoctorManifest) {\n return uniqBy(useModuleGraphByManifest(manifest).modules, (e) => e.path);\n}\n\nexport function useUniqModules(modules: SDK.ModuleData[]) {\n return uniqBy(modules, (e) => e.path);\n}\n\nexport function useErrorsByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.errors;\n if (typeof prev === 'string') {\n manifest.data.errors = JSON.parse(Algorithm.decompressText(prev as string));\n }\n return manifest.data.errors || [];\n}\n\nexport function useBundleAlertsByManifest(manifest: Manifest.RsdoctorManifest) {\n const errors = useErrorsByManifest(manifest);\n return useBundleAlertsByErrors(errors);\n}\n\nexport function useDuplicatePackagesByManifest(\n manifest: Manifest.RsdoctorManifest,\n): Rule.PackageRelationDiffRuleStoreData[] {\n const alerts = useBundleAlertsByManifest(manifest);\n return useDuplicatePackagesByErrors(alerts);\n}\n\nexport function useCompileAlertsByErrors(\n errors: Manifest.RsdoctorManifestData['errors'],\n) {\n if (Array.isArray(errors)) {\n return errors.filter(\n (e) =>\n e.category === Rule.RuleMessageCategory.Compile &&\n e.code !== Rule.RuleMessageCodeEnumerated.Overlay,\n );\n }\n return [];\n}\n\nexport function useBundleAlertsByErrors(\n errors: Manifest.RsdoctorManifestData['errors'],\n) {\n if (Array.isArray(errors)) {\n return errors.filter(\n (e) =>\n e.category === Rule.RuleMessageCategory.Bundle &&\n e.code !== Rule.RuleMessageCodeEnumerated.Overlay,\n );\n }\n return [];\n}\n\nexport function useDuplicatePackagesByErrors(\n errors: Manifest.RsdoctorManifestData['errors'],\n) {\n return useBundleAlertsByErrors(errors).filter(\n (e) => e.code === Rule.RuleErrorMap.E1001.code,\n ) as Rule.PackageRelationDiffRuleStoreData[];\n}\n\nexport function useWebpackConfigurationByConfigs(configs: SDK.ConfigData = []) {\n if (Array.isArray(configs)) {\n return configs.find((e) => e.name === 'webpack' || e.name === 'rspack');\n }\n return null;\n}\n\nexport function useDetectIfCloudIdeEnv() {\n if (\n window.location.protocol === 'https:' &&\n window.location.href.indexOf('ide-proxy') > 0\n ) {\n return true;\n }\n return false;\n}\n\nexport function useWindowWidth() {\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n useEffect(() => {\n const handleResize = () => setWindowWidth(window.innerWidth);\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return windowWidth;\n}\n"],"names":["route","Client","useI18n","i18n","rest","useTranslation","lng","callback","error","t","setLocaleToStorage","useRuleIndexNavigate","code","link","navigate","useNavigate","window","Rule","useUrlQuery","search","useLocation","location","query","parse","useLoading","defaultLoading","loading","setLoading","useState","func","useProjectRootByManifest","manifest","useHashByManifest","useCloudManifestUrlByManifest","ensurePlainObject","value","dfts","Array","defaults","useChunkGraphByManifest","prev","JSON","Algorithm","useConfigOutputFileNameByManifest","useModuleGraphByManifest","useModuleGraph","moduleGraph","usePackageGraphByManifest","useUniqModulesByManifest","uniqBy","e","useUniqModules","modules","useErrorsByManifest","useBundleAlertsByManifest","errors","useBundleAlertsByErrors","useDuplicatePackagesByManifest","alerts","useDuplicatePackagesByErrors","useCompileAlertsByErrors","useWebpackConfigurationByConfigs","configs","useDetectIfCloudIdeEnv","useWindowWidth","windowWidth","setWindowWidth","useEffect","handleResize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils/hooks.mjs","sources":["../../src/utils/hooks.ts"],"sourcesContent":["import { Algorithm } from '@rsdoctor/utils/common';\nimport { Client, Manifest, Rule, SDK } from '@rsdoctor/types';\nimport { uniqBy, defaults } from 'es-toolkit/compat';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport parse from 'url-parse';\n\nimport './i18n';\nimport { Language } from '../constants';\nimport { setLocaleToStorage } from './storage';\n\nconst route = Client.RsdoctorClientRoutes.RuleIndex;\n\nexport const useI18n: typeof useTranslation = () => {\n const { i18n, ...rest } = useTranslation();\n\n return {\n ...rest,\n i18n: {\n ...i18n,\n changeLanguage(lng, callback) {\n return i18n.changeLanguage(lng, (error, t) => {\n if (!error) {\n setLocaleToStorage(lng as Language);\n }\n callback && callback(error, t);\n });\n },\n },\n };\n};\n\nexport function useRuleIndexNavigate(code: string, link?: string | undefined) {\n const navigate = useNavigate();\n\n if (link) {\n return () => window.open(link, '__blank');\n }\n\n return () => {\n navigate(\n `${route}?${Rule.RsdoctorRuleClientConstant.UrlQueryForErrorCode}=${code}`,\n );\n };\n}\n\nexport function useUrlQuery() {\n const search = useLocation().search || location.search;\n\n return useMemo(() => parse(search, true).query, [search]);\n}\n\nexport function useLoading(defaultLoading = false) {\n const [loading, setLoading] = useState<boolean>(defaultLoading);\n\n return {\n loading,\n setLoading,\n async withLoading(\n func: (...args: unknown[]) => Promise<unknown> | unknown,\n ) {\n try {\n setLoading(true);\n await func();\n } finally {\n setLoading(false);\n }\n },\n };\n}\n\nexport function useProjectRootByManifest(manifest: Manifest.RsdoctorManifest) {\n return manifest.data.root;\n}\n\nexport function useHashByManifest(manifest: Manifest.RsdoctorManifest) {\n return manifest.data.hash;\n}\n\nexport function useCloudManifestUrlByManifest(\n manifest:\n | Manifest.RsdoctorManifest\n | Manifest.RsdoctorManifestWithShardingFiles\n | void,\n) {\n if (!manifest) return;\n}\n\nfunction ensurePlainObject<T extends object>(value: T, dfts: T): T {\n if (value && typeof value === 'object') {\n if (Array.isArray(value)) {\n return dfts;\n }\n return defaults(value, dfts);\n }\n\n return dfts;\n}\n\nexport function useChunkGraphByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.chunkGraph;\n if (typeof prev === 'string') {\n manifest.data.chunkGraph = JSON.parse(\n Algorithm.decompressText(prev as string),\n );\n }\n\n return ensurePlainObject(manifest.data.chunkGraph, {\n assets: [],\n chunks: [],\n entrypoints: [],\n });\n}\n\nexport function useConfigOutputFileNameByManifest(\n manifest: Manifest.RsdoctorManifest,\n) {\n if (\n typeof manifest.data.configs?.[0]?.config?.output?.filename === 'string'\n ) {\n return manifest.data.configs?.[0]?.config?.output?.filename;\n }\n return '';\n}\n\nexport function useModuleGraphByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.moduleGraph;\n if (typeof prev === 'string') {\n manifest.data.moduleGraph = JSON.parse(\n Algorithm.decompressText(prev as string),\n );\n }\n\n return ensurePlainObject(manifest.data.moduleGraph, {\n dependencies: [],\n modules: [],\n moduleGraphModules: [],\n exports: [],\n sideEffects: [],\n variables: [],\n });\n}\n\nexport function useModuleGraph(moduleGraph: SDK.ModuleGraphData) {\n const prev = moduleGraph;\n if (typeof prev === 'string') {\n moduleGraph = JSON.parse(Algorithm.decompressText(prev as string));\n }\n\n return ensurePlainObject(moduleGraph, {\n dependencies: [],\n modules: [],\n moduleGraphModules: [],\n exports: [],\n sideEffects: [],\n variables: [],\n });\n}\n\nexport function usePackageGraphByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.packageGraph;\n if (typeof prev === 'string') {\n manifest.data.packageGraph = JSON.parse(\n Algorithm.decompressText(prev as string),\n );\n }\n return ensurePlainObject(manifest.data.packageGraph, {\n packages: [],\n dependencies: [],\n });\n}\n\nexport function useUniqModulesByManifest(manifest: Manifest.RsdoctorManifest) {\n return uniqBy(useModuleGraphByManifest(manifest).modules, (e) => e.path);\n}\n\nexport function useUniqModules(modules: SDK.ModuleData[]) {\n return uniqBy(modules, (e) => e.path);\n}\n\nexport function useErrorsByManifest(manifest: Manifest.RsdoctorManifest) {\n const prev = manifest.data.errors;\n if (typeof prev === 'string') {\n manifest.data.errors = JSON.parse(Algorithm.decompressText(prev as string));\n }\n return manifest.data.errors || [];\n}\n\nexport function useBundleAlertsByManifest(manifest: Manifest.RsdoctorManifest) {\n const errors = useErrorsByManifest(manifest);\n return useBundleAlertsByErrors(errors);\n}\n\nexport function useDuplicatePackagesByManifest(\n manifest: Manifest.RsdoctorManifest,\n): Rule.PackageRelationDiffRuleStoreData[] {\n const alerts = useBundleAlertsByManifest(manifest);\n return useDuplicatePackagesByErrors(alerts);\n}\n\nexport function useCompileAlertsByErrors(\n errors: Manifest.RsdoctorManifestData['errors'],\n) {\n if (Array.isArray(errors)) {\n return errors.filter(\n (e) =>\n e.category === Rule.RuleMessageCategory.Compile &&\n e.code !== Rule.RuleMessageCodeEnumerated.Overlay,\n );\n }\n return [];\n}\n\nexport function useBundleAlertsByErrors(\n errors: Manifest.RsdoctorManifestData['errors'],\n) {\n if (Array.isArray(errors)) {\n return errors.filter(\n (e) =>\n e.category === Rule.RuleMessageCategory.Bundle &&\n e.code !== Rule.RuleMessageCodeEnumerated.Overlay,\n );\n }\n return [];\n}\n\nexport function useDuplicatePackagesByErrors(\n errors: Manifest.RsdoctorManifestData['errors'],\n) {\n return useBundleAlertsByErrors(errors).filter(\n (e) => e.code === Rule.RuleErrorMap.E1001.code,\n ) as Rule.PackageRelationDiffRuleStoreData[];\n}\n\nexport function useWebpackConfigurationByConfigs(configs: SDK.ConfigData = []) {\n if (Array.isArray(configs)) {\n return configs.find((e) => e.name === 'webpack' || e.name === 'rspack');\n }\n return null;\n}\n\nexport function useDetectIfCloudIdeEnv() {\n if (\n window.location.protocol === 'https:' &&\n window.location.href.indexOf('ide-proxy') > 0\n ) {\n return true;\n }\n return false;\n}\n\nexport function useWindowWidth() {\n const [windowWidth, setWindowWidth] = useState(window.innerWidth);\n\n useEffect(() => {\n const handleResize = () => setWindowWidth(window.innerWidth);\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return windowWidth;\n}\n"],"names":["route","Client","useI18n","i18n","rest","useTranslation","lng","callback","error","t","setLocaleToStorage","useRuleIndexNavigate","code","link","navigate","useNavigate","window","Rule","useUrlQuery","search","useLocation","location","useMemo","parse","useLoading","defaultLoading","loading","setLoading","useState","func","useProjectRootByManifest","manifest","useHashByManifest","useCloudManifestUrlByManifest","ensurePlainObject","value","dfts","Array","defaults","useChunkGraphByManifest","prev","JSON","Algorithm","useConfigOutputFileNameByManifest","useModuleGraphByManifest","useModuleGraph","moduleGraph","usePackageGraphByManifest","useUniqModulesByManifest","uniqBy","e","useUniqModules","modules","useErrorsByManifest","useBundleAlertsByManifest","errors","useBundleAlertsByErrors","useDuplicatePackagesByManifest","alerts","useDuplicatePackagesByErrors","useCompileAlertsByErrors","useWebpackConfigurationByConfigs","configs","useDetectIfCloudIdeEnv","useWindowWidth","windowWidth","setWindowWidth","useEffect","handleResize"],"mappings":"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"}
|
package/dist/utils/i18n/cn.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/i18n/cn.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/i18n/cn.mjs","sources":["../../../src/utils/i18n/cn.ts"],"sourcesContent":["import en from './en';\n// TODO: fix this\nconst cn: typeof en = {\n Overall: '概览',\n 'Compile Analysis': '编译分析',\n 'Bundle Alerts': '编译预警',\n 'Help Center': '帮助中心',\n 'Rsdoctor Introduction': 'Rsdoctor 介绍',\n 'Compilation Alerts': '编译预警',\n 'Plugins Analysis': 'Plugins 分析',\n LoadersAnalysis: 'Loaders 分析',\n 'Loaders Timeline': 'Loaders 概览',\n 'Loaders Analysis': 'Loaders 分析',\n PluginsAnalysis: 'Plugins 分析',\n ModuleResolve: 'Module Resolve 分析',\n 'Bundle Analysis': '产物分析',\n BundleSize: '产物体积分析',\n ViewBundleSize: '查看包大小',\n 'Module Graph': 'Module Graph',\n TreeShaking: 'Tree Shaking',\n 'Rule Index': '错误索引信息',\n Resources: '资源',\n 'Project Overall': '项目信息概览',\n 'Compile Overall': '编译数据概览',\n 'Bundle Overall': '产物数据概览',\n 'Expand Omitted':\n ' reasons 树会默认折叠中间的第三方引入的模块,点击这个图标可以查看完整树图',\n 'Concatenated Tag':\n '串联模块,hover 上去可以显示聚合成的主模块名称。注:聚合模块 bundled size 为零,有可能是因为被聚合到了主模块中。',\n\n 'the file content not changed after transpiled by this loader':\n '该文件内容在 loader 处理前后没有发生变化',\n\n /** Bundle Size */\n 'Output Assets List': '产物文件列表',\n 'filter the output assets which size is greater than the input value':\n '筛选大小大于输入值的产物文件',\n 'filter the modules which size is greater than the input value':\n '筛选大小大于输入值的模块',\n 'After Compile': '编译后',\n 'After Bundle': '打包后',\n CodeModeExplain: 'Lite 模式下或纯 stats.json 上传的情况下只有 source code.',\n DuplicatePakCodeExplain:\n '纯 stats.json 输入的情况下没有代码,可使用 Rsdoctor 插件参与构建会有对应代码。',\n AsyncLoaderInfo:\n '对于异步 loader,单个 loader 的耗时可能不准确。例如:mini-css-extract-plugin 的 loader。',\n Details: '详情',\n Expand: '展开',\n Collapse: '收起',\n};\n\nexport default cn;\n"],"names":["cn"],"mappings":"AAEA,MAAMA,KAAgB;IACpB,SAAS;IACT,oBAAoB;IACpB,iBAAiB;IACjB,eAAe;IACf,yBAAyB;IACzB,sBAAsB;IACtB,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,WAAW;IACX,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,kBACE;IACF,oBACE;IAEF,gEACE;IAGF,sBAAsB;IACtB,uEACE;IACF,iEACE;IACF,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,yBACE;IACF,iBACE;IACF,SAAS;IACT,QAAQ;IACR,UAAU;AACZ;AAEA,gBAAeA"}
|
package/dist/utils/i18n/en.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const en = {
|
|
2
2
|
Overall: 'Overall',
|
|
3
3
|
'Compile Analysis': 'Compile Analysis',
|
|
4
4
|
'Bundle Alerts': 'Bundle Alerts',
|
|
@@ -36,7 +36,7 @@ const en_en = {
|
|
|
36
36
|
Expand: 'Expand',
|
|
37
37
|
Collapse: 'Collapse'
|
|
38
38
|
};
|
|
39
|
-
const
|
|
40
|
-
export {
|
|
39
|
+
const i18n_en = en;
|
|
40
|
+
export { i18n_en as default };
|
|
41
41
|
|
|
42
42
|
//# sourceMappingURL=en.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/i18n/en.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/i18n/en.mjs","sources":["../../../src/utils/i18n/en.ts"],"sourcesContent":["// TODO: fix this\nconst en = {\n Overall: 'Overall',\n 'Compile Analysis': 'Compile Analysis',\n 'Bundle Alerts': 'Bundle Alerts',\n 'Help Center': 'Help Center',\n LoadersAnalysis: 'Loaders Analysis',\n 'Loaders Timeline': 'Loaders Timeline',\n 'Loaders Analysis': 'Loaders Analysis',\n 'Rsdoctor Introduction': 'Rsdoctor Introduction',\n 'Compilation Alerts': 'Compilation Alerts',\n 'Plugins Analysis': 'Plugins Analysis',\n PluginsAnalysis: 'Plugins Analysis',\n ModuleResolve: 'Module Resolve',\n 'Bundle Analysis': 'Bundle Analysis',\n BundleSize: 'Bundle Size',\n ViewBundleSize: 'View Bundle Size',\n 'Module Graph': 'Module Graph',\n TreeShaking: 'Tree Shaking',\n 'Rule Index': 'Rule Index',\n Resources: 'Resources',\n 'Project Overall': 'Project Overall',\n 'Compile Overall': 'Compile Overall',\n 'Bundle Overall': 'Bundle Overall',\n 'Expand Omitted':\n 'By default, the reasons tree collapses to the middle of the module introduced by a third party. Click on this icon to view the full tree diagram',\n 'Concatenated Tag':\n 'Concatenated Module,hover can display the name of the concatenated main module. Note: the bundled size of the concatenated module is zero, possibly because it is aggregated into the main module.',\n\n 'the file content not changed after transpiled by this loader':\n 'the file content not changed after transpiled by this loader',\n\n /** Bundle Size */\n 'Output Assets List': 'Output Assets List',\n 'filter the output assets which size is greater than the input value':\n 'filter the output assets which size is greater than the input value',\n 'filter the modules which size is greater than the input value':\n 'filter the modules which size is greater than the input value',\n 'After Compile': 'After Compile',\n 'After Bundle': 'After Bundle',\n CodeModeExplain: 'In lite mode or pure stats.json upload, only source code.',\n DuplicatePakCodeExplain:\n 'There is no code, when in the case of pure stats.json.',\n AsyncLoaderInfo:\n \"For async loaders, the time cost of each loader is not accurate. For example: mini-css-extract-plugin's loader.\",\n Details: 'Details',\n Expand: 'Expand',\n Collapse: 'Collapse',\n};\n\nexport default en;\n"],"names":["en"],"mappings":"AACA,MAAMA,KAAK;IACT,SAAS;IACT,oBAAoB;IACpB,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;IACzB,sBAAsB;IACtB,oBAAoB;IACpB,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,WAAW;IACX,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,kBACE;IACF,oBACE;IAEF,gEACE;IAGF,sBAAsB;IACtB,uEACE;IACF,iEACE;IACF,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,yBACE;IACF,iBACE;IACF,SAAS;IACT,QAAQ;IACR,UAAU;AACZ;AAEA,gBAAeA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/i18n/index.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/i18n/index.mjs","sources":["../../../src/utils/i18n/index.ts"],"sourcesContent":["import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\n\n\nimport en from './en';\nimport cn from './cn';\nimport { getLocaleFromStorage } from '../storage';\n\ni18n\n .use(initReactI18next)\n .init({\n lng: getLocaleFromStorage(),\n // we init with resources\n resources: {\n en: {\n translations: en,\n },\n cn: {\n translations: cn,\n },\n },\n fallbackLng: {\n 'zh-CN': ['cn'],\n default: ['en'],\n },\n debug: process.env.NODE_ENV === 'development',\n\n // have a common namespace used around the full app\n ns: ['translations'],\n defaultNS: 'translations',\n\n keySeparator: false, // we use content as keys\n\n interpolation: {\n escapeValue: false,\n },\n });\n \nexport default i18n"],"names":["i18n","initReactI18next","getLocaleFromStorage","en","cn","process"],"mappings":";;;;;AAQAA,QAAAA,GACM,CAACC,kBACJ,IAAI,CAAC;IACJ,KAAKC;IAEL,WAAW;QACT,IAAI;YACF,cAAcC;QAChB;QACA,IAAI;YACF,cAAcC;QAChB;IACF;IACA,aAAa;QACX,SAAS;YAAC;SAAK;QACf,SAAS;YAAC;SAAK;IACjB;IACA,OAAOC,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ;IAG3B,IAAI;QAAC;KAAe;IACpB,WAAW;IAEX,cAAc;IAEd,eAAe;QACb,aAAa;IACf;AACF;AAEF,aAAeL"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export * from './data';
|
|
2
|
-
export * from './file';
|
|
3
|
-
export * from './hooks';
|
|
4
|
-
export * from './loader';
|
|
5
|
-
export * from './locale';
|
|
6
|
-
export * from './manifest';
|
|
7
|
-
export * from './request';
|
|
8
|
-
export * from './routes';
|
|
9
|
-
export * from './size';
|
|
10
|
-
export * from './socket';
|
|
11
|
-
export * from './storage';
|
|
12
|
-
export * from './string';
|
|
13
|
-
export * from './time';
|
|
14
|
-
export * from './url';
|
|
15
|
-
export * from './worker';
|
|
16
|
-
export * from './stats';
|
|
1
|
+
export * from './data/index.js';
|
|
2
|
+
export * from './file.js';
|
|
3
|
+
export * from './hooks.js';
|
|
4
|
+
export * from './loader.js';
|
|
5
|
+
export * from './locale.js';
|
|
6
|
+
export * from './manifest.js';
|
|
7
|
+
export * from './request.js';
|
|
8
|
+
export * from './routes.js';
|
|
9
|
+
export * from './size.js';
|
|
10
|
+
export * from './socket.js';
|
|
11
|
+
export * from './storage.js';
|
|
12
|
+
export * from './string.js';
|
|
13
|
+
export * from './time.js';
|
|
14
|
+
export * from './url.js';
|
|
15
|
+
export * from './worker/index.js';
|
|
16
|
+
export * from './stats.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/loader.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/loader.mjs","sources":["../../src/utils/loader.ts"],"sourcesContent":["import { Loader } from '@rsdoctor/utils/common';\nimport { SDK } from '@rsdoctor/types';\n\nconst { findLoaderTotalTiming, getLoaderCosts } = Loader;\nexport { findLoaderTotalTiming, getLoaderCosts };\n\nexport function flattenLoaderData(loaderData: SDK.LoaderData) {\n return loaderData.flatMap((e) => e.loaders);\n}\n\nexport function filterLoaders(\n loaderData: SDK.ResourceLoaderData,\n keyword: string,\n loaderNames: string[],\n layer?: string,\n) {\n return loaderData.loaders.filter((item) => {\n return filterLoader(\n loaderData.resource.path,\n item.loader,\n keyword,\n loaderNames,\n loaderData.resource.layer,\n layer,\n );\n });\n}\n\nexport function filterLoader(\n resourcePath: string,\n loader: string,\n keyword: string,\n loaderNames: string[],\n resorceLayer?: string,\n layer?: string,\n) {\n if (keyword) {\n if (resourcePath.indexOf(keyword) === -1) return false;\n }\n\n if (resorceLayer && layer && resorceLayer !== layer) {\n return false;\n }\n\n if (loaderNames?.length) {\n if (!loaderNames.includes(loader)) return false;\n }\n\n return true;\n}\n"],"names":["findLoaderTotalTiming","getLoaderCosts","Loader","flattenLoaderData","loaderData","e","filterLoaders","keyword","loaderNames","layer","item","filterLoader","resourcePath","loader","resorceLayer"],"mappings":";AAGA,MAAM,EAAEA,qBAAqB,EAAEC,cAAc,EAAE,GAAGC;AAG3C,SAASC,kBAAkBC,UAA0B;IAC1D,OAAOA,WAAW,OAAO,CAAC,CAACC,IAAMA,EAAE,OAAO;AAC5C;AAEO,SAASC,cACdF,UAAkC,EAClCG,OAAe,EACfC,WAAqB,EACrBC,KAAc;IAEd,OAAOL,WAAW,OAAO,CAAC,MAAM,CAAC,CAACM,OACzBC,aACLP,WAAW,QAAQ,CAAC,IAAI,EACxBM,KAAK,MAAM,EACXH,SACAC,aACAJ,WAAW,QAAQ,CAAC,KAAK,EACzBK;AAGN;AAEO,SAASE,aACdC,YAAoB,EACpBC,MAAc,EACdN,OAAe,EACfC,WAAqB,EACrBM,YAAqB,EACrBL,KAAc;IAEd,IAAIF,SACF;QAAA,IAAIK,AAAkC,OAAlCA,aAAa,OAAO,CAACL,UAAiB,OAAO;IAAK;IAGxD,IAAIO,gBAAgBL,SAASK,iBAAiBL,OAC5C,OAAO;IAGT,IAAID,aAAa,QACf;QAAA,IAAI,CAACA,YAAY,QAAQ,CAACK,SAAS,OAAO;IAAK;IAGjD,OAAO;AACT"}
|
package/dist/utils/locale.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/locale.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/locale.mjs","sources":["../../src/utils/locale.ts"],"sourcesContent":["import cn from 'antd/es/locale/zh_CN';\nimport en from 'antd/es/locale/en_GB';\nimport type { Locale } from 'antd/es/locale';\nimport { Language } from '../constants';\n\nexport function getLocale(locale: string): Locale {\n const res = locale === 'cn' || locale === 'zh-CN' ? cn : en;\n return res;\n}\n\nexport function getLanguage(locale: string): Language {\n const res = locale === 'cn' || locale === 'zh' ? Language.Cn : Language.En;\n return res;\n}\n"],"names":["getLocale","locale","res","cn","en","getLanguage","Language"],"mappings":";;;AAKO,SAASA,UAAUC,MAAc;IACtC,MAAMC,MAAMD,AAAW,SAAXA,UAAmBA,AAAW,YAAXA,SAAqBE,QAAKC;IACzD,OAAOF;AACT;AAEO,SAASG,YAAYJ,MAAc;IACxC,MAAMC,MAAMD,AAAW,SAAXA,UAAmBA,AAAW,SAAXA,SAAkBK,SAAS,EAAE,GAAGA,SAAS,EAAE;IAC1E,OAAOJ;AACT"}
|
package/dist/utils/manifest.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ModuleGraph } from '@rsdoctor/graph';
|
|
2
2
|
import { Manifest, SDK } from '@rsdoctor/types';
|
|
3
|
-
import { Theme, ViewMode } from '../constants';
|
|
3
|
+
import { Theme, ViewMode } from '../constants.js';
|
|
4
4
|
export declare function useManifestJson(): Manifest.RsdoctorManifest;
|
|
5
|
-
export declare function useLocale(): import("../constants").Language;
|
|
5
|
+
export declare function useLocale(): import("../constants.js").Language;
|
|
6
6
|
export declare function useTheme(): {
|
|
7
7
|
theme: Theme;
|
|
8
|
-
setTheme: (theme: import("../config").Config["theme"]) => void;
|
|
8
|
+
setTheme: (theme: import("../config.js").Config["theme"]) => void;
|
|
9
9
|
isDark: boolean;
|
|
10
10
|
isLight: boolean;
|
|
11
11
|
};
|
|
@@ -14,7 +14,7 @@ export declare function useViewMode(): {
|
|
|
14
14
|
bundleAlerts: ViewMode;
|
|
15
15
|
compileAlerts: ViewMode;
|
|
16
16
|
};
|
|
17
|
-
setViewMode: (mode: Partial<import("../config").Config["viewMode"]>, saveStorage?: boolean) => void;
|
|
17
|
+
setViewMode: (mode: Partial<import("../config.js").Config["viewMode"]>, saveStorage?: boolean) => void;
|
|
18
18
|
setCompileAlertsViewMode(mode: ViewMode): void;
|
|
19
19
|
setBundleAlertsViewMode(mode: ViewMode): void;
|
|
20
20
|
isCompileList: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/manifest.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/manifest.mjs","sources":["../../src/utils/manifest.tsx"],"sourcesContent":["import { useContext, useEffect, useMemo, useState } from 'react';\nimport { ModuleGraph } from '@rsdoctor/graph';\nimport { Manifest, SDK } from '@rsdoctor/types';\nimport { ConfigContext } from '../config';\nimport { Theme, ViewMode } from '../constants';\nimport { fetchManifest } from './request';\n\nexport function useManifestJson() {\n const { json } = useContext(ConfigContext);\n return json;\n}\n\nexport function useLocale() {\n const ctx = useContext(ConfigContext);\n\n return ctx.locale;\n}\n\nexport function useTheme() {\n const { theme, setTheme } = useContext(ConfigContext);\n const isDark = theme === Theme.Dark;\n\n return { theme, setTheme, isDark, isLight: !isDark };\n}\n\nexport function useViewMode() {\n const { viewMode, setViewMode } = useContext(ConfigContext);\n\n const { bundleAlerts, compileAlerts } = viewMode;\n\n return {\n viewMode,\n setViewMode,\n setCompileAlertsViewMode(mode: ViewMode) {\n setViewMode({ compileAlerts: mode });\n },\n setBundleAlertsViewMode(mode: ViewMode) {\n setViewMode({ bundleAlerts: mode });\n },\n isCompileList: compileAlerts === ViewMode.List,\n isBundleList: bundleAlerts === ViewMode.List,\n };\n}\n\nexport function useManifest(url: string) {\n const [manifest, setManifest] = useState<Manifest.RsdoctorManifestWithShardingFiles>();\n\n useEffect(() => {\n fetchManifest(url).then((res) => {\n setManifest(res);\n });\n }, []);\n\n return manifest;\n}\n\nexport function useModuleGraphInstanceByModuleGraph(moduleGraph: SDK.ModuleGraphData) {\n return useMemo(() => ModuleGraph.fromData(moduleGraph), [moduleGraph]);\n}\n"],"names":["useManifestJson","json","useContext","ConfigContext","useLocale","ctx","useTheme","theme","setTheme","isDark","Theme","useViewMode","viewMode","setViewMode","bundleAlerts","compileAlerts","mode","ViewMode","useManifest","url","manifest","setManifest","useState","useEffect","fetchManifest","res","useModuleGraphInstanceByModuleGraph","moduleGraph","useMemo","ModuleGraph"],"mappings":";;;;;AAOO,SAASA;IACd,MAAM,EAAEC,IAAI,EAAE,GAAGC,WAAWC;IAC5B,OAAOF;AACT;AAEO,SAASG;IACd,MAAMC,MAAMH,WAAWC;IAEvB,OAAOE,IAAI,MAAM;AACnB;AAEO,SAASC;IACd,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGN,WAAWC;IACvC,MAAMM,SAASF,UAAUG,MAAM,IAAI;IAEnC,OAAO;QAAEH;QAAOC;QAAUC;QAAQ,SAAS,CAACA;IAAO;AACrD;AAEO,SAASE;IACd,MAAM,EAAEC,QAAQ,EAAEC,WAAW,EAAE,GAAGX,WAAWC;IAE7C,MAAM,EAAEW,YAAY,EAAEC,aAAa,EAAE,GAAGH;IAExC,OAAO;QACLA;QACAC;QACA,0BAAyBG,IAAc;YACrCH,YAAY;gBAAE,eAAeG;YAAK;QACpC;QACA,yBAAwBA,IAAc;YACpCH,YAAY;gBAAE,cAAcG;YAAK;QACnC;QACA,eAAeD,kBAAkBE,SAAS,IAAI;QAC9C,cAAcH,iBAAiBG,SAAS,IAAI;IAC9C;AACF;AAEO,SAASC,YAAYC,GAAW;IACrC,MAAM,CAACC,UAAUC,YAAY,GAAGC;IAEhCC,UAAU;QACRC,cAAcL,KAAK,IAAI,CAAC,CAACM;YACvBJ,YAAYI;QACd;IACF,GAAG,EAAE;IAEL,OAAOL;AACT;AAEO,SAASM,oCAAoCC,WAAgC;IAClF,OAAOC,QAAQ,IAAMC,YAAY,QAAQ,CAACF,cAAc;QAACA;KAAY;AACvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/request.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/request.mjs","sources":["../../src/utils/request.ts"],"sourcesContent":["import axios from 'axios';\nimport { Manifest, SDK } from '@rsdoctor/types';\nimport { Manifest as ManifestMethod, Url } from '@rsdoctor/utils/common';\nimport { APILoaderMode4Dev } from '../constants';\nimport { getManifestUrlFromUrlQuery } from './url';\nimport { getAPILoaderModeFromStorage } from './storage';\n\nfunction random() {\n return `${Date.now()}${Math.floor(Math.random() * 10000)}`;\n}\n\nexport async function fetchShardingFile(url: string): Promise<string> {\n if (Url.isUrl(url)) {\n return axios\n .get(url, { timeout: 999999, responseType: 'text' })\n .then((e) => e.data);\n }\n // json string\n return url;\n}\n\nexport async function loadManifestByUrl(url: string) {\n const json = await fetchJSONByUrl(url);\n\n const res = await parseManifest(json);\n return res;\n}\n\nexport async function fetchJSONByUrl(url: string) {\n let json: Manifest.RsdoctorManifestWithShardingFiles = await axios\n .get(url, { timeout: 30000 })\n .then((e) => e.data);\n\n if (typeof json === 'string') {\n json = JSON.parse(json);\n }\n\n console.log('[json] ', url, json);\n\n return json;\n}\n\nexport function fetchJSONByUrls(urls: string[]) {\n return Promise.all(urls.map((url) => fetchJSONByUrl(url)));\n}\n\nexport async function parseManifest(\n json: Manifest.RsdoctorManifestWithShardingFiles,\n) {\n let transformedData: Manifest.RsdoctorManifestData;\n\n try {\n // try to load cloud data first\n if (json.cloudData) {\n try {\n transformedData = await ManifestMethod.fetchShardingFiles(\n json.cloudData,\n fetchShardingFile,\n );\n } catch (error) {\n console.log('cloudData load error: ', error);\n }\n } else {\n transformedData = await ManifestMethod.fetchShardingFiles(\n json.data,\n fetchShardingFile,\n );\n }\n } catch (error) {\n transformedData = await ManifestMethod.fetchShardingFiles(\n json.data,\n fetchShardingFile,\n );\n }\n\n return {\n ...json,\n data: transformedData!,\n };\n}\n\nconst manifestUrlForDev = '/manifest.json';\n\nexport function getManifestUrl(): string {\n let file: string | void;\n\n if (\n (window as { [key: string]: any })[\n Manifest.RsdoctorManifestClientConstant.WindowPropertyForManifestUrl\n ]\n ) {\n // load from window property\n file = (window as { [key: string]: any })[\n Manifest.RsdoctorManifestClientConstant.WindowPropertyForManifestUrl\n ];\n } else {\n // load from url query\n file = getManifestUrlFromUrlQuery();\n }\n\n if (!file) {\n file = SDK.ServerAPI.API.Manifest;\n }\n\n return file;\n}\n\nconst pool = new Map<\n string,\n Promise<Manifest.RsdoctorManifestWithShardingFiles>\n>();\n\nexport async function fetchManifest(url = getManifestUrl()) {\n if (!pool.has(url)) {\n pool.set(\n url,\n fetchJSONByUrl(url).catch((err) => {\n pool.delete(url);\n throw err;\n }),\n );\n }\n\n const res = await pool.get(url)!;\n\n return res;\n}\n\n// test for cli\nif (process.env.NODE_ENV === 'development') {\n if (getAPILoaderModeFromStorage() === APILoaderMode4Dev.Local) {\n axios.interceptors.request.use((c) => {\n c.withCredentials = false;\n if (c.url?.startsWith('/')) {\n if (c.url === manifestUrlForDev) {\n c.url = SDK.ServerAPI.API.Manifest;\n }\n const url = new URL(location.href);\n url.port = String(process.env.LOCAL_CLI_PORT!);\n return {\n ...c,\n url: `${url.origin}${c.url}`,\n };\n }\n\n return c;\n });\n }\n}\n\nexport async function postServerAPI<\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 const timeout = process.env.NODE_ENV === 'development' ? 10000 : 60000;\n const { data } = await axios.post<SDK.ServerAPI.InferResponseType<T>>(\n `${api}?_t=${random()}`,\n body,\n { timeout },\n );\n return data as R;\n}\n"],"names":["random","Date","Math","fetchShardingFile","url","Url","axios","e","loadManifestByUrl","json","fetchJSONByUrl","res","parseManifest","JSON","console","fetchJSONByUrls","urls","Promise","transformedData","ManifestMethod","error","manifestUrlForDev","getManifestUrl","file","window","Manifest","getManifestUrlFromUrlQuery","SDK","pool","Map","fetchManifest","err","process","getAPILoaderModeFromStorage","APILoaderMode4Dev","c","URL","location","String","postServerAPI","args","api","body","timeout","data"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/routes.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/routes.mjs","sources":["../../src/utils/routes.ts"],"sourcesContent":["import { Manifest } from '@rsdoctor/types';\n\nexport function hasCompile(routes: Manifest.RsdoctorManifestClientRoutes[]) {\n const hasCompile =\n routes.includes(Manifest.RsdoctorManifestClientRoutes.WebpackLoaders) ||\n routes.includes(Manifest.RsdoctorManifestClientRoutes.ModuleResolve) ||\n routes.includes(Manifest.RsdoctorManifestClientRoutes.WebpackPlugins);\n return hasCompile;\n}\n\nexport function hasBundle(routes: Manifest.RsdoctorManifestClientRoutes[]) {\n const hasBundle =\n routes.includes(Manifest.RsdoctorManifestClientRoutes.BundleSize) ||\n routes.includes(Manifest.RsdoctorManifestClientRoutes.ModuleGraph) ||\n routes.includes(Manifest.RsdoctorManifestClientRoutes.TreeShaking);\n return hasBundle;\n}\n"],"names":["hasCompile","routes","Manifest","hasBundle"],"mappings":";AAEO,SAASA,kBAAWC,MAA+C;IACxE,MAAMD,aACJC,OAAO,QAAQ,CAACC,SAAS,4BAA4B,CAAC,cAAc,KACpED,OAAO,QAAQ,CAACC,SAAS,4BAA4B,CAAC,aAAa,KACnED,OAAO,QAAQ,CAACC,SAAS,4BAA4B,CAAC,cAAc;IACtE,OAAOF;AACT;AAEO,SAASG,iBAAUF,MAA+C;IACvE,MAAME,YACJF,OAAO,QAAQ,CAACC,SAAS,4BAA4B,CAAC,UAAU,KAChED,OAAO,QAAQ,CAACC,SAAS,4BAA4B,CAAC,WAAW,KACjED,OAAO,QAAQ,CAACC,SAAS,4BAA4B,CAAC,WAAW;IACnE,OAAOC;AACT"}
|
package/dist/utils/size.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/size.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/size.mjs","sources":["../../src/utils/size.ts"],"sourcesContent":["export function formatSize(bytes: number) {\n let res: string;\n\n if (bytes >= 1000000000) {\n res = `${(bytes / 1000000000).toFixed(2)} GB`;\n } else if (bytes >= 1000000) {\n res = `${(bytes / 1000000).toFixed(2)} MB`;\n } else if (bytes >= 1000) {\n res = `${(bytes / 1000).toFixed(2)} KB`;\n } else if (bytes > 1) {\n res = `${bytes} bytes`;\n } else if (bytes === 1) {\n res = `${bytes} byte`;\n } else {\n res = '0 bytes';\n }\n return res;\n}\n\nexport function formatPercent(percent: number) {\n return `${+percent.toFixed(2)}%`;\n}\n"],"names":["formatSize","bytes","res","formatPercent","percent"],"mappings":"AAAO,SAASA,WAAWC,KAAa;IACtC,IAAIC;IAGFA,MADED,SAAS,aACL,GAAIA,AAAAA,CAAAA,QAAQ,UAAS,EAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GACpCA,SAAS,UACZ,GAAIA,AAAAA,CAAAA,QAAQ,OAAM,EAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GACjCA,SAAS,OACZ,GAAIA,AAAAA,CAAAA,QAAQ,IAAG,EAAG,OAAO,CAAC,GAAG,GAAG,CAAC,GAC9BA,QAAQ,IACX,GAAGA,MAAM,MAAM,CAAC,GACbA,AAAU,MAAVA,QACH,GAAGA,MAAM,KAAK,CAAC,GAEf;IAER,OAAOC;AACT;AAEO,SAASC,cAAcC,OAAe;IAC3C,OAAO,GAAG,CAACA,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/socket.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/socket.mjs","sources":["../../src/utils/socket.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\nimport { io, Socket } from 'socket.io-client';\n\nconst map = new Map<string, Socket>();\nconst socketProtocol = location.protocol.includes('https') ? 'wss' : 'ws';\nconst defaultSocketUrl =\n process.env.NODE_ENV === 'development'\n ? `${socketProtocol}://${location.hostname}:${process.env.LOCAL_CLI_PORT}`\n : `${socketProtocol}://${location.host}`;\n\nconst ipv4Pattern =\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n\nfunction ensureSocket(socketUrl: string = defaultSocketUrl) {\n if (!map.has(socketUrl)) {\n const socket = io(socketUrl, {});\n socket.on('connect', () => {\n console.log(`Socket Connect ${socketUrl}`);\n });\n map.set(socketUrl, socket);\n }\n return map.get(socketUrl)!;\n}\n\nexport function getSocket(socketPort?: string): Socket {\n const socketUrl = formatURL({\n port: socketPort,\n hostname: location.hostname,\n protocol: location.protocol,\n });\n const socket = ensureSocket(socketPort ? socketUrl : defaultSocketUrl);\n return socket;\n}\n\nexport function formatURL({\n port,\n protocol,\n hostname,\n}: {\n port?: string;\n protocol: string;\n hostname: string;\n}) {\n if (typeof URL !== 'undefined') {\n const url = new URL('http://localhost');\n url.port = String(port);\n url.hostname = hostname;\n url.protocol = location.protocol.includes('https') ? 'wss' : 'ws';\n return ipv4Pattern.test(hostname) || hostname.includes('localhost')\n ? url.toString()\n : `${protocol}//${hostname}`;\n }\n\n // compatible with IE11\n const colon = protocol.indexOf(':') === -1 ? ':' : '';\n return `${protocol}${colon}//${hostname}:${port}`;\n}\n"],"names":["map","Map","socketProtocol","location","defaultSocketUrl","process","ipv4Pattern","ensureSocket","socketUrl","socket","io","console","getSocket","socketPort","formatURL","port","protocol","hostname","URL","url","String","colon"],"mappings":";AAGA,MAAMA,MAAM,IAAIC;AAChB,MAAMC,iBAAiBC,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,QAAQ;AACrE,MAAMC,mBACJC,AAAyB,kBAAzBA,QAAQ,GAAG,CAAC,QAAQ,GAChB,GAAGH,eAAe,GAAG,EAAEC,SAAS,QAAQ,CAAC,CAAC,EAAEE,QAAQ,GAAG,CAAC,cAAc,EAAE,GACxE,GAAGH,eAAe,GAAG,EAAEC,SAAS,IAAI,EAAE;AAE5C,MAAMG,cACJ;AAEF,SAASC,aAAaC,YAAoBJ,gBAAgB;IACxD,IAAI,CAACJ,IAAI,GAAG,CAACQ,YAAY;QACvB,MAAMC,SAASC,GAAGF,WAAW,CAAC;QAC9BC,OAAO,EAAE,CAAC,WAAW;YACnBE,QAAQ,GAAG,CAAC,CAAC,eAAe,EAAEH,WAAW;QAC3C;QACAR,IAAI,GAAG,CAACQ,WAAWC;IACrB;IACA,OAAOT,IAAI,GAAG,CAACQ;AACjB;AAEO,SAASI,UAAUC,UAAmB;IAC3C,MAAML,YAAYM,UAAU;QAC1B,MAAMD;QACN,UAAUV,SAAS,QAAQ;QAC3B,UAAUA,SAAS,QAAQ;IAC7B;IACA,MAAMM,SAASF,aAAaM,aAAaL,YAAYJ;IACrD,OAAOK;AACT;AAEO,SAASK,UAAU,EACxBC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EAKT;IACC,IAAI,AAAe,eAAf,OAAOC,KAAqB;QAC9B,MAAMC,MAAM,IAAID,IAAI;QACpBC,IAAI,IAAI,GAAGC,OAAOL;QAClBI,IAAI,QAAQ,GAAGF;QACfE,IAAI,QAAQ,GAAGhB,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,QAAQ;QAC7D,OAAOG,YAAY,IAAI,CAACW,aAAaA,SAAS,QAAQ,CAAC,eACnDE,IAAI,QAAQ,KACZ,GAAGH,SAAS,EAAE,EAAEC,UAAU;IAChC;IAGA,MAAMI,QAAQL,AAA0B,OAA1BA,SAAS,OAAO,CAAC,OAAc,MAAM;IACnD,OAAO,GAAGA,WAAWK,MAAM,EAAE,EAAEJ,SAAS,CAAC,EAAEF,MAAM;AACnD"}
|
package/dist/utils/stats.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/stats.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/stats.mjs","sources":["../../src/utils/stats.ts"],"sourcesContent":["import { Common, Manifest, Plugin, SDK } from '@rsdoctor/types';\nimport { PackageGraph } from '@rsdoctor/graph';\nimport { Chunks, ModuleGraphTrans } from '@rsdoctor/graph';\nimport { isArray } from 'es-toolkit/compat';\n\nexport function isRspackStats(\n json: Common.PlainObject,\n): json is Plugin.StatsCompilation {\n return isArray(json.assets) && isArray(json.chunks);\n}\n\nexport async function loadRspackStats(\n jsons: Plugin.StatsCompilation[],\n): Promise<Manifest.RsdoctorManifest[]> {\n const res = await Promise.all(\n jsons.map(async (json) => {\n const chunkGraph = Chunks.chunkTransform(new Map(), json);\n const moduleGraph = ModuleGraphTrans.getModuleGraphByStats(\n json,\n '.',\n chunkGraph,\n );\n await Chunks.getAssetsModulesData(\n moduleGraph,\n chunkGraph,\n json.outputPath || '',\n {},\n undefined,\n );\n const pkgGraph = PackageGraph.fromModuleGraph(moduleGraph, '.');\n\n return {\n hash: json.hash || '',\n moduleGraph: await moduleGraph.toData(),\n chunkGraph: chunkGraph.toData(SDK.ToDataType.Normal),\n packageGraph: pkgGraph.toData(),\n } as Pick<\n SDK.StoreData,\n 'moduleGraph' | 'chunkGraph' | 'hash' | 'packageGraph'\n >;\n }),\n );\n\n return res.map((e) => {\n return {\n client: {\n enableRoutes: [],\n },\n data: {\n pid: 0,\n root: '',\n errors: [],\n configs: [],\n plugin: {},\n summary: {\n costs: [],\n },\n envinfo: {} as SDK.EnvInfo,\n resolver: [],\n loader: [],\n moduleCodeMap: {},\n ...e,\n },\n };\n });\n}\n"],"names":["isRspackStats","json","isArray","loadRspackStats","jsons","res","Promise","chunkGraph","Chunks","Map","moduleGraph","ModuleGraphTrans","undefined","pkgGraph","PackageGraph","SDK","e"],"mappings":";;;AAKO,SAASA,cACdC,IAAwB;IAExB,OAAOC,QAAQD,KAAK,MAAM,KAAKC,QAAQD,KAAK,MAAM;AACpD;AAEO,eAAeE,gBACpBC,KAAgC;IAEhC,MAAMC,MAAM,MAAMC,QAAQ,GAAG,CAC3BF,MAAM,GAAG,CAAC,OAAOH;QACf,MAAMM,aAAaC,OAAO,cAAc,CAAC,IAAIC,OAAOR;QACpD,MAAMS,cAAcC,iBAAiB,qBAAqB,CACxDV,MACA,KACAM;QAEF,MAAMC,OAAO,oBAAoB,CAC/BE,aACAH,YACAN,KAAK,UAAU,IAAI,IACnB,CAAC,GACDW;QAEF,MAAMC,WAAWC,aAAa,eAAe,CAACJ,aAAa;QAE3D,OAAO;YACL,MAAMT,KAAK,IAAI,IAAI;YACnB,aAAa,MAAMS,YAAY,MAAM;YACrC,YAAYH,WAAW,MAAM,CAACQ,IAAI,UAAU,CAAC,MAAM;YACnD,cAAcF,SAAS,MAAM;QAC/B;IAIF;IAGF,OAAOR,IAAI,GAAG,CAAC,CAACW,IACP;YACL,QAAQ;gBACN,cAAc,EAAE;YAClB;YACA,MAAM;gBACJ,KAAK;gBACL,MAAM;gBACN,QAAQ,EAAE;gBACV,SAAS,EAAE;gBACX,QAAQ,CAAC;gBACT,SAAS;oBACP,OAAO,EAAE;gBACX;gBACA,SAAS,CAAC;gBACV,UAAU,EAAE;gBACZ,QAAQ,EAAE;gBACV,eAAe,CAAC;gBAChB,GAAGA,CAAC;YACN;QACF;AAEJ"}
|
package/dist/utils/storage.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Config } from '../config';
|
|
2
|
-
import { APILoaderMode4Dev } from '../constants';
|
|
1
|
+
import type { Config } from '../config.js';
|
|
2
|
+
import { APILoaderMode4Dev } from '../constants.js';
|
|
3
3
|
export declare function getStorage(key: string): string | null;
|
|
4
4
|
export declare function setStorage(key: string, value: string): boolean;
|
|
5
5
|
export declare function getThemeFromStorage(): Config['theme'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/storage.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/storage.mjs","sources":["../../src/utils/storage.tsx"],"sourcesContent":["import type { Config } from '../config';\nimport { APILoaderMode4Dev, Language, Theme, ViewMode } from '../constants';\n\nenum Keys {\n Namespace = '__RSDOCTOR__STORAGE__',\n Theme = 'THEME',\n Locale = 'LOCALE',\n ViewMode = 'VIEWMODE',\n APILoaderMode4Dev = 'APILOADERMODE_DEV',\n FirstVisit = 'FIRST_VISIT'\n}\n\nexport function getStorage(key: string): string | null {\n return window.localStorage.getItem(`${Keys.Namespace}${key}`);\n}\n\nexport function setStorage(key: string, value: string): boolean {\n try {\n window.localStorage.setItem(`${Keys.Namespace}${key}`, value);\n return true;\n } catch (error) {\n console.error(error);\n return false;\n }\n}\n\nexport function getThemeFromStorage(): Config['theme'] {\n return (getStorage(Keys.Theme) as Config['theme']) || Theme.Light;\n}\n\nexport function setThemeToStorage(theme: Config['theme']) {\n setStorage(Keys.Theme, theme);\n}\n\nexport function getLocaleFromStorage(): Config['locale'] {\n return (getStorage(Keys.Locale) as Config['locale']) || Language.En;\n}\n\nexport function setLocaleToStorage(locale: Config['locale']) {\n setStorage(Keys.Locale, locale);\n}\n\nexport function getViewModeFromStorage(): Config['viewMode'] {\n const fallback: Config['viewMode'] = { bundleAlerts: ViewMode.List, compileAlerts: ViewMode.List };\n try {\n const str = getStorage(Keys.ViewMode);\n if (str) {\n return JSON.parse(str) || fallback;\n }\n return fallback;\n } catch (error) {\n return fallback;\n }\n}\n\nexport function setViewModeToStorage(viewMode: Config['viewMode']) {\n setStorage(Keys.ViewMode, JSON.stringify(viewMode));\n}\n\nexport function hasViewModeFromStorage(): boolean {\n return !!getStorage(Keys.ViewMode);\n}\n\nexport function setAPILoaderModeToStorage(mode: APILoaderMode4Dev) {\n setStorage(Keys.APILoaderMode4Dev, mode);\n}\n\nexport function getAPILoaderModeFromStorage() {\n return getStorage(Keys.APILoaderMode4Dev) || APILoaderMode4Dev.Default;\n}\n\nexport function getFirstVisitFromStorage() {\n return getStorage(Keys.FirstVisit);\n}\n\nexport function setFirstVisitToStorage(value: '1') {\n setStorage(Keys.FirstVisit, value);\n}\n"],"names":["getStorage","key","window","setStorage","value","error","console","getThemeFromStorage","Theme","setThemeToStorage","theme","getLocaleFromStorage","Language","setLocaleToStorage","locale","getViewModeFromStorage","fallback","ViewMode","str","JSON","setViewModeToStorage","viewMode","hasViewModeFromStorage","setAPILoaderModeToStorage","mode","getAPILoaderModeFromStorage","APILoaderMode4Dev","getFirstVisitFromStorage","setFirstVisitToStorage"],"mappings":";AAYO,SAASA,WAAWC,GAAW;IACpC,OAAOC,OAAO,YAAY,CAAC,OAAO,CAAC,wBAAoBD,KAAK;AAC9D;AAEO,SAASE,WAAWF,GAAW,EAAEG,KAAa;IACnD,IAAI;QACFF,OAAO,YAAY,CAAC,OAAO,CAAC,wBAAoBD,KAAK,EAAEG;QACvD,OAAO;IACT,EAAE,OAAOC,OAAO;QACdC,QAAQ,KAAK,CAACD;QACd,OAAO;IACT;AACF;AAEO,SAASE;IACd,OAAQP,WAAW,YAAmCQ,MAAM,KAAK;AACnE;AAEO,SAASC,kBAAkBC,KAAsB;IACtDP,WAAW,SAAYO;AACzB;AAEO,SAASC;IACd,OAAQX,WAAW,aAAqCY,SAAS,EAAE;AACrE;AAEO,SAASC,mBAAmBC,MAAwB;IACzDX,WAAW,UAAaW;AAC1B;AAEO,SAASC;IACd,MAAMC,WAA+B;QAAE,cAAcC,SAAS,IAAI;QAAE,eAAeA,SAAS,IAAI;IAAC;IACjG,IAAI;QACF,MAAMC,MAAMlB,WAAW;QACvB,IAAIkB,KACF,OAAOC,KAAK,KAAK,CAACD,QAAQF;QAE5B,OAAOA;IACT,EAAE,OAAOX,OAAO;QACd,OAAOW;IACT;AACF;AAEO,SAASI,qBAAqBC,QAA4B;IAC/DlB,WAAW,YAAegB,KAAK,SAAS,CAACE;AAC3C;AAEO,SAASC;IACd,OAAO,CAAC,CAACtB,WAAW;AACtB;AAEO,SAASuB,0BAA0BC,IAAuB;IAC/DrB,WAAW,qBAAwBqB;AACrC;AAEO,SAASC;IACd,OAAOzB,WAAW,wBAA2B0B,kBAAkB,OAAO;AACxE;AAEO,SAASC;IACd,OAAO3B,WAAW;AACpB;AAEO,SAAS4B,uBAAuBxB,KAAU;IAC/CD,WAAW,eAAiBC;AAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/string.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/string.mjs","sources":["../../src/utils/string.ts"],"sourcesContent":["export function ensurePrefix(str: string, prefix: string): string {\n return str.slice(0, prefix.length) === prefix ? str : `${str}${prefix}`;\n}\n\nexport function removePrefix(str: string, prefix: string): string {\n let res = str;\n\n while (res.slice(0, prefix.length) === prefix) {\n res = res.slice(prefix.length);\n }\n\n return res;\n}\n"],"names":["ensurePrefix","str","prefix","removePrefix","res"],"mappings":"AAAO,SAASA,aAAaC,GAAW,EAAEC,MAAc;IACtD,OAAOD,IAAI,KAAK,CAAC,GAAGC,OAAO,MAAM,MAAMA,SAASD,MAAM,GAAGA,MAAMC,QAAQ;AACzE;AAEO,SAASC,aAAaF,GAAW,EAAEC,MAAc;IACtD,IAAIE,MAAMH;IAEV,MAAOG,IAAI,KAAK,CAAC,GAAGF,OAAO,MAAM,MAAMA,OACrCE,MAAMA,IAAI,KAAK,CAACF,OAAO,MAAM;IAG/B,OAAOE;AACT"}
|
package/dist/utils/time.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/time.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/time.mjs","sources":["../../src/utils/time.ts"],"sourcesContent":["import { Time } from '@rsdoctor/utils/common';\n\nconst { toFixedDigits, getUnit, formatCosts } = Time;\n\nexport { toFixedDigits as toFixed, getUnit, formatCosts };\n"],"names":["toFixedDigits","getUnit","formatCosts","Time"],"mappings":";AAEA,MAAM,EAAEA,aAAa,EAAEC,OAAO,EAAEC,WAAW,EAAE,GAAGC"}
|
package/dist/utils/url.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/url.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/url.mjs","sources":["../../src/utils/url.ts"],"sourcesContent":["import parse from 'url-parse';\nimport { Constants, Client } from '@rsdoctor/types';\n\nfunction setDefaultUrl(url: parse<Record<string, string | undefined>>) {\n if (process.env.NODE_ENV !== 'development') {\n const uri = parse(Constants.RsdoctorClientUrl, true);\n url.set('origin', uri.origin);\n url.set('protocol', uri.protocol);\n url.set('host', uri.host);\n url.set('pathname', uri.pathname);\n }\n}\n\nfunction setUploaderHash(url: parse<Record<string, string | undefined>>) {\n if (url.hash.endsWith(Client.RsdoctorClientRoutes.Uploader)) {\n url.set('hash', Client.RsdoctorClientRoutes.Overall);\n }\n}\n\nexport function isJsDataUrl(path: string) {\n return path.startsWith('data:text/javascript;');\n}\n\nexport function getManifestUrlFromUrlQuery(): string | void {\n const { query } = parse(location.href, true);\n const url = query[Client.RsdoctorClientUrlQuery.ManifestFile];\n if (url) {\n return decodeURIComponent(url);\n }\n}\n\nexport function getEnableRoutesFromUrlQuery(): string[] | void {\n const { query } = parse(location.href, true);\n let enableRoutesStr = query[Client.RsdoctorClientUrlQuery.EnableRoutes];\n\n if (!enableRoutesStr && location.hash) {\n const hashUrl = parse(location.hash, true);\n enableRoutesStr = hashUrl.query[Client.RsdoctorClientUrlQuery.EnableRoutes];\n }\n\n // If still not found, try manual parsing of hash fragment\n if (!enableRoutesStr && location.hash) {\n const hashFragment = location.hash;\n const queryIndex = hashFragment.indexOf('?');\n if (queryIndex !== -1) {\n const queryString = hashFragment.substring(queryIndex + 1);\n const urlParams = new URLSearchParams(queryString);\n enableRoutesStr =\n urlParams.get(Client.RsdoctorClientUrlQuery.EnableRoutes) || undefined;\n }\n }\n\n if (enableRoutesStr) {\n try {\n const result = JSON.parse(decodeURIComponent(enableRoutesStr));\n return result;\n } catch (err) {\n console.warn('Failed to parse enableRoutes from URL query:', err);\n return undefined;\n }\n }\n return undefined;\n}\n\nexport function changeOrigin(origin: string) {\n const url = parse(location.href, true);\n const newUrl = parse(origin, true);\n\n setUploaderHash(url);\n\n url.set('origin', origin);\n url.set('protocol', newUrl.protocol);\n url.set('host', newUrl.host);\n url.set('port', newUrl.port);\n\n return url.toString();\n}\n\nexport function getSharingUrl(\n manifestCloudUrl: string,\n enableRoutes?: string[],\n) {\n const url = parse(location.href, true);\n\n setDefaultUrl(url);\n setUploaderHash(url);\n\n const query: Record<string, string> = {\n ...url.query,\n [Client.RsdoctorClientUrlQuery.ManifestFile]: manifestCloudUrl,\n };\n\n // Add enableRoutes to query if provided\n if (enableRoutes && enableRoutes.length > 0) {\n query[Client.RsdoctorClientUrlQuery.EnableRoutes] =\n JSON.stringify(enableRoutes);\n }\n\n url.set('query', query);\n\n return url.toString();\n}\n\nexport function getDemoUrl() {\n if (process.env.OFFICIAL_DEMO_MANIFEST_PATH) {\n return getSharingUrl(process.env.OFFICIAL_DEMO_MANIFEST_PATH);\n }\n return null;\n}\n\nexport const getShortPath = (path: string) => {\n if (path?.indexOf('node_modules') >= 0) {\n const pathArr = path.split('node_modules');\n return `node_modules${pathArr[pathArr.length - 1]}`;\n }\n if (path?.length) {\n return `${path?.split('/').slice(-4).join('/')}`;\n }\n return path;\n};\n\nexport function isDef<E = unknown>(data: E): data is NonNullable<E> {\n return data !== undefined && data !== null;\n}\n"],"names":["setDefaultUrl","url","process","uri","parse","Constants","setUploaderHash","Client","isJsDataUrl","path","getManifestUrlFromUrlQuery","query","location","decodeURIComponent","getEnableRoutesFromUrlQuery","enableRoutesStr","hashUrl","hashFragment","queryIndex","queryString","urlParams","URLSearchParams","undefined","result","JSON","err","console","changeOrigin","origin","newUrl","getSharingUrl","manifestCloudUrl","enableRoutes","getDemoUrl","getShortPath","pathArr","isDef","data"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './utils';
|
|
2
|
-
export * from './types';
|
|
3
|
-
export * from './master';
|
|
4
|
-
export * from './worker';
|
|
1
|
+
export * from './utils.js';
|
|
2
|
+
export * from './types.js';
|
|
3
|
+
export * from './master.js';
|
|
4
|
+
export * from './worker.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CreateWorker } from './types';
|
|
2
|
-
import { ChildWorker } from './worker';
|
|
1
|
+
import { CreateWorker } from './types.js';
|
|
2
|
+
import { ChildWorker } from './worker.js';
|
|
3
3
|
declare class Master {
|
|
4
4
|
private _workerMap;
|
|
5
5
|
detectWorker(create: CreateWorker): ChildWorker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils/worker/master.mjs","sources":["
|
|
1
|
+
{"version":3,"file":"utils/worker/master.mjs","sources":["../../../src/utils/worker/master.ts"],"sourcesContent":["import { CreateWorker } from './types';\nimport { ChildWorker } from './worker';\n\nclass Master {\n private _workerMap = new WeakMap<CreateWorker, ChildWorker>();\n\n public detectWorker(create: CreateWorker) {\n if (this._workerMap.has(create)) return this._workerMap.get(create)!;\n\n const worker = create();\n const child = new ChildWorker(worker);\n this._workerMap.set(create, child);\n\n return child;\n }\n}\n\nexport const master = new Master();\n"],"names":["Master","create","worker","child","ChildWorker","WeakMap","master"],"mappings":";;;;;;;;;;;AAGA,MAAMA;IAGG,aAAaC,MAAoB,EAAE;QACxC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA,SAAS,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA;QAE5D,MAAMC,SAASD;QACf,MAAME,QAAQ,IAAIC,YAAYF;QAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAACD,QAAQE;QAE5B,OAAOA;IACT;;QAVA,uBAAQ,cAAa,IAAIE;;AAW3B;AAEO,MAAMC,SAAS,IAAIN"}
|