my blog https://overreacted.io
53
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add watcher (#797)

authored by

dan and committed by
GitHub
3b02986f 8f651ccf

+454 -110
+28
app/AutoRefresh.js
··· 1 + "use client"; 2 + 3 + import { useEffect } from "react"; 4 + import { useRouter } from "next/navigation"; 5 + 6 + function AutoRefresh({ children }) { 7 + return children; 8 + } 9 + 10 + if (process.env.NODE_ENV === "development") { 11 + AutoRefresh = function AutoRefresh({ children }) { 12 + const router = useRouter(); 13 + useEffect(() => { 14 + const ws = new WebSocket("ws://localhost:3001"); 15 + ws.onmessage = (event) => { 16 + if (event.data === "refresh") { 17 + router.refresh(); 18 + } 19 + }; 20 + return () => { 21 + ws.close(); 22 + }; 23 + }, [router]); 24 + return children; 25 + }; 26 + } 27 + 28 + export default AutoRefresh;
+21 -18
app/layout.js
··· 1 1 import Link from "./Link"; 2 2 import HomeLink from "./HomeLink"; 3 + import AutoRefresh from "./AutoRefresh"; 3 4 import { serif } from "./fonts"; 4 5 import "./global.css"; 5 6 6 7 export default function RootLayout({ children }) { 7 8 return ( 8 - <html lang="en" className={serif.className}> 9 - <body className="mx-auto max-w-2xl bg-[--bg] px-5 py-12 text-[--text]"> 10 - <header className="mb-14 flex flex-row place-content-between"> 11 - <HomeLink /> 12 - <span className="relative top-[4px] italic"> 13 - by{" "} 14 - <Link href="https://danabra.mov" target="_blank"> 15 - <img 16 - alt="Dan Abramov" 17 - src="https://pbs.twimg.com/profile_images/1545194945161707520/rqkwPViA_400x400.jpg" 18 - className="relative -top-1 mx-1 inline h-8 w-8 rounded-full" 19 - /> 20 - </Link> 21 - </span> 22 - </header> 23 - <main>{children}</main> 24 - </body> 25 - </html> 9 + <AutoRefresh> 10 + <html lang="en" className={serif.className}> 11 + <body className="mx-auto max-w-2xl bg-[--bg] px-5 py-12 text-[--text]"> 12 + <header className="mb-14 flex flex-row place-content-between"> 13 + <HomeLink /> 14 + <span className="relative top-[4px] italic"> 15 + by{" "} 16 + <Link href="https://danabra.mov" target="_blank"> 17 + <img 18 + alt="Dan Abramov" 19 + src="https://pbs.twimg.com/profile_images/1545194945161707520/rqkwPViA_400x400.jpg" 20 + className="relative -top-1 mx-1 inline h-8 w-8 rounded-full" 21 + /> 22 + </Link> 23 + </span> 24 + </header> 25 + <main>{children}</main> 26 + </body> 27 + </html> 28 + </AutoRefresh> 26 29 ); 27 30 }
+371 -88
package-lock.json
··· 8 8 "name": "overreacted", 9 9 "version": "0.1.0", 10 10 "dependencies": { 11 + "chokidar": "^3.5.3", 11 12 "colorjs.io": "^0.4.5", 12 13 "gray-matter": "^4.0.3", 13 14 "next": "^14.0.1-canary.2", 14 15 "next-mdx-remote": "^4.4.1", 16 + "npm-run-all": "^4.1.5", 15 17 "overnight": "^1.8.0", 16 18 "react": "^18", 17 19 "react-dom": "^18", 18 20 "rehype-pretty-code": "^0.10.2", 19 - "shiki": "^0.14.5" 21 + "shiki": "^0.14.5", 22 + "ws": "^8.14.2" 20 23 }, 21 24 "devDependencies": { 22 25 "autoprefixer": "^10.4.16", ··· 1181 1184 "version": "3.1.3", 1182 1185 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1183 1186 "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1184 - "dev": true, 1185 1187 "dependencies": { 1186 1188 "normalize-path": "^3.0.0", 1187 1189 "picomatch": "^2.0.4" ··· 1214 1216 "version": "1.0.0", 1215 1217 "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", 1216 1218 "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", 1217 - "dev": true, 1218 1219 "dependencies": { 1219 1220 "call-bind": "^1.0.2", 1220 1221 "is-array-buffer": "^3.0.1" ··· 1323 1324 "version": "1.0.2", 1324 1325 "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", 1325 1326 "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", 1326 - "dev": true, 1327 1327 "dependencies": { 1328 1328 "array-buffer-byte-length": "^1.0.0", 1329 1329 "call-bind": "^1.0.2", ··· 1404 1404 "version": "1.0.5", 1405 1405 "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 1406 1406 "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", 1407 - "dev": true, 1408 1407 "engines": { 1409 1408 "node": ">= 0.4" 1410 1409 }, ··· 1442 1441 "node_modules/balanced-match": { 1443 1442 "version": "1.0.2", 1444 1443 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1445 - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1446 - "dev": true 1444 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1447 1445 }, 1448 1446 "node_modules/binary-extensions": { 1449 1447 "version": "2.2.0", 1450 1448 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1451 1449 "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1452 - "dev": true, 1453 1450 "engines": { 1454 1451 "node": ">=8" 1455 1452 } ··· 1458 1455 "version": "1.1.11", 1459 1456 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1460 1457 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1461 - "dev": true, 1462 1458 "dependencies": { 1463 1459 "balanced-match": "^1.0.0", 1464 1460 "concat-map": "0.0.1" ··· 1468 1464 "version": "3.0.2", 1469 1465 "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1470 1466 "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1471 - "dev": true, 1472 1467 "dependencies": { 1473 1468 "fill-range": "^7.0.1" 1474 1469 }, ··· 1523 1518 "version": "1.0.5", 1524 1519 "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", 1525 1520 "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", 1526 - "dev": true, 1527 1521 "dependencies": { 1528 1522 "function-bind": "^1.1.2", 1529 1523 "get-intrinsic": "^1.2.1", ··· 1635 1629 "version": "3.5.3", 1636 1630 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1637 1631 "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1638 - "dev": true, 1639 1632 "funding": [ 1640 1633 { 1641 1634 "type": "individual", ··· 1662 1655 "version": "5.1.2", 1663 1656 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1664 1657 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1665 - "dev": true, 1666 1658 "dependencies": { 1667 1659 "is-glob": "^4.0.1" 1668 1660 }, ··· 1719 1711 "node_modules/concat-map": { 1720 1712 "version": "0.0.1", 1721 1713 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1722 - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1723 - "dev": true 1714 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 1724 1715 }, 1725 1716 "node_modules/cross-spawn": { 1726 1717 "version": "7.0.3", ··· 1797 1788 "version": "1.1.1", 1798 1789 "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", 1799 1790 "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", 1800 - "dev": true, 1801 1791 "dependencies": { 1802 1792 "get-intrinsic": "^1.2.1", 1803 1793 "gopd": "^1.0.1", ··· 1811 1801 "version": "1.2.1", 1812 1802 "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", 1813 1803 "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", 1814 - "dev": true, 1815 1804 "dependencies": { 1816 1805 "define-data-property": "^1.0.1", 1817 1806 "has-property-descriptors": "^1.0.0", ··· 1901 1890 "node": ">=10.13.0" 1902 1891 } 1903 1892 }, 1893 + "node_modules/error-ex": { 1894 + "version": "1.3.2", 1895 + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1896 + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1897 + "dependencies": { 1898 + "is-arrayish": "^0.2.1" 1899 + } 1900 + }, 1904 1901 "node_modules/es-abstract": { 1905 1902 "version": "1.22.3", 1906 1903 "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", 1907 1904 "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", 1908 - "dev": true, 1909 1905 "dependencies": { 1910 1906 "array-buffer-byte-length": "^1.0.0", 1911 1907 "arraybuffer.prototype.slice": "^1.0.2", ··· 1980 1976 "version": "2.0.2", 1981 1977 "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", 1982 1978 "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", 1983 - "dev": true, 1984 1979 "dependencies": { 1985 1980 "get-intrinsic": "^1.2.2", 1986 1981 "has-tostringtag": "^1.0.0", ··· 2003 1998 "version": "1.2.1", 2004 1999 "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 2005 2000 "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 2006 - "dev": true, 2007 2001 "dependencies": { 2008 2002 "is-callable": "^1.1.4", 2009 2003 "is-date-object": "^1.0.1", ··· 2625 2619 "version": "7.0.1", 2626 2620 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 2627 2621 "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 2628 - "dev": true, 2629 2622 "dependencies": { 2630 2623 "to-regex-range": "^5.0.1" 2631 2624 }, ··· 2673 2666 "version": "0.3.3", 2674 2667 "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 2675 2668 "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 2676 - "dev": true, 2677 2669 "dependencies": { 2678 2670 "is-callable": "^1.1.3" 2679 2671 } ··· 2701 2693 "version": "2.3.3", 2702 2694 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2703 2695 "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2704 - "dev": true, 2705 2696 "hasInstallScript": true, 2706 2697 "optional": true, 2707 2698 "os": [ ··· 2715 2706 "version": "1.1.2", 2716 2707 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2717 2708 "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2718 - "dev": true, 2719 2709 "funding": { 2720 2710 "url": "https://github.com/sponsors/ljharb" 2721 2711 } ··· 2724 2714 "version": "1.1.6", 2725 2715 "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", 2726 2716 "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", 2727 - "dev": true, 2728 2717 "dependencies": { 2729 2718 "call-bind": "^1.0.2", 2730 2719 "define-properties": "^1.2.0", ··· 2742 2731 "version": "1.2.3", 2743 2732 "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", 2744 2733 "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", 2745 - "dev": true, 2746 2734 "funding": { 2747 2735 "url": "https://github.com/sponsors/ljharb" 2748 2736 } ··· 2751 2739 "version": "1.2.2", 2752 2740 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", 2753 2741 "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", 2754 - "dev": true, 2755 2742 "dependencies": { 2756 2743 "function-bind": "^1.1.2", 2757 2744 "has-proto": "^1.0.1", ··· 2766 2753 "version": "1.0.0", 2767 2754 "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 2768 2755 "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 2769 - "dev": true, 2770 2756 "dependencies": { 2771 2757 "call-bind": "^1.0.2", 2772 2758 "get-intrinsic": "^1.1.1" ··· 2846 2832 "version": "1.0.3", 2847 2833 "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 2848 2834 "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 2849 - "dev": true, 2850 2835 "dependencies": { 2851 2836 "define-properties": "^1.1.3" 2852 2837 }, ··· 2881 2866 "version": "1.0.1", 2882 2867 "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", 2883 2868 "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", 2884 - "dev": true, 2885 2869 "dependencies": { 2886 2870 "get-intrinsic": "^1.1.3" 2887 2871 }, ··· 2947 2931 "version": "1.0.2", 2948 2932 "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", 2949 2933 "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", 2950 - "dev": true, 2951 2934 "funding": { 2952 2935 "url": "https://github.com/sponsors/ljharb" 2953 2936 } ··· 2965 2948 "version": "1.0.1", 2966 2949 "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", 2967 2950 "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", 2968 - "dev": true, 2969 2951 "dependencies": { 2970 2952 "get-intrinsic": "^1.2.2" 2971 2953 }, ··· 2977 2959 "version": "1.0.1", 2978 2960 "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", 2979 2961 "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", 2980 - "dev": true, 2981 2962 "engines": { 2982 2963 "node": ">= 0.4" 2983 2964 }, ··· 2989 2970 "version": "1.0.3", 2990 2971 "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 2991 2972 "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 2992 - "dev": true, 2993 2973 "engines": { 2994 2974 "node": ">= 0.4" 2995 2975 }, ··· 3001 2981 "version": "1.0.0", 3002 2982 "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 3003 2983 "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 3004 - "dev": true, 3005 2984 "dependencies": { 3006 2985 "has-symbols": "^1.0.2" 3007 2986 }, ··· 3043 3022 "version": "2.0.0", 3044 3023 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", 3045 3024 "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", 3046 - "dev": true, 3047 3025 "dependencies": { 3048 3026 "function-bind": "^1.1.2" 3049 3027 }, ··· 3156 3134 "url": "https://opencollective.com/unified" 3157 3135 } 3158 3136 }, 3137 + "node_modules/hosted-git-info": { 3138 + "version": "2.8.9", 3139 + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", 3140 + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" 3141 + }, 3159 3142 "node_modules/ignore": { 3160 3143 "version": "5.2.4", 3161 3144 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", ··· 3215 3198 "version": "1.0.6", 3216 3199 "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", 3217 3200 "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", 3218 - "dev": true, 3219 3201 "dependencies": { 3220 3202 "get-intrinsic": "^1.2.2", 3221 3203 "hasown": "^2.0.0", ··· 3251 3233 "version": "3.0.2", 3252 3234 "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", 3253 3235 "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", 3254 - "dev": true, 3255 3236 "dependencies": { 3256 3237 "call-bind": "^1.0.2", 3257 3238 "get-intrinsic": "^1.2.0", ··· 3261 3242 "url": "https://github.com/sponsors/ljharb" 3262 3243 } 3263 3244 }, 3245 + "node_modules/is-arrayish": { 3246 + "version": "0.2.1", 3247 + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 3248 + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 3249 + }, 3264 3250 "node_modules/is-async-function": { 3265 3251 "version": "2.0.0", 3266 3252 "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", ··· 3280 3266 "version": "1.0.4", 3281 3267 "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 3282 3268 "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 3283 - "dev": true, 3284 3269 "dependencies": { 3285 3270 "has-bigints": "^1.0.1" 3286 3271 }, ··· 3292 3277 "version": "2.1.0", 3293 3278 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3294 3279 "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3295 - "dev": true, 3296 3280 "dependencies": { 3297 3281 "binary-extensions": "^2.0.0" 3298 3282 }, ··· 3304 3288 "version": "1.1.2", 3305 3289 "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 3306 3290 "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 3307 - "dev": true, 3308 3291 "dependencies": { 3309 3292 "call-bind": "^1.0.2", 3310 3293 "has-tostringtag": "^1.0.0" ··· 3342 3325 "version": "1.2.7", 3343 3326 "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", 3344 3327 "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", 3345 - "dev": true, 3346 3328 "engines": { 3347 3329 "node": ">= 0.4" 3348 3330 }, ··· 3354 3336 "version": "2.13.1", 3355 3337 "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", 3356 3338 "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", 3357 - "dev": true, 3358 3339 "dependencies": { 3359 3340 "hasown": "^2.0.0" 3360 3341 }, ··· 3366 3347 "version": "1.0.5", 3367 3348 "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 3368 3349 "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 3369 - "dev": true, 3370 3350 "dependencies": { 3371 3351 "has-tostringtag": "^1.0.0" 3372 3352 }, ··· 3398 3378 "version": "2.1.1", 3399 3379 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3400 3380 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3401 - "dev": true, 3402 3381 "engines": { 3403 3382 "node": ">=0.10.0" 3404 3383 } ··· 3434 3413 "version": "4.0.3", 3435 3414 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3436 3415 "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3437 - "dev": true, 3438 3416 "dependencies": { 3439 3417 "is-extglob": "^2.1.1" 3440 3418 }, ··· 3464 3442 "version": "2.0.2", 3465 3443 "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 3466 3444 "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", 3467 - "dev": true, 3468 3445 "engines": { 3469 3446 "node": ">= 0.4" 3470 3447 }, ··· 3476 3453 "version": "7.0.0", 3477 3454 "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3478 3455 "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3479 - "dev": true, 3480 3456 "engines": { 3481 3457 "node": ">=0.12.0" 3482 3458 } ··· 3485 3461 "version": "1.0.7", 3486 3462 "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", 3487 3463 "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", 3488 - "dev": true, 3489 3464 "dependencies": { 3490 3465 "has-tostringtag": "^1.0.0" 3491 3466 }, ··· 3539 3514 "version": "1.1.4", 3540 3515 "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 3541 3516 "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 3542 - "dev": true, 3543 3517 "dependencies": { 3544 3518 "call-bind": "^1.0.2", 3545 3519 "has-tostringtag": "^1.0.0" ··· 3564 3538 "version": "1.0.2", 3565 3539 "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", 3566 3540 "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", 3567 - "dev": true, 3568 3541 "dependencies": { 3569 3542 "call-bind": "^1.0.2" 3570 3543 }, ··· 3576 3549 "version": "1.0.7", 3577 3550 "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 3578 3551 "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 3579 - "dev": true, 3580 3552 "dependencies": { 3581 3553 "has-tostringtag": "^1.0.0" 3582 3554 }, ··· 3591 3563 "version": "1.0.4", 3592 3564 "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 3593 3565 "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 3594 - "dev": true, 3595 3566 "dependencies": { 3596 3567 "has-symbols": "^1.0.2" 3597 3568 }, ··· 3606 3577 "version": "1.1.12", 3607 3578 "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", 3608 3579 "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", 3609 - "dev": true, 3610 3580 "dependencies": { 3611 3581 "which-typed-array": "^1.1.11" 3612 3582 }, ··· 3630 3600 "version": "1.0.2", 3631 3601 "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 3632 3602 "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 3633 - "dev": true, 3634 3603 "dependencies": { 3635 3604 "call-bind": "^1.0.2" 3636 3605 }, ··· 3654 3623 "node_modules/isarray": { 3655 3624 "version": "2.0.5", 3656 3625 "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 3657 - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", 3658 - "dev": true 3626 + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" 3659 3627 }, 3660 3628 "node_modules/isexe": { 3661 3629 "version": "2.0.0", 3662 3630 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3663 - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3664 - "dev": true 3631 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 3665 3632 }, 3666 3633 "node_modules/iterator.prototype": { 3667 3634 "version": "1.1.2", ··· 3707 3674 "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 3708 3675 "dev": true 3709 3676 }, 3677 + "node_modules/json-parse-better-errors": { 3678 + "version": "1.0.2", 3679 + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 3680 + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" 3681 + }, 3710 3682 "node_modules/json-schema-traverse": { 3711 3683 "version": "0.4.1", 3712 3684 "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", ··· 3818 3790 "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 3819 3791 "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 3820 3792 "dev": true 3793 + }, 3794 + "node_modules/load-json-file": { 3795 + "version": "4.0.0", 3796 + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 3797 + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", 3798 + "dependencies": { 3799 + "graceful-fs": "^4.1.2", 3800 + "parse-json": "^4.0.0", 3801 + "pify": "^3.0.0", 3802 + "strip-bom": "^3.0.0" 3803 + }, 3804 + "engines": { 3805 + "node": ">=4" 3806 + } 3807 + }, 3808 + "node_modules/load-json-file/node_modules/pify": { 3809 + "version": "3.0.0", 3810 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 3811 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 3812 + "engines": { 3813 + "node": ">=4" 3814 + } 3821 3815 }, 3822 3816 "node_modules/locate-path": { 3823 3817 "version": "6.0.0", ··· 5957 5951 } 5958 5952 ] 5959 5953 }, 5954 + "node_modules/memorystream": { 5955 + "version": "0.3.1", 5956 + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", 5957 + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", 5958 + "engines": { 5959 + "node": ">= 0.10.0" 5960 + } 5961 + }, 5960 5962 "node_modules/merge2": { 5961 5963 "version": "1.4.1", 5962 5964 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", ··· 6721 6723 "version": "3.1.2", 6722 6724 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 6723 6725 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 6724 - "dev": true, 6725 6726 "dependencies": { 6726 6727 "brace-expansion": "^1.1.7" 6727 6728 }, ··· 6849 6850 "react-dom": ">=16.x <=18.x" 6850 6851 } 6851 6852 }, 6853 + "node_modules/nice-try": { 6854 + "version": "1.0.5", 6855 + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 6856 + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" 6857 + }, 6852 6858 "node_modules/node-releases": { 6853 6859 "version": "2.0.13", 6854 6860 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", 6855 6861 "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", 6856 6862 "dev": true 6857 6863 }, 6864 + "node_modules/normalize-package-data": { 6865 + "version": "2.5.0", 6866 + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 6867 + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 6868 + "dependencies": { 6869 + "hosted-git-info": "^2.1.4", 6870 + "resolve": "^1.10.0", 6871 + "semver": "2 || 3 || 4 || 5", 6872 + "validate-npm-package-license": "^3.0.1" 6873 + } 6874 + }, 6875 + "node_modules/normalize-package-data/node_modules/semver": { 6876 + "version": "5.7.2", 6877 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 6878 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 6879 + "bin": { 6880 + "semver": "bin/semver" 6881 + } 6882 + }, 6858 6883 "node_modules/normalize-path": { 6859 6884 "version": "3.0.0", 6860 6885 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 6861 6886 "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 6862 - "dev": true, 6863 6887 "engines": { 6864 6888 "node": ">=0.10.0" 6865 6889 } ··· 6873 6897 "node": ">=0.10.0" 6874 6898 } 6875 6899 }, 6900 + "node_modules/npm-run-all": { 6901 + "version": "4.1.5", 6902 + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", 6903 + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", 6904 + "dependencies": { 6905 + "ansi-styles": "^3.2.1", 6906 + "chalk": "^2.4.1", 6907 + "cross-spawn": "^6.0.5", 6908 + "memorystream": "^0.3.1", 6909 + "minimatch": "^3.0.4", 6910 + "pidtree": "^0.3.0", 6911 + "read-pkg": "^3.0.0", 6912 + "shell-quote": "^1.6.1", 6913 + "string.prototype.padend": "^3.0.0" 6914 + }, 6915 + "bin": { 6916 + "npm-run-all": "bin/npm-run-all/index.js", 6917 + "run-p": "bin/run-p/index.js", 6918 + "run-s": "bin/run-s/index.js" 6919 + }, 6920 + "engines": { 6921 + "node": ">= 4" 6922 + } 6923 + }, 6924 + "node_modules/npm-run-all/node_modules/ansi-styles": { 6925 + "version": "3.2.1", 6926 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 6927 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 6928 + "dependencies": { 6929 + "color-convert": "^1.9.0" 6930 + }, 6931 + "engines": { 6932 + "node": ">=4" 6933 + } 6934 + }, 6935 + "node_modules/npm-run-all/node_modules/chalk": { 6936 + "version": "2.4.2", 6937 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 6938 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 6939 + "dependencies": { 6940 + "ansi-styles": "^3.2.1", 6941 + "escape-string-regexp": "^1.0.5", 6942 + "supports-color": "^5.3.0" 6943 + }, 6944 + "engines": { 6945 + "node": ">=4" 6946 + } 6947 + }, 6948 + "node_modules/npm-run-all/node_modules/color-convert": { 6949 + "version": "1.9.3", 6950 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 6951 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 6952 + "dependencies": { 6953 + "color-name": "1.1.3" 6954 + } 6955 + }, 6956 + "node_modules/npm-run-all/node_modules/color-name": { 6957 + "version": "1.1.3", 6958 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 6959 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 6960 + }, 6961 + "node_modules/npm-run-all/node_modules/cross-spawn": { 6962 + "version": "6.0.5", 6963 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 6964 + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 6965 + "dependencies": { 6966 + "nice-try": "^1.0.4", 6967 + "path-key": "^2.0.1", 6968 + "semver": "^5.5.0", 6969 + "shebang-command": "^1.2.0", 6970 + "which": "^1.2.9" 6971 + }, 6972 + "engines": { 6973 + "node": ">=4.8" 6974 + } 6975 + }, 6976 + "node_modules/npm-run-all/node_modules/escape-string-regexp": { 6977 + "version": "1.0.5", 6978 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 6979 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 6980 + "engines": { 6981 + "node": ">=0.8.0" 6982 + } 6983 + }, 6984 + "node_modules/npm-run-all/node_modules/has-flag": { 6985 + "version": "3.0.0", 6986 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 6987 + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 6988 + "engines": { 6989 + "node": ">=4" 6990 + } 6991 + }, 6992 + "node_modules/npm-run-all/node_modules/path-key": { 6993 + "version": "2.0.1", 6994 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 6995 + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", 6996 + "engines": { 6997 + "node": ">=4" 6998 + } 6999 + }, 7000 + "node_modules/npm-run-all/node_modules/semver": { 7001 + "version": "5.7.2", 7002 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 7003 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 7004 + "bin": { 7005 + "semver": "bin/semver" 7006 + } 7007 + }, 7008 + "node_modules/npm-run-all/node_modules/shebang-command": { 7009 + "version": "1.2.0", 7010 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 7011 + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", 7012 + "dependencies": { 7013 + "shebang-regex": "^1.0.0" 7014 + }, 7015 + "engines": { 7016 + "node": ">=0.10.0" 7017 + } 7018 + }, 7019 + "node_modules/npm-run-all/node_modules/shebang-regex": { 7020 + "version": "1.0.0", 7021 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 7022 + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", 7023 + "engines": { 7024 + "node": ">=0.10.0" 7025 + } 7026 + }, 7027 + "node_modules/npm-run-all/node_modules/supports-color": { 7028 + "version": "5.5.0", 7029 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 7030 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 7031 + "dependencies": { 7032 + "has-flag": "^3.0.0" 7033 + }, 7034 + "engines": { 7035 + "node": ">=4" 7036 + } 7037 + }, 7038 + "node_modules/npm-run-all/node_modules/which": { 7039 + "version": "1.3.1", 7040 + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 7041 + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 7042 + "dependencies": { 7043 + "isexe": "^2.0.0" 7044 + }, 7045 + "bin": { 7046 + "which": "bin/which" 7047 + } 7048 + }, 6876 7049 "node_modules/object-assign": { 6877 7050 "version": "4.1.1", 6878 7051 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", ··· 6895 7068 "version": "1.13.1", 6896 7069 "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", 6897 7070 "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", 6898 - "dev": true, 6899 7071 "funding": { 6900 7072 "url": "https://github.com/sponsors/ljharb" 6901 7073 } ··· 6904 7076 "version": "1.1.1", 6905 7077 "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 6906 7078 "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 6907 - "dev": true, 6908 7079 "engines": { 6909 7080 "node": ">= 0.4" 6910 7081 } ··· 6913 7084 "version": "4.1.4", 6914 7085 "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", 6915 7086 "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", 6916 - "dev": true, 6917 7087 "dependencies": { 6918 7088 "call-bind": "^1.0.2", 6919 7089 "define-properties": "^1.1.4", ··· 7095 7265 "url": "https://github.com/sponsors/wooorm" 7096 7266 } 7097 7267 }, 7268 + "node_modules/parse-json": { 7269 + "version": "4.0.0", 7270 + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 7271 + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", 7272 + "dependencies": { 7273 + "error-ex": "^1.3.1", 7274 + "json-parse-better-errors": "^1.0.1" 7275 + }, 7276 + "engines": { 7277 + "node": ">=4" 7278 + } 7279 + }, 7098 7280 "node_modules/parse-numeric-range": { 7099 7281 "version": "1.3.0", 7100 7282 "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", ··· 7135 7317 "node_modules/path-parse": { 7136 7318 "version": "1.0.7", 7137 7319 "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 7138 - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 7139 - "dev": true 7320 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 7140 7321 }, 7141 7322 "node_modules/path-type": { 7142 7323 "version": "4.0.0", ··· 7166 7347 "version": "2.3.1", 7167 7348 "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 7168 7349 "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 7169 - "dev": true, 7170 7350 "engines": { 7171 7351 "node": ">=8.6" 7172 7352 }, ··· 7174 7354 "url": "https://github.com/sponsors/jonschlinkert" 7175 7355 } 7176 7356 }, 7357 + "node_modules/pidtree": { 7358 + "version": "0.3.1", 7359 + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", 7360 + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", 7361 + "bin": { 7362 + "pidtree": "bin/pidtree.js" 7363 + }, 7364 + "engines": { 7365 + "node": ">=0.10" 7366 + } 7367 + }, 7177 7368 "node_modules/pify": { 7178 7369 "version": "2.3.0", 7179 7370 "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", ··· 7418 7609 "pify": "^2.3.0" 7419 7610 } 7420 7611 }, 7612 + "node_modules/read-pkg": { 7613 + "version": "3.0.0", 7614 + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 7615 + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", 7616 + "dependencies": { 7617 + "load-json-file": "^4.0.0", 7618 + "normalize-package-data": "^2.3.2", 7619 + "path-type": "^3.0.0" 7620 + }, 7621 + "engines": { 7622 + "node": ">=4" 7623 + } 7624 + }, 7625 + "node_modules/read-pkg/node_modules/path-type": { 7626 + "version": "3.0.0", 7627 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 7628 + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 7629 + "dependencies": { 7630 + "pify": "^3.0.0" 7631 + }, 7632 + "engines": { 7633 + "node": ">=4" 7634 + } 7635 + }, 7636 + "node_modules/read-pkg/node_modules/pify": { 7637 + "version": "3.0.0", 7638 + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 7639 + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", 7640 + "engines": { 7641 + "node": ">=4" 7642 + } 7643 + }, 7421 7644 "node_modules/readdirp": { 7422 7645 "version": "3.6.0", 7423 7646 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 7424 7647 "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 7425 - "dev": true, 7426 7648 "dependencies": { 7427 7649 "picomatch": "^2.2.1" 7428 7650 }, ··· 7460 7682 "version": "1.5.1", 7461 7683 "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", 7462 7684 "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", 7463 - "dev": true, 7464 7685 "dependencies": { 7465 7686 "call-bind": "^1.0.2", 7466 7687 "define-properties": "^1.2.0", ··· 7662 7883 "version": "1.22.8", 7663 7884 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 7664 7885 "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 7665 - "dev": true, 7666 7886 "dependencies": { 7667 7887 "is-core-module": "^2.13.0", 7668 7888 "path-parse": "^1.0.7", ··· 7756 7976 "version": "1.0.1", 7757 7977 "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", 7758 7978 "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", 7759 - "dev": true, 7760 7979 "dependencies": { 7761 7980 "call-bind": "^1.0.2", 7762 7981 "get-intrinsic": "^1.2.1", ··· 7774 7993 "version": "1.0.0", 7775 7994 "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", 7776 7995 "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", 7777 - "dev": true, 7778 7996 "dependencies": { 7779 7997 "call-bind": "^1.0.2", 7780 7998 "get-intrinsic": "^1.1.3", ··· 7823 8041 "version": "1.1.1", 7824 8042 "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", 7825 8043 "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", 7826 - "dev": true, 7827 8044 "dependencies": { 7828 8045 "define-data-property": "^1.1.1", 7829 8046 "get-intrinsic": "^1.2.1", ··· 7838 8055 "version": "2.0.1", 7839 8056 "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", 7840 8057 "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", 7841 - "dev": true, 7842 8058 "dependencies": { 7843 8059 "define-data-property": "^1.0.1", 7844 8060 "functions-have-names": "^1.2.3", ··· 7869 8085 "node": ">=8" 7870 8086 } 7871 8087 }, 8088 + "node_modules/shell-quote": { 8089 + "version": "1.8.1", 8090 + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", 8091 + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", 8092 + "funding": { 8093 + "url": "https://github.com/sponsors/ljharb" 8094 + } 8095 + }, 7872 8096 "node_modules/shiki": { 7873 8097 "version": "0.14.5", 7874 8098 "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.5.tgz", ··· 7884 8108 "version": "1.0.4", 7885 8109 "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 7886 8110 "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 7887 - "dev": true, 7888 8111 "dependencies": { 7889 8112 "call-bind": "^1.0.0", 7890 8113 "get-intrinsic": "^1.0.2", ··· 7942 8165 "url": "https://github.com/sponsors/wooorm" 7943 8166 } 7944 8167 }, 8168 + "node_modules/spdx-correct": { 8169 + "version": "3.2.0", 8170 + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", 8171 + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", 8172 + "dependencies": { 8173 + "spdx-expression-parse": "^3.0.0", 8174 + "spdx-license-ids": "^3.0.0" 8175 + } 8176 + }, 8177 + "node_modules/spdx-exceptions": { 8178 + "version": "2.3.0", 8179 + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 8180 + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" 8181 + }, 8182 + "node_modules/spdx-expression-parse": { 8183 + "version": "3.0.1", 8184 + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 8185 + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 8186 + "dependencies": { 8187 + "spdx-exceptions": "^2.1.0", 8188 + "spdx-license-ids": "^3.0.0" 8189 + } 8190 + }, 8191 + "node_modules/spdx-license-ids": { 8192 + "version": "3.0.16", 8193 + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", 8194 + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" 8195 + }, 7945 8196 "node_modules/sprintf-js": { 7946 8197 "version": "1.0.3", 7947 8198 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", ··· 7975 8226 "url": "https://github.com/sponsors/ljharb" 7976 8227 } 7977 8228 }, 8229 + "node_modules/string.prototype.padend": { 8230 + "version": "3.1.5", 8231 + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", 8232 + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", 8233 + "dependencies": { 8234 + "call-bind": "^1.0.2", 8235 + "define-properties": "^1.2.0", 8236 + "es-abstract": "^1.22.1" 8237 + }, 8238 + "engines": { 8239 + "node": ">= 0.4" 8240 + }, 8241 + "funding": { 8242 + "url": "https://github.com/sponsors/ljharb" 8243 + } 8244 + }, 7978 8245 "node_modules/string.prototype.trim": { 7979 8246 "version": "1.2.8", 7980 8247 "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", 7981 8248 "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", 7982 - "dev": true, 7983 8249 "dependencies": { 7984 8250 "call-bind": "^1.0.2", 7985 8251 "define-properties": "^1.2.0", ··· 7996 8262 "version": "1.0.7", 7997 8263 "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", 7998 8264 "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", 7999 - "dev": true, 8000 8265 "dependencies": { 8001 8266 "call-bind": "^1.0.2", 8002 8267 "define-properties": "^1.2.0", ··· 8010 8275 "version": "1.0.7", 8011 8276 "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", 8012 8277 "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", 8013 - "dev": true, 8014 8278 "dependencies": { 8015 8279 "call-bind": "^1.0.2", 8016 8280 "define-properties": "^1.2.0", ··· 8049 8313 "version": "3.0.0", 8050 8314 "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 8051 8315 "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", 8052 - "dev": true, 8053 8316 "engines": { 8054 8317 "node": ">=4" 8055 8318 } ··· 8162 8425 "version": "1.0.0", 8163 8426 "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 8164 8427 "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 8165 - "dev": true, 8166 8428 "engines": { 8167 8429 "node": ">= 0.4" 8168 8430 }, ··· 8247 8509 "version": "5.0.1", 8248 8510 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 8249 8511 "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 8250 - "dev": true, 8251 8512 "dependencies": { 8252 8513 "is-number": "^7.0.0" 8253 8514 }, ··· 8336 8597 "version": "1.0.0", 8337 8598 "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", 8338 8599 "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", 8339 - "dev": true, 8340 8600 "dependencies": { 8341 8601 "call-bind": "^1.0.2", 8342 8602 "get-intrinsic": "^1.2.1", ··· 8350 8610 "version": "1.0.0", 8351 8611 "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", 8352 8612 "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", 8353 - "dev": true, 8354 8613 "dependencies": { 8355 8614 "call-bind": "^1.0.2", 8356 8615 "for-each": "^0.3.3", ··· 8368 8627 "version": "1.0.0", 8369 8628 "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", 8370 8629 "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", 8371 - "dev": true, 8372 8630 "dependencies": { 8373 8631 "available-typed-arrays": "^1.0.5", 8374 8632 "call-bind": "^1.0.2", ··· 8387 8645 "version": "1.0.4", 8388 8646 "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", 8389 8647 "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", 8390 - "dev": true, 8391 8648 "dependencies": { 8392 8649 "call-bind": "^1.0.2", 8393 8650 "for-each": "^0.3.3", ··· 8415 8672 "version": "1.0.2", 8416 8673 "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", 8417 8674 "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", 8418 - "dev": true, 8419 8675 "dependencies": { 8420 8676 "call-bind": "^1.0.2", 8421 8677 "has-bigints": "^1.0.2", ··· 8591 8847 "node": ">=8" 8592 8848 } 8593 8849 }, 8850 + "node_modules/validate-npm-package-license": { 8851 + "version": "3.0.4", 8852 + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 8853 + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 8854 + "dependencies": { 8855 + "spdx-correct": "^3.0.0", 8856 + "spdx-expression-parse": "^3.0.0" 8857 + } 8858 + }, 8594 8859 "node_modules/vfile": { 8595 8860 "version": "5.3.7", 8596 8861 "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", ··· 8696 8961 "version": "1.0.2", 8697 8962 "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 8698 8963 "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 8699 - "dev": true, 8700 8964 "dependencies": { 8701 8965 "is-bigint": "^1.0.1", 8702 8966 "is-boolean-object": "^1.1.0", ··· 8753 9017 "version": "1.1.13", 8754 9018 "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", 8755 9019 "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", 8756 - "dev": true, 8757 9020 "dependencies": { 8758 9021 "available-typed-arrays": "^1.0.5", 8759 9022 "call-bind": "^1.0.4", ··· 8773 9036 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 8774 9037 "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 8775 9038 "dev": true 9039 + }, 9040 + "node_modules/ws": { 9041 + "version": "8.14.2", 9042 + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", 9043 + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", 9044 + "engines": { 9045 + "node": ">=10.0.0" 9046 + }, 9047 + "peerDependencies": { 9048 + "bufferutil": "^4.0.1", 9049 + "utf-8-validate": ">=5.0.2" 9050 + }, 9051 + "peerDependenciesMeta": { 9052 + "bufferutil": { 9053 + "optional": true 9054 + }, 9055 + "utf-8-validate": { 9056 + "optional": true 9057 + } 9058 + } 8776 9059 }, 8777 9060 "node_modules/yallist": { 8778 9061 "version": "4.0.0",
+8 -3
package.json
··· 3 3 "version": "0.1.0", 4 4 "private": true, 5 5 "scripts": { 6 - "dev": "next dev", 6 + "dev": "run-p next-dev watch-content", 7 + "next-dev": "next dev", 7 8 "build": "next build", 8 9 "start": "next start", 9 - "lint": "next lint" 10 + "lint": "next lint", 11 + "watch-content": "node ./watcher.js" 10 12 }, 11 13 "dependencies": { 14 + "chokidar": "^3.5.3", 12 15 "colorjs.io": "^0.4.5", 13 16 "gray-matter": "^4.0.3", 14 17 "next": "^14.0.1-canary.2", 15 18 "next-mdx-remote": "^4.4.1", 19 + "npm-run-all": "^4.1.5", 16 20 "overnight": "^1.8.0", 17 21 "react": "^18", 18 22 "react-dom": "^18", 19 23 "rehype-pretty-code": "^0.10.2", 20 - "shiki": "^0.14.5" 24 + "shiki": "^0.14.5", 25 + "ws": "^8.14.2" 21 26 }, 22 27 "devDependencies": { 23 28 "autoprefixer": "^10.4.16",
+1 -1
public/npm-audit-broken-by-design/index.md
··· 4 4 spoiler: "Found 99 vulnerabilities (84 moderately irrelevant, 15 highly irrelevant)" 5 5 --- 6 6 7 - Security is important. Nobody wants to be the person advocating for less security. So nobody wants to say it. But somebody has to say it. 7 + Security is important. Nobody wants to be the person advocating for less security. So nobody wants to say it. But somebody has to say it 8 8 9 9 So I guess I’ll say it. 10 10
+25
watcher.js
··· 1 + const { WebSocketServer } = require("ws"); 2 + const chokidar = require("chokidar"); 3 + 4 + const wss = new WebSocketServer({ port: 3001 }); 5 + const watchCallbacks = []; 6 + 7 + chokidar.watch("./public").on("all", (event) => { 8 + if (event === "change") { 9 + watchCallbacks.forEach((cb) => cb()); 10 + } 11 + }); 12 + 13 + wss.on("connection", function connection(ws) { 14 + ws.on("error", console.error); 15 + 16 + watchCallbacks.push(onChange); 17 + ws.on("close", function close() { 18 + const index = watchCallbacks.findIndex(onChange); 19 + watchCallbacks.splice(index, 1); 20 + }); 21 + 22 + function onChange() { 23 + ws.send("refresh"); 24 + } 25 + });