···
54
54
"npm:uri-js@^4.4.1",
55
55
"npm:vite-plugin-wasm@^3.4.1",
56
56
"npm:vite-tsconfig-paths@^5.1.4",
57
57
-
"npm:webamp@^1.5.0",
57
57
+
"npm:webamp@^2.1.2",
58
58
"npm:xxh32@^2.0.5"
59
59
]
60
60
}
···
29
29
"throttle-debounce": "^5.0.2",
30
30
"uint8arrays": "^5.1.0",
31
31
"uri-js": "^4.4.1",
32
32
-
"webamp": "^1.5.0",
32
32
+
"webamp": "^2.1.2",
33
33
"xxh32": "^2.0.5"
34
34
},
35
35
"devDependencies": {
···
1801
1801
"win32"
1802
1802
]
1803
1803
},
1804
1804
+
"node_modules/@sentry/browser": {
1805
1805
+
"version": "5.9.1",
1806
1806
+
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.9.1.tgz",
1807
1807
+
"integrity": "sha512-7AOabwp9yAH9h6Xe6TfDwlLxHbUSWs+SPWHI7bPlht2yDSAqkXYGSzRr5X0XQJX9oBQdx2cEPMqHyJrbNaP/og==",
1808
1808
+
"license": "BSD-3-Clause",
1809
1809
+
"dependencies": {
1810
1810
+
"@sentry/core": "5.8.0",
1811
1811
+
"@sentry/types": "5.7.1",
1812
1812
+
"@sentry/utils": "5.8.0",
1813
1813
+
"tslib": "^1.9.3"
1814
1814
+
},
1815
1815
+
"engines": {
1816
1816
+
"node": ">=6"
1817
1817
+
}
1818
1818
+
},
1819
1819
+
"node_modules/@sentry/browser/node_modules/tslib": {
1820
1820
+
"version": "1.14.1",
1821
1821
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1822
1822
+
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
1823
1823
+
"license": "0BSD"
1824
1824
+
},
1825
1825
+
"node_modules/@sentry/core": {
1826
1826
+
"version": "5.8.0",
1827
1827
+
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.8.0.tgz",
1828
1828
+
"integrity": "sha512-aAh2KLidIXJVGrxmHSVq2eVKbu7tZiYn5ylW6yzJXFetS5z4MA+JYaSBaG2inVYDEEqqMIkb17TyWxxziUDieg==",
1829
1829
+
"license": "BSD-3-Clause",
1830
1830
+
"dependencies": {
1831
1831
+
"@sentry/hub": "5.8.0",
1832
1832
+
"@sentry/minimal": "5.8.0",
1833
1833
+
"@sentry/types": "5.7.1",
1834
1834
+
"@sentry/utils": "5.8.0",
1835
1835
+
"tslib": "^1.9.3"
1836
1836
+
},
1837
1837
+
"engines": {
1838
1838
+
"node": ">=6"
1839
1839
+
}
1840
1840
+
},
1841
1841
+
"node_modules/@sentry/core/node_modules/tslib": {
1842
1842
+
"version": "1.14.1",
1843
1843
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1844
1844
+
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
1845
1845
+
"license": "0BSD"
1846
1846
+
},
1847
1847
+
"node_modules/@sentry/hub": {
1848
1848
+
"version": "5.8.0",
1849
1849
+
"resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.8.0.tgz",
1850
1850
+
"integrity": "sha512-VdApn1ZCNwH1wwQwoO6pu53PM/qgHG+DQege0hbByluImpLBhAj9w50nXnF/8KzV4UoMIVbzCb6jXzMRmqqp9A==",
1851
1851
+
"license": "BSD-3-Clause",
1852
1852
+
"dependencies": {
1853
1853
+
"@sentry/types": "5.7.1",
1854
1854
+
"@sentry/utils": "5.8.0",
1855
1855
+
"tslib": "^1.9.3"
1856
1856
+
},
1857
1857
+
"engines": {
1858
1858
+
"node": ">=6"
1859
1859
+
}
1860
1860
+
},
1861
1861
+
"node_modules/@sentry/hub/node_modules/tslib": {
1862
1862
+
"version": "1.14.1",
1863
1863
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1864
1864
+
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
1865
1865
+
"license": "0BSD"
1866
1866
+
},
1867
1867
+
"node_modules/@sentry/minimal": {
1868
1868
+
"version": "5.8.0",
1869
1869
+
"resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.8.0.tgz",
1870
1870
+
"integrity": "sha512-MIlFOgd+JvAUrBBmq7vr9ovRH1HvckhnwzHdoUPpKRBN+rQgTyZy1o6+kA2fASCbrRqFCP+Zk7EHMACKg8DpIw==",
1871
1871
+
"license": "BSD-3-Clause",
1872
1872
+
"dependencies": {
1873
1873
+
"@sentry/hub": "5.8.0",
1874
1874
+
"@sentry/types": "5.7.1",
1875
1875
+
"tslib": "^1.9.3"
1876
1876
+
},
1877
1877
+
"engines": {
1878
1878
+
"node": ">=6"
1879
1879
+
}
1880
1880
+
},
1881
1881
+
"node_modules/@sentry/minimal/node_modules/tslib": {
1882
1882
+
"version": "1.14.1",
1883
1883
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1884
1884
+
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
1885
1885
+
"license": "0BSD"
1886
1886
+
},
1887
1887
+
"node_modules/@sentry/types": {
1888
1888
+
"version": "5.7.1",
1889
1889
+
"resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.7.1.tgz",
1890
1890
+
"integrity": "sha512-tbUnTYlSliXvnou5D4C8Zr+7/wJrHLbpYX1YkLXuIJRU0NSi81bHMroAuHWILcQKWhVjaV/HZzr7Y/hhWtbXVQ==",
1891
1891
+
"license": "BSD-3-Clause",
1892
1892
+
"engines": {
1893
1893
+
"node": ">=6"
1894
1894
+
}
1895
1895
+
},
1896
1896
+
"node_modules/@sentry/utils": {
1897
1897
+
"version": "5.8.0",
1898
1898
+
"resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.8.0.tgz",
1899
1899
+
"integrity": "sha512-KDxUvBSYi0/dHMdunbxAxD3389pcQioLtcO6CI6zt/nJXeVFolix66cRraeQvqupdLhvOk/el649W4fCPayTHw==",
1900
1900
+
"license": "BSD-3-Clause",
1901
1901
+
"dependencies": {
1902
1902
+
"@sentry/types": "5.7.1",
1903
1903
+
"tslib": "^1.9.3"
1904
1904
+
},
1905
1905
+
"engines": {
1906
1906
+
"node": ">=6"
1907
1907
+
}
1908
1908
+
},
1909
1909
+
"node_modules/@sentry/utils/node_modules/tslib": {
1910
1910
+
"version": "1.14.1",
1911
1911
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
1912
1912
+
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
1913
1913
+
"license": "0BSD"
1914
1914
+
},
1804
1915
"node_modules/@shikijs/core": {
1805
1916
"version": "3.7.0",
1806
1917
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.7.0.tgz",
···
2065
2176
"undici-types": "~7.8.0"
2066
2177
}
2067
2178
},
2179
2179
+
"node_modules/@types/prop-types": {
2180
2180
+
"version": "15.7.15",
2181
2181
+
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz",
2182
2182
+
"integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==",
2183
2183
+
"license": "MIT"
2184
2184
+
},
2068
2185
"node_modules/@types/react": {
2069
2069
-
"version": "19.1.8",
2070
2070
-
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz",
2071
2071
-
"integrity": "sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==",
2186
2186
+
"version": "18.3.23",
2187
2187
+
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz",
2188
2188
+
"integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==",
2072
2189
"license": "MIT",
2073
2190
"dependencies": {
2191
2191
+
"@types/prop-types": "*",
2074
2192
"csstype": "^3.0.2"
2075
2193
}
2076
2194
},
2077
2077
-
"node_modules/@types/react-redux": {
2078
2078
-
"version": "7.1.34",
2079
2079
-
"resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz",
2080
2080
-
"integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==",
2081
2081
-
"license": "MIT",
2082
2082
-
"dependencies": {
2083
2083
-
"@types/hoist-non-react-statics": "^3.3.0",
2084
2084
-
"@types/react": "*",
2085
2085
-
"hoist-non-react-statics": "^3.3.0",
2086
2086
-
"redux": "^4.0.0"
2087
2087
-
}
2088
2088
-
},
2089
2195
"node_modules/@types/throttle-debounce": {
2090
2196
"version": "5.0.2",
2091
2197
"resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
···
2098
2204
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
2099
2205
"integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
2100
2206
"dev": true,
2207
2207
+
"license": "MIT"
2208
2208
+
},
2209
2209
+
"node_modules/@types/use-sync-external-store": {
2210
2210
+
"version": "0.0.3",
2211
2211
+
"resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
2212
2212
+
"integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==",
2101
2213
"license": "MIT"
2102
2214
},
2103
2215
"node_modules/@types/wicg-file-system-access": {
···
20155
20267
"node": ">=0.10.0"
20156
20268
}
20157
20269
},
20158
20158
-
"node_modules/object-assign": {
20159
20159
-
"version": "4.1.1",
20160
20160
-
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
20161
20161
-
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
20162
20162
-
"license": "MIT",
20163
20163
-
"engines": {
20164
20164
-
"node": ">=0.10.0"
20165
20165
-
}
20166
20166
-
},
20167
20270
"node_modules/object-keys": {
20168
20271
"version": "1.1.1",
20169
20272
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
···
20473
20576
"node": ">=6"
20474
20577
}
20475
20578
},
20476
20476
-
"node_modules/prop-types": {
20477
20477
-
"version": "15.8.1",
20478
20478
-
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
20479
20479
-
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
20480
20480
-
"license": "MIT",
20481
20481
-
"dependencies": {
20482
20482
-
"loose-envify": "^1.4.0",
20483
20483
-
"object-assign": "^4.1.1",
20484
20484
-
"react-is": "^16.13.1"
20485
20485
-
}
20486
20486
-
},
20487
20487
-
"node_modules/prop-types/node_modules/react-is": {
20488
20488
-
"version": "16.13.1",
20489
20489
-
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
20490
20490
-
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
20491
20491
-
"license": "MIT"
20492
20492
-
},
20493
20579
"node_modules/property-information": {
20494
20580
"version": "7.1.0",
20495
20581
"resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
···
20551
20637
"license": "MIT"
20552
20638
},
20553
20639
"node_modules/react": {
20554
20554
-
"version": "17.0.2",
20555
20555
-
"resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
20556
20556
-
"integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
20640
20640
+
"version": "18.3.1",
20641
20641
+
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
20642
20642
+
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
20557
20643
"license": "MIT",
20644
20644
+
"peer": true,
20558
20645
"dependencies": {
20559
20559
-
"loose-envify": "^1.1.0",
20560
20560
-
"object-assign": "^4.1.1"
20646
20646
+
"loose-envify": "^1.1.0"
20561
20647
},
20562
20648
"engines": {
20563
20649
"node": ">=0.10.0"
20564
20650
}
20565
20651
},
20566
20652
"node_modules/react-dom": {
20567
20567
-
"version": "17.0.2",
20568
20568
-
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
20569
20569
-
"integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
20653
20653
+
"version": "18.3.1",
20654
20654
+
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
20655
20655
+
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
20570
20656
"license": "MIT",
20657
20657
+
"optional": true,
20658
20658
+
"peer": true,
20571
20659
"dependencies": {
20572
20660
"loose-envify": "^1.1.0",
20573
20573
-
"object-assign": "^4.1.1",
20574
20574
-
"scheduler": "^0.20.2"
20661
20661
+
"scheduler": "^0.23.2"
20575
20662
},
20576
20663
"peerDependencies": {
20577
20577
-
"react": "17.0.2"
20664
20664
+
"react": "^18.3.1"
20578
20665
}
20579
20666
},
20580
20667
"node_modules/react-is": {
20581
20581
-
"version": "17.0.2",
20582
20582
-
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
20583
20583
-
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
20668
20668
+
"version": "18.3.1",
20669
20669
+
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
20670
20670
+
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
20584
20671
"license": "MIT"
20585
20672
},
20586
20673
"node_modules/react-redux": {
20587
20587
-
"version": "7.2.9",
20588
20588
-
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz",
20589
20589
-
"integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==",
20674
20674
+
"version": "8.1.3",
20675
20675
+
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.1.3.tgz",
20676
20676
+
"integrity": "sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==",
20590
20677
"license": "MIT",
20591
20678
"dependencies": {
20592
20592
-
"@babel/runtime": "^7.15.4",
20593
20593
-
"@types/react-redux": "^7.1.20",
20679
20679
+
"@babel/runtime": "^7.12.1",
20680
20680
+
"@types/hoist-non-react-statics": "^3.3.1",
20681
20681
+
"@types/use-sync-external-store": "^0.0.3",
20594
20682
"hoist-non-react-statics": "^3.3.2",
20595
20595
-
"loose-envify": "^1.4.0",
20596
20596
-
"prop-types": "^15.7.2",
20597
20597
-
"react-is": "^17.0.2"
20683
20683
+
"react-is": "^18.0.0",
20684
20684
+
"use-sync-external-store": "^1.0.0"
20598
20685
},
20599
20686
"peerDependencies": {
20600
20600
-
"react": "^16.8.3 || ^17 || ^18"
20687
20687
+
"@types/react": "^16.8 || ^17.0 || ^18.0",
20688
20688
+
"@types/react-dom": "^16.8 || ^17.0 || ^18.0",
20689
20689
+
"react": "^16.8 || ^17.0 || ^18.0",
20690
20690
+
"react-dom": "^16.8 || ^17.0 || ^18.0",
20691
20691
+
"react-native": ">=0.59",
20692
20692
+
"redux": "^4 || ^5.0.0-beta.0"
20601
20693
},
20602
20694
"peerDependenciesMeta": {
20695
20695
+
"@types/react": {
20696
20696
+
"optional": true
20697
20697
+
},
20698
20698
+
"@types/react-dom": {
20699
20699
+
"optional": true
20700
20700
+
},
20603
20701
"react-dom": {
20604
20702
"optional": true
20605
20703
},
20606
20704
"react-native": {
20705
20705
+
"optional": true
20706
20706
+
},
20707
20707
+
"redux": {
20607
20708
"optional": true
20608
20709
}
20609
20710
}
···
20642
20743
"resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz",
20643
20744
"integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==",
20644
20745
"license": "MIT",
20746
20746
+
"peer": true,
20645
20747
"dependencies": {
20646
20748
"@babel/runtime": "^7.9.2"
20647
20749
}
20648
20750
},
20751
20751
+
"node_modules/redux-devtools-extension": {
20752
20752
+
"version": "2.13.9",
20753
20753
+
"resolved": "https://registry.npmjs.org/redux-devtools-extension/-/redux-devtools-extension-2.13.9.tgz",
20754
20754
+
"integrity": "sha512-cNJ8Q/EtjhQaZ71c8I9+BPySIBVEKssbPpskBfsXqb8HJ002A3KRVHfeRzwRo6mGPqsm7XuHTqNSNeS1Khig0A==",
20755
20755
+
"deprecated": "Package moved to @redux-devtools/extension.",
20756
20756
+
"license": "MIT",
20757
20757
+
"peerDependencies": {
20758
20758
+
"redux": "^3.1.0 || ^4.0.0"
20759
20759
+
}
20760
20760
+
},
20761
20761
+
"node_modules/redux-sentry-middleware": {
20762
20762
+
"version": "0.1.8",
20763
20763
+
"resolved": "https://registry.npmjs.org/redux-sentry-middleware/-/redux-sentry-middleware-0.1.8.tgz",
20764
20764
+
"integrity": "sha512-xubpYH9RgE31tZUESeRW5agwQa19Yd6Gy+4iO09raW/2TITPO5fhJdXpVwJfpGMbIYhEmHFqE2wD5Lnz7YtAeA==",
20765
20765
+
"license": "MIT"
20766
20766
+
},
20767
20767
+
"node_modules/redux-thunk": {
20768
20768
+
"version": "2.4.2",
20769
20769
+
"resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz",
20770
20770
+
"integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==",
20771
20771
+
"license": "MIT",
20772
20772
+
"peerDependencies": {
20773
20773
+
"redux": "^4"
20774
20774
+
}
20775
20775
+
},
20649
20776
"node_modules/regenerator-runtime": {
20650
20777
"version": "0.11.1",
20651
20778
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
···
20997
21124
}
20998
21125
},
20999
21126
"node_modules/scheduler": {
21000
21000
-
"version": "0.20.2",
21001
21001
-
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
21002
21002
-
"integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
21127
21127
+
"version": "0.23.2",
21128
21128
+
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
21129
21129
+
"integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
21003
21130
"license": "MIT",
21131
21131
+
"optional": true,
21132
21132
+
"peer": true,
21004
21133
"dependencies": {
21005
21005
-
"loose-envify": "^1.1.0",
21006
21006
-
"object-assign": "^4.1.1"
21134
21134
+
"loose-envify": "^1.1.0"
21007
21135
}
21008
21136
},
21009
21137
"node_modules/semver": {
···
21927
22055
"punycode": "^2.1.0"
21928
22056
}
21929
22057
},
22058
22058
+
"node_modules/use-sync-external-store": {
22059
22059
+
"version": "1.5.0",
22060
22060
+
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz",
22061
22061
+
"integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==",
22062
22062
+
"license": "MIT",
22063
22063
+
"peerDependencies": {
22064
22064
+
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
22065
22065
+
}
22066
22066
+
},
21930
22067
"node_modules/utf8-buffer": {
21931
22068
"version": "1.0.0",
21932
22069
"resolved": "https://registry.npmjs.org/utf8-buffer/-/utf8-buffer-1.0.0.tgz",
···
22151
22288
}
22152
22289
},
22153
22290
"node_modules/webamp": {
22154
22154
-
"version": "1.5.0",
22155
22155
-
"resolved": "https://registry.npmjs.org/webamp/-/webamp-1.5.0.tgz",
22156
22156
-
"integrity": "sha512-Rz2L90pUqg6Y/1jbtniS8RCuDD8TMwfjqv6D/4T93UfvGPGvfQR00LE/rfaHRfG6FgQfiOul7RyPXvCaEikCxg==",
22291
22291
+
"version": "2.1.2",
22292
22292
+
"resolved": "https://registry.npmjs.org/webamp/-/webamp-2.1.2.tgz",
22293
22293
+
"integrity": "sha512-WbxvG+hQ1eo5d1oLHHw6ncu87ZKj6T5BBFr0vdgUFTDKJI1kuNa4vvIzGDQAJuAPN1zRrhaq/PvX7/Hz82VR+g==",
22157
22294
"license": "MIT",
22158
22295
"dependencies": {
22296
22296
+
"@sentry/browser": "5.9.1",
22159
22297
"ani-cursor": "^0.0.4",
22160
22298
"butterchurn": "^3.0.0-beta.3",
22161
22299
"butterchurn-presets": "3.0.0-beta.4",
22162
22300
"classnames": "^2.2.5",
22163
22301
"fscreen": "^1.0.2",
22164
22302
"invariant": "^2.2.3",
22165
22165
-
"jszip": "^3.1.3",
22303
22303
+
"jszip": "^3.10.1",
22166
22304
"lodash": "^4.17.21",
22167
22305
"milkdrop-preset-converter-aws": "^0.1.6",
22168
22306
"music-metadata-browser": "^0.6.1",
22169
22169
-
"react": "^17.0.1",
22170
22170
-
"react-dom": "^17.0.1",
22171
22171
-
"react-redux": "^7.2.2",
22172
22172
-
"redux": "^4.0.5",
22307
22307
+
"react": "^19.1.0",
22308
22308
+
"react-dom": "^19.1.0",
22309
22309
+
"react-redux": "^8.0.5",
22310
22310
+
"redux": "^5.0.0-alpha.0",
22311
22311
+
"redux-devtools-extension": "^2.13.9",
22312
22312
+
"redux-sentry-middleware": "^0.1.3",
22313
22313
+
"redux-thunk": "^2.4.0",
22173
22314
"reselect": "^3.0.1",
22174
22315
"tinyqueue": "^1.2.3",
22175
22316
"winamp-eqf": "^1.0.0"
22176
22317
}
22318
22318
+
},
22319
22319
+
"node_modules/webamp/node_modules/react": {
22320
22320
+
"version": "19.1.0",
22321
22321
+
"resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
22322
22322
+
"integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
22323
22323
+
"license": "MIT",
22324
22324
+
"engines": {
22325
22325
+
"node": ">=0.10.0"
22326
22326
+
}
22327
22327
+
},
22328
22328
+
"node_modules/webamp/node_modules/react-dom": {
22329
22329
+
"version": "19.1.0",
22330
22330
+
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
22331
22331
+
"integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
22332
22332
+
"license": "MIT",
22333
22333
+
"dependencies": {
22334
22334
+
"scheduler": "^0.26.0"
22335
22335
+
},
22336
22336
+
"peerDependencies": {
22337
22337
+
"react": "^19.1.0"
22338
22338
+
}
22339
22339
+
},
22340
22340
+
"node_modules/webamp/node_modules/redux": {
22341
22341
+
"version": "5.0.1",
22342
22342
+
"resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
22343
22343
+
"integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
22344
22344
+
"license": "MIT"
22345
22345
+
},
22346
22346
+
"node_modules/webamp/node_modules/scheduler": {
22347
22347
+
"version": "0.26.0",
22348
22348
+
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
22349
22349
+
"integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
22350
22350
+
"license": "MIT"
22177
22351
},
22178
22352
"node_modules/webidl-conversions": {
22179
22353
"version": "3.0.1",
···
24
24
"throttle-debounce": "^5.0.2",
25
25
"uint8arrays": "^5.1.0",
26
26
"uri-js": "^4.4.1",
27
27
-
"webamp": "^1.5.0",
27
27
+
"webamp": "^2.1.2",
28
28
"xxh32": "^2.0.5"
29
29
},
30
30
"devDependencies": {
···
1
1
import type { Track } from "@applets/core/types.js";
2
2
-
import { expose } from "../../../scripts/common.ts";
3
2
import type { State } from "./types";
4
4
-
5
5
-
self.addEventListener("message", (event) => {
6
6
-
console.log("QUEUE", event.data);
7
7
-
});
3
3
+
import { expose } from "@scripts/common.ts";
8
4
9
5
////////////////////////////////////////////
10
6
// ACTIONS
···
2
2
import Webamp from "webamp";
3
3
4
4
import type { ManagedOutput, ResolvedUri, Track } from "@applets/core/types.d.ts";
5
5
-
import { applet, wait } from "@scripts/applet/common";
5
5
+
import { applet, inputUrl, wait } from "@scripts/applet/common";
6
6
7
7
////////////////////////////////////////////
8
8
// 🗂️ Applets
···
23
23
initialTracks: [],
24
24
});
25
25
26
26
+
// Override
27
27
+
const loadFromUrl = amp.media.loadFromUrl.bind(amp.media);
28
28
+
29
29
+
async function loadOverride(uri: string, autoPlay: boolean) {
30
30
+
const resp = await inputUrl(configurator.input, uri);
31
31
+
if (!resp) throw new Error("Failed to resolve URI");
32
32
+
return await loadFromUrl(resp.url, autoPlay);
33
33
+
}
34
34
+
35
35
+
amp.media.loadFromUrl = loadOverride.bind(amp.media);
36
36
+
37
37
+
// Render
26
38
const ampNode = document.createElement("div");
27
39
ampNode.style = "height: 100vh; left: 0; position: absolute; top: 0; width: 100%; z-index: -1000;";
28
40
document.body.appendChild(ampNode);
29
41
amp.renderWhenReady(ampNode);
30
42
43
43
+
// Wait for tracks to load
31
44
wait(configurator.output, (d) => d?.tracks.state === "loaded").then(loadAndInsert);
32
45
configurator.output.ondata = loadAndInsert;
33
46
47
47
+
// Load & insert
34
48
let inserting = false;
35
49
36
50
async function loadAndInsert() {
···
38
52
if (inserting) return;
39
53
inserting = true;
40
54
const tracks = await loadTracks();
55
55
+
// TODO: Webamp shouldn't stop playing the active track whenever the playlist changes.
41
56
amp.setTracksToPlay([]);
42
42
-
amp.appendTracks(tracks);
57
57
+
// TODO: Webamp blows up if you add too much tracks
58
58
+
amp.appendTracks(tracks.slice(0, 1000));
43
59
amp.nextTrack();
44
60
inserting = false;
45
61
}
···
48
64
// 🛠️
49
65
////////////////////////////////////////////
50
66
async function loadTracks(): Promise<URLTrack[]> {
51
51
-
return await configurator.output.data.tracks.collection.reduce(
52
52
-
async (promise: Promise<URLTrack[]>, track: Track) => {
53
53
-
const acc = await promise;
67
67
+
const tracks = configurator.output.data.tracks.collection;
68
68
+
return tracks.map((track) => {
69
69
+
const urlTrack: URLTrack = {
70
70
+
url: track.uri,
71
71
+
metaData: {
72
72
+
title: track.tags?.title || "",
73
73
+
artist: track.tags?.artist || "",
74
74
+
album: track.tags?.album,
75
75
+
},
76
76
+
duration: track.stats?.duration,
77
77
+
};
54
78
55
55
-
// TODO: Ideally the URL should only be resolved when needed,
56
56
-
// but webamp doesn't allow for that.
57
57
-
// Maybe you could work around it with a service worker.
58
58
-
const resGet = await configurator.input.sendAction<ResolvedUri>(
59
59
-
"resolve",
60
60
-
{ method: "GET", uri: track.uri },
61
61
-
{
62
62
-
timeoutDuration: 60000 * 5,
63
63
-
},
64
64
-
);
65
65
-
66
66
-
if (!resGet) return acc;
67
67
-
68
68
-
const urlTrack: URLTrack = {
69
69
-
url: resGet.url,
70
70
-
metaData: {
71
71
-
title: track.tags?.title || "",
72
72
-
artist: track.tags?.artist || "",
73
73
-
album: track.tags?.album,
74
74
-
},
75
75
-
duration: track.stats?.duration,
76
76
-
};
77
77
-
78
78
-
return [...acc, urlTrack];
79
79
-
},
80
80
-
Promise.resolve([]),
81
81
-
);
79
79
+
return urlTrack;
80
80
+
});
82
81
}