diff --git a/.swc/plugins/v7_linux_x86_64_0.113.0/3d90119e56180f8a6d47f21a39da9a5ca2094986f8cd26a9f3daaa8fa37e147f b/.swc/plugins/v7_linux_x86_64_0.113.0/3d90119e56180f8a6d47f21a39da9a5ca2094986f8cd26a9f3daaa8fa37e147f
new file mode 100644
index 00000000..85436059
Binary files /dev/null and b/.swc/plugins/v7_linux_x86_64_0.113.0/3d90119e56180f8a6d47f21a39da9a5ca2094986f8cd26a9f3daaa8fa37e147f differ
diff --git a/.swcrc b/.swcrc
new file mode 100644
index 00000000..52dc738c
--- /dev/null
+++ b/.swcrc
@@ -0,0 +1,17 @@
+{
+ "jsc": {
+ "target": "esnext",
+ "parser": {
+ "syntax": "typescript",
+ "jsx": true
+ },
+ "transform": {
+ "react": {
+ "runtime": "automatic"
+ }
+ },
+ "experimental": {
+ "plugins": [["@swc/plugin-emotion", {}]]
+ }
+ }
+}
diff --git a/.yarn/cache/@babel-code-frame-npm-7.24.7-315a600a58-4812e94885.zip b/.yarn/cache/@babel-code-frame-npm-7.24.7-315a600a58-4812e94885.zip
new file mode 100644
index 00000000..5eb87a30
Binary files /dev/null and b/.yarn/cache/@babel-code-frame-npm-7.24.7-315a600a58-4812e94885.zip differ
diff --git a/.yarn/cache/@babel-generator-npm-7.25.6-3bdca6c59f-541e4fbb6e.zip b/.yarn/cache/@babel-generator-npm-7.25.6-3bdca6c59f-541e4fbb6e.zip
new file mode 100644
index 00000000..39afbe46
Binary files /dev/null and b/.yarn/cache/@babel-generator-npm-7.25.6-3bdca6c59f-541e4fbb6e.zip differ
diff --git a/.yarn/cache/@babel-helper-module-imports-npm-7.24.7-f60e66adbf-df8bfb2bb1.zip b/.yarn/cache/@babel-helper-module-imports-npm-7.24.7-f60e66adbf-df8bfb2bb1.zip
new file mode 100644
index 00000000..39f15939
Binary files /dev/null and b/.yarn/cache/@babel-helper-module-imports-npm-7.24.7-f60e66adbf-df8bfb2bb1.zip differ
diff --git a/.yarn/cache/@babel-helper-string-parser-npm-7.24.8-133b2e71e1-6d1bf8f27d.zip b/.yarn/cache/@babel-helper-string-parser-npm-7.24.8-133b2e71e1-6d1bf8f27d.zip
new file mode 100644
index 00000000..4c1be956
Binary files /dev/null and b/.yarn/cache/@babel-helper-string-parser-npm-7.24.8-133b2e71e1-6d1bf8f27d.zip differ
diff --git a/.yarn/cache/@babel-helper-validator-identifier-npm-7.24.7-748889c8d2-86875063f5.zip b/.yarn/cache/@babel-helper-validator-identifier-npm-7.24.7-748889c8d2-86875063f5.zip
new file mode 100644
index 00000000..02188105
Binary files /dev/null and b/.yarn/cache/@babel-helper-validator-identifier-npm-7.24.7-748889c8d2-86875063f5.zip differ
diff --git a/.yarn/cache/@babel-highlight-npm-7.24.7-d792bd8d9f-69b73f38cd.zip b/.yarn/cache/@babel-highlight-npm-7.24.7-d792bd8d9f-69b73f38cd.zip
new file mode 100644
index 00000000..9df46bf3
Binary files /dev/null and b/.yarn/cache/@babel-highlight-npm-7.24.7-d792bd8d9f-69b73f38cd.zip differ
diff --git a/.yarn/cache/@babel-parser-npm-7.25.6-3cb198940b-830aab7211.zip b/.yarn/cache/@babel-parser-npm-7.25.6-3cb198940b-830aab7211.zip
new file mode 100644
index 00000000..58cc8bfb
Binary files /dev/null and b/.yarn/cache/@babel-parser-npm-7.25.6-3cb198940b-830aab7211.zip differ
diff --git a/.yarn/cache/@babel-runtime-npm-7.25.6-6725f0979a-0c4134734d.zip b/.yarn/cache/@babel-runtime-npm-7.25.6-6725f0979a-0c4134734d.zip
new file mode 100644
index 00000000..e7821366
Binary files /dev/null and b/.yarn/cache/@babel-runtime-npm-7.25.6-6725f0979a-0c4134734d.zip differ
diff --git a/.yarn/cache/@babel-template-npm-7.25.0-2c6ddcb43a-07ebecf6db.zip b/.yarn/cache/@babel-template-npm-7.25.0-2c6ddcb43a-07ebecf6db.zip
new file mode 100644
index 00000000..b29d8985
Binary files /dev/null and b/.yarn/cache/@babel-template-npm-7.25.0-2c6ddcb43a-07ebecf6db.zip differ
diff --git a/.yarn/cache/@babel-traverse-npm-7.25.6-1b9e2a314c-de75a91829.zip b/.yarn/cache/@babel-traverse-npm-7.25.6-1b9e2a314c-de75a91829.zip
new file mode 100644
index 00000000..8eb2449a
Binary files /dev/null and b/.yarn/cache/@babel-traverse-npm-7.25.6-1b9e2a314c-de75a91829.zip differ
diff --git a/.yarn/cache/@babel-types-npm-7.25.6-98df73a2ca-7b54665e1b.zip b/.yarn/cache/@babel-types-npm-7.25.6-98df73a2ca-7b54665e1b.zip
new file mode 100644
index 00000000..cff78357
Binary files /dev/null and b/.yarn/cache/@babel-types-npm-7.25.6-98df73a2ca-7b54665e1b.zip differ
diff --git a/.yarn/cache/@emotion-babel-plugin-npm-11.12.0-690c383ac1-fe6f4522ea.zip b/.yarn/cache/@emotion-babel-plugin-npm-11.12.0-690c383ac1-fe6f4522ea.zip
new file mode 100644
index 00000000..6bc88f33
Binary files /dev/null and b/.yarn/cache/@emotion-babel-plugin-npm-11.12.0-690c383ac1-fe6f4522ea.zip differ
diff --git a/.yarn/cache/@emotion-cache-npm-11.13.1-9bf3ce01f5-090c8ad2e5.zip b/.yarn/cache/@emotion-cache-npm-11.13.1-9bf3ce01f5-090c8ad2e5.zip
new file mode 100644
index 00000000..655add6e
Binary files /dev/null and b/.yarn/cache/@emotion-cache-npm-11.13.1-9bf3ce01f5-090c8ad2e5.zip differ
diff --git a/.yarn/cache/@emotion-hash-npm-0.9.2-21b49040cb-379bde2830.zip b/.yarn/cache/@emotion-hash-npm-0.9.2-21b49040cb-379bde2830.zip
new file mode 100644
index 00000000..ff06dcb0
Binary files /dev/null and b/.yarn/cache/@emotion-hash-npm-0.9.2-21b49040cb-379bde2830.zip differ
diff --git a/.yarn/cache/@emotion-is-prop-valid-npm-1.3.0-40d3d3718f-9b395dd973.zip b/.yarn/cache/@emotion-is-prop-valid-npm-1.3.0-40d3d3718f-9b395dd973.zip
new file mode 100644
index 00000000..f4d5a3fc
Binary files /dev/null and b/.yarn/cache/@emotion-is-prop-valid-npm-1.3.0-40d3d3718f-9b395dd973.zip differ
diff --git a/.yarn/cache/@emotion-memoize-npm-0.9.0-ccd80906b3-0381323593.zip b/.yarn/cache/@emotion-memoize-npm-0.9.0-ccd80906b3-0381323593.zip
new file mode 100644
index 00000000..f3f63843
Binary files /dev/null and b/.yarn/cache/@emotion-memoize-npm-0.9.0-ccd80906b3-0381323593.zip differ
diff --git a/.yarn/cache/@emotion-react-npm-11.13.3-ff7d603337-ee70d3afc2.zip b/.yarn/cache/@emotion-react-npm-11.13.3-ff7d603337-ee70d3afc2.zip
new file mode 100644
index 00000000..864797fe
Binary files /dev/null and b/.yarn/cache/@emotion-react-npm-11.13.3-ff7d603337-ee70d3afc2.zip differ
diff --git a/.yarn/cache/@emotion-serialize-npm-1.3.1-3b63592c56-4bbb9b417f.zip b/.yarn/cache/@emotion-serialize-npm-1.3.1-3b63592c56-4bbb9b417f.zip
new file mode 100644
index 00000000..d9bc4e97
Binary files /dev/null and b/.yarn/cache/@emotion-serialize-npm-1.3.1-3b63592c56-4bbb9b417f.zip differ
diff --git a/.yarn/cache/@emotion-sheet-npm-1.4.0-fb64d8f222-8ac6e9bf6b.zip b/.yarn/cache/@emotion-sheet-npm-1.4.0-fb64d8f222-8ac6e9bf6b.zip
new file mode 100644
index 00000000..d9381646
Binary files /dev/null and b/.yarn/cache/@emotion-sheet-npm-1.4.0-fb64d8f222-8ac6e9bf6b.zip differ
diff --git a/.yarn/cache/@emotion-styled-npm-11.13.0-56a6cd86eb-5463a0f15f.zip b/.yarn/cache/@emotion-styled-npm-11.13.0-56a6cd86eb-5463a0f15f.zip
new file mode 100644
index 00000000..0ce196d7
Binary files /dev/null and b/.yarn/cache/@emotion-styled-npm-11.13.0-56a6cd86eb-5463a0f15f.zip differ
diff --git a/.yarn/cache/@emotion-unitless-npm-0.10.0-bd15580251-6851c16edc.zip b/.yarn/cache/@emotion-unitless-npm-0.10.0-bd15580251-6851c16edc.zip
new file mode 100644
index 00000000..6995794a
Binary files /dev/null and b/.yarn/cache/@emotion-unitless-npm-0.10.0-bd15580251-6851c16edc.zip differ
diff --git a/.yarn/cache/@emotion-use-insertion-effect-with-fallbacks-npm-1.1.0-cf34827cd6-33a10f44a8.zip b/.yarn/cache/@emotion-use-insertion-effect-with-fallbacks-npm-1.1.0-cf34827cd6-33a10f44a8.zip
new file mode 100644
index 00000000..e8453ca1
Binary files /dev/null and b/.yarn/cache/@emotion-use-insertion-effect-with-fallbacks-npm-1.1.0-cf34827cd6-33a10f44a8.zip differ
diff --git a/.yarn/cache/@emotion-utils-npm-1.4.0-27483e6c35-e4cdb51819.zip b/.yarn/cache/@emotion-utils-npm-1.4.0-27483e6c35-e4cdb51819.zip
new file mode 100644
index 00000000..5d045bee
Binary files /dev/null and b/.yarn/cache/@emotion-utils-npm-1.4.0-27483e6c35-e4cdb51819.zip differ
diff --git a/.yarn/cache/@emotion-weak-memoize-npm-0.4.0-76aafb2333-db5da0e89b.zip b/.yarn/cache/@emotion-weak-memoize-npm-0.4.0-76aafb2333-db5da0e89b.zip
new file mode 100644
index 00000000..92c93238
Binary files /dev/null and b/.yarn/cache/@emotion-weak-memoize-npm-0.4.0-76aafb2333-db5da0e89b.zip differ
diff --git a/.yarn/cache/@snowpack-plugin-typescript-npm-1.2.1-b14f9f51b1-365eda9c03.zip b/.yarn/cache/@snowpack-plugin-typescript-npm-1.2.1-b14f9f51b1-365eda9c03.zip
deleted file mode 100644
index 3516c067..00000000
Binary files a/.yarn/cache/@snowpack-plugin-typescript-npm-1.2.1-b14f9f51b1-365eda9c03.zip and /dev/null differ
diff --git a/.yarn/cache/@swc-core-linux-x64-gnu-npm-1.6.13-a7b9aab3c6-10.zip b/.yarn/cache/@swc-core-linux-x64-gnu-npm-1.7.26-3f9254c7bf-10.zip
similarity index 64%
rename from .yarn/cache/@swc-core-linux-x64-gnu-npm-1.6.13-a7b9aab3c6-10.zip
rename to .yarn/cache/@swc-core-linux-x64-gnu-npm-1.7.26-3f9254c7bf-10.zip
index 959365e1..ca2b7256 100644
Binary files a/.yarn/cache/@swc-core-linux-x64-gnu-npm-1.6.13-a7b9aab3c6-10.zip and b/.yarn/cache/@swc-core-linux-x64-gnu-npm-1.7.26-3f9254c7bf-10.zip differ
diff --git a/.yarn/cache/@swc-core-npm-1.6.13-b33663c12e-ccb9c11d5f.zip b/.yarn/cache/@swc-core-npm-1.7.26-df1a50f4e7-8fb43420bd.zip
similarity index 59%
rename from .yarn/cache/@swc-core-npm-1.6.13-b33663c12e-ccb9c11d5f.zip
rename to .yarn/cache/@swc-core-npm-1.7.26-df1a50f4e7-8fb43420bd.zip
index c9f15c5c..cd26b938 100644
Binary files a/.yarn/cache/@swc-core-npm-1.6.13-b33663c12e-ccb9c11d5f.zip and b/.yarn/cache/@swc-core-npm-1.7.26-df1a50f4e7-8fb43420bd.zip differ
diff --git a/.yarn/cache/@swc-plugin-emotion-npm-4.0.1-07571d84ea-2c3b136827.zip b/.yarn/cache/@swc-plugin-emotion-npm-4.0.1-07571d84ea-2c3b136827.zip
new file mode 100644
index 00000000..aa2c0adb
Binary files /dev/null and b/.yarn/cache/@swc-plugin-emotion-npm-4.0.1-07571d84ea-2c3b136827.zip differ
diff --git a/.yarn/cache/@swc-types-npm-0.1.12-b2a580c180-92dbbc70cd.zip b/.yarn/cache/@swc-types-npm-0.1.12-b2a580c180-92dbbc70cd.zip
new file mode 100644
index 00000000..02b32072
Binary files /dev/null and b/.yarn/cache/@swc-types-npm-0.1.12-b2a580c180-92dbbc70cd.zip differ
diff --git a/.yarn/cache/@swc-types-npm-0.1.9-26e18ff920-c67ee0480b.zip b/.yarn/cache/@swc-types-npm-0.1.9-26e18ff920-c67ee0480b.zip
deleted file mode 100644
index 31e389cf..00000000
Binary files a/.yarn/cache/@swc-types-npm-0.1.9-26e18ff920-c67ee0480b.zip and /dev/null differ
diff --git a/.yarn/cache/@types-node-npm-20.14.10-5efcbc9009-672892cf94.zip b/.yarn/cache/@types-node-npm-20.14.10-5efcbc9009-672892cf94.zip
deleted file mode 100644
index 48a81d31..00000000
Binary files a/.yarn/cache/@types-node-npm-20.14.10-5efcbc9009-672892cf94.zip and /dev/null differ
diff --git a/.yarn/cache/@types-parse-json-npm-4.0.2-f87f65692e-5bf62eec37.zip b/.yarn/cache/@types-parse-json-npm-4.0.2-f87f65692e-5bf62eec37.zip
new file mode 100644
index 00000000..2b86e910
Binary files /dev/null and b/.yarn/cache/@types-parse-json-npm-4.0.2-f87f65692e-5bf62eec37.zip differ
diff --git a/.yarn/cache/@types-prop-types-npm-15.7.12-b093f43531-ac16cc3d0a.zip b/.yarn/cache/@types-prop-types-npm-15.7.12-b093f43531-ac16cc3d0a.zip
new file mode 100644
index 00000000..0412cffa
Binary files /dev/null and b/.yarn/cache/@types-prop-types-npm-15.7.12-b093f43531-ac16cc3d0a.zip differ
diff --git a/.yarn/cache/@types-react-dom-npm-18.3.0-111444d3eb-6ff53f5a7b.zip b/.yarn/cache/@types-react-dom-npm-18.3.0-111444d3eb-6ff53f5a7b.zip
new file mode 100644
index 00000000..9bebcfb7
Binary files /dev/null and b/.yarn/cache/@types-react-dom-npm-18.3.0-111444d3eb-6ff53f5a7b.zip differ
diff --git a/.yarn/cache/@types-react-npm-18.3.5-85b093554b-ba0477c5ad.zip b/.yarn/cache/@types-react-npm-18.3.5-85b093554b-ba0477c5ad.zip
new file mode 100644
index 00000000..3ba0d8e7
Binary files /dev/null and b/.yarn/cache/@types-react-npm-18.3.5-85b093554b-ba0477c5ad.zip differ
diff --git a/.yarn/cache/babel-plugin-macros-npm-3.1.0-320e781f4e-30be6ca45e.zip b/.yarn/cache/babel-plugin-macros-npm-3.1.0-320e781f4e-30be6ca45e.zip
new file mode 100644
index 00000000..26865bf8
Binary files /dev/null and b/.yarn/cache/babel-plugin-macros-npm-3.1.0-320e781f4e-30be6ca45e.zip differ
diff --git a/.yarn/cache/convert-source-map-npm-1.9.0-e294555f4b-dc55a1f28d.zip b/.yarn/cache/convert-source-map-npm-1.9.0-e294555f4b-dc55a1f28d.zip
new file mode 100644
index 00000000..409c3442
Binary files /dev/null and b/.yarn/cache/convert-source-map-npm-1.9.0-e294555f4b-dc55a1f28d.zip differ
diff --git a/.yarn/cache/cosmiconfig-npm-7.1.0-13a5090bcd-03600bb387.zip b/.yarn/cache/cosmiconfig-npm-7.1.0-13a5090bcd-03600bb387.zip
new file mode 100644
index 00000000..bf5e1e37
Binary files /dev/null and b/.yarn/cache/cosmiconfig-npm-7.1.0-13a5090bcd-03600bb387.zip differ
diff --git a/.yarn/cache/csstype-npm-3.1.3-e9a1c85013-f593cce41f.zip b/.yarn/cache/csstype-npm-3.1.3-e9a1c85013-f593cce41f.zip
new file mode 100644
index 00000000..b08ed9c0
Binary files /dev/null and b/.yarn/cache/csstype-npm-3.1.3-e9a1c85013-f593cce41f.zip differ
diff --git a/.yarn/cache/debug-npm-4.3.7-385645adf9-71168908b9.zip b/.yarn/cache/debug-npm-4.3.7-385645adf9-71168908b9.zip
new file mode 100644
index 00000000..24741d29
Binary files /dev/null and b/.yarn/cache/debug-npm-4.3.7-385645adf9-71168908b9.zip differ
diff --git a/.yarn/cache/eme-encryption-scheme-polyfill-npm-2.1.5-21de7f589b-e5ea6e6254.zip b/.yarn/cache/eme-encryption-scheme-polyfill-npm-2.1.5-21de7f589b-e5ea6e6254.zip
new file mode 100644
index 00000000..15826c6c
Binary files /dev/null and b/.yarn/cache/eme-encryption-scheme-polyfill-npm-2.1.5-21de7f589b-e5ea6e6254.zip differ
diff --git a/.yarn/cache/find-root-npm-1.1.0-a16a94005f-caa799c976.zip b/.yarn/cache/find-root-npm-1.1.0-a16a94005f-caa799c976.zip
new file mode 100644
index 00000000..9e354756
Binary files /dev/null and b/.yarn/cache/find-root-npm-1.1.0-a16a94005f-caa799c976.zip differ
diff --git a/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-9f054fa38f.zip b/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-9f054fa38f.zip
new file mode 100644
index 00000000..ce4cf702
Binary files /dev/null and b/.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-9f054fa38f.zip differ
diff --git a/.yarn/cache/hls.js-npm-1.5.15-328bed1441-58dd5c70e2.zip b/.yarn/cache/hls.js-npm-1.5.15-328bed1441-58dd5c70e2.zip
new file mode 100644
index 00000000..1696cd42
Binary files /dev/null and b/.yarn/cache/hls.js-npm-1.5.15-328bed1441-58dd5c70e2.zip differ
diff --git a/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-1acbe85f33.zip b/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-1acbe85f33.zip
new file mode 100644
index 00000000..2d38b7fe
Binary files /dev/null and b/.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-1acbe85f33.zip differ
diff --git a/.yarn/cache/jsesc-npm-2.5.2-c5acb78804-d2096abdcd.zip b/.yarn/cache/jsesc-npm-2.5.2-c5acb78804-d2096abdcd.zip
new file mode 100644
index 00000000..aa7eb964
Binary files /dev/null and b/.yarn/cache/jsesc-npm-2.5.2-c5acb78804-d2096abdcd.zip differ
diff --git a/.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip b/.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip
new file mode 100644
index 00000000..ba25b876
Binary files /dev/null and b/.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip differ
diff --git a/.yarn/cache/react-dom-npm-18.3.1-a805663f38-3f4b73a3aa.zip b/.yarn/cache/react-dom-npm-18.3.1-a805663f38-3f4b73a3aa.zip
new file mode 100644
index 00000000..bb1d88d3
Binary files /dev/null and b/.yarn/cache/react-dom-npm-18.3.1-a805663f38-3f4b73a3aa.zip differ
diff --git a/.yarn/cache/react-hook-form-npm-7.53.0-5b4dd89662-b7d73696b7.zip b/.yarn/cache/react-hook-form-npm-7.53.0-5b4dd89662-b7d73696b7.zip
new file mode 100644
index 00000000..a47de2af
Binary files /dev/null and b/.yarn/cache/react-hook-form-npm-7.53.0-5b4dd89662-b7d73696b7.zip differ
diff --git a/.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-5aa564a1cd.zip b/.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-5aa564a1cd.zip
new file mode 100644
index 00000000..39d1323f
Binary files /dev/null and b/.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-5aa564a1cd.zip differ
diff --git a/.yarn/cache/react-npm-18.3.1-af38f3c1ae-261137d3f3.zip b/.yarn/cache/react-npm-18.3.1-af38f3c1ae-261137d3f3.zip
new file mode 100644
index 00000000..d3a9d8e7
Binary files /dev/null and b/.yarn/cache/react-npm-18.3.1-af38f3c1ae-261137d3f3.zip differ
diff --git a/.yarn/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-5db3161abb.zip b/.yarn/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-5db3161abb.zip
new file mode 100644
index 00000000..176e7550
Binary files /dev/null and b/.yarn/cache/regenerator-runtime-npm-0.14.1-a6c97c609a-5db3161abb.zip differ
diff --git a/.yarn/cache/scheduler-npm-0.23.2-6d1dd9c2b7-e8d68b89d1.zip b/.yarn/cache/scheduler-npm-0.23.2-6d1dd9c2b7-e8d68b89d1.zip
new file mode 100644
index 00000000..a341e177
Binary files /dev/null and b/.yarn/cache/scheduler-npm-0.23.2-6d1dd9c2b7-e8d68b89d1.zip differ
diff --git a/.yarn/cache/shaka-player-npm-4.11.2-ff18c8e6e9-cad0f2b245.zip b/.yarn/cache/shaka-player-npm-4.11.2-ff18c8e6e9-cad0f2b245.zip
new file mode 100644
index 00000000..19f6c48b
Binary files /dev/null and b/.yarn/cache/shaka-player-npm-4.11.2-ff18c8e6e9-cad0f2b245.zip differ
diff --git a/.yarn/cache/source-map-npm-0.5.7-7c3f035429-9b4ac749ec.zip b/.yarn/cache/source-map-npm-0.5.7-7c3f035429-9b4ac749ec.zip
new file mode 100644
index 00000000..e3bc38bd
Binary files /dev/null and b/.yarn/cache/source-map-npm-0.5.7-7c3f035429-9b4ac749ec.zip differ
diff --git a/.yarn/cache/stylis-npm-4.2.0-6b07f11c99-5835918527.zip b/.yarn/cache/stylis-npm-4.2.0-6b07f11c99-5835918527.zip
new file mode 100644
index 00000000..9fc9cf07
Binary files /dev/null and b/.yarn/cache/stylis-npm-4.2.0-6b07f11c99-5835918527.zip differ
diff --git a/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip b/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip
new file mode 100644
index 00000000..bed5e126
Binary files /dev/null and b/.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip differ
diff --git a/.yarn/cache/typescript-npm-5.5.3-9d4a463231-11a8673124.zip b/.yarn/cache/typescript-npm-5.5.3-9d4a463231-11a8673124.zip
deleted file mode 100644
index 2d229311..00000000
Binary files a/.yarn/cache/typescript-npm-5.5.3-9d4a463231-11a8673124.zip and /dev/null differ
diff --git a/.yarn/cache/typescript-npm-5.6.2-f0e21b35f9-f95365d489.zip b/.yarn/cache/typescript-npm-5.6.2-f0e21b35f9-f95365d489.zip
new file mode 100644
index 00000000..d2a80b44
Binary files /dev/null and b/.yarn/cache/typescript-npm-5.6.2-f0e21b35f9-f95365d489.zip differ
diff --git a/.yarn/cache/typescript-patch-846faf50d3-b61b8bb4b4.zip b/.yarn/cache/typescript-patch-846faf50d3-b61b8bb4b4.zip
deleted file mode 100644
index 0b572a80..00000000
Binary files a/.yarn/cache/typescript-patch-846faf50d3-b61b8bb4b4.zip and /dev/null differ
diff --git a/.yarn/cache/typescript-patch-d70d4523b6-060a7349ad.zip b/.yarn/cache/typescript-patch-d70d4523b6-060a7349ad.zip
new file mode 100644
index 00000000..ae9dfdf5
Binary files /dev/null and b/.yarn/cache/typescript-patch-d70d4523b6-060a7349ad.zip differ
diff --git a/.yarn/cache/yaml-npm-1.10.2-0e780aebdf-e088b37b4d.zip b/.yarn/cache/yaml-npm-1.10.2-0e780aebdf-e088b37b4d.zip
new file mode 100644
index 00000000..39ef27ac
Binary files /dev/null and b/.yarn/cache/yaml-npm-1.10.2-0e780aebdf-e088b37b4d.zip differ
diff --git a/package.json b/package.json
index 2e16e6da..01203abb 100644
--- a/package.json
+++ b/package.json
@@ -26,18 +26,26 @@
"prepublishOnly": "yarn build"
},
"devDependencies": {
+ "@emotion/react": "11.13.3",
+ "@emotion/styled": "11.13.0",
"@semantic-release/changelog": "6.0.3",
"@semantic-release/git": "10.0.1",
- "@snowpack/plugin-typescript": "1.2.1",
- "@swc/core": "1.6.13",
- "@types/node": "20.14.10",
+ "@swc/core": "1.7.26",
+ "@swc/plugin-emotion": "4.0.1",
+ "@types/react": "18.3.5",
+ "@types/react-dom": "18.3.0",
"@types/webpack": "5.28.5",
+ "hls.js": "1.5.15",
"prettier": "3.3.2",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-hook-form": "7.53.0",
"semantic-release": "24",
+ "shaka-player": "4.11.2",
"swc-loader": "0.2.6",
"terser-webpack-plugin": "5.3.10",
"ts-node": "10.9.2",
- "typescript": "5.5.3",
+ "typescript": "5.6.2",
"webpack": "5.93.0",
"webpack-bundle-analyzer": "4.10.2",
"webpack-cli": "5.1.4",
diff --git a/public/index.html b/public/index.html
index 5850b070..306d04e1 100644
--- a/public/index.html
+++ b/public/index.html
@@ -78,140 +78,16 @@
-
-
-
-
-
-
-
-
-
-
Check console for additional logging.
-
-
+
diff --git a/src/demo/app.tsx b/src/demo/app.tsx
new file mode 100644
index 00000000..ca102954
--- /dev/null
+++ b/src/demo/app.tsx
@@ -0,0 +1,79 @@
+import styled from "@emotion/styled";
+import { Global } from "@emotion/react";
+import { resetStyles, defaultStyles } from "./css-global";
+import { useForm, useWatch } from "react-hook-form";
+import {
+ DecorativeLabel,
+ FormContainer,
+ FormLabel,
+ FormSelect,
+} from "./form-elements";
+import { Player } from "./player";
+
+const Select = styled.select``;
+const Option = styled.option``;
+
+type FormValues = {
+ engine: "shaka" | "hlsjs" | "native";
+ asset: string;
+};
+
+export const App = () => {
+ const { register, control } = useForm({
+ defaultValues: {
+ engine: "native",
+ asset: "",
+ },
+ resetOptions: {
+ keepDirtyValues: true, // user-interacted input will be retained
+ keepErrors: true, // input errors will be retained with value update
+ },
+ });
+
+ const { engine, asset } = useWatch({ control });
+
+ return (
+ <>
+
+
+
+ Engine
+
+ {["shaka", "hlsjs", "native"].map((engine) => (
+
+ ))}
+
+
+
+ Asset
+
+ {["1", "2", "3"].map((engine) => (
+
+ ))}
+
+
+
+
+
+ Selected engine: {engine} {asset}
+
+
+
+ >
+ );
+};
diff --git a/src/demo/controls.hook.ts b/src/demo/controls.hook.ts
new file mode 100644
index 00000000..7917b3f4
--- /dev/null
+++ b/src/demo/controls.hook.ts
@@ -0,0 +1,28 @@
+import { RefObject, useCallback } from "react";
+
+export const useControls = ({
+ playing,
+ videoRef,
+}: {
+ playing: boolean;
+ videoRef: RefObject;
+}) => {
+ const playPause = useCallback(() => {
+ if (playing) videoRef.current?.pause();
+ if (!playing) videoRef.current?.play().catch(console.error);
+ }, [videoRef.current, playing]);
+
+ const skip = useCallback(
+ (num: number) => {
+ if (!videoRef.current) return;
+
+ videoRef.current.currentTime = videoRef.current.currentTime + num;
+ },
+ [videoRef.current, playing],
+ );
+
+ return {
+ playPause,
+ skip,
+ };
+};
diff --git a/src/demo/css-global.ts b/src/demo/css-global.ts
new file mode 100644
index 00000000..6b55b2fc
--- /dev/null
+++ b/src/demo/css-global.ts
@@ -0,0 +1,113 @@
+export const resetStyles = `
+ /* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+`;
+
+export const defaultStyles = `
+*, *::after, *::before {
+ box-sizing: border-box;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ font-smoothing: antialiased;
+}
+
+:root {
+ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
+ line-height: 1.5;
+ font-weight: 400;
+
+ color-scheme: light dark;
+ color: rgba(255, 255, 255, 0.87);
+ background-color: #242424;
+
+ font-synthesis: none;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+html {
+ /* apply a natural box layout model to all elements, but allowing components to change */
+ box-sizing: border-box;
+ /* easy REM sizing (e.g. 1.2rem = 12px) */
+ font-size: 62.5%;
+ height: 100%;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ font-smoothing: antialiased;
+}
+
+body {
+ font-size: 1.6rem;
+ height: 100%;
+}
+
+/* image size contstrained to container size */
+img,
+svg {
+ /* max-width: 100%; */
+ width: 100%;
+ height: auto;
+ display: block;
+}
+
+#root {
+ height: 100%;
+}
+
+strong {
+ font-weight: bold;
+}
+`;
diff --git a/src/demo/demo.tsx b/src/demo/demo.tsx
new file mode 100644
index 00000000..797ddfbc
--- /dev/null
+++ b/src/demo/demo.tsx
@@ -0,0 +1,46 @@
+import {
+ FilteredMediaEvent,
+ MediaEvent,
+ getMediaEventFilter,
+} from "../media-event-filter";
+import { createRoot } from "react-dom/client";
+import { StrictMode } from "react";
+import { App } from "./app";
+
+export type { TMediaEventFilter } from "../media-event-filter";
+
+function Demo({ rootEl }: { rootEl: HTMLDivElement }) {
+ const mp4Video = [
+ "https://testcontent.eyevinn.technology/mp4/VINN.mp4",
+ "https://testcontent.eyevinn.technology/mp4/stswe-tvplus-promo.mp4",
+ ];
+ const dash = [];
+ const hls = [];
+
+ createRoot(rootEl).render(
+
+
+ ,
+ );
+
+ const mediaEl: HTMLVideoElement = document.createElement("video");
+
+ let i = 1;
+ let seekOrBufferTimestamp = 0;
+
+ mediaEl.src = mp4Video[0];
+
+ // switchButton.onclick = () => {
+ // mediaEl.src = mediaEl.src !== mp4Video[0] ? mp4Video[0] : mp4Video[1];
+ // };
+ //
+ // clearButton.onclick = () => {
+ // mediaEl.src = "";
+ // };
+ //
+ // loadButton.onclick = () => {
+ // mediaEl.load();
+ // };
+}
+
+export { Demo };
diff --git a/src/demo/engine-shaka.tsx b/src/demo/engine-shaka.tsx
new file mode 100644
index 00000000..819769ec
--- /dev/null
+++ b/src/demo/engine-shaka.tsx
@@ -0,0 +1,33 @@
+import { RefObject, useEffect } from "react";
+import shaka from "shaka-player";
+
+export const useShaka = ({
+ videoUrl,
+ videoRef,
+}: {
+ videoUrl: string;
+ videoRef: RefObject;
+}) => {
+ useEffect(() => {
+ if (!videoUrl || !videoRef.current) return () => {};
+
+ const player = new shaka.Player(videoRef.current);
+
+ // Add configuration if needed
+ // player.configure()
+
+ player
+ // start loading the stream
+ .load(videoUrl)
+ .then(() => {
+ videoRef.current?.play();
+ })
+ // catch errors during load
+ .catch(console.error);
+
+ // Kill player when unmounted
+ return () => {
+ player.destroy().catch(() => {});
+ };
+ }, [videoUrl, videoRef.current]);
+};
diff --git a/src/demo/filtered-events.hook.ts b/src/demo/filtered-events.hook.ts
new file mode 100644
index 00000000..18bb52ab
--- /dev/null
+++ b/src/demo/filtered-events.hook.ts
@@ -0,0 +1,119 @@
+import { RefObject, useEffect, useState } from "react";
+import { FilteredMediaEvent, getMediaEventFilter } from "../media-event-filter";
+
+export const useFilteredEvents = ({
+ videoRef,
+}: {
+ videoRef: RefObject;
+}) => {
+ const [playing, setPlaying] = useState(false);
+ const [seeking, setSeeking] = useState(false);
+ const [buffering, setBuffering] = useState(false);
+ const [loading, setLoading] = useState(true);
+ const [blocked, setBlocked] = useState(false);
+ const [events, setEvents] = useState<{ e: FilteredMediaEvent; t: number }[]>(
+ [],
+ );
+
+ useEffect(() => {
+ if (!videoRef.current) return;
+
+ let seekOrBufferTimestamp = 0;
+
+ const mef = getMediaEventFilter({
+ mediaElement: videoRef.current,
+ callback: (evt) => {
+ if (!videoRef.current) return;
+
+ const now = Date.now();
+
+ switch (evt) {
+ case FilteredMediaEvent.LOADED:
+ setLoading(false);
+
+ // attempt autoplay
+ videoRef.current.play().catch((e) => {
+ // catch autoplay block
+ if (e.name.indexOf("NotAllowedError") > -1) {
+ setBlocked(true);
+ }
+ });
+ break;
+ case FilteredMediaEvent.PLAY:
+ break;
+ case FilteredMediaEvent.PLAYING:
+ // reset autplay blocked
+ setBlocked(false);
+ // we're playing!
+ setPlaying(true);
+ break;
+ case FilteredMediaEvent.ENDED:
+ case FilteredMediaEvent.PAUSE:
+ setPlaying(false);
+ break;
+ case FilteredMediaEvent.BUFFERING:
+ setBuffering(true);
+ case FilteredMediaEvent.BUFFERED:
+ setBuffering(false);
+ case FilteredMediaEvent.SEEKING:
+ setSeeking(true);
+ break;
+ case FilteredMediaEvent.SEEKED:
+ setSeeking(false);
+ break;
+ case FilteredMediaEvent.TIME_UPDATE:
+ default:
+ break;
+ }
+
+ if (evt === FilteredMediaEvent.TIME_UPDATE) {
+ console.debug(
+ "%cFiltered: %s",
+ "color:#267dff;font-weight:bold;",
+ evt,
+ );
+ return;
+ }
+
+ if (
+ [FilteredMediaEvent.BUFFERING, FilteredMediaEvent.SEEKING].includes(
+ evt,
+ )
+ ) {
+ seekOrBufferTimestamp = now;
+ }
+
+ if (
+ [FilteredMediaEvent.BUFFERED, FilteredMediaEvent.SEEKED].includes(evt)
+ ) {
+ console.log(
+ "%cFiltered: %s",
+ "color:#267dff;font-weight:bold;",
+ // TODO it does not work to use seekOrBufferTimestamp inside
+ // the callback. Need to set up separate effect.
+ `${evt} (${(now - seekOrBufferTimestamp) / 1000}s)`,
+ );
+ console.info("\n");
+ } else {
+ console.log("%cFiltered: %s", "color:#267dff;font-weight:bold;", evt);
+ console.info("\n");
+ }
+
+ setEvents((prev) => [...prev, { e: evt, t: now }]);
+ },
+ });
+
+ return () => {
+ mef.teardown();
+ };
+ }, [videoRef.current]);
+
+ return {
+ playing,
+ seeking,
+ buffering,
+ loading,
+ blocked,
+ events,
+ };
+};
diff --git a/src/demo/form-elements.ts b/src/demo/form-elements.ts
new file mode 100644
index 00000000..d8773271
--- /dev/null
+++ b/src/demo/form-elements.ts
@@ -0,0 +1,223 @@
+import styled from "@emotion/styled";
+
+export const FormContainer = styled.form``;
+
+const sharedMargin = `margin: 0 0 2rem`;
+
+export const FormInput = styled.input`
+ width: 100%;
+ font-size: 1.6rem;
+ padding: 0.5rem;
+ margin: 0 0 2rem;
+ border: 0.1rem solid #6f6e6e;
+ border-radius: 0.5rem;
+
+ ${sharedMargin};
+
+ &.additional-line {
+ padding-right: 3.5rem;
+ }
+
+ &.with-loader {
+ padding-right: 3.5rem;
+
+ &::-webkit-inner-spin-button {
+ appearance: none;
+ }
+
+ &::-webkit-outer-spin-button,
+ &::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+ }
+
+ &[type="number"] {
+ -moz-appearance: textfield;
+ }
+ }
+`;
+
+export const FormSelect = styled.select`
+ width: 100%;
+ font-size: 1.6rem;
+ padding: 0.5rem;
+ ${sharedMargin};
+
+ border: 1px solid #6f6e6e;
+ border-radius: 0.5rem;
+`;
+
+export const FormLabel = styled.label`
+ display: block;
+ input,
+ select {
+ font-size: 1.6rem;
+ display: inline-block;
+ }
+`;
+
+export const DecorativeLabel = styled.span`
+ display: block;
+ white-space: nowrap;
+ padding: 0 1rem 1rem 0;
+`;
+
+export const StyledWarningMessage = styled.div`
+ padding: 0.5rem;
+ font-size: 1.6rem;
+ background: #ebca6a;
+ border-radius: 0.5rem;
+ color: #1a1a1a;
+ ${sharedMargin};
+ border: 1px solid #ebca6a;
+ display: flex;
+ align-items: center;
+`;
+
+const ActionButton = styled.button`
+ background-color: transparent;
+ background-image: linear-gradient(to bottom, #fff, #f8eedb);
+ border: 0 solid #e5e7eb;
+ border-radius: 0.5rem;
+ box-sizing: border-box;
+ color: #482307;
+ column-gap: 1rem;
+ cursor: pointer;
+ display: flex;
+ font-size: 100%;
+ font-weight: 700;
+ line-height: 2.4rem;
+ margin: 0;
+ outline: 0.2rem solid transparent;
+ padding: 1rem 1.5rem;
+ text-align: center;
+ text-transform: none;
+ transform: translateZ(0) scale(1);
+ transition: all 0.1s cubic-bezier(0.4, 0, 0.2, 1);
+ user-select: none;
+ -webkit-user-select: none;
+ touch-action: manipulation;
+ box-shadow:
+ -0.6rem 0.8rem 1rem rgba(81, 41, 10, 0.1),
+ 0 0.2rem 0.2rem rgba(81, 41, 10, 0.2);
+
+ &:disabled {
+ background: #c9c6c0;
+ cursor: not-allowed;
+ }
+
+ &.with-loader {
+ position: relative;
+ color: rgba(255, 255, 255, 0);
+ }
+`;
+
+export const PrimaryButton = styled(ActionButton)`
+ &:active:enabled {
+ background-color: #f3f4f6;
+ box-shadow:
+ -0.1rem 0.2rem 0.5rem rgba(81, 41, 10, 0.15),
+ 0 0.1rem 0.1rem rgba(81, 41, 10, 0.15);
+ transform: translateY(0.125rem);
+ }
+
+ &:focus {
+ box-shadow:
+ rgba(72, 35, 7, 0.46) 0 0 0 0.4rem,
+ -0.6rem 0.8rem 1rem rgba(81, 41, 10, 0.1),
+ 0 0.2rem 0.2rem rgba(81, 41, 10, 0.2);
+ }
+
+ &:not(:disabled):hover {
+ }
+
+ &:not(:disabled):hover:active {
+ transform: translateY(0.125rem);
+ }
+
+ &:focus {
+ outline: 0 solid transparent;
+ }
+
+ &:focus:before {
+ content: "";
+ left: calc(-1 * 0.375rem);
+ pointer-events: none;
+ position: absolute;
+ top: calc(-1 * 0.375rem);
+ transition: border-radius;
+ user-select: none;
+ }
+
+ &:focus:not(:focus-visible) {
+ outline: 0 solid transparent;
+ }
+
+ &:focus:not(:focus-visible):before {
+ border-width: 0;
+ }
+
+ &:not(:disabled):active {
+ transform: translateY(0.125rem);
+ }
+`;
+
+export const SecondaryButton = styled(ActionButton)`
+ &:before,
+ &:after {
+ border-radius: 0.5rem;
+ }
+
+ &:before {
+ background-color: rgba(72, 54, 42, 0.32);
+ content: "";
+ display: block;
+ height: 100%;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ width: 100%;
+ z-index: -2;
+ }
+
+ &:after {
+ background-color: initial;
+ background-image: linear-gradient(to bottom, #fff, #f5ead6);
+ content: "";
+ display: block;
+ overflow: hidden;
+ position: absolute;
+ right: 0.4rem;
+ top: 0.4rem;
+ left: 0.4rem;
+ bottom: 0.4rem;
+ transition: all 100ms ease-out;
+ z-index: -1;
+ }
+
+ &:hover:not(:disabled):after {
+ bottom: 0;
+ left: 0;scale
+ right: 0;
+ top: 0;
+ transition-timing-function: ease-in;
+ }
+
+ &:active:not(:disabled) {
+ color: #ccc;
+ }
+
+ &:active:not(:disabled):after {
+ background-image: linear-gradient(
+ 0deg,
+ rgba(0, 0, 0, 0.2),
+ rgba(0, 0, 0, 0.2)
+ ),
+ linear-gradient(92.83deg, #fff, #f8eedb, 100%);
+ bottom: 0.4rem;
+ left: 0.4rem;
+ right: 0.4rem;
+ top: 0.4rem;
+ }
+`;
diff --git a/src/demo/native-events.hook.ts b/src/demo/native-events.hook.ts
new file mode 100644
index 00000000..272916b6
--- /dev/null
+++ b/src/demo/native-events.hook.ts
@@ -0,0 +1,57 @@
+import { RefObject, useEffect } from "react";
+import { MediaEvent } from "../media-event-filter";
+
+export const useNativeEvents = ({
+ videoRef,
+}: {
+ videoRef: RefObject;
+}) => {
+ useEffect(() => {
+ if (!videoRef.current) return;
+
+ const listeners: [MediaEvent, () => void][] = Object.values(MediaEvent)
+ .map((evt) => {
+ if (!videoRef.current) return;
+
+ const pair: [MediaEvent, () => void] = [
+ evt,
+ () => {
+ if (!videoRef.current) return;
+
+ const mediaElState = {
+ networkState: videoRef.current.networkState,
+ readyState: videoRef.current.readyState,
+ paused: videoRef.current.paused,
+ ended: videoRef.current.ended,
+ error: videoRef.current.error,
+ currentTime: videoRef.current.currentTime,
+ duration: videoRef.current.duration,
+ seeking: videoRef.current.seeking,
+ };
+
+ console[evt === MediaEvent.timeupdate ? "debug" : "log"](
+ "%cNativeEv: %s",
+ "color:#cf1313;font-weight:bold;",
+ evt,
+ );
+
+ console[evt === MediaEvent.timeupdate ? "debug" : "info"](
+ "Media Element State",
+ mediaElState,
+ );
+ },
+ ];
+
+ videoRef.current.addEventListener(evt, pair[1]);
+
+ return pair;
+ })
+ .filter((v) => !!v);
+
+ return () => {
+ listeners.forEach(([evt, listener]) => {
+ videoRef.current?.removeEventListener(evt, listener);
+ });
+ };
+ }, [videoRef.current]);
+};
diff --git a/src/demo/player.tsx b/src/demo/player.tsx
new file mode 100644
index 00000000..f0dcbfe4
--- /dev/null
+++ b/src/demo/player.tsx
@@ -0,0 +1,48 @@
+import { useShaka } from "./engine-shaka";
+import { useRef } from "react";
+import { useNativeEvents } from "./native-events.hook";
+import { useFilteredEvents } from "./filtered-events.hook";
+import { useRenderEvents } from "./render-events.hook";
+import { useControls } from "./controls.hook";
+
+export const Player = () => {
+ const videoRef = useRef(null);
+
+ const videoUrl = "https://testcontent.eyevinn.technology/mp4/VINN.mp4";
+
+ useNativeEvents({ videoRef });
+ const { playing, seeking, buffering, events, blocked, loading } =
+ useFilteredEvents({ videoRef });
+ const renderEvents = useRenderEvents(events);
+
+ // TODO extract to useEngine component with switch on selected engine
+ useShaka({
+ videoRef,
+ videoUrl,
+ });
+
+ const { playPause, skip } = useControls({
+ playing,
+ videoRef,
+ });
+
+ return (
+
+
+
+
+
+ {renderEvents.map(({ seq, evt, dur }) => (
+
+ {seq} {evt} {dur}
+
+ ))}
+
+ );
+};
diff --git a/src/demo/render-events.hook.ts b/src/demo/render-events.hook.ts
new file mode 100644
index 00000000..a458a860
--- /dev/null
+++ b/src/demo/render-events.hook.ts
@@ -0,0 +1,51 @@
+import { useEffect, useState } from "react";
+import { FilteredMediaEvent } from "../media-event-filter";
+
+export const useRenderEvents = (
+ events: { e: FilteredMediaEvent; t: number }[],
+) => {
+ const [eventsForRendering, setEventsForRendering] = useState<
+ { seq: number; evt: FilteredMediaEvent; dur: number | null }[]
+ >([]);
+
+ useEffect(() => {
+ setEventsForRendering(() => {
+ const mut = {
+ seekOrBufferTimestamp: 0,
+ dur: 0,
+ };
+
+ return events
+ .map(({ e, t }, i) => {
+ if (
+ [FilteredMediaEvent.BUFFERING, FilteredMediaEvent.SEEKING].includes(
+ e,
+ )
+ ) {
+ mut.seekOrBufferTimestamp = t;
+ }
+
+ if (
+ [FilteredMediaEvent.BUFFERED, FilteredMediaEvent.SEEKED].includes(e)
+ ) {
+ mut.dur = t - mut.seekOrBufferTimestamp;
+ }
+
+ return {
+ evt: e,
+ seq: i,
+ dur:
+ mut.seekOrBufferTimestamp &&
+ [FilteredMediaEvent.BUFFERED, FilteredMediaEvent.SEEKED].includes(
+ e,
+ )
+ ? mut.dur / 1000
+ : null,
+ };
+ })
+ .toReversed();
+ });
+ }, [events]);
+
+ return eventsForRendering;
+};
diff --git a/src/demo/shaka.d.ts b/src/demo/shaka.d.ts
new file mode 100644
index 00000000..7dc7ab4c
--- /dev/null
+++ b/src/demo/shaka.d.ts
@@ -0,0 +1,7 @@
+declare module "shaka-player" {
+ export = shaka;
+}
+
+declare module "shaka-player/dist/shaka-player.compiled" {
+ export = shaka;
+}
diff --git a/tsconfig.json b/tsconfig.json
index ff9f80d7..72f54223 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -3,6 +3,7 @@
/* Visit https://aka.ms/tsconfig.json to read more about this file */
"target": "ESNext",
"module": "ESNext",
+ "moduleResolution": "node",
"declaration": true,
"declarationMap": true,
"sourceMap": true,
@@ -10,9 +11,10 @@
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
- "lib": ["dom", "es2015", "es2017"],
+ "lib": ["dom", "dom.iterable", "esnext"],
"rootDir": "src",
- "outDir": "build/types"
+ "outDir": "build/types",
+ "jsx": "react-jsx",
},
"exclude": ["**/build/", "**/node_modules/", "**/webpack.*"]
}
diff --git a/webpack.common.cjs b/webpack.common.cjs
index cb38767b..a166db9e 100644
--- a/webpack.common.cjs
+++ b/webpack.common.cjs
@@ -14,7 +14,7 @@ module.exports = {
module: {
rules: [
{
- test: /\.m?ts$/,
+ test: /\.m?tsx?$/,
exclude: [/node_modules/],
use: ["swc-loader"],
},
diff --git a/webpack.dev.cjs b/webpack.dev.cjs
index 6bb89937..f707a926 100644
--- a/webpack.dev.cjs
+++ b/webpack.dev.cjs
@@ -4,7 +4,7 @@ const path = require("path");
module.exports = merge(common, {
mode: "development",
- entry: ["./src/media-event-filter.ts"],
+ entry: ["./src/demo/demo.tsx"],
devServer: {
static: {
directory: path.join(__dirname, "public"),
diff --git a/yarn.lock b/yarn.lock
index b5654ec0..544499b7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -15,6 +15,45 @@ __metadata:
languageName: node
linkType: hard
+"@babel/code-frame@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/code-frame@npm:7.24.7"
+ dependencies:
+ "@babel/highlight": "npm:^7.24.7"
+ picocolors: "npm:^1.0.0"
+ checksum: 10/4812e94885ba7e3213d49583a155fdffb05292330f0a9b2c41b49288da70cf3c746a3fda0bf1074041a6d741c33f8d7be24be5e96f41ef77395eeddc5c9ff624
+ languageName: node
+ linkType: hard
+
+"@babel/generator@npm:^7.25.6":
+ version: 7.25.6
+ resolution: "@babel/generator@npm:7.25.6"
+ dependencies:
+ "@babel/types": "npm:^7.25.6"
+ "@jridgewell/gen-mapping": "npm:^0.3.5"
+ "@jridgewell/trace-mapping": "npm:^0.3.25"
+ jsesc: "npm:^2.5.1"
+ checksum: 10/541e4fbb6ea7806f44232d70f25bf09dee9a57fe43d559e375536870ca5261ebb4647fec3af40dcbb3325ea2a49aff040e12a4e6f88609eaa88f10c4e27e31f8
+ languageName: node
+ linkType: hard
+
+"@babel/helper-module-imports@npm:^7.16.7":
+ version: 7.24.7
+ resolution: "@babel/helper-module-imports@npm:7.24.7"
+ dependencies:
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10/df8bfb2bb18413aa151ecd63b7d5deb0eec102f924f9de6bc08022ced7ed8ca7fed914562d2f6fa5b59b74a5d6e255dc35612b2bc3b8abf361e13f61b3704770
+ languageName: node
+ linkType: hard
+
+"@babel/helper-string-parser@npm:^7.24.8":
+ version: 7.24.8
+ resolution: "@babel/helper-string-parser@npm:7.24.8"
+ checksum: 10/6d1bf8f27dd725ce02bdc6dffca3c95fb9ab8a06adc2edbd9c1c9d68500274230d1a609025833ed81981eff560045b6b38f7b4c6fb1ab19fc90e5004e3932535
+ languageName: node
+ linkType: hard
+
"@babel/helper-validator-identifier@npm:^7.22.20":
version: 7.22.20
resolution: "@babel/helper-validator-identifier@npm:7.22.20"
@@ -22,6 +61,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-validator-identifier@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-validator-identifier@npm:7.24.7"
+ checksum: 10/86875063f57361471b531dbc2ea10bbf5406e12b06d249b03827d361db4cad2388c6f00936bcd9dc86479f7e2c69ea21412c2228d4b3672588b754b70a449d4b
+ languageName: node
+ linkType: hard
+
"@babel/highlight@npm:^7.24.2":
version: 7.24.2
resolution: "@babel/highlight@npm:7.24.2"
@@ -34,6 +80,75 @@ __metadata:
languageName: node
linkType: hard
+"@babel/highlight@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/highlight@npm:7.24.7"
+ dependencies:
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
+ chalk: "npm:^2.4.2"
+ js-tokens: "npm:^4.0.0"
+ picocolors: "npm:^1.0.0"
+ checksum: 10/69b73f38cdd4f881b09b939a711e76646da34f4834f4ce141d7a49a6bb1926eab1c594148970a8aa9360398dff800f63aade4e81fafdd7c8d8a8489ea93bfec1
+ languageName: node
+ linkType: hard
+
+"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.6":
+ version: 7.25.6
+ resolution: "@babel/parser@npm:7.25.6"
+ dependencies:
+ "@babel/types": "npm:^7.25.6"
+ bin:
+ parser: ./bin/babel-parser.js
+ checksum: 10/830aab72116aa14eb8d61bfa8f9d69fc8f3a43d909ce993cb4350ae14d3af1a2f740a54410a22d821c48a253263643dfecbc094f9608e6a70ce9ff3c0bbfe91a
+ languageName: node
+ linkType: hard
+
+"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3":
+ version: 7.25.6
+ resolution: "@babel/runtime@npm:7.25.6"
+ dependencies:
+ regenerator-runtime: "npm:^0.14.0"
+ checksum: 10/0c4134734deb20e1005ffb9165bf342e1074576621b246d8e5e41cc7cb315a885b7d98950fbf5c63619a2990a56ae82f444d35fe8c4691a0b70c2fe5673667dc
+ languageName: node
+ linkType: hard
+
+"@babel/template@npm:^7.25.0":
+ version: 7.25.0
+ resolution: "@babel/template@npm:7.25.0"
+ dependencies:
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.25.0"
+ "@babel/types": "npm:^7.25.0"
+ checksum: 10/07ebecf6db8b28244b7397628e09c99e7a317b959b926d90455c7253c88df3677a5a32d1501d9749fe292a263ff51a4b6b5385bcabd5dadd3a48036f4d4949e0
+ languageName: node
+ linkType: hard
+
+"@babel/traverse@npm:^7.24.7":
+ version: 7.25.6
+ resolution: "@babel/traverse@npm:7.25.6"
+ dependencies:
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/generator": "npm:^7.25.6"
+ "@babel/parser": "npm:^7.25.6"
+ "@babel/template": "npm:^7.25.0"
+ "@babel/types": "npm:^7.25.6"
+ debug: "npm:^4.3.1"
+ globals: "npm:^11.1.0"
+ checksum: 10/de75a918299bc27a44ec973e3f2fa8c7902bbd67bd5d39a0be656f3c1127f33ebc79c12696fbc8170a0b0e1072a966d4a2126578d7ea2e241b0aeb5d16edc738
+ languageName: node
+ linkType: hard
+
+"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.6":
+ version: 7.25.6
+ resolution: "@babel/types@npm:7.25.6"
+ dependencies:
+ "@babel/helper-string-parser": "npm:^7.24.8"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
+ to-fast-properties: "npm:^2.0.0"
+ checksum: 10/7b54665e1b51f525fe0f451efdd9fe7a4a6dfba3fd4956c3530bc77336b66ffe3d78c093796ed044119b5d213176af7cf326f317a2057c538d575c6cefcb3562
+ languageName: node
+ linkType: hard
+
"@colors/colors@npm:1.5.0":
version: 1.5.0
resolution: "@colors/colors@npm:1.5.0"
@@ -57,22 +172,176 @@ __metadata:
languageName: node
linkType: hard
+"@emotion/babel-plugin@npm:^11.12.0":
+ version: 11.12.0
+ resolution: "@emotion/babel-plugin@npm:11.12.0"
+ dependencies:
+ "@babel/helper-module-imports": "npm:^7.16.7"
+ "@babel/runtime": "npm:^7.18.3"
+ "@emotion/hash": "npm:^0.9.2"
+ "@emotion/memoize": "npm:^0.9.0"
+ "@emotion/serialize": "npm:^1.2.0"
+ babel-plugin-macros: "npm:^3.1.0"
+ convert-source-map: "npm:^1.5.0"
+ escape-string-regexp: "npm:^4.0.0"
+ find-root: "npm:^1.1.0"
+ source-map: "npm:^0.5.7"
+ stylis: "npm:4.2.0"
+ checksum: 10/fe6f4522ea2b61ef4214dd0b0f3778aad9c18434b47e50ae5091af226526bf305455c313065826a090682520c9462c151d4df62ec128f14671d3125afc05b148
+ languageName: node
+ linkType: hard
+
+"@emotion/cache@npm:^11.13.0":
+ version: 11.13.1
+ resolution: "@emotion/cache@npm:11.13.1"
+ dependencies:
+ "@emotion/memoize": "npm:^0.9.0"
+ "@emotion/sheet": "npm:^1.4.0"
+ "@emotion/utils": "npm:^1.4.0"
+ "@emotion/weak-memoize": "npm:^0.4.0"
+ stylis: "npm:4.2.0"
+ checksum: 10/090c8ad2e5b23f1b3a95e94f1f0554a40ed1dcd844c9d31629a68ff824eff40f32d1362f67aefa440ee0aabd5a8cabcc76870fd6d77144d3ff251bdcdf1420b9
+ languageName: node
+ linkType: hard
+
+"@emotion/hash@npm:^0.9.2":
+ version: 0.9.2
+ resolution: "@emotion/hash@npm:0.9.2"
+ checksum: 10/379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387
+ languageName: node
+ linkType: hard
+
+"@emotion/is-prop-valid@npm:^1.3.0":
+ version: 1.3.0
+ resolution: "@emotion/is-prop-valid@npm:1.3.0"
+ dependencies:
+ "@emotion/memoize": "npm:^0.9.0"
+ checksum: 10/9b395dd9734fa88e24aa5adeef90ba86564d29c85d07a18cd39fbd06fbe597a5008a335a6147088de9f0533dbb3691786c8e10e6eaab5c7d960634833a054005
+ languageName: node
+ linkType: hard
+
+"@emotion/memoize@npm:^0.9.0":
+ version: 0.9.0
+ resolution: "@emotion/memoize@npm:0.9.0"
+ checksum: 10/038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1
+ languageName: node
+ linkType: hard
+
+"@emotion/react@npm:11.13.3":
+ version: 11.13.3
+ resolution: "@emotion/react@npm:11.13.3"
+ dependencies:
+ "@babel/runtime": "npm:^7.18.3"
+ "@emotion/babel-plugin": "npm:^11.12.0"
+ "@emotion/cache": "npm:^11.13.0"
+ "@emotion/serialize": "npm:^1.3.1"
+ "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0"
+ "@emotion/utils": "npm:^1.4.0"
+ "@emotion/weak-memoize": "npm:^0.4.0"
+ hoist-non-react-statics: "npm:^3.3.1"
+ peerDependencies:
+ react: ">=16.8.0"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10/ee70d3afc2e8dd771e6fe176d27dd87a5e21a54e54d871438fd1caa5aa2312d848c6866292fdc65a6ea1c945147c8422bda2d22ed739178af9902dc86d6b298a
+ languageName: node
+ linkType: hard
+
+"@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.0, @emotion/serialize@npm:^1.3.1":
+ version: 1.3.1
+ resolution: "@emotion/serialize@npm:1.3.1"
+ dependencies:
+ "@emotion/hash": "npm:^0.9.2"
+ "@emotion/memoize": "npm:^0.9.0"
+ "@emotion/unitless": "npm:^0.10.0"
+ "@emotion/utils": "npm:^1.4.0"
+ csstype: "npm:^3.0.2"
+ checksum: 10/4bbb9b417f88a7bb55c4ffba101e3e53059029c0258969683bb11216906e08cbd687b5674ec787ec41e5340399fb08af8881d6cf913caf8a5fdf84c4f4890f33
+ languageName: node
+ linkType: hard
+
+"@emotion/sheet@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "@emotion/sheet@npm:1.4.0"
+ checksum: 10/8ac6e9bf6b373a648f26ae7f1c24041038524f4c72f436f4f8c4761c665e58880c3229d8d89b1f7a4815dd8e5b49634d03e60187cb6f93097d7f7c1859e869d5
+ languageName: node
+ linkType: hard
+
+"@emotion/styled@npm:11.13.0":
+ version: 11.13.0
+ resolution: "@emotion/styled@npm:11.13.0"
+ dependencies:
+ "@babel/runtime": "npm:^7.18.3"
+ "@emotion/babel-plugin": "npm:^11.12.0"
+ "@emotion/is-prop-valid": "npm:^1.3.0"
+ "@emotion/serialize": "npm:^1.3.0"
+ "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0"
+ "@emotion/utils": "npm:^1.4.0"
+ peerDependencies:
+ "@emotion/react": ^11.0.0-rc.0
+ react: ">=16.8.0"
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10/5463a0f15fc12a9e20340f52df49461e948c3ae7e2dd763db0ff937b0b96dd4e82eed85cd15e24621efb3b097a095b88b01d60f50cf6f38fe3ab7db6e77f9615
+ languageName: node
+ linkType: hard
+
+"@emotion/unitless@npm:^0.10.0":
+ version: 0.10.0
+ resolution: "@emotion/unitless@npm:0.10.0"
+ checksum: 10/6851c16edce01c494305f43b2cad7a26b939a821131b7c354e49b8e3b012c8810024755b0f4a03ef51117750309e55339825a97bd10411fb3687e68904769106
+ languageName: node
+ linkType: hard
+
+"@emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0"
+ peerDependencies:
+ react: ">=16.8.0"
+ checksum: 10/33a10f44a873b3f5ccd2a1a3d13c2f34ed628f5a2be1ccf28540a86535a14d3a930afcbef209d48346a22ec60ff48f43c86ee9c846b9480d23a55a17145da66c
+ languageName: node
+ linkType: hard
+
+"@emotion/utils@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "@emotion/utils@npm:1.4.0"
+ checksum: 10/e4cdb51819db01fec21c3e35a1391900c9e7f3ac1e7ecb419c8e408464830cd7ef6e1a116381cbfe3fb1039406fb7ed35f16a1575d502c92bc9f81bc13a3ee5a
+ languageName: node
+ linkType: hard
+
+"@emotion/weak-memoize@npm:^0.4.0":
+ version: 0.4.0
+ resolution: "@emotion/weak-memoize@npm:0.4.0"
+ checksum: 10/db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52
+ languageName: node
+ linkType: hard
+
"@eyevinn/media-event-filter@workspace:.":
version: 0.0.0-use.local
resolution: "@eyevinn/media-event-filter@workspace:."
dependencies:
+ "@emotion/react": "npm:11.13.3"
+ "@emotion/styled": "npm:11.13.0"
"@semantic-release/changelog": "npm:6.0.3"
"@semantic-release/git": "npm:10.0.1"
- "@snowpack/plugin-typescript": "npm:1.2.1"
- "@swc/core": "npm:1.6.13"
- "@types/node": "npm:20.14.10"
+ "@swc/core": "npm:1.7.26"
+ "@swc/plugin-emotion": "npm:4.0.1"
+ "@types/react": "npm:18.3.5"
+ "@types/react-dom": "npm:18.3.0"
"@types/webpack": "npm:5.28.5"
+ hls.js: "npm:1.5.15"
prettier: "npm:3.3.2"
+ react: "npm:18.3.1"
+ react-dom: "npm:18.3.1"
+ react-hook-form: "npm:7.53.0"
semantic-release: "npm:24"
+ shaka-player: "npm:4.11.2"
swc-loader: "npm:0.2.6"
terser-webpack-plugin: "npm:5.3.10"
ts-node: "npm:10.9.2"
- typescript: "npm:5.5.3"
+ typescript: "npm:5.6.2"
webpack: "npm:5.93.0"
webpack-bundle-analyzer: "npm:4.10.2"
webpack-cli: "npm:5.1.4"
@@ -774,104 +1043,92 @@ __metadata:
languageName: node
linkType: hard
-"@snowpack/plugin-typescript@npm:1.2.1":
- version: 1.2.1
- resolution: "@snowpack/plugin-typescript@npm:1.2.1"
- dependencies:
- execa: "npm:^5.0.0"
- npm-run-path: "npm:^4.0.1"
- peerDependencies:
- typescript: "*"
- checksum: 10/365eda9c03a492f61d28ddbe6b0764e67c33a4e1e938fc595a72b77c7637676aae80e8d92b0ea9a6563308be04754eb9e86f3d971ccae295e8aafa6ce712c92e
- languageName: node
- linkType: hard
-
-"@swc/core-darwin-arm64@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-darwin-arm64@npm:1.6.13"
+"@swc/core-darwin-arm64@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-darwin-arm64@npm:1.7.26"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-darwin-x64@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-darwin-x64@npm:1.6.13"
+"@swc/core-darwin-x64@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-darwin-x64@npm:1.7.26"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@swc/core-linux-arm-gnueabihf@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-linux-arm-gnueabihf@npm:1.6.13"
+"@swc/core-linux-arm-gnueabihf@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.26"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@swc/core-linux-arm64-gnu@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-linux-arm64-gnu@npm:1.6.13"
+"@swc/core-linux-arm64-gnu@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-linux-arm64-gnu@npm:1.7.26"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-arm64-musl@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-linux-arm64-musl@npm:1.6.13"
+"@swc/core-linux-arm64-musl@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-linux-arm64-musl@npm:1.7.26"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-linux-x64-gnu@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-linux-x64-gnu@npm:1.6.13"
+"@swc/core-linux-x64-gnu@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-linux-x64-gnu@npm:1.7.26"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
-"@swc/core-linux-x64-musl@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-linux-x64-musl@npm:1.6.13"
+"@swc/core-linux-x64-musl@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-linux-x64-musl@npm:1.7.26"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
-"@swc/core-win32-arm64-msvc@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-win32-arm64-msvc@npm:1.6.13"
+"@swc/core-win32-arm64-msvc@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-win32-arm64-msvc@npm:1.7.26"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@swc/core-win32-ia32-msvc@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-win32-ia32-msvc@npm:1.6.13"
+"@swc/core-win32-ia32-msvc@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-win32-ia32-msvc@npm:1.7.26"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@swc/core-win32-x64-msvc@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core-win32-x64-msvc@npm:1.6.13"
+"@swc/core-win32-x64-msvc@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core-win32-x64-msvc@npm:1.7.26"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
-"@swc/core@npm:1.6.13":
- version: 1.6.13
- resolution: "@swc/core@npm:1.6.13"
+"@swc/core@npm:1.7.26":
+ version: 1.7.26
+ resolution: "@swc/core@npm:1.7.26"
dependencies:
- "@swc/core-darwin-arm64": "npm:1.6.13"
- "@swc/core-darwin-x64": "npm:1.6.13"
- "@swc/core-linux-arm-gnueabihf": "npm:1.6.13"
- "@swc/core-linux-arm64-gnu": "npm:1.6.13"
- "@swc/core-linux-arm64-musl": "npm:1.6.13"
- "@swc/core-linux-x64-gnu": "npm:1.6.13"
- "@swc/core-linux-x64-musl": "npm:1.6.13"
- "@swc/core-win32-arm64-msvc": "npm:1.6.13"
- "@swc/core-win32-ia32-msvc": "npm:1.6.13"
- "@swc/core-win32-x64-msvc": "npm:1.6.13"
+ "@swc/core-darwin-arm64": "npm:1.7.26"
+ "@swc/core-darwin-x64": "npm:1.7.26"
+ "@swc/core-linux-arm-gnueabihf": "npm:1.7.26"
+ "@swc/core-linux-arm64-gnu": "npm:1.7.26"
+ "@swc/core-linux-arm64-musl": "npm:1.7.26"
+ "@swc/core-linux-x64-gnu": "npm:1.7.26"
+ "@swc/core-linux-x64-musl": "npm:1.7.26"
+ "@swc/core-win32-arm64-msvc": "npm:1.7.26"
+ "@swc/core-win32-ia32-msvc": "npm:1.7.26"
+ "@swc/core-win32-x64-msvc": "npm:1.7.26"
"@swc/counter": "npm:^0.1.3"
- "@swc/types": "npm:^0.1.9"
+ "@swc/types": "npm:^0.1.12"
peerDependencies:
"@swc/helpers": "*"
dependenciesMeta:
@@ -898,7 +1155,7 @@ __metadata:
peerDependenciesMeta:
"@swc/helpers":
optional: true
- checksum: 10/ccb9c11d5f2e8371f17fca33f7d702433684013fce685d0db06f0b3a6064db476b1c4378bb8f1e9d12841338fc745a6aed056137443cb370d4238b6f4fc5405c
+ checksum: 10/8fb43420bdd1b774dc054c6629f87f733e76860b97130609c7374f3a48406bc0ae1a2dd0b3e3c10317c692b2eaa64747f1a690b309727a8d1411112e2d2a884e
languageName: node
linkType: hard
@@ -909,12 +1166,21 @@ __metadata:
languageName: node
linkType: hard
-"@swc/types@npm:^0.1.9":
- version: 0.1.9
- resolution: "@swc/types@npm:0.1.9"
+"@swc/plugin-emotion@npm:4.0.1":
+ version: 4.0.1
+ resolution: "@swc/plugin-emotion@npm:4.0.1"
+ dependencies:
+ "@swc/counter": "npm:^0.1.3"
+ checksum: 10/2c3b1368279164663218985f6b9a960e30af8e39b2d9cc819929c7d9ab325c092d946f4b9a493dccf0e4027d70a0f5aa05170b6909674327698ff264d352f1dd
+ languageName: node
+ linkType: hard
+
+"@swc/types@npm:^0.1.12":
+ version: 0.1.12
+ resolution: "@swc/types@npm:0.1.12"
dependencies:
"@swc/counter": "npm:^0.1.3"
- checksum: 10/c67ee0480b7d71c20764c5d99addebc1aacd4aed218f56143fa946132a93ff3e11bdea913c628ad992acf78c4d1fe69e65bb4fd2b81d8006a2edf94661d2fbce
+ checksum: 10/92dbbc70cd068ea30fb6fbdc1ae8599d6c058a5d09b2923d6e4e24fab5ad7c86a19dd01f349a8e03e300a9321e06911a24df18303b40e307fbd4109372cef2ef
languageName: node
linkType: hard
@@ -1107,15 +1373,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/node@npm:20.14.10":
- version: 20.14.10
- resolution: "@types/node@npm:20.14.10"
- dependencies:
- undici-types: "npm:~5.26.4"
- checksum: 10/672892cf94d0d95cf052f11271990686a0fd204cd1e5fe7a4ef240e5315e06711765dc47b9ec98627d3adac18b8c92bb7e2d8db21d18faa20bc3e3203a143e79
- languageName: node
- linkType: hard
-
"@types/normalize-package-data@npm:^2.4.3":
version: 2.4.4
resolution: "@types/normalize-package-data@npm:2.4.4"
@@ -1123,6 +1380,20 @@ __metadata:
languageName: node
linkType: hard
+"@types/parse-json@npm:^4.0.0":
+ version: 4.0.2
+ resolution: "@types/parse-json@npm:4.0.2"
+ checksum: 10/5bf62eec37c332ad10059252fc0dab7e7da730764869c980b0714777ad3d065e490627be9f40fc52f238ffa3ac4199b19de4127196910576c2fe34dd47c7a470
+ languageName: node
+ linkType: hard
+
+"@types/prop-types@npm:*":
+ version: 15.7.12
+ resolution: "@types/prop-types@npm:15.7.12"
+ checksum: 10/ac16cc3d0a84431ffa5cfdf89579ad1e2269549f32ce0c769321fdd078f84db4fbe1b461ed5a1a496caf09e637c0e367d600c541435716a55b1d9713f5035dfe
+ languageName: node
+ linkType: hard
+
"@types/qs@npm:*":
version: 6.9.14
resolution: "@types/qs@npm:6.9.14"
@@ -1137,6 +1408,25 @@ __metadata:
languageName: node
linkType: hard
+"@types/react-dom@npm:18.3.0":
+ version: 18.3.0
+ resolution: "@types/react-dom@npm:18.3.0"
+ dependencies:
+ "@types/react": "npm:*"
+ checksum: 10/6ff53f5a7b7fba952a68e114d3b542ebdc1e87a794234785ebab0bcd9bde7fb4885f21ebaf93d26dc0a1b5b93287f42cad68b78ae04dddf6b20da7aceff0beaf
+ languageName: node
+ linkType: hard
+
+"@types/react@npm:*, @types/react@npm:18.3.5":
+ version: 18.3.5
+ resolution: "@types/react@npm:18.3.5"
+ dependencies:
+ "@types/prop-types": "npm:*"
+ csstype: "npm:^3.0.2"
+ checksum: 10/ba0477c5ad4a762157c6262a199af6ccf9e24576877a26a7f516d5a9ba35374a6ac7f8686a10e5e8030513214f02bcb66e8363e43905afb7cd313deaf673de05
+ languageName: node
+ linkType: hard
+
"@types/retry@npm:0.12.2":
version: 0.12.2
resolution: "@types/retry@npm:0.12.2"
@@ -1674,6 +1964,17 @@ __metadata:
languageName: node
linkType: hard
+"babel-plugin-macros@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "babel-plugin-macros@npm:3.1.0"
+ dependencies:
+ "@babel/runtime": "npm:^7.12.5"
+ cosmiconfig: "npm:^7.0.0"
+ resolve: "npm:^1.19.0"
+ checksum: 10/30be6ca45e9a124c58ca00af9a0753e5410ec0b79a737714fc4722bbbeb693e55d9258f05c437145ef4a867c2d1603e06a1c292d66c243ce1227458c8ea2ca8c
+ languageName: node
+ linkType: hard
+
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
@@ -2264,6 +2565,13 @@ __metadata:
languageName: node
linkType: hard
+"convert-source-map@npm:^1.5.0":
+ version: 1.9.0
+ resolution: "convert-source-map@npm:1.9.0"
+ checksum: 10/dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8
+ languageName: node
+ linkType: hard
+
"cookie-signature@npm:1.0.6":
version: 1.0.6
resolution: "cookie-signature@npm:1.0.6"
@@ -2285,6 +2593,19 @@ __metadata:
languageName: node
linkType: hard
+"cosmiconfig@npm:^7.0.0":
+ version: 7.1.0
+ resolution: "cosmiconfig@npm:7.1.0"
+ dependencies:
+ "@types/parse-json": "npm:^4.0.0"
+ import-fresh: "npm:^3.2.1"
+ parse-json: "npm:^5.0.0"
+ path-type: "npm:^4.0.0"
+ yaml: "npm:^1.10.0"
+ checksum: 10/03600bb3870c80ed151b7b706b99a1f6d78df8f4bdad9c95485072ea13358ef294b13dd99f9e7bf4cc0b43bcd3599d40df7e648750d21c2f6817ca2cd687e071
+ languageName: node
+ linkType: hard
+
"cosmiconfig@npm:^9.0.0":
version: 9.0.0
resolution: "cosmiconfig@npm:9.0.0"
@@ -2338,6 +2659,13 @@ __metadata:
languageName: node
linkType: hard
+"csstype@npm:^3.0.2":
+ version: 3.1.3
+ resolution: "csstype@npm:3.1.3"
+ checksum: 10/f593cce41ff5ade23f44e77521e3a1bcc2c64107041e1bf6c3c32adc5187d0d60983292fda326154d20b01079e24931aa5b08e4467cc488b60bb1e7f6d478ade
+ languageName: node
+ linkType: hard
+
"debounce@npm:^1.2.1":
version: 1.2.1
resolution: "debounce@npm:1.2.1"
@@ -2366,6 +2694,18 @@ __metadata:
languageName: node
linkType: hard
+"debug@npm:^4.3.1":
+ version: 4.3.7
+ resolution: "debug@npm:4.3.7"
+ dependencies:
+ ms: "npm:^2.1.3"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ checksum: 10/71168908b9a78227ab29d5d25fe03c5867750e31ce24bf2c44a86efc5af041758bb56569b0a3d48a9b5344c00a24a777e6f4100ed6dfd9534a42c1dde285125a
+ languageName: node
+ linkType: hard
+
"deep-extend@npm:^0.6.0":
version: 0.6.0
resolution: "deep-extend@npm:0.6.0"
@@ -2532,6 +2872,13 @@ __metadata:
languageName: node
linkType: hard
+"eme-encryption-scheme-polyfill@npm:^2.1.5":
+ version: 2.1.5
+ resolution: "eme-encryption-scheme-polyfill@npm:2.1.5"
+ checksum: 10/e5ea6e62544bf69c38dc96d66d910ea27353221b5bc0e4c253bf78019087b6e70e66f7eb65137bd5d467fdcd0a932e23c1a6f1268fdc82c64469c266e8faaa3f
+ languageName: node
+ linkType: hard
+
"emoji-regex@npm:^8.0.0":
version: 8.0.0
resolution: "emoji-regex@npm:8.0.0"
@@ -2937,6 +3284,13 @@ __metadata:
languageName: node
linkType: hard
+"find-root@npm:^1.1.0":
+ version: 1.1.0
+ resolution: "find-root@npm:1.1.0"
+ checksum: 10/caa799c976a14925ba7f31ca1a226fe73d3aa270f4f1b623fcfeb1c6e263111db4beb807d8acd31bd4d48d44c343b93688a9288dfbccca27463c36a0301b0bb9
+ languageName: node
+ linkType: hard
+
"find-up-simple@npm:^1.0.0":
version: 1.0.0
resolution: "find-up-simple@npm:1.0.0"
@@ -3200,6 +3554,13 @@ __metadata:
languageName: node
linkType: hard
+"globals@npm:^11.1.0":
+ version: 11.12.0
+ resolution: "globals@npm:11.12.0"
+ checksum: 10/9f054fa38ff8de8fa356502eb9d2dae0c928217b8b5c8de1f09f5c9b6c8a96d8b9bd3afc49acbcd384a98a81fea713c859e1b09e214c60509517bb8fc2bc13c2
+ languageName: node
+ linkType: hard
+
"globby@npm:^14.0.0":
version: 14.0.1
resolution: "globby@npm:14.0.1"
@@ -3331,6 +3692,22 @@ __metadata:
languageName: node
linkType: hard
+"hls.js@npm:1.5.15":
+ version: 1.5.15
+ resolution: "hls.js@npm:1.5.15"
+ checksum: 10/58dd5c70e233a3d66ebba9f55bfbe6673ac9d941d391afd896d44e7a141cba931fd25c392133c13f65fbd82e85e1575ada68a2722d1da38b6ad7b9b6a93a6a6b
+ languageName: node
+ linkType: hard
+
+"hoist-non-react-statics@npm:^3.3.1":
+ version: 3.3.2
+ resolution: "hoist-non-react-statics@npm:3.3.2"
+ dependencies:
+ react-is: "npm:^16.7.0"
+ checksum: 10/1acbe85f33e5a39f90c822ad4d28b24daeb60f71c545279431dc98c312cd28a54f8d64788e477fe21dc502b0e3cf58589ebe5c1ad22af27245370391c2d24ea6
+ languageName: node
+ linkType: hard
+
"hook-std@npm:^3.0.0":
version: 3.0.0
resolution: "hook-std@npm:3.0.0"
@@ -3523,7 +3900,7 @@ __metadata:
languageName: node
linkType: hard
-"import-fresh@npm:^3.3.0":
+"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
version: 3.3.0
resolution: "import-fresh@npm:3.3.0"
dependencies:
@@ -3918,7 +4295,7 @@ __metadata:
languageName: node
linkType: hard
-"js-tokens@npm:^4.0.0":
+"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0":
version: 4.0.0
resolution: "js-tokens@npm:4.0.0"
checksum: 10/af37d0d913fb56aec6dc0074c163cc71cd23c0b8aad5c2350747b6721d37ba118af35abdd8b33c47ec2800de07dedb16a527ca9c530ee004093e04958bd0cbf2
@@ -3943,6 +4320,15 @@ __metadata:
languageName: node
linkType: hard
+"jsesc@npm:^2.5.1":
+ version: 2.5.2
+ resolution: "jsesc@npm:2.5.2"
+ bin:
+ jsesc: bin/jsesc
+ checksum: 10/d2096abdcdec56969764b40ffc91d4a23408aa2f351b4d1c13f736f25476643238c43fdbaf38a191c26b1b78fd856d965f5d4d0dde7b89459cd94025190cdf13
+ languageName: node
+ linkType: hard
+
"json-parse-better-errors@npm:^1.0.1":
version: 1.0.2
resolution: "json-parse-better-errors@npm:1.0.2"
@@ -4265,6 +4651,17 @@ __metadata:
languageName: node
linkType: hard
+"loose-envify@npm:^1.1.0":
+ version: 1.4.0
+ resolution: "loose-envify@npm:1.4.0"
+ dependencies:
+ js-tokens: "npm:^3.0.0 || ^4.0.0"
+ bin:
+ loose-envify: cli.js
+ checksum: 10/6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4
+ languageName: node
+ linkType: hard
+
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
version: 10.2.0
resolution: "lru-cache@npm:10.2.0"
@@ -4588,7 +4985,7 @@ __metadata:
languageName: node
linkType: hard
-"ms@npm:2.1.3, ms@npm:^2.1.2":
+"ms@npm:2.1.3, ms@npm:^2.1.2, ms@npm:^2.1.3":
version: 2.1.3
resolution: "ms@npm:2.1.3"
checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
@@ -5185,7 +5582,7 @@ __metadata:
languageName: node
linkType: hard
-"parse-json@npm:^5.2.0":
+"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0":
version: 5.2.0
resolution: "parse-json@npm:5.2.0"
dependencies:
@@ -5524,6 +5921,43 @@ __metadata:
languageName: node
linkType: hard
+"react-dom@npm:18.3.1":
+ version: 18.3.1
+ resolution: "react-dom@npm:18.3.1"
+ dependencies:
+ loose-envify: "npm:^1.1.0"
+ scheduler: "npm:^0.23.2"
+ peerDependencies:
+ react: ^18.3.1
+ checksum: 10/3f4b73a3aa083091173b29812b10394dd06f4ac06aff410b74702cfb3aa29d7b0ced208aab92d5272919b612e5cda21aeb1d54191848cf6e46e9e354f3541f81
+ languageName: node
+ linkType: hard
+
+"react-hook-form@npm:7.53.0":
+ version: 7.53.0
+ resolution: "react-hook-form@npm:7.53.0"
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18 || ^19
+ checksum: 10/b7d73696b7c10e042f6ea6fcec01f951091146bfbc89d1378327a970bcd724b968e93fae1657bddada75caf648cfaf8693c5ba03c25e96816b755079d29f65da
+ languageName: node
+ linkType: hard
+
+"react-is@npm:^16.7.0":
+ version: 16.13.1
+ resolution: "react-is@npm:16.13.1"
+ checksum: 10/5aa564a1cde7d391ac980bedee21202fc90bdea3b399952117f54fb71a932af1e5902020144fb354b4690b2414a0c7aafe798eb617b76a3d441d956db7726fdf
+ languageName: node
+ linkType: hard
+
+"react@npm:18.3.1":
+ version: 18.3.1
+ resolution: "react@npm:18.3.1"
+ dependencies:
+ loose-envify: "npm:^1.1.0"
+ checksum: 10/261137d3f3993eaa2368a83110466fc0e558bc2c7f7ae7ca52d94f03aac945f45146bd85e5f481044db1758a1dbb57879e2fcdd33924e2dde1bdc550ce73f7bf
+ languageName: node
+ linkType: hard
+
"read-cmd-shim@npm:^4.0.0":
version: 4.0.0
resolution: "read-cmd-shim@npm:4.0.0"
@@ -5639,6 +6073,13 @@ __metadata:
languageName: node
linkType: hard
+"regenerator-runtime@npm:^0.14.0":
+ version: 0.14.1
+ resolution: "regenerator-runtime@npm:0.14.1"
+ checksum: 10/5db3161abb311eef8c45bcf6565f4f378f785900ed3945acf740a9888c792f75b98ecb77f0775f3bf95502ff423529d23e94f41d80c8256e8fa05ed4b07cf471
+ languageName: node
+ linkType: hard
+
"registry-auth-token@npm:^5.0.0":
version: 5.0.2
resolution: "registry-auth-token@npm:5.0.2"
@@ -5692,7 +6133,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^1.20.0":
+"resolve@npm:^1.19.0, resolve@npm:^1.20.0":
version: 1.22.8
resolution: "resolve@npm:1.22.8"
dependencies:
@@ -5705,7 +6146,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@npm%3A^1.20.0#optional!builtin":
+"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin":
version: 1.22.8
resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"
dependencies:
@@ -5787,6 +6228,15 @@ __metadata:
languageName: node
linkType: hard
+"scheduler@npm:^0.23.2":
+ version: 0.23.2
+ resolution: "scheduler@npm:0.23.2"
+ dependencies:
+ loose-envify: "npm:^1.1.0"
+ checksum: 10/e8d68b89d18d5b028223edf090092846868a765a591944760942b77ea1f69b17235f7e956696efbb62c8130ab90af7e0949bfb8eba7896335507317236966bc9
+ languageName: node
+ linkType: hard
+
"schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0":
version: 3.3.0
resolution: "schema-utils@npm:3.3.0"
@@ -5985,6 +6435,15 @@ __metadata:
languageName: node
linkType: hard
+"shaka-player@npm:4.11.2":
+ version: 4.11.2
+ resolution: "shaka-player@npm:4.11.2"
+ dependencies:
+ eme-encryption-scheme-polyfill: "npm:^2.1.5"
+ checksum: 10/cad0f2b2454d0d397beba3c9478e1f0eb3ed53b601855412b1766abe4dc6ed81e742542675d908e79f7fe32aa98d8c0773d4d52e8816781b527a3a151d805b51
+ languageName: node
+ linkType: hard
+
"shallow-clone@npm:^3.0.0":
version: 3.0.1
resolution: "shallow-clone@npm:3.0.1"
@@ -6144,6 +6603,13 @@ __metadata:
languageName: node
linkType: hard
+"source-map@npm:^0.5.7":
+ version: 0.5.7
+ resolution: "source-map@npm:0.5.7"
+ checksum: 10/9b4ac749ec5b5831cad1f8cc4c19c4298ebc7474b24a0acf293e2f040f03f8eeccb3d01f12aa0f90cf46d555c887e03912b83a042c627f419bda5152d89c5269
+ languageName: node
+ linkType: hard
+
"source-map@npm:^0.6.0, source-map@npm:^0.6.1":
version: 0.6.1
resolution: "source-map@npm:0.6.1"
@@ -6361,6 +6827,13 @@ __metadata:
languageName: node
linkType: hard
+"stylis@npm:4.2.0":
+ version: 4.2.0
+ resolution: "stylis@npm:4.2.0"
+ checksum: 10/58359185275ef1f39c339ae94e598168aa6bb789f6cf0d52e726c1e7087a94e9c17f0385a28d34483dec1ffc2c75670ec714dc5603d99c3124ec83bc2b0a0f42
+ languageName: node
+ linkType: hard
+
"super-regex@npm:^1.0.0":
version: 1.0.0
resolution: "super-regex@npm:1.0.0"
@@ -6568,6 +7041,13 @@ __metadata:
languageName: node
linkType: hard
+"to-fast-properties@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "to-fast-properties@npm:2.0.0"
+ checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168
+ languageName: node
+ linkType: hard
+
"to-regex-range@npm:^5.0.1":
version: 5.0.1
resolution: "to-regex-range@npm:5.0.1"
@@ -6692,23 +7172,23 @@ __metadata:
languageName: node
linkType: hard
-"typescript@npm:5.5.3":
- version: 5.5.3
- resolution: "typescript@npm:5.5.3"
+"typescript@npm:5.6.2":
+ version: 5.6.2
+ resolution: "typescript@npm:5.6.2"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 10/11a867312419ed497929aafd2f1d28b2cd41810a5eb6c6e9e169559112e9ea073d681c121a29102e67cd4478d0a4ae37a306a5800f3717f59c4337e6a9bd5e8d
+ checksum: 10/f95365d4898f357823e93d334ecda9fcade54f009b397c7d05b7621cd9e865981033cf89ccde0f3e3a7b73b1fdbae18e92bc77db237b43e912f053fef0f9a53b
languageName: node
linkType: hard
-"typescript@patch:typescript@npm%3A5.5.3#optional!builtin":
- version: 5.5.3
- resolution: "typescript@patch:typescript@npm%3A5.5.3#optional!builtin::version=5.5.3&hash=5adc0c"
+"typescript@patch:typescript@npm%3A5.6.2#optional!builtin":
+ version: 5.6.2
+ resolution: "typescript@patch:typescript@npm%3A5.6.2#optional!builtin::version=5.6.2&hash=5adc0c"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
- checksum: 10/b61b8bb4b4d6a8a00f9d5f931f8c67070eed6ad11feabf4c41744a326987080bfc806a621596c70fbf2e5974eca3ed65bafeeeb22a078071bdfb51d8abd7c013
+ checksum: 10/060a7349adf698477b411be4ace470aee6c2c1bd99917fdf5d33697c17ec55c64fe724eb10399387530b50e9913b41528dd8bfcca0a5fc8f8bac63fbb4580a2e
languageName: node
linkType: hard
@@ -7269,6 +7749,13 @@ __metadata:
languageName: node
linkType: hard
+"yaml@npm:^1.10.0":
+ version: 1.10.2
+ resolution: "yaml@npm:1.10.2"
+ checksum: 10/e088b37b4d4885b70b50c9fa1b7e54bd2e27f5c87205f9deaffd1fb293ab263d9c964feadb9817a7b129a5bf30a06582cb08750f810568ecc14f3cdbabb79cb3
+ languageName: node
+ linkType: hard
+
"yargs-parser@npm:^20.2.2":
version: 20.2.9
resolution: "yargs-parser@npm:20.2.9"