Experiment to rebuild Diffuse using web applets.
0
fork

Configure Feed

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

feat: webamp theme + native fs input ui

+1268 -61
+2 -1
deno.lock
··· 21 21 ], 22 22 "packageJson": { 23 23 "dependencies": [ 24 + "npm:98.css@~0.1.21", 24 25 "npm:@atcute/cid@^2.2.2", 25 26 "npm:@picocss/pico@^2.1.1", 26 27 "npm:astro-purgecss@^5.2.2", 27 28 "npm:astro-scope@^3.0.1", 28 29 "npm:astro@^5.7.4", 29 - "npm:fast-uri@^3.0.6", 30 30 "npm:iconoir@^7.11.0", 31 31 "npm:idb-keyval@^6.2.1", 32 32 "npm:native-file-system-adapter@^3.0.1", ··· 36 36 "npm:spellcaster@6", 37 37 "npm:throttle-debounce@^5.0.2", 38 38 "npm:uri-js@^4.4.1", 39 + "npm:webamp@^1.5.0", 39 40 "npm:xxh32@^2.0.5" 40 41 ] 41 42 }
+1028 -6
package-lock.json
··· 8 8 "@atcute/cid": "^2.2.2", 9 9 "@picocss/pico": "^2.1.1", 10 10 "@web-applets/sdk": "https://gitpkg.vercel.app/unternet-co/web-applets/sdk?feat/child-context&scripts.postinstall=npm%20i%20%40types%2Fnode%20%26%26%20npx%20tsc", 11 + "98.css": "^0.1.21", 11 12 "iconoir": "^7.11.0", 12 13 "idb-keyval": "^6.2.1", 13 14 "native-file-system-adapter": "^3.0.1", ··· 15 16 "spellcaster": "^6.0.0", 16 17 "throttle-debounce": "^5.0.2", 17 18 "uri-js": "^4.4.1", 19 + "webamp": "^1.5.0", 18 20 "xxh32": "^2.0.5" 19 21 }, 20 22 "devDependencies": { ··· 24 26 "purgecss": "^7.0.2", 25 27 "sass": "^1.87.0" 26 28 } 29 + }, 30 + "node_modules/@assemblyscript/loader": { 31 + "version": "0.17.14", 32 + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.17.14.tgz", 33 + "integrity": "sha512-+PVTOfla/0XMLRTQLJFPg4u40XcdTfon6GGea70hBGi8Pd7ZymIXyVUR+vK8wt5Jb4MVKTKPIz43Myyebw5mZA==", 34 + "license": "Apache-2.0" 27 35 }, 28 36 "node_modules/@astrojs/compiler": { 29 37 "version": "2.11.0", ··· 149 157 }, 150 158 "engines": { 151 159 "node": ">=6.0.0" 160 + } 161 + }, 162 + "node_modules/@babel/runtime": { 163 + "version": "7.27.1", 164 + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", 165 + "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", 166 + "license": "MIT", 167 + "engines": { 168 + "node": ">=6.9.0" 152 169 } 153 170 }, 154 171 "node_modules/@babel/types": { ··· 1717 1734 "@types/unist": "*" 1718 1735 } 1719 1736 }, 1737 + "node_modules/@types/hoist-non-react-statics": { 1738 + "version": "3.3.6", 1739 + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", 1740 + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", 1741 + "license": "MIT", 1742 + "dependencies": { 1743 + "@types/react": "*", 1744 + "hoist-non-react-statics": "^3.3.0" 1745 + } 1746 + }, 1720 1747 "node_modules/@types/mdast": { 1721 1748 "version": "4.0.4", 1722 1749 "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", ··· 1739 1766 "dev": true, 1740 1767 "dependencies": { 1741 1768 "@types/unist": "*" 1769 + } 1770 + }, 1771 + "node_modules/@types/react": { 1772 + "version": "19.1.4", 1773 + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", 1774 + "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", 1775 + "license": "MIT", 1776 + "dependencies": { 1777 + "csstype": "^3.0.2" 1778 + } 1779 + }, 1780 + "node_modules/@types/react-redux": { 1781 + "version": "7.1.34", 1782 + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", 1783 + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", 1784 + "license": "MIT", 1785 + "dependencies": { 1786 + "@types/hoist-non-react-statics": "^3.3.0", 1787 + "@types/react": "*", 1788 + "hoist-non-react-statics": "^3.3.0", 1789 + "redux": "^4.0.0" 1742 1790 } 1743 1791 }, 1744 1792 "node_modules/@types/unist": { ··· 1760 1808 "hasInstallScript": true, 1761 1809 "license": "MIT" 1762 1810 }, 1811 + "node_modules/98.css": { 1812 + "version": "0.1.21", 1813 + "resolved": "https://registry.npmjs.org/98.css/-/98.css-0.1.21.tgz", 1814 + "integrity": "sha512-ddk5qtUWyapM0Bzd5jwGExoE5fdSEGrP+F5VbYjyZLf2c9UVmn6w2NPTvCsoD4BWdGsjdLjlkQGhWwWTJcYQJQ==", 1815 + "license": "MIT" 1816 + }, 1763 1817 "node_modules/acorn": { 1764 1818 "version": "8.14.1", 1765 1819 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", ··· 1772 1826 "node": ">=0.4.0" 1773 1827 } 1774 1828 }, 1829 + "node_modules/ani-cursor": { 1830 + "version": "0.0.4", 1831 + "resolved": "https://registry.npmjs.org/ani-cursor/-/ani-cursor-0.0.4.tgz", 1832 + "integrity": "sha512-2MTPTcPhVw+SkIV7R0MsYioVi58bYH+Jjz9k3jQraX2mOJjUiZRSa9QK37eD6b7F/VBq+y3q1mK12i+uG+f5HQ==", 1833 + "license": "MIT", 1834 + "dependencies": { 1835 + "byte-data": "18.1.1", 1836 + "riff-file": "^1.0.3" 1837 + } 1838 + }, 1775 1839 "node_modules/ansi-align": { 1776 1840 "version": "3.0.1", 1777 1841 "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", ··· 1896 1960 "url": "https://github.com/sponsors/wooorm" 1897 1961 } 1898 1962 }, 1963 + "node_modules/assert": { 1964 + "version": "1.5.1", 1965 + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", 1966 + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", 1967 + "license": "MIT", 1968 + "dependencies": { 1969 + "object.assign": "^4.1.4", 1970 + "util": "^0.10.4" 1971 + } 1972 + }, 1899 1973 "node_modules/astro": { 1900 1974 "version": "5.7.4", 1901 1975 "resolved": "https://registry.npmjs.org/astro/-/astro-5.7.4.tgz", ··· 2006 2080 "node": ">= 0.4" 2007 2081 } 2008 2082 }, 2083 + "node_modules/babel-runtime": { 2084 + "version": "6.26.0", 2085 + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 2086 + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", 2087 + "license": "MIT", 2088 + "dependencies": { 2089 + "core-js": "^2.4.0", 2090 + "regenerator-runtime": "^0.11.0" 2091 + } 2092 + }, 2009 2093 "node_modules/bail": { 2010 2094 "version": "2.0.2", 2011 2095 "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", ··· 2032 2116 "version": "1.5.1", 2033 2117 "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 2034 2118 "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 2035 - "dev": true, 2036 2119 "funding": [ 2037 2120 { 2038 2121 "type": "github", ··· 2121 2204 "base64-js": "^1.1.2" 2122 2205 } 2123 2206 }, 2207 + "node_modules/buffer": { 2208 + "version": "5.7.1", 2209 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 2210 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 2211 + "funding": [ 2212 + { 2213 + "type": "github", 2214 + "url": "https://github.com/sponsors/feross" 2215 + }, 2216 + { 2217 + "type": "patreon", 2218 + "url": "https://www.patreon.com/feross" 2219 + }, 2220 + { 2221 + "type": "consulting", 2222 + "url": "https://feross.org/support" 2223 + } 2224 + ], 2225 + "license": "MIT", 2226 + "dependencies": { 2227 + "base64-js": "^1.3.1", 2228 + "ieee754": "^1.1.13" 2229 + } 2230 + }, 2231 + "node_modules/butterchurn": { 2232 + "version": "3.0.0-beta.4", 2233 + "resolved": "https://registry.npmjs.org/butterchurn/-/butterchurn-3.0.0-beta.4.tgz", 2234 + "integrity": "sha512-hiY1ktHYHQ8MT65nnZi7GjrgZZ6sl/ipT5rBqEfaYJd90L4SvOtB6lVxtKadtzAyJo2TQJc4gJfEca4cpZo0DA==", 2235 + "license": "MIT", 2236 + "dependencies": { 2237 + "@assemblyscript/loader": "^0.17.11", 2238 + "@babel/runtime": "^7.11.2", 2239 + "ecma-proposal-math-extensions": "0.0.2", 2240 + "eel-wasm": "^0.0.15" 2241 + } 2242 + }, 2243 + "node_modules/butterchurn-presets": { 2244 + "version": "3.0.0-beta.4", 2245 + "resolved": "https://registry.npmjs.org/butterchurn-presets/-/butterchurn-presets-3.0.0-beta.4.tgz", 2246 + "integrity": "sha512-TbQLUPvGOYMZAtWKoCmBtludh9aQZ6NaMGQU4lvPeadBPy3Du3yNmwBjlTMLP5c5mRWElxQPjTL1PtR7FZK3OQ==", 2247 + "license": "MIT", 2248 + "dependencies": { 2249 + "@babel/runtime": "^7.12.5" 2250 + } 2251 + }, 2252 + "node_modules/byte-data": { 2253 + "version": "18.1.1", 2254 + "resolved": "https://registry.npmjs.org/byte-data/-/byte-data-18.1.1.tgz", 2255 + "integrity": "sha512-Kv/B0r7adgnCcrs/y703sac2XFLdHW5kPfis1j8+Ij/hmEcWhBKf+1pNTv+vsNqXb207Uiyri8bpnogNxR/4Lg==", 2256 + "license": "MIT", 2257 + "dependencies": { 2258 + "endianness": "^8.0.2", 2259 + "ieee754-buffer": "^2.0.0", 2260 + "utf8-buffer": "^1.0.0" 2261 + }, 2262 + "engines": { 2263 + "node": ">=8" 2264 + } 2265 + }, 2266 + "node_modules/call-bind": { 2267 + "version": "1.0.8", 2268 + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", 2269 + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", 2270 + "license": "MIT", 2271 + "dependencies": { 2272 + "call-bind-apply-helpers": "^1.0.0", 2273 + "es-define-property": "^1.0.0", 2274 + "get-intrinsic": "^1.2.4", 2275 + "set-function-length": "^1.2.2" 2276 + }, 2277 + "engines": { 2278 + "node": ">= 0.4" 2279 + }, 2280 + "funding": { 2281 + "url": "https://github.com/sponsors/ljharb" 2282 + } 2283 + }, 2284 + "node_modules/call-bind-apply-helpers": { 2285 + "version": "1.0.2", 2286 + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 2287 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 2288 + "license": "MIT", 2289 + "dependencies": { 2290 + "es-errors": "^1.3.0", 2291 + "function-bind": "^1.1.2" 2292 + }, 2293 + "engines": { 2294 + "node": ">= 0.4" 2295 + } 2296 + }, 2297 + "node_modules/call-bound": { 2298 + "version": "1.0.4", 2299 + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", 2300 + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 2301 + "license": "MIT", 2302 + "dependencies": { 2303 + "call-bind-apply-helpers": "^1.0.2", 2304 + "get-intrinsic": "^1.3.0" 2305 + }, 2306 + "engines": { 2307 + "node": ">= 0.4" 2308 + }, 2309 + "funding": { 2310 + "url": "https://github.com/sponsors/ljharb" 2311 + } 2312 + }, 2124 2313 "node_modules/camelcase": { 2125 2314 "version": "8.0.0", 2126 2315 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", ··· 2143 2332 "url": "https://github.com/sponsors/wooorm" 2144 2333 } 2145 2334 }, 2335 + "node_modules/chainsaw": { 2336 + "version": "0.0.9", 2337 + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.0.9.tgz", 2338 + "integrity": "sha512-nG8PYH+/4xB+8zkV4G844EtfvZ5tTiLFoX3dZ4nhF4t3OCKIb9UvaFyNmeZO2zOSmRWzBoTD+napN6hiL+EgcA==", 2339 + "license": "MIT/X11", 2340 + "dependencies": { 2341 + "traverse": ">=0.3.0 <0.4" 2342 + }, 2343 + "engines": { 2344 + "node": "*" 2345 + } 2346 + }, 2146 2347 "node_modules/chalk": { 2147 2348 "version": "5.4.1", 2148 2349 "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", ··· 2214 2415 "engines": { 2215 2416 "node": ">=8" 2216 2417 } 2418 + }, 2419 + "node_modules/classnames": { 2420 + "version": "2.5.1", 2421 + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", 2422 + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", 2423 + "license": "MIT" 2217 2424 }, 2218 2425 "node_modules/cli-boxes": { 2219 2426 "version": "3.0.0", ··· 2328 2535 "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", 2329 2536 "dev": true 2330 2537 }, 2538 + "node_modules/core-js": { 2539 + "version": "2.6.12", 2540 + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", 2541 + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", 2542 + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", 2543 + "hasInstallScript": true, 2544 + "license": "MIT" 2545 + }, 2546 + "node_modules/core-util-is": { 2547 + "version": "1.0.3", 2548 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 2549 + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 2550 + "license": "MIT" 2551 + }, 2331 2552 "node_modules/cross-fetch": { 2332 2553 "version": "3.2.0", 2333 2554 "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", ··· 2384 2605 "engines": { 2385 2606 "node": ">=4" 2386 2607 } 2608 + }, 2609 + "node_modules/csstype": { 2610 + "version": "3.1.3", 2611 + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 2612 + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 2613 + "license": "MIT" 2387 2614 }, 2388 2615 "node_modules/debug": { 2389 2616 "version": "4.4.0", 2390 2617 "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 2391 2618 "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 2392 - "dev": true, 2393 2619 "dependencies": { 2394 2620 "ms": "^2.1.3" 2395 2621 }, ··· 2423 2649 "node": ">=14.16" 2424 2650 } 2425 2651 }, 2652 + "node_modules/define-data-property": { 2653 + "version": "1.1.4", 2654 + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 2655 + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 2656 + "license": "MIT", 2657 + "dependencies": { 2658 + "es-define-property": "^1.0.0", 2659 + "es-errors": "^1.3.0", 2660 + "gopd": "^1.0.1" 2661 + }, 2662 + "engines": { 2663 + "node": ">= 0.4" 2664 + }, 2665 + "funding": { 2666 + "url": "https://github.com/sponsors/ljharb" 2667 + } 2668 + }, 2669 + "node_modules/define-properties": { 2670 + "version": "1.2.1", 2671 + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", 2672 + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", 2673 + "license": "MIT", 2674 + "dependencies": { 2675 + "define-data-property": "^1.0.1", 2676 + "has-property-descriptors": "^1.0.0", 2677 + "object-keys": "^1.1.1" 2678 + }, 2679 + "engines": { 2680 + "node": ">= 0.4" 2681 + }, 2682 + "funding": { 2683 + "url": "https://github.com/sponsors/ljharb" 2684 + } 2685 + }, 2426 2686 "node_modules/defu": { 2427 2687 "version": "6.1.4", 2428 2688 "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", ··· 2515 2775 "node": ">=4" 2516 2776 } 2517 2777 }, 2778 + "node_modules/dunder-proto": { 2779 + "version": "1.0.1", 2780 + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 2781 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 2782 + "license": "MIT", 2783 + "dependencies": { 2784 + "call-bind-apply-helpers": "^1.0.1", 2785 + "es-errors": "^1.3.0", 2786 + "gopd": "^1.2.0" 2787 + }, 2788 + "engines": { 2789 + "node": ">= 0.4" 2790 + } 2791 + }, 2518 2792 "node_modules/eastasianwidth": { 2519 2793 "version": "0.2.0", 2520 2794 "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 2521 2795 "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 2522 2796 "dev": true 2523 2797 }, 2798 + "node_modules/ecma-proposal-math-extensions": { 2799 + "version": "0.0.2", 2800 + "resolved": "https://registry.npmjs.org/ecma-proposal-math-extensions/-/ecma-proposal-math-extensions-0.0.2.tgz", 2801 + "integrity": "sha512-80BnDp2Fn7RxXlEr5HHZblniY4aQ97MOAicdWWpSo0vkQiISSE9wLR4SqxKsu4gCtXFBIPPzy8JMhay4NWRg/Q==", 2802 + "license": "MIT" 2803 + }, 2804 + "node_modules/eel-wasm": { 2805 + "version": "0.0.15", 2806 + "resolved": "https://registry.npmjs.org/eel-wasm/-/eel-wasm-0.0.15.tgz", 2807 + "integrity": "sha512-FSTWf6lwGn7Zc3QiV+KxWTznIqq4j9eST/aXmyN/cC39+1Arqs13YOMosHQ7tqUt+OjQmG79Vd41f9gu+w1lvA==", 2808 + "license": "MIT" 2809 + }, 2524 2810 "node_modules/emoji-regex": { 2525 2811 "version": "10.4.0", 2526 2812 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", ··· 2533 2819 "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", 2534 2820 "dev": true 2535 2821 }, 2822 + "node_modules/endianness": { 2823 + "version": "8.0.2", 2824 + "resolved": "https://registry.npmjs.org/endianness/-/endianness-8.0.2.tgz", 2825 + "integrity": "sha512-IU+77+jJ7lpw2qZ3NUuqBZFy3GuioNgXUdsL1L9tooDNTaw0TgOnwNuc+8Ns+haDaTifK97QLzmOANJtI/rGvw==", 2826 + "license": "MIT", 2827 + "engines": { 2828 + "node": ">=8" 2829 + } 2830 + }, 2536 2831 "node_modules/entities": { 2537 2832 "version": "4.5.0", 2538 2833 "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", ··· 2545 2840 "url": "https://github.com/fb55/entities?sponsor=1" 2546 2841 } 2547 2842 }, 2843 + "node_modules/es-define-property": { 2844 + "version": "1.0.1", 2845 + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 2846 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 2847 + "license": "MIT", 2848 + "engines": { 2849 + "node": ">= 0.4" 2850 + } 2851 + }, 2852 + "node_modules/es-errors": { 2853 + "version": "1.3.0", 2854 + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 2855 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 2856 + "license": "MIT", 2857 + "engines": { 2858 + "node": ">= 0.4" 2859 + } 2860 + }, 2548 2861 "node_modules/es-module-lexer": { 2549 2862 "version": "1.6.0", 2550 2863 "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", 2551 2864 "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", 2552 2865 "dev": true 2553 2866 }, 2867 + "node_modules/es-object-atoms": { 2868 + "version": "1.1.1", 2869 + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 2870 + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 2871 + "license": "MIT", 2872 + "dependencies": { 2873 + "es-errors": "^1.3.0" 2874 + }, 2875 + "engines": { 2876 + "node": ">= 0.4" 2877 + } 2878 + }, 2554 2879 "node_modules/esbuild": { 2555 2880 "version": "0.25.2", 2556 2881 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", ··· 2667 2992 "node": "^12.20 || >= 14.13" 2668 2993 } 2669 2994 }, 2995 + "node_modules/file-type": { 2996 + "version": "11.1.0", 2997 + "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz", 2998 + "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==", 2999 + "license": "MIT", 3000 + "engines": { 3001 + "node": ">=6" 3002 + } 3003 + }, 2670 3004 "node_modules/fill-range": { 2671 3005 "version": "7.1.1", 2672 3006 "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", ··· 2733 3067 "url": "https://github.com/sponsors/isaacs" 2734 3068 } 2735 3069 }, 3070 + "node_modules/fscreen": { 3071 + "version": "1.2.0", 3072 + "resolved": "https://registry.npmjs.org/fscreen/-/fscreen-1.2.0.tgz", 3073 + "integrity": "sha512-hlq4+BU0hlPmwsFjwGGzZ+OZ9N/wq9Ljg/sq3pX+2CD7hrJsX9tJgWWK/wiNTFM212CLHWhicOoqwXyZGGetJg==", 3074 + "license": "MIT" 3075 + }, 2736 3076 "node_modules/fsevents": { 2737 3077 "version": "2.3.3", 2738 3078 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", ··· 2747 3087 "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2748 3088 } 2749 3089 }, 3090 + "node_modules/function-bind": { 3091 + "version": "1.1.2", 3092 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 3093 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 3094 + "license": "MIT", 3095 + "funding": { 3096 + "url": "https://github.com/sponsors/ljharb" 3097 + } 3098 + }, 2750 3099 "node_modules/get-east-asian-width": { 2751 3100 "version": "1.3.0", 2752 3101 "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", ··· 2759 3108 "url": "https://github.com/sponsors/sindresorhus" 2760 3109 } 2761 3110 }, 3111 + "node_modules/get-intrinsic": { 3112 + "version": "1.3.0", 3113 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", 3114 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 3115 + "license": "MIT", 3116 + "dependencies": { 3117 + "call-bind-apply-helpers": "^1.0.2", 3118 + "es-define-property": "^1.0.1", 3119 + "es-errors": "^1.3.0", 3120 + "es-object-atoms": "^1.1.1", 3121 + "function-bind": "^1.1.2", 3122 + "get-proto": "^1.0.1", 3123 + "gopd": "^1.2.0", 3124 + "has-symbols": "^1.1.0", 3125 + "hasown": "^2.0.2", 3126 + "math-intrinsics": "^1.1.0" 3127 + }, 3128 + "engines": { 3129 + "node": ">= 0.4" 3130 + }, 3131 + "funding": { 3132 + "url": "https://github.com/sponsors/ljharb" 3133 + } 3134 + }, 3135 + "node_modules/get-proto": { 3136 + "version": "1.0.1", 3137 + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 3138 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 3139 + "license": "MIT", 3140 + "dependencies": { 3141 + "dunder-proto": "^1.0.1", 3142 + "es-object-atoms": "^1.0.0" 3143 + }, 3144 + "engines": { 3145 + "node": ">= 0.4" 3146 + } 3147 + }, 2762 3148 "node_modules/github-slugger": { 2763 3149 "version": "2.0.0", 2764 3150 "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", ··· 2788 3174 "url": "https://github.com/sponsors/isaacs" 2789 3175 } 2790 3176 }, 3177 + "node_modules/glsl-optimizer-js": { 3178 + "version": "0.0.2", 3179 + "resolved": "https://registry.npmjs.org/glsl-optimizer-js/-/glsl-optimizer-js-0.0.2.tgz", 3180 + "integrity": "sha512-SMkVILyc1LeBEBgiHOe+4Bh8MEqxLNyAns0NfgmxJTxZZdj7oCoZt+n846rbdB8OLGsg16f5C9nmhi9XEuM8SQ==", 3181 + "license": "MIT" 3182 + }, 3183 + "node_modules/gopd": { 3184 + "version": "1.2.0", 3185 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 3186 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 3187 + "license": "MIT", 3188 + "engines": { 3189 + "node": ">= 0.4" 3190 + }, 3191 + "funding": { 3192 + "url": "https://github.com/sponsors/ljharb" 3193 + } 3194 + }, 2791 3195 "node_modules/h3": { 2792 3196 "version": "1.15.1", 2793 3197 "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.1.tgz", ··· 2805 3209 "uncrypto": "^0.1.3" 2806 3210 } 2807 3211 }, 3212 + "node_modules/has-property-descriptors": { 3213 + "version": "1.0.2", 3214 + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 3215 + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 3216 + "license": "MIT", 3217 + "dependencies": { 3218 + "es-define-property": "^1.0.0" 3219 + }, 3220 + "funding": { 3221 + "url": "https://github.com/sponsors/ljharb" 3222 + } 3223 + }, 3224 + "node_modules/has-symbols": { 3225 + "version": "1.1.0", 3226 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 3227 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 3228 + "license": "MIT", 3229 + "engines": { 3230 + "node": ">= 0.4" 3231 + }, 3232 + "funding": { 3233 + "url": "https://github.com/sponsors/ljharb" 3234 + } 3235 + }, 3236 + "node_modules/hashish": { 3237 + "version": "0.0.4", 3238 + "resolved": "https://registry.npmjs.org/hashish/-/hashish-0.0.4.tgz", 3239 + "integrity": "sha512-xyD4XgslstNAs72ENaoFvgMwtv8xhiDtC2AtzCG+8yF7W/Knxxm9BX+e2s25mm+HxMKh0rBmXVOEGF3zNImXvA==", 3240 + "license": "MIT/X11", 3241 + "dependencies": { 3242 + "traverse": ">=0.2.4" 3243 + }, 3244 + "engines": { 3245 + "node": "*" 3246 + } 3247 + }, 3248 + "node_modules/hasown": { 3249 + "version": "2.0.2", 3250 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 3251 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 3252 + "license": "MIT", 3253 + "dependencies": { 3254 + "function-bind": "^1.1.2" 3255 + }, 3256 + "engines": { 3257 + "node": ">= 0.4" 3258 + } 3259 + }, 2808 3260 "node_modules/hast-util-from-html": { 2809 3261 "version": "2.0.3", 2810 3262 "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", ··· 2992 3444 "url": "https://opencollective.com/unified" 2993 3445 } 2994 3446 }, 3447 + "node_modules/hoist-non-react-statics": { 3448 + "version": "3.3.2", 3449 + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 3450 + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 3451 + "license": "BSD-3-Clause", 3452 + "dependencies": { 3453 + "react-is": "^16.7.0" 3454 + } 3455 + }, 3456 + "node_modules/hoist-non-react-statics/node_modules/react-is": { 3457 + "version": "16.13.1", 3458 + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 3459 + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 3460 + "license": "MIT" 3461 + }, 2995 3462 "node_modules/html-escaper": { 2996 3463 "version": "3.0.3", 2997 3464 "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", ··· 3028 3495 "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", 3029 3496 "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" 3030 3497 }, 3498 + "node_modules/ieee754": { 3499 + "version": "1.2.1", 3500 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 3501 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 3502 + "funding": [ 3503 + { 3504 + "type": "github", 3505 + "url": "https://github.com/sponsors/feross" 3506 + }, 3507 + { 3508 + "type": "patreon", 3509 + "url": "https://www.patreon.com/feross" 3510 + }, 3511 + { 3512 + "type": "consulting", 3513 + "url": "https://feross.org/support" 3514 + } 3515 + ], 3516 + "license": "BSD-3-Clause" 3517 + }, 3518 + "node_modules/ieee754-buffer": { 3519 + "version": "2.0.0", 3520 + "resolved": "https://registry.npmjs.org/ieee754-buffer/-/ieee754-buffer-2.0.0.tgz", 3521 + "integrity": "sha512-AXUAT0nMEi7h1Is8HXGXof3eejl/GabZFKSj8Ym6kVRUSwrAb52EkAXywiCQYSHGQMRn7lvfY7vhPMjVc+Kybg==", 3522 + "license": "MIT", 3523 + "engines": { 3524 + "node": ">=8" 3525 + } 3526 + }, 3527 + "node_modules/immediate": { 3528 + "version": "3.0.6", 3529 + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", 3530 + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", 3531 + "license": "MIT" 3532 + }, 3031 3533 "node_modules/immutable": { 3032 3534 "version": "5.1.1", 3033 3535 "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz", ··· 3044 3546 "url": "https://github.com/sponsors/wooorm" 3045 3547 } 3046 3548 }, 3549 + "node_modules/inherits": { 3550 + "version": "2.0.4", 3551 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3552 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 3553 + "license": "ISC" 3554 + }, 3555 + "node_modules/invariant": { 3556 + "version": "2.2.4", 3557 + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 3558 + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 3559 + "license": "MIT", 3560 + "dependencies": { 3561 + "loose-envify": "^1.0.0" 3562 + } 3563 + }, 3047 3564 "node_modules/iron-webcrypto": { 3048 3565 "version": "1.2.1", 3049 3566 "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", ··· 3147 3664 "url": "https://github.com/sponsors/sindresorhus" 3148 3665 } 3149 3666 }, 3667 + "node_modules/is-typedarray": { 3668 + "version": "1.0.0", 3669 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 3670 + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 3671 + "license": "MIT" 3672 + }, 3150 3673 "node_modules/is-wsl": { 3151 3674 "version": "3.1.0", 3152 3675 "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", ··· 3162 3685 "url": "https://github.com/sponsors/sindresorhus" 3163 3686 } 3164 3687 }, 3688 + "node_modules/isarray": { 3689 + "version": "1.0.0", 3690 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3691 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 3692 + "license": "MIT" 3693 + }, 3165 3694 "node_modules/isexe": { 3166 3695 "version": "2.0.0", 3167 3696 "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", ··· 3183 3712 "url": "https://github.com/sponsors/isaacs" 3184 3713 } 3185 3714 }, 3715 + "node_modules/js-tokens": { 3716 + "version": "4.0.0", 3717 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3718 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3719 + "license": "MIT" 3720 + }, 3186 3721 "node_modules/js-yaml": { 3187 3722 "version": "4.1.0", 3188 3723 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", ··· 3195 3730 "js-yaml": "bin/js-yaml.js" 3196 3731 } 3197 3732 }, 3733 + "node_modules/jszip": { 3734 + "version": "3.10.1", 3735 + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", 3736 + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", 3737 + "license": "(MIT OR GPL-3.0-or-later)", 3738 + "dependencies": { 3739 + "lie": "~3.3.0", 3740 + "pako": "~1.0.2", 3741 + "readable-stream": "~2.3.6", 3742 + "setimmediate": "^1.0.5" 3743 + } 3744 + }, 3745 + "node_modules/jszip/node_modules/pako": { 3746 + "version": "1.0.11", 3747 + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 3748 + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 3749 + "license": "(MIT AND Zlib)" 3750 + }, 3198 3751 "node_modules/kleur": { 3199 3752 "version": "4.1.5", 3200 3753 "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", ··· 3204 3757 "node": ">=6" 3205 3758 } 3206 3759 }, 3760 + "node_modules/lie": { 3761 + "version": "3.3.0", 3762 + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", 3763 + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", 3764 + "license": "MIT", 3765 + "dependencies": { 3766 + "immediate": "~3.0.5" 3767 + } 3768 + }, 3769 + "node_modules/lodash": { 3770 + "version": "4.17.21", 3771 + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 3772 + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 3773 + "license": "MIT" 3774 + }, 3207 3775 "node_modules/longest-streak": { 3208 3776 "version": "3.1.0", 3209 3777 "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", ··· 3214 3782 "url": "https://github.com/sponsors/wooorm" 3215 3783 } 3216 3784 }, 3785 + "node_modules/loose-envify": { 3786 + "version": "1.4.0", 3787 + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 3788 + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 3789 + "license": "MIT", 3790 + "dependencies": { 3791 + "js-tokens": "^3.0.0 || ^4.0.0" 3792 + }, 3793 + "bin": { 3794 + "loose-envify": "cli.js" 3795 + } 3796 + }, 3217 3797 "node_modules/lru-cache": { 3218 3798 "version": "10.4.3", 3219 3799 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", ··· 3248 3828 "funding": { 3249 3829 "type": "github", 3250 3830 "url": "https://github.com/sponsors/wooorm" 3831 + } 3832 + }, 3833 + "node_modules/math-intrinsics": { 3834 + "version": "1.1.0", 3835 + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 3836 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 3837 + "license": "MIT", 3838 + "engines": { 3839 + "node": ">= 0.4" 3251 3840 } 3252 3841 }, 3253 3842 "node_modules/mdast-util-definitions": { ··· 3480 4069 "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", 3481 4070 "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", 3482 4071 "dev": true 4072 + }, 4073 + "node_modules/media-typer": { 4074 + "version": "0.3.0", 4075 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 4076 + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 4077 + "license": "MIT", 4078 + "engines": { 4079 + "node": ">= 0.6" 4080 + } 3483 4081 }, 3484 4082 "node_modules/micromark": { 3485 4083 "version": "4.0.2", ··· 4071 4669 "url": "https://github.com/sponsors/jonschlinkert" 4072 4670 } 4073 4671 }, 4672 + "node_modules/milkdrop-eel-parser": { 4673 + "version": "0.0.4", 4674 + "resolved": "https://registry.npmjs.org/milkdrop-eel-parser/-/milkdrop-eel-parser-0.0.4.tgz", 4675 + "integrity": "sha512-4PsOdTMDB7GM3UFzqXQQXf8MBeoolOhsBLMlhug+IIMZ+yNkvqLbdqDbrueGZc8P8tLRJP8pbAxna1yjFr06HQ==", 4676 + "license": "MIT" 4677 + }, 4678 + "node_modules/milkdrop-preset-converter-aws": { 4679 + "version": "0.1.6", 4680 + "resolved": "https://registry.npmjs.org/milkdrop-preset-converter-aws/-/milkdrop-preset-converter-aws-0.1.6.tgz", 4681 + "integrity": "sha512-nr89LRZYgdrDn17vGQCvUK/LM9d90mywElL7zlzXBTgkxWAs/Kamn1Yl9676ugt4L4BAGo6PTEipIqeYXFSM7g==", 4682 + "license": "MIT", 4683 + "dependencies": { 4684 + "babel-runtime": "^6.26.0", 4685 + "glsl-optimizer-js": "^0.0.2", 4686 + "milkdrop-eel-parser": "^0.0.4", 4687 + "milkdrop-preset-utils": "^0.1.0" 4688 + } 4689 + }, 4690 + "node_modules/milkdrop-preset-utils": { 4691 + "version": "0.1.0", 4692 + "resolved": "https://registry.npmjs.org/milkdrop-preset-utils/-/milkdrop-preset-utils-0.1.0.tgz", 4693 + "integrity": "sha512-yK5y03SN8INC+ssLLYGGsaAHgNxXEUK6PQVV44rg9OAA27F2aPM0tA5uGsDdASH9sgPaAaRVMV5NoEvEkh66Sw==", 4694 + "license": "MIT", 4695 + "dependencies": { 4696 + "babel-runtime": "^6.26.0", 4697 + "lodash": "^4.17.4" 4698 + } 4699 + }, 4074 4700 "node_modules/minimatch": { 4075 4701 "version": "10.0.1", 4076 4702 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", ··· 4107 4733 "node_modules/ms": { 4108 4734 "version": "2.1.3", 4109 4735 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 4110 - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 4111 - "dev": true 4736 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 4737 + }, 4738 + "node_modules/music-metadata": { 4739 + "version": "3.8.0", 4740 + "resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-3.8.0.tgz", 4741 + "integrity": "sha512-aIADbp3uCS+ANr4nnFEHzTzMy81OT7PR7WBMW73SJ28Y7P94nnEugmTOj1ICP2JmxBBDlo+MeYVgiPnxVN69tg==", 4742 + "license": "MIT", 4743 + "dependencies": { 4744 + "debug": "^4.1.0", 4745 + "file-type": "^11.0.0", 4746 + "media-typer": "0.3.0", 4747 + "strtok3": "^2.3.0", 4748 + "token-types": "^1.0.1" 4749 + }, 4750 + "engines": { 4751 + "node": "*" 4752 + } 4753 + }, 4754 + "node_modules/music-metadata-browser": { 4755 + "version": "0.6.6", 4756 + "resolved": "https://registry.npmjs.org/music-metadata-browser/-/music-metadata-browser-0.6.6.tgz", 4757 + "integrity": "sha512-14KFz4HR6rM6RATcLtJoBDRbehU/dKdVzElCdeI8CjP7Un2HtSf0WiT7f7Lz+XNkcBMZUjthmC6Wy4+NNayCRw==", 4758 + "deprecated": "No longer support, superseded by music-metadata", 4759 + "license": "MIT", 4760 + "dependencies": { 4761 + "assert": "^1.4.1", 4762 + "buffer": "^5.2.1", 4763 + "debug": "^4.0.1", 4764 + "music-metadata": "^3.4.0", 4765 + "readable-stream": "^3.0.6", 4766 + "remove": "^0.1.5", 4767 + "typedarray-to-buffer": "^3.1.5" 4768 + } 4769 + }, 4770 + "node_modules/music-metadata-browser/node_modules/readable-stream": { 4771 + "version": "3.6.2", 4772 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 4773 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 4774 + "license": "MIT", 4775 + "dependencies": { 4776 + "inherits": "^2.0.3", 4777 + "string_decoder": "^1.1.1", 4778 + "util-deprecate": "^1.0.1" 4779 + }, 4780 + "engines": { 4781 + "node": ">= 6" 4782 + } 4112 4783 }, 4113 4784 "node_modules/nanoid": { 4114 4785 "version": "3.3.11", ··· 4239 4910 "node": ">=0.10.0" 4240 4911 } 4241 4912 }, 4913 + "node_modules/object-assign": { 4914 + "version": "4.1.1", 4915 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 4916 + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 4917 + "license": "MIT", 4918 + "engines": { 4919 + "node": ">=0.10.0" 4920 + } 4921 + }, 4922 + "node_modules/object-keys": { 4923 + "version": "1.1.1", 4924 + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 4925 + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 4926 + "license": "MIT", 4927 + "engines": { 4928 + "node": ">= 0.4" 4929 + } 4930 + }, 4931 + "node_modules/object.assign": { 4932 + "version": "4.1.7", 4933 + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", 4934 + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", 4935 + "license": "MIT", 4936 + "dependencies": { 4937 + "call-bind": "^1.0.8", 4938 + "call-bound": "^1.0.3", 4939 + "define-properties": "^1.2.1", 4940 + "es-object-atoms": "^1.0.0", 4941 + "has-symbols": "^1.1.0", 4942 + "object-keys": "^1.1.1" 4943 + }, 4944 + "engines": { 4945 + "node": ">= 0.4" 4946 + }, 4947 + "funding": { 4948 + "url": "https://github.com/sponsors/ljharb" 4949 + } 4950 + }, 4242 4951 "node_modules/ofetch": { 4243 4952 "version": "1.4.1", 4244 4953 "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", ··· 4467 5176 "node": ">=6" 4468 5177 } 4469 5178 }, 5179 + "node_modules/process-nextick-args": { 5180 + "version": "2.0.1", 5181 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 5182 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 5183 + "license": "MIT" 5184 + }, 4470 5185 "node_modules/prompts": { 4471 5186 "version": "2.4.2", 4472 5187 "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", ··· 4488 5203 "engines": { 4489 5204 "node": ">=6" 4490 5205 } 5206 + }, 5207 + "node_modules/prop-types": { 5208 + "version": "15.8.1", 5209 + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 5210 + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 5211 + "license": "MIT", 5212 + "dependencies": { 5213 + "loose-envify": "^1.4.0", 5214 + "object-assign": "^4.1.1", 5215 + "react-is": "^16.13.1" 5216 + } 5217 + }, 5218 + "node_modules/prop-types/node_modules/react-is": { 5219 + "version": "16.13.1", 5220 + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 5221 + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", 5222 + "license": "MIT" 4491 5223 }, 4492 5224 "node_modules/property-information": { 4493 5225 "version": "7.0.0", ··· 4545 5277 "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", 4546 5278 "dev": true 4547 5279 }, 5280 + "node_modules/react": { 5281 + "version": "17.0.2", 5282 + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", 5283 + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", 5284 + "license": "MIT", 5285 + "dependencies": { 5286 + "loose-envify": "^1.1.0", 5287 + "object-assign": "^4.1.1" 5288 + }, 5289 + "engines": { 5290 + "node": ">=0.10.0" 5291 + } 5292 + }, 5293 + "node_modules/react-dom": { 5294 + "version": "17.0.2", 5295 + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 5296 + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", 5297 + "license": "MIT", 5298 + "dependencies": { 5299 + "loose-envify": "^1.1.0", 5300 + "object-assign": "^4.1.1", 5301 + "scheduler": "^0.20.2" 5302 + }, 5303 + "peerDependencies": { 5304 + "react": "17.0.2" 5305 + } 5306 + }, 5307 + "node_modules/react-is": { 5308 + "version": "17.0.2", 5309 + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", 5310 + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", 5311 + "license": "MIT" 5312 + }, 5313 + "node_modules/react-redux": { 5314 + "version": "7.2.9", 5315 + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", 5316 + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", 5317 + "license": "MIT", 5318 + "dependencies": { 5319 + "@babel/runtime": "^7.15.4", 5320 + "@types/react-redux": "^7.1.20", 5321 + "hoist-non-react-statics": "^3.3.2", 5322 + "loose-envify": "^1.4.0", 5323 + "prop-types": "^15.7.2", 5324 + "react-is": "^17.0.2" 5325 + }, 5326 + "peerDependencies": { 5327 + "react": "^16.8.3 || ^17 || ^18" 5328 + }, 5329 + "peerDependenciesMeta": { 5330 + "react-dom": { 5331 + "optional": true 5332 + }, 5333 + "react-native": { 5334 + "optional": true 5335 + } 5336 + } 5337 + }, 5338 + "node_modules/readable-stream": { 5339 + "version": "2.3.8", 5340 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 5341 + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 5342 + "license": "MIT", 5343 + "dependencies": { 5344 + "core-util-is": "~1.0.0", 5345 + "inherits": "~2.0.3", 5346 + "isarray": "~1.0.0", 5347 + "process-nextick-args": "~2.0.0", 5348 + "safe-buffer": "~5.1.1", 5349 + "string_decoder": "~1.1.1", 5350 + "util-deprecate": "~1.0.1" 5351 + } 5352 + }, 4548 5353 "node_modules/readdirp": { 4549 5354 "version": "4.1.2", 4550 5355 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", ··· 4557 5362 "type": "individual", 4558 5363 "url": "https://paulmillr.com/funding/" 4559 5364 } 5365 + }, 5366 + "node_modules/redux": { 5367 + "version": "4.2.1", 5368 + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", 5369 + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", 5370 + "license": "MIT", 5371 + "dependencies": { 5372 + "@babel/runtime": "^7.9.2" 5373 + } 5374 + }, 5375 + "node_modules/regenerator-runtime": { 5376 + "version": "0.11.1", 5377 + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 5378 + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 5379 + "license": "MIT" 4560 5380 }, 4561 5381 "node_modules/regex": { 4562 5382 "version": "6.0.1", ··· 4724 5544 "url": "https://opencollective.com/unified" 4725 5545 } 4726 5546 }, 5547 + "node_modules/remove": { 5548 + "version": "0.1.5", 5549 + "resolved": "https://registry.npmjs.org/remove/-/remove-0.1.5.tgz", 5550 + "integrity": "sha512-AJMA9oWvJzdTjwIGwSQZsjGQiRx73YTmiOWmfCp1fpLa/D4n7jKcpoA+CZiVLJqKcEKUuh1Suq80c5wF+L/qVQ==", 5551 + "license": "MIT", 5552 + "dependencies": { 5553 + "seq": ">= 0.3.5" 5554 + } 5555 + }, 5556 + "node_modules/reselect": { 5557 + "version": "3.0.1", 5558 + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", 5559 + "integrity": "sha512-b/6tFZCmRhtBMa4xGqiiRp9jh9Aqi2A687Lo265cN0/QohJQEBPiQ52f4QB6i0eF3yp3hmLL21LSGBcML2dlxA==", 5560 + "license": "MIT" 5561 + }, 4727 5562 "node_modules/restructure": { 4728 5563 "version": "3.0.2", 4729 5564 "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", ··· 4791 5626 "url": "https://opencollective.com/unified" 4792 5627 } 4793 5628 }, 5629 + "node_modules/riff-file": { 5630 + "version": "1.0.3", 5631 + "resolved": "https://registry.npmjs.org/riff-file/-/riff-file-1.0.3.tgz", 5632 + "integrity": "sha512-Vv8wwGr0BCks7VMI3Lv0houZee4DaHFjjTT0LMhMJKio2YmLncLeIVpK63ydSverngNk8XQPU3fbeP3bWgSIig==", 5633 + "license": "MIT", 5634 + "dependencies": { 5635 + "byte-data": "^18.0.3" 5636 + }, 5637 + "engines": { 5638 + "node": ">=8" 5639 + } 5640 + }, 4794 5641 "node_modules/rollup": { 4795 5642 "version": "4.40.0", 4796 5643 "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", ··· 4830 5677 "fsevents": "~2.3.2" 4831 5678 } 4832 5679 }, 5680 + "node_modules/safe-buffer": { 5681 + "version": "5.1.2", 5682 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 5683 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 5684 + "license": "MIT" 5685 + }, 4833 5686 "node_modules/sass": { 4834 5687 "version": "1.87.0", 4835 5688 "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz", ··· 4850 5703 "@parcel/watcher": "^2.4.1" 4851 5704 } 4852 5705 }, 5706 + "node_modules/scheduler": { 5707 + "version": "0.20.2", 5708 + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", 5709 + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", 5710 + "license": "MIT", 5711 + "dependencies": { 5712 + "loose-envify": "^1.1.0", 5713 + "object-assign": "^4.1.1" 5714 + } 5715 + }, 4853 5716 "node_modules/semver": { 4854 5717 "version": "7.7.1", 4855 5718 "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", ··· 4862 5725 "node": ">=10" 4863 5726 } 4864 5727 }, 5728 + "node_modules/seq": { 5729 + "version": "0.3.5", 5730 + "resolved": "https://registry.npmjs.org/seq/-/seq-0.3.5.tgz", 5731 + "integrity": "sha512-sisY2Ln1fj43KBkRtXkesnRHYNdswIkIibvNe/0UKm2GZxjMbqmccpiatoKr/k2qX5VKiLU8xm+tz/74LAho4g==", 5732 + "license": "MIT/X11", 5733 + "dependencies": { 5734 + "chainsaw": ">=0.0.7 <0.1", 5735 + "hashish": ">=0.0.2 <0.1" 5736 + }, 5737 + "engines": { 5738 + "node": "*" 5739 + } 5740 + }, 5741 + "node_modules/set-function-length": { 5742 + "version": "1.2.2", 5743 + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 5744 + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 5745 + "license": "MIT", 5746 + "dependencies": { 5747 + "define-data-property": "^1.1.4", 5748 + "es-errors": "^1.3.0", 5749 + "function-bind": "^1.1.2", 5750 + "get-intrinsic": "^1.2.4", 5751 + "gopd": "^1.0.1", 5752 + "has-property-descriptors": "^1.0.2" 5753 + }, 5754 + "engines": { 5755 + "node": ">= 0.4" 5756 + } 5757 + }, 5758 + "node_modules/setimmediate": { 5759 + "version": "1.0.5", 5760 + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 5761 + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", 5762 + "license": "MIT" 5763 + }, 4865 5764 "node_modules/sharp": { 4866 5765 "version": "0.33.5", 4867 5766 "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", ··· 5022 5921 "url": "https://github.com/sponsors/sindresorhus" 5023 5922 } 5024 5923 }, 5924 + "node_modules/string_decoder": { 5925 + "version": "1.1.1", 5926 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 5927 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 5928 + "license": "MIT", 5929 + "dependencies": { 5930 + "safe-buffer": "~5.1.0" 5931 + } 5932 + }, 5025 5933 "node_modules/string-width": { 5026 5934 "version": "7.2.0", 5027 5935 "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", ··· 5132 6040 "node": ">=8" 5133 6041 } 5134 6042 }, 6043 + "node_modules/strtok3": { 6044 + "version": "2.3.0", 6045 + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-2.3.0.tgz", 6046 + "integrity": "sha512-AA67/1atBh7X0fUTDevjW89by2ZkY9RZAnkwusx5Yc1COYf0ruUbpYOOIs03SnRA1CF9K3+BtRXKOEtKhAXVaQ==", 6047 + "license": "MIT", 6048 + "dependencies": { 6049 + "debug": "^4.1.0", 6050 + "then-read-stream": "^1.5.0", 6051 + "token-types": "^1.0.1" 6052 + }, 6053 + "engines": { 6054 + "node": ">=0.1.98" 6055 + } 6056 + }, 6057 + "node_modules/then-read-stream": { 6058 + "version": "1.5.1", 6059 + "resolved": "https://registry.npmjs.org/then-read-stream/-/then-read-stream-1.5.1.tgz", 6060 + "integrity": "sha512-I+iiemYWhp1ysJQEioqpEICgvHlqHS5WrQGZkboFLs7Jm350Kvq4cN3qRCzHpETUuq5+NsdrdWEg6M0NFxtwtQ==", 6061 + "deprecated": "Package renamed to peak-readable.", 6062 + "license": "MIT", 6063 + "engines": { 6064 + "node": ">=8" 6065 + } 6066 + }, 5135 6067 "node_modules/throttle-debounce": { 5136 6068 "version": "5.0.2", 5137 6069 "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-5.0.2.tgz", ··· 5168 6100 "url": "https://github.com/sponsors/SuperchupuDev" 5169 6101 } 5170 6102 }, 6103 + "node_modules/tinyqueue": { 6104 + "version": "1.2.3", 6105 + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz", 6106 + "integrity": "sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA==", 6107 + "license": "ISC" 6108 + }, 5171 6109 "node_modules/to-regex-range": { 5172 6110 "version": "5.0.1", 5173 6111 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", ··· 5181 6119 "node": ">=8.0" 5182 6120 } 5183 6121 }, 6122 + "node_modules/token-types": { 6123 + "version": "1.3.2", 6124 + "resolved": "https://registry.npmjs.org/token-types/-/token-types-1.3.2.tgz", 6125 + "integrity": "sha512-LemYprKRfZPUiwVEMIL8fIP/cvZBpMds1PklsyoQyLZdKk7SQlldNGzw4TTrg2MnWLGSkMM6gUa1EW0h1d72fg==", 6126 + "license": "MIT", 6127 + "dependencies": { 6128 + "ieee754": "^1.1.13" 6129 + }, 6130 + "engines": { 6131 + "node": ">=0.1.98" 6132 + } 6133 + }, 5184 6134 "node_modules/tr46": { 5185 6135 "version": "0.0.3", 5186 6136 "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 5187 6137 "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 5188 6138 "dev": true 6139 + }, 6140 + "node_modules/traverse": { 6141 + "version": "0.3.9", 6142 + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", 6143 + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", 6144 + "license": "MIT/X11", 6145 + "engines": { 6146 + "node": "*" 6147 + } 5189 6148 }, 5190 6149 "node_modules/trim-lines": { 5191 6150 "version": "3.0.1", ··· 5245 6204 "url": "https://github.com/sponsors/sindresorhus" 5246 6205 } 5247 6206 }, 6207 + "node_modules/typedarray-to-buffer": { 6208 + "version": "3.1.5", 6209 + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 6210 + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 6211 + "license": "MIT", 6212 + "dependencies": { 6213 + "is-typedarray": "^1.0.0" 6214 + } 6215 + }, 5248 6216 "node_modules/typescript": { 5249 6217 "version": "5.8.3", 5250 6218 "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", ··· 5550 6518 "punycode": "^2.1.0" 5551 6519 } 5552 6520 }, 6521 + "node_modules/utf8-buffer": { 6522 + "version": "1.0.0", 6523 + "resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz", 6524 + "integrity": "sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==", 6525 + "license": "MIT", 6526 + "engines": { 6527 + "node": ">=8" 6528 + } 6529 + }, 6530 + "node_modules/util": { 6531 + "version": "0.10.4", 6532 + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 6533 + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 6534 + "license": "MIT", 6535 + "dependencies": { 6536 + "inherits": "2.0.3" 6537 + } 6538 + }, 5553 6539 "node_modules/util-deprecate": { 5554 6540 "version": "1.0.2", 5555 6541 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 5556 - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 5557 - "dev": true 6542 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 6543 + }, 6544 + "node_modules/util/node_modules/inherits": { 6545 + "version": "2.0.3", 6546 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 6547 + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", 6548 + "license": "ISC" 5558 6549 }, 5559 6550 "node_modules/vfile": { 5560 6551 "version": "6.0.3", ··· 5709 6700 "node": ">= 8" 5710 6701 } 5711 6702 }, 6703 + "node_modules/webamp": { 6704 + "version": "1.5.0", 6705 + "resolved": "https://registry.npmjs.org/webamp/-/webamp-1.5.0.tgz", 6706 + "integrity": "sha512-Rz2L90pUqg6Y/1jbtniS8RCuDD8TMwfjqv6D/4T93UfvGPGvfQR00LE/rfaHRfG6FgQfiOul7RyPXvCaEikCxg==", 6707 + "license": "MIT", 6708 + "dependencies": { 6709 + "ani-cursor": "^0.0.4", 6710 + "butterchurn": "^3.0.0-beta.3", 6711 + "butterchurn-presets": "3.0.0-beta.4", 6712 + "classnames": "^2.2.5", 6713 + "fscreen": "^1.0.2", 6714 + "invariant": "^2.2.3", 6715 + "jszip": "^3.1.3", 6716 + "lodash": "^4.17.21", 6717 + "milkdrop-preset-converter-aws": "^0.1.6", 6718 + "music-metadata-browser": "^0.6.1", 6719 + "react": "^17.0.1", 6720 + "react-dom": "^17.0.1", 6721 + "react-redux": "^7.2.2", 6722 + "redux": "^4.0.5", 6723 + "reselect": "^3.0.1", 6724 + "tinyqueue": "^1.2.3", 6725 + "winamp-eqf": "^1.0.0" 6726 + } 6727 + }, 5712 6728 "node_modules/webidl-conversions": { 5713 6729 "version": "3.0.1", 5714 6730 "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", ··· 5763 6779 "funding": { 5764 6780 "url": "https://github.com/sponsors/sindresorhus" 5765 6781 } 6782 + }, 6783 + "node_modules/winamp-eqf": { 6784 + "version": "1.0.0", 6785 + "resolved": "https://registry.npmjs.org/winamp-eqf/-/winamp-eqf-1.0.0.tgz", 6786 + "integrity": "sha512-yUIb4+lTYBKP4L6nPXdDj1CQBXlJ+/PrNAkT1VbTAgeFjX8lPxAthsUE5NxQP4s8SO4YMJemsrErZ49Bh+/Veg==", 6787 + "license": "ISC" 5766 6788 }, 5767 6789 "node_modules/wrap-ansi": { 5768 6790 "version": "9.0.0",
+2
package.json
··· 3 3 "@atcute/cid": "^2.2.2", 4 4 "@picocss/pico": "^2.1.1", 5 5 "@web-applets/sdk": "https://gitpkg.vercel.app/unternet-co/web-applets/sdk?feat/child-context&scripts.postinstall=npm%20i%20%40types%2Fnode%20%26%26%20npx%20tsc", 6 + "98.css": "^0.1.21", 6 7 "iconoir": "^7.11.0", 7 8 "idb-keyval": "^6.2.1", 8 9 "native-file-system-adapter": "^3.0.1", ··· 10 11 "spellcaster": "^6.0.0", 11 12 "throttle-debounce": "^5.0.2", 12 13 "uri-js": "^4.4.1", 14 + "webamp": "^1.5.0", 13 15 "xxh32": "^2.0.5" 14 16 }, 15 17 "devDependencies": {
public/images/icons/windows_98/directory_open_cool-0.png

This is a binary file and will not be displayed.

public/images/icons/windows_98/directory_open_file_mydocs_2k-2.png

This is a binary file and will not be displayed.

+1
src/layouts/applet-pico-ui.astro
··· 4 4 import "@styles/fonts.css"; 5 5 import "@styles/icons.css"; 6 6 import "@styles/pico.scss"; 7 + import "@styles/applets/common.css"; 7 8 8 9 const { title } = Astro.props; 9 10 ---
-6
src/pages/configurator/output/_applet.astro
··· 32 32 #iframes { 33 33 display: none; 34 34 } 35 - 36 - .with-icon { 37 - align-items: center; 38 - display: inline-flex; 39 - gap: 0.75em; 40 - } 41 35 </style> 42 36 43 37 <script>
+4 -1
src/pages/index.astro
··· 15 15 const WEB_APPLETS_HREF = "https://unternet.co/docs/web-applets/introduction"; 16 16 17 17 // Themes 18 - const themes = [{ url: "themes/pilot/", title: "Pilot" }]; 18 + const themes = [ 19 + { url: "themes/pilot/", title: "Pilot" }, 20 + { url: "themes/webamp/", title: "Webamp" }, 21 + ]; 19 22 20 23 // Abstractions 21 24 // TODO
+60 -4
src/pages/input/native-fs/_applet.astro
··· 1 + <main class="container"> 2 + <h1>Native File System Input</h1> 3 + <p>Add music from your device.</p> 4 + <div id="directories"> 5 + <p> 6 + <span class="with-icon"> 7 + <i class="iconoir-bonfire"></i> 8 + <small>Just a moment, loading mounted directories.</small> 9 + </span> 10 + </p> 11 + </div> 12 + <button id="mount">Mount directory</button> 13 + </main> 14 + 1 15 <script> 2 16 import * as IDB from "idb-keyval"; 3 17 4 18 import { applets } from "@web-applets/sdk"; 19 + import { computed, Signal, signal } from "spellcaster"; 20 + import { repeat, tags, text } from "spellcaster/hyperscript.js"; 5 21 import { type FileSystemDirectoryHandle, showDirectoryPicker } from "native-file-system-adapter"; 6 22 import * as URI from "uri-js"; 7 23 import QS from "query-string"; ··· 25 41 const context = applets.register(); 26 42 27 43 //////////////////////////////////////////// 44 + // UI 45 + //////////////////////////////////////////// 46 + const [mounts, setMounts] = signal(await fetchHandlesList()); 47 + 48 + // Mount button 49 + document.getElementById("mount")?.addEventListener("click", () => mount()); 50 + 51 + // Directories 52 + const dirList = computed(() => { 53 + return new Map( 54 + mounts().map((mount) => { 55 + return [mount.id, mount]; 56 + }), 57 + ); 58 + }); 59 + 60 + const Item = (signal: Signal<{ id: string; handle: FileSystemDirectoryHandle }>) => { 61 + const { id, handle } = signal(); 62 + 63 + return tags.li({}, [ 64 + tags.span( 65 + { onclick: () => unmount(id), style: "cursor: pointer;", title: "Click/tap to delete" }, 66 + text(handle.name), 67 + ), 68 + ]); 69 + }; 70 + 71 + const Directories = computed(() => { 72 + return tags.ul({ id: "directories" }, repeat(dirList, Item)); 73 + }); 74 + 75 + // Add to DOM 76 + document.getElementById("directories")?.replaceWith(Directories()); 77 + 78 + //////////////////////////////////////////// 28 79 // ACTIONS 29 80 //////////////////////////////////////////// 30 81 const isAvailable = async (fileUri: string) => { ··· 42 93 }; 43 94 44 95 const list = async (cachedTracks: Track[] = []) => { 45 - const handles = Object.entries(await fetchHandles()).map(([id, handle]) => { 46 - return { id, handle }; 47 - }); 48 - 96 + const handles = await fetchHandlesList(); 49 97 const processed: Track[][] = await Promise.all( 50 98 handles.map(({ id, handle }) => { 51 99 return recursiveList(handle, id, []); ··· 131 179 132 180 await handle.requestPermission({ mode: "read" }); 133 181 await IDB.set(IDB_HANDLES, { ...existingHandles, [id]: handle }); 182 + setMounts(await fetchHandlesList()); 134 183 }) 135 184 .catch(() => {}); 136 185 }; ··· 139 188 const handles = await fetchHandles(); 140 189 delete handles[handleId]; 141 190 await IDB.set(IDB_HANDLES, { ...handles }); 191 + setMounts(await fetchHandlesList()); 142 192 }; 143 193 144 194 context.setActionHandler("isAvailable", isAvailable); ··· 152 202 //////////////////////////////////////////// 153 203 async function fetchHandles(): Promise<Handles> { 154 204 return (await IDB.get(IDB_HANDLES)) ?? {}; 205 + } 206 + 207 + async function fetchHandlesList() { 208 + return Object.entries(await fetchHandles()).map(([id, handle]) => { 209 + return { id, handle }; 210 + }); 155 211 } 156 212 157 213 function trackCid(track: Track): string | undefined {
+1 -1
src/pages/input/native-fs/index.astro
··· 1 1 --- 2 - import Layout from "@layouts/applet.astro"; 2 + import Layout from "@layouts/applet-pico-ui.astro"; 3 3 import Applet from "./_applet.astro"; 4 4 import { title } from "./_manifest.json"; 5 5 ---
+1 -37
src/pages/orchestrator/output-management/_applet.astro
··· 2 2 <script> 3 3 import { applets } from "@web-applets/sdk"; 4 4 5 - import type { Output, Source, Track } from "@applets/core/types.d.ts"; 5 + import type { Output, Track } from "@applets/core/types.d.ts"; 6 6 import { applet } from "@scripts/theme"; 7 7 8 8 //////////////////////////////////////////// ··· 17 17 }; 18 18 19 19 // Sample content 20 - const SAMPLE_SOURCE = { 21 - id: crypto.randomUUID(), 22 - meta: {}, 23 - 24 - appletURI: "TODO", 25 - }; 26 - 27 20 const SAMPLE_TRACKS: Track[] = [ 28 21 { 29 22 id: crypto.randomUUID(), 30 - sourceId: SAMPLE_SOURCE.id, 31 23 uri: "https://archive.org/download/SUSPENSE_Radio_Digitally_Restored_Collection/%2040-07-22%20The%20Lodger%20%28audition%29%20%28Herbert%20Marshall%2C%20Alfred%20Hitchcock%2C%20Edmund%20Gwenn%29.mp3", 32 24 tags: { 33 25 title: "Yours Truly, Johnny Dollar", ··· 35 27 }, 36 28 { 37 29 id: crypto.randomUUID(), 38 - sourceId: SAMPLE_SOURCE.id, 39 30 uri: "https://archive.org/download/OTRR_Dimension_X_Singles/Dimension_X_1950-04-08__01_OuterLimit.mp3", 40 31 tags: { 41 32 title: "Dimension X", ··· 45 36 46 37 // Initial state 47 38 context.data = { 48 - sources: await loadSources(), 49 39 tracks: await loadTracks(), 50 40 }; 51 41 52 42 //////////////////////////////////////////// 53 43 // LOADERS 54 44 //////////////////////////////////////////// 55 - async function loadSources(): Promise<Source[]> { 56 - // TODO: This is not concurrency safe! 57 - await configurator.output.sendAction("get", { 58 - name: "sources.json", 59 - }); 60 - 61 - const data = configurator.output.data; 62 - 63 - if (!data) { 64 - saveSources([SAMPLE_SOURCE]); 65 - return [SAMPLE_SOURCE]; 66 - } 67 - 68 - return decode(data as Uint8Array); 69 - } 70 - 71 45 async function loadTracks(): Promise<Track[]> { 72 46 // TODO: This is not concurrency safe! 73 47 await configurator.output.sendAction("get", { ··· 88 62 // ACTIONS 89 63 //////////////////////////////////////////// 90 64 91 - // UPDATE SOURCES: addSource, removeSource → SAVE_SOURCES 92 65 // UPDATE TRACKS: addTracks → SAVE_TRACKS 93 - 94 - function saveSources(sources: Source[]) { 95 - const data = encode(sources); 96 - 97 - configurator.output.sendAction("put", { 98 - name: "sources.json", 99 - data, 100 - }); 101 - } 102 66 103 67 function saveTracks(tracks: Track[]) { 104 68 const data = encode(tracks);
+26
src/pages/themes/webamp/index.astro
··· 1 + <html lang="en"> 2 + <head> 3 + <meta charset="UTF-8" /> 4 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 5 + 6 + <title>Diffuse</title> 7 + </head> 8 + <body> 9 + <main> 10 + <div class="desktop"> 11 + <!-- INPUT --> 12 + <a href="/input/native-fs/" target="_blank" class="button desktop__item"> 13 + <img src="/images/icons/windows_98/directory_open_cool-0.png" width="32" /> 14 + <label>Manage input (music)</label> 15 + </a> 16 + 17 + <!-- OUTPUT --> 18 + <a href="/configurator/output/" target="_blank" class="button desktop__item"> 19 + <img src="/images/icons/windows_98/directory_open_file_mydocs_2k-2.png" width="32" /> 20 + <label>Manage output (data)</label> 21 + </a> 22 + </div> 23 + </main> 24 + <script src="../../../scripts/themes/webamp/index.js"></script> 25 + </body> 26 + </html>
+68
src/scripts/themes/webamp/index.ts
··· 1 + import Webamp from "webamp"; 2 + // import "98.css"; 3 + 4 + import type { Output, Track } from "@applets/core/types.d.ts"; 5 + import { applet } from "../../theme.ts"; 6 + 7 + //////////////////////////////////////////// 8 + // 🎨 Styles 9 + //////////////////////////////////////////// 10 + import "@styles/themes/webamp/index.css"; 11 + 12 + //////////////////////////////////////////// 13 + // 🗂️ Applets 14 + //////////////////////////////////////////// 15 + 16 + // const _configurator = { 17 + // output: await applet("../../configurator/output"), 18 + // }; 19 + 20 + const input = { 21 + nativeFs: await applet("../../input/native-fs"), 22 + }; 23 + 24 + const _orchestrator = { 25 + output: await applet<Output>("../../orchestrator/output-management"), 26 + }; 27 + 28 + //////////////////////////////////////////// 29 + // ⚡ 30 + //////////////////////////////////////////// 31 + const amp = new Webamp({ 32 + filePickers: [ 33 + { 34 + contextMenuName: "(applet) Mount directory", 35 + filePicker: async () => { 36 + try { 37 + await input.nativeFs.sendAction("mount"); 38 + } catch (_err) {} 39 + amp.setTracksToPlay(await listMountDirectories()); 40 + return []; 41 + }, 42 + requiresNetwork: false, 43 + }, 44 + ], 45 + 46 + // Tracks 47 + initialTracks: await listMountDirectories(), 48 + }); 49 + 50 + const ampNode = document.createElement("div"); 51 + ampNode.style = "height: 100vh; left: 0; position: absolute; top: 0; width: 100%; z-index: -1000;"; 52 + document.body.appendChild(ampNode); 53 + amp.renderWhenReady(ampNode); 54 + 55 + //////////////////////////////////////////// 56 + // 🛠️ 57 + //////////////////////////////////////////// 58 + 59 + async function listMountDirectories() { 60 + await input.nativeFs.sendAction("list"); 61 + const list = input.nativeFs.data as Track[]; 62 + 63 + return list.reduce(async (acc: Promise<Array<{ url: string }>>, track: Track) => { 64 + await input.nativeFs.sendAction("resolve", track.uri); 65 + const url = input.nativeFs.data as string; 66 + return [...(await acc), { url }]; 67 + }, Promise.resolve([])); 68 + }
-5
src/styles/applet.css
··· 1 - @import "./reset.css"; 2 - @import "./variables.css"; 3 - @import "./fonts.css"; 4 - @import "./icons.css"; 5 - @import "./pico.scss";
+5
src/styles/applets/common.css
··· 1 + .with-icon { 2 + align-items: center; 3 + display: inline-flex; 4 + gap: 0.75em; 5 + }
+70
src/styles/themes/webamp/index.css
··· 1 + @font-face { 2 + font-family: "Pixelated MS Sans Serif"; 3 + src: url("/node_modules/98.css/fonts/converted/ms_sans_serif.woff2") format("woff2"); 4 + font-weight: normal; 5 + font-style: normal; 6 + } 7 + 8 + @font-face { 9 + font-family: "Pixelated MS Sans Serif"; 10 + src: url("/node_modules/98.css/fonts/converted/ms_sans_serif_bold.woff2") format("woff2"); 11 + font-weight: 700; 12 + font-style: normal; 13 + } 14 + 15 + body { 16 + background: #3a6ea5; 17 + color: white; 18 + font-family: "Pixelated MS Sans Serif", sans-serif; 19 + font-size: 12px; 20 + margin: 12px; 21 + } 22 + 23 + main { 24 + } 25 + 26 + iframe { 27 + display: none; 28 + } 29 + 30 + /*********************************** 31 + * Desktop 32 + ***********************************/ 33 + .desktop { 34 + display: flex; 35 + flex-wrap: wrap; 36 + gap: 12px; 37 + } 38 + 39 + .desktop__item { 40 + align-items: center; 41 + background: transparent; 42 + border: 0; 43 + cursor: pointer; 44 + color: inherit; 45 + display: inline-flex; 46 + flex-direction: column; 47 + font-family: inherit; 48 + text-decoration: none; 49 + 50 + &:visited, 51 + &:active { 52 + color: inherit; 53 + text-decoration: none; 54 + } 55 + 56 + & > label { 57 + cursor: inherit; 58 + margin-top: 4px; 59 + } 60 + 61 + &:focus { 62 + border: 0; 63 + outline: 0; 64 + 65 + & label { 66 + outline: 1px dotted white; 67 + outline-offset: 2px; 68 + } 69 + } 70 + }