+1
.gitignore
+1
.gitignore
+3
CHANGELOG.md
+3
CHANGELOG.md
···
2
3
## 3.4.0
4
5
- **Removed native builds.** I no longer want to maintain native builds for Diffuse. I personally use it straight in the browser or install it as a PWA. Alternatively, there's software like [Multi](https://github.com/kofigumbs/multi) that allow you to package web applications into native apps. There are icons in the [src](/src/Static/Images) folder that you can use as the app icon.
6
- Adjusted search behaviour, now searches while typing (with a small delay).
7
- Allows you to make playlists public when using Fission/ODD SDK.
8
- Fixes issue with Safari where reloading after a search caused the loader to be shown indefinitely.
9
- Fixes syncing issues with Fission/ODD SDK (was called Webnative before)
10
- Made the project easier to build.
11
- Removes support for older browsers.
12
13
···
2
3
## 3.4.0
4
5
+
- **Improved audio metadata parsing**. Now uses [mediainfo.js](https://github.com/buzz/mediainfo.js).
6
- **Removed native builds.** I no longer want to maintain native builds for Diffuse. I personally use it straight in the browser or install it as a PWA. Alternatively, there's software like [Multi](https://github.com/kofigumbs/multi) that allow you to package web applications into native apps. There are icons in the [src](/src/Static/Images) folder that you can use as the app icon.
7
- Adjusted search behaviour, now searches while typing (with a small delay).
8
- Allows you to make playlists public when using Fission/ODD SDK.
9
- Fixes issue with Safari where reloading after a search caused the loader to be shown indefinitely.
10
+
- Fixes some issues with cover grouping.
11
- Fixes syncing issues with Fission/ODD SDK (was called Webnative before)
12
- Made the project easier to build.
13
+
- Reduced unnecessary error messages.
14
- Removes support for older browsers.
15
16
+11
-5
Justfile
+11
-5
Justfile
···
6
SRC_DIR := "./src"
7
SYSTEM_DIR := "./system"
8
9
-
ESBUILD := NPM_DIR + "/.bin/esbuild --target=esnext --format=esm --bundle"
10
11
12
default: dev
···
15
# Tasks
16
# =====
17
18
-
@build: clean css elm js system license
19
echo "> Build completed ⚡"
20
21
22
-
@build-prod: quality clean (css "minify") elm-prod js-prod system license
23
echo "> Production build completed 🛳"
24
25
···
41
echo "> Cleaning build directory"
42
rm -rf {{BUILD_DIR}} || true
43
mkdir -p {{BUILD_DIR}}
44
45
46
@css minify="false":
···
174
175
176
@elm-housekeeping:
177
echo "> Running elm-review"
178
{{NPM_DIR}}/.bin/elm-review {{SRC_DIR}} --config system/Review --fix-all
179
-
echo "> Running elm-format"
180
-
elm-format {{SRC_DIR}} --yes
181
182
183
@quality: check-versions
···
6
SRC_DIR := "./src"
7
SYSTEM_DIR := "./system"
8
9
+
ESBUILD := "node system/Js/esbuild.mjs"
10
11
12
default: dev
···
15
# Tasks
16
# =====
17
18
+
@build: clean css elm copy-wasm js system license
19
echo "> Build completed ⚡"
20
21
22
+
@build-prod: quality clean (css "minify") elm-prod copy-wasm js-prod system license
23
echo "> Production build completed 🛳"
24
25
···
41
echo "> Cleaning build directory"
42
rm -rf {{BUILD_DIR}} || true
43
mkdir -p {{BUILD_DIR}}
44
+
45
+
46
+
@copy-wasm:
47
+
echo "> Copying WASM files"
48
+
mkdir -p {{BUILD_DIR}}/wasm
49
+
cp {{NPM_DIR}}/mediainfo.js/dist/MediaInfoModule.wasm {{BUILD_DIR}}/wasm/media-info.wasm
50
51
52
@css minify="false":
···
180
181
182
@elm-housekeeping:
183
+
echo "> Running elm-format"
184
+
{{NPM_DIR}}/.bin/elm-format {{SRC_DIR}} --yes
185
echo "> Running elm-review"
186
{{NPM_DIR}}/.bin/elm-review {{SRC_DIR}} --config system/Review --fix-all
187
188
189
@quality: check-versions
+1250
-693
package-lock.json
+1250
-693
package-lock.json
···
18
"load-script2": "^2.0.5",
19
"localforage": "^1.10.0",
20
"lunr": "^2.3.8",
21
"music-metadata-browser": "^2.5.10",
22
-
"readable-stream": "^4.4.2",
23
"remotestoragejs": "^2.0.0-beta.6",
24
"serve": "^14.2.1",
25
"throttle-debounce": "^5.0.0",
26
"timer.js": "^1.0.4",
27
"tocca": "^2.0.9",
28
-
"uint8arrays": "^4.0.6"
29
},
30
"devDependencies": {
31
-
"@typescript-eslint/eslint-plugin": "^6.2.1",
32
-
"@typescript-eslint/parser": "^6.2.1",
33
-
"assert": "^2.0.0",
34
-
"autoprefixer": "^10.4.14",
35
"buffer": "^6.0.3",
36
"elm": "0.19.1-6",
37
-
"elm-review": "^2.10.2",
38
-
"esbuild": "^0.18.18",
39
-
"eslint": "^8.46.0",
40
"events": "^3.3.0",
41
"gren-lang": "^0.3.0",
42
"just-install": "^2.0.1",
43
-
"postcss": "^8.4.27",
44
-
"postcss-custom-properties": "^13.3.0",
45
-
"postcss-import": "^15.1.0",
46
"stream": "^0.0.2",
47
-
"tailwindcss": "^3.3.3",
48
"tailwindcss-animations": "^2.0.0",
49
-
"tailwindcss-interaction-variants": "^5.0.0"
50
}
51
},
52
"node_modules/@aashutoshrathi/word-wrap": {
···
70
"url": "https://github.com/sponsors/sindresorhus"
71
}
72
},
73
"node_modules/@chainsafe/is-ip": {
74
"version": "2.0.1",
75
"resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.1.tgz",
···
84
}
85
},
86
"node_modules/@csstools/cascade-layer-name-parser": {
87
-
"version": "1.0.4",
88
-
"resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.4.tgz",
89
-
"integrity": "sha512-zXMGsJetbLoXe+gjEES07MEGjL0Uy3hMxmnGtVBrRpVKr5KV9OgCB09zr/vLrsEtoVQTgJFewxaU8IYSAE4tjg==",
90
"dev": true,
91
"funding": [
92
{
···
102
"node": "^14 || ^16 || >=18"
103
},
104
"peerDependencies": {
105
-
"@csstools/css-parser-algorithms": "^2.3.1",
106
-
"@csstools/css-tokenizer": "^2.2.0"
107
}
108
},
109
"node_modules/@csstools/css-parser-algorithms": {
110
-
"version": "2.3.1",
111
-
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz",
112
-
"integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==",
113
"dev": true,
114
"funding": [
115
{
···
125
"node": "^14 || ^16 || >=18"
126
},
127
"peerDependencies": {
128
-
"@csstools/css-tokenizer": "^2.2.0"
129
}
130
},
131
"node_modules/@csstools/css-tokenizer": {
132
-
"version": "2.2.0",
133
-
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz",
134
-
"integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==",
135
"dev": true,
136
"funding": [
137
{
···
199
"win32"
200
]
201
},
202
"node_modules/@esbuild/android-arm": {
203
-
"version": "0.18.18",
204
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.18.tgz",
205
-
"integrity": "sha512-oBymf7ZwplAawSxmiSlBCf+FMcY0f4bs5QP2jn43JKUf0M9DnrUTjqa5RvFPl1elw+sMfcpfBRPK+rb+E1q7zg==",
206
"cpu": [
207
"arm"
208
],
···
216
}
217
},
218
"node_modules/@esbuild/android-arm64": {
219
-
"version": "0.18.18",
220
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.18.tgz",
221
-
"integrity": "sha512-dkAPYzRHq3dNXIzOyAknYOzsx8o3KWaNiuu56B2rP9IFPmFWMS58WQcTlUQi6iloku8ZyHHMluCe5sTWhKq/Yw==",
222
"cpu": [
223
"arm64"
224
],
···
232
}
233
},
234
"node_modules/@esbuild/android-x64": {
235
-
"version": "0.18.18",
236
-
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.18.tgz",
237
-
"integrity": "sha512-r7/pVcrUQMYkjvtE/1/n6BxhWM+/9tvLxDG1ev1ce4z3YsqoxMK9bbOM6bFcj0BowMeGQvOZWcBV182lFFKmrw==",
238
"cpu": [
239
"x64"
240
],
···
248
}
249
},
250
"node_modules/@esbuild/darwin-arm64": {
251
-
"version": "0.18.18",
252
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.18.tgz",
253
-
"integrity": "sha512-MSe2iV9MAH3wfP0g+vzN9bp36rtPPuCSk+bT5E2vv/d8krvW5uB/Pi/Q5+txUZuxsG3GcO8dhygjnFq0wJU9hQ==",
254
"cpu": [
255
"arm64"
256
],
···
264
}
265
},
266
"node_modules/@esbuild/darwin-x64": {
267
-
"version": "0.18.18",
268
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.18.tgz",
269
-
"integrity": "sha512-ARFYISOWkaifjcr48YtO70gcDNeOf1H2RnmOj6ip3xHIj66f3dAbhcd5Nph5np6oHI7DhHIcr9MWO18RvUL1bw==",
270
"cpu": [
271
"x64"
272
],
···
280
}
281
},
282
"node_modules/@esbuild/freebsd-arm64": {
283
-
"version": "0.18.18",
284
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.18.tgz",
285
-
"integrity": "sha512-BHnXmexzEWRU2ZySJosU0Ts0NRnJnNrMB6t4EiIaOSel73I8iLsNiTPLH0rJulAh19cYZutsB5XHK6N8fi5eMg==",
286
"cpu": [
287
"arm64"
288
],
···
296
}
297
},
298
"node_modules/@esbuild/freebsd-x64": {
299
-
"version": "0.18.18",
300
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.18.tgz",
301
-
"integrity": "sha512-n823w35wm0ZOobbuE//0sJjuz1Qj619+AwjgOcAJMN2pomZhH9BONCtn+KlfrmM/NWZ+27yB/eGVFzUIWLeh3w==",
302
"cpu": [
303
"x64"
304
],
···
312
}
313
},
314
"node_modules/@esbuild/linux-arm": {
315
-
"version": "0.18.18",
316
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.18.tgz",
317
-
"integrity": "sha512-Kck3jxPLQU4VeAGwe8Q4NU+IWIx+suULYOFUI9T0C2J1+UQlOHJ08ITN+MaJJ+2youzJOmKmcphH/t3SJxQ1Tw==",
318
"cpu": [
319
"arm"
320
],
···
328
}
329
},
330
"node_modules/@esbuild/linux-arm64": {
331
-
"version": "0.18.18",
332
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.18.tgz",
333
-
"integrity": "sha512-zANxnwF0sCinDcAqoMohGoWBK9QaFJ65Vgh0ZE+RXtURaMwx+RfmfLElqtnn7X8OYNckMoIXSg7u+tZ3tqTlrA==",
334
"cpu": [
335
"arm64"
336
],
···
344
}
345
},
346
"node_modules/@esbuild/linux-ia32": {
347
-
"version": "0.18.18",
348
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.18.tgz",
349
-
"integrity": "sha512-+VHz2sIRlY5u8IlaLJpdf5TL2kM76yx186pW7bpTB+vLWpzcFQVP04L842ZB2Ty13A1VXUvy3DbU1jV65P2skg==",
350
"cpu": [
351
"ia32"
352
],
···
360
}
361
},
362
"node_modules/@esbuild/linux-loong64": {
363
-
"version": "0.18.18",
364
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.18.tgz",
365
-
"integrity": "sha512-fXPEPdeGBvguo/1+Na8OIWz3667BN1cwbGtTEZWTd0qdyTsk5gGf9jVX8MblElbDb/Cpw6y5JiaQuL96YmvBwQ==",
366
"cpu": [
367
"loong64"
368
],
···
376
}
377
},
378
"node_modules/@esbuild/linux-mips64el": {
379
-
"version": "0.18.18",
380
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.18.tgz",
381
-
"integrity": "sha512-dLvRB87pIBIRnEIC32LIcgwK1JzlIuADIRjLKdUIpxauKwMuS/xMpN+cFl+0nN4RHNYOZ57DmXFFmQAcdlFOmw==",
382
"cpu": [
383
"mips64el"
384
],
···
392
}
393
},
394
"node_modules/@esbuild/linux-ppc64": {
395
-
"version": "0.18.18",
396
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.18.tgz",
397
-
"integrity": "sha512-fRChqIJZ7hLkXSKfBLYgsX9Ssb5OGCjk3dzCETF5QSS1qjTgayLv0ALUdJDB9QOh/nbWwp+qfLZU6md4XcjL7w==",
398
"cpu": [
399
"ppc64"
400
],
···
408
}
409
},
410
"node_modules/@esbuild/linux-riscv64": {
411
-
"version": "0.18.18",
412
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.18.tgz",
413
-
"integrity": "sha512-ALK/BT3u7Hoa/vHjow6W6+MKF0ohYcVcVA1EpskI4bkBPVuDLrUDqt2YFifg5UcZc8qup0CwQqWmFUd6VMNgaA==",
414
"cpu": [
415
"riscv64"
416
],
···
424
}
425
},
426
"node_modules/@esbuild/linux-s390x": {
427
-
"version": "0.18.18",
428
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.18.tgz",
429
-
"integrity": "sha512-crT7jtOXd9iirY65B+mJQ6W0HWdNy8dtkZqKGWNcBnunpLcTCfne5y5bKic9bhyYzKpQEsO+C/VBPD8iF0RhRw==",
430
"cpu": [
431
"s390x"
432
],
···
440
}
441
},
442
"node_modules/@esbuild/linux-x64": {
443
-
"version": "0.18.18",
444
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.18.tgz",
445
-
"integrity": "sha512-/NSgghjBOW9ELqjXDYxOCCIsvQUZpvua1/6NdnA9Vnrp9UzEydyDdFXljUjMMS9p5KxMzbMO9frjHYGVHBfCHg==",
446
"cpu": [
447
"x64"
448
],
···
456
}
457
},
458
"node_modules/@esbuild/netbsd-x64": {
459
-
"version": "0.18.18",
460
-
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.18.tgz",
461
-
"integrity": "sha512-8Otf05Vx5sZjLLDulgr5QS5lsWXMplKZEyHMArH9/S4olLlhzmdhQBPhzhJTNwaL2FJNdWcUPNGAcoD5zDTfUA==",
462
"cpu": [
463
"x64"
464
],
···
472
}
473
},
474
"node_modules/@esbuild/openbsd-x64": {
475
-
"version": "0.18.18",
476
-
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.18.tgz",
477
-
"integrity": "sha512-tFiFF4kT5L5qhVrWJUNxEXWvvX8nK/UX9ZrB7apuTwY3f6+Xy4aFMBPwAVrBYtBd5MOUuyOVHK6HBZCAHkwUlw==",
478
"cpu": [
479
"x64"
480
],
···
488
}
489
},
490
"node_modules/@esbuild/sunos-x64": {
491
-
"version": "0.18.18",
492
-
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.18.tgz",
493
-
"integrity": "sha512-MPogVV8Bzh8os4OM+YDGGsSzCzmNRiyKGtHoJyZLtI4BMmd6EcxmGlcEGK1uM46h1BiOyi7Z7teUtzzQhvkC+w==",
494
"cpu": [
495
"x64"
496
],
···
504
}
505
},
506
"node_modules/@esbuild/win32-arm64": {
507
-
"version": "0.18.18",
508
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.18.tgz",
509
-
"integrity": "sha512-YKD6LF/XXY9REu+ZL5RAsusiG48n602qxsMVh/E8FFD9hp4OyTQaL9fpE1ovxwQXqFio+tT0ITUGjDSSSPN13w==",
510
"cpu": [
511
"arm64"
512
],
···
520
}
521
},
522
"node_modules/@esbuild/win32-ia32": {
523
-
"version": "0.18.18",
524
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.18.tgz",
525
-
"integrity": "sha512-NjSBmBsyZBTsZB6ga6rA6PfG/RHnwruUz/9YEVXcm4STGauFWvhYhOMhEyw1yU5NVgYYm8CH5AltCm77TS21/Q==",
526
"cpu": [
527
"ia32"
528
],
···
536
}
537
},
538
"node_modules/@esbuild/win32-x64": {
539
-
"version": "0.18.18",
540
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.18.tgz",
541
-
"integrity": "sha512-eTSg/gC3p3tdjj4roDhe5xu94l1s2jMazP8u2FsYO8SEKvSpPOO71EucprDn/IuErDPvTFUhV9lTw5z5WJCRKQ==",
542
"cpu": [
543
"x64"
544
],
···
576
}
577
},
578
"node_modules/@eslint/eslintrc": {
579
-
"version": "2.1.1",
580
-
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
581
-
"integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
582
"dev": true,
583
"dependencies": {
584
"ajv": "^6.12.4",
···
599
}
600
},
601
"node_modules/@eslint/js": {
602
-
"version": "8.46.0",
603
-
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
604
-
"integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
605
"dev": true,
606
"engines": {
607
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
608
}
609
},
610
"node_modules/@humanwhocodes/config-array": {
611
-
"version": "0.11.10",
612
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
613
-
"integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
614
"dev": true,
615
"dependencies": {
616
-
"@humanwhocodes/object-schema": "^1.2.1",
617
-
"debug": "^4.1.1",
618
"minimatch": "^3.0.5"
619
},
620
"engines": {
···
635
}
636
},
637
"node_modules/@humanwhocodes/object-schema": {
638
-
"version": "1.2.1",
639
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
640
-
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
641
"dev": true
642
},
643
"node_modules/@ipld/dag-cbor": {
···
1339
"dev": true
1340
},
1341
"node_modules/@types/json-schema": {
1342
-
"version": "7.0.12",
1343
-
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
1344
-
"integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
1345
"dev": true
1346
},
1347
"node_modules/@types/keyv": {
···
1368
}
1369
},
1370
"node_modules/@types/semver": {
1371
-
"version": "7.5.0",
1372
-
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
1373
-
"integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
1374
"dev": true
1375
},
1376
"node_modules/@types/tv4": {
···
1389
}
1390
},
1391
"node_modules/@typescript-eslint/eslint-plugin": {
1392
-
"version": "6.2.1",
1393
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.1.tgz",
1394
-
"integrity": "sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==",
1395
"dev": true,
1396
"dependencies": {
1397
"@eslint-community/regexpp": "^4.5.1",
1398
-
"@typescript-eslint/scope-manager": "6.2.1",
1399
-
"@typescript-eslint/type-utils": "6.2.1",
1400
-
"@typescript-eslint/utils": "6.2.1",
1401
-
"@typescript-eslint/visitor-keys": "6.2.1",
1402
"debug": "^4.3.4",
1403
"graphemer": "^1.4.0",
1404
"ignore": "^5.2.4",
1405
"natural-compare": "^1.4.0",
1406
-
"natural-compare-lite": "^1.4.0",
1407
"semver": "^7.5.4",
1408
"ts-api-utils": "^1.0.1"
1409
},
···
1425
}
1426
},
1427
"node_modules/@typescript-eslint/parser": {
1428
-
"version": "6.2.1",
1429
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.1.tgz",
1430
-
"integrity": "sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==",
1431
"dev": true,
1432
"dependencies": {
1433
-
"@typescript-eslint/scope-manager": "6.2.1",
1434
-
"@typescript-eslint/types": "6.2.1",
1435
-
"@typescript-eslint/typescript-estree": "6.2.1",
1436
-
"@typescript-eslint/visitor-keys": "6.2.1",
1437
"debug": "^4.3.4"
1438
},
1439
"engines": {
···
1453
}
1454
},
1455
"node_modules/@typescript-eslint/scope-manager": {
1456
-
"version": "6.2.1",
1457
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz",
1458
-
"integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==",
1459
"dev": true,
1460
"dependencies": {
1461
-
"@typescript-eslint/types": "6.2.1",
1462
-
"@typescript-eslint/visitor-keys": "6.2.1"
1463
},
1464
"engines": {
1465
"node": "^16.0.0 || >=18.0.0"
···
1470
}
1471
},
1472
"node_modules/@typescript-eslint/type-utils": {
1473
-
"version": "6.2.1",
1474
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.1.tgz",
1475
-
"integrity": "sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==",
1476
"dev": true,
1477
"dependencies": {
1478
-
"@typescript-eslint/typescript-estree": "6.2.1",
1479
-
"@typescript-eslint/utils": "6.2.1",
1480
"debug": "^4.3.4",
1481
"ts-api-utils": "^1.0.1"
1482
},
···
1497
}
1498
},
1499
"node_modules/@typescript-eslint/types": {
1500
-
"version": "6.2.1",
1501
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz",
1502
-
"integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==",
1503
"dev": true,
1504
"engines": {
1505
"node": "^16.0.0 || >=18.0.0"
···
1510
}
1511
},
1512
"node_modules/@typescript-eslint/typescript-estree": {
1513
-
"version": "6.2.1",
1514
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz",
1515
-
"integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==",
1516
"dev": true,
1517
"dependencies": {
1518
-
"@typescript-eslint/types": "6.2.1",
1519
-
"@typescript-eslint/visitor-keys": "6.2.1",
1520
"debug": "^4.3.4",
1521
"globby": "^11.1.0",
1522
"is-glob": "^4.0.3",
1523
"semver": "^7.5.4",
1524
"ts-api-utils": "^1.0.1"
1525
},
···
1536
}
1537
}
1538
},
1539
"node_modules/@typescript-eslint/utils": {
1540
-
"version": "6.2.1",
1541
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz",
1542
-
"integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==",
1543
"dev": true,
1544
"dependencies": {
1545
"@eslint-community/eslint-utils": "^4.4.0",
1546
"@types/json-schema": "^7.0.12",
1547
"@types/semver": "^7.5.0",
1548
-
"@typescript-eslint/scope-manager": "6.2.1",
1549
-
"@typescript-eslint/types": "6.2.1",
1550
-
"@typescript-eslint/typescript-estree": "6.2.1",
1551
"semver": "^7.5.4"
1552
},
1553
"engines": {
···
1562
}
1563
},
1564
"node_modules/@typescript-eslint/visitor-keys": {
1565
-
"version": "6.2.1",
1566
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz",
1567
-
"integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==",
1568
"dev": true,
1569
"dependencies": {
1570
-
"@typescript-eslint/types": "6.2.1",
1571
"eslint-visitor-keys": "^3.4.1"
1572
},
1573
"engines": {
···
1577
"type": "opencollective",
1578
"url": "https://opencollective.com/typescript-eslint"
1579
}
1580
},
1581
"node_modules/@zeit/schemas": {
1582
"version": "2.29.0",
···
1624
}
1625
},
1626
"node_modules/acorn": {
1627
-
"version": "8.10.0",
1628
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
1629
-
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
1630
"dev": true,
1631
"bin": {
1632
"acorn": "bin/acorn"
···
1776
}
1777
},
1778
"node_modules/assert": {
1779
-
"version": "2.0.0",
1780
-
"resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
1781
-
"integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
1782
"dev": true,
1783
"dependencies": {
1784
-
"es6-object-assign": "^1.1.0",
1785
-
"is-nan": "^1.2.1",
1786
-
"object-is": "^1.0.1",
1787
-
"util": "^0.12.0"
1788
}
1789
},
1790
"node_modules/at-least-node": {
···
1797
}
1798
},
1799
"node_modules/autoprefixer": {
1800
-
"version": "10.4.14",
1801
-
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
1802
-
"integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
1803
"dev": true,
1804
"funding": [
1805
{
···
1809
{
1810
"type": "tidelift",
1811
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
1812
}
1813
],
1814
"dependencies": {
1815
-
"browserslist": "^4.21.5",
1816
-
"caniuse-lite": "^1.0.30001464",
1817
-
"fraction.js": "^4.2.0",
1818
"normalize-range": "^0.1.2",
1819
"picocolors": "^1.0.0",
1820
"postcss-value-parser": "^4.2.0"
···
2136
}
2137
},
2138
"node_modules/browserslist": {
2139
-
"version": "4.21.5",
2140
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
2141
-
"integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
2142
"dev": true,
2143
"funding": [
2144
{
···
2148
{
2149
"type": "tidelift",
2150
"url": "https://tidelift.com/funding/github/npm/browserslist"
2151
}
2152
],
2153
"dependencies": {
2154
-
"caniuse-lite": "^1.0.30001449",
2155
-
"electron-to-chromium": "^1.4.284",
2156
-
"node-releases": "^2.0.8",
2157
-
"update-browserslist-db": "^1.0.10"
2158
},
2159
"bin": {
2160
"browserslist": "cli.js"
···
2242
}
2243
},
2244
"node_modules/call-bind": {
2245
-
"version": "1.0.2",
2246
-
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
2247
-
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
2248
"dev": true,
2249
"dependencies": {
2250
-
"function-bind": "^1.1.1",
2251
-
"get-intrinsic": "^1.0.2"
2252
},
2253
"funding": {
2254
"url": "https://github.com/sponsors/ljharb"
···
2440
},
2441
"funding": {
2442
"url": "https://github.com/sponsors/sindresorhus"
2443
}
2444
},
2445
"node_modules/clone": {
···
2781
"node": ">=10"
2782
}
2783
},
2784
"node_modules/define-properties": {
2785
-
"version": "1.2.0",
2786
-
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
2787
-
"integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
2788
"dev": true,
2789
"dependencies": {
2790
"has-property-descriptors": "^1.0.0",
2791
"object-keys": "^1.1.1"
2792
},
···
2854
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
2855
},
2856
"node_modules/electron-to-chromium": {
2857
-
"version": "1.4.377",
2858
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.377.tgz",
2859
-
"integrity": "sha512-H3BYG6DW5Z+l0xcfXaicJGxrpA4kMlCxnN71+iNX+dBLkRMOdVJqFJiAmbNZZKA1zISpRg17JR03qGifXNsJtw==",
2860
"dev": true
2861
},
2862
"node_modules/elm": {
···
2878
"@elm_binaries/win32_x64": "0.19.1-0"
2879
}
2880
},
2881
"node_modules/elm-review": {
2882
-
"version": "2.10.2",
2883
-
"resolved": "https://registry.npmjs.org/elm-review/-/elm-review-2.10.2.tgz",
2884
-
"integrity": "sha512-9cgv3ILetV/Gb/cr42ZHYWHK5hrnl1UsGuxah1DL/NI6EZlu+GrwaSng4DvYsETrccaoNzRJMuhfv7JoPCdK/A==",
2885
"dev": true,
2886
"dependencies": {
2887
"chalk": "^4.0.0",
2888
"chokidar": "^3.5.2",
2889
"cross-spawn": "^7.0.3",
2890
-
"elm-tooling": "^1.6.0",
2891
-
"fast-levenshtein": "^3.0.0",
2892
"find-up": "^4.1.0",
2893
"folder-hash": "^3.3.0",
2894
"fs-extra": "^9.0.0",
···
2985
"integrity": "sha512-8UgIjzmGuoU6Wt6VC0tkJnzvc5xHL5yH7GdN+/QNxaaA3ckoyveCtV0QJqNCRa42bpyR1JhOwLSApwf2Id5xZg=="
2986
},
2987
"node_modules/elm-tooling": {
2988
-
"version": "1.14.0",
2989
-
"resolved": "https://registry.npmjs.org/elm-tooling/-/elm-tooling-1.14.0.tgz",
2990
-
"integrity": "sha512-cIbK3gfYWK086HsqOIGM4reIYcV/FF2R/8jIJ6ZUy1/RSkYFUv2BgPTGYYZo1Io9oymmbwoCWWleNtw7LgGL2w==",
2991
"dev": true,
2992
"bin": {
2993
"elm-tooling": "index.js"
···
3018
"resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz",
3019
"integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA=="
3020
},
3021
-
"node_modules/es6-object-assign": {
3022
-
"version": "1.1.0",
3023
-
"resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
3024
-
"integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==",
3025
-
"dev": true
3026
},
3027
"node_modules/esbuild": {
3028
-
"version": "0.18.18",
3029
-
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.18.tgz",
3030
-
"integrity": "sha512-UckDPWvdVJLNT0npk5AMTpVwGRQhS76rWFLmHwEtgNvWlR9sgVV1eyc/oeBtM86q9s8ABBLMmm0CwNxhVemOiw==",
3031
"dev": true,
3032
"hasInstallScript": true,
3033
"bin": {
···
3037
"node": ">=12"
3038
},
3039
"optionalDependencies": {
3040
-
"@esbuild/android-arm": "0.18.18",
3041
-
"@esbuild/android-arm64": "0.18.18",
3042
-
"@esbuild/android-x64": "0.18.18",
3043
-
"@esbuild/darwin-arm64": "0.18.18",
3044
-
"@esbuild/darwin-x64": "0.18.18",
3045
-
"@esbuild/freebsd-arm64": "0.18.18",
3046
-
"@esbuild/freebsd-x64": "0.18.18",
3047
-
"@esbuild/linux-arm": "0.18.18",
3048
-
"@esbuild/linux-arm64": "0.18.18",
3049
-
"@esbuild/linux-ia32": "0.18.18",
3050
-
"@esbuild/linux-loong64": "0.18.18",
3051
-
"@esbuild/linux-mips64el": "0.18.18",
3052
-
"@esbuild/linux-ppc64": "0.18.18",
3053
-
"@esbuild/linux-riscv64": "0.18.18",
3054
-
"@esbuild/linux-s390x": "0.18.18",
3055
-
"@esbuild/linux-x64": "0.18.18",
3056
-
"@esbuild/netbsd-x64": "0.18.18",
3057
-
"@esbuild/openbsd-x64": "0.18.18",
3058
-
"@esbuild/sunos-x64": "0.18.18",
3059
-
"@esbuild/win32-arm64": "0.18.18",
3060
-
"@esbuild/win32-ia32": "0.18.18",
3061
-
"@esbuild/win32-x64": "0.18.18"
3062
}
3063
},
3064
"node_modules/escalade": {
3065
-
"version": "3.1.1",
3066
-
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
3067
-
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
3068
-
"dev": true,
3069
"engines": {
3070
"node": ">=6"
3071
}
···
3083
}
3084
},
3085
"node_modules/eslint": {
3086
-
"version": "8.46.0",
3087
-
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
3088
-
"integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
3089
"dev": true,
3090
"dependencies": {
3091
"@eslint-community/eslint-utils": "^4.2.0",
3092
"@eslint-community/regexpp": "^4.6.1",
3093
-
"@eslint/eslintrc": "^2.1.1",
3094
-
"@eslint/js": "^8.46.0",
3095
-
"@humanwhocodes/config-array": "^0.11.10",
3096
"@humanwhocodes/module-importer": "^1.0.1",
3097
"@nodelib/fs.walk": "^1.2.8",
3098
"ajv": "^6.12.4",
3099
"chalk": "^4.0.0",
3100
"cross-spawn": "^7.0.2",
···
3102
"doctrine": "^3.0.0",
3103
"escape-string-regexp": "^4.0.0",
3104
"eslint-scope": "^7.2.2",
3105
-
"eslint-visitor-keys": "^3.4.2",
3106
"espree": "^9.6.1",
3107
"esquery": "^1.4.2",
3108
"esutils": "^2.0.2",
···
3153
}
3154
},
3155
"node_modules/eslint-visitor-keys": {
3156
-
"version": "3.4.2",
3157
-
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
3158
-
"integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
3159
"dev": true,
3160
"engines": {
3161
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
···
3384
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
3385
},
3386
"node_modules/fast-glob": {
3387
-
"version": "3.2.12",
3388
-
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
3389
-
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
3390
"dev": true,
3391
"dependencies": {
3392
"@nodelib/fs.stat": "^2.0.2",
···
3405
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
3406
"dev": true
3407
},
3408
-
"node_modules/fast-levenshtein": {
3409
-
"version": "3.0.0",
3410
-
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz",
3411
-
"integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==",
3412
-
"dev": true,
3413
-
"dependencies": {
3414
-
"fastest-levenshtein": "^1.0.7"
3415
-
}
3416
-
},
3417
"node_modules/fast-text-encoding": {
3418
"version": "1.0.6",
3419
"resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
···
3498
"version": "2.0.5",
3499
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
3500
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
3501
},
3502
"node_modules/fill-range": {
3503
"version": "7.0.1",
···
3662
}
3663
},
3664
"node_modules/fraction.js": {
3665
-
"version": "4.2.0",
3666
-
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
3667
-
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
3668
"dev": true,
3669
"engines": {
3670
"node": "*"
3671
},
3672
"funding": {
3673
"type": "patreon",
3674
-
"url": "https://www.patreon.com/infusion"
3675
}
3676
},
3677
"node_modules/fs-extra": {
···
3709
}
3710
},
3711
"node_modules/function-bind": {
3712
-
"version": "1.1.1",
3713
-
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
3714
-
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
3715
-
"dev": true
3716
},
3717
"node_modules/get-intrinsic": {
3718
-
"version": "1.2.0",
3719
-
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
3720
-
"integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
3721
"dev": true,
3722
"dependencies": {
3723
-
"function-bind": "^1.1.1",
3724
-
"has": "^1.0.3",
3725
-
"has-symbols": "^1.0.3"
3726
},
3727
"funding": {
3728
"url": "https://github.com/sponsors/ljharb"
···
3776
}
3777
},
3778
"node_modules/globals": {
3779
-
"version": "13.20.0",
3780
-
"resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
3781
-
"integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
3782
"dev": true,
3783
"dependencies": {
3784
"type-fest": "^0.20.2"
···
3901
}
3902
},
3903
"node_modules/has-property-descriptors": {
3904
-
"version": "1.0.0",
3905
-
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
3906
-
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
3907
"dev": true,
3908
"dependencies": {
3909
-
"get-intrinsic": "^1.1.1"
3910
},
3911
"funding": {
3912
"url": "https://github.com/sponsors/ljharb"
···
3937
},
3938
"funding": {
3939
"url": "https://github.com/sponsors/ljharb"
3940
}
3941
},
3942
"node_modules/http-cache-semantics": {
···
4667
}
4668
},
4669
"node_modules/jiti": {
4670
-
"version": "1.18.2",
4671
-
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
4672
-
"integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
4673
"dev": true,
4674
"bin": {
4675
"jiti": "bin/jiti.js"
···
5040
"node": ">= 0.8"
5041
}
5042
},
5043
"node_modules/merge-options": {
5044
"version": "3.0.4",
5045
"resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
···
5196
"npm": ">=7.0.0"
5197
}
5198
},
5199
-
"node_modules/music-metadata-browser": {
5200
-
"version": "2.5.10",
5201
-
"resolved": "https://registry.npmjs.org/music-metadata-browser/-/music-metadata-browser-2.5.10.tgz",
5202
-
"integrity": "sha512-03UnAmsSJoZZ5kK2BnEnd2zpH8LXRWQ6xlc7akKudhc2d9FT+yAiqapnmOzjW3g4cxxvIsSK5MVBO2Gi+Ymjfw==",
5203
-
"dependencies": {
5204
-
"buffer": "^6.0.3",
5205
-
"debug": "^4.3.4",
5206
-
"music-metadata": "^7.13.3",
5207
-
"readable-stream": "^4.3.0",
5208
-
"readable-web-to-node-stream": "^3.0.2"
5209
-
},
5210
-
"funding": {
5211
-
"type": "github",
5212
-
"url": "https://github.com/sponsors/Borewit"
5213
-
}
5214
-
},
5215
-
"node_modules/music-metadata-browser/node_modules/file-type": {
5216
-
"version": "16.5.4",
5217
-
"resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
5218
-
"integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
5219
-
"dependencies": {
5220
-
"readable-web-to-node-stream": "^3.0.0",
5221
-
"strtok3": "^6.2.4",
5222
-
"token-types": "^4.1.1"
5223
-
},
5224
-
"engines": {
5225
-
"node": ">=10"
5226
-
},
5227
-
"funding": {
5228
-
"url": "https://github.com/sindresorhus/file-type?sponsor=1"
5229
-
}
5230
-
},
5231
-
"node_modules/music-metadata-browser/node_modules/music-metadata": {
5232
-
"version": "7.13.4",
5233
-
"resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-7.13.4.tgz",
5234
-
"integrity": "sha512-eRRoEMhhYdth2Ws24FmkvIqrtkIBE9sqjHbrRNpkg2Iux3zc37PQKRv2/r/mTtELb7XlB1uWC2UcKKX7BzNMGA==",
5235
"dependencies": {
5236
"@tokenizer/token": "^0.3.0",
5237
"content-type": "^1.0.5",
···
5249
"url": "https://github.com/sponsors/Borewit"
5250
}
5251
},
5252
-
"node_modules/music-metadata-browser/node_modules/token-types": {
5253
-
"version": "4.2.1",
5254
-
"resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
5255
-
"integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
5256
"dependencies": {
5257
-
"@tokenizer/token": "^0.3.0",
5258
-
"ieee754": "^1.2.1"
5259
-
},
5260
-
"engines": {
5261
-
"node": ">=10"
5262
},
5263
"funding": {
5264
"type": "github",
···
5277
}
5278
},
5279
"node_modules/nanoid": {
5280
-
"version": "3.3.6",
5281
-
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
5282
-
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
5283
"dev": true,
5284
"funding": [
5285
{
···
5311
"version": "1.4.0",
5312
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
5313
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
5314
-
"dev": true
5315
-
},
5316
-
"node_modules/natural-compare-lite": {
5317
-
"version": "1.4.0",
5318
-
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
5319
-
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
5320
"dev": true
5321
},
5322
"node_modules/negotiator": {
···
5376
}
5377
},
5378
"node_modules/node-releases": {
5379
-
"version": "2.0.10",
5380
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
5381
-
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
5382
"dev": true
5383
},
5384
"node_modules/normalize-path": {
···
5465
"node": ">= 0.4"
5466
}
5467
},
5468
"node_modules/observable-webworkers": {
5469
"version": "2.0.1",
5470
"resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz",
···
5786
}
5787
},
5788
"node_modules/postcss": {
5789
-
"version": "8.4.27",
5790
-
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz",
5791
-
"integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==",
5792
"dev": true,
5793
"funding": [
5794
{
···
5805
}
5806
],
5807
"dependencies": {
5808
-
"nanoid": "^3.3.6",
5809
"picocolors": "^1.0.0",
5810
"source-map-js": "^1.0.2"
5811
},
···
5814
}
5815
},
5816
"node_modules/postcss-custom-properties": {
5817
-
"version": "13.3.0",
5818
-
"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.0.tgz",
5819
-
"integrity": "sha512-q4VgtIKSy5+KcUvQ0WxTjDy9DZjQ5VCXAZ9+tT9+aPMbA0z6s2t1nMw0QHszru1ib5ElkXl9JUpYYU37VVUs7g==",
5820
"dev": true,
5821
"funding": [
5822
{
···
5829
}
5830
],
5831
"dependencies": {
5832
-
"@csstools/cascade-layer-name-parser": "^1.0.4",
5833
-
"@csstools/css-parser-algorithms": "^2.3.1",
5834
-
"@csstools/css-tokenizer": "^2.2.0",
5835
"postcss-value-parser": "^4.2.0"
5836
},
5837
"engines": {
···
5842
}
5843
},
5844
"node_modules/postcss-import": {
5845
-
"version": "15.1.0",
5846
-
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
5847
-
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
5848
"dev": true,
5849
"dependencies": {
5850
"postcss-value-parser": "^4.0.0",
···
5852
"resolve": "^1.1.7"
5853
},
5854
"engines": {
5855
-
"node": ">=14.0.0"
5856
},
5857
"peerDependencies": {
5858
"postcss": "^8.0.0"
···
6101
}
6102
},
6103
"node_modules/readable-stream": {
6104
-
"version": "4.4.2",
6105
-
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz",
6106
-
"integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==",
6107
"dependencies": {
6108
"abort-controller": "^3.0.0",
6109
"buffer": "^6.0.3",
···
6209
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz",
6210
"integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw=="
6211
},
6212
"node_modules/require-from-string": {
6213
"version": "2.0.2",
6214
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
···
6488
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
6489
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
6490
},
6491
"node_modules/setimmediate": {
6492
"version": "1.0.5",
6493
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
···
6758
}
6759
},
6760
"node_modules/tailwindcss": {
6761
-
"version": "3.3.3",
6762
-
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz",
6763
-
"integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==",
6764
"dev": true,
6765
"dependencies": {
6766
"@alloc/quick-lru": "^5.2.0",
···
6768
"chokidar": "^3.5.3",
6769
"didyoumean": "^1.2.2",
6770
"dlv": "^1.1.3",
6771
-
"fast-glob": "^3.2.12",
6772
"glob-parent": "^6.0.2",
6773
"is-glob": "^4.0.3",
6774
-
"jiti": "^1.18.2",
6775
"lilconfig": "^2.1.0",
6776
"micromatch": "^4.0.5",
6777
"normalize-path": "^3.0.0",
···
6825
},
6826
"engines": {
6827
"node": ">=10.13.0"
6828
}
6829
},
6830
"node_modules/terminal-link": {
···
6883
"resolved": "https://registry.npmjs.org/timer.js/-/timer.js-1.0.4.tgz",
6884
"integrity": "sha512-UU/lL02CjPMu8cu29h/uyt5yBqcm0vlx51Je9xCmVcH+TLS+X/+chv4V4rHlb37ZiI4iUVyLuC3QvyoFMzadwQ=="
6885
},
6886
"node_modules/to-regex-range": {
6887
"version": "5.0.1",
6888
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
···
6899
"version": "2.0.9",
6900
"resolved": "https://registry.npmjs.org/tocca/-/tocca-2.0.9.tgz",
6901
"integrity": "sha512-FXofUGAFcgEIEOS3m9Dk9URaY3x+JeerPfVFc8K820PjV0JcCsH98BFxrVOTANC8YvM4QTrmKMol2/818gFmCw=="
6902
},
6903
"node_modules/tr46": {
6904
"version": "0.0.3",
···
6987
}
6988
},
6989
"node_modules/uint8arrays": {
6990
-
"version": "4.0.6",
6991
-
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.6.tgz",
6992
-
"integrity": "sha512-4ZesjQhqOU2Ip6GPReIwN60wRxIupavL8T0Iy36BBHr2qyMrNxsPJvr7vpS4eFt8F8kSguWUPad6ZM9izs/vyw==",
6993
"dependencies": {
6994
"multiformats": "^12.0.1"
6995
}
···
7024
}
7025
},
7026
"node_modules/update-browserslist-db": {
7027
-
"version": "1.0.11",
7028
-
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
7029
-
"integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
7030
"dev": true,
7031
"funding": [
7032
{
···
7306
"cuint": "^0.2.2"
7307
}
7308
},
7309
"node_modules/yallist": {
7310
"version": "4.0.0",
7311
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
···
7321
"node": ">= 14"
7322
}
7323
},
7324
"node_modules/yauzl": {
7325
"version": "2.10.0",
7326
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
···
7357
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
7358
"dev": true
7359
},
7360
"@chainsafe/is-ip": {
7361
"version": "2.0.1",
7362
"resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.1.tgz",
···
7371
}
7372
},
7373
"@csstools/cascade-layer-name-parser": {
7374
-
"version": "1.0.4",
7375
-
"resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.4.tgz",
7376
-
"integrity": "sha512-zXMGsJetbLoXe+gjEES07MEGjL0Uy3hMxmnGtVBrRpVKr5KV9OgCB09zr/vLrsEtoVQTgJFewxaU8IYSAE4tjg==",
7377
"dev": true,
7378
"requires": {}
7379
},
7380
"@csstools/css-parser-algorithms": {
7381
-
"version": "2.3.1",
7382
-
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz",
7383
-
"integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==",
7384
"dev": true,
7385
"requires": {}
7386
},
7387
"@csstools/css-tokenizer": {
7388
-
"version": "2.2.0",
7389
-
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz",
7390
-
"integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==",
7391
"dev": true
7392
},
7393
"@elm_binaries/darwin_arm64": {
···
7418
"dev": true,
7419
"optional": true
7420
},
7421
"@esbuild/android-arm": {
7422
-
"version": "0.18.18",
7423
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.18.tgz",
7424
-
"integrity": "sha512-oBymf7ZwplAawSxmiSlBCf+FMcY0f4bs5QP2jn43JKUf0M9DnrUTjqa5RvFPl1elw+sMfcpfBRPK+rb+E1q7zg==",
7425
"dev": true,
7426
"optional": true
7427
},
7428
"@esbuild/android-arm64": {
7429
-
"version": "0.18.18",
7430
-
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.18.tgz",
7431
-
"integrity": "sha512-dkAPYzRHq3dNXIzOyAknYOzsx8o3KWaNiuu56B2rP9IFPmFWMS58WQcTlUQi6iloku8ZyHHMluCe5sTWhKq/Yw==",
7432
"dev": true,
7433
"optional": true
7434
},
7435
"@esbuild/android-x64": {
7436
-
"version": "0.18.18",
7437
-
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.18.tgz",
7438
-
"integrity": "sha512-r7/pVcrUQMYkjvtE/1/n6BxhWM+/9tvLxDG1ev1ce4z3YsqoxMK9bbOM6bFcj0BowMeGQvOZWcBV182lFFKmrw==",
7439
"dev": true,
7440
"optional": true
7441
},
7442
"@esbuild/darwin-arm64": {
7443
-
"version": "0.18.18",
7444
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.18.tgz",
7445
-
"integrity": "sha512-MSe2iV9MAH3wfP0g+vzN9bp36rtPPuCSk+bT5E2vv/d8krvW5uB/Pi/Q5+txUZuxsG3GcO8dhygjnFq0wJU9hQ==",
7446
"dev": true,
7447
"optional": true
7448
},
7449
"@esbuild/darwin-x64": {
7450
-
"version": "0.18.18",
7451
-
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.18.tgz",
7452
-
"integrity": "sha512-ARFYISOWkaifjcr48YtO70gcDNeOf1H2RnmOj6ip3xHIj66f3dAbhcd5Nph5np6oHI7DhHIcr9MWO18RvUL1bw==",
7453
"dev": true,
7454
"optional": true
7455
},
7456
"@esbuild/freebsd-arm64": {
7457
-
"version": "0.18.18",
7458
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.18.tgz",
7459
-
"integrity": "sha512-BHnXmexzEWRU2ZySJosU0Ts0NRnJnNrMB6t4EiIaOSel73I8iLsNiTPLH0rJulAh19cYZutsB5XHK6N8fi5eMg==",
7460
"dev": true,
7461
"optional": true
7462
},
7463
"@esbuild/freebsd-x64": {
7464
-
"version": "0.18.18",
7465
-
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.18.tgz",
7466
-
"integrity": "sha512-n823w35wm0ZOobbuE//0sJjuz1Qj619+AwjgOcAJMN2pomZhH9BONCtn+KlfrmM/NWZ+27yB/eGVFzUIWLeh3w==",
7467
"dev": true,
7468
"optional": true
7469
},
7470
"@esbuild/linux-arm": {
7471
-
"version": "0.18.18",
7472
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.18.tgz",
7473
-
"integrity": "sha512-Kck3jxPLQU4VeAGwe8Q4NU+IWIx+suULYOFUI9T0C2J1+UQlOHJ08ITN+MaJJ+2youzJOmKmcphH/t3SJxQ1Tw==",
7474
"dev": true,
7475
"optional": true
7476
},
7477
"@esbuild/linux-arm64": {
7478
-
"version": "0.18.18",
7479
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.18.tgz",
7480
-
"integrity": "sha512-zANxnwF0sCinDcAqoMohGoWBK9QaFJ65Vgh0ZE+RXtURaMwx+RfmfLElqtnn7X8OYNckMoIXSg7u+tZ3tqTlrA==",
7481
"dev": true,
7482
"optional": true
7483
},
7484
"@esbuild/linux-ia32": {
7485
-
"version": "0.18.18",
7486
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.18.tgz",
7487
-
"integrity": "sha512-+VHz2sIRlY5u8IlaLJpdf5TL2kM76yx186pW7bpTB+vLWpzcFQVP04L842ZB2Ty13A1VXUvy3DbU1jV65P2skg==",
7488
"dev": true,
7489
"optional": true
7490
},
7491
"@esbuild/linux-loong64": {
7492
-
"version": "0.18.18",
7493
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.18.tgz",
7494
-
"integrity": "sha512-fXPEPdeGBvguo/1+Na8OIWz3667BN1cwbGtTEZWTd0qdyTsk5gGf9jVX8MblElbDb/Cpw6y5JiaQuL96YmvBwQ==",
7495
"dev": true,
7496
"optional": true
7497
},
7498
"@esbuild/linux-mips64el": {
7499
-
"version": "0.18.18",
7500
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.18.tgz",
7501
-
"integrity": "sha512-dLvRB87pIBIRnEIC32LIcgwK1JzlIuADIRjLKdUIpxauKwMuS/xMpN+cFl+0nN4RHNYOZ57DmXFFmQAcdlFOmw==",
7502
"dev": true,
7503
"optional": true
7504
},
7505
"@esbuild/linux-ppc64": {
7506
-
"version": "0.18.18",
7507
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.18.tgz",
7508
-
"integrity": "sha512-fRChqIJZ7hLkXSKfBLYgsX9Ssb5OGCjk3dzCETF5QSS1qjTgayLv0ALUdJDB9QOh/nbWwp+qfLZU6md4XcjL7w==",
7509
"dev": true,
7510
"optional": true
7511
},
7512
"@esbuild/linux-riscv64": {
7513
-
"version": "0.18.18",
7514
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.18.tgz",
7515
-
"integrity": "sha512-ALK/BT3u7Hoa/vHjow6W6+MKF0ohYcVcVA1EpskI4bkBPVuDLrUDqt2YFifg5UcZc8qup0CwQqWmFUd6VMNgaA==",
7516
"dev": true,
7517
"optional": true
7518
},
7519
"@esbuild/linux-s390x": {
7520
-
"version": "0.18.18",
7521
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.18.tgz",
7522
-
"integrity": "sha512-crT7jtOXd9iirY65B+mJQ6W0HWdNy8dtkZqKGWNcBnunpLcTCfne5y5bKic9bhyYzKpQEsO+C/VBPD8iF0RhRw==",
7523
"dev": true,
7524
"optional": true
7525
},
7526
"@esbuild/linux-x64": {
7527
-
"version": "0.18.18",
7528
-
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.18.tgz",
7529
-
"integrity": "sha512-/NSgghjBOW9ELqjXDYxOCCIsvQUZpvua1/6NdnA9Vnrp9UzEydyDdFXljUjMMS9p5KxMzbMO9frjHYGVHBfCHg==",
7530
"dev": true,
7531
"optional": true
7532
},
7533
"@esbuild/netbsd-x64": {
7534
-
"version": "0.18.18",
7535
-
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.18.tgz",
7536
-
"integrity": "sha512-8Otf05Vx5sZjLLDulgr5QS5lsWXMplKZEyHMArH9/S4olLlhzmdhQBPhzhJTNwaL2FJNdWcUPNGAcoD5zDTfUA==",
7537
"dev": true,
7538
"optional": true
7539
},
7540
"@esbuild/openbsd-x64": {
7541
-
"version": "0.18.18",
7542
-
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.18.tgz",
7543
-
"integrity": "sha512-tFiFF4kT5L5qhVrWJUNxEXWvvX8nK/UX9ZrB7apuTwY3f6+Xy4aFMBPwAVrBYtBd5MOUuyOVHK6HBZCAHkwUlw==",
7544
"dev": true,
7545
"optional": true
7546
},
7547
"@esbuild/sunos-x64": {
7548
-
"version": "0.18.18",
7549
-
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.18.tgz",
7550
-
"integrity": "sha512-MPogVV8Bzh8os4OM+YDGGsSzCzmNRiyKGtHoJyZLtI4BMmd6EcxmGlcEGK1uM46h1BiOyi7Z7teUtzzQhvkC+w==",
7551
"dev": true,
7552
"optional": true
7553
},
7554
"@esbuild/win32-arm64": {
7555
-
"version": "0.18.18",
7556
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.18.tgz",
7557
-
"integrity": "sha512-YKD6LF/XXY9REu+ZL5RAsusiG48n602qxsMVh/E8FFD9hp4OyTQaL9fpE1ovxwQXqFio+tT0ITUGjDSSSPN13w==",
7558
"dev": true,
7559
"optional": true
7560
},
7561
"@esbuild/win32-ia32": {
7562
-
"version": "0.18.18",
7563
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.18.tgz",
7564
-
"integrity": "sha512-NjSBmBsyZBTsZB6ga6rA6PfG/RHnwruUz/9YEVXcm4STGauFWvhYhOMhEyw1yU5NVgYYm8CH5AltCm77TS21/Q==",
7565
"dev": true,
7566
"optional": true
7567
},
7568
"@esbuild/win32-x64": {
7569
-
"version": "0.18.18",
7570
-
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.18.tgz",
7571
-
"integrity": "sha512-eTSg/gC3p3tdjj4roDhe5xu94l1s2jMazP8u2FsYO8SEKvSpPOO71EucprDn/IuErDPvTFUhV9lTw5z5WJCRKQ==",
7572
"dev": true,
7573
"optional": true
7574
},
···
7588
"dev": true
7589
},
7590
"@eslint/eslintrc": {
7591
-
"version": "2.1.1",
7592
-
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
7593
-
"integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
7594
"dev": true,
7595
"requires": {
7596
"ajv": "^6.12.4",
···
7605
}
7606
},
7607
"@eslint/js": {
7608
-
"version": "8.46.0",
7609
-
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
7610
-
"integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
7611
"dev": true
7612
},
7613
"@humanwhocodes/config-array": {
7614
-
"version": "0.11.10",
7615
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
7616
-
"integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
7617
"dev": true,
7618
"requires": {
7619
-
"@humanwhocodes/object-schema": "^1.2.1",
7620
-
"debug": "^4.1.1",
7621
"minimatch": "^3.0.5"
7622
}
7623
},
···
7628
"dev": true
7629
},
7630
"@humanwhocodes/object-schema": {
7631
-
"version": "1.2.1",
7632
-
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
7633
-
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
7634
"dev": true
7635
},
7636
"@ipld/dag-cbor": {
···
8166
"dev": true
8167
},
8168
"@types/json-schema": {
8169
-
"version": "7.0.12",
8170
-
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
8171
-
"integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
8172
"dev": true
8173
},
8174
"@types/keyv": {
···
8195
}
8196
},
8197
"@types/semver": {
8198
-
"version": "7.5.0",
8199
-
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
8200
-
"integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
8201
"dev": true
8202
},
8203
"@types/tv4": {
···
8216
}
8217
},
8218
"@typescript-eslint/eslint-plugin": {
8219
-
"version": "6.2.1",
8220
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.1.tgz",
8221
-
"integrity": "sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==",
8222
"dev": true,
8223
"requires": {
8224
"@eslint-community/regexpp": "^4.5.1",
8225
-
"@typescript-eslint/scope-manager": "6.2.1",
8226
-
"@typescript-eslint/type-utils": "6.2.1",
8227
-
"@typescript-eslint/utils": "6.2.1",
8228
-
"@typescript-eslint/visitor-keys": "6.2.1",
8229
"debug": "^4.3.4",
8230
"graphemer": "^1.4.0",
8231
"ignore": "^5.2.4",
8232
"natural-compare": "^1.4.0",
8233
-
"natural-compare-lite": "^1.4.0",
8234
"semver": "^7.5.4",
8235
"ts-api-utils": "^1.0.1"
8236
}
8237
},
8238
"@typescript-eslint/parser": {
8239
-
"version": "6.2.1",
8240
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.2.1.tgz",
8241
-
"integrity": "sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==",
8242
"dev": true,
8243
"requires": {
8244
-
"@typescript-eslint/scope-manager": "6.2.1",
8245
-
"@typescript-eslint/types": "6.2.1",
8246
-
"@typescript-eslint/typescript-estree": "6.2.1",
8247
-
"@typescript-eslint/visitor-keys": "6.2.1",
8248
"debug": "^4.3.4"
8249
}
8250
},
8251
"@typescript-eslint/scope-manager": {
8252
-
"version": "6.2.1",
8253
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.2.1.tgz",
8254
-
"integrity": "sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==",
8255
"dev": true,
8256
"requires": {
8257
-
"@typescript-eslint/types": "6.2.1",
8258
-
"@typescript-eslint/visitor-keys": "6.2.1"
8259
}
8260
},
8261
"@typescript-eslint/type-utils": {
8262
-
"version": "6.2.1",
8263
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.2.1.tgz",
8264
-
"integrity": "sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==",
8265
"dev": true,
8266
"requires": {
8267
-
"@typescript-eslint/typescript-estree": "6.2.1",
8268
-
"@typescript-eslint/utils": "6.2.1",
8269
"debug": "^4.3.4",
8270
"ts-api-utils": "^1.0.1"
8271
}
8272
},
8273
"@typescript-eslint/types": {
8274
-
"version": "6.2.1",
8275
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.2.1.tgz",
8276
-
"integrity": "sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==",
8277
"dev": true
8278
},
8279
"@typescript-eslint/typescript-estree": {
8280
-
"version": "6.2.1",
8281
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.1.tgz",
8282
-
"integrity": "sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==",
8283
"dev": true,
8284
"requires": {
8285
-
"@typescript-eslint/types": "6.2.1",
8286
-
"@typescript-eslint/visitor-keys": "6.2.1",
8287
"debug": "^4.3.4",
8288
"globby": "^11.1.0",
8289
"is-glob": "^4.0.3",
8290
"semver": "^7.5.4",
8291
"ts-api-utils": "^1.0.1"
8292
}
8293
},
8294
"@typescript-eslint/utils": {
8295
-
"version": "6.2.1",
8296
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.2.1.tgz",
8297
-
"integrity": "sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==",
8298
"dev": true,
8299
"requires": {
8300
"@eslint-community/eslint-utils": "^4.4.0",
8301
"@types/json-schema": "^7.0.12",
8302
"@types/semver": "^7.5.0",
8303
-
"@typescript-eslint/scope-manager": "6.2.1",
8304
-
"@typescript-eslint/types": "6.2.1",
8305
-
"@typescript-eslint/typescript-estree": "6.2.1",
8306
"semver": "^7.5.4"
8307
}
8308
},
8309
"@typescript-eslint/visitor-keys": {
8310
-
"version": "6.2.1",
8311
-
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.1.tgz",
8312
-
"integrity": "sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==",
8313
"dev": true,
8314
"requires": {
8315
-
"@typescript-eslint/types": "6.2.1",
8316
"eslint-visitor-keys": "^3.4.1"
8317
}
8318
},
8319
"@zeit/schemas": {
8320
"version": "2.29.0",
···
8353
}
8354
},
8355
"acorn": {
8356
-
"version": "8.10.0",
8357
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
8358
-
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
8359
"dev": true
8360
},
8361
"acorn-jsx": {
···
8454
"dev": true
8455
},
8456
"assert": {
8457
-
"version": "2.0.0",
8458
-
"resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz",
8459
-
"integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==",
8460
"dev": true,
8461
"requires": {
8462
-
"es6-object-assign": "^1.1.0",
8463
-
"is-nan": "^1.2.1",
8464
-
"object-is": "^1.0.1",
8465
-
"util": "^0.12.0"
8466
}
8467
},
8468
"at-least-node": {
···
8472
"dev": true
8473
},
8474
"autoprefixer": {
8475
-
"version": "10.4.14",
8476
-
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz",
8477
-
"integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==",
8478
"dev": true,
8479
"requires": {
8480
-
"browserslist": "^4.21.5",
8481
-
"caniuse-lite": "^1.0.30001464",
8482
-
"fraction.js": "^4.2.0",
8483
"normalize-range": "^0.1.2",
8484
"picocolors": "^1.0.0",
8485
"postcss-value-parser": "^4.2.0"
···
8689
}
8690
},
8691
"browserslist": {
8692
-
"version": "4.21.5",
8693
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
8694
-
"integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
8695
"dev": true,
8696
"requires": {
8697
-
"caniuse-lite": "^1.0.30001449",
8698
-
"electron-to-chromium": "^1.4.284",
8699
-
"node-releases": "^2.0.8",
8700
-
"update-browserslist-db": "^1.0.10"
8701
}
8702
},
8703
"buffer": {
···
8750
}
8751
},
8752
"call-bind": {
8753
-
"version": "1.0.2",
8754
-
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
8755
-
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
8756
"dev": true,
8757
"requires": {
8758
-
"function-bind": "^1.1.1",
8759
-
"get-intrinsic": "^1.0.2"
8760
}
8761
},
8762
"callsites": {
···
8867
"is-wsl": "^2.2.0"
8868
}
8869
},
8870
"clone": {
8871
"version": "1.0.4",
8872
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
···
9114
"integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
9115
"dev": true
9116
},
9117
"define-properties": {
9118
-
"version": "1.2.0",
9119
-
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
9120
-
"integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
9121
"dev": true,
9122
"requires": {
9123
"has-property-descriptors": "^1.0.0",
9124
"object-keys": "^1.1.1"
9125
}
···
9171
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
9172
},
9173
"electron-to-chromium": {
9174
-
"version": "1.4.377",
9175
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.377.tgz",
9176
-
"integrity": "sha512-H3BYG6DW5Z+l0xcfXaicJGxrpA4kMlCxnN71+iNX+dBLkRMOdVJqFJiAmbNZZKA1zISpRg17JR03qGifXNsJtw==",
9177
"dev": true
9178
},
9179
"elm": {
···
9188
"@elm_binaries/win32_x64": "0.19.1-0"
9189
}
9190
},
9191
"elm-review": {
9192
-
"version": "2.10.2",
9193
-
"resolved": "https://registry.npmjs.org/elm-review/-/elm-review-2.10.2.tgz",
9194
-
"integrity": "sha512-9cgv3ILetV/Gb/cr42ZHYWHK5hrnl1UsGuxah1DL/NI6EZlu+GrwaSng4DvYsETrccaoNzRJMuhfv7JoPCdK/A==",
9195
"dev": true,
9196
"requires": {
9197
"chalk": "^4.0.0",
9198
"chokidar": "^3.5.2",
9199
"cross-spawn": "^7.0.3",
9200
-
"elm-tooling": "^1.6.0",
9201
-
"fast-levenshtein": "^3.0.0",
9202
"find-up": "^4.1.0",
9203
"folder-hash": "^3.3.0",
9204
"fs-extra": "^9.0.0",
···
9266
"integrity": "sha512-8UgIjzmGuoU6Wt6VC0tkJnzvc5xHL5yH7GdN+/QNxaaA3ckoyveCtV0QJqNCRa42bpyR1JhOwLSApwf2Id5xZg=="
9267
},
9268
"elm-tooling": {
9269
-
"version": "1.14.0",
9270
-
"resolved": "https://registry.npmjs.org/elm-tooling/-/elm-tooling-1.14.0.tgz",
9271
-
"integrity": "sha512-cIbK3gfYWK086HsqOIGM4reIYcV/FF2R/8jIJ6ZUy1/RSkYFUv2BgPTGYYZo1Io9oymmbwoCWWleNtw7LgGL2w==",
9272
"dev": true
9273
},
9274
"emitter-component": {
···
9296
"resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz",
9297
"integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA=="
9298
},
9299
-
"es6-object-assign": {
9300
-
"version": "1.1.0",
9301
-
"resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
9302
-
"integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==",
9303
"dev": true
9304
},
9305
"esbuild": {
9306
-
"version": "0.18.18",
9307
-
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.18.tgz",
9308
-
"integrity": "sha512-UckDPWvdVJLNT0npk5AMTpVwGRQhS76rWFLmHwEtgNvWlR9sgVV1eyc/oeBtM86q9s8ABBLMmm0CwNxhVemOiw==",
9309
"dev": true,
9310
"requires": {
9311
-
"@esbuild/android-arm": "0.18.18",
9312
-
"@esbuild/android-arm64": "0.18.18",
9313
-
"@esbuild/android-x64": "0.18.18",
9314
-
"@esbuild/darwin-arm64": "0.18.18",
9315
-
"@esbuild/darwin-x64": "0.18.18",
9316
-
"@esbuild/freebsd-arm64": "0.18.18",
9317
-
"@esbuild/freebsd-x64": "0.18.18",
9318
-
"@esbuild/linux-arm": "0.18.18",
9319
-
"@esbuild/linux-arm64": "0.18.18",
9320
-
"@esbuild/linux-ia32": "0.18.18",
9321
-
"@esbuild/linux-loong64": "0.18.18",
9322
-
"@esbuild/linux-mips64el": "0.18.18",
9323
-
"@esbuild/linux-ppc64": "0.18.18",
9324
-
"@esbuild/linux-riscv64": "0.18.18",
9325
-
"@esbuild/linux-s390x": "0.18.18",
9326
-
"@esbuild/linux-x64": "0.18.18",
9327
-
"@esbuild/netbsd-x64": "0.18.18",
9328
-
"@esbuild/openbsd-x64": "0.18.18",
9329
-
"@esbuild/sunos-x64": "0.18.18",
9330
-
"@esbuild/win32-arm64": "0.18.18",
9331
-
"@esbuild/win32-ia32": "0.18.18",
9332
-
"@esbuild/win32-x64": "0.18.18"
9333
}
9334
},
9335
-
"escalade": {
9336
-
"version": "3.1.1",
9337
-
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
9338
-
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
9339
"dev": true
9340
},
9341
"escape-string-regexp": {
9342
"version": "4.0.0",
···
9345
"dev": true
9346
},
9347
"eslint": {
9348
-
"version": "8.46.0",
9349
-
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
9350
-
"integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
9351
"dev": true,
9352
"requires": {
9353
"@eslint-community/eslint-utils": "^4.2.0",
9354
"@eslint-community/regexpp": "^4.6.1",
9355
-
"@eslint/eslintrc": "^2.1.1",
9356
-
"@eslint/js": "^8.46.0",
9357
-
"@humanwhocodes/config-array": "^0.11.10",
9358
"@humanwhocodes/module-importer": "^1.0.1",
9359
"@nodelib/fs.walk": "^1.2.8",
9360
"ajv": "^6.12.4",
9361
"chalk": "^4.0.0",
9362
"cross-spawn": "^7.0.2",
···
9364
"doctrine": "^3.0.0",
9365
"escape-string-regexp": "^4.0.0",
9366
"eslint-scope": "^7.2.2",
9367
-
"eslint-visitor-keys": "^3.4.2",
9368
"espree": "^9.6.1",
9369
"esquery": "^1.4.2",
9370
"esutils": "^2.0.2",
···
9448
}
9449
},
9450
"eslint-visitor-keys": {
9451
-
"version": "3.4.2",
9452
-
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
9453
-
"integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
9454
"dev": true
9455
},
9456
"esm": {
···
9555
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
9556
},
9557
"fast-glob": {
9558
-
"version": "3.2.12",
9559
-
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
9560
-
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
9561
"dev": true,
9562
"requires": {
9563
"@nodelib/fs.stat": "^2.0.2",
···
9573
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
9574
"dev": true
9575
},
9576
-
"fast-levenshtein": {
9577
-
"version": "3.0.0",
9578
-
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz",
9579
-
"integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==",
9580
-
"dev": true,
9581
-
"requires": {
9582
-
"fastest-levenshtein": "^1.0.7"
9583
-
}
9584
-
},
9585
"fast-text-encoding": {
9586
"version": "1.0.6",
9587
"resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
···
9649
"version": "2.0.5",
9650
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
9651
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
9652
},
9653
"fill-range": {
9654
"version": "7.0.1",
···
9770
}
9771
},
9772
"fraction.js": {
9773
-
"version": "4.2.0",
9774
-
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
9775
-
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
9776
"dev": true
9777
},
9778
"fs-extra": {
···
9800
"optional": true
9801
},
9802
"function-bind": {
9803
-
"version": "1.1.1",
9804
-
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
9805
-
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
9806
"dev": true
9807
},
9808
"get-intrinsic": {
9809
-
"version": "1.2.0",
9810
-
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
9811
-
"integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
9812
"dev": true,
9813
"requires": {
9814
-
"function-bind": "^1.1.1",
9815
-
"has": "^1.0.3",
9816
-
"has-symbols": "^1.0.3"
9817
}
9818
},
9819
"get-stream": {
···
9849
}
9850
},
9851
"globals": {
9852
-
"version": "13.20.0",
9853
-
"resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
9854
-
"integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
9855
"dev": true,
9856
"requires": {
9857
"type-fest": "^0.20.2"
···
9944
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
9945
},
9946
"has-property-descriptors": {
9947
-
"version": "1.0.0",
9948
-
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
9949
-
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
9950
"dev": true,
9951
"requires": {
9952
-
"get-intrinsic": "^1.1.1"
9953
}
9954
},
9955
"has-symbols": {
9956
"version": "1.0.3",
9957
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
···
9965
"dev": true,
9966
"requires": {
9967
"has-symbols": "^1.0.2"
9968
}
9969
},
9970
"http-cache-semantics": {
···
10449
}
10450
},
10451
"jiti": {
10452
-
"version": "1.18.2",
10453
-
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
10454
-
"integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
10455
"dev": true
10456
},
10457
"js-yaml": {
···
10750
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
10751
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="
10752
},
10753
"merge-options": {
10754
"version": "3.0.4",
10755
"resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
···
10855
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz",
10856
"integrity": "sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg=="
10857
},
10858
"music-metadata-browser": {
10859
"version": "2.5.10",
10860
"resolved": "https://registry.npmjs.org/music-metadata-browser/-/music-metadata-browser-2.5.10.tgz",
···
10865
"music-metadata": "^7.13.3",
10866
"readable-stream": "^4.3.0",
10867
"readable-web-to-node-stream": "^3.0.2"
10868
-
},
10869
-
"dependencies": {
10870
-
"file-type": {
10871
-
"version": "16.5.4",
10872
-
"resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
10873
-
"integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
10874
-
"requires": {
10875
-
"readable-web-to-node-stream": "^3.0.0",
10876
-
"strtok3": "^6.2.4",
10877
-
"token-types": "^4.1.1"
10878
-
}
10879
-
},
10880
-
"music-metadata": {
10881
-
"version": "7.13.4",
10882
-
"resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-7.13.4.tgz",
10883
-
"integrity": "sha512-eRRoEMhhYdth2Ws24FmkvIqrtkIBE9sqjHbrRNpkg2Iux3zc37PQKRv2/r/mTtELb7XlB1uWC2UcKKX7BzNMGA==",
10884
-
"requires": {
10885
-
"@tokenizer/token": "^0.3.0",
10886
-
"content-type": "^1.0.5",
10887
-
"debug": "^4.3.4",
10888
-
"file-type": "^16.5.4",
10889
-
"media-typer": "^1.1.0",
10890
-
"strtok3": "^6.3.0",
10891
-
"token-types": "^4.2.1"
10892
-
}
10893
-
},
10894
-
"token-types": {
10895
-
"version": "4.2.1",
10896
-
"resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
10897
-
"integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
10898
-
"requires": {
10899
-
"@tokenizer/token": "^0.3.0",
10900
-
"ieee754": "^1.2.1"
10901
-
}
10902
-
}
10903
}
10904
},
10905
"mz": {
···
10914
}
10915
},
10916
"nanoid": {
10917
-
"version": "3.3.6",
10918
-
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
10919
-
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
10920
"dev": true
10921
},
10922
"napi-macros": {
···
10934
"version": "1.4.0",
10935
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
10936
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
10937
-
"dev": true
10938
-
},
10939
-
"natural-compare-lite": {
10940
-
"version": "1.4.0",
10941
-
"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
10942
-
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
10943
"dev": true
10944
},
10945
"negotiator": {
···
10967
"integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ=="
10968
},
10969
"node-releases": {
10970
-
"version": "2.0.10",
10971
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
10972
-
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
10973
"dev": true
10974
},
10975
"normalize-path": {
···
11025
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
11026
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
11027
"dev": true
11028
},
11029
"observable-webworkers": {
11030
"version": "2.0.1",
···
11255
"dev": true
11256
},
11257
"postcss": {
11258
-
"version": "8.4.27",
11259
-
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz",
11260
-
"integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==",
11261
"dev": true,
11262
"requires": {
11263
-
"nanoid": "^3.3.6",
11264
"picocolors": "^1.0.0",
11265
"source-map-js": "^1.0.2"
11266
}
11267
},
11268
"postcss-custom-properties": {
11269
-
"version": "13.3.0",
11270
-
"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.0.tgz",
11271
-
"integrity": "sha512-q4VgtIKSy5+KcUvQ0WxTjDy9DZjQ5VCXAZ9+tT9+aPMbA0z6s2t1nMw0QHszru1ib5ElkXl9JUpYYU37VVUs7g==",
11272
"dev": true,
11273
"requires": {
11274
-
"@csstools/cascade-layer-name-parser": "^1.0.4",
11275
-
"@csstools/css-parser-algorithms": "^2.3.1",
11276
-
"@csstools/css-tokenizer": "^2.2.0",
11277
"postcss-value-parser": "^4.2.0"
11278
}
11279
},
11280
"postcss-import": {
11281
-
"version": "15.1.0",
11282
-
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
11283
-
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
11284
"dev": true,
11285
"requires": {
11286
"postcss-value-parser": "^4.0.0",
···
11446
}
11447
},
11448
"readable-stream": {
11449
-
"version": "4.4.2",
11450
-
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz",
11451
-
"integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==",
11452
"requires": {
11453
"abort-controller": "^3.0.0",
11454
"buffer": "^6.0.3",
···
11537
}
11538
}
11539
},
11540
"require-from-string": {
11541
"version": "2.0.2",
11542
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
···
11716
}
11717
}
11718
},
11719
"setimmediate": {
11720
"version": "1.0.5",
11721
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
···
11908
"dev": true
11909
},
11910
"tailwindcss": {
11911
-
"version": "3.3.3",
11912
-
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz",
11913
-
"integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==",
11914
"dev": true,
11915
"requires": {
11916
"@alloc/quick-lru": "^5.2.0",
···
11918
"chokidar": "^3.5.3",
11919
"didyoumean": "^1.2.2",
11920
"dlv": "^1.1.3",
11921
-
"fast-glob": "^3.2.12",
11922
"glob-parent": "^6.0.2",
11923
"is-glob": "^4.0.3",
11924
-
"jiti": "^1.18.2",
11925
"lilconfig": "^2.1.0",
11926
"micromatch": "^4.0.5",
11927
"normalize-path": "^3.0.0",
···
11945
"requires": {
11946
"is-glob": "^4.0.3"
11947
}
11948
}
11949
}
11950
},
···
12010
"version": "1.0.4",
12011
"resolved": "https://registry.npmjs.org/timer.js/-/timer.js-1.0.4.tgz",
12012
"integrity": "sha512-UU/lL02CjPMu8cu29h/uyt5yBqcm0vlx51Je9xCmVcH+TLS+X/+chv4V4rHlb37ZiI4iUVyLuC3QvyoFMzadwQ=="
12013
},
12014
"to-regex-range": {
12015
"version": "5.0.1",
···
12025
"resolved": "https://registry.npmjs.org/tocca/-/tocca-2.0.9.tgz",
12026
"integrity": "sha512-FXofUGAFcgEIEOS3m9Dk9URaY3x+JeerPfVFc8K820PjV0JcCsH98BFxrVOTANC8YvM4QTrmKMol2/818gFmCw=="
12027
},
12028
"tr46": {
12029
"version": "0.0.3",
12030
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
···
12084
}
12085
},
12086
"uint8arrays": {
12087
-
"version": "4.0.6",
12088
-
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.6.tgz",
12089
-
"integrity": "sha512-4ZesjQhqOU2Ip6GPReIwN60wRxIupavL8T0Iy36BBHr2qyMrNxsPJvr7vpS4eFt8F8kSguWUPad6ZM9izs/vyw==",
12090
"requires": {
12091
"multiformats": "^12.0.1"
12092
},
···
12113
"dev": true
12114
},
12115
"update-browserslist-db": {
12116
-
"version": "1.0.11",
12117
-
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
12118
-
"integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
12119
"dev": true,
12120
"requires": {
12121
"escalade": "^3.1.1",
···
12316
"cuint": "^0.2.2"
12317
}
12318
},
12319
"yallist": {
12320
"version": "4.0.0",
12321
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
···
12327
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
12328
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
12329
"dev": true
12330
},
12331
"yauzl": {
12332
"version": "2.10.0",
···
18
"load-script2": "^2.0.5",
19
"localforage": "^1.10.0",
20
"lunr": "^2.3.8",
21
+
"mediainfo.js": "^0.2.1",
22
"music-metadata-browser": "^2.5.10",
23
+
"readable-stream": "^4.5.2",
24
"remotestoragejs": "^2.0.0-beta.6",
25
"serve": "^14.2.1",
26
"throttle-debounce": "^5.0.0",
27
"timer.js": "^1.0.4",
28
"tocca": "^2.0.9",
29
+
"uint8arrays": "^4.0.10"
30
},
31
"devDependencies": {
32
+
"@typescript-eslint/eslint-plugin": "^6.21.0",
33
+
"@typescript-eslint/parser": "^6.21.0",
34
+
"assert": "^2.1.0",
35
+
"autoprefixer": "^10.4.17",
36
"buffer": "^6.0.3",
37
"elm": "0.19.1-6",
38
+
"elm-format": "^0.8.7",
39
+
"elm-review": "^2.10.3",
40
+
"esbuild": "^0.20.0",
41
+
"esbuild-plugin-wasm": "^1.1.0",
42
+
"eslint": "^8.56.0",
43
"events": "^3.3.0",
44
"gren-lang": "^0.3.0",
45
"just-install": "^2.0.1",
46
+
"postcss": "^8.4.34",
47
+
"postcss-custom-properties": "^13.3.4",
48
+
"postcss-import": "^16.0.0",
49
"stream": "^0.0.2",
50
+
"tailwindcss": "^3.4.1",
51
"tailwindcss-animations": "^2.0.0",
52
+
"tailwindcss-interaction-variants": "^5.0.0",
53
+
"tiny-parse-argv": "^2.4.0"
54
}
55
},
56
"node_modules/@aashutoshrathi/word-wrap": {
···
74
"url": "https://github.com/sponsors/sindresorhus"
75
}
76
},
77
+
"node_modules/@avh4/elm-format-darwin-arm64": {
78
+
"version": "0.8.7-2",
79
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-darwin-arm64/-/elm-format-darwin-arm64-0.8.7-2.tgz",
80
+
"integrity": "sha512-F5JD44mJ3KX960J5GkXMfh1/dtkXuPcQpX2EToHQKjLTZUfnhZ++ytQQt0gAvrJ0bzoOvhNzjNjUHDA1ruTVbg==",
81
+
"cpu": [
82
+
"arm64"
83
+
],
84
+
"dev": true,
85
+
"optional": true,
86
+
"os": [
87
+
"darwin"
88
+
]
89
+
},
90
+
"node_modules/@avh4/elm-format-darwin-x64": {
91
+
"version": "0.8.7-2",
92
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-darwin-x64/-/elm-format-darwin-x64-0.8.7-2.tgz",
93
+
"integrity": "sha512-4pfF1cl0KyTion+7Mg4XKM3yi4Yc7vP76Kt/DotLVGJOSag4ISGic1og2mt8RZZ7XArybBmHNyYkiUbe/cEiCw==",
94
+
"cpu": [
95
+
"x64"
96
+
],
97
+
"dev": true,
98
+
"optional": true,
99
+
"os": [
100
+
"darwin"
101
+
]
102
+
},
103
+
"node_modules/@avh4/elm-format-linux-arm64": {
104
+
"version": "0.8.7-2",
105
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-linux-arm64/-/elm-format-linux-arm64-0.8.7-2.tgz",
106
+
"integrity": "sha512-WkVmuce2zU6s9dupHhqPc886Vaqpea8dZlxv2fpZ4wSzPUbiiKHoHZzoVndMIMTUL0TZukP3Ps0n/lWO5R5+FA==",
107
+
"cpu": [
108
+
"arm64"
109
+
],
110
+
"dev": true,
111
+
"optional": true,
112
+
"os": [
113
+
"linux"
114
+
]
115
+
},
116
+
"node_modules/@avh4/elm-format-linux-x64": {
117
+
"version": "0.8.7-2",
118
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-linux-x64/-/elm-format-linux-x64-0.8.7-2.tgz",
119
+
"integrity": "sha512-kmncfJrTBjVT94JtQvMf4M5Pn2Yl0sZt3wo7AzgFiDnB/CiZ+KjJyXuWM64NeGiv4MQqzPq65tsFXUH1CIJeiQ==",
120
+
"cpu": [
121
+
"x64"
122
+
],
123
+
"dev": true,
124
+
"optional": true,
125
+
"os": [
126
+
"linux"
127
+
]
128
+
},
129
+
"node_modules/@avh4/elm-format-win32-x64": {
130
+
"version": "0.8.7-2",
131
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-win32-x64/-/elm-format-win32-x64-0.8.7-2.tgz",
132
+
"integrity": "sha512-sBdMBGq/8mD8Y5C+fIr5vlb3N50yB7S1MfgeAq2QEbvkr/sKrCZI540i43lZDH9gWsfA1w2W8wCe0penFYzsGw==",
133
+
"cpu": [
134
+
"x64"
135
+
],
136
+
"dev": true,
137
+
"optional": true,
138
+
"os": [
139
+
"win32"
140
+
]
141
+
},
142
"node_modules/@chainsafe/is-ip": {
143
"version": "2.0.1",
144
"resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.1.tgz",
···
153
}
154
},
155
"node_modules/@csstools/cascade-layer-name-parser": {
156
+
"version": "1.0.7",
157
+
"resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.7.tgz",
158
+
"integrity": "sha512-9J4aMRJ7A2WRjaRLvsMeWrL69FmEuijtiW1XlK/sG+V0UJiHVYUyvj9mY4WAXfU/hGIiGOgL8e0jJcRyaZTjDQ==",
159
"dev": true,
160
"funding": [
161
{
···
171
"node": "^14 || ^16 || >=18"
172
},
173
"peerDependencies": {
174
+
"@csstools/css-parser-algorithms": "^2.5.0",
175
+
"@csstools/css-tokenizer": "^2.2.3"
176
}
177
},
178
"node_modules/@csstools/css-parser-algorithms": {
179
+
"version": "2.5.0",
180
+
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.5.0.tgz",
181
+
"integrity": "sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==",
182
"dev": true,
183
"funding": [
184
{
···
194
"node": "^14 || ^16 || >=18"
195
},
196
"peerDependencies": {
197
+
"@csstools/css-tokenizer": "^2.2.3"
198
}
199
},
200
"node_modules/@csstools/css-tokenizer": {
201
+
"version": "2.2.3",
202
+
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.3.tgz",
203
+
"integrity": "sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==",
204
"dev": true,
205
"funding": [
206
{
···
268
"win32"
269
]
270
},
271
+
"node_modules/@esbuild/aix-ppc64": {
272
+
"version": "0.20.0",
273
+
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz",
274
+
"integrity": "sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==",
275
+
"cpu": [
276
+
"ppc64"
277
+
],
278
+
"dev": true,
279
+
"optional": true,
280
+
"os": [
281
+
"aix"
282
+
],
283
+
"engines": {
284
+
"node": ">=12"
285
+
}
286
+
},
287
"node_modules/@esbuild/android-arm": {
288
+
"version": "0.20.0",
289
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.0.tgz",
290
+
"integrity": "sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==",
291
"cpu": [
292
"arm"
293
],
···
301
}
302
},
303
"node_modules/@esbuild/android-arm64": {
304
+
"version": "0.20.0",
305
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz",
306
+
"integrity": "sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==",
307
"cpu": [
308
"arm64"
309
],
···
317
}
318
},
319
"node_modules/@esbuild/android-x64": {
320
+
"version": "0.20.0",
321
+
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.0.tgz",
322
+
"integrity": "sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==",
323
"cpu": [
324
"x64"
325
],
···
333
}
334
},
335
"node_modules/@esbuild/darwin-arm64": {
336
+
"version": "0.20.0",
337
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz",
338
+
"integrity": "sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==",
339
"cpu": [
340
"arm64"
341
],
···
349
}
350
},
351
"node_modules/@esbuild/darwin-x64": {
352
+
"version": "0.20.0",
353
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz",
354
+
"integrity": "sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==",
355
"cpu": [
356
"x64"
357
],
···
365
}
366
},
367
"node_modules/@esbuild/freebsd-arm64": {
368
+
"version": "0.20.0",
369
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz",
370
+
"integrity": "sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==",
371
"cpu": [
372
"arm64"
373
],
···
381
}
382
},
383
"node_modules/@esbuild/freebsd-x64": {
384
+
"version": "0.20.0",
385
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz",
386
+
"integrity": "sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==",
387
"cpu": [
388
"x64"
389
],
···
397
}
398
},
399
"node_modules/@esbuild/linux-arm": {
400
+
"version": "0.20.0",
401
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz",
402
+
"integrity": "sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==",
403
"cpu": [
404
"arm"
405
],
···
413
}
414
},
415
"node_modules/@esbuild/linux-arm64": {
416
+
"version": "0.20.0",
417
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz",
418
+
"integrity": "sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==",
419
"cpu": [
420
"arm64"
421
],
···
429
}
430
},
431
"node_modules/@esbuild/linux-ia32": {
432
+
"version": "0.20.0",
433
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz",
434
+
"integrity": "sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==",
435
"cpu": [
436
"ia32"
437
],
···
445
}
446
},
447
"node_modules/@esbuild/linux-loong64": {
448
+
"version": "0.20.0",
449
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz",
450
+
"integrity": "sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==",
451
"cpu": [
452
"loong64"
453
],
···
461
}
462
},
463
"node_modules/@esbuild/linux-mips64el": {
464
+
"version": "0.20.0",
465
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz",
466
+
"integrity": "sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==",
467
"cpu": [
468
"mips64el"
469
],
···
477
}
478
},
479
"node_modules/@esbuild/linux-ppc64": {
480
+
"version": "0.20.0",
481
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz",
482
+
"integrity": "sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==",
483
"cpu": [
484
"ppc64"
485
],
···
493
}
494
},
495
"node_modules/@esbuild/linux-riscv64": {
496
+
"version": "0.20.0",
497
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz",
498
+
"integrity": "sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==",
499
"cpu": [
500
"riscv64"
501
],
···
509
}
510
},
511
"node_modules/@esbuild/linux-s390x": {
512
+
"version": "0.20.0",
513
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz",
514
+
"integrity": "sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==",
515
"cpu": [
516
"s390x"
517
],
···
525
}
526
},
527
"node_modules/@esbuild/linux-x64": {
528
+
"version": "0.20.0",
529
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz",
530
+
"integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==",
531
"cpu": [
532
"x64"
533
],
···
541
}
542
},
543
"node_modules/@esbuild/netbsd-x64": {
544
+
"version": "0.20.0",
545
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz",
546
+
"integrity": "sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==",
547
"cpu": [
548
"x64"
549
],
···
557
}
558
},
559
"node_modules/@esbuild/openbsd-x64": {
560
+
"version": "0.20.0",
561
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz",
562
+
"integrity": "sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==",
563
"cpu": [
564
"x64"
565
],
···
573
}
574
},
575
"node_modules/@esbuild/sunos-x64": {
576
+
"version": "0.20.0",
577
+
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz",
578
+
"integrity": "sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==",
579
"cpu": [
580
"x64"
581
],
···
589
}
590
},
591
"node_modules/@esbuild/win32-arm64": {
592
+
"version": "0.20.0",
593
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz",
594
+
"integrity": "sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==",
595
"cpu": [
596
"arm64"
597
],
···
605
}
606
},
607
"node_modules/@esbuild/win32-ia32": {
608
+
"version": "0.20.0",
609
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz",
610
+
"integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==",
611
"cpu": [
612
"ia32"
613
],
···
621
}
622
},
623
"node_modules/@esbuild/win32-x64": {
624
+
"version": "0.20.0",
625
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz",
626
+
"integrity": "sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==",
627
"cpu": [
628
"x64"
629
],
···
661
}
662
},
663
"node_modules/@eslint/eslintrc": {
664
+
"version": "2.1.4",
665
+
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
666
+
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
667
"dev": true,
668
"dependencies": {
669
"ajv": "^6.12.4",
···
684
}
685
},
686
"node_modules/@eslint/js": {
687
+
"version": "8.56.0",
688
+
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
689
+
"integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
690
"dev": true,
691
"engines": {
692
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
693
}
694
},
695
"node_modules/@humanwhocodes/config-array": {
696
+
"version": "0.11.14",
697
+
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
698
+
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
699
"dev": true,
700
"dependencies": {
701
+
"@humanwhocodes/object-schema": "^2.0.2",
702
+
"debug": "^4.3.1",
703
"minimatch": "^3.0.5"
704
},
705
"engines": {
···
720
}
721
},
722
"node_modules/@humanwhocodes/object-schema": {
723
+
"version": "2.0.2",
724
+
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
725
+
"integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
726
"dev": true
727
},
728
"node_modules/@ipld/dag-cbor": {
···
1424
"dev": true
1425
},
1426
"node_modules/@types/json-schema": {
1427
+
"version": "7.0.15",
1428
+
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
1429
+
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
1430
"dev": true
1431
},
1432
"node_modules/@types/keyv": {
···
1453
}
1454
},
1455
"node_modules/@types/semver": {
1456
+
"version": "7.5.6",
1457
+
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
1458
+
"integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
1459
"dev": true
1460
},
1461
"node_modules/@types/tv4": {
···
1474
}
1475
},
1476
"node_modules/@typescript-eslint/eslint-plugin": {
1477
+
"version": "6.21.0",
1478
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
1479
+
"integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
1480
"dev": true,
1481
"dependencies": {
1482
"@eslint-community/regexpp": "^4.5.1",
1483
+
"@typescript-eslint/scope-manager": "6.21.0",
1484
+
"@typescript-eslint/type-utils": "6.21.0",
1485
+
"@typescript-eslint/utils": "6.21.0",
1486
+
"@typescript-eslint/visitor-keys": "6.21.0",
1487
"debug": "^4.3.4",
1488
"graphemer": "^1.4.0",
1489
"ignore": "^5.2.4",
1490
"natural-compare": "^1.4.0",
1491
"semver": "^7.5.4",
1492
"ts-api-utils": "^1.0.1"
1493
},
···
1509
}
1510
},
1511
"node_modules/@typescript-eslint/parser": {
1512
+
"version": "6.21.0",
1513
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
1514
+
"integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
1515
"dev": true,
1516
"dependencies": {
1517
+
"@typescript-eslint/scope-manager": "6.21.0",
1518
+
"@typescript-eslint/types": "6.21.0",
1519
+
"@typescript-eslint/typescript-estree": "6.21.0",
1520
+
"@typescript-eslint/visitor-keys": "6.21.0",
1521
"debug": "^4.3.4"
1522
},
1523
"engines": {
···
1537
}
1538
},
1539
"node_modules/@typescript-eslint/scope-manager": {
1540
+
"version": "6.21.0",
1541
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
1542
+
"integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
1543
"dev": true,
1544
"dependencies": {
1545
+
"@typescript-eslint/types": "6.21.0",
1546
+
"@typescript-eslint/visitor-keys": "6.21.0"
1547
},
1548
"engines": {
1549
"node": "^16.0.0 || >=18.0.0"
···
1554
}
1555
},
1556
"node_modules/@typescript-eslint/type-utils": {
1557
+
"version": "6.21.0",
1558
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
1559
+
"integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
1560
"dev": true,
1561
"dependencies": {
1562
+
"@typescript-eslint/typescript-estree": "6.21.0",
1563
+
"@typescript-eslint/utils": "6.21.0",
1564
"debug": "^4.3.4",
1565
"ts-api-utils": "^1.0.1"
1566
},
···
1581
}
1582
},
1583
"node_modules/@typescript-eslint/types": {
1584
+
"version": "6.21.0",
1585
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
1586
+
"integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
1587
"dev": true,
1588
"engines": {
1589
"node": "^16.0.0 || >=18.0.0"
···
1594
}
1595
},
1596
"node_modules/@typescript-eslint/typescript-estree": {
1597
+
"version": "6.21.0",
1598
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
1599
+
"integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
1600
"dev": true,
1601
"dependencies": {
1602
+
"@typescript-eslint/types": "6.21.0",
1603
+
"@typescript-eslint/visitor-keys": "6.21.0",
1604
"debug": "^4.3.4",
1605
"globby": "^11.1.0",
1606
"is-glob": "^4.0.3",
1607
+
"minimatch": "9.0.3",
1608
"semver": "^7.5.4",
1609
"ts-api-utils": "^1.0.1"
1610
},
···
1621
}
1622
}
1623
},
1624
+
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
1625
+
"version": "2.0.1",
1626
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1627
+
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1628
+
"dev": true,
1629
+
"dependencies": {
1630
+
"balanced-match": "^1.0.0"
1631
+
}
1632
+
},
1633
+
"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
1634
+
"version": "9.0.3",
1635
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
1636
+
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
1637
+
"dev": true,
1638
+
"dependencies": {
1639
+
"brace-expansion": "^2.0.1"
1640
+
},
1641
+
"engines": {
1642
+
"node": ">=16 || 14 >=14.17"
1643
+
},
1644
+
"funding": {
1645
+
"url": "https://github.com/sponsors/isaacs"
1646
+
}
1647
+
},
1648
"node_modules/@typescript-eslint/utils": {
1649
+
"version": "6.21.0",
1650
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
1651
+
"integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
1652
"dev": true,
1653
"dependencies": {
1654
"@eslint-community/eslint-utils": "^4.4.0",
1655
"@types/json-schema": "^7.0.12",
1656
"@types/semver": "^7.5.0",
1657
+
"@typescript-eslint/scope-manager": "6.21.0",
1658
+
"@typescript-eslint/types": "6.21.0",
1659
+
"@typescript-eslint/typescript-estree": "6.21.0",
1660
"semver": "^7.5.4"
1661
},
1662
"engines": {
···
1671
}
1672
},
1673
"node_modules/@typescript-eslint/visitor-keys": {
1674
+
"version": "6.21.0",
1675
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
1676
+
"integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
1677
"dev": true,
1678
"dependencies": {
1679
+
"@typescript-eslint/types": "6.21.0",
1680
"eslint-visitor-keys": "^3.4.1"
1681
},
1682
"engines": {
···
1686
"type": "opencollective",
1687
"url": "https://opencollective.com/typescript-eslint"
1688
}
1689
+
},
1690
+
"node_modules/@ungap/structured-clone": {
1691
+
"version": "1.2.0",
1692
+
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
1693
+
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
1694
+
"dev": true
1695
},
1696
"node_modules/@zeit/schemas": {
1697
"version": "2.29.0",
···
1739
}
1740
},
1741
"node_modules/acorn": {
1742
+
"version": "8.11.3",
1743
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
1744
+
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
1745
"dev": true,
1746
"bin": {
1747
"acorn": "bin/acorn"
···
1891
}
1892
},
1893
"node_modules/assert": {
1894
+
"version": "2.1.0",
1895
+
"resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
1896
+
"integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
1897
"dev": true,
1898
"dependencies": {
1899
+
"call-bind": "^1.0.2",
1900
+
"is-nan": "^1.3.2",
1901
+
"object-is": "^1.1.5",
1902
+
"object.assign": "^4.1.4",
1903
+
"util": "^0.12.5"
1904
}
1905
},
1906
"node_modules/at-least-node": {
···
1913
}
1914
},
1915
"node_modules/autoprefixer": {
1916
+
"version": "10.4.17",
1917
+
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz",
1918
+
"integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==",
1919
"dev": true,
1920
"funding": [
1921
{
···
1925
{
1926
"type": "tidelift",
1927
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
1928
+
},
1929
+
{
1930
+
"type": "github",
1931
+
"url": "https://github.com/sponsors/ai"
1932
}
1933
],
1934
"dependencies": {
1935
+
"browserslist": "^4.22.2",
1936
+
"caniuse-lite": "^1.0.30001578",
1937
+
"fraction.js": "^4.3.7",
1938
"normalize-range": "^0.1.2",
1939
"picocolors": "^1.0.0",
1940
"postcss-value-parser": "^4.2.0"
···
2256
}
2257
},
2258
"node_modules/browserslist": {
2259
+
"version": "4.22.3",
2260
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
2261
+
"integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
2262
"dev": true,
2263
"funding": [
2264
{
···
2268
{
2269
"type": "tidelift",
2270
"url": "https://tidelift.com/funding/github/npm/browserslist"
2271
+
},
2272
+
{
2273
+
"type": "github",
2274
+
"url": "https://github.com/sponsors/ai"
2275
}
2276
],
2277
"dependencies": {
2278
+
"caniuse-lite": "^1.0.30001580",
2279
+
"electron-to-chromium": "^1.4.648",
2280
+
"node-releases": "^2.0.14",
2281
+
"update-browserslist-db": "^1.0.13"
2282
},
2283
"bin": {
2284
"browserslist": "cli.js"
···
2366
}
2367
},
2368
"node_modules/call-bind": {
2369
+
"version": "1.0.6",
2370
+
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz",
2371
+
"integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==",
2372
"dev": true,
2373
"dependencies": {
2374
+
"es-errors": "^1.3.0",
2375
+
"function-bind": "^1.1.2",
2376
+
"get-intrinsic": "^1.2.3",
2377
+
"set-function-length": "^1.2.0"
2378
+
},
2379
+
"engines": {
2380
+
"node": ">= 0.4"
2381
},
2382
"funding": {
2383
"url": "https://github.com/sponsors/ljharb"
···
2569
},
2570
"funding": {
2571
"url": "https://github.com/sponsors/sindresorhus"
2572
+
}
2573
+
},
2574
+
"node_modules/cliui": {
2575
+
"version": "8.0.1",
2576
+
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
2577
+
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
2578
+
"dependencies": {
2579
+
"string-width": "^4.2.0",
2580
+
"strip-ansi": "^6.0.1",
2581
+
"wrap-ansi": "^7.0.0"
2582
+
},
2583
+
"engines": {
2584
+
"node": ">=12"
2585
+
}
2586
+
},
2587
+
"node_modules/cliui/node_modules/wrap-ansi": {
2588
+
"version": "7.0.0",
2589
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
2590
+
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
2591
+
"dependencies": {
2592
+
"ansi-styles": "^4.0.0",
2593
+
"string-width": "^4.1.0",
2594
+
"strip-ansi": "^6.0.0"
2595
+
},
2596
+
"engines": {
2597
+
"node": ">=10"
2598
+
},
2599
+
"funding": {
2600
+
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
2601
}
2602
},
2603
"node_modules/clone": {
···
2939
"node": ">=10"
2940
}
2941
},
2942
+
"node_modules/define-data-property": {
2943
+
"version": "1.1.2",
2944
+
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz",
2945
+
"integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==",
2946
+
"dev": true,
2947
+
"dependencies": {
2948
+
"es-errors": "^1.3.0",
2949
+
"get-intrinsic": "^1.2.2",
2950
+
"gopd": "^1.0.1",
2951
+
"has-property-descriptors": "^1.0.1"
2952
+
},
2953
+
"engines": {
2954
+
"node": ">= 0.4"
2955
+
}
2956
+
},
2957
"node_modules/define-properties": {
2958
+
"version": "1.2.1",
2959
+
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
2960
+
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
2961
"dev": true,
2962
"dependencies": {
2963
+
"define-data-property": "^1.0.1",
2964
"has-property-descriptors": "^1.0.0",
2965
"object-keys": "^1.1.1"
2966
},
···
3028
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
3029
},
3030
"node_modules/electron-to-chromium": {
3031
+
"version": "1.4.657",
3032
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.657.tgz",
3033
+
"integrity": "sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==",
3034
"dev": true
3035
},
3036
"node_modules/elm": {
···
3052
"@elm_binaries/win32_x64": "0.19.1-0"
3053
}
3054
},
3055
+
"node_modules/elm-format": {
3056
+
"version": "0.8.7",
3057
+
"resolved": "https://registry.npmjs.org/elm-format/-/elm-format-0.8.7.tgz",
3058
+
"integrity": "sha512-sVzFXfWnb+6rzXK+q3e3Ccgr6/uS5mFbFk1VSmigC+x2XZ28QycAa7lS8owl009ALPhRQk+pZ95Eq5ANjpEZsQ==",
3059
+
"dev": true,
3060
+
"hasInstallScript": true,
3061
+
"bin": {
3062
+
"elm-format": "bin/elm-format"
3063
+
},
3064
+
"optionalDependencies": {
3065
+
"@avh4/elm-format-darwin-arm64": "0.8.7-2",
3066
+
"@avh4/elm-format-darwin-x64": "0.8.7-2",
3067
+
"@avh4/elm-format-linux-arm64": "0.8.7-2",
3068
+
"@avh4/elm-format-linux-x64": "0.8.7-2",
3069
+
"@avh4/elm-format-win32-x64": "0.8.7-2"
3070
+
}
3071
+
},
3072
"node_modules/elm-review": {
3073
+
"version": "2.10.3",
3074
+
"resolved": "https://registry.npmjs.org/elm-review/-/elm-review-2.10.3.tgz",
3075
+
"integrity": "sha512-9gBqLc5Xm3v9Ncpf8y2haEaBZZyMX25vmwQkrNqSIaNYQ2vdGOIx1eyqRtt1xwX5O8pZdqU8IWC/ENyTrOTKbw==",
3076
"dev": true,
3077
"dependencies": {
3078
"chalk": "^4.0.0",
3079
"chokidar": "^3.5.2",
3080
"cross-spawn": "^7.0.3",
3081
+
"elm-tooling": "^1.14.1",
3082
+
"fastest-levenshtein": "^1.0.16",
3083
"find-up": "^4.1.0",
3084
"folder-hash": "^3.3.0",
3085
"fs-extra": "^9.0.0",
···
3176
"integrity": "sha512-8UgIjzmGuoU6Wt6VC0tkJnzvc5xHL5yH7GdN+/QNxaaA3ckoyveCtV0QJqNCRa42bpyR1JhOwLSApwf2Id5xZg=="
3177
},
3178
"node_modules/elm-tooling": {
3179
+
"version": "1.15.0",
3180
+
"resolved": "https://registry.npmjs.org/elm-tooling/-/elm-tooling-1.15.0.tgz",
3181
+
"integrity": "sha512-quRE5LGJyrkPBoJ3MvFQ5RGgf80J0L0d3NkduStvXh4TmZuMXNC3Z/l2ZRoq2UTUaNWeYfO1Zx5wns1AvsTrnw==",
3182
"dev": true,
3183
"bin": {
3184
"elm-tooling": "index.js"
···
3209
"resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz",
3210
"integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA=="
3211
},
3212
+
"node_modules/es-errors": {
3213
+
"version": "1.3.0",
3214
+
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
3215
+
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
3216
+
"dev": true,
3217
+
"engines": {
3218
+
"node": ">= 0.4"
3219
+
}
3220
},
3221
"node_modules/esbuild": {
3222
+
"version": "0.20.0",
3223
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz",
3224
+
"integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==",
3225
"dev": true,
3226
"hasInstallScript": true,
3227
"bin": {
···
3231
"node": ">=12"
3232
},
3233
"optionalDependencies": {
3234
+
"@esbuild/aix-ppc64": "0.20.0",
3235
+
"@esbuild/android-arm": "0.20.0",
3236
+
"@esbuild/android-arm64": "0.20.0",
3237
+
"@esbuild/android-x64": "0.20.0",
3238
+
"@esbuild/darwin-arm64": "0.20.0",
3239
+
"@esbuild/darwin-x64": "0.20.0",
3240
+
"@esbuild/freebsd-arm64": "0.20.0",
3241
+
"@esbuild/freebsd-x64": "0.20.0",
3242
+
"@esbuild/linux-arm": "0.20.0",
3243
+
"@esbuild/linux-arm64": "0.20.0",
3244
+
"@esbuild/linux-ia32": "0.20.0",
3245
+
"@esbuild/linux-loong64": "0.20.0",
3246
+
"@esbuild/linux-mips64el": "0.20.0",
3247
+
"@esbuild/linux-ppc64": "0.20.0",
3248
+
"@esbuild/linux-riscv64": "0.20.0",
3249
+
"@esbuild/linux-s390x": "0.20.0",
3250
+
"@esbuild/linux-x64": "0.20.0",
3251
+
"@esbuild/netbsd-x64": "0.20.0",
3252
+
"@esbuild/openbsd-x64": "0.20.0",
3253
+
"@esbuild/sunos-x64": "0.20.0",
3254
+
"@esbuild/win32-arm64": "0.20.0",
3255
+
"@esbuild/win32-ia32": "0.20.0",
3256
+
"@esbuild/win32-x64": "0.20.0"
3257
+
}
3258
+
},
3259
+
"node_modules/esbuild-plugin-wasm": {
3260
+
"version": "1.1.0",
3261
+
"resolved": "https://registry.npmjs.org/esbuild-plugin-wasm/-/esbuild-plugin-wasm-1.1.0.tgz",
3262
+
"integrity": "sha512-0bQ6+1tUbySSnxzn5jnXHMDvYnT0cN/Wd4Syk8g/sqAIJUg7buTIi22svS3Qz6ssx895NT+TgLPb33xi1OkZig==",
3263
+
"dev": true,
3264
+
"engines": {
3265
+
"node": ">=0.10.0"
3266
+
},
3267
+
"funding": {
3268
+
"type": "individual",
3269
+
"url": "https://ko-fi.com/tschrock"
3270
}
3271
},
3272
"node_modules/escalade": {
3273
+
"version": "3.1.2",
3274
+
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
3275
+
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
3276
"engines": {
3277
"node": ">=6"
3278
}
···
3290
}
3291
},
3292
"node_modules/eslint": {
3293
+
"version": "8.56.0",
3294
+
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
3295
+
"integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
3296
"dev": true,
3297
"dependencies": {
3298
"@eslint-community/eslint-utils": "^4.2.0",
3299
"@eslint-community/regexpp": "^4.6.1",
3300
+
"@eslint/eslintrc": "^2.1.4",
3301
+
"@eslint/js": "8.56.0",
3302
+
"@humanwhocodes/config-array": "^0.11.13",
3303
"@humanwhocodes/module-importer": "^1.0.1",
3304
"@nodelib/fs.walk": "^1.2.8",
3305
+
"@ungap/structured-clone": "^1.2.0",
3306
"ajv": "^6.12.4",
3307
"chalk": "^4.0.0",
3308
"cross-spawn": "^7.0.2",
···
3310
"doctrine": "^3.0.0",
3311
"escape-string-regexp": "^4.0.0",
3312
"eslint-scope": "^7.2.2",
3313
+
"eslint-visitor-keys": "^3.4.3",
3314
"espree": "^9.6.1",
3315
"esquery": "^1.4.2",
3316
"esutils": "^2.0.2",
···
3361
}
3362
},
3363
"node_modules/eslint-visitor-keys": {
3364
+
"version": "3.4.3",
3365
+
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
3366
+
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
3367
"dev": true,
3368
"engines": {
3369
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
···
3592
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
3593
},
3594
"node_modules/fast-glob": {
3595
+
"version": "3.3.2",
3596
+
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
3597
+
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
3598
"dev": true,
3599
"dependencies": {
3600
"@nodelib/fs.stat": "^2.0.2",
···
3613
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
3614
"dev": true
3615
},
3616
"node_modules/fast-text-encoding": {
3617
"version": "1.0.6",
3618
"resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
···
3697
"version": "2.0.5",
3698
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
3699
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
3700
+
},
3701
+
"node_modules/file-type": {
3702
+
"version": "16.5.4",
3703
+
"resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
3704
+
"integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
3705
+
"dependencies": {
3706
+
"readable-web-to-node-stream": "^3.0.0",
3707
+
"strtok3": "^6.2.4",
3708
+
"token-types": "^4.1.1"
3709
+
},
3710
+
"engines": {
3711
+
"node": ">=10"
3712
+
},
3713
+
"funding": {
3714
+
"url": "https://github.com/sindresorhus/file-type?sponsor=1"
3715
+
}
3716
},
3717
"node_modules/fill-range": {
3718
"version": "7.0.1",
···
3877
}
3878
},
3879
"node_modules/fraction.js": {
3880
+
"version": "4.3.7",
3881
+
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
3882
+
"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
3883
"dev": true,
3884
"engines": {
3885
"node": "*"
3886
},
3887
"funding": {
3888
"type": "patreon",
3889
+
"url": "https://github.com/sponsors/rawify"
3890
}
3891
},
3892
"node_modules/fs-extra": {
···
3924
}
3925
},
3926
"node_modules/function-bind": {
3927
+
"version": "1.1.2",
3928
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
3929
+
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
3930
+
"dev": true,
3931
+
"funding": {
3932
+
"url": "https://github.com/sponsors/ljharb"
3933
+
}
3934
+
},
3935
+
"node_modules/get-caller-file": {
3936
+
"version": "2.0.5",
3937
+
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
3938
+
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
3939
+
"engines": {
3940
+
"node": "6.* || 8.* || >= 10.*"
3941
+
}
3942
},
3943
"node_modules/get-intrinsic": {
3944
+
"version": "1.2.4",
3945
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
3946
+
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
3947
"dev": true,
3948
"dependencies": {
3949
+
"es-errors": "^1.3.0",
3950
+
"function-bind": "^1.1.2",
3951
+
"has-proto": "^1.0.1",
3952
+
"has-symbols": "^1.0.3",
3953
+
"hasown": "^2.0.0"
3954
+
},
3955
+
"engines": {
3956
+
"node": ">= 0.4"
3957
},
3958
"funding": {
3959
"url": "https://github.com/sponsors/ljharb"
···
4007
}
4008
},
4009
"node_modules/globals": {
4010
+
"version": "13.24.0",
4011
+
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
4012
+
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
4013
"dev": true,
4014
"dependencies": {
4015
"type-fest": "^0.20.2"
···
4132
}
4133
},
4134
"node_modules/has-property-descriptors": {
4135
+
"version": "1.0.1",
4136
+
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
4137
+
"integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
4138
"dev": true,
4139
"dependencies": {
4140
+
"get-intrinsic": "^1.2.2"
4141
+
},
4142
+
"funding": {
4143
+
"url": "https://github.com/sponsors/ljharb"
4144
+
}
4145
+
},
4146
+
"node_modules/has-proto": {
4147
+
"version": "1.0.1",
4148
+
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
4149
+
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
4150
+
"dev": true,
4151
+
"engines": {
4152
+
"node": ">= 0.4"
4153
},
4154
"funding": {
4155
"url": "https://github.com/sponsors/ljharb"
···
4180
},
4181
"funding": {
4182
"url": "https://github.com/sponsors/ljharb"
4183
+
}
4184
+
},
4185
+
"node_modules/hasown": {
4186
+
"version": "2.0.0",
4187
+
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
4188
+
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
4189
+
"dev": true,
4190
+
"dependencies": {
4191
+
"function-bind": "^1.1.2"
4192
+
},
4193
+
"engines": {
4194
+
"node": ">= 0.4"
4195
}
4196
},
4197
"node_modules/http-cache-semantics": {
···
4922
}
4923
},
4924
"node_modules/jiti": {
4925
+
"version": "1.21.0",
4926
+
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
4927
+
"integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
4928
"dev": true,
4929
"bin": {
4930
"jiti": "bin/jiti.js"
···
5295
"node": ">= 0.8"
5296
}
5297
},
5298
+
"node_modules/mediainfo.js": {
5299
+
"version": "0.2.1",
5300
+
"resolved": "https://registry.npmjs.org/mediainfo.js/-/mediainfo.js-0.2.1.tgz",
5301
+
"integrity": "sha512-xbTstvy34gDmxNLVytixbY8Uw4DGKKsQIMvX7q1K8FwIk/gwAVLd30EVvPh/g+QHVscATRuqrNtbTb7XUjDeyw==",
5302
+
"dependencies": {
5303
+
"yargs": "^17.7.2"
5304
+
},
5305
+
"bin": {
5306
+
"mediainfo.js": "dist/esm/cli.js"
5307
+
},
5308
+
"engines": {
5309
+
"node": ">=14.16"
5310
+
}
5311
+
},
5312
"node_modules/merge-options": {
5313
"version": "3.0.4",
5314
"resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
···
5465
"npm": ">=7.0.0"
5466
}
5467
},
5468
+
"node_modules/music-metadata": {
5469
+
"version": "7.14.0",
5470
+
"resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-7.14.0.tgz",
5471
+
"integrity": "sha512-xrm3w7SV0Wk+OythZcSbaI8mcr/KHd0knJieu8bVpaPfMv/Agz5EooCAPz3OR5hbYMiUG6dgAPKZKnMzV+3amA==",
5472
"dependencies": {
5473
"@tokenizer/token": "^0.3.0",
5474
"content-type": "^1.0.5",
···
5486
"url": "https://github.com/sponsors/Borewit"
5487
}
5488
},
5489
+
"node_modules/music-metadata-browser": {
5490
+
"version": "2.5.10",
5491
+
"resolved": "https://registry.npmjs.org/music-metadata-browser/-/music-metadata-browser-2.5.10.tgz",
5492
+
"integrity": "sha512-03UnAmsSJoZZ5kK2BnEnd2zpH8LXRWQ6xlc7akKudhc2d9FT+yAiqapnmOzjW3g4cxxvIsSK5MVBO2Gi+Ymjfw==",
5493
"dependencies": {
5494
+
"buffer": "^6.0.3",
5495
+
"debug": "^4.3.4",
5496
+
"music-metadata": "^7.13.3",
5497
+
"readable-stream": "^4.3.0",
5498
+
"readable-web-to-node-stream": "^3.0.2"
5499
},
5500
"funding": {
5501
"type": "github",
···
5514
}
5515
},
5516
"node_modules/nanoid": {
5517
+
"version": "3.3.7",
5518
+
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
5519
+
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
5520
"dev": true,
5521
"funding": [
5522
{
···
5548
"version": "1.4.0",
5549
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
5550
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
5551
"dev": true
5552
},
5553
"node_modules/negotiator": {
···
5607
}
5608
},
5609
"node_modules/node-releases": {
5610
+
"version": "2.0.14",
5611
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
5612
+
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
5613
"dev": true
5614
},
5615
"node_modules/normalize-path": {
···
5696
"node": ">= 0.4"
5697
}
5698
},
5699
+
"node_modules/object.assign": {
5700
+
"version": "4.1.5",
5701
+
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
5702
+
"integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
5703
+
"dev": true,
5704
+
"dependencies": {
5705
+
"call-bind": "^1.0.5",
5706
+
"define-properties": "^1.2.1",
5707
+
"has-symbols": "^1.0.3",
5708
+
"object-keys": "^1.1.1"
5709
+
},
5710
+
"engines": {
5711
+
"node": ">= 0.4"
5712
+
},
5713
+
"funding": {
5714
+
"url": "https://github.com/sponsors/ljharb"
5715
+
}
5716
+
},
5717
"node_modules/observable-webworkers": {
5718
"version": "2.0.1",
5719
"resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz",
···
6035
}
6036
},
6037
"node_modules/postcss": {
6038
+
"version": "8.4.34",
6039
+
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz",
6040
+
"integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==",
6041
"dev": true,
6042
"funding": [
6043
{
···
6054
}
6055
],
6056
"dependencies": {
6057
+
"nanoid": "^3.3.7",
6058
"picocolors": "^1.0.0",
6059
"source-map-js": "^1.0.2"
6060
},
···
6063
}
6064
},
6065
"node_modules/postcss-custom-properties": {
6066
+
"version": "13.3.4",
6067
+
"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.4.tgz",
6068
+
"integrity": "sha512-9YN0gg9sG3OH+Z9xBrp2PWRb+O4msw+5Sbp3ZgqrblrwKspXVQe5zr5sVqi43gJGwW/Rv1A483PRQUzQOEewvA==",
6069
"dev": true,
6070
"funding": [
6071
{
···
6078
}
6079
],
6080
"dependencies": {
6081
+
"@csstools/cascade-layer-name-parser": "^1.0.7",
6082
+
"@csstools/css-parser-algorithms": "^2.5.0",
6083
+
"@csstools/css-tokenizer": "^2.2.3",
6084
"postcss-value-parser": "^4.2.0"
6085
},
6086
"engines": {
···
6091
}
6092
},
6093
"node_modules/postcss-import": {
6094
+
"version": "16.0.0",
6095
+
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.0.0.tgz",
6096
+
"integrity": "sha512-e77lhVvrD1I2y7dYmBv0k9ULTdArgEYZt97T4w6sFIU5uxIHvDFQlKgUUyY7v7Barj0Yf/zm5A4OquZN7jKm5Q==",
6097
"dev": true,
6098
"dependencies": {
6099
"postcss-value-parser": "^4.0.0",
···
6101
"resolve": "^1.1.7"
6102
},
6103
"engines": {
6104
+
"node": ">=18.0.0"
6105
},
6106
"peerDependencies": {
6107
"postcss": "^8.0.0"
···
6350
}
6351
},
6352
"node_modules/readable-stream": {
6353
+
"version": "4.5.2",
6354
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
6355
+
"integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
6356
"dependencies": {
6357
"abort-controller": "^3.0.0",
6358
"buffer": "^6.0.3",
···
6458
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.59.tgz",
6459
"integrity": "sha512-6u+36Dj3aDzhfBVUf/mfmc92OEdzQ2kx2jcXGdigfl70E/neV21ZHE6UCz4MDzTRcVqGAM27fk+DLXvyDsn3Jw=="
6460
},
6461
+
"node_modules/require-directory": {
6462
+
"version": "2.1.1",
6463
+
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
6464
+
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
6465
+
"engines": {
6466
+
"node": ">=0.10.0"
6467
+
}
6468
+
},
6469
"node_modules/require-from-string": {
6470
"version": "2.0.2",
6471
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
···
6745
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
6746
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
6747
},
6748
+
"node_modules/set-function-length": {
6749
+
"version": "1.2.1",
6750
+
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
6751
+
"integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
6752
+
"dev": true,
6753
+
"dependencies": {
6754
+
"define-data-property": "^1.1.2",
6755
+
"es-errors": "^1.3.0",
6756
+
"function-bind": "^1.1.2",
6757
+
"get-intrinsic": "^1.2.3",
6758
+
"gopd": "^1.0.1",
6759
+
"has-property-descriptors": "^1.0.1"
6760
+
},
6761
+
"engines": {
6762
+
"node": ">= 0.4"
6763
+
}
6764
+
},
6765
"node_modules/setimmediate": {
6766
"version": "1.0.5",
6767
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
···
7032
}
7033
},
7034
"node_modules/tailwindcss": {
7035
+
"version": "3.4.1",
7036
+
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
7037
+
"integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
7038
"dev": true,
7039
"dependencies": {
7040
"@alloc/quick-lru": "^5.2.0",
···
7042
"chokidar": "^3.5.3",
7043
"didyoumean": "^1.2.2",
7044
"dlv": "^1.1.3",
7045
+
"fast-glob": "^3.3.0",
7046
"glob-parent": "^6.0.2",
7047
"is-glob": "^4.0.3",
7048
+
"jiti": "^1.19.1",
7049
"lilconfig": "^2.1.0",
7050
"micromatch": "^4.0.5",
7051
"normalize-path": "^3.0.0",
···
7099
},
7100
"engines": {
7101
"node": ">=10.13.0"
7102
+
}
7103
+
},
7104
+
"node_modules/tailwindcss/node_modules/postcss-import": {
7105
+
"version": "15.1.0",
7106
+
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
7107
+
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
7108
+
"dev": true,
7109
+
"dependencies": {
7110
+
"postcss-value-parser": "^4.0.0",
7111
+
"read-cache": "^1.0.0",
7112
+
"resolve": "^1.1.7"
7113
+
},
7114
+
"engines": {
7115
+
"node": ">=14.0.0"
7116
+
},
7117
+
"peerDependencies": {
7118
+
"postcss": "^8.0.0"
7119
}
7120
},
7121
"node_modules/terminal-link": {
···
7174
"resolved": "https://registry.npmjs.org/timer.js/-/timer.js-1.0.4.tgz",
7175
"integrity": "sha512-UU/lL02CjPMu8cu29h/uyt5yBqcm0vlx51Je9xCmVcH+TLS+X/+chv4V4rHlb37ZiI4iUVyLuC3QvyoFMzadwQ=="
7176
},
7177
+
"node_modules/tiny-parse-argv": {
7178
+
"version": "2.4.0",
7179
+
"resolved": "https://registry.npmjs.org/tiny-parse-argv/-/tiny-parse-argv-2.4.0.tgz",
7180
+
"integrity": "sha512-WTEsnmeHNr99hLQIDA+gnsS+fDsCDITlqgI+zEhx9M6ErPt0heoNZ1PGvql6wcf95sIx40J0MLYXaPveGwtpoA==",
7181
+
"dev": true
7182
+
},
7183
"node_modules/to-regex-range": {
7184
"version": "5.0.1",
7185
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
···
7196
"version": "2.0.9",
7197
"resolved": "https://registry.npmjs.org/tocca/-/tocca-2.0.9.tgz",
7198
"integrity": "sha512-FXofUGAFcgEIEOS3m9Dk9URaY3x+JeerPfVFc8K820PjV0JcCsH98BFxrVOTANC8YvM4QTrmKMol2/818gFmCw=="
7199
+
},
7200
+
"node_modules/token-types": {
7201
+
"version": "4.2.1",
7202
+
"resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
7203
+
"integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
7204
+
"dependencies": {
7205
+
"@tokenizer/token": "^0.3.0",
7206
+
"ieee754": "^1.2.1"
7207
+
},
7208
+
"engines": {
7209
+
"node": ">=10"
7210
+
},
7211
+
"funding": {
7212
+
"type": "github",
7213
+
"url": "https://github.com/sponsors/Borewit"
7214
+
}
7215
},
7216
"node_modules/tr46": {
7217
"version": "0.0.3",
···
7300
}
7301
},
7302
"node_modules/uint8arrays": {
7303
+
"version": "4.0.10",
7304
+
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz",
7305
+
"integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==",
7306
"dependencies": {
7307
"multiformats": "^12.0.1"
7308
}
···
7337
}
7338
},
7339
"node_modules/update-browserslist-db": {
7340
+
"version": "1.0.13",
7341
+
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
7342
+
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
7343
"dev": true,
7344
"funding": [
7345
{
···
7619
"cuint": "^0.2.2"
7620
}
7621
},
7622
+
"node_modules/y18n": {
7623
+
"version": "5.0.8",
7624
+
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
7625
+
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
7626
+
"engines": {
7627
+
"node": ">=10"
7628
+
}
7629
+
},
7630
"node_modules/yallist": {
7631
"version": "4.0.0",
7632
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
···
7642
"node": ">= 14"
7643
}
7644
},
7645
+
"node_modules/yargs": {
7646
+
"version": "17.7.2",
7647
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
7648
+
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
7649
+
"dependencies": {
7650
+
"cliui": "^8.0.1",
7651
+
"escalade": "^3.1.1",
7652
+
"get-caller-file": "^2.0.5",
7653
+
"require-directory": "^2.1.1",
7654
+
"string-width": "^4.2.3",
7655
+
"y18n": "^5.0.5",
7656
+
"yargs-parser": "^21.1.1"
7657
+
},
7658
+
"engines": {
7659
+
"node": ">=12"
7660
+
}
7661
+
},
7662
+
"node_modules/yargs-parser": {
7663
+
"version": "21.1.1",
7664
+
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
7665
+
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
7666
+
"engines": {
7667
+
"node": ">=12"
7668
+
}
7669
+
},
7670
"node_modules/yauzl": {
7671
"version": "2.10.0",
7672
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
···
7703
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
7704
"dev": true
7705
},
7706
+
"@avh4/elm-format-darwin-arm64": {
7707
+
"version": "0.8.7-2",
7708
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-darwin-arm64/-/elm-format-darwin-arm64-0.8.7-2.tgz",
7709
+
"integrity": "sha512-F5JD44mJ3KX960J5GkXMfh1/dtkXuPcQpX2EToHQKjLTZUfnhZ++ytQQt0gAvrJ0bzoOvhNzjNjUHDA1ruTVbg==",
7710
+
"dev": true,
7711
+
"optional": true
7712
+
},
7713
+
"@avh4/elm-format-darwin-x64": {
7714
+
"version": "0.8.7-2",
7715
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-darwin-x64/-/elm-format-darwin-x64-0.8.7-2.tgz",
7716
+
"integrity": "sha512-4pfF1cl0KyTion+7Mg4XKM3yi4Yc7vP76Kt/DotLVGJOSag4ISGic1og2mt8RZZ7XArybBmHNyYkiUbe/cEiCw==",
7717
+
"dev": true,
7718
+
"optional": true
7719
+
},
7720
+
"@avh4/elm-format-linux-arm64": {
7721
+
"version": "0.8.7-2",
7722
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-linux-arm64/-/elm-format-linux-arm64-0.8.7-2.tgz",
7723
+
"integrity": "sha512-WkVmuce2zU6s9dupHhqPc886Vaqpea8dZlxv2fpZ4wSzPUbiiKHoHZzoVndMIMTUL0TZukP3Ps0n/lWO5R5+FA==",
7724
+
"dev": true,
7725
+
"optional": true
7726
+
},
7727
+
"@avh4/elm-format-linux-x64": {
7728
+
"version": "0.8.7-2",
7729
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-linux-x64/-/elm-format-linux-x64-0.8.7-2.tgz",
7730
+
"integrity": "sha512-kmncfJrTBjVT94JtQvMf4M5Pn2Yl0sZt3wo7AzgFiDnB/CiZ+KjJyXuWM64NeGiv4MQqzPq65tsFXUH1CIJeiQ==",
7731
+
"dev": true,
7732
+
"optional": true
7733
+
},
7734
+
"@avh4/elm-format-win32-x64": {
7735
+
"version": "0.8.7-2",
7736
+
"resolved": "https://registry.npmjs.org/@avh4/elm-format-win32-x64/-/elm-format-win32-x64-0.8.7-2.tgz",
7737
+
"integrity": "sha512-sBdMBGq/8mD8Y5C+fIr5vlb3N50yB7S1MfgeAq2QEbvkr/sKrCZI540i43lZDH9gWsfA1w2W8wCe0penFYzsGw==",
7738
+
"dev": true,
7739
+
"optional": true
7740
+
},
7741
"@chainsafe/is-ip": {
7742
"version": "2.0.1",
7743
"resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.1.tgz",
···
7752
}
7753
},
7754
"@csstools/cascade-layer-name-parser": {
7755
+
"version": "1.0.7",
7756
+
"resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.7.tgz",
7757
+
"integrity": "sha512-9J4aMRJ7A2WRjaRLvsMeWrL69FmEuijtiW1XlK/sG+V0UJiHVYUyvj9mY4WAXfU/hGIiGOgL8e0jJcRyaZTjDQ==",
7758
"dev": true,
7759
"requires": {}
7760
},
7761
"@csstools/css-parser-algorithms": {
7762
+
"version": "2.5.0",
7763
+
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.5.0.tgz",
7764
+
"integrity": "sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==",
7765
"dev": true,
7766
"requires": {}
7767
},
7768
"@csstools/css-tokenizer": {
7769
+
"version": "2.2.3",
7770
+
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.3.tgz",
7771
+
"integrity": "sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==",
7772
"dev": true
7773
},
7774
"@elm_binaries/darwin_arm64": {
···
7799
"dev": true,
7800
"optional": true
7801
},
7802
+
"@esbuild/aix-ppc64": {
7803
+
"version": "0.20.0",
7804
+
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz",
7805
+
"integrity": "sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==",
7806
+
"dev": true,
7807
+
"optional": true
7808
+
},
7809
"@esbuild/android-arm": {
7810
+
"version": "0.20.0",
7811
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.0.tgz",
7812
+
"integrity": "sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==",
7813
"dev": true,
7814
"optional": true
7815
},
7816
"@esbuild/android-arm64": {
7817
+
"version": "0.20.0",
7818
+
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz",
7819
+
"integrity": "sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==",
7820
"dev": true,
7821
"optional": true
7822
},
7823
"@esbuild/android-x64": {
7824
+
"version": "0.20.0",
7825
+
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.0.tgz",
7826
+
"integrity": "sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==",
7827
"dev": true,
7828
"optional": true
7829
},
7830
"@esbuild/darwin-arm64": {
7831
+
"version": "0.20.0",
7832
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz",
7833
+
"integrity": "sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==",
7834
"dev": true,
7835
"optional": true
7836
},
7837
"@esbuild/darwin-x64": {
7838
+
"version": "0.20.0",
7839
+
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz",
7840
+
"integrity": "sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==",
7841
"dev": true,
7842
"optional": true
7843
},
7844
"@esbuild/freebsd-arm64": {
7845
+
"version": "0.20.0",
7846
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz",
7847
+
"integrity": "sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==",
7848
"dev": true,
7849
"optional": true
7850
},
7851
"@esbuild/freebsd-x64": {
7852
+
"version": "0.20.0",
7853
+
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz",
7854
+
"integrity": "sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==",
7855
"dev": true,
7856
"optional": true
7857
},
7858
"@esbuild/linux-arm": {
7859
+
"version": "0.20.0",
7860
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz",
7861
+
"integrity": "sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==",
7862
"dev": true,
7863
"optional": true
7864
},
7865
"@esbuild/linux-arm64": {
7866
+
"version": "0.20.0",
7867
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz",
7868
+
"integrity": "sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==",
7869
"dev": true,
7870
"optional": true
7871
},
7872
"@esbuild/linux-ia32": {
7873
+
"version": "0.20.0",
7874
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz",
7875
+
"integrity": "sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==",
7876
"dev": true,
7877
"optional": true
7878
},
7879
"@esbuild/linux-loong64": {
7880
+
"version": "0.20.0",
7881
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz",
7882
+
"integrity": "sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==",
7883
"dev": true,
7884
"optional": true
7885
},
7886
"@esbuild/linux-mips64el": {
7887
+
"version": "0.20.0",
7888
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz",
7889
+
"integrity": "sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==",
7890
"dev": true,
7891
"optional": true
7892
},
7893
"@esbuild/linux-ppc64": {
7894
+
"version": "0.20.0",
7895
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz",
7896
+
"integrity": "sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==",
7897
"dev": true,
7898
"optional": true
7899
},
7900
"@esbuild/linux-riscv64": {
7901
+
"version": "0.20.0",
7902
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz",
7903
+
"integrity": "sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==",
7904
"dev": true,
7905
"optional": true
7906
},
7907
"@esbuild/linux-s390x": {
7908
+
"version": "0.20.0",
7909
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz",
7910
+
"integrity": "sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==",
7911
"dev": true,
7912
"optional": true
7913
},
7914
"@esbuild/linux-x64": {
7915
+
"version": "0.20.0",
7916
+
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz",
7917
+
"integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==",
7918
"dev": true,
7919
"optional": true
7920
},
7921
"@esbuild/netbsd-x64": {
7922
+
"version": "0.20.0",
7923
+
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz",
7924
+
"integrity": "sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==",
7925
"dev": true,
7926
"optional": true
7927
},
7928
"@esbuild/openbsd-x64": {
7929
+
"version": "0.20.0",
7930
+
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz",
7931
+
"integrity": "sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==",
7932
"dev": true,
7933
"optional": true
7934
},
7935
"@esbuild/sunos-x64": {
7936
+
"version": "0.20.0",
7937
+
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz",
7938
+
"integrity": "sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==",
7939
"dev": true,
7940
"optional": true
7941
},
7942
"@esbuild/win32-arm64": {
7943
+
"version": "0.20.0",
7944
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz",
7945
+
"integrity": "sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==",
7946
"dev": true,
7947
"optional": true
7948
},
7949
"@esbuild/win32-ia32": {
7950
+
"version": "0.20.0",
7951
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz",
7952
+
"integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==",
7953
"dev": true,
7954
"optional": true
7955
},
7956
"@esbuild/win32-x64": {
7957
+
"version": "0.20.0",
7958
+
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz",
7959
+
"integrity": "sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==",
7960
"dev": true,
7961
"optional": true
7962
},
···
7976
"dev": true
7977
},
7978
"@eslint/eslintrc": {
7979
+
"version": "2.1.4",
7980
+
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
7981
+
"integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
7982
"dev": true,
7983
"requires": {
7984
"ajv": "^6.12.4",
···
7993
}
7994
},
7995
"@eslint/js": {
7996
+
"version": "8.56.0",
7997
+
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
7998
+
"integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
7999
"dev": true
8000
},
8001
"@humanwhocodes/config-array": {
8002
+
"version": "0.11.14",
8003
+
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
8004
+
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
8005
"dev": true,
8006
"requires": {
8007
+
"@humanwhocodes/object-schema": "^2.0.2",
8008
+
"debug": "^4.3.1",
8009
"minimatch": "^3.0.5"
8010
}
8011
},
···
8016
"dev": true
8017
},
8018
"@humanwhocodes/object-schema": {
8019
+
"version": "2.0.2",
8020
+
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
8021
+
"integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
8022
"dev": true
8023
},
8024
"@ipld/dag-cbor": {
···
8554
"dev": true
8555
},
8556
"@types/json-schema": {
8557
+
"version": "7.0.15",
8558
+
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
8559
+
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
8560
"dev": true
8561
},
8562
"@types/keyv": {
···
8583
}
8584
},
8585
"@types/semver": {
8586
+
"version": "7.5.6",
8587
+
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
8588
+
"integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
8589
"dev": true
8590
},
8591
"@types/tv4": {
···
8604
}
8605
},
8606
"@typescript-eslint/eslint-plugin": {
8607
+
"version": "6.21.0",
8608
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
8609
+
"integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
8610
"dev": true,
8611
"requires": {
8612
"@eslint-community/regexpp": "^4.5.1",
8613
+
"@typescript-eslint/scope-manager": "6.21.0",
8614
+
"@typescript-eslint/type-utils": "6.21.0",
8615
+
"@typescript-eslint/utils": "6.21.0",
8616
+
"@typescript-eslint/visitor-keys": "6.21.0",
8617
"debug": "^4.3.4",
8618
"graphemer": "^1.4.0",
8619
"ignore": "^5.2.4",
8620
"natural-compare": "^1.4.0",
8621
"semver": "^7.5.4",
8622
"ts-api-utils": "^1.0.1"
8623
}
8624
},
8625
"@typescript-eslint/parser": {
8626
+
"version": "6.21.0",
8627
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
8628
+
"integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
8629
"dev": true,
8630
"requires": {
8631
+
"@typescript-eslint/scope-manager": "6.21.0",
8632
+
"@typescript-eslint/types": "6.21.0",
8633
+
"@typescript-eslint/typescript-estree": "6.21.0",
8634
+
"@typescript-eslint/visitor-keys": "6.21.0",
8635
"debug": "^4.3.4"
8636
}
8637
},
8638
"@typescript-eslint/scope-manager": {
8639
+
"version": "6.21.0",
8640
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
8641
+
"integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
8642
"dev": true,
8643
"requires": {
8644
+
"@typescript-eslint/types": "6.21.0",
8645
+
"@typescript-eslint/visitor-keys": "6.21.0"
8646
}
8647
},
8648
"@typescript-eslint/type-utils": {
8649
+
"version": "6.21.0",
8650
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
8651
+
"integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
8652
"dev": true,
8653
"requires": {
8654
+
"@typescript-eslint/typescript-estree": "6.21.0",
8655
+
"@typescript-eslint/utils": "6.21.0",
8656
"debug": "^4.3.4",
8657
"ts-api-utils": "^1.0.1"
8658
}
8659
},
8660
"@typescript-eslint/types": {
8661
+
"version": "6.21.0",
8662
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
8663
+
"integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
8664
"dev": true
8665
},
8666
"@typescript-eslint/typescript-estree": {
8667
+
"version": "6.21.0",
8668
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
8669
+
"integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
8670
"dev": true,
8671
"requires": {
8672
+
"@typescript-eslint/types": "6.21.0",
8673
+
"@typescript-eslint/visitor-keys": "6.21.0",
8674
"debug": "^4.3.4",
8675
"globby": "^11.1.0",
8676
"is-glob": "^4.0.3",
8677
+
"minimatch": "9.0.3",
8678
"semver": "^7.5.4",
8679
"ts-api-utils": "^1.0.1"
8680
+
},
8681
+
"dependencies": {
8682
+
"brace-expansion": {
8683
+
"version": "2.0.1",
8684
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
8685
+
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
8686
+
"dev": true,
8687
+
"requires": {
8688
+
"balanced-match": "^1.0.0"
8689
+
}
8690
+
},
8691
+
"minimatch": {
8692
+
"version": "9.0.3",
8693
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
8694
+
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
8695
+
"dev": true,
8696
+
"requires": {
8697
+
"brace-expansion": "^2.0.1"
8698
+
}
8699
+
}
8700
}
8701
},
8702
"@typescript-eslint/utils": {
8703
+
"version": "6.21.0",
8704
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
8705
+
"integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
8706
"dev": true,
8707
"requires": {
8708
"@eslint-community/eslint-utils": "^4.4.0",
8709
"@types/json-schema": "^7.0.12",
8710
"@types/semver": "^7.5.0",
8711
+
"@typescript-eslint/scope-manager": "6.21.0",
8712
+
"@typescript-eslint/types": "6.21.0",
8713
+
"@typescript-eslint/typescript-estree": "6.21.0",
8714
"semver": "^7.5.4"
8715
}
8716
},
8717
"@typescript-eslint/visitor-keys": {
8718
+
"version": "6.21.0",
8719
+
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
8720
+
"integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
8721
"dev": true,
8722
"requires": {
8723
+
"@typescript-eslint/types": "6.21.0",
8724
"eslint-visitor-keys": "^3.4.1"
8725
}
8726
+
},
8727
+
"@ungap/structured-clone": {
8728
+
"version": "1.2.0",
8729
+
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
8730
+
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
8731
+
"dev": true
8732
},
8733
"@zeit/schemas": {
8734
"version": "2.29.0",
···
8767
}
8768
},
8769
"acorn": {
8770
+
"version": "8.11.3",
8771
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
8772
+
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
8773
"dev": true
8774
},
8775
"acorn-jsx": {
···
8868
"dev": true
8869
},
8870
"assert": {
8871
+
"version": "2.1.0",
8872
+
"resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz",
8873
+
"integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
8874
"dev": true,
8875
"requires": {
8876
+
"call-bind": "^1.0.2",
8877
+
"is-nan": "^1.3.2",
8878
+
"object-is": "^1.1.5",
8879
+
"object.assign": "^4.1.4",
8880
+
"util": "^0.12.5"
8881
}
8882
},
8883
"at-least-node": {
···
8887
"dev": true
8888
},
8889
"autoprefixer": {
8890
+
"version": "10.4.17",
8891
+
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz",
8892
+
"integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==",
8893
"dev": true,
8894
"requires": {
8895
+
"browserslist": "^4.22.2",
8896
+
"caniuse-lite": "^1.0.30001578",
8897
+
"fraction.js": "^4.3.7",
8898
"normalize-range": "^0.1.2",
8899
"picocolors": "^1.0.0",
8900
"postcss-value-parser": "^4.2.0"
···
9104
}
9105
},
9106
"browserslist": {
9107
+
"version": "4.22.3",
9108
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
9109
+
"integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
9110
"dev": true,
9111
"requires": {
9112
+
"caniuse-lite": "^1.0.30001580",
9113
+
"electron-to-chromium": "^1.4.648",
9114
+
"node-releases": "^2.0.14",
9115
+
"update-browserslist-db": "^1.0.13"
9116
}
9117
},
9118
"buffer": {
···
9165
}
9166
},
9167
"call-bind": {
9168
+
"version": "1.0.6",
9169
+
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz",
9170
+
"integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==",
9171
"dev": true,
9172
"requires": {
9173
+
"es-errors": "^1.3.0",
9174
+
"function-bind": "^1.1.2",
9175
+
"get-intrinsic": "^1.2.3",
9176
+
"set-function-length": "^1.2.0"
9177
}
9178
},
9179
"callsites": {
···
9284
"is-wsl": "^2.2.0"
9285
}
9286
},
9287
+
"cliui": {
9288
+
"version": "8.0.1",
9289
+
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
9290
+
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
9291
+
"requires": {
9292
+
"string-width": "^4.2.0",
9293
+
"strip-ansi": "^6.0.1",
9294
+
"wrap-ansi": "^7.0.0"
9295
+
},
9296
+
"dependencies": {
9297
+
"wrap-ansi": {
9298
+
"version": "7.0.0",
9299
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
9300
+
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
9301
+
"requires": {
9302
+
"ansi-styles": "^4.0.0",
9303
+
"string-width": "^4.1.0",
9304
+
"strip-ansi": "^6.0.0"
9305
+
}
9306
+
}
9307
+
}
9308
+
},
9309
"clone": {
9310
"version": "1.0.4",
9311
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
···
9553
"integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
9554
"dev": true
9555
},
9556
+
"define-data-property": {
9557
+
"version": "1.1.2",
9558
+
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz",
9559
+
"integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==",
9560
+
"dev": true,
9561
+
"requires": {
9562
+
"es-errors": "^1.3.0",
9563
+
"get-intrinsic": "^1.2.2",
9564
+
"gopd": "^1.0.1",
9565
+
"has-property-descriptors": "^1.0.1"
9566
+
}
9567
+
},
9568
"define-properties": {
9569
+
"version": "1.2.1",
9570
+
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
9571
+
"integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
9572
"dev": true,
9573
"requires": {
9574
+
"define-data-property": "^1.0.1",
9575
"has-property-descriptors": "^1.0.0",
9576
"object-keys": "^1.1.1"
9577
}
···
9623
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
9624
},
9625
"electron-to-chromium": {
9626
+
"version": "1.4.657",
9627
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.657.tgz",
9628
+
"integrity": "sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==",
9629
"dev": true
9630
},
9631
"elm": {
···
9640
"@elm_binaries/win32_x64": "0.19.1-0"
9641
}
9642
},
9643
+
"elm-format": {
9644
+
"version": "0.8.7",
9645
+
"resolved": "https://registry.npmjs.org/elm-format/-/elm-format-0.8.7.tgz",
9646
+
"integrity": "sha512-sVzFXfWnb+6rzXK+q3e3Ccgr6/uS5mFbFk1VSmigC+x2XZ28QycAa7lS8owl009ALPhRQk+pZ95Eq5ANjpEZsQ==",
9647
+
"dev": true,
9648
+
"requires": {
9649
+
"@avh4/elm-format-darwin-arm64": "0.8.7-2",
9650
+
"@avh4/elm-format-darwin-x64": "0.8.7-2",
9651
+
"@avh4/elm-format-linux-arm64": "0.8.7-2",
9652
+
"@avh4/elm-format-linux-x64": "0.8.7-2",
9653
+
"@avh4/elm-format-win32-x64": "0.8.7-2"
9654
+
}
9655
+
},
9656
"elm-review": {
9657
+
"version": "2.10.3",
9658
+
"resolved": "https://registry.npmjs.org/elm-review/-/elm-review-2.10.3.tgz",
9659
+
"integrity": "sha512-9gBqLc5Xm3v9Ncpf8y2haEaBZZyMX25vmwQkrNqSIaNYQ2vdGOIx1eyqRtt1xwX5O8pZdqU8IWC/ENyTrOTKbw==",
9660
"dev": true,
9661
"requires": {
9662
"chalk": "^4.0.0",
9663
"chokidar": "^3.5.2",
9664
"cross-spawn": "^7.0.3",
9665
+
"elm-tooling": "^1.14.1",
9666
+
"fastest-levenshtein": "^1.0.16",
9667
"find-up": "^4.1.0",
9668
"folder-hash": "^3.3.0",
9669
"fs-extra": "^9.0.0",
···
9731
"integrity": "sha512-8UgIjzmGuoU6Wt6VC0tkJnzvc5xHL5yH7GdN+/QNxaaA3ckoyveCtV0QJqNCRa42bpyR1JhOwLSApwf2Id5xZg=="
9732
},
9733
"elm-tooling": {
9734
+
"version": "1.15.0",
9735
+
"resolved": "https://registry.npmjs.org/elm-tooling/-/elm-tooling-1.15.0.tgz",
9736
+
"integrity": "sha512-quRE5LGJyrkPBoJ3MvFQ5RGgf80J0L0d3NkduStvXh4TmZuMXNC3Z/l2ZRoq2UTUaNWeYfO1Zx5wns1AvsTrnw==",
9737
"dev": true
9738
},
9739
"emitter-component": {
···
9761
"resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz",
9762
"integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA=="
9763
},
9764
+
"es-errors": {
9765
+
"version": "1.3.0",
9766
+
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
9767
+
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
9768
"dev": true
9769
},
9770
"esbuild": {
9771
+
"version": "0.20.0",
9772
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz",
9773
+
"integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==",
9774
"dev": true,
9775
"requires": {
9776
+
"@esbuild/aix-ppc64": "0.20.0",
9777
+
"@esbuild/android-arm": "0.20.0",
9778
+
"@esbuild/android-arm64": "0.20.0",
9779
+
"@esbuild/android-x64": "0.20.0",
9780
+
"@esbuild/darwin-arm64": "0.20.0",
9781
+
"@esbuild/darwin-x64": "0.20.0",
9782
+
"@esbuild/freebsd-arm64": "0.20.0",
9783
+
"@esbuild/freebsd-x64": "0.20.0",
9784
+
"@esbuild/linux-arm": "0.20.0",
9785
+
"@esbuild/linux-arm64": "0.20.0",
9786
+
"@esbuild/linux-ia32": "0.20.0",
9787
+
"@esbuild/linux-loong64": "0.20.0",
9788
+
"@esbuild/linux-mips64el": "0.20.0",
9789
+
"@esbuild/linux-ppc64": "0.20.0",
9790
+
"@esbuild/linux-riscv64": "0.20.0",
9791
+
"@esbuild/linux-s390x": "0.20.0",
9792
+
"@esbuild/linux-x64": "0.20.0",
9793
+
"@esbuild/netbsd-x64": "0.20.0",
9794
+
"@esbuild/openbsd-x64": "0.20.0",
9795
+
"@esbuild/sunos-x64": "0.20.0",
9796
+
"@esbuild/win32-arm64": "0.20.0",
9797
+
"@esbuild/win32-ia32": "0.20.0",
9798
+
"@esbuild/win32-x64": "0.20.0"
9799
}
9800
},
9801
+
"esbuild-plugin-wasm": {
9802
+
"version": "1.1.0",
9803
+
"resolved": "https://registry.npmjs.org/esbuild-plugin-wasm/-/esbuild-plugin-wasm-1.1.0.tgz",
9804
+
"integrity": "sha512-0bQ6+1tUbySSnxzn5jnXHMDvYnT0cN/Wd4Syk8g/sqAIJUg7buTIi22svS3Qz6ssx895NT+TgLPb33xi1OkZig==",
9805
"dev": true
9806
+
},
9807
+
"escalade": {
9808
+
"version": "3.1.2",
9809
+
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
9810
+
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA=="
9811
},
9812
"escape-string-regexp": {
9813
"version": "4.0.0",
···
9816
"dev": true
9817
},
9818
"eslint": {
9819
+
"version": "8.56.0",
9820
+
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
9821
+
"integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
9822
"dev": true,
9823
"requires": {
9824
"@eslint-community/eslint-utils": "^4.2.0",
9825
"@eslint-community/regexpp": "^4.6.1",
9826
+
"@eslint/eslintrc": "^2.1.4",
9827
+
"@eslint/js": "8.56.0",
9828
+
"@humanwhocodes/config-array": "^0.11.13",
9829
"@humanwhocodes/module-importer": "^1.0.1",
9830
"@nodelib/fs.walk": "^1.2.8",
9831
+
"@ungap/structured-clone": "^1.2.0",
9832
"ajv": "^6.12.4",
9833
"chalk": "^4.0.0",
9834
"cross-spawn": "^7.0.2",
···
9836
"doctrine": "^3.0.0",
9837
"escape-string-regexp": "^4.0.0",
9838
"eslint-scope": "^7.2.2",
9839
+
"eslint-visitor-keys": "^3.4.3",
9840
"espree": "^9.6.1",
9841
"esquery": "^1.4.2",
9842
"esutils": "^2.0.2",
···
9920
}
9921
},
9922
"eslint-visitor-keys": {
9923
+
"version": "3.4.3",
9924
+
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
9925
+
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
9926
"dev": true
9927
},
9928
"esm": {
···
10027
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
10028
},
10029
"fast-glob": {
10030
+
"version": "3.3.2",
10031
+
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
10032
+
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
10033
"dev": true,
10034
"requires": {
10035
"@nodelib/fs.stat": "^2.0.2",
···
10045
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
10046
"dev": true
10047
},
10048
"fast-text-encoding": {
10049
"version": "1.0.6",
10050
"resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz",
···
10112
"version": "2.0.5",
10113
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
10114
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
10115
+
},
10116
+
"file-type": {
10117
+
"version": "16.5.4",
10118
+
"resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
10119
+
"integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
10120
+
"requires": {
10121
+
"readable-web-to-node-stream": "^3.0.0",
10122
+
"strtok3": "^6.2.4",
10123
+
"token-types": "^4.1.1"
10124
+
}
10125
},
10126
"fill-range": {
10127
"version": "7.0.1",
···
10243
}
10244
},
10245
"fraction.js": {
10246
+
"version": "4.3.7",
10247
+
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
10248
+
"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
10249
"dev": true
10250
},
10251
"fs-extra": {
···
10273
"optional": true
10274
},
10275
"function-bind": {
10276
+
"version": "1.1.2",
10277
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
10278
+
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
10279
"dev": true
10280
},
10281
+
"get-caller-file": {
10282
+
"version": "2.0.5",
10283
+
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
10284
+
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
10285
+
},
10286
"get-intrinsic": {
10287
+
"version": "1.2.4",
10288
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
10289
+
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
10290
"dev": true,
10291
"requires": {
10292
+
"es-errors": "^1.3.0",
10293
+
"function-bind": "^1.1.2",
10294
+
"has-proto": "^1.0.1",
10295
+
"has-symbols": "^1.0.3",
10296
+
"hasown": "^2.0.0"
10297
}
10298
},
10299
"get-stream": {
···
10329
}
10330
},
10331
"globals": {
10332
+
"version": "13.24.0",
10333
+
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
10334
+
"integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
10335
"dev": true,
10336
"requires": {
10337
"type-fest": "^0.20.2"
···
10424
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
10425
},
10426
"has-property-descriptors": {
10427
+
"version": "1.0.1",
10428
+
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
10429
+
"integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
10430
"dev": true,
10431
"requires": {
10432
+
"get-intrinsic": "^1.2.2"
10433
}
10434
},
10435
+
"has-proto": {
10436
+
"version": "1.0.1",
10437
+
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
10438
+
"integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
10439
+
"dev": true
10440
+
},
10441
"has-symbols": {
10442
"version": "1.0.3",
10443
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
···
10451
"dev": true,
10452
"requires": {
10453
"has-symbols": "^1.0.2"
10454
+
}
10455
+
},
10456
+
"hasown": {
10457
+
"version": "2.0.0",
10458
+
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
10459
+
"integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
10460
+
"dev": true,
10461
+
"requires": {
10462
+
"function-bind": "^1.1.2"
10463
}
10464
},
10465
"http-cache-semantics": {
···
10944
}
10945
},
10946
"jiti": {
10947
+
"version": "1.21.0",
10948
+
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
10949
+
"integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
10950
"dev": true
10951
},
10952
"js-yaml": {
···
11245
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
11246
"integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="
11247
},
11248
+
"mediainfo.js": {
11249
+
"version": "0.2.1",
11250
+
"resolved": "https://registry.npmjs.org/mediainfo.js/-/mediainfo.js-0.2.1.tgz",
11251
+
"integrity": "sha512-xbTstvy34gDmxNLVytixbY8Uw4DGKKsQIMvX7q1K8FwIk/gwAVLd30EVvPh/g+QHVscATRuqrNtbTb7XUjDeyw==",
11252
+
"requires": {
11253
+
"yargs": "^17.7.2"
11254
+
}
11255
+
},
11256
"merge-options": {
11257
"version": "3.0.4",
11258
"resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
···
11358
"resolved": "https://registry.npmjs.org/multiformats/-/multiformats-11.0.2.tgz",
11359
"integrity": "sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg=="
11360
},
11361
+
"music-metadata": {
11362
+
"version": "7.14.0",
11363
+
"resolved": "https://registry.npmjs.org/music-metadata/-/music-metadata-7.14.0.tgz",
11364
+
"integrity": "sha512-xrm3w7SV0Wk+OythZcSbaI8mcr/KHd0knJieu8bVpaPfMv/Agz5EooCAPz3OR5hbYMiUG6dgAPKZKnMzV+3amA==",
11365
+
"requires": {
11366
+
"@tokenizer/token": "^0.3.0",
11367
+
"content-type": "^1.0.5",
11368
+
"debug": "^4.3.4",
11369
+
"file-type": "^16.5.4",
11370
+
"media-typer": "^1.1.0",
11371
+
"strtok3": "^6.3.0",
11372
+
"token-types": "^4.2.1"
11373
+
}
11374
+
},
11375
"music-metadata-browser": {
11376
"version": "2.5.10",
11377
"resolved": "https://registry.npmjs.org/music-metadata-browser/-/music-metadata-browser-2.5.10.tgz",
···
11382
"music-metadata": "^7.13.3",
11383
"readable-stream": "^4.3.0",
11384
"readable-web-to-node-stream": "^3.0.2"
11385
}
11386
},
11387
"mz": {
···
11396
}
11397
},
11398
"nanoid": {
11399
+
"version": "3.3.7",
11400
+
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
11401
+
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
11402
"dev": true
11403
},
11404
"napi-macros": {
···
11416
"version": "1.4.0",
11417
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
11418
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
11419
"dev": true
11420
},
11421
"negotiator": {
···
11443
"integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ=="
11444
},
11445
"node-releases": {
11446
+
"version": "2.0.14",
11447
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
11448
+
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
11449
"dev": true
11450
},
11451
"normalize-path": {
···
11501
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
11502
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
11503
"dev": true
11504
+
},
11505
+
"object.assign": {
11506
+
"version": "4.1.5",
11507
+
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
11508
+
"integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
11509
+
"dev": true,
11510
+
"requires": {
11511
+
"call-bind": "^1.0.5",
11512
+
"define-properties": "^1.2.1",
11513
+
"has-symbols": "^1.0.3",
11514
+
"object-keys": "^1.1.1"
11515
+
}
11516
},
11517
"observable-webworkers": {
11518
"version": "2.0.1",
···
11743
"dev": true
11744
},
11745
"postcss": {
11746
+
"version": "8.4.34",
11747
+
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz",
11748
+
"integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==",
11749
"dev": true,
11750
"requires": {
11751
+
"nanoid": "^3.3.7",
11752
"picocolors": "^1.0.0",
11753
"source-map-js": "^1.0.2"
11754
}
11755
},
11756
"postcss-custom-properties": {
11757
+
"version": "13.3.4",
11758
+
"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.4.tgz",
11759
+
"integrity": "sha512-9YN0gg9sG3OH+Z9xBrp2PWRb+O4msw+5Sbp3ZgqrblrwKspXVQe5zr5sVqi43gJGwW/Rv1A483PRQUzQOEewvA==",
11760
"dev": true,
11761
"requires": {
11762
+
"@csstools/cascade-layer-name-parser": "^1.0.7",
11763
+
"@csstools/css-parser-algorithms": "^2.5.0",
11764
+
"@csstools/css-tokenizer": "^2.2.3",
11765
"postcss-value-parser": "^4.2.0"
11766
}
11767
},
11768
"postcss-import": {
11769
+
"version": "16.0.0",
11770
+
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.0.0.tgz",
11771
+
"integrity": "sha512-e77lhVvrD1I2y7dYmBv0k9ULTdArgEYZt97T4w6sFIU5uxIHvDFQlKgUUyY7v7Barj0Yf/zm5A4OquZN7jKm5Q==",
11772
"dev": true,
11773
"requires": {
11774
"postcss-value-parser": "^4.0.0",
···
11934
}
11935
},
11936
"readable-stream": {
11937
+
"version": "4.5.2",
11938
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
11939
+
"integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
11940
"requires": {
11941
"abort-controller": "^3.0.0",
11942
"buffer": "^6.0.3",
···
12025
}
12026
}
12027
},
12028
+
"require-directory": {
12029
+
"version": "2.1.1",
12030
+
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
12031
+
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
12032
+
},
12033
"require-from-string": {
12034
"version": "2.0.2",
12035
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
···
12209
}
12210
}
12211
},
12212
+
"set-function-length": {
12213
+
"version": "1.2.1",
12214
+
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz",
12215
+
"integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==",
12216
+
"dev": true,
12217
+
"requires": {
12218
+
"define-data-property": "^1.1.2",
12219
+
"es-errors": "^1.3.0",
12220
+
"function-bind": "^1.1.2",
12221
+
"get-intrinsic": "^1.2.3",
12222
+
"gopd": "^1.0.1",
12223
+
"has-property-descriptors": "^1.0.1"
12224
+
}
12225
+
},
12226
"setimmediate": {
12227
"version": "1.0.5",
12228
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
···
12415
"dev": true
12416
},
12417
"tailwindcss": {
12418
+
"version": "3.4.1",
12419
+
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
12420
+
"integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
12421
"dev": true,
12422
"requires": {
12423
"@alloc/quick-lru": "^5.2.0",
···
12425
"chokidar": "^3.5.3",
12426
"didyoumean": "^1.2.2",
12427
"dlv": "^1.1.3",
12428
+
"fast-glob": "^3.3.0",
12429
"glob-parent": "^6.0.2",
12430
"is-glob": "^4.0.3",
12431
+
"jiti": "^1.19.1",
12432
"lilconfig": "^2.1.0",
12433
"micromatch": "^4.0.5",
12434
"normalize-path": "^3.0.0",
···
12452
"requires": {
12453
"is-glob": "^4.0.3"
12454
}
12455
+
},
12456
+
"postcss-import": {
12457
+
"version": "15.1.0",
12458
+
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
12459
+
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
12460
+
"dev": true,
12461
+
"requires": {
12462
+
"postcss-value-parser": "^4.0.0",
12463
+
"read-cache": "^1.0.0",
12464
+
"resolve": "^1.1.7"
12465
+
}
12466
}
12467
}
12468
},
···
12528
"version": "1.0.4",
12529
"resolved": "https://registry.npmjs.org/timer.js/-/timer.js-1.0.4.tgz",
12530
"integrity": "sha512-UU/lL02CjPMu8cu29h/uyt5yBqcm0vlx51Je9xCmVcH+TLS+X/+chv4V4rHlb37ZiI4iUVyLuC3QvyoFMzadwQ=="
12531
+
},
12532
+
"tiny-parse-argv": {
12533
+
"version": "2.4.0",
12534
+
"resolved": "https://registry.npmjs.org/tiny-parse-argv/-/tiny-parse-argv-2.4.0.tgz",
12535
+
"integrity": "sha512-WTEsnmeHNr99hLQIDA+gnsS+fDsCDITlqgI+zEhx9M6ErPt0heoNZ1PGvql6wcf95sIx40J0MLYXaPveGwtpoA==",
12536
+
"dev": true
12537
},
12538
"to-regex-range": {
12539
"version": "5.0.1",
···
12549
"resolved": "https://registry.npmjs.org/tocca/-/tocca-2.0.9.tgz",
12550
"integrity": "sha512-FXofUGAFcgEIEOS3m9Dk9URaY3x+JeerPfVFc8K820PjV0JcCsH98BFxrVOTANC8YvM4QTrmKMol2/818gFmCw=="
12551
},
12552
+
"token-types": {
12553
+
"version": "4.2.1",
12554
+
"resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
12555
+
"integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
12556
+
"requires": {
12557
+
"@tokenizer/token": "^0.3.0",
12558
+
"ieee754": "^1.2.1"
12559
+
}
12560
+
},
12561
"tr46": {
12562
"version": "0.0.3",
12563
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
···
12617
}
12618
},
12619
"uint8arrays": {
12620
+
"version": "4.0.10",
12621
+
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-4.0.10.tgz",
12622
+
"integrity": "sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA==",
12623
"requires": {
12624
"multiformats": "^12.0.1"
12625
},
···
12646
"dev": true
12647
},
12648
"update-browserslist-db": {
12649
+
"version": "1.0.13",
12650
+
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
12651
+
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
12652
"dev": true,
12653
"requires": {
12654
"escalade": "^3.1.1",
···
12849
"cuint": "^0.2.2"
12850
}
12851
},
12852
+
"y18n": {
12853
+
"version": "5.0.8",
12854
+
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
12855
+
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
12856
+
},
12857
"yallist": {
12858
"version": "4.0.0",
12859
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
···
12865
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
12866
"integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
12867
"dev": true
12868
+
},
12869
+
"yargs": {
12870
+
"version": "17.7.2",
12871
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
12872
+
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
12873
+
"requires": {
12874
+
"cliui": "^8.0.1",
12875
+
"escalade": "^3.1.1",
12876
+
"get-caller-file": "^2.0.5",
12877
+
"require-directory": "^2.1.1",
12878
+
"string-width": "^4.2.3",
12879
+
"y18n": "^5.0.5",
12880
+
"yargs-parser": "^21.1.1"
12881
+
}
12882
+
},
12883
+
"yargs-parser": {
12884
+
"version": "21.1.1",
12885
+
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
12886
+
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
12887
},
12888
"yauzl": {
12889
"version": "2.10.0",
+18
-14
package.json
+18
-14
package.json
···
7
"repository": "github:icidasset/diffuse",
8
"license": "SEE LICENSE IN LICENSE",
9
"devDependencies": {
10
-
"@typescript-eslint/eslint-plugin": "^6.2.1",
11
-
"@typescript-eslint/parser": "^6.2.1",
12
-
"assert": "^2.0.0",
13
-
"autoprefixer": "^10.4.14",
14
"buffer": "^6.0.3",
15
"elm": "0.19.1-6",
16
-
"elm-review": "^2.10.2",
17
-
"esbuild": "^0.18.18",
18
-
"eslint": "^8.46.0",
19
"events": "^3.3.0",
20
"gren-lang": "^0.3.0",
21
"just-install": "^2.0.1",
22
-
"postcss": "^8.4.27",
23
-
"postcss-custom-properties": "^13.3.0",
24
-
"postcss-import": "^15.1.0",
25
"stream": "^0.0.2",
26
-
"tailwindcss": "^3.3.3",
27
"tailwindcss-animations": "^2.0.0",
28
-
"tailwindcss-interaction-variants": "^5.0.0"
29
},
30
"dependencies": {
31
"@oddjs/odd": "^0.37.2",
···
37
"load-script2": "^2.0.5",
38
"localforage": "^1.10.0",
39
"lunr": "^2.3.8",
40
"music-metadata-browser": "^2.5.10",
41
-
"readable-stream": "^4.4.2",
42
"remotestoragejs": "^2.0.0-beta.6",
43
"serve": "^14.2.1",
44
"throttle-debounce": "^5.0.0",
45
"timer.js": "^1.0.4",
46
"tocca": "^2.0.9",
47
-
"uint8arrays": "^4.0.6"
48
}
49
}
···
7
"repository": "github:icidasset/diffuse",
8
"license": "SEE LICENSE IN LICENSE",
9
"devDependencies": {
10
+
"@typescript-eslint/eslint-plugin": "^6.21.0",
11
+
"@typescript-eslint/parser": "^6.21.0",
12
+
"assert": "^2.1.0",
13
+
"autoprefixer": "^10.4.17",
14
"buffer": "^6.0.3",
15
"elm": "0.19.1-6",
16
+
"elm-format": "^0.8.7",
17
+
"elm-review": "^2.10.3",
18
+
"esbuild": "^0.20.0",
19
+
"esbuild-plugin-wasm": "^1.1.0",
20
+
"eslint": "^8.56.0",
21
"events": "^3.3.0",
22
"gren-lang": "^0.3.0",
23
"just-install": "^2.0.1",
24
+
"postcss": "^8.4.34",
25
+
"postcss-custom-properties": "^13.3.4",
26
+
"postcss-import": "^16.0.0",
27
"stream": "^0.0.2",
28
+
"tailwindcss": "^3.4.1",
29
"tailwindcss-animations": "^2.0.0",
30
+
"tailwindcss-interaction-variants": "^5.0.0",
31
+
"tiny-parse-argv": "^2.4.0"
32
},
33
"dependencies": {
34
"@oddjs/odd": "^0.37.2",
···
40
"load-script2": "^2.0.5",
41
"localforage": "^1.10.0",
42
"lunr": "^2.3.8",
43
+
"mediainfo.js": "^0.2.1",
44
"music-metadata-browser": "^2.5.10",
45
+
"readable-stream": "^4.5.2",
46
"remotestoragejs": "^2.0.0-beta.6",
47
"serve": "^14.2.1",
48
"throttle-debounce": "^5.0.0",
49
"timer.js": "^1.0.4",
50
"tocca": "^2.0.9",
51
+
"uint8arrays": "^4.0.10"
52
}
53
}
+2
-1
src/Applications/Brain/Tracks/State.elm
+2
-1
src/Applications/Brain/Tracks/State.elm
+7
-1
src/Applications/UI/Console.elm
+7
-1
src/Applications/UI/Console.elm
+15
-15
src/Applications/UI/Demo.elm
+15
-15
src/Applications/UI/Demo.elm
···
29
30
favourites : List Favourite
31
favourites =
32
-
[ { artist = "James Blake"
33
, title = "Essential Mix (09-17-2011)"
34
}
35
]
···
76
, nr = 1
77
78
--
79
-
, album = "Soulection White Label: 013"
80
-
, artist = "oriJanus"
81
, title = "Bonita"
82
83
--
···
95
, nr = 2
96
97
--
98
-
, album = "Soulection White Label: 013"
99
-
, artist = "oriJanus"
100
, title = "6"
101
102
--
···
114
, nr = 3
115
116
--
117
-
, album = "Soulection White Label: 013"
118
-
, artist = "oriJanus"
119
, title = "Hot Remix ft. Tek.Lun & Zikomo"
120
121
--
···
133
, nr = 9
134
135
--
136
-
, album = "Adult Swim Singles Project 2012"
137
-
, artist = "Com Truise"
138
, title = "Chemical Legs"
139
140
--
···
152
, nr = 4
153
154
--
155
-
, album = "The Miyazaki Tour EP"
156
-
, artist = "Manuele Atzeni"
157
, title = "Little Star"
158
159
--
···
171
, nr = 2
172
173
--
174
-
, album = "The Last Thing"
175
-
, artist = "Patrick Lee"
176
, title = "Quittin' Time"
177
178
--
···
190
, nr = 1
191
192
--
193
-
, album = "Essential Mix-SAT-09-17"
194
-
, artist = "James Blake"
195
, title = "Essential Mix (09-17-2011)"
196
197
--
···
29
30
favourites : List Favourite
31
favourites =
32
+
[ { artist = Just "James Blake"
33
, title = "Essential Mix (09-17-2011)"
34
}
35
]
···
76
, nr = 1
77
78
--
79
+
, album = Just "Soulection White Label: 013"
80
+
, artist = Just "oriJanus"
81
, title = "Bonita"
82
83
--
···
95
, nr = 2
96
97
--
98
+
, album = Just "Soulection White Label: 013"
99
+
, artist = Just "oriJanus"
100
, title = "6"
101
102
--
···
114
, nr = 3
115
116
--
117
+
, album = Just "Soulection White Label: 013"
118
+
, artist = Just "oriJanus"
119
, title = "Hot Remix ft. Tek.Lun & Zikomo"
120
121
--
···
133
, nr = 9
134
135
--
136
+
, album = Just "Adult Swim Singles Project 2012"
137
+
, artist = Just "Com Truise"
138
, title = "Chemical Legs"
139
140
--
···
152
, nr = 4
153
154
--
155
+
, album = Just "The Miyazaki Tour EP"
156
+
, artist = Just "Manuele Atzeni"
157
, title = "Little Star"
158
159
--
···
171
, nr = 2
172
173
--
174
+
, album = Just "The Last Thing"
175
+
, artist = Just "Patrick Lee"
176
, title = "Quittin' Time"
177
178
--
···
190
, nr = 1
191
192
--
193
+
, album = Just "Essential Mix-SAT-09-17"
194
+
, artist = Just "James Blake"
195
, title = "Essential Mix (09-17-2011)"
196
197
--
+12
-2
src/Applications/UI/Queue/View.elm
+12
-2
src/Applications/UI/Queue/View.elm
···
165
, "text-xs"
166
]
167
[ text (String.fromInt <| idx + 1), text "." ]
168
-
, text (track.tags.artist ++ " - " ++ track.tags.title)
169
]
170
, actions =
171
[ -- Remove
···
285
[ inline
286
[ "inline-block", "text-xs", "mr-2" ]
287
[ text (String.fromInt <| idx + 1), text "." ]
288
-
, text (track.tags.artist ++ " - " ++ track.tags.title)
289
]
290
, actions =
291
[ { icon = Icons.more_vert
···
165
, "text-xs"
166
]
167
[ text (String.fromInt <| idx + 1), text "." ]
168
+
, case track.tags.artist of
169
+
Just artist ->
170
+
text (artist ++ " - " ++ track.tags.title)
171
+
172
+
Nothing ->
173
+
text track.tags.title
174
]
175
, actions =
176
[ -- Remove
···
290
[ inline
291
[ "inline-block", "text-xs", "mr-2" ]
292
[ text (String.fromInt <| idx + 1), text "." ]
293
+
, case track.tags.artist of
294
+
Just artist ->
295
+
text (artist ++ " - " ++ track.tags.title)
296
+
297
+
Nothing ->
298
+
text track.tags.title
299
]
300
, actions =
301
[ { icon = Icons.more_vert
+8
-9
src/Applications/UI/Tracks/Covers.elm
+8
-9
src/Applications/UI/Tracks/Covers.elm
···
25
makeCover sortBy
26
in
27
tracks.arranged
28
-
|> List.indexedFoldr
29
-
(\_ identifiedTrack { covers, gathering } ->
30
let
31
group =
32
groupFn identifiedTrack
···
173
groupFn =
174
coverGroup sortBy
175
176
-
( _, groups, tracksPerGroup ) =
177
List.foldr
178
-
(\identifiedTrack ( previousGroup, acc, dict ) ->
179
let
180
group =
181
groupFn identifiedTrack
182
in
183
-
( group
184
-
--
185
-
, if group /= previousGroup then
186
group :: acc
187
188
else
···
193
dict
194
)
195
)
196
-
( "", [], Dict.empty )
197
tracks.harvested
198
in
199
covers.arranged
···
284
group =
285
gathering.previousGroup
286
287
identifiedTrack =
288
gathering.largestAlbumFavsSequence
289
|> Maybe.orElse gathering.largestAlbumSequence
···
306
isVariousArtists =
307
False
308
|| (amountOfTracks > 4 && largestArtistSequence < 3)
309
-
|| (String.toLower track.tags.artist == "va")
310
in
311
{ key = Base64.encode (coverKey isVariousArtists track)
312
, identifiedTrackCover = identifiedTrack
···
25
makeCover sortBy
26
in
27
tracks.arranged
28
+
|> List.foldr
29
+
(\identifiedTrack { covers, gathering } ->
30
let
31
group =
32
groupFn identifiedTrack
···
173
groupFn =
174
coverGroup sortBy
175
176
+
( groups, tracksPerGroup ) =
177
List.foldr
178
+
(\identifiedTrack ( acc, dict ) ->
179
let
180
group =
181
groupFn identifiedTrack
182
in
183
+
( if Dict.member group dict == False then
184
group :: acc
185
186
else
···
191
dict
192
)
193
)
194
+
( [], Dict.empty )
195
tracks.harvested
196
in
197
covers.arranged
···
282
group =
283
gathering.previousGroup
284
285
+
identifiedTrack : IdentifiedTrack
286
identifiedTrack =
287
gathering.largestAlbumFavsSequence
288
|> Maybe.orElse gathering.largestAlbumSequence
···
305
isVariousArtists =
306
False
307
|| (amountOfTracks > 4 && largestArtistSequence < 3)
308
+
|| (Maybe.map String.toLower track.tags.artist == Just "va")
309
in
310
{ key = Base64.encode (coverKey isVariousArtists track)
311
, identifiedTrackCover = identifiedTrack
+34
-16
src/Applications/UI/Tracks/Scene/Covers.elm
+34
-16
src/Applications/UI/Tracks/Scene/Covers.elm
···
673
|> .album
674
675
missingTracks =
676
-
album == Tracks.missingAlbumPlaceholder
677
678
maybeBlobUrlFromCache =
679
cachedCovers
···
800
identifiedTrackCover
801
802
missingTracks =
803
-
track.tags.album == Tracks.missingAlbumPlaceholder
804
in
805
brick
806
(if clickable then
···
827
, "pt-px"
828
, "truncate"
829
]
830
-
[ case sortBy of
831
-
Album ->
832
-
text track.tags.album
833
834
-
Artist ->
835
-
text track.tags.artist
836
837
-
_ ->
838
-
nothing
839
]
840
841
--
···
848
]
849
[ case sortBy of
850
Album ->
851
-
if missingTracks then
852
-
text "Missing tracks"
853
-
854
-
else if cover.variousArtists then
855
text "Various Artists"
856
857
else
858
-
text track.tags.artist
859
860
Artist ->
861
case List.length cover.trackIds of
862
1 ->
863
-
Html.text "1 track"
864
865
n ->
866
-
Html.text (String.fromInt n ++ " tracks")
867
868
_ ->
869
nothing
···
673
|> .album
674
675
missingTracks =
676
+
List.any
677
+
(Tuple.first >> .isMissing)
678
+
cover.tracks
679
680
maybeBlobUrlFromCache =
681
cachedCovers
···
802
identifiedTrackCover
803
804
missingTracks =
805
+
List.any
806
+
(Tuple.first >> .isMissing)
807
+
cover.tracks
808
in
809
brick
810
(if clickable then
···
831
, "pt-px"
832
, "truncate"
833
]
834
+
[
835
+
case sortBy of
836
+
Album ->
837
+
if missingTracks then
838
+
text "Missing tracks"
839
+
840
+
else
841
+
text (Maybe.withDefault "Unknown album" track.tags.album)
842
843
+
Artist ->
844
+
if missingTracks then
845
+
text "Missing tracks"
846
847
+
else
848
+
text (Maybe.withDefault "Unknown artist" track.tags.artist)
849
+
850
+
_ ->
851
+
nothing
852
]
853
854
--
···
861
]
862
[ case sortBy of
863
Album ->
864
+
if cover.variousArtists then
865
text "Various Artists"
866
867
+
else if not missingTracks && Maybe.isJust track.tags.artist then
868
+
text (Maybe.withDefault "" track.tags.artist)
869
else
870
+
case List.length cover.trackIds of
871
+
1 ->
872
+
text "1 track"
873
+
874
+
n ->
875
+
text (String.fromInt n ++ " tracks")
876
+
877
878
Artist ->
879
case List.length cover.trackIds of
880
1 ->
881
+
text "1 track"
882
883
n ->
884
+
text (String.fromInt n ++ " tracks")
885
886
_ ->
887
nothing
+7
-7
src/Applications/UI/Tracks/Scene/List.elm
+7
-7
src/Applications/UI/Tracks/Scene/List.elm
···
461
else if not showArtist && showAlbum then
462
[ favouriteColumn "5.75%" favouritesOnly favIdentifiers derivedColors
463
, otherColumn "51.25%" False track.tags.title
464
-
, otherColumn "43%" False track.tags.album
465
]
466
467
else if showArtist && not showAlbum then
468
[ favouriteColumn "5.75%" favouritesOnly favIdentifiers derivedColors
469
, otherColumn "51.25%" False track.tags.title
470
-
, otherColumn "43%" False track.tags.artist
471
]
472
473
else
474
[ favouriteColumn defFavColWidth favouritesOnly favIdentifiers derivedColors
475
, otherColumn "37.5%" False track.tags.title
476
-
, otherColumn "29.0%" False track.tags.artist
477
-
, otherColumn "29.0%" True track.tags.album
478
]
479
)
480
]
···
567
[ favouriteColumn defFavColWidth favouritesOnly favIdentifiers derivedColors
568
, playlistIndexColumn (Maybe.withDefault 0 identifiers.indexInPlaylist)
569
, otherColumn "36.0%" False track.tags.title
570
-
, otherColumn "27.5%" False track.tags.artist
571
-
, otherColumn "27.5%" True track.tags.album
572
]
573
574
else
575
[ favouriteColumn defFavColWidth favouritesOnly favIdentifiers derivedColors
576
, playlistIndexColumn (Maybe.withDefault 0 identifiers.indexInPlaylist)
577
, otherColumn "49.75%" False track.tags.title
578
-
, otherColumn "41.25%" False track.tags.artist
579
]
580
)
581
···
461
else if not showArtist && showAlbum then
462
[ favouriteColumn "5.75%" favouritesOnly favIdentifiers derivedColors
463
, otherColumn "51.25%" False track.tags.title
464
+
, otherColumn "43%" False (Maybe.withDefault fallbackAlbum track.tags.album)
465
]
466
467
else if showArtist && not showAlbum then
468
[ favouriteColumn "5.75%" favouritesOnly favIdentifiers derivedColors
469
, otherColumn "51.25%" False track.tags.title
470
+
, otherColumn "43%" False (Maybe.withDefault fallbackArtist track.tags.artist)
471
]
472
473
else
474
[ favouriteColumn defFavColWidth favouritesOnly favIdentifiers derivedColors
475
, otherColumn "37.5%" False track.tags.title
476
+
, otherColumn "29.0%" False (Maybe.withDefault fallbackArtist track.tags.artist)
477
+
, otherColumn "29.0%" True (Maybe.withDefault fallbackAlbum track.tags.album)
478
]
479
)
480
]
···
567
[ favouriteColumn defFavColWidth favouritesOnly favIdentifiers derivedColors
568
, playlistIndexColumn (Maybe.withDefault 0 identifiers.indexInPlaylist)
569
, otherColumn "36.0%" False track.tags.title
570
+
, otherColumn "27.5%" False (Maybe.withDefault fallbackArtist track.tags.artist)
571
+
, otherColumn "27.5%" True (Maybe.withDefault fallbackAlbum track.tags.album)
572
]
573
574
else
575
[ favouriteColumn defFavColWidth favouritesOnly favIdentifiers derivedColors
576
, playlistIndexColumn (Maybe.withDefault 0 identifiers.indexInPlaylist)
577
, otherColumn "49.75%" False track.tags.title
578
+
, otherColumn "41.25%" False (Maybe.withDefault fallbackArtist track.tags.artist)
579
]
580
)
581
+26
-2
src/Javascript/Brain/artwork.ts
+26
-2
src/Javascript/Brain/artwork.ts
···
2
// Album Covers
3
// (◕‿◕✿)
4
5
6
import { transformUrl } from "../urls"
7
import * as processing from "../processing"
···
28
// 1. TAGS
29
30
31
-
function findUsingTags(prep, app) {
32
return Promise.all(
33
[
34
transformUrl(prep.trackHeadUrl, app),
···
39
headUrl,
40
getUrl,
41
prep.trackFilename,
42
-
{ skipCovers: false }
43
44
)).then(tags => {
45
return tags?.picture
···
65
return fetch(`https://musicbrainz.org/ws/2/release/?query=${encodedQuery}&fmt=json`)
66
.then(r => r.json())
67
.then(r => musicBrainzCover(r.releases))
68
}
69
70
···
96
return fetch(`https://ws.audioscrobbler.com/2.0/?method=album.search&album=${query}&api_key=4f0fe85b67baef8bb7d008a8754a95e5&format=json`)
97
.then(r => r.json())
98
.then(r => lastFmCover(r.results.albummatches.album))
99
}
100
101
···
109
.catch(_ => lastFmCover(remainingMatches.slice(1)))
110
: album && lastFmCover(remainingMatches.slice(1))
111
}
···
2
// Album Covers
3
// (◕‿◕✿)
4
5
+
import MediaInfoFactory, { MediaInfo } from "mediainfo.js"
6
7
import { transformUrl } from "../urls"
8
import * as processing from "../processing"
···
29
// 1. TAGS
30
31
32
+
async function findUsingTags(prep, app) {
33
+
const mediainfo = await mediaInfoClient()
34
+
35
return Promise.all(
36
[
37
transformUrl(prep.trackHeadUrl, app),
···
42
headUrl,
43
getUrl,
44
prep.trackFilename,
45
+
mediainfo
46
47
)).then(tags => {
48
return tags?.picture
···
68
return fetch(`https://musicbrainz.org/ws/2/release/?query=${encodedQuery}&fmt=json`)
69
.then(r => r.json())
70
.then(r => musicBrainzCover(r.releases))
71
+
.catch(_ => REJECT())
72
}
73
74
···
100
return fetch(`https://ws.audioscrobbler.com/2.0/?method=album.search&album=${query}&api_key=4f0fe85b67baef8bb7d008a8754a95e5&format=json`)
101
.then(r => r.json())
102
.then(r => lastFmCover(r.results.albummatches.album))
103
+
.catch(_ => REJECT())
104
}
105
106
···
114
.catch(_ => lastFmCover(remainingMatches.slice(1)))
115
: album && lastFmCover(remainingMatches.slice(1))
116
}
117
+
118
+
119
+
120
+
// 🛠️
121
+
122
+
123
+
let client: MediaInfo<"object"> | null
124
+
125
+
126
+
async function mediaInfoClient() {
127
+
if (client) return client
128
+
client = await MediaInfoFactory({
129
+
coverData: true,
130
+
locateFile: () => {
131
+
return "../../wasm/media-info.wasm"
132
+
},
133
+
})
134
+
return client
135
+
}
+1
-1
src/Javascript/index.ts
+1
-1
src/Javascript/index.ts
···
267
// 🎵
268
if (item) {
269
const coverPrep = {
270
+
cacheKey: btoa(unescape(encodeURIComponent((item.trackTags.artist || "?") + " --- " + (item.trackTags.album || "?")))),
271
trackFilename: item.trackPath.split("/").reverse()[0],
272
trackPath: item.trackPath,
273
trackSourceId: item.sourceId,
+178
-88
src/Javascript/processing.ts
+178
-88
src/Javascript/processing.ts
···
4
//
5
// Audio processing, getting metadata, etc.
6
7
8
-
import * as musicMetadata from "music-metadata-browser"
9
-
import { makeTokenizer } from "@tokenizer/http"
10
11
-
import { mimeType } from "./common"
12
-
import { transformUrl } from "./urls"
13
-
14
15
// Contexts
16
// --------
17
18
-
export function processContext(context, app) {
19
-
const initialPromise = Promise.resolve([])
20
21
-
return context.urlsForTags.reduce((accumulator, urls, idx) => {
22
-
return accumulator.then(col => {
23
-
const filename = context
24
-
.receivedFilePaths[idx]
25
-
.split("/")
26
-
.reverse()[0]
27
28
-
return Promise.all([
29
-
transformUrl(urls.headUrl, app),
30
-
transformUrl(urls.getUrl, app)
31
32
-
]).then(([headUrl, getUrl]) => {
33
-
return getTags(headUrl, getUrl, filename, { skipCovers: true })
34
35
-
}).then(r => {
36
-
return col.concat(r)
37
38
-
}).catch(e => {
39
-
console.warn(e)
40
-
return col.concat(null)
41
42
-
})
43
-
})
44
45
-
}, initialPromise).then(col => {
46
-
context.receivedTags = col
47
-
return context
48
49
-
})
50
}
51
52
53
54
-
// Tags
55
-
// ----
56
57
58
-
const parserConfiguration = Object.assign(
59
-
{},
60
-
{ duration: false, skipPostHeaders: true }
61
-
)
62
63
64
-
export function getTags(headUrl, getUrl, filename, options) {
65
-
const fileExtMatch = filename.match(/\.(\w+)$/)
66
-
const fileExt = fileExtMatch && fileExtMatch[1]
67
68
-
const overrideContentType = (
69
-
getUrl.includes("googleapis.com") ||
70
-
getUrl.includes("googleusercontent.com")
71
-
)
72
73
-
return makeTokenizer(headUrl)
74
-
.then(tokenizer => {
75
-
const fileMime = overrideContentType
76
-
? mimeType(fileExt)
77
-
: tokenizer.fileInfo.mimeType
78
79
-
tokenizer.fileInfo.mimeType = fileMime
80
-
tokenizer.fileInfo.url = getUrl
81
82
-
if (tokenizer.rangeRequestClient) {
83
-
tokenizer.rangeRequestClient.url = getUrl
84
-
tokenizer.rangeRequestClient.resolvedUrl = undefined
85
-
}
86
87
-
return musicMetadata.parseFromTokenizer(
88
-
tokenizer,
89
-
Object.assign({}, parserConfiguration, options || {})
90
-
)
91
-
})
92
-
.then(result => {
93
-
return pickTags(filename, result)
94
-
})
95
-
.catch(err => {
96
-
console.error(err)
97
-
return fallbackTags(filename)
98
-
})
99
}
100
101
102
-
function pickTags(filename, result) {
103
-
const tags = result && result.common
104
-
if (!tags) return null
105
106
-
const artist = tags.artist && tags.artist.length ? tags.artist : null
107
-
const title = tags.title && tags.title.length ? tags.title : null
108
109
return {
110
disc: tags.disk.no || 1,
111
nr: tags.track.no || 1,
112
-
album: tags.album && tags.album.length ? tags.album : "Unknown",
113
-
artist: artist || "Unknown",
114
-
title: title ? title : (artist ? "Unknown" : filename.replace(/\.\w+$/, "")),
115
genre: (tags.genre && tags.genre[0]) || null,
116
year: tags.year || null,
117
-
picture: tags.picture ? tags.picture[0] : null
118
-
}
119
}
120
121
122
-
function fallbackTags(filename) {
123
-
const filenameWithoutExt = filename.replace(/\.\w+$/, "")
124
-
125
-
return {
126
-
disc: 1,
127
-
nr: 1,
128
-
album: "Unknown",
129
-
artist: "Unknown",
130
-
title: filenameWithoutExt,
131
-
genre: null,
132
-
year: null,
133
-
picture: null
134
-
}
135
}
···
4
//
5
// Audio processing, getting metadata, etc.
6
7
+
import type { IAudioMetadata } from "music-metadata";
8
+
import type { MediaInfo, MediaInfoType } from "mediainfo.js";
9
10
+
import MediaInfoFactory from "mediainfo.js";
11
+
import * as Uint8arrays from "uint8arrays";
12
13
+
import { transformUrl } from "./urls";
14
15
// Contexts
16
// --------
17
18
+
export async function processContext(context, app) {
19
+
const mediainfo = await mediaInfoClient();
20
+
const initialPromise = Promise.resolve([]);
21
+
22
+
return context.urlsForTags
23
+
.reduce((accumulator, urls, idx) => {
24
+
return accumulator.then((col) => {
25
+
const filename = context.receivedFilePaths[idx].split("/").reverse()[0];
26
+
27
+
return Promise.all([transformUrl(urls.headUrl, app), transformUrl(urls.getUrl, app)])
28
+
.then(([headUrl, getUrl]) => {
29
+
return getTags(headUrl, getUrl, filename, mediainfo);
30
+
})
31
+
.then((r) => {
32
+
return col.concat(r);
33
+
})
34
+
.catch((e) => {
35
+
console.warn(e);
36
+
return col.concat(null);
37
+
});
38
+
});
39
+
}, initialPromise)
40
+
.then((col) => {
41
+
context.receivedTags = col;
42
+
return context;
43
+
});
44
+
}
45
46
+
// Tags - General
47
+
// --------------
48
49
+
type Tags = {
50
+
disc: number;
51
+
nr: number;
52
+
album: string | null;
53
+
artist: string | null;
54
+
title: string;
55
+
genre: string | null;
56
+
year: number | null;
57
+
picture: { data: Uint8Array; format: string } | null;
58
+
};
59
60
+
export async function getTags(
61
+
headUrl: string,
62
+
getUrl: string,
63
+
filename: string,
64
+
mediainfo: MediaInfo<"object">,
65
+
) {
66
+
const miResult = await mediainfo
67
+
.analyzeData(getSize(headUrl), readChunk(getUrl))
68
+
.catch((_) => null);
69
+
const miTags = miResult && pickTagsFromMediaInfo(filename, miResult);
70
+
if (miTags) return miTags;
71
72
+
const musicMetadata = await import("music-metadata-browser").then((a) => a.default);
73
+
const httpTokenizer = await import("@tokenizer/http").then((a) => a.default);
74
75
+
const tokenizer = await httpTokenizer.makeTokenizer(headUrl);
76
+
tokenizer.fileInfo.url = getUrl;
77
78
+
// @ts-ignore
79
+
if (tokenizer.rangeRequestClient) {
80
+
// @ts-ignore
81
+
tokenizer.rangeRequestClient.url = getUrl;
82
+
// @ts-ignore
83
+
tokenizer.rangeRequestClient.resolvedUrl = undefined;
84
+
}
85
86
+
const mmResult = await musicMetadata.parseFromTokenizer(tokenizer);
87
+
const mmTags = pickTagsFromMusicMetadata(filename, mmResult);
88
+
if (mmTags) return mmTags;
89
90
+
return fallbackTags(filename);
91
}
92
93
+
function fallbackTags(filename: string): Tags {
94
+
const filenameWithoutExt = filename.replace(/\.\w+$/, "");
95
96
+
return {
97
+
disc: 1,
98
+
nr: 1,
99
+
album: null,
100
+
artist: null,
101
+
title: filenameWithoutExt,
102
+
genre: null,
103
+
year: null,
104
+
picture: null,
105
+
};
106
+
}
107
108
+
// Tags - Media Info
109
+
// -----------------
110
111
+
const getSize = (headUrl: string) => async (): Promise<number> => {
112
+
const response = await fetch(headUrl, { method: "HEAD" });
113
114
+
if (!response.ok) {
115
+
throw new Error(`HTTP error status=${response.status}: ${response.statusText}`);
116
+
}
117
118
+
const l = response.headers.get("Content-Length");
119
120
+
if (l) {
121
+
return parseInt(l, 10);
122
+
} else {
123
+
throw new Error("HTTP response doesn't have a Content-Length");
124
+
}
125
+
};
126
127
+
const readChunk =
128
+
(getUrl: string) =>
129
+
async (chunkSize: number, offset: number): Promise<Uint8Array> => {
130
+
if (chunkSize === 0) return new Uint8Array();
131
+
132
+
const from = offset;
133
+
const to = offset + chunkSize;
134
+
135
+
const start = to < from ? to : from;
136
+
const end = to < from ? from : to;
137
+
138
+
const response = await fetch(getUrl, {
139
+
method: "GET",
140
+
headers: {
141
+
Range: `bytes=${start}-${end}`,
142
+
},
143
+
});
144
+
145
+
if (!response.ok) {
146
+
throw new Error(`HTTP error status=${response.status}: ${response.statusText}`);
147
+
}
148
+
149
+
return new Uint8Array(await response.arrayBuffer());
150
+
};
151
+
152
+
function pickTagsFromMediaInfo(filename: string, result: MediaInfoType): Tags | null {
153
+
const tags = result?.media?.track?.filter((t) => t["@type"] === "General")[0];
154
+
if (!tags) return null;
155
+
156
+
let artist = tags.Performer?.length ? tags.Performer : null;
157
+
const title = tags.Title?.length ? tags.Title : null;
158
159
+
if (!artist && !title) return null;
160
161
+
if (artist && artist.includes(" / ")) {
162
+
artist = artist
163
+
.split(" / ")
164
+
.filter((a) => a.trim() !== "")
165
+
.join(", ");
166
+
}
167
168
+
const year = tags.Recorded_Date ? new Date(Date.parse(tags.Recorded_Date)).getFullYear() : null;
169
170
+
return {
171
+
disc: tags.Part_Position || 1,
172
+
nr: tags.Track_Position || 1,
173
+
album: tags.Album && tags.Album.length ? tags.Album : null,
174
+
artist: artist,
175
+
title: title || filename.replace(/\.\w+$/, ""),
176
+
genre: tags.Genre || null,
177
+
year: year !== null && isNaN(year) ? null : year,
178
+
picture: tags.Cover_Data
179
+
? {
180
+
data: Uint8arrays.fromString(tags.Cover_Data, "base64"),
181
+
format: tags.Cover_Mime || "image/jpeg",
182
+
}
183
+
: null,
184
+
};
185
}
186
187
+
// Tags - Music Metadata
188
+
// ---------------------
189
190
+
function pickTagsFromMusicMetadata(filename: string, result: IAudioMetadata): Tags | null {
191
+
const tags = result && result.common;
192
+
if (!tags) return null;
193
194
+
const artist = tags.artist && tags.artist.length ? tags.artist : null;
195
+
const title = tags.title && tags.title.length ? tags.title : null;
196
+
197
+
if (!artist && !title) return null;
198
199
return {
200
disc: tags.disk.no || 1,
201
nr: tags.track.no || 1,
202
+
album: tags.album && tags.album.length ? tags.album : null,
203
+
artist: artist,
204
+
title: title || filename.replace(/\.\w+$/, ""),
205
genre: (tags.genre && tags.genre[0]) || null,
206
year: tags.year || null,
207
+
picture:
208
+
tags.picture && tags.picture[0]
209
+
? { data: tags.picture[0].data, format: tags.picture[0].format }
210
+
: null,
211
+
};
212
}
213
214
+
// 🛠️
215
+
// --
216
217
+
async function mediaInfoClient() {
218
+
return await MediaInfoFactory({
219
+
coverData: false,
220
+
full: true,
221
+
locateFile: () => {
222
+
return "../../wasm/media-info.wasm";
223
+
},
224
+
});
225
}
+10
src/Library/Json/Encode/Ext.elm
+10
src/Library/Json/Encode/Ext.elm
+39
-21
src/Library/LastFm.elm
+39
-21
src/Library/LastFm.elm
···
96
{ url =
97
apiUrl
98
, body =
99
-
authenticatedBody
100
-
[ ( "album", track.tags.album )
101
-
, ( "artist", track.tags.artist )
102
-
, ( "duration", String.fromInt duration )
103
-
, ( "track", track.tags.title )
104
-
, ( "trackNumber", String.fromInt track.tags.nr )
105
106
-
--
107
-
, ( "method", "track.updateNowPlaying" )
108
-
, ( "sk", sessionKey )
109
-
]
110
, expect =
111
Http.expectWhatever (always msg)
112
}
···
123
{ url =
124
apiUrl
125
, body =
126
-
authenticatedBody
127
-
[ ( "album", track.tags.album )
128
-
, ( "artist", track.tags.artist )
129
-
, ( "duration", String.fromInt duration )
130
-
, ( "track", track.tags.title )
131
-
, ( "trackNumber", String.fromInt track.tags.nr )
132
133
-
--
134
-
, ( "method", "track.scrobble" )
135
-
, ( "sk", sessionKey )
136
-
, ( "timestamp", String.fromInt timestamp )
137
-
]
138
, expect =
139
Http.expectWhatever (always msg)
140
}
141
142
Nothing ->
143
Cmd.none
144
145
146
···
96
{ url =
97
apiUrl
98
, body =
99
+
[ ( "duration", String.fromInt duration )
100
+
, ( "track", track.tags.title )
101
+
, ( "trackNumber", String.fromInt track.tags.nr )
102
103
+
--
104
+
, ( "method", "track.updateNowPlaying" )
105
+
, ( "sk", sessionKey )
106
+
]
107
+
|> addAlbum track
108
+
|> addArtist track
109
+
|> authenticatedBody
110
, expect =
111
Http.expectWhatever (always msg)
112
}
···
123
{ url =
124
apiUrl
125
, body =
126
+
[ ( "duration", String.fromInt duration )
127
+
, ( "track", track.tags.title )
128
+
, ( "trackNumber", String.fromInt track.tags.nr )
129
130
+
--
131
+
, ( "method", "track.scrobble" )
132
+
, ( "sk", sessionKey )
133
+
, ( "timestamp", String.fromInt timestamp )
134
+
]
135
+
|> addAlbum track
136
+
|> addArtist track
137
+
|> authenticatedBody
138
, expect =
139
Http.expectWhatever (always msg)
140
}
141
142
Nothing ->
143
Cmd.none
144
+
145
+
146
+
addAlbum track list =
147
+
case track.tags.album of
148
+
Just album ->
149
+
( "album", album ) :: list
150
+
151
+
Nothing ->
152
+
list
153
+
154
+
155
+
addArtist track list =
156
+
case track.tags.artist of
157
+
Just artist ->
158
+
( "artist", artist ) :: list
159
+
160
+
Nothing ->
161
+
list
162
163
164
+2
-2
src/Library/Playlists.elm
+2
-2
src/Library/Playlists.elm
+5
-4
src/Library/Playlists/Encoding.elm
+5
-4
src/Library/Playlists/Encoding.elm
···
3
import Json.Decode as Decode
4
import Json.Decode.Ext as Decode
5
import Json.Encode as Encode
6
import Playlists exposing (..)
7
8
···
23
encodePlaylistTrack : PlaylistTrack -> Encode.Value
24
encodePlaylistTrack playlistTrack =
25
Encode.object
26
-
[ ( "album", Encode.string playlistTrack.album )
27
-
, ( "artist", Encode.string playlistTrack.artist )
28
, ( "title", Encode.string playlistTrack.title )
29
]
30
···
45
playlistTrackDecoder : Decode.Decoder PlaylistTrack
46
playlistTrackDecoder =
47
Decode.map3 PlaylistTrack
48
-
(Decode.field "album" Decode.string)
49
-
(Decode.field "artist" Decode.string)
50
(Decode.field "title" Decode.string)
···
3
import Json.Decode as Decode
4
import Json.Decode.Ext as Decode
5
import Json.Encode as Encode
6
+
import Json.Encode.Ext exposing (..)
7
import Playlists exposing (..)
8
9
···
24
encodePlaylistTrack : PlaylistTrack -> Encode.Value
25
encodePlaylistTrack playlistTrack =
26
Encode.object
27
+
[ ( "album", encodeMaybe playlistTrack.album Encode.string )
28
+
, ( "artist", encodeMaybe playlistTrack.artist Encode.string )
29
, ( "title", Encode.string playlistTrack.title )
30
]
31
···
46
playlistTrackDecoder : Decode.Decoder PlaylistTrack
47
playlistTrackDecoder =
48
Decode.map3 PlaylistTrack
49
+
(Decode.maybe <| Decode.field "album" Decode.string)
50
+
(Decode.maybe <| Decode.field "artist" Decode.string)
51
(Decode.field "title" Decode.string)
+40
-18
src/Library/Tracks.elm
+40
-18
src/Library/Tracks.elm
···
6
import String.Ext as String
7
import Time
8
import Time.Ext as Time
9
10
11
···
30
, nr : Int
31
32
-- Main
33
-
, album : String
34
-
, artist : String
35
, title : String
36
37
-- Extra
···
58
59
60
type alias Favourite =
61
-
{ artist : String
62
, title : String
63
}
64
···
177
emptyTags =
178
{ disc = 1
179
, nr = 0
180
-
, album = "Empty"
181
-
, artist = "Empty"
182
, title = "Empty"
183
, genre = Nothing
184
, picture = Nothing
···
219
, scrollContext = ""
220
}
221
222
223
224
-- MORE STUFF
···
226
227
coverGroup : SortBy -> IdentifiedTrack -> String
228
coverGroup sort ( identifiers, { tags } as track ) =
229
(case sort of
230
Artist ->
231
-
tags.artist
232
233
Album ->
234
-- There is the possibility of albums with the same name,
235
-- such as "Greatests Hits".
236
-- To make sure we treat those as different albums,
237
-- we prefix the album by its parent directory.
238
-
identifiers.parentDirectory ++ tags.album
239
240
PlaylistIndex ->
241
""
···
243
Title ->
244
tags.title
245
)
246
-
|> String.trim
247
-
|> String.toLower
248
249
250
coverKey : Bool -> Track -> String
251
coverKey isVariousArtists { tags } =
252
-
if isVariousArtists then
253
-
tags.album
254
255
-
else
256
-
tags.artist ++ " --- " ++ tags.album
257
258
259
isNowPlaying : IdentifiedTrack -> IdentifiedTrack -> Bool
···
281
|> List.head
282
|> (==) (Just playlist.name)
283
|> (&&) playlist.autoGenerated
284
-
285
-
286
-
missingAlbumPlaceholder : String
287
-
missingAlbumPlaceholder =
288
-
"⌁"
289
290
291
missingId : String
···
6
import String.Ext as String
7
import Time
8
import Time.Ext as Time
9
+
import Maybe.Extra as Maybe
10
11
12
···
31
, nr : Int
32
33
-- Main
34
+
, album : Maybe String
35
+
, artist : Maybe String
36
, title : String
37
38
-- Extra
···
59
60
61
type alias Favourite =
62
+
{ artist : Maybe String
63
, title : String
64
}
65
···
178
emptyTags =
179
{ disc = 1
180
, nr = 0
181
+
, album = Nothing
182
+
, artist = Nothing
183
, title = "Empty"
184
, genre = Nothing
185
, picture = Nothing
···
220
, scrollContext = ""
221
}
222
223
+
{-| If a track doesn't fit into a group, where does it go?
224
+
-}
225
+
fallbackCoverGroup : String
226
+
fallbackCoverGroup =
227
+
"MISSING_TRACK_INFO"
228
+
229
+
{-| This value is used as a fallback in the UI if the album is missing.
230
+
-}
231
+
fallbackAlbum : String
232
+
fallbackAlbum =
233
+
""
234
+
235
+
{-| This value is used as a fallback in the UI if the artist is missing.
236
+
-}
237
+
fallbackArtist : String
238
+
fallbackArtist =
239
+
""
240
241
242
-- MORE STUFF
···
244
245
coverGroup : SortBy -> IdentifiedTrack -> String
246
coverGroup sort ( identifiers, { tags } as track ) =
247
+
if identifiers.isMissing then
248
+
"MISSING_TRACKS"
249
+
else
250
(case sort of
251
Artist ->
252
+
Maybe.unwrap fallbackCoverGroup (String.trim >> String.toLower) tags.artist
253
254
Album ->
255
-- There is the possibility of albums with the same name,
256
-- such as "Greatests Hits".
257
-- To make sure we treat those as different albums,
258
-- we prefix the album by its parent directory.
259
+
260
+
case tags.album of
261
+
Just album ->
262
+
(identifiers.parentDirectory ++ album)
263
+
|> String.trim
264
+
|> String.toLower
265
+
Nothing ->
266
+
fallbackCoverGroup
267
268
PlaylistIndex ->
269
""
···
271
Title ->
272
tags.title
273
)
274
+
275
276
277
coverKey : Bool -> Track -> String
278
coverKey isVariousArtists { tags } =
279
+
if isVariousArtists then
280
+
Maybe.withDefault "?" tags.album
281
282
+
else
283
+
Maybe.withDefault "?" tags.artist ++ " --- " ++ Maybe.withDefault "?" tags.album
284
285
286
isNowPlaying : IdentifiedTrack -> IdentifiedTrack -> Bool
···
308
|> List.head
309
|> (==) (Just playlist.name)
310
|> (&&) playlist.autoGenerated
311
312
313
missingId : String
+2
-2
src/Library/Tracks/Collection/Internal/Arrange.elm
+2
-2
src/Library/Tracks/Collection/Internal/Arrange.elm
+7
-1
src/Library/Tracks/Collection/Internal/Harvest.elm
+7
-1
src/Library/Tracks/Collection/Internal/Harvest.elm
···
78
|> List.foldl
79
(\( i, t ) ( dict, ( idx, prevIdentifiers ), acc ) ->
80
let
81
+
-- Identifier used to distinguish duplicates
82
s =
83
+
case t.tags.artist of
84
+
Just artist ->
85
+
String.toLower (artist ++ t.tags.title)
86
+
87
+
Nothing ->
88
+
String.toLower t.tags.title
89
in
90
if theFilter ( i, t ) == False then
91
( dict, ( idx, prevIdentifiers ), acc )
+17
-3
src/Library/Tracks/Collection/Internal/Identify.elm
+17
-3
src/Library/Tracks/Collection/Internal/Identify.elm
···
2
3
import Dict
4
import List.Extra as List
5
import Time.Ext as Time
6
import Tracks exposing (..)
7
import Tracks.Favourites as Favourites
···
19
(\fav ( dict, acc ) ->
20
let
21
simpl =
22
-
Favourites.simplified fav
23
in
24
( Dict.insert simpl fav dict
25
, simpl :: acc
···
130
131
isFavourite : Track -> String -> Bool
132
isFavourite track =
133
-
(==) (String.toLower track.tags.artist ++ String.toLower track.tags.title)
134
135
136
makeMissingFavouriteTrack : Favourite -> IdentifiedTrack
···
141
, nr = 0
142
, artist = fav.artist
143
, title = fav.title
144
-
, album = Tracks.missingAlbumPlaceholder
145
, genre = Nothing
146
, picture = Nothing
147
, year = Nothing
···
2
3
import Dict
4
import List.Extra as List
5
+
import Maybe.Extra as Maybe
6
import Time.Ext as Time
7
import Tracks exposing (..)
8
import Tracks.Favourites as Favourites
···
20
(\fav ( dict, acc ) ->
21
let
22
simpl =
23
+
case fav.artist of
24
+
Just artist ->
25
+
String.toLower artist ++ String.toLower fav.title
26
+
27
+
Nothing ->
28
+
String.toLower fav.title
29
in
30
( Dict.insert simpl fav dict
31
, simpl :: acc
···
136
137
isFavourite : Track -> String -> Bool
138
isFavourite track =
139
+
-- This needs to match the `simplifiedFavourites` format from above
140
+
(==)
141
+
(case track.tags.artist of
142
+
Just artist ->
143
+
String.toLower artist ++ String.toLower track.tags.title
144
+
145
+
Nothing ->
146
+
String.toLower track.tags.title
147
+
)
148
149
150
makeMissingFavouriteTrack : Favourite -> IdentifiedTrack
···
155
, nr = 0
156
, artist = fav.artist
157
, title = fav.title
158
+
, album = Nothing
159
, genre = Nothing
160
, picture = Nothing
161
, year = Nothing
+7
-13
src/Library/Tracks/Encoding.elm
+7
-13
src/Library/Tracks/Encoding.elm
···
3
import Json.Decode as Decode
4
import Json.Decode.Pipeline exposing (optional, required)
5
import Json.Encode as Encode
6
import Time.Ext as Time
7
import Tracks exposing (..)
8
···
14
encodeFavourite : Favourite -> Encode.Value
15
encodeFavourite fav =
16
Encode.object
17
-
[ ( "artist", Encode.string fav.artist )
18
, ( "title", Encode.string fav.title )
19
]
20
···
89
, ( "nr", Encode.int tags.nr )
90
91
--
92
-
, ( "album", Encode.string tags.album )
93
-
, ( "artist", Encode.string tags.artist )
94
, ( "title", Encode.string tags.title )
95
96
--
···
100
]
101
102
103
-
encodeMaybe : Maybe a -> (a -> Encode.Value) -> Encode.Value
104
-
encodeMaybe maybe encoder =
105
-
maybe
106
-
|> Maybe.map encoder
107
-
|> Maybe.withDefault Encode.null
108
-
109
-
110
111
-- DECODE
112
···
126
favouriteDecoder : Decode.Decoder Favourite
127
favouriteDecoder =
128
Decode.map2 Favourite
129
-
(Decode.field "artist" Decode.string)
130
(Decode.field "title" Decode.string)
131
132
···
215
Decode.map8 Tags
216
(Decode.field "disc" Decode.int)
217
(Decode.field "nr" Decode.int)
218
-
(Decode.field "album" Decode.string)
219
-
(Decode.field "artist" Decode.string)
220
(Decode.field "title" Decode.string)
221
(Decode.maybe <| Decode.field "genre" Decode.string)
222
(Decode.maybe <| Decode.field "picture" Decode.string)
···
3
import Json.Decode as Decode
4
import Json.Decode.Pipeline exposing (optional, required)
5
import Json.Encode as Encode
6
+
import Json.Encode.Ext exposing (..)
7
import Time.Ext as Time
8
import Tracks exposing (..)
9
···
15
encodeFavourite : Favourite -> Encode.Value
16
encodeFavourite fav =
17
Encode.object
18
+
[ ( "artist", encodeMaybe fav.artist Encode.string )
19
, ( "title", Encode.string fav.title )
20
]
21
···
90
, ( "nr", Encode.int tags.nr )
91
92
--
93
+
, ( "album", encodeMaybe tags.album Encode.string )
94
+
, ( "artist", encodeMaybe tags.artist Encode.string )
95
, ( "title", Encode.string tags.title )
96
97
--
···
101
]
102
103
104
105
-- DECODE
106
···
120
favouriteDecoder : Decode.Decoder Favourite
121
favouriteDecoder =
122
Decode.map2 Favourite
123
+
(Decode.maybe <| Decode.field "artist" Decode.string)
124
(Decode.field "title" Decode.string)
125
126
···
209
Decode.map8 Tags
210
(Decode.field "disc" Decode.int)
211
(Decode.field "nr" Decode.int)
212
+
(Decode.maybe <| Decode.field "album" Decode.string)
213
+
(Decode.maybe <| Decode.field "artist" Decode.string)
214
(Decode.field "title" Decode.string)
215
(Decode.maybe <| Decode.field "genre" Decode.string)
216
(Decode.maybe <| Decode.field "picture" Decode.string)
+7
-9
src/Library/Tracks/Favourites.elm
+7
-9
src/Library/Tracks/Favourites.elm
···
1
-
module Tracks.Favourites exposing (completeFavouritesList, completeTracksList, match, removeFromFavouritesList, removeFromTracksList, simplified, toggleInFavouritesList, toggleInTracksList)
2
3
import List.Extra as List
4
import Tracks exposing (Favourite, IdentifiedTrack, Track)
5
6
7
···
65
match a b =
66
let
67
( aa, at ) =
68
-
( String.toLower a.artist
69
, String.toLower a.title
70
)
71
72
( ba, bt ) =
73
-
( String.toLower b.artist
74
, String.toLower b.title
75
)
76
in
···
127
tracks
128
129
130
-
simplified : Favourite -> String
131
-
simplified fav =
132
-
String.toLower fav.artist ++ String.toLower fav.title
133
-
134
-
135
toggleInTracksList : Track -> List IdentifiedTrack -> List IdentifiedTrack
136
toggleInTracksList track =
137
let
···
178
179
lowercaseArtist : Track -> String
180
lowercaseArtist =
181
-
.tags >> .artist >> String.toLower
182
183
184
lowercaseTitle : Track -> String
···
1
+
module Tracks.Favourites exposing (completeFavouritesList, completeTracksList, match, removeFromFavouritesList, removeFromTracksList, toggleInFavouritesList, toggleInTracksList)
2
3
import List.Extra as List
4
+
import Maybe.Extra as Maybe
5
import Tracks exposing (Favourite, IdentifiedTrack, Track)
6
+
import Tracks exposing (fallbackArtist)
7
8
9
···
67
match a b =
68
let
69
( aa, at ) =
70
+
( Maybe.unwrap "" String.toLower a.artist
71
, String.toLower a.title
72
)
73
74
( ba, bt ) =
75
+
( Maybe.unwrap "" String.toLower b.artist
76
, String.toLower b.title
77
)
78
in
···
129
tracks
130
131
132
toggleInTracksList : Track -> List IdentifiedTrack -> List IdentifiedTrack
133
toggleInTracksList track =
134
let
···
175
176
lowercaseArtist : Track -> String
177
lowercaseArtist =
178
+
-- NOTE: Not entirely sure this fallback is correct
179
+
.tags >> .artist >> Maybe.unwrap fallbackArtist String.toLower
180
181
182
lowercaseTitle : Track -> String
+27
-2
src/Library/Tracks/Sorting.elm
+27
-2
src/Library/Tracks/Sorting.elm
···
1
module Tracks.Sorting exposing (sort)
2
3
import Tracks exposing (..)
4
5
···
43
sortByAlbum : IdentifiedTrack -> IdentifiedTrack -> Order
44
sortByAlbum ( x, a ) ( y, b ) =
45
EQ
46
|> andThenCompare album a b
47
|> andThenCompare parentDir x y
48
|> andThenCompare disc a b
···
54
sortByArtist : IdentifiedTrack -> IdentifiedTrack -> Order
55
sortByArtist ( x, a ) ( y, b ) =
56
EQ
57
|> andThenCompare artist a b
58
|> andThenCompare album a b
59
|> andThenCompare parentDir x y
···
81
82
album : Track -> String
83
album =
84
-
.tags >> .album >> low
85
86
87
artist : Track -> String
88
artist =
89
-
.tags >> .artist >> low
90
91
92
title : Track -> String
···
103
nr =
104
.tags >> .nr
105
106
107
parentDir : Identifiers -> String
108
parentDir =
···
117
andThenCompare fn a b order =
118
if order == EQ then
119
compare (fn a) (fn b)
120
121
else
122
order
···
1
module Tracks.Sorting exposing (sort)
2
3
+
import Maybe.Extra as Maybe
4
import Tracks exposing (..)
5
6
···
44
sortByAlbum : IdentifiedTrack -> IdentifiedTrack -> Order
45
sortByAlbum ( x, a ) ( y, b ) =
46
EQ
47
+
|> andThenCompareBools isMissing x y
48
|> andThenCompare album a b
49
|> andThenCompare parentDir x y
50
|> andThenCompare disc a b
···
56
sortByArtist : IdentifiedTrack -> IdentifiedTrack -> Order
57
sortByArtist ( x, a ) ( y, b ) =
58
EQ
59
+
|> andThenCompareBools isMissing x y
60
|> andThenCompare artist a b
61
|> andThenCompare album a b
62
|> andThenCompare parentDir x y
···
84
85
album : Track -> String
86
album =
87
+
.tags >> .album >> Maybe.unwrap fallbackAlbum low
88
89
90
artist : Track -> String
91
artist =
92
+
.tags >> .artist >> Maybe.unwrap fallbackArtist low
93
94
95
title : Track -> String
···
106
nr =
107
.tags >> .nr
108
109
+
isMissing : Identifiers -> Bool
110
+
isMissing =
111
+
.isMissing
112
+
113
114
parentDir : Identifiers -> String
115
parentDir =
···
124
andThenCompare fn a b order =
125
if order == EQ then
126
compare (fn a) (fn b)
127
+
128
+
else
129
+
order
130
+
131
+
andThenCompareBools : (ctx -> Bool) -> ctx -> ctx -> Order -> Order
132
+
andThenCompareBools fn a b order =
133
+
if order == EQ then
134
+
let
135
+
af = fn a
136
+
bf = fn b
137
+
in
138
+
if af == bf then
139
+
EQ
140
+
else if af == False then
141
+
GT
142
+
else
143
+
LT
144
+
145
146
else
147
order
+47
system/Js/esbuild.mjs
+47
system/Js/esbuild.mjs
···
···
1
+
import esbuild from "esbuild"
2
+
import { wasmLoader } from "esbuild-plugin-wasm"
3
+
4
+
import parseArgv from "tiny-parse-argv"
5
+
6
+
const args = parseArgv(process.argv.slice(2), {
7
+
string: ["alias", "define", "inject"],
8
+
})
9
+
10
+
esbuild.build({
11
+
alias: {...obj("alias") },
12
+
bundle: true,
13
+
define: obj("define"),
14
+
entryPoints: [args._[0]],
15
+
format: "esm",
16
+
inject: arr("inject"),
17
+
minify: args.minify || false,
18
+
outdir: args.outdir || undefined,
19
+
outfile: args.outfile || undefined,
20
+
plugins: [wasmLoader()],
21
+
splitting: args.splitting || false,
22
+
target: "esnext",
23
+
})
24
+
25
+
function arr(name) {
26
+
return Object.entries(args)
27
+
.filter(([k, v]) => {
28
+
if (!k.includes(":")) return false
29
+
return k.split(":")[0] == name
30
+
})
31
+
.map(([k, v]) => {
32
+
return k.split(":").slice(1).join(":") + v
33
+
})
34
+
}
35
+
36
+
function obj(name) {
37
+
const entries = Object.entries(args)
38
+
.filter(([k, v]) => {
39
+
if (!k.includes(":")) return false
40
+
return k.split(":")[0] == name
41
+
})
42
+
.map(([k, v]) => {
43
+
return [k.split(":").slice(1).join(":"), v.toString()]
44
+
})
45
+
46
+
return Object.fromEntries(entries)
47
+
}