hookehuyr

node节点操作

...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 "autoprefixer": "^10.4.21", 16 "autoprefixer": "^10.4.21",
17 "echarts": "^5.6.0", 17 "echarts": "^5.6.0",
18 "element-plus": "^2.9.6", 18 "element-plus": "^2.9.6",
19 + "lodash-es": "^4.17.21",
19 "postcss": "^8.5.3", 20 "postcss": "^8.5.3",
20 "tailwindcss": "^4.0.12", 21 "tailwindcss": "^4.0.12",
21 "vue": "^3.5.13", 22 "vue": "^3.5.13",
...@@ -23,6 +24,7 @@ ...@@ -23,6 +24,7 @@
23 }, 24 },
24 "devDependencies": { 25 "devDependencies": {
25 "@vitejs/plugin-vue": "^5.2.1", 26 "@vitejs/plugin-vue": "^5.2.1",
27 + "less": "^4.2.2",
26 "sass-embedded": "^1.85.1", 28 "sass-embedded": "^1.85.1",
27 "unplugin-auto-import": "^19.1.1", 29 "unplugin-auto-import": "^19.1.1",
28 "vite": "^6.2.0", 30 "vite": "^6.2.0",
...@@ -1336,6 +1338,18 @@ ...@@ -1336,6 +1338,18 @@
1336 "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==", 1338 "integrity": "sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==",
1337 "dev": true 1339 "dev": true
1338 }, 1340 },
1341 + "node_modules/copy-anything": {
1342 + "version": "2.0.6",
1343 + "resolved": "https://mirrors.cloud.tencent.com/npm/copy-anything/-/copy-anything-2.0.6.tgz",
1344 + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
1345 + "dev": true,
1346 + "dependencies": {
1347 + "is-what": "^3.14.1"
1348 + },
1349 + "funding": {
1350 + "url": "https://github.com/sponsors/mesqueeb"
1351 + }
1352 + },
1339 "node_modules/csstype": { 1353 "node_modules/csstype": {
1340 "version": "3.1.3", 1354 "version": "3.1.3",
1341 "resolved": "https://mirrors.cloud.tencent.com/npm/csstype/-/csstype-3.1.3.tgz", 1355 "resolved": "https://mirrors.cloud.tencent.com/npm/csstype/-/csstype-3.1.3.tgz",
...@@ -1398,6 +1412,19 @@ ...@@ -1398,6 +1412,19 @@
1398 "url": "https://github.com/fb55/entities?sponsor=1" 1412 "url": "https://github.com/fb55/entities?sponsor=1"
1399 } 1413 }
1400 }, 1414 },
1415 + "node_modules/errno": {
1416 + "version": "0.1.8",
1417 + "resolved": "https://mirrors.cloud.tencent.com/npm/errno/-/errno-0.1.8.tgz",
1418 + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
1419 + "dev": true,
1420 + "optional": true,
1421 + "dependencies": {
1422 + "prr": "~1.0.1"
1423 + },
1424 + "bin": {
1425 + "errno": "cli.js"
1426 + }
1427 + },
1401 "node_modules/es-module-lexer": { 1428 "node_modules/es-module-lexer": {
1402 "version": "1.6.0", 1429 "version": "1.6.0",
1403 "resolved": "https://mirrors.cloud.tencent.com/npm/es-module-lexer/-/es-module-lexer-1.6.0.tgz", 1430 "resolved": "https://mirrors.cloud.tencent.com/npm/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
...@@ -1571,6 +1598,13 @@ ...@@ -1571,6 +1598,13 @@
1571 "node": ">= 6" 1598 "node": ">= 6"
1572 } 1599 }
1573 }, 1600 },
1601 + "node_modules/graceful-fs": {
1602 + "version": "4.2.11",
1603 + "resolved": "https://mirrors.cloud.tencent.com/npm/graceful-fs/-/graceful-fs-4.2.11.tgz",
1604 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
1605 + "dev": true,
1606 + "optional": true
1607 + },
1574 "node_modules/has-flag": { 1608 "node_modules/has-flag": {
1575 "version": "4.0.0", 1609 "version": "4.0.0",
1576 "resolved": "https://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-4.0.0.tgz", 1610 "resolved": "https://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-4.0.0.tgz",
...@@ -1585,6 +1619,32 @@ ...@@ -1585,6 +1619,32 @@
1585 "resolved": "https://mirrors.cloud.tencent.com/npm/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", 1619 "resolved": "https://mirrors.cloud.tencent.com/npm/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
1586 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" 1620 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
1587 }, 1621 },
1622 + "node_modules/iconv-lite": {
1623 + "version": "0.6.3",
1624 + "resolved": "https://mirrors.cloud.tencent.com/npm/iconv-lite/-/iconv-lite-0.6.3.tgz",
1625 + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
1626 + "dev": true,
1627 + "optional": true,
1628 + "dependencies": {
1629 + "safer-buffer": ">= 2.1.2 < 3.0.0"
1630 + },
1631 + "engines": {
1632 + "node": ">=0.10.0"
1633 + }
1634 + },
1635 + "node_modules/image-size": {
1636 + "version": "0.5.5",
1637 + "resolved": "https://mirrors.cloud.tencent.com/npm/image-size/-/image-size-0.5.5.tgz",
1638 + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
1639 + "dev": true,
1640 + "optional": true,
1641 + "bin": {
1642 + "image-size": "bin/image-size.js"
1643 + },
1644 + "engines": {
1645 + "node": ">=0.10.0"
1646 + }
1647 + },
1588 "node_modules/immutable": { 1648 "node_modules/immutable": {
1589 "version": "5.0.3", 1649 "version": "5.0.3",
1590 "resolved": "https://mirrors.cloud.tencent.com/npm/immutable/-/immutable-5.0.3.tgz", 1650 "resolved": "https://mirrors.cloud.tencent.com/npm/immutable/-/immutable-5.0.3.tgz",
...@@ -1621,12 +1681,44 @@ ...@@ -1621,12 +1681,44 @@
1621 "node": ">=0.12.0" 1681 "node": ">=0.12.0"
1622 } 1682 }
1623 }, 1683 },
1684 + "node_modules/is-what": {
1685 + "version": "3.14.1",
1686 + "resolved": "https://mirrors.cloud.tencent.com/npm/is-what/-/is-what-3.14.1.tgz",
1687 + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
1688 + "dev": true
1689 + },
1624 "node_modules/js-tokens": { 1690 "node_modules/js-tokens": {
1625 "version": "9.0.1", 1691 "version": "9.0.1",
1626 "resolved": "https://mirrors.cloud.tencent.com/npm/js-tokens/-/js-tokens-9.0.1.tgz", 1692 "resolved": "https://mirrors.cloud.tencent.com/npm/js-tokens/-/js-tokens-9.0.1.tgz",
1627 "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", 1693 "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
1628 "dev": true 1694 "dev": true
1629 }, 1695 },
1696 + "node_modules/less": {
1697 + "version": "4.2.2",
1698 + "resolved": "https://mirrors.cloud.tencent.com/npm/less/-/less-4.2.2.tgz",
1699 + "integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==",
1700 + "dev": true,
1701 + "dependencies": {
1702 + "copy-anything": "^2.0.1",
1703 + "parse-node-version": "^1.0.1",
1704 + "tslib": "^2.3.0"
1705 + },
1706 + "bin": {
1707 + "lessc": "bin/lessc"
1708 + },
1709 + "engines": {
1710 + "node": ">=6"
1711 + },
1712 + "optionalDependencies": {
1713 + "errno": "^0.1.1",
1714 + "graceful-fs": "^4.1.2",
1715 + "image-size": "~0.5.0",
1716 + "make-dir": "^2.1.0",
1717 + "mime": "^1.4.1",
1718 + "needle": "^3.1.0",
1719 + "source-map": "~0.6.0"
1720 + }
1721 + },
1630 "node_modules/local-pkg": { 1722 "node_modules/local-pkg": {
1631 "version": "1.1.1", 1723 "version": "1.1.1",
1632 "resolved": "https://mirrors.cloud.tencent.com/npm/local-pkg/-/local-pkg-1.1.1.tgz", 1724 "resolved": "https://mirrors.cloud.tencent.com/npm/local-pkg/-/local-pkg-1.1.1.tgz",
...@@ -1673,6 +1765,20 @@ ...@@ -1673,6 +1765,20 @@
1673 "@jridgewell/sourcemap-codec": "^1.5.0" 1765 "@jridgewell/sourcemap-codec": "^1.5.0"
1674 } 1766 }
1675 }, 1767 },
1768 + "node_modules/make-dir": {
1769 + "version": "2.1.0",
1770 + "resolved": "https://mirrors.cloud.tencent.com/npm/make-dir/-/make-dir-2.1.0.tgz",
1771 + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
1772 + "dev": true,
1773 + "optional": true,
1774 + "dependencies": {
1775 + "pify": "^4.0.1",
1776 + "semver": "^5.6.0"
1777 + },
1778 + "engines": {
1779 + "node": ">=6"
1780 + }
1781 + },
1676 "node_modules/medium-editor": { 1782 "node_modules/medium-editor": {
1677 "version": "5.23.3", 1783 "version": "5.23.3",
1678 "resolved": "https://mirrors.cloud.tencent.com/npm/medium-editor/-/medium-editor-5.23.3.tgz", 1784 "resolved": "https://mirrors.cloud.tencent.com/npm/medium-editor/-/medium-editor-5.23.3.tgz",
...@@ -1717,6 +1823,19 @@ ...@@ -1717,6 +1823,19 @@
1717 "url": "https://github.com/sponsors/jonschlinkert" 1823 "url": "https://github.com/sponsors/jonschlinkert"
1718 } 1824 }
1719 }, 1825 },
1826 + "node_modules/mime": {
1827 + "version": "1.6.0",
1828 + "resolved": "https://mirrors.cloud.tencent.com/npm/mime/-/mime-1.6.0.tgz",
1829 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1830 + "dev": true,
1831 + "optional": true,
1832 + "bin": {
1833 + "mime": "cli.js"
1834 + },
1835 + "engines": {
1836 + "node": ">=4"
1837 + }
1838 + },
1720 "node_modules/mlly": { 1839 "node_modules/mlly": {
1721 "version": "1.7.4", 1840 "version": "1.7.4",
1722 "resolved": "https://mirrors.cloud.tencent.com/npm/mlly/-/mlly-1.7.4.tgz", 1841 "resolved": "https://mirrors.cloud.tencent.com/npm/mlly/-/mlly-1.7.4.tgz",
...@@ -1798,6 +1917,23 @@ ...@@ -1798,6 +1917,23 @@
1798 "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1917 "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1799 } 1918 }
1800 }, 1919 },
1920 + "node_modules/needle": {
1921 + "version": "3.3.1",
1922 + "resolved": "https://mirrors.cloud.tencent.com/npm/needle/-/needle-3.3.1.tgz",
1923 + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==",
1924 + "dev": true,
1925 + "optional": true,
1926 + "dependencies": {
1927 + "iconv-lite": "^0.6.3",
1928 + "sax": "^1.2.4"
1929 + },
1930 + "bin": {
1931 + "needle": "bin/needle"
1932 + },
1933 + "engines": {
1934 + "node": ">= 4.4.x"
1935 + }
1936 + },
1801 "node_modules/node-releases": { 1937 "node_modules/node-releases": {
1802 "version": "2.0.19", 1938 "version": "2.0.19",
1803 "resolved": "https://mirrors.cloud.tencent.com/npm/node-releases/-/node-releases-2.0.19.tgz", 1939 "resolved": "https://mirrors.cloud.tencent.com/npm/node-releases/-/node-releases-2.0.19.tgz",
...@@ -1816,6 +1952,15 @@ ...@@ -1816,6 +1952,15 @@
1816 "resolved": "https://mirrors.cloud.tencent.com/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", 1952 "resolved": "https://mirrors.cloud.tencent.com/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
1817 "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" 1953 "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
1818 }, 1954 },
1955 + "node_modules/parse-node-version": {
1956 + "version": "1.0.1",
1957 + "resolved": "https://mirrors.cloud.tencent.com/npm/parse-node-version/-/parse-node-version-1.0.1.tgz",
1958 + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
1959 + "dev": true,
1960 + "engines": {
1961 + "node": ">= 0.10"
1962 + }
1963 + },
1819 "node_modules/pathe": { 1964 "node_modules/pathe": {
1820 "version": "2.0.3", 1965 "version": "2.0.3",
1821 "resolved": "https://mirrors.cloud.tencent.com/npm/pathe/-/pathe-2.0.3.tgz", 1966 "resolved": "https://mirrors.cloud.tencent.com/npm/pathe/-/pathe-2.0.3.tgz",
...@@ -1840,6 +1985,16 @@ ...@@ -1840,6 +1985,16 @@
1840 "url": "https://github.com/sponsors/jonschlinkert" 1985 "url": "https://github.com/sponsors/jonschlinkert"
1841 } 1986 }
1842 }, 1987 },
1988 + "node_modules/pify": {
1989 + "version": "4.0.1",
1990 + "resolved": "https://mirrors.cloud.tencent.com/npm/pify/-/pify-4.0.1.tgz",
1991 + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
1992 + "dev": true,
1993 + "optional": true,
1994 + "engines": {
1995 + "node": ">=6"
1996 + }
1997 + },
1843 "node_modules/pkg-types": { 1998 "node_modules/pkg-types": {
1844 "version": "2.1.0", 1999 "version": "2.1.0",
1845 "resolved": "https://mirrors.cloud.tencent.com/npm/pkg-types/-/pkg-types-2.1.0.tgz", 2000 "resolved": "https://mirrors.cloud.tencent.com/npm/pkg-types/-/pkg-types-2.1.0.tgz",
...@@ -1892,6 +2047,13 @@ ...@@ -1892,6 +2047,13 @@
1892 "url": "https://opencollective.com/preact" 2047 "url": "https://opencollective.com/preact"
1893 } 2048 }
1894 }, 2049 },
2050 + "node_modules/prr": {
2051 + "version": "1.0.1",
2052 + "resolved": "https://mirrors.cloud.tencent.com/npm/prr/-/prr-1.0.1.tgz",
2053 + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
2054 + "dev": true,
2055 + "optional": true
2056 + },
1895 "node_modules/quansync": { 2057 "node_modules/quansync": {
1896 "version": "0.2.8", 2058 "version": "0.2.8",
1897 "resolved": "https://mirrors.cloud.tencent.com/npm/quansync/-/quansync-0.2.8.tgz", 2059 "resolved": "https://mirrors.cloud.tencent.com/npm/quansync/-/quansync-0.2.8.tgz",
...@@ -2014,6 +2176,13 @@ ...@@ -2014,6 +2176,13 @@
2014 "tslib": "^2.1.0" 2176 "tslib": "^2.1.0"
2015 } 2177 }
2016 }, 2178 },
2179 + "node_modules/safer-buffer": {
2180 + "version": "2.1.2",
2181 + "resolved": "https://mirrors.cloud.tencent.com/npm/safer-buffer/-/safer-buffer-2.1.2.tgz",
2182 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2183 + "dev": true,
2184 + "optional": true
2185 + },
2017 "node_modules/sass-embedded": { 2186 "node_modules/sass-embedded": {
2018 "version": "1.85.1", 2187 "version": "1.85.1",
2019 "resolved": "https://mirrors.cloud.tencent.com/npm/sass-embedded/-/sass-embedded-1.85.1.tgz", 2188 "resolved": "https://mirrors.cloud.tencent.com/npm/sass-embedded/-/sass-embedded-1.85.1.tgz",
...@@ -2378,12 +2547,39 @@ ...@@ -2378,12 +2547,39 @@
2378 "node": ">=14.0.0" 2547 "node": ">=14.0.0"
2379 } 2548 }
2380 }, 2549 },
2550 + "node_modules/sax": {
2551 + "version": "1.4.1",
2552 + "resolved": "https://mirrors.cloud.tencent.com/npm/sax/-/sax-1.4.1.tgz",
2553 + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==",
2554 + "dev": true,
2555 + "optional": true
2556 + },
2381 "node_modules/scule": { 2557 "node_modules/scule": {
2382 "version": "1.3.0", 2558 "version": "1.3.0",
2383 "resolved": "https://mirrors.cloud.tencent.com/npm/scule/-/scule-1.3.0.tgz", 2559 "resolved": "https://mirrors.cloud.tencent.com/npm/scule/-/scule-1.3.0.tgz",
2384 "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", 2560 "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==",
2385 "dev": true 2561 "dev": true
2386 }, 2562 },
2563 + "node_modules/semver": {
2564 + "version": "5.7.2",
2565 + "resolved": "https://mirrors.cloud.tencent.com/npm/semver/-/semver-5.7.2.tgz",
2566 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
2567 + "dev": true,
2568 + "optional": true,
2569 + "bin": {
2570 + "semver": "bin/semver"
2571 + }
2572 + },
2573 + "node_modules/source-map": {
2574 + "version": "0.6.1",
2575 + "resolved": "https://mirrors.cloud.tencent.com/npm/source-map/-/source-map-0.6.1.tgz",
2576 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2577 + "dev": true,
2578 + "optional": true,
2579 + "engines": {
2580 + "node": ">=0.10.0"
2581 + }
2582 + },
2387 "node_modules/source-map-js": { 2583 "node_modules/source-map-js": {
2388 "version": "1.2.1", 2584 "version": "1.2.1",
2389 "resolved": "https://mirrors.cloud.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz", 2585 "resolved": "https://mirrors.cloud.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz",
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
17 "autoprefixer": "^10.4.21", 17 "autoprefixer": "^10.4.21",
18 "echarts": "^5.6.0", 18 "echarts": "^5.6.0",
19 "element-plus": "^2.9.6", 19 "element-plus": "^2.9.6",
20 + "lodash-es": "^4.17.21",
20 "postcss": "^8.5.3", 21 "postcss": "^8.5.3",
21 "tailwindcss": "^4.0.12", 22 "tailwindcss": "^4.0.12",
22 "vue": "^3.5.13", 23 "vue": "^3.5.13",
...@@ -24,6 +25,7 @@ ...@@ -24,6 +25,7 @@
24 }, 25 },
25 "devDependencies": { 26 "devDependencies": {
26 "@vitejs/plugin-vue": "^5.2.1", 27 "@vitejs/plugin-vue": "^5.2.1",
28 + "less": "^4.2.2",
27 "sass-embedded": "^1.85.1", 29 "sass-embedded": "^1.85.1",
28 "unplugin-auto-import": "^19.1.1", 30 "unplugin-auto-import": "^19.1.1",
29 "vite": "^6.2.0", 31 "vite": "^6.2.0",
......
1 /* 1 /*
2 * @Date: 2025-03-10 13:07:05 2 * @Date: 2025-03-10 13:07:05
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-03-10 18:07:51 4 + * @LastEditTime: 2025-03-11 17:23:23
5 * @FilePath: /logic-flow2/src/main.js 5 * @FilePath: /logic-flow2/src/main.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
...@@ -10,6 +10,7 @@ import './style.css' ...@@ -10,6 +10,7 @@ import './style.css'
10 import App from './App.vue' 10 import App from './App.vue'
11 import router from './router' 11 import router from './router'
12 import "@logicflow/core/lib/style/index.css"; 12 import "@logicflow/core/lib/style/index.css";
13 +import '@logicflow/core/es/index.css'
13 import '@logicflow/extension/lib/style/index.css' 14 import '@logicflow/extension/lib/style/index.css'
14 import ElementPlus from 'element-plus' 15 import ElementPlus from 'element-plus'
15 import 'element-plus/dist/index.css' 16 import 'element-plus/dist/index.css'
...@@ -19,7 +20,7 @@ import { Menu, DndPanel, SelectionSelect, Control, InsertNodeInPolyline, Highlig ...@@ -19,7 +20,7 @@ import { Menu, DndPanel, SelectionSelect, Control, InsertNodeInPolyline, Highlig
19 LogicFlow.use(Menu) // 右键菜单 20 LogicFlow.use(Menu) // 右键菜单
20 LogicFlow.use(DndPanel) // 拖拽面板 21 LogicFlow.use(DndPanel) // 拖拽面板
21 LogicFlow.use(SelectionSelect) // 选中元素 22 LogicFlow.use(SelectionSelect) // 选中元素
22 -LogicFlow.use(Control) // 控制面板 23 +// LogicFlow.use(Control) // 控制面板
23 LogicFlow.use(InsertNodeInPolyline) // 边上插入节点 24 LogicFlow.use(InsertNodeInPolyline) // 边上插入节点
24 LogicFlow.use(Highlight) // 高亮 25 LogicFlow.use(Highlight) // 高亮
25 26
......
1 /* 1 /*
2 * @Date: 2025-03-10 13:15:30 2 * @Date: 2025-03-10 13:15:30
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-03-10 17:13:56 4 + * @LastEditTime: 2025-03-11 17:45:38
5 * @FilePath: /logic-flow2/src/router/index.js 5 * @FilePath: /logic-flow2/src/router/index.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
...@@ -30,6 +30,21 @@ const router = createRouter({ ...@@ -30,6 +30,21 @@ const router = createRouter({
30 name: 'control', 30 name: 'control',
31 component: () => import('../views/control.vue') 31 component: () => import('../views/control.vue')
32 }, 32 },
33 + {
34 + path: '/node-model',
35 + name: 'node-model',
36 + component: () => import('../views/node-model/index.vue')
37 + },
38 + {
39 + path: '/node-view',
40 + name: 'node-view',
41 + component: () => import('../views/node-view/index.vue')
42 + },
43 + {
44 + path: '/node-vue',
45 + name: 'node-vue',
46 + component: () => import('../views/node-vue/index.vue')
47 + }
33 ] 48 ]
34 }) 49 })
35 50
......
1 <!-- 1 <!--
2 * @Date: 2025-03-10 14:37:31 2 * @Date: 2025-03-10 14:37:31
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-03-10 17:14:06 4 + * @LastEditTime: 2025-03-11 17:46:33
5 * @FilePath: /logic-flow2/src/views/home.vue 5 * @FilePath: /logic-flow2/src/views/home.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
10 <el-button type="primary" @click="goTo('menu')">Menu</el-button> 10 <el-button type="primary" @click="goTo('menu')">Menu</el-button>
11 <el-button type="primary" @click="goTo('DndPanel')">DndPanel</el-button> 11 <el-button type="primary" @click="goTo('DndPanel')">DndPanel</el-button>
12 <el-button type="primary" @click="goTo('control')">control</el-button> 12 <el-button type="primary" @click="goTo('control')">control</el-button>
13 + <el-button type="primary" @click="goTo('node-model')">node-model</el-button>
14 + <el-button type="primary" @click="goTo('node-view')">node-view</el-button>
15 + <el-button type="primary" @click="goTo('node-vue')">node-vue</el-button>
13 </template> 16 </template>
14 17
15 <script setup> 18 <script setup>
......
1 +/*
2 + * @Date: 2025-03-11 15:09:41
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2025-03-11 15:36:53
5 + * @FilePath: /logic-flow2/src/views/node/customRect.js
6 + * @Description: 文件描述
7 + */
8 +import { RectNode, RectNodeModel } from '@logicflow/core';
9 +
10 +class CustomRectModel extends RectNodeModel {
11 + getNodeStyle() {
12 + const style = super.getNodeStyle();
13 +
14 + const properties = this.properties;
15 + if (properties.status === 'pass') {
16 + // 业务属性status为‘pass’时 展示边框颜色为green
17 + style.stroke = 'green';
18 + } else if (properties.status === 'reject') {
19 + // 业务属性status为‘reject’时 展示边框颜色为red
20 + style.stroke = 'red';
21 + } else {
22 + style.stroke = 'rgb(24, 125, 255)';
23 + }
24 + return style;
25 + }
26 +}
27 +
28 +class CustomRectNode extends RectNode {}
29 +
30 +export default {
31 + type: 'custom-rect',
32 + view: CustomRectNode,
33 + model: CustomRectModel,
34 +};
1 +/*
2 + * @Date: 2025-03-11 15:09:49
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2025-03-11 15:45:06
5 + * @FilePath: /logic-flow2/src/views/node/data.js
6 + * @Description: 文件描述
7 + */
8 +export default {
9 + nodes: [
10 + {
11 + id: '1',
12 + type: 'custom-rect',
13 + x: 100,
14 + y: 100,
15 + text: 'default',
16 + properties: {
17 + width: 70,
18 + height: 70,
19 + },
20 + },
21 + {
22 + id: '2',
23 + type: 'custom-rect',
24 + x: 300,
25 + y: 100,
26 + text: 'pass',
27 + properties: {
28 + status: 'pass', // 业务属性
29 + width: 100, // 形状属性
30 + height: 100,
31 + radius: 20,
32 + style: {
33 + // 样式属性
34 + strokeWidth: 5,
35 + },
36 + },
37 + },
38 + {
39 + id: '3',
40 + type: 'custom-rect',
41 + x: 500,
42 + y: 100,
43 + text: 'reject',
44 + properties: {
45 + status: 'reject',
46 + width: 130,
47 + height: 130,
48 + },
49 + },
50 + ],
51 +};
1 +<!--
2 + * @Date: 2025-03-11 15:07:29
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2025-03-11 16:18:37
5 + * @FilePath: /logic-flow2/src/views/node/index.vue
6 + * @Description: 自定义节点model
7 +-->
8 +<template>
9 + <div class="container">
10 + <div ref="container" class="flow-container"></div>
11 + </div>
12 +</template>
13 +
14 +<script setup>
15 +import LogicFlow from '@logicflow/core';
16 +import UserTask from './customRect';
17 +import data from './data';
18 +
19 +const SilentConfig = {
20 + isSilentMode: true,
21 + stopScrollGraph: true,
22 + stopMoveGraph: true,
23 + stopZoomGraph: true,
24 + adjustNodePosition: true,
25 +};
26 +
27 +const container = ref(null);
28 +let lf = null;
29 +
30 +onMounted(() => {
31 + lf = new LogicFlow({
32 + container: container.value,
33 + grid: true,
34 + ...SilentConfig,
35 + });
36 +
37 + lf.register(UserTask);
38 + lf.render(data);
39 + lf.translateCenter();
40 +});
41 +</script>
42 +
43 +<style scoped>
44 +.container {
45 + width: 100vw;
46 + height: 100vh;
47 + display: flex;
48 + flex-direction: column;
49 +}
50 +
51 +.flow-container {
52 + flex: 1;
53 + width: 100%;
54 + height: 100%;
55 +}
56 +</style>
1 +/*
2 + * @Date: 2025-03-11 15:09:49
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2025-03-11 16:23:53
5 + * @FilePath: /logic-flow2/src/views/node-view/data.js
6 + * @Description: 文件描述
7 + */
8 +const data = {
9 + nodes: [
10 + {
11 + id: 'node_id_1',
12 + type: 'UserTask',
13 + x: 100,
14 + y: 100,
15 + text: { x: 100, y: 100, value: '节点1' },
16 + properties: {
17 + width: 100,
18 + height: 100,
19 + scale: 1, // 自定义放大倍数
20 + isClicked: false, // 自定义是否被点击
21 + },
22 + },
23 + {
24 + id: 'node_id_2',
25 + type: 'circle',
26 + x: 200,
27 + y: 300,
28 + text: { x: 200, y: 300, value: '节点2' },
29 + },
30 + ],
31 + edges: [
32 + {
33 + id: 'edge_id',
34 + type: 'polyline',
35 + sourceNodeId: 'node_id_1',
36 + targetNodeId: 'node_id_2',
37 + text: { x: 139, y: 200, value: '连线' },
38 + startPoint: { x: 100, y: 140 },
39 + endPoint: { x: 200, y: 250 },
40 + pointsList: [
41 + { x: 100, y: 140 },
42 + { x: 100, y: 200 },
43 + { x: 200, y: 200 },
44 + { x: 200, y: 250 },
45 + ],
46 + },
47 + ],
48 +};
49 +export default data;
1 +.helloworld-app {
2 + width: 100%;
3 +
4 + .app-content {
5 + height: 380px;
6 + }
7 +}
8 +
9 +.viewport {
10 + position: relative;
11 + height: 80vh;
12 + overflow: hidden;
13 +}
1 +<!--
2 + * @Date: 2025-03-11 15:07:29
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2025-03-11 16:21:43
5 + * @FilePath: /logic-flow2/src/views/node-view/index.vue
6 + * @Description: 自定义节点model
7 +-->
8 +<template>
9 + <div class="container">
10 + <div ref="container" class="flow-container"></div>
11 + </div>
12 +</template>
13 +
14 +<script setup>
15 +import LogicFlow from '@logicflow/core';
16 +import UserTask from './userTask';
17 +import data from './data';
18 +import './index.less';
19 +
20 +const SilentConfig = {
21 + stopScrollGraph: true,
22 + stopMoveGraph: true,
23 + stopZoomGraph: true,
24 +};
25 +
26 +const container = ref(null);
27 +let lf = null;
28 +
29 +onMounted(() => {
30 + lf = new LogicFlow({
31 + container: container.value,
32 + grid: true,
33 + ...SilentConfig,
34 + });
35 +
36 + lf.register(UserTask);
37 + lf.render(data);
38 + lf.translateCenter();
39 +
40 + // node 点击事件
41 + lf.on('node:click', ({ data }) => {
42 + lf.setProperties(data.id, {
43 + // 改变业务属性
44 + isClicked: !data.properties.isClicked,
45 + scale: 0.8, // 缩小
46 + });
47 + });
48 +});
49 +</script>
50 +
51 +<style scoped>
52 +.container {
53 + width: 100vw;
54 + height: 100vh;
55 + display: flex;
56 + flex-direction: column;
57 +}
58 +
59 +.flow-container {
60 + flex: 1;
61 + width: 100%;
62 + height: 100%;
63 +}
64 +</style>
1 +/*
2 + * @Date: 2025-03-11 16:21:23
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2025-03-11 16:42:03
5 + * @FilePath: /logic-flow2/src/views/node-view/userTask.js
6 + * @Description: 文件描述
7 + */
8 +import { RectNode, RectNodeModel, h } from '@logicflow/core';
9 +
10 +class UserTaskView extends RectNode {
11 + // 自定义一个用户图案
12 + getLabelShape() {
13 + const { model } = this.props;
14 + const { x, y, width, height } = model;
15 + const style = model.getNodeStyle();
16 + return h(
17 + 'svg',
18 + {
19 + x: x - width / 2 + 5,
20 + y: y - height / 2 + 5,
21 + width: 25,
22 + height: 25,
23 + viewBox: '0 0 1274 1024',
24 + },
25 + [
26 + h('path', {
27 + fill: style.stroke,
28 + d: 'M690.366075 350.568358c0-98.876614-79.937349-179.048571-178.558027-179.048571-98.59935 0-178.515371 80.150629-178.515371 179.048571 0 98.833958 79.916021 178.963259 178.515371 178.963259C610.428726 529.531617 690.366075 449.380988 690.366075 350.568358M376.140632 350.568358c0-75.159877 60.72082-136.072649 135.667416-136.072649 74.989253 0 135.667416 60.912772 135.667416 136.072649 0 75.117221-60.678164 136.029993-135.667416 136.029993C436.861451 486.577022 376.140632 425.664251 376.140632 350.568358M197.284012 762.923936 197.284012 778.472049l15.526785 0 291.255186 0.127968L819.784387 778.472049l15.569441 0 0-15.548113c0-139.783721-136.413897-285.581938-311.026243-273.275681-10.002833 0.703824-24.740482 9.128385-34.658002 9.938849-8.573857 0.74648 13.692577 8.232609 14.396401 16.827793 9.021745-0.789136 6.313088 13.095393 15.505457 13.095393 150.597017 0 263.14488 103.07823 263.14488 224.62651l15.441473-15.590769-285.816546-0.042656-278.991585 1.81288 15.526785 15.612097c0-82.752645 75.095893-152.70849 136.861785-191.824044 7.25152-4.58552 8.659169-17.659585 4.862784-22.906273-6.846288-9.426977-19.877697-8.701825-28.046322-6.014496C285.262018 560.521203 197.284012 667.758394 197.284012 762.923936',
29 + }),
30 + h('path', {
31 + fill: style.stroke,
32 + d: 'M512.31992 1.535616c-282.766642 0-512.021328 228.89211-512.021328 511.210864 0 282.46805 229.254686 511.25352 512.021328 511.25352 117.431975 0 228.828126-39.606098 318.810964-111.204199 10.791969-8.488545 12.540865-24.22861 3.988336-34.99925-8.616513-10.770641-24.356578-12.540865-35.127218-3.94568-81.174373 64.538532-181.586603 100.241606-287.650754 100.241606-255.210864 0-462.028493-206.561693-462.028493-461.367325 0-254.762976 206.817629-461.303341 462.028493-461.303341 255.210864 0 462.092477 206.561693 462.092477 461.303341 0 87.380821-24.33525 171.093227-69.614596 243.651087-7.272848 11.645089-3.668416 27.086562 8.040657 34.35941 11.709073 7.272848 27.10789 3.62576 34.402066-7.976672 50.184787-80.406565 77.143381-173.247355 77.143381-270.055153C1024.383904 230.427726 795.10789 1.535616 512.31992 1.535616z',
33 + }),
34 + ],
35 + );
36 + }
37 +
38 + // 自定义节点外观
39 + getShape() {
40 + const { model } = this.props;
41 + const { x, y, width, height, radius } = model;
42 + const style = model.getNodeStyle();
43 + return h('g', {}, [
44 + h('rect', {
45 + ...style,
46 + x: x - width / 2, // 矩形默认x,y代表左上角顶点坐标,切换为中心点
47 + y: y - height / 2,
48 + rx: radius,
49 + ry: radius,
50 + width,
51 + height,
52 + }),
53 + this.getLabelShape(),
54 + ])
55 + }
56 +}
57 +
58 +class UserTaskModel extends RectNodeModel {
59 + // 设置 model 形状属性,每次 properties 发生变化会触发, 初始化 properties 也会执行
60 + setAttributes() {
61 + const { scale = 1, width = 100, height = 80 } = this.properties;
62 + // 需要手动设置形状属性
63 + this.width = width * scale;
64 + this.height = height * scale;
65 + }
66 +
67 + // 自定义文本样式:依赖业务属性 isClicked 改变文本颜色
68 + getTextStyle() {
69 + const style = super.getTextStyle();
70 + style.fontSize = 12;
71 + const { isClicked } = this.properties;
72 + style.color = isClicked ? 'red' : 'rgb(24, 125, 255)';
73 + return style;
74 + }
75 +
76 + // 自定义节点样式:依赖业务属性 isClicked 改变边框颜色
77 + getNodeStyle() {
78 + const style = super.getNodeStyle();
79 + const { isClicked } = this.properties;
80 + if (isClicked) {
81 + style.stroke = 'red';
82 + } else {
83 + style.stroke = 'rgb(24, 125, 255)';
84 + }
85 + return style;
86 + }
87 +
88 + // 自定义锚点样式属性:锚点(节点连线的点)
89 + getAnchorStyle() {
90 + const style = super.getAnchorStyle();
91 + const newStyle = Object.assign({}, style, {
92 + stroke: 'rgb(24, 125, 255)',
93 + r: 3,
94 + hover: {
95 + r: 8,
96 + fill: 'rgb(24, 125, 255)',
97 + stroke: 'rgb(24, 125, 255)',
98 + },
99 + });
100 + return newStyle;
101 + }
102 +
103 + // 自定义节点锚点拖出连接线的样式属性
104 + getAnchorLineStyle() {
105 + const style = super.getAnchorLineStyle();
106 + style.stroke = 'rgb(24, 125, 255)';
107 + return style;
108 + }
109 +
110 + // 自定义节点轮廓框的样式属性
111 + getOutlineStyle() {
112 + const style = super.getOutlineStyle();
113 + const newStyle = Object.assign({}, style, {
114 + stroke: 'red',
115 + hover: {
116 + stroke: 'red',
117 + },
118 + });
119 + return newStyle;
120 + }
121 +}
122 +
123 +export default {
124 + type: 'UserTask',
125 + view: UserTaskView,
126 + model: UserTaskModel,
127 +};
1 <!-- 1 <!--
2 * @Date: 2025-03-10 16:52:35 2 * @Date: 2025-03-10 16:52:35
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-03-10 16:58:14 4 + * @LastEditTime: 2025-03-11 15:40:10
5 * @FilePath: /logic-flow2/src/views/temp.vue 5 * @FilePath: /logic-flow2/src/views/temp.vue
6 * @Description: 拖拽面板 6 * @Description: 拖拽面板
7 --> 7 -->
......
...@@ -366,6 +366,13 @@ confbox@^0.2.1: ...@@ -366,6 +366,13 @@ confbox@^0.2.1:
366 resolved "https://mirrors.cloud.tencent.com/npm/confbox/-/confbox-0.2.1.tgz" 366 resolved "https://mirrors.cloud.tencent.com/npm/confbox/-/confbox-0.2.1.tgz"
367 integrity sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg== 367 integrity sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==
368 368
369 +copy-anything@^2.0.1:
370 + version "2.0.6"
371 + resolved "https://mirrors.cloud.tencent.com/npm/copy-anything/-/copy-anything-2.0.6.tgz"
372 + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
373 + dependencies:
374 + is-what "^3.14.1"
375 +
369 csstype@^3.1.3: 376 csstype@^3.1.3:
370 version "3.1.3" 377 version "3.1.3"
371 resolved "https://mirrors.cloud.tencent.com/npm/csstype/-/csstype-3.1.3.tgz" 378 resolved "https://mirrors.cloud.tencent.com/npm/csstype/-/csstype-3.1.3.tgz"
...@@ -415,6 +422,13 @@ entities@^4.5.0: ...@@ -415,6 +422,13 @@ entities@^4.5.0:
415 resolved "https://mirrors.cloud.tencent.com/npm/entities/-/entities-4.5.0.tgz" 422 resolved "https://mirrors.cloud.tencent.com/npm/entities/-/entities-4.5.0.tgz"
416 integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 423 integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
417 424
425 +errno@^0.1.1:
426 + version "0.1.8"
427 + resolved "https://mirrors.cloud.tencent.com/npm/errno/-/errno-0.1.8.tgz"
428 + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
429 + dependencies:
430 + prr "~1.0.1"
431 +
418 es-module-lexer@^1.5.4: 432 es-module-lexer@^1.5.4:
419 version "1.6.0" 433 version "1.6.0"
420 resolved "https://mirrors.cloud.tencent.com/npm/es-module-lexer/-/es-module-lexer-1.6.0.tgz" 434 resolved "https://mirrors.cloud.tencent.com/npm/es-module-lexer/-/es-module-lexer-1.6.0.tgz"
...@@ -530,6 +544,11 @@ glob-parent@^5.1.2: ...@@ -530,6 +544,11 @@ glob-parent@^5.1.2:
530 dependencies: 544 dependencies:
531 is-glob "^4.0.1" 545 is-glob "^4.0.1"
532 546
547 +graceful-fs@^4.1.2:
548 + version "4.2.11"
549 + resolved "https://mirrors.cloud.tencent.com/npm/graceful-fs/-/graceful-fs-4.2.11.tgz"
550 + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
551 +
533 has-flag@^4.0.0: 552 has-flag@^4.0.0:
534 version "4.0.0" 553 version "4.0.0"
535 resolved "https://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-4.0.0.tgz" 554 resolved "https://mirrors.cloud.tencent.com/npm/has-flag/-/has-flag-4.0.0.tgz"
...@@ -540,6 +559,18 @@ hoist-non-react-statics@^2.3.1: ...@@ -540,6 +559,18 @@ hoist-non-react-statics@^2.3.1:
540 resolved "https://mirrors.cloud.tencent.com/npm/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz" 559 resolved "https://mirrors.cloud.tencent.com/npm/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz"
541 integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== 560 integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
542 561
562 +iconv-lite@^0.6.3:
563 + version "0.6.3"
564 + resolved "https://mirrors.cloud.tencent.com/npm/iconv-lite/-/iconv-lite-0.6.3.tgz"
565 + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
566 + dependencies:
567 + safer-buffer ">= 2.1.2 < 3.0.0"
568 +
569 +image-size@~0.5.0:
570 + version "0.5.5"
571 + resolved "https://mirrors.cloud.tencent.com/npm/image-size/-/image-size-0.5.5.tgz"
572 + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
573 +
543 immutable@^5.0.2: 574 immutable@^5.0.2:
544 version "5.0.3" 575 version "5.0.3"
545 resolved "https://mirrors.cloud.tencent.com/npm/immutable/-/immutable-5.0.3.tgz" 576 resolved "https://mirrors.cloud.tencent.com/npm/immutable/-/immutable-5.0.3.tgz"
...@@ -562,11 +593,33 @@ is-number@^7.0.0: ...@@ -562,11 +593,33 @@ is-number@^7.0.0:
562 resolved "https://mirrors.cloud.tencent.com/npm/is-number/-/is-number-7.0.0.tgz" 593 resolved "https://mirrors.cloud.tencent.com/npm/is-number/-/is-number-7.0.0.tgz"
563 integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 594 integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
564 595
596 +is-what@^3.14.1:
597 + version "3.14.1"
598 + resolved "https://mirrors.cloud.tencent.com/npm/is-what/-/is-what-3.14.1.tgz"
599 + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
600 +
565 js-tokens@^9.0.1: 601 js-tokens@^9.0.1:
566 version "9.0.1" 602 version "9.0.1"
567 resolved "https://mirrors.cloud.tencent.com/npm/js-tokens/-/js-tokens-9.0.1.tgz" 603 resolved "https://mirrors.cloud.tencent.com/npm/js-tokens/-/js-tokens-9.0.1.tgz"
568 integrity sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ== 604 integrity sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==
569 605
606 +less@*, less@^4.2.2:
607 + version "4.2.2"
608 + resolved "https://mirrors.cloud.tencent.com/npm/less/-/less-4.2.2.tgz"
609 + integrity sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==
610 + dependencies:
611 + copy-anything "^2.0.1"
612 + parse-node-version "^1.0.1"
613 + tslib "^2.3.0"
614 + optionalDependencies:
615 + errno "^0.1.1"
616 + graceful-fs "^4.1.2"
617 + image-size "~0.5.0"
618 + make-dir "^2.1.0"
619 + mime "^1.4.1"
620 + needle "^3.1.0"
621 + source-map "~0.6.0"
622 +
570 local-pkg@^1.0.0: 623 local-pkg@^1.0.0:
571 version "1.1.1" 624 version "1.1.1"
572 resolved "https://mirrors.cloud.tencent.com/npm/local-pkg/-/local-pkg-1.1.1.tgz" 625 resolved "https://mirrors.cloud.tencent.com/npm/local-pkg/-/local-pkg-1.1.1.tgz"
...@@ -598,6 +651,14 @@ magic-string@^0.30.11, magic-string@^0.30.17: ...@@ -598,6 +651,14 @@ magic-string@^0.30.11, magic-string@^0.30.17:
598 dependencies: 651 dependencies:
599 "@jridgewell/sourcemap-codec" "^1.5.0" 652 "@jridgewell/sourcemap-codec" "^1.5.0"
600 653
654 +make-dir@^2.1.0:
655 + version "2.1.0"
656 + resolved "https://mirrors.cloud.tencent.com/npm/make-dir/-/make-dir-2.1.0.tgz"
657 + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
658 + dependencies:
659 + pify "^4.0.1"
660 + semver "^5.6.0"
661 +
601 medium-editor@^5.23.3: 662 medium-editor@^5.23.3:
602 version "5.23.3" 663 version "5.23.3"
603 resolved "https://mirrors.cloud.tencent.com/npm/medium-editor/-/medium-editor-5.23.3.tgz" 664 resolved "https://mirrors.cloud.tencent.com/npm/medium-editor/-/medium-editor-5.23.3.tgz"
...@@ -621,6 +682,11 @@ micromatch@^4.0.8: ...@@ -621,6 +682,11 @@ micromatch@^4.0.8:
621 braces "^3.0.3" 682 braces "^3.0.3"
622 picomatch "^2.3.1" 683 picomatch "^2.3.1"
623 684
685 +mime@^1.4.1:
686 + version "1.6.0"
687 + resolved "https://mirrors.cloud.tencent.com/npm/mime/-/mime-1.6.0.tgz"
688 + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
689 +
624 mlly@^1.7.4: 690 mlly@^1.7.4:
625 version "1.7.4" 691 version "1.7.4"
626 resolved "https://mirrors.cloud.tencent.com/npm/mlly/-/mlly-1.7.4.tgz" 692 resolved "https://mirrors.cloud.tencent.com/npm/mlly/-/mlly-1.7.4.tgz"
...@@ -658,6 +724,14 @@ nanoid@^3.3.8: ...@@ -658,6 +724,14 @@ nanoid@^3.3.8:
658 resolved "https://mirrors.cloud.tencent.com/npm/nanoid/-/nanoid-3.3.9.tgz" 724 resolved "https://mirrors.cloud.tencent.com/npm/nanoid/-/nanoid-3.3.9.tgz"
659 integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg== 725 integrity sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==
660 726
727 +needle@^3.1.0:
728 + version "3.3.1"
729 + resolved "https://mirrors.cloud.tencent.com/npm/needle/-/needle-3.3.1.tgz"
730 + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==
731 + dependencies:
732 + iconv-lite "^0.6.3"
733 + sax "^1.2.4"
734 +
661 node-releases@^2.0.19: 735 node-releases@^2.0.19:
662 version "2.0.19" 736 version "2.0.19"
663 resolved "https://mirrors.cloud.tencent.com/npm/node-releases/-/node-releases-2.0.19.tgz" 737 resolved "https://mirrors.cloud.tencent.com/npm/node-releases/-/node-releases-2.0.19.tgz"
...@@ -673,6 +747,11 @@ normalize-wheel-es@^1.2.0: ...@@ -673,6 +747,11 @@ normalize-wheel-es@^1.2.0:
673 resolved "https://mirrors.cloud.tencent.com/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz" 747 resolved "https://mirrors.cloud.tencent.com/npm/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz"
674 integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw== 748 integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
675 749
750 +parse-node-version@^1.0.1:
751 + version "1.0.1"
752 + resolved "https://mirrors.cloud.tencent.com/npm/parse-node-version/-/parse-node-version-1.0.1.tgz"
753 + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
754 +
676 pathe@^2.0.1, pathe@^2.0.2, pathe@^2.0.3: 755 pathe@^2.0.1, pathe@^2.0.2, pathe@^2.0.3:
677 version "2.0.3" 756 version "2.0.3"
678 resolved "https://mirrors.cloud.tencent.com/npm/pathe/-/pathe-2.0.3.tgz" 757 resolved "https://mirrors.cloud.tencent.com/npm/pathe/-/pathe-2.0.3.tgz"
...@@ -693,6 +772,11 @@ picomatch@^2.3.1: ...@@ -693,6 +772,11 @@ picomatch@^2.3.1:
693 resolved "https://mirrors.cloud.tencent.com/npm/picomatch/-/picomatch-4.0.2.tgz" 772 resolved "https://mirrors.cloud.tencent.com/npm/picomatch/-/picomatch-4.0.2.tgz"
694 integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== 773 integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
695 774
775 +pify@^4.0.1:
776 + version "4.0.1"
777 + resolved "https://mirrors.cloud.tencent.com/npm/pify/-/pify-4.0.1.tgz"
778 + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
779 +
696 pkg-types@^1.3.0: 780 pkg-types@^1.3.0:
697 version "1.3.1" 781 version "1.3.1"
698 resolved "https://mirrors.cloud.tencent.com/npm/pkg-types/-/pkg-types-1.3.1.tgz" 782 resolved "https://mirrors.cloud.tencent.com/npm/pkg-types/-/pkg-types-1.3.1.tgz"
...@@ -739,6 +823,11 @@ preact@^10.17.1, preact@>=8: ...@@ -739,6 +823,11 @@ preact@^10.17.1, preact@>=8:
739 resolved "https://mirrors.cloud.tencent.com/npm/preact/-/preact-10.26.4.tgz" 823 resolved "https://mirrors.cloud.tencent.com/npm/preact/-/preact-10.26.4.tgz"
740 integrity sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w== 824 integrity sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==
741 825
826 +prr@~1.0.1:
827 + version "1.0.1"
828 + resolved "https://mirrors.cloud.tencent.com/npm/prr/-/prr-1.0.1.tgz"
829 + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
830 +
742 quansync@^0.2.8: 831 quansync@^0.2.8:
743 version "0.2.8" 832 version "0.2.8"
744 resolved "https://mirrors.cloud.tencent.com/npm/quansync/-/quansync-0.2.8.tgz" 833 resolved "https://mirrors.cloud.tencent.com/npm/quansync/-/quansync-0.2.8.tgz"
...@@ -801,6 +890,11 @@ rxjs@^7.4.0: ...@@ -801,6 +890,11 @@ rxjs@^7.4.0:
801 dependencies: 890 dependencies:
802 tslib "^2.1.0" 891 tslib "^2.1.0"
803 892
893 +"safer-buffer@>= 2.1.2 < 3.0.0":
894 + version "2.1.2"
895 + resolved "https://mirrors.cloud.tencent.com/npm/safer-buffer/-/safer-buffer-2.1.2.tgz"
896 + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
897 +
804 sass-embedded-darwin-arm64@1.85.1: 898 sass-embedded-darwin-arm64@1.85.1:
805 version "1.85.1" 899 version "1.85.1"
806 resolved "https://mirrors.cloud.tencent.com/npm/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.1.tgz" 900 resolved "https://mirrors.cloud.tencent.com/npm/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.1.tgz"
...@@ -841,16 +935,31 @@ sass-embedded@*, sass-embedded@^1.85.1: ...@@ -841,16 +935,31 @@ sass-embedded@*, sass-embedded@^1.85.1:
841 sass-embedded-win32-ia32 "1.85.1" 935 sass-embedded-win32-ia32 "1.85.1"
842 sass-embedded-win32-x64 "1.85.1" 936 sass-embedded-win32-x64 "1.85.1"
843 937
938 +sax@^1.2.4:
939 + version "1.4.1"
940 + resolved "https://mirrors.cloud.tencent.com/npm/sax/-/sax-1.4.1.tgz"
941 + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
942 +
844 scule@^1.3.0: 943 scule@^1.3.0:
845 version "1.3.0" 944 version "1.3.0"
846 resolved "https://mirrors.cloud.tencent.com/npm/scule/-/scule-1.3.0.tgz" 945 resolved "https://mirrors.cloud.tencent.com/npm/scule/-/scule-1.3.0.tgz"
847 integrity sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g== 946 integrity sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==
848 947
948 +semver@^5.6.0:
949 + version "5.7.2"
950 + resolved "https://mirrors.cloud.tencent.com/npm/semver/-/semver-5.7.2.tgz"
951 + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
952 +
849 source-map-js@^1.2.0, source-map-js@^1.2.1: 953 source-map-js@^1.2.0, source-map-js@^1.2.1:
850 version "1.2.1" 954 version "1.2.1"
851 resolved "https://mirrors.cloud.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz" 955 resolved "https://mirrors.cloud.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz"
852 integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== 956 integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
853 957
958 +source-map@~0.6.0:
959 + version "0.6.1"
960 + resolved "https://mirrors.cloud.tencent.com/npm/source-map/-/source-map-0.6.1.tgz"
961 + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
962 +
854 strip-literal@^3.0.0: 963 strip-literal@^3.0.0:
855 version "3.0.0" 964 version "3.0.0"
856 resolved "https://mirrors.cloud.tencent.com/npm/strip-literal/-/strip-literal-3.0.0.tgz" 965 resolved "https://mirrors.cloud.tencent.com/npm/strip-literal/-/strip-literal-3.0.0.tgz"
...@@ -897,7 +1006,7 @@ to-regex-range@^5.0.1: ...@@ -897,7 +1006,7 @@ to-regex-range@^5.0.1:
897 dependencies: 1006 dependencies:
898 is-number "^7.0.0" 1007 is-number "^7.0.0"
899 1008
900 -tslib@^2.1.0, tslib@2.3.0: 1009 +tslib@^2.1.0, tslib@^2.3.0, tslib@2.3.0:
901 version "2.3.0" 1010 version "2.3.0"
902 resolved "https://mirrors.cloud.tencent.com/npm/tslib/-/tslib-2.3.0.tgz" 1011 resolved "https://mirrors.cloud.tencent.com/npm/tslib/-/tslib-2.3.0.tgz"
903 integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== 1012 integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
......