@rsdoctor/components 1.5.13 → 1.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Charts/TreeMap.mjs +1 -2
- package/dist/components/Charts/TreeMap.mjs.map +1 -1
- package/dist/components/Layout/header.d.ts +0 -1
- package/dist/components/Layout/header.mjs +14 -53
- package/dist/components/Layout/header.mjs.map +1 -1
- package/dist/components/Layout/header.module.mjs +15 -0
- package/dist/components/Layout/header.module.mjs.map +1 -0
- package/dist/components/Layout/header_module.css +88 -0
- package/dist/components/Layout/header_module.css.map +1 -0
- package/dist/components/Layout/index.mjs +10 -8
- package/dist/components/Layout/index.mjs.map +1 -1
- package/dist/components/Layout/index.module.mjs +7 -0
- package/dist/components/Layout/index.module.mjs.map +1 -0
- package/dist/components/Layout/index_module.css +11 -0
- package/dist/components/Layout/index_module.css.map +1 -0
- package/dist/pages/BundleSize/components/asset.mjs +5 -3
- package/dist/pages/BundleSize/components/asset.mjs.map +1 -1
- package/dist/pages/BundleSize/components/asset_module.css +15 -7
- package/dist/pages/BundleSize/components/asset_module.css.map +1 -1
- package/dist/pages/BundleSize/components/index.d.ts +1 -1
- package/dist/pages/BundleSize/components/index.mjs +223 -556
- package/dist/pages/BundleSize/components/index.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index.module.mjs +10 -0
- package/dist/pages/BundleSize/components/index.module.mjs.map +1 -1
- package/dist/pages/BundleSize/components/index_module.css +49 -0
- package/dist/pages/BundleSize/components/index_module.css.map +1 -1
- package/dist/pages/BundleSize/components/tree-graph.d.ts +7 -0
- package/dist/pages/BundleSize/components/tree-graph.mjs +366 -0
- package/dist/pages/BundleSize/components/tree-graph.mjs.map +1 -0
- package/dist/pages/BundleSize/index.mjs +1 -11
- package/dist/pages/BundleSize/index.mjs.map +1 -1
- package/dist/utils/hooks.d.ts +3 -1
- package/dist/utils/hooks.mjs +33 -2
- package/dist/utils/hooks.mjs.map +1 -1
- package/package.json +4 -4
- package/dist/components/Layout/header.css +0 -28
- package/dist/components/Layout/header.css.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages/BundleSize/components/tree-graph.mjs","sources":["../../../../src/pages/BundleSize/components/tree-graph.tsx"],"sourcesContent":["import { CodeOutlined, InfoCircleOutlined } from '@ant-design/icons';\nimport { type Client, SDK } from '@rsdoctor/types';\nimport {\n Card,\n Col,\n Divider,\n Empty,\n InputNumber,\n Row,\n Select,\n Space,\n Tooltip,\n Typography,\n} from 'antd';\nimport { debounce, sumBy } from 'es-toolkit/compat';\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useCodeDrawer } from 'src/components/base/CodeViewer/useCodeDrawer';\nimport { Badge as Bdg } from '../../../components/Badge';\nimport { FileTree } from '../../../components/FileTree';\nimport { KeywordInput } from '../../../components/Form/keyword';\nimport { Keyword } from '../../../components/Keyword';\nimport { ServerAPIProvider } from '../../../components/Manifest';\nimport { Size } from '../../../constants';\nimport { createFileStructures, formatSize, useI18n } from '../../../utils';\nimport { AssetDetail } from './asset';\nimport styles from './index.module.scss';\nimport './index.sass';\nimport { SearchModal } from './search-modal';\nconst { Option } = Select;\n\nexport const TreeGraph = memo(\n ({\n cwd,\n summary,\n entryPoints,\n }: {\n cwd: string;\n summary: Client.RsdoctorClientAssetsSummary;\n entryPoints: SDK.ServerAPI.InferResponseType<SDK.ServerAPI.API.GetEntryPoints>;\n }) => {\n const [selectedEntryPoints, setEntryPoints] = useState<\n SDK.EntryPointData[]\n >([]);\n const [inputModule, setModuleValue] = useState(0);\n const [inputAssetName, setAssetName] = useState('');\n const [inputAssetSize, setAssetSize] = useState(0);\n const [defaultExpandAll, setDefaultExpandAll] = useState(false);\n const [inputModuleUnit, setModuleUnit] = useState('');\n const [inputChunkUnit, setChunkUnit] = useState('');\n const [assetPath, setAssetPath] = useState<string | null>(null);\n const { showCode, codeDrawerComponent } = useCodeDrawer(\n 'Do not have the codes of assets. If you use the lite or brief mode, there will have codes.',\n );\n\n const { t } = useI18n();\n\n const assets = summary.all.total.files;\n\n const handleChange = useCallback(\n (type: string) => (value: string) => {\n if (type === 'module') {\n setModuleUnit(value);\n } else if (type === 'chunk') {\n setChunkUnit(value);\n }\n },\n [],\n );\n\n const selectAfter = (type: string) => (\n <Select defaultValue=\"kb\" onChange={handleChange(type)}>\n <Option value=\"kb\">KB</Option>\n <Option value=\"mb\">MB</Option>\n </Select>\n );\n const onChangeModule = useCallback(\n debounce((newValue: number) => {\n const count =\n inputModuleUnit === 'mb' ? newValue * 1024 * 1024 : newValue * 1024;\n setModuleValue(count);\n }, 300),\n [],\n );\n\n const onChangeAsset = useCallback(\n debounce((newValue: number) => {\n const count =\n inputChunkUnit === 'mb' ? newValue * 1024 * 1024 : newValue * 1024;\n setAssetSize(count);\n }, 300),\n [],\n );\n\n const filteredAssets = useMemo(() => {\n let res = assets.slice();\n\n if (inputAssetName) {\n res = res.filter((e) => e.path.indexOf(inputAssetName) > -1);\n }\n\n if (inputAssetSize > 0) {\n res = res.filter((e) => e.size >= inputAssetSize);\n }\n\n if (selectedEntryPoints.length) {\n res = res.filter((e) => {\n if (selectedEntryPoints.some((ep) => ep.assets.includes(e.path))) {\n return true;\n }\n return false;\n });\n }\n\n return res.sort((a, b) => {\n const _a = a.path.indexOf('/') > -1 ? 1 : 0;\n const _b = b.path.indexOf('/') > -1 ? 1 : 0;\n // return _a - _b;\n return _b - _a;\n });\n }, [assets, selectedEntryPoints, inputAssetName, inputAssetSize]);\n\n useEffect(() => {\n function getFileExtension(filePath: string) {\n const parts = filePath.split('.');\n return parts.length > 1 ? parts.pop() : '';\n }\n\n summary.all.total.files.forEach((f) => {\n const ext = getFileExtension(f.path);\n if (ext === 'js') {\n setAssetPath(f.path);\n }\n });\n }, [summary.all.total.files]);\n\n const assetsStructures = useMemo(() => {\n const res = createFileStructures({\n files: filteredAssets.map((e) => e.path).filter(Boolean),\n fileTitle(file, basename) {\n const target = filteredAssets.find((e) => e.path === file)!;\n const { size, initial, path, content } = target;\n\n return (\n <div\n className={styles.assetBox}\n onClick={() => {\n setAssetPath(path);\n }}\n >\n <Keyword\n text={basename}\n keyword={''}\n className={styles.fileText}\n />\n <Space size=\"small\" className={styles.assetsTag}>\n <Divider type=\"vertical\" />\n <Typography.Text style={{ color: '#4FD233' }}>\n {formatSize(size)}\n </Typography.Text>\n <Divider type=\"vertical\" />\n {initial ? (\n <Typography.Text style={{ color: '#009A9E' }}>\n initial\n </Typography.Text>\n ) : null}\n <CodeOutlined\n style={{ fontSize: 14, padding: 0 }}\n onClick={() => showCode({ code: content!, filePath: path })}\n />\n </Space>\n </div>\n );\n },\n });\n return res;\n }, [filteredAssets]);\n\n const onSearch = (value: string) => {\n setAssetName(value);\n setDefaultExpandAll(false);\n };\n return (\n <>\n <div className={styles.treeGraph}>\n <Row align=\"middle\" gutter={[Size.BasePadding, Size.BasePadding]}>\n {entryPoints && entryPoints.length ? (\n <Col>\n <Select\n mode=\"multiple\"\n value={selectedEntryPoints.map((e) => e.name)}\n style={{\n minWidth: 230,\n width: 'auto',\n maxWidth: 300,\n }}\n placeholder={'filter assets by entry point'}\n onChange={(name: string[]) => {\n setEntryPoints(\n name\n .map((e) => entryPoints.find((ep) => ep.name === e)!)\n .filter(Boolean),\n );\n }}\n allowClear\n onClear={() => {\n setEntryPoints([]);\n }}\n >\n {entryPoints.map((e) => {\n return (\n <Select.Option key={e.name} value={e.name}>\n <Space>\n <Bdg\n label={e.name}\n value={formatSize(e.size)}\n tooltip={e.name}\n />\n </Space>\n </Select.Option>\n );\n })}\n </Select>\n </Col>\n ) : null}\n <Col>\n <KeywordInput\n placeholder=\"search asset by keyword\"\n onChange={onSearch}\n />\n </Col>\n <Col span={6}>\n <InputNumber\n min={0}\n style={{ width: '95%' }}\n addonBefore={\n <Space>\n <Typography.Text style={{ fontSize: 14, color: 'inherit' }}>\n Asset Size\n </Typography.Text>\n <Tooltip\n title={t(\n 'filter the output assets which size is greater than the input value',\n )}\n style={{ marginLeft: 3 }}\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n }\n onChange={(value) => onChangeAsset(Number(value))}\n addonAfter={selectAfter('chunk')}\n />\n </Col>\n <Col span={6}>\n <InputNumber\n min={0}\n style={{ width: '95%' }}\n addonBefore={\n <Space>\n <Typography.Text style={{ fontSize: 14, color: 'inherit' }}>\n Module Size\n </Typography.Text>\n <Tooltip\n title={t(\n 'filter the modules which size is greater than the input value',\n )}\n style={{ marginLeft: 3 }}\n >\n <InfoCircleOutlined\n style={{ color: 'rgba(0,0,0,.45)' }}\n />\n </Tooltip>\n </Space>\n }\n onChange={(value) => {\n onChangeModule(Number(value));\n }}\n addonAfter={selectAfter('module')}\n />\n </Col>\n </Row>\n <Row>\n <SearchModal />\n </Row>\n {filteredAssets.length ? (\n <div className={styles.assetDetailRoot}>\n <div className={styles.assetDetailCol}>\n <Card\n className={styles.assetDetailFileTreeRoot}\n classNames={{\n body: styles.assetDetailFileTreeBody,\n }}\n title={\n <Space>\n <Typography.Text>\n {t('Output Assets List')}\n </Typography.Text>\n <Divider type=\"vertical\" />\n <Tooltip\n title={`total assets count is ${assets.length}, the filtered assets count is ${filteredAssets.length}`}\n >\n <Typography.Text\n type=\"secondary\"\n style={{\n fontSize: 12,\n fontWeight: 400,\n }}\n >\n {filteredAssets.length} / {assets.length}\n </Typography.Text>\n </Tooltip>\n <Divider type=\"vertical\" />\n <Typography.Text\n type=\"secondary\"\n style={{ fontSize: 12, fontWeight: 400 }}\n >\n {formatSize(sumBy(filteredAssets, (e) => e.size))}\n </Typography.Text>\n </Space>\n }\n size=\"small\"\n >\n <div className={styles.assetDetailFileTreeViewport}>\n <div className={styles.assetDetailFileTreeScrollArea}>\n <FileTree\n className={styles.assets}\n treeData={assetsStructures}\n autoExpandParent\n defaultExpandAll={\n defaultExpandAll || filteredAssets.length <= 20\n }\n key={`tree_${inputAssetName}_${defaultExpandAll}`}\n />\n </div>\n </div>\n </Card>\n </div>\n <div className={styles.assetDetailCol}>\n {assetPath ? (\n <ServerAPIProvider\n api={SDK.ServerAPI.API.GetAssetDetails}\n body={{ assetPath }}\n >\n {(details) => (\n <AssetDetail\n asset={details.asset}\n chunks={details.chunks}\n modules={details.modules}\n moduleSizeLimit={inputModule}\n root={cwd}\n />\n )}\n </ServerAPIProvider>\n ) : (\n <Card>\n <Empty\n description={\n <Typography.Text strong>\n Click the file path on the left to show the modules of\n the asset\n </Typography.Text>\n }\n />\n </Card>\n )}\n </div>\n </div>\n ) : (\n <Empty />\n )}\n </div>\n {codeDrawerComponent}\n </>\n );\n },\n);\n"],"names":["Option","Select","TreeGraph","memo","cwd","summary","entryPoints","selectedEntryPoints","setEntryPoints","useState","inputModule","setModuleValue","inputAssetName","setAssetName","inputAssetSize","setAssetSize","defaultExpandAll","setDefaultExpandAll","inputModuleUnit","setModuleUnit","inputChunkUnit","setChunkUnit","assetPath","setAssetPath","showCode","codeDrawerComponent","useCodeDrawer","t","useI18n","assets","handleChange","useCallback","type","value","selectAfter","onChangeModule","debounce","newValue","count","onChangeAsset","filteredAssets","useMemo","res","e","ep","a","b","_a","_b","useEffect","getFileExtension","filePath","parts","f","ext","assetsStructures","createFileStructures","Boolean","file","basename","target","size","initial","path","content","styles","Keyword","Space","Divider","Typography","formatSize","CodeOutlined","onSearch","Row","Size","Col","name","Bdg","KeywordInput","InputNumber","Tooltip","InfoCircleOutlined","Number","SearchModal","Card","sumBy","FileTree","ServerAPIProvider","SDK","details","AssetDetail","Empty"],"mappings":"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"}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Col, Row } from "antd";
|
|
3
2
|
import "react";
|
|
4
|
-
import { Size } from "../../constants.mjs";
|
|
5
3
|
import { WebpackModulesOverall } from "./components/index.mjs";
|
|
6
4
|
export * from "./constants.mjs";
|
|
7
|
-
const Page = ()=>/*#__PURE__*/ jsx(
|
|
8
|
-
children: /*#__PURE__*/ jsx(Col, {
|
|
9
|
-
span: 24,
|
|
10
|
-
style: {
|
|
11
|
-
marginBottom: Size.BasePadding
|
|
12
|
-
},
|
|
13
|
-
children: /*#__PURE__*/ jsx(WebpackModulesOverall, {})
|
|
14
|
-
})
|
|
15
|
-
});
|
|
5
|
+
const Page = ()=>/*#__PURE__*/ jsx(WebpackModulesOverall, {});
|
|
16
6
|
export { Page };
|
|
17
7
|
|
|
18
8
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages/BundleSize/index.mjs","sources":["../../../src/pages/BundleSize/index.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"pages/BundleSize/index.mjs","sources":["../../../src/pages/BundleSize/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { WebpackModulesOverall } from './components';\n\nexport const Page: React.FC = () => {\n return <WebpackModulesOverall />;\n};\n\nexport * from './constants';\n"],"names":["Page","WebpackModulesOverall"],"mappings":";;;;AAIO,MAAMA,OAAiB,IACrB,WAAP,GAAO,IAACC,uBAAqBA,CAAAA"}
|
package/dist/utils/hooks.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Manifest, Rule, SDK } from '@rsdoctor/types';
|
|
2
|
+
import { type SetStateAction, type Dispatch } from 'react';
|
|
2
3
|
import { useTranslation } from 'react-i18next';
|
|
3
4
|
import './i18n/index.js';
|
|
4
5
|
export declare const useI18n: typeof useTranslation;
|
|
@@ -6,7 +7,7 @@ export declare function useRuleIndexNavigate(code: string, link?: string | undef
|
|
|
6
7
|
export declare function useUrlQuery(): Record<string, string | undefined>;
|
|
7
8
|
export declare function useLoading(defaultLoading?: boolean): {
|
|
8
9
|
loading: boolean;
|
|
9
|
-
setLoading:
|
|
10
|
+
setLoading: Dispatch<SetStateAction<boolean>>;
|
|
10
11
|
withLoading(func: (...args: unknown[]) => Promise<unknown> | unknown): Promise<void>;
|
|
11
12
|
};
|
|
12
13
|
export declare function useProjectRootByManifest(manifest: Manifest.RsdoctorManifest): string;
|
|
@@ -32,3 +33,4 @@ export declare function useElementSize<T extends HTMLElement = HTMLDivElement>()
|
|
|
32
33
|
readonly width: number;
|
|
33
34
|
readonly height: number;
|
|
34
35
|
}];
|
|
36
|
+
export declare function usePersistedState<T>(baseKey: string, initialValue: T | (() => T)): [T, Dispatch<SetStateAction<T>>];
|
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, throttle, uniqBy } from "es-toolkit/compat";
|
|
4
|
-
import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, 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";
|
|
@@ -200,6 +200,37 @@ function useElementSize() {
|
|
|
200
200
|
}
|
|
201
201
|
];
|
|
202
202
|
}
|
|
203
|
-
|
|
203
|
+
function usePersistedState(baseKey, initialValue) {
|
|
204
|
+
const NS = 'RSDOC:';
|
|
205
|
+
const key = NS + baseKey;
|
|
206
|
+
const [state, setState] = useState(()=>{
|
|
207
|
+
try {
|
|
208
|
+
const item = window.localStorage.getItem(key);
|
|
209
|
+
if (null !== item) return JSON.parse(item);
|
|
210
|
+
return 'function' == typeof initialValue ? initialValue() : initialValue;
|
|
211
|
+
} catch (error) {
|
|
212
|
+
console.warn(`Error reading localStorage key "${key}":`, error);
|
|
213
|
+
return 'function' == typeof initialValue ? initialValue() : initialValue;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
const setPersistedState = useCallback((value)=>{
|
|
217
|
+
try {
|
|
218
|
+
setState((prevState)=>{
|
|
219
|
+
const nextState = value instanceof Function ? value(prevState) : value;
|
|
220
|
+
window.localStorage.setItem(key, JSON.stringify(nextState));
|
|
221
|
+
return nextState;
|
|
222
|
+
});
|
|
223
|
+
} catch (error) {
|
|
224
|
+
console.warn(`Error setting localStorage key "${key}":`, error);
|
|
225
|
+
}
|
|
226
|
+
}, [
|
|
227
|
+
key
|
|
228
|
+
]);
|
|
229
|
+
return [
|
|
230
|
+
state,
|
|
231
|
+
setPersistedState
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
export { useBundleAlertsByErrors, useBundleAlertsByManifest, useChunkGraphByManifest, useCloudManifestUrlByManifest, useCompileAlertsByErrors, useConfigOutputFileNameByManifest, useDetectIfCloudIdeEnv, useDuplicatePackagesByErrors, useDuplicatePackagesByManifest, useElementSize, useErrorsByManifest, useHashByManifest, useI18n, useLoading, useModuleGraph, useModuleGraphByManifest, usePackageGraphByManifest, usePersistedState, useProjectRootByManifest, useRuleIndexNavigate, useUniqModules, useUniqModulesByManifest, useUrlQuery, useWebpackConfigurationByConfigs, useWindowWidth };
|
|
204
235
|
|
|
205
236
|
//# sourceMappingURL=hooks.mjs.map
|
package/dist/utils/hooks.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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, throttle } from 'es-toolkit/compat';\nimport { useEffect, useLayoutEffect, useMemo, useRef, 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 if (callback) {\n callback(error, t);\n }\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\nexport function useElementSize<T extends HTMLElement = HTMLDivElement>() {\n const ref = useRef<T>(null);\n const [width, setWidth_] = useState(0);\n const [height, setHeight_] = useState(0);\n\n useLayoutEffect(() => {\n const $el = ref.current;\n if (!$el) return;\n const setWidth = (n: number) => setWidth_(Math.ceil(n));\n const setHeight = (n: number) => setHeight_(Math.ceil(n));\n\n const initialRect = $el.getBoundingClientRect();\n setWidth(initialRect.width);\n setHeight(initialRect.height);\n\n const onResize = throttle((entries: ResizeObserverEntry[]) => {\n const entry = entries[0];\n if (!entry) return;\n\n const borderBox = entry.borderBoxSize?.[0];\n\n if (borderBox) {\n setWidth(borderBox.inlineSize);\n setHeight(borderBox.blockSize);\n } else {\n // fallback for dead browsers\n setWidth(entry.contentRect.width);\n setHeight(entry.contentRect.height);\n }\n }, 100);\n const observer = new ResizeObserver(onResize);\n\n observer.observe($el);\n\n return () => {\n observer.disconnect();\n onResize.cancel();\n };\n }, []);\n\n return [ref, { width, height }] as const;\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","useElementSize","ref","useRef","width","setWidth_","height","setHeight_","useLayoutEffect","$el","setWidth","n","Math","setHeight","initialRect","onResize","throttle","entries","entry","borderBox","observer","ResizeObserver"],"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, throttle } from 'es-toolkit/compat';\nimport {\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n type SetStateAction,\n type Dispatch,\n} 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 if (callback) {\n callback(error, t);\n }\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\nexport function useElementSize<T extends HTMLElement = HTMLDivElement>() {\n const ref = useRef<T>(null);\n const [width, setWidth_] = useState(0);\n const [height, setHeight_] = useState(0);\n\n useLayoutEffect(() => {\n const $el = ref.current;\n if (!$el) return;\n const setWidth = (n: number) => setWidth_(Math.ceil(n));\n const setHeight = (n: number) => setHeight_(Math.ceil(n));\n\n const initialRect = $el.getBoundingClientRect();\n setWidth(initialRect.width);\n setHeight(initialRect.height);\n\n const onResize = throttle((entries: ResizeObserverEntry[]) => {\n const entry = entries[0];\n if (!entry) return;\n\n const borderBox = entry.borderBoxSize?.[0];\n\n if (borderBox) {\n setWidth(borderBox.inlineSize);\n setHeight(borderBox.blockSize);\n } else {\n // fallback for dead browsers\n setWidth(entry.contentRect.width);\n setHeight(entry.contentRect.height);\n }\n }, 100);\n const observer = new ResizeObserver(onResize);\n\n observer.observe($el);\n\n return () => {\n observer.disconnect();\n onResize.cancel();\n };\n }, []);\n\n return [ref, { width, height }] as const;\n}\n\nexport function usePersistedState<T>(\n baseKey: string,\n initialValue: T | (() => T),\n): [T, Dispatch<SetStateAction<T>>] {\n const NS = 'RSDOC:';\n\n const key = NS + baseKey;\n const [state, setState] = useState<T>(() => {\n try {\n const item = window.localStorage.getItem(key);\n if (item !== null) {\n return JSON.parse(item);\n }\n\n return typeof initialValue === 'function'\n ? (initialValue as () => T)()\n : initialValue;\n } catch (error) {\n console.warn(`Error reading localStorage key \"${key}\":`, error);\n return typeof initialValue === 'function'\n ? (initialValue as () => T)()\n : initialValue;\n }\n });\n\n const setPersistedState = useCallback(\n (value: SetStateAction<T>) => {\n try {\n setState((prevState) => {\n const nextState =\n value instanceof Function\n ? (value as (prevState: T) => T)(prevState)\n : value;\n\n window.localStorage.setItem(key, JSON.stringify(nextState));\n return nextState;\n });\n } catch (error) {\n console.warn(`Error setting localStorage key \"${key}\":`, error);\n }\n },\n [key],\n );\n\n return [state, setPersistedState];\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","useElementSize","ref","useRef","width","setWidth_","height","setHeight_","useLayoutEffect","$el","setWidth","n","Math","setHeight","initialRect","onResize","throttle","entries","entry","borderBox","observer","ResizeObserver","usePersistedState","baseKey","initialValue","NS","key","state","setState","item","console","setPersistedState","useCallback","prevState","nextState","Function"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdoctor/components",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.14",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"repository": {
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
"react-markdown": "^9.1.0",
|
|
75
75
|
"socket.io-client": "4.8.1",
|
|
76
76
|
"url-parse": "1.5.10",
|
|
77
|
-
"@rsdoctor/
|
|
78
|
-
"@rsdoctor/
|
|
79
|
-
"@rsdoctor/
|
|
77
|
+
"@rsdoctor/graph": "1.5.14",
|
|
78
|
+
"@rsdoctor/utils": "1.5.14",
|
|
79
|
+
"@rsdoctor/types": "1.5.14"
|
|
80
80
|
},
|
|
81
81
|
"peerDependencies": {
|
|
82
82
|
"react": ">=19",
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
.header-switch .ant-switch-handle {
|
|
2
|
-
top: 1px !important;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.header-icon {
|
|
6
|
-
-webkit-user-select: none;
|
|
7
|
-
user-select: none;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.header-icon:hover {
|
|
11
|
-
color: #1668dc;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.header-icon:active {
|
|
15
|
-
color: #40a9ff;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.rsdoctor-logo {
|
|
19
|
-
cursor: pointer;
|
|
20
|
-
height: 30px;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.rsdoctor-logo:active {
|
|
24
|
-
opacity: .8;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
/*# sourceMappingURL=header.css.map */
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://./src/components/Layout/header.scss"],"names":[],"mappings":"AAAA;EACE,mBAAmB;AACrB;;AAFqD;EAKnD,yBAAyB;EACzB,iBAAiB;AACnB;;AAPmF;EAUjF,cAAc;AAChB;;AAXoH;EAclH,cAAc;AAChB;;AAfsJ;EAkBpJ,eAAe;EACf,YAAY;AACd;;AApBgM;EAuB9L,WAAW;AACb","sourcesContent":[".header-switch .ant-switch-handle{top:1px !important}.header-icon{user-select:none}.header-icon:hover{color:#1668dc}.header-icon:active{color:#40a9ff}.rsdoctor-logo{cursor:pointer;height:30px}.rsdoctor-logo:active{opacity:.8}"],"sourceRoot":""}
|