@osmo.inc/cli 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (949) hide show
  1. package/DEPLOY.md +87 -0
  2. package/README.md +243 -0
  3. package/RELEASE.md +164 -0
  4. package/SETUP.md +60 -0
  5. package/THIRD_PARTY_NOTICES.md +18 -0
  6. package/bin/osmo.mjs +12 -0
  7. package/dist/osmo.js +7817 -0
  8. package/node_modules/@esbuild/darwin-arm64/README.md +3 -0
  9. package/node_modules/@esbuild/darwin-arm64/bin/esbuild +0 -0
  10. package/node_modules/@esbuild/darwin-arm64/package.json +20 -0
  11. package/node_modules/esbuild/LICENSE.md +21 -0
  12. package/node_modules/esbuild/README.md +3 -0
  13. package/node_modules/esbuild/bin/esbuild +223 -0
  14. package/node_modules/esbuild/install.js +289 -0
  15. package/node_modules/esbuild/lib/main.d.ts +716 -0
  16. package/node_modules/esbuild/lib/main.js +2532 -0
  17. package/node_modules/esbuild/package.json +49 -0
  18. package/node_modules/fflate/LICENSE +21 -0
  19. package/node_modules/fflate/esm/index.mjs +2710 -0
  20. package/node_modules/fflate/package.json +128 -0
  21. package/node_modules/typescript/LICENSE.txt +55 -0
  22. package/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  23. package/node_modules/typescript/lib/lib.d.ts +22 -0
  24. package/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  25. package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  26. package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  27. package/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  28. package/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  29. package/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  30. package/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  31. package/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  32. package/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  33. package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  34. package/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  35. package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  36. package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  37. package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  38. package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  39. package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  40. package/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  41. package/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  42. package/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  43. package/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  44. package/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  45. package/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  46. package/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  47. package/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  48. package/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  49. package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  50. package/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  51. package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  52. package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  53. package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  54. package/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  55. package/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  56. package/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  57. package/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  58. package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  59. package/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  60. package/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  61. package/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  62. package/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  63. package/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  64. package/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  65. package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  66. package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  67. package/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  68. package/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  69. package/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  70. package/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  71. package/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  72. package/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  73. package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  74. package/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  75. package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  76. package/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  77. package/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  78. package/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  79. package/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  80. package/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  81. package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  82. package/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  83. package/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  84. package/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  85. package/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  86. package/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  87. package/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  88. package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  89. package/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  90. package/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  91. package/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  92. package/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  93. package/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  94. package/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  95. package/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  96. package/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  97. package/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  98. package/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  99. package/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  100. package/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  101. package/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  102. package/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  103. package/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  104. package/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  105. package/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  106. package/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  107. package/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  108. package/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  109. package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  110. package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  111. package/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  112. package/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  113. package/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  114. package/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  115. package/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  116. package/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  117. package/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  118. package/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  119. package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  120. package/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  121. package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  122. package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  123. package/node_modules/typescript/lib/typescript.js +382 -0
  124. package/node_modules/typescript/package.json +57 -0
  125. package/package.json +54 -0
  126. package/release.json +136 -0
  127. package/runtime/apps/native/tools/compile.mjs +217 -0
  128. package/runtime/packages/scene/scripts/validate-strict.mjs +246 -0
  129. package/runtime/packages/scene/src/clip.d.mts +14 -0
  130. package/runtime/packages/scene/src/clip.mjs +15 -0
  131. package/runtime/packages/scene/src/color-value.d.mts +5 -0
  132. package/runtime/packages/scene/src/color-value.mjs +19 -0
  133. package/runtime/packages/scene/src/color.ts +1 -0
  134. package/runtime/packages/scene/src/effects.ts +213 -0
  135. package/runtime/packages/scene/src/elements.ts +491 -0
  136. package/runtime/packages/scene/src/evaluate.ts +919 -0
  137. package/runtime/packages/scene/src/index.ts +69 -0
  138. package/runtime/packages/scene/src/jsx-runtime.ts +73 -0
  139. package/runtime/packages/scene/src/knob-schema.ts +115 -0
  140. package/runtime/packages/scene/src/knobs.ts +118 -0
  141. package/runtime/packages/scene/src/mask.d.mts +6 -0
  142. package/runtime/packages/scene/src/mask.mjs +17 -0
  143. package/runtime/packages/scene/src/metadata.d.mts +23 -0
  144. package/runtime/packages/scene/src/metadata.mjs +44 -0
  145. package/runtime/packages/scene/src/motion-sampling.d.mts +2 -0
  146. package/runtime/packages/scene/src/motion-sampling.mjs +50 -0
  147. package/runtime/packages/scene/src/motion.ts +121 -0
  148. package/runtime/packages/scene/src/shader.ts +57 -0
  149. package/src/resource-examples/example-image/landscape.svg +7 -0
  150. package/src/resource-examples/example-image/resource.json +8 -0
  151. package/src/resource-examples/example-model/gem.glb +0 -0
  152. package/src/resource-examples/example-model/preview.svg +1 -0
  153. package/src/resource-examples/example-model/resource.json +7 -0
  154. package/src/resource-examples/example-scene/resource.json +1 -0
  155. package/src/resource-examples/example-scene/scene.tsx +8 -0
  156. package/src/resource-examples/example-shader/effect.wgsl +7 -0
  157. package/src/resource-examples/example-shader/preview.svg +1 -0
  158. package/src/resource-examples/example-shader/resource.json +27 -0
  159. package/src/resource-examples/example-shader/tint.wgsl +7 -0
  160. package/src/resource-examples/example-video/ambient.mp4 +0 -0
  161. package/src/resource-examples/example-video/resource.json +9 -0
  162. package/src/starter/scene.tsx +20 -0
  163. package/studio/index.html +2 -0
  164. package/studio/public/check-circle-filled.svg +3 -0
  165. package/studio/public/comment-cursor/active-outer.svg +3 -0
  166. package/studio/public/comment-cursor/default.svg +6 -0
  167. package/studio/public/osmo-studio-logo.svg +12 -0
  168. package/studio/public/pencil-simple.svg +5 -0
  169. package/studio/src/active-outer-TVYUEURE.svg +3 -0
  170. package/studio/src/app.css +4 -0
  171. package/studio/src/app.js +705 -0
  172. package/studio/src/default-6CTRH4V5.svg +6 -0
  173. package/studio/src/engine_bg.wasm +0 -0
  174. package/studio/src/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 +0 -0
  175. package/studio/src/inter-cyrillic-wght-normal-JEOLYBOO.woff2 +0 -0
  176. package/studio/src/inter-greek-ext-wght-normal-EOVOK2B5.woff2 +0 -0
  177. package/studio/src/inter-greek-wght-normal-IRE366VL.woff2 +0 -0
  178. package/studio/src/inter-latin-ext-wght-normal-HA22NDSG.woff2 +0 -0
  179. package/studio/src/inter-latin-wght-normal-NRMW37G5.woff2 +0 -0
  180. package/studio/src/inter-vietnamese-wght-normal-CE5GGD3W.woff2 +0 -0
  181. package/studio/src/osmo-studio-logo-D5R2V77B.svg +12 -0
  182. package/third-party/cargo/adler2@2.0.1/Cargo.toml +91 -0
  183. package/third-party/cargo/adler2@2.0.1/LICENSE-0BSD +12 -0
  184. package/third-party/cargo/adler2@2.0.1/LICENSE-APACHE +201 -0
  185. package/third-party/cargo/adler2@2.0.1/LICENSE-MIT +23 -0
  186. package/third-party/cargo/allocator-api2@0.2.21/Cargo.toml +48 -0
  187. package/third-party/cargo/allocator-api2@0.2.21/LICENSE-APACHE +176 -0
  188. package/third-party/cargo/allocator-api2@0.2.21/LICENSE-MIT +23 -0
  189. package/third-party/cargo/arrayref@0.3.9/Cargo.toml +23 -0
  190. package/third-party/cargo/arrayref@0.3.9/LICENSE +26 -0
  191. package/third-party/cargo/arrayvec@0.7.8/Cargo.toml +112 -0
  192. package/third-party/cargo/arrayvec@0.7.8/LICENSE-APACHE +201 -0
  193. package/third-party/cargo/arrayvec@0.7.8/LICENSE-MIT +25 -0
  194. package/third-party/cargo/ascii@1.1.0/Cargo.toml +41 -0
  195. package/third-party/cargo/ascii@1.1.0/LICENSE-APACHE +201 -0
  196. package/third-party/cargo/ascii@1.1.0/LICENSE-MIT +22 -0
  197. package/third-party/cargo/ash@0.38.0+1.3.281/Cargo.toml +66 -0
  198. package/third-party/cargo/ash@0.38.0+1.3.281/LICENSE-APACHE +67 -0
  199. package/third-party/cargo/ash@0.38.0+1.3.281/LICENSE-MIT +25 -0
  200. package/third-party/cargo/autocfg@1.5.1/Cargo.toml +75 -0
  201. package/third-party/cargo/autocfg@1.5.1/LICENSE-APACHE +201 -0
  202. package/third-party/cargo/autocfg@1.5.1/LICENSE-MIT +25 -0
  203. package/third-party/cargo/base64@0.13.1/Cargo.toml +53 -0
  204. package/third-party/cargo/base64@0.13.1/LICENSE-APACHE +201 -0
  205. package/third-party/cargo/base64@0.13.1/LICENSE-MIT +21 -0
  206. package/third-party/cargo/base64@0.22.1/Cargo.toml +85 -0
  207. package/third-party/cargo/base64@0.22.1/LICENSE-APACHE +201 -0
  208. package/third-party/cargo/base64@0.22.1/LICENSE-MIT +21 -0
  209. package/third-party/cargo/bit-set@0.10.0/Cargo.toml +108 -0
  210. package/third-party/cargo/bit-set@0.10.0/LICENSE-APACHE +201 -0
  211. package/third-party/cargo/bit-set@0.10.0/LICENSE-MIT +25 -0
  212. package/third-party/cargo/bit-vec@0.9.1/Cargo.toml +94 -0
  213. package/third-party/cargo/bit-vec@0.9.1/LICENSE-APACHE +201 -0
  214. package/third-party/cargo/bit-vec@0.9.1/LICENSE-MIT +25 -0
  215. package/third-party/cargo/bitflags@2.13.0/Cargo.toml +120 -0
  216. package/third-party/cargo/bitflags@2.13.0/LICENSE-APACHE +201 -0
  217. package/third-party/cargo/bitflags@2.13.0/LICENSE-MIT +25 -0
  218. package/third-party/cargo/block2@0.6.2/Cargo.toml +115 -0
  219. package/third-party/cargo/block2@0.6.2/MIT-terms.txt +22 -0
  220. package/third-party/cargo/block2@0.6.2/madsmtm-objc2-b4167b582b2f-LICENSE.md +34 -0
  221. package/third-party/cargo/bumpalo@3.20.3/Cargo.toml +99 -0
  222. package/third-party/cargo/bumpalo@3.20.3/LICENSE-APACHE +201 -0
  223. package/third-party/cargo/bumpalo@3.20.3/LICENSE-MIT +25 -0
  224. package/third-party/cargo/bytemuck@1.25.1/Cargo.toml +153 -0
  225. package/third-party/cargo/bytemuck@1.25.1/LICENSE-APACHE +61 -0
  226. package/third-party/cargo/bytemuck@1.25.1/LICENSE-MIT +9 -0
  227. package/third-party/cargo/bytemuck@1.25.1/LICENSE-ZLIB +11 -0
  228. package/third-party/cargo/bytemuck_derive@1.11.0/Cargo.toml +60 -0
  229. package/third-party/cargo/bytemuck_derive@1.11.0/LICENSE-APACHE +61 -0
  230. package/third-party/cargo/bytemuck_derive@1.11.0/LICENSE-MIT +9 -0
  231. package/third-party/cargo/bytemuck_derive@1.11.0/LICENSE-ZLIB +11 -0
  232. package/third-party/cargo/byteorder-lite@0.1.0/Cargo.toml +57 -0
  233. package/third-party/cargo/byteorder-lite@0.1.0/LICENSE-MIT +21 -0
  234. package/third-party/cargo/byteorder-lite@0.1.0/UNLICENSE +24 -0
  235. package/third-party/cargo/byteorder@1.5.0/COPYING +3 -0
  236. package/third-party/cargo/byteorder@1.5.0/Cargo.toml +54 -0
  237. package/third-party/cargo/byteorder@1.5.0/LICENSE-MIT +21 -0
  238. package/third-party/cargo/byteorder@1.5.0/UNLICENSE +24 -0
  239. package/third-party/cargo/cfg-if@1.0.4/Cargo.toml +47 -0
  240. package/third-party/cargo/cfg-if@1.0.4/LICENSE-APACHE +201 -0
  241. package/third-party/cargo/cfg-if@1.0.4/LICENSE-MIT +25 -0
  242. package/third-party/cargo/cfg_aliases@0.2.1/Cargo.toml +43 -0
  243. package/third-party/cargo/cfg_aliases@0.2.1/LICENSE +9 -0
  244. package/third-party/cargo/chunked_transfer@1.5.0/Cargo.toml +27 -0
  245. package/third-party/cargo/chunked_transfer@1.5.0/LICENSE-APACHE +201 -0
  246. package/third-party/cargo/chunked_transfer@1.5.0/LICENSE-MIT +22 -0
  247. package/third-party/cargo/codespan-reporting@0.13.1/Cargo.toml +115 -0
  248. package/third-party/cargo/codespan-reporting@0.13.1/LICENSE +201 -0
  249. package/third-party/cargo/color_quant@1.1.0/Cargo.toml +20 -0
  250. package/third-party/cargo/color_quant@1.1.0/LICENSE +21 -0
  251. package/third-party/cargo/console_error_panic_hook@0.1.7/Cargo.toml +27 -0
  252. package/third-party/cargo/console_error_panic_hook@0.1.7/LICENSE-APACHE +201 -0
  253. package/third-party/cargo/console_error_panic_hook@0.1.7/LICENSE-MIT +25 -0
  254. package/third-party/cargo/core_maths@0.1.1/Cargo.toml +37 -0
  255. package/third-party/cargo/core_maths@0.1.1/LICENSE +21 -0
  256. package/third-party/cargo/cosmic-text@0.19.0/Cargo.toml +214 -0
  257. package/third-party/cargo/cosmic-text@0.19.0/LICENSE-APACHE +201 -0
  258. package/third-party/cargo/cosmic-text@0.19.0/LICENSE-MIT +21 -0
  259. package/third-party/cargo/crc32fast@1.5.0/Cargo.toml +68 -0
  260. package/third-party/cargo/crc32fast@1.5.0/LICENSE-APACHE +202 -0
  261. package/third-party/cargo/crc32fast@1.5.0/LICENSE-MIT +21 -0
  262. package/third-party/cargo/data-url@0.3.2/Cargo.toml +63 -0
  263. package/third-party/cargo/data-url@0.3.2/LICENSE-APACHE +201 -0
  264. package/third-party/cargo/data-url@0.3.2/LICENSE-MIT +25 -0
  265. package/third-party/cargo/dispatch2@0.3.1/Cargo.toml +122 -0
  266. package/third-party/cargo/dispatch2@0.3.1/MIT-terms.txt +22 -0
  267. package/third-party/cargo/dispatch2@0.3.1/madsmtm-objc2-8852b424193c-LICENSE.md +34 -0
  268. package/third-party/cargo/dlib@0.5.3/Cargo.toml +43 -0
  269. package/third-party/cargo/dlib@0.5.3/LICENSE.txt +19 -0
  270. package/third-party/cargo/document-features@0.2.12/Cargo.toml +51 -0
  271. package/third-party/cargo/document-features@0.2.12/LICENSE-APACHE +73 -0
  272. package/third-party/cargo/document-features@0.2.12/LICENSE-MIT +19 -0
  273. package/third-party/cargo/equivalent@1.0.2/Cargo.toml +37 -0
  274. package/third-party/cargo/equivalent@1.0.2/LICENSE-APACHE +201 -0
  275. package/third-party/cargo/equivalent@1.0.2/LICENSE-MIT +25 -0
  276. package/third-party/cargo/errno@0.3.14/Cargo.toml +67 -0
  277. package/third-party/cargo/errno@0.3.14/LICENSE-APACHE +201 -0
  278. package/third-party/cargo/errno@0.3.14/LICENSE-MIT +25 -0
  279. package/third-party/cargo/etagere@0.3.0/Cargo.toml +57 -0
  280. package/third-party/cargo/etagere@0.3.0/LICENSE-APACHE +13 -0
  281. package/third-party/cargo/etagere@0.3.0/LICENSE-MIT +20 -0
  282. package/third-party/cargo/euclid@0.22.14/COPYRIGHT +5 -0
  283. package/third-party/cargo/euclid@0.22.14/Cargo.toml +66 -0
  284. package/third-party/cargo/euclid@0.22.14/LICENSE-APACHE +201 -0
  285. package/third-party/cargo/euclid@0.22.14/LICENSE-MIT +25 -0
  286. package/third-party/cargo/fastrand@2.5.0/Cargo.toml +89 -0
  287. package/third-party/cargo/fastrand@2.5.0/LICENSE-APACHE +201 -0
  288. package/third-party/cargo/fastrand@2.5.0/LICENSE-MIT +23 -0
  289. package/third-party/cargo/fdeflate@0.3.7/Cargo.toml +55 -0
  290. package/third-party/cargo/fdeflate@0.3.7/LICENSE-APACHE +177 -0
  291. package/third-party/cargo/fdeflate@0.3.7/LICENSE-MIT +25 -0
  292. package/third-party/cargo/flate2@1.1.9/Cargo.toml +274 -0
  293. package/third-party/cargo/flate2@1.1.9/LICENSE-APACHE +201 -0
  294. package/third-party/cargo/flate2@1.1.9/LICENSE-MIT +25 -0
  295. package/third-party/cargo/float-cmp@0.9.0/Cargo.toml +39 -0
  296. package/third-party/cargo/float-cmp@0.9.0/LICENSE +19 -0
  297. package/third-party/cargo/float_next_after@1.0.0/Cargo.toml +43 -0
  298. package/third-party/cargo/float_next_after@1.0.0/LICENSE +23 -0
  299. package/third-party/cargo/foldhash@0.2.0/Cargo.toml +80 -0
  300. package/third-party/cargo/foldhash@0.2.0/LICENSE +19 -0
  301. package/third-party/cargo/font-types@0.11.3/Cargo.toml +55 -0
  302. package/third-party/cargo/font-types@0.11.3/LICENSE-APACHE +67 -0
  303. package/third-party/cargo/font-types@0.11.3/LICENSE-MIT +25 -0
  304. package/third-party/cargo/fontdb@0.23.0/Cargo.toml +83 -0
  305. package/third-party/cargo/fontdb@0.23.0/LICENSE +21 -0
  306. package/third-party/cargo/futures-core@0.3.32/Cargo.toml +66 -0
  307. package/third-party/cargo/futures-core@0.3.32/LICENSE-APACHE +202 -0
  308. package/third-party/cargo/futures-core@0.3.32/LICENSE-MIT +26 -0
  309. package/third-party/cargo/futures-task@0.3.32/Cargo.toml +58 -0
  310. package/third-party/cargo/futures-task@0.3.32/LICENSE-APACHE +202 -0
  311. package/third-party/cargo/futures-task@0.3.32/LICENSE-MIT +26 -0
  312. package/third-party/cargo/futures-util@0.3.32/Cargo.toml +181 -0
  313. package/third-party/cargo/futures-util@0.3.32/LICENSE-APACHE +202 -0
  314. package/third-party/cargo/futures-util@0.3.32/LICENSE-MIT +26 -0
  315. package/third-party/cargo/getrandom@0.4.3/Cargo.toml +165 -0
  316. package/third-party/cargo/getrandom@0.4.3/LICENSE-APACHE +201 -0
  317. package/third-party/cargo/getrandom@0.4.3/LICENSE-MIT +26 -0
  318. package/third-party/cargo/gif@0.14.2/Cargo.toml +84 -0
  319. package/third-party/cargo/gif@0.14.2/LICENSE-APACHE +201 -0
  320. package/third-party/cargo/gif@0.14.2/LICENSE-MIT +21 -0
  321. package/third-party/cargo/glam@0.33.2/Cargo.toml +354 -0
  322. package/third-party/cargo/glam@0.33.2/LICENSE-APACHE +201 -0
  323. package/third-party/cargo/glam@0.33.2/LICENSE-MIT +23 -0
  324. package/third-party/cargo/glow@0.17.0/Cargo.toml +122 -0
  325. package/third-party/cargo/glow@0.17.0/LICENSE-APACHE +201 -0
  326. package/third-party/cargo/glow@0.17.0/LICENSE-MIT +23 -0
  327. package/third-party/cargo/glow@0.17.0/LICENSE-ZLIB +15 -0
  328. package/third-party/cargo/gltf-derive@1.4.1/Cargo.toml +34 -0
  329. package/third-party/cargo/gltf-derive@1.4.1/LICENSE-APACHE +202 -0
  330. package/third-party/cargo/gltf-derive@1.4.1/LICENSE-MIT +26 -0
  331. package/third-party/cargo/gltf-json@1.4.1/Cargo.toml +50 -0
  332. package/third-party/cargo/gltf-json@1.4.1/LICENSE-APACHE +202 -0
  333. package/third-party/cargo/gltf-json@1.4.1/LICENSE-MIT +26 -0
  334. package/third-party/cargo/gltf@1.4.1/Cargo.toml +122 -0
  335. package/third-party/cargo/gltf@1.4.1/LICENSE-APACHE +202 -0
  336. package/third-party/cargo/gltf@1.4.1/LICENSE-MIT +26 -0
  337. package/third-party/cargo/glyphon@0.12.0/Cargo.toml +35 -0
  338. package/third-party/cargo/glyphon@0.12.0/LICENSE-APACHE +201 -0
  339. package/third-party/cargo/glyphon@0.12.0/LICENSE-MIT +23 -0
  340. package/third-party/cargo/glyphon@0.12.0/LICENSE-ZLIB +15 -0
  341. package/third-party/cargo/gpu-allocator@0.28.0/Cargo.toml +180 -0
  342. package/third-party/cargo/gpu-allocator@0.28.0/LICENSE-APACHE +201 -0
  343. package/third-party/cargo/gpu-allocator@0.28.0/LICENSE-MIT +7 -0
  344. package/third-party/cargo/grid@1.0.1/Cargo.toml +77 -0
  345. package/third-party/cargo/grid@1.0.1/LICENSE +21 -0
  346. package/third-party/cargo/half@2.7.1/Cargo.toml +137 -0
  347. package/third-party/cargo/half@2.7.1/LICENSE-APACHE +176 -0
  348. package/third-party/cargo/half@2.7.1/LICENSE-MIT +19 -0
  349. package/third-party/cargo/harfrust@0.5.2/Cargo.toml +115 -0
  350. package/third-party/cargo/harfrust@0.5.2/harfbuzz-harfrust-efdae3142ab7-LICENSE +22 -0
  351. package/third-party/cargo/hashbrown@0.16.1/Cargo.toml +180 -0
  352. package/third-party/cargo/hashbrown@0.16.1/LICENSE-APACHE +201 -0
  353. package/third-party/cargo/hashbrown@0.16.1/LICENSE-MIT +25 -0
  354. package/third-party/cargo/hashbrown@0.17.1/Cargo.toml +201 -0
  355. package/third-party/cargo/hashbrown@0.17.1/LICENSE-APACHE +201 -0
  356. package/third-party/cargo/hashbrown@0.17.1/LICENSE-MIT +25 -0
  357. package/third-party/cargo/httpdate@1.0.3/Cargo.toml +35 -0
  358. package/third-party/cargo/httpdate@1.0.3/LICENSE-APACHE +201 -0
  359. package/third-party/cargo/httpdate@1.0.3/LICENSE-MIT +19 -0
  360. package/third-party/cargo/image-webp@0.2.4/Cargo.toml +63 -0
  361. package/third-party/cargo/image-webp@0.2.4/LICENSE-APACHE +177 -0
  362. package/third-party/cargo/image-webp@0.2.4/LICENSE-MIT +25 -0
  363. package/third-party/cargo/image@0.25.10/Cargo.toml +248 -0
  364. package/third-party/cargo/image@0.25.10/LICENSE-APACHE +177 -0
  365. package/third-party/cargo/image@0.25.10/LICENSE-MIT +25 -0
  366. package/third-party/cargo/imagesize@0.14.0/Cargo.toml +104 -0
  367. package/third-party/cargo/imagesize@0.14.0/LICENSE +21 -0
  368. package/third-party/cargo/indexmap@2.14.0/Cargo.toml +167 -0
  369. package/third-party/cargo/indexmap@2.14.0/LICENSE-APACHE +201 -0
  370. package/third-party/cargo/indexmap@2.14.0/LICENSE-MIT +25 -0
  371. package/third-party/cargo/inflections@1.1.1/Cargo.toml +21 -0
  372. package/third-party/cargo/inflections@1.1.1/LICENSE +20 -0
  373. package/third-party/cargo/itoa@1.0.18/Cargo.toml +66 -0
  374. package/third-party/cargo/itoa@1.0.18/LICENSE-APACHE +176 -0
  375. package/third-party/cargo/itoa@1.0.18/LICENSE-MIT +23 -0
  376. package/third-party/cargo/js-sys@0.3.103/Cargo.toml +98 -0
  377. package/third-party/cargo/js-sys@0.3.103/LICENSE-APACHE +201 -0
  378. package/third-party/cargo/js-sys@0.3.103/LICENSE-MIT +25 -0
  379. package/third-party/cargo/khronos-egl@6.0.0/Cargo.toml +82 -0
  380. package/third-party/cargo/khronos-egl@6.0.0/LICENSE-APACHE +201 -0
  381. package/third-party/cargo/khronos-egl@6.0.0/LICENSE-MIT +23 -0
  382. package/third-party/cargo/kurbo@0.13.1/Cargo.toml +230 -0
  383. package/third-party/cargo/kurbo@0.13.1/LICENSE-APACHE +202 -0
  384. package/third-party/cargo/kurbo@0.13.1/LICENSE-MIT +25 -0
  385. package/third-party/cargo/lazy_static@1.5.0/Cargo.toml +46 -0
  386. package/third-party/cargo/lazy_static@1.5.0/LICENSE-APACHE +201 -0
  387. package/third-party/cargo/lazy_static@1.5.0/LICENSE-MIT +25 -0
  388. package/third-party/cargo/libc@0.2.186/Cargo.toml +229 -0
  389. package/third-party/cargo/libc@0.2.186/LICENSE-APACHE +176 -0
  390. package/third-party/cargo/libc@0.2.186/LICENSE-MIT +25 -0
  391. package/third-party/cargo/libloading@0.8.9/Cargo.toml +90 -0
  392. package/third-party/cargo/libloading@0.8.9/LICENSE +12 -0
  393. package/third-party/cargo/libm@0.2.16/Cargo.toml +61 -0
  394. package/third-party/cargo/libm@0.2.16/LICENSE.txt +258 -0
  395. package/third-party/cargo/linebender_resource_handle@0.1.1/Cargo.toml +107 -0
  396. package/third-party/cargo/linebender_resource_handle@0.1.1/LICENSE-APACHE +176 -0
  397. package/third-party/cargo/linebender_resource_handle@0.1.1/LICENSE-MIT +19 -0
  398. package/third-party/cargo/litrs@1.0.0/Cargo.toml +63 -0
  399. package/third-party/cargo/litrs@1.0.0/LICENSE-APACHE +176 -0
  400. package/third-party/cargo/litrs@1.0.0/LICENSE-MIT +25 -0
  401. package/third-party/cargo/lock_api@0.4.14/Cargo.toml +68 -0
  402. package/third-party/cargo/lock_api@0.4.14/LICENSE-APACHE +201 -0
  403. package/third-party/cargo/lock_api@0.4.14/LICENSE-MIT +25 -0
  404. package/third-party/cargo/log@0.4.33/Cargo.toml +152 -0
  405. package/third-party/cargo/log@0.4.33/LICENSE-APACHE +201 -0
  406. package/third-party/cargo/log@0.4.33/LICENSE-MIT +25 -0
  407. package/third-party/cargo/lru@0.16.4/Cargo.toml +47 -0
  408. package/third-party/cargo/lru@0.16.4/LICENSE +21 -0
  409. package/third-party/cargo/lyon_geom@1.0.19/Cargo.toml +69 -0
  410. package/third-party/cargo/lyon_geom@1.0.19/nical-lyon-56219c95c658-LICENSE-APACHE +13 -0
  411. package/third-party/cargo/lyon_geom@1.0.19/nical-lyon-56219c95c658-LICENSE-MIT +20 -0
  412. package/third-party/cargo/lyon_path@1.0.19/Cargo.toml +58 -0
  413. package/third-party/cargo/lyon_path@1.0.19/nical-lyon-56219c95c658-LICENSE-APACHE +13 -0
  414. package/third-party/cargo/lyon_path@1.0.19/nical-lyon-56219c95c658-LICENSE-MIT +20 -0
  415. package/third-party/cargo/lyon_tessellation@1.0.20/Cargo.toml +71 -0
  416. package/third-party/cargo/lyon_tessellation@1.0.20/nical-lyon-7fa75ea8eea3-LICENSE-APACHE +13 -0
  417. package/third-party/cargo/lyon_tessellation@1.0.20/nical-lyon-7fa75ea8eea3-LICENSE-MIT +20 -0
  418. package/third-party/cargo/memchr@2.8.3/COPYING +3 -0
  419. package/third-party/cargo/memchr@2.8.3/Cargo.toml +89 -0
  420. package/third-party/cargo/memchr@2.8.3/LICENSE-MIT +21 -0
  421. package/third-party/cargo/memchr@2.8.3/UNLICENSE +24 -0
  422. package/third-party/cargo/memmap2@0.9.11/Cargo.toml +59 -0
  423. package/third-party/cargo/memmap2@0.9.11/LICENSE-APACHE +201 -0
  424. package/third-party/cargo/memmap2@0.9.11/LICENSE-MIT +26 -0
  425. package/third-party/cargo/miniz_oxide@0.8.9/Cargo.toml +91 -0
  426. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE +25 -0
  427. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE-APACHE.md +177 -0
  428. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE-MIT.md +24 -0
  429. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE-ZLIB.md +14 -0
  430. package/third-party/cargo/moxcms@0.8.1/Cargo.toml +113 -0
  431. package/third-party/cargo/moxcms@0.8.1/LICENSE-APACHE.md +201 -0
  432. package/third-party/cargo/moxcms@0.8.1/LICENSE.md +26 -0
  433. package/third-party/cargo/naga-types@30.0.0/Cargo.toml +94 -0
  434. package/third-party/cargo/naga-types@30.0.0/LICENSE.APACHE +176 -0
  435. package/third-party/cargo/naga-types@30.0.0/LICENSE.MIT +21 -0
  436. package/third-party/cargo/naga@30.0.0/Cargo.toml +246 -0
  437. package/third-party/cargo/naga@30.0.0/LICENSE.APACHE +176 -0
  438. package/third-party/cargo/naga@30.0.0/LICENSE.MIT +21 -0
  439. package/third-party/cargo/num-traits@0.2.19/Cargo.toml +54 -0
  440. package/third-party/cargo/num-traits@0.2.19/LICENSE-APACHE +201 -0
  441. package/third-party/cargo/num-traits@0.2.19/LICENSE-MIT +25 -0
  442. package/third-party/cargo/objc2-core-foundation@0.3.2/Cargo.toml +221 -0
  443. package/third-party/cargo/objc2-core-foundation@0.3.2/MIT-terms.txt +22 -0
  444. package/third-party/cargo/objc2-core-foundation@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +34 -0
  445. package/third-party/cargo/objc2-core-graphics@0.3.2/Cargo.toml +331 -0
  446. package/third-party/cargo/objc2-core-graphics@0.3.2/MIT-terms.txt +22 -0
  447. package/third-party/cargo/objc2-core-graphics@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +34 -0
  448. package/third-party/cargo/objc2-encode@4.1.0/Cargo.toml +81 -0
  449. package/third-party/cargo/objc2-encode@4.1.0/MIT-terms.txt +22 -0
  450. package/third-party/cargo/objc2-encode@4.1.0/madsmtm-objc2-8d214f547736-LICENSE.md +34 -0
  451. package/third-party/cargo/objc2-foundation@0.3.2/Cargo.toml +529 -0
  452. package/third-party/cargo/objc2-foundation@0.3.2/MIT-terms.txt +22 -0
  453. package/third-party/cargo/objc2-foundation@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +34 -0
  454. package/third-party/cargo/objc2-io-surface@0.3.2/Cargo.toml +139 -0
  455. package/third-party/cargo/objc2-io-surface@0.3.2/MIT-terms.txt +22 -0
  456. package/third-party/cargo/objc2-io-surface@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +34 -0
  457. package/third-party/cargo/objc2-metal@0.3.2/Cargo.toml +601 -0
  458. package/third-party/cargo/objc2-metal@0.3.2/MIT-terms.txt +22 -0
  459. package/third-party/cargo/objc2-metal@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +34 -0
  460. package/third-party/cargo/objc2-quartz-core@0.3.2/Cargo.toml +302 -0
  461. package/third-party/cargo/objc2-quartz-core@0.3.2/MIT-terms.txt +22 -0
  462. package/third-party/cargo/objc2-quartz-core@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +34 -0
  463. package/third-party/cargo/objc2@0.6.4/Cargo.toml +232 -0
  464. package/third-party/cargo/objc2@0.6.4/MIT-terms.txt +22 -0
  465. package/third-party/cargo/objc2@0.6.4/madsmtm-objc2-8852b424193c-LICENSE.md +34 -0
  466. package/third-party/cargo/once_cell@1.21.4/Cargo.toml +119 -0
  467. package/third-party/cargo/once_cell@1.21.4/LICENSE-APACHE +201 -0
  468. package/third-party/cargo/once_cell@1.21.4/LICENSE-MIT +23 -0
  469. package/third-party/cargo/ordered-float@5.3.0/Cargo.toml +162 -0
  470. package/third-party/cargo/ordered-float@5.3.0/LICENSE-MIT +25 -0
  471. package/third-party/cargo/parking_lot@0.12.5/Cargo.toml +87 -0
  472. package/third-party/cargo/parking_lot@0.12.5/LICENSE-APACHE +201 -0
  473. package/third-party/cargo/parking_lot@0.12.5/LICENSE-MIT +25 -0
  474. package/third-party/cargo/parking_lot_core@0.9.12/Cargo.toml +72 -0
  475. package/third-party/cargo/parking_lot_core@0.9.12/LICENSE-APACHE +201 -0
  476. package/third-party/cargo/parking_lot_core@0.9.12/LICENSE-MIT +25 -0
  477. package/third-party/cargo/pico-args@0.5.0/Cargo.toml +32 -0
  478. package/third-party/cargo/pico-args@0.5.0/LICENSE +20 -0
  479. package/third-party/cargo/pin-project-lite@0.2.17/Cargo.toml +198 -0
  480. package/third-party/cargo/pin-project-lite@0.2.17/LICENSE-APACHE +177 -0
  481. package/third-party/cargo/pin-project-lite@0.2.17/LICENSE-MIT +23 -0
  482. package/third-party/cargo/pkg-config@0.3.33/Cargo.toml +43 -0
  483. package/third-party/cargo/pkg-config@0.3.33/LICENSE-APACHE +201 -0
  484. package/third-party/cargo/pkg-config@0.3.33/LICENSE-MIT +25 -0
  485. package/third-party/cargo/png@0.18.1/Cargo.toml +130 -0
  486. package/third-party/cargo/png@0.18.1/LICENSE-APACHE +201 -0
  487. package/third-party/cargo/png@0.18.1/LICENSE-MIT +25 -0
  488. package/third-party/cargo/pollster@0.4.0/Cargo.toml +53 -0
  489. package/third-party/cargo/pollster@0.4.0/LICENSE-APACHE +201 -0
  490. package/third-party/cargo/pollster@0.4.0/LICENSE-MIT +25 -0
  491. package/third-party/cargo/polycool@0.4.0/Cargo.toml +83 -0
  492. package/third-party/cargo/polycool@0.4.0/LICENSE-APACHE +202 -0
  493. package/third-party/cargo/polycool@0.4.0/LICENSE-MIT +25 -0
  494. package/third-party/cargo/pp-rs@0.2.1/Cargo.toml +23 -0
  495. package/third-party/cargo/pp-rs@0.2.1/LICENSE +29 -0
  496. package/third-party/cargo/presser@0.3.1/Cargo.toml +58 -0
  497. package/third-party/cargo/presser@0.3.1/LICENSE-APACHE +201 -0
  498. package/third-party/cargo/presser@0.3.1/LICENSE-MIT +25 -0
  499. package/third-party/cargo/proc-macro2@1.0.106/Cargo.toml +105 -0
  500. package/third-party/cargo/proc-macro2@1.0.106/LICENSE-APACHE +176 -0
  501. package/third-party/cargo/proc-macro2@1.0.106/LICENSE-MIT +23 -0
  502. package/third-party/cargo/profiling@1.0.18/Cargo.toml +96 -0
  503. package/third-party/cargo/profiling@1.0.18/aclysma-profiling-8271551172eb-LICENSE-APACHE +201 -0
  504. package/third-party/cargo/profiling@1.0.18/aclysma-profiling-8271551172eb-LICENSE-MIT +21 -0
  505. package/third-party/cargo/pxfm@0.1.30/Cargo.toml +53 -0
  506. package/third-party/cargo/pxfm@0.1.30/LICENSE-APACHE.md +201 -0
  507. package/third-party/cargo/pxfm@0.1.30/LICENSE.md +26 -0
  508. package/third-party/cargo/quick-error@2.0.1/Cargo.toml +24 -0
  509. package/third-party/cargo/quick-error@2.0.1/LICENSE-APACHE +202 -0
  510. package/third-party/cargo/quick-error@2.0.1/LICENSE-MIT +19 -0
  511. package/third-party/cargo/quote@1.0.46/Cargo.toml +70 -0
  512. package/third-party/cargo/quote@1.0.46/LICENSE-APACHE +176 -0
  513. package/third-party/cargo/quote@1.0.46/LICENSE-MIT +23 -0
  514. package/third-party/cargo/rangemap@1.7.1/Cargo.toml +91 -0
  515. package/third-party/cargo/rangemap@1.7.1/LICENSE-APACHE +191 -0
  516. package/third-party/cargo/rangemap@1.7.1/LICENSE-MIT +7 -0
  517. package/third-party/cargo/raw-window-handle@0.6.2/Cargo.toml +56 -0
  518. package/third-party/cargo/raw-window-handle@0.6.2/LICENSE-APACHE.md +177 -0
  519. package/third-party/cargo/raw-window-handle@0.6.2/LICENSE-MIT.md +21 -0
  520. package/third-party/cargo/raw-window-handle@0.6.2/LICENSE-ZLIB.md +11 -0
  521. package/third-party/cargo/raw-window-metal@1.1.0/Cargo.toml +111 -0
  522. package/third-party/cargo/raw-window-metal@1.1.0/LICENSE-APACHE +202 -0
  523. package/third-party/cargo/raw-window-metal@1.1.0/LICENSE-MIT +17 -0
  524. package/third-party/cargo/read-fonts@0.37.0/Cargo.toml +95 -0
  525. package/third-party/cargo/read-fonts@0.37.0/LICENSE-APACHE +67 -0
  526. package/third-party/cargo/read-fonts@0.37.0/LICENSE-MIT +25 -0
  527. package/third-party/cargo/read-fonts@0.39.2/Cargo.toml +96 -0
  528. package/third-party/cargo/read-fonts@0.39.2/LICENSE-APACHE +67 -0
  529. package/third-party/cargo/read-fonts@0.39.2/LICENSE-MIT +25 -0
  530. package/third-party/cargo/renderdoc-sys@1.1.0/Cargo.toml +39 -0
  531. package/third-party/cargo/renderdoc-sys@1.1.0/LICENSE-APACHE +201 -0
  532. package/third-party/cargo/renderdoc-sys@1.1.0/LICENSE-MIT +25 -0
  533. package/third-party/cargo/resvg@0.47.0/Cargo.toml +112 -0
  534. package/third-party/cargo/resvg@0.47.0/LICENSE-APACHE +176 -0
  535. package/third-party/cargo/resvg@0.47.0/LICENSE-MIT +25 -0
  536. package/third-party/cargo/rgb@0.8.53/Cargo.toml +110 -0
  537. package/third-party/cargo/rgb@0.8.53/LICENSE +21 -0
  538. package/third-party/cargo/roxmltree@0.21.1/Cargo.toml +75 -0
  539. package/third-party/cargo/roxmltree@0.21.1/LICENSE-APACHE +201 -0
  540. package/third-party/cargo/roxmltree@0.21.1/LICENSE-MIT +21 -0
  541. package/third-party/cargo/rustc-hash@1.1.0/Cargo.toml +25 -0
  542. package/third-party/cargo/rustc-hash@1.1.0/LICENSE-APACHE +201 -0
  543. package/third-party/cargo/rustc-hash@1.1.0/LICENSE-MIT +23 -0
  544. package/third-party/cargo/rustc-hash@2.1.3/Cargo.toml +50 -0
  545. package/third-party/cargo/rustc-hash@2.1.3/LICENSE-APACHE +176 -0
  546. package/third-party/cargo/rustc-hash@2.1.3/LICENSE-MIT +23 -0
  547. package/third-party/cargo/rustix@1.1.4/COPYRIGHT +29 -0
  548. package/third-party/cargo/rustix@1.1.4/Cargo.toml +292 -0
  549. package/third-party/cargo/rustix@1.1.4/LICENSE-APACHE +201 -0
  550. package/third-party/cargo/rustix@1.1.4/LICENSE-Apache-2.0_WITH_LLVM-exception +220 -0
  551. package/third-party/cargo/rustix@1.1.4/LICENSE-MIT +23 -0
  552. package/third-party/cargo/rustversion@1.0.23/Cargo.toml +69 -0
  553. package/third-party/cargo/rustversion@1.0.23/LICENSE-APACHE +176 -0
  554. package/third-party/cargo/rustversion@1.0.23/LICENSE-MIT +23 -0
  555. package/third-party/cargo/rustybuzz@0.20.1/Cargo.toml +110 -0
  556. package/third-party/cargo/rustybuzz@0.20.1/LICENSE +22 -0
  557. package/third-party/cargo/scopeguard@1.2.0/Cargo.toml +43 -0
  558. package/third-party/cargo/scopeguard@1.2.0/LICENSE-APACHE +201 -0
  559. package/third-party/cargo/scopeguard@1.2.0/LICENSE-MIT +25 -0
  560. package/third-party/cargo/self_cell@1.2.2/Cargo.toml +33 -0
  561. package/third-party/cargo/self_cell@1.2.2/LICENSE-APACHE +201 -0
  562. package/third-party/cargo/self_cell@1.2.2/LICENSE-GPLv2 +339 -0
  563. package/third-party/cargo/self_cell@1.3.0/Cargo.toml +33 -0
  564. package/third-party/cargo/self_cell@1.3.0/LICENSE-APACHE +201 -0
  565. package/third-party/cargo/self_cell@1.3.0/LICENSE-GPLv2 +339 -0
  566. package/third-party/cargo/serde@1.0.228/Cargo.toml +84 -0
  567. package/third-party/cargo/serde@1.0.228/LICENSE-APACHE +176 -0
  568. package/third-party/cargo/serde@1.0.228/LICENSE-MIT +23 -0
  569. package/third-party/cargo/serde_core@1.0.228/Cargo.toml +87 -0
  570. package/third-party/cargo/serde_core@1.0.228/LICENSE-APACHE +176 -0
  571. package/third-party/cargo/serde_core@1.0.228/LICENSE-MIT +23 -0
  572. package/third-party/cargo/serde_derive@1.0.228/Cargo.toml +87 -0
  573. package/third-party/cargo/serde_derive@1.0.228/LICENSE-APACHE +176 -0
  574. package/third-party/cargo/serde_derive@1.0.228/LICENSE-MIT +23 -0
  575. package/third-party/cargo/serde_json@1.0.150/Cargo.toml +162 -0
  576. package/third-party/cargo/serde_json@1.0.150/LICENSE-APACHE +176 -0
  577. package/third-party/cargo/serde_json@1.0.150/LICENSE-MIT +23 -0
  578. package/third-party/cargo/simd-adler32@0.3.10/Cargo.toml +68 -0
  579. package/third-party/cargo/simd-adler32@0.3.10/LICENSE.md +21 -0
  580. package/third-party/cargo/simplecss@0.2.2/Cargo.toml +146 -0
  581. package/third-party/cargo/simplecss@0.2.2/LICENSE-APACHE +201 -0
  582. package/third-party/cargo/simplecss@0.2.2/LICENSE-MIT +21 -0
  583. package/third-party/cargo/siphasher@1.0.3/COPYING +7 -0
  584. package/third-party/cargo/siphasher@1.0.3/Cargo.toml +64 -0
  585. package/third-party/cargo/skrifa@0.40.0/Cargo.toml +86 -0
  586. package/third-party/cargo/skrifa@0.40.0/LICENSE-APACHE +67 -0
  587. package/third-party/cargo/skrifa@0.40.0/LICENSE-MIT +25 -0
  588. package/third-party/cargo/skrifa@0.42.1/Cargo.toml +86 -0
  589. package/third-party/cargo/skrifa@0.42.1/LICENSE-APACHE +67 -0
  590. package/third-party/cargo/skrifa@0.42.1/LICENSE-MIT +25 -0
  591. package/third-party/cargo/slab@0.4.12/Cargo.toml +67 -0
  592. package/third-party/cargo/slab@0.4.12/LICENSE +25 -0
  593. package/third-party/cargo/slotmap@1.1.1/Cargo.toml +83 -0
  594. package/third-party/cargo/slotmap@1.1.1/LICENSE +19 -0
  595. package/third-party/cargo/smallvec@1.15.2/Cargo.toml +103 -0
  596. package/third-party/cargo/smallvec@1.15.2/LICENSE-APACHE +201 -0
  597. package/third-party/cargo/smallvec@1.15.2/LICENSE-MIT +25 -0
  598. package/third-party/cargo/smol_str@0.3.6/Cargo.toml +155 -0
  599. package/third-party/cargo/smol_str@0.3.6/LICENSE-APACHE +201 -0
  600. package/third-party/cargo/smol_str@0.3.6/LICENSE-MIT +23 -0
  601. package/third-party/cargo/spirv@0.4.0+sdk-1.4.341.0/Cargo.toml +56 -0
  602. package/third-party/cargo/spirv@0.4.0+sdk-1.4.341.0/gfx-rs-rspirv-8afc3d0ac8e1-LICENSE +202 -0
  603. package/third-party/cargo/static_assertions@1.1.0/Cargo.toml +39 -0
  604. package/third-party/cargo/static_assertions@1.1.0/LICENSE-APACHE +202 -0
  605. package/third-party/cargo/static_assertions@1.1.0/LICENSE-MIT +21 -0
  606. package/third-party/cargo/strict-num@0.1.1/Cargo.toml +35 -0
  607. package/third-party/cargo/strict-num@0.1.1/LICENSE +19 -0
  608. package/third-party/cargo/svgtypes@0.16.1/Cargo.toml +57 -0
  609. package/third-party/cargo/svgtypes@0.16.1/LICENSE-APACHE +201 -0
  610. package/third-party/cargo/svgtypes@0.16.1/LICENSE-MIT +20 -0
  611. package/third-party/cargo/swash@0.2.9/Cargo.toml +93 -0
  612. package/third-party/cargo/swash@0.2.9/LICENSE-APACHE +201 -0
  613. package/third-party/cargo/swash@0.2.9/LICENSE-MIT +25 -0
  614. package/third-party/cargo/syn@2.0.118/Cargo.toml +272 -0
  615. package/third-party/cargo/syn@2.0.118/LICENSE-APACHE +176 -0
  616. package/third-party/cargo/syn@2.0.118/LICENSE-MIT +23 -0
  617. package/third-party/cargo/sys-locale@0.3.2/Cargo.toml +73 -0
  618. package/third-party/cargo/sys-locale@0.3.2/LICENSE-APACHE +201 -0
  619. package/third-party/cargo/sys-locale@0.3.2/LICENSE-MIT +21 -0
  620. package/third-party/cargo/taffy@0.12.1/Cargo.toml +171 -0
  621. package/third-party/cargo/taffy@0.12.1/DioxusLabs-taffy-1c9e37a0a1cf-LICENSE.md +25 -0
  622. package/third-party/cargo/tempfile@3.27.0/Cargo.toml +105 -0
  623. package/third-party/cargo/tempfile@3.27.0/LICENSE-APACHE +201 -0
  624. package/third-party/cargo/tempfile@3.27.0/LICENSE-MIT +25 -0
  625. package/third-party/cargo/termcolor@1.4.1/COPYING +3 -0
  626. package/third-party/cargo/termcolor@1.4.1/Cargo.toml +40 -0
  627. package/third-party/cargo/termcolor@1.4.1/LICENSE-MIT +21 -0
  628. package/third-party/cargo/termcolor@1.4.1/UNLICENSE +24 -0
  629. package/third-party/cargo/thiserror-impl@2.0.18/Cargo.toml +52 -0
  630. package/third-party/cargo/thiserror-impl@2.0.18/LICENSE-APACHE +176 -0
  631. package/third-party/cargo/thiserror-impl@2.0.18/LICENSE-MIT +23 -0
  632. package/third-party/cargo/thiserror@2.0.18/Cargo.toml +119 -0
  633. package/third-party/cargo/thiserror@2.0.18/LICENSE-APACHE +176 -0
  634. package/third-party/cargo/thiserror@2.0.18/LICENSE-MIT +23 -0
  635. package/third-party/cargo/tiny-skia-path@0.12.0/Cargo.toml +58 -0
  636. package/third-party/cargo/tiny-skia-path@0.12.0/LICENSE +30 -0
  637. package/third-party/cargo/tiny-skia@0.12.0/Cargo.toml +116 -0
  638. package/third-party/cargo/tiny-skia@0.12.0/LICENSE +30 -0
  639. package/third-party/cargo/tiny_http@0.12.0/Cargo.toml +82 -0
  640. package/third-party/cargo/tiny_http@0.12.0/LICENSE-APACHE +201 -0
  641. package/third-party/cargo/tiny_http@0.12.0/LICENSE-MIT +25 -0
  642. package/third-party/cargo/tinyvec@1.12.0/Cargo.toml +184 -0
  643. package/third-party/cargo/tinyvec@1.12.0/LICENSE-APACHE.md +202 -0
  644. package/third-party/cargo/tinyvec@1.12.0/LICENSE-MIT.md +5 -0
  645. package/third-party/cargo/tinyvec@1.12.0/LICENSE-ZLIB.md +11 -0
  646. package/third-party/cargo/tinyvec_macros@0.1.1/Cargo.toml +19 -0
  647. package/third-party/cargo/tinyvec_macros@0.1.1/LICENSE-APACHE.md +202 -0
  648. package/third-party/cargo/tinyvec_macros@0.1.1/LICENSE-MIT.md +21 -0
  649. package/third-party/cargo/tinyvec_macros@0.1.1/LICENSE-ZLIB.md +20 -0
  650. package/third-party/cargo/ttf-parser@0.25.1/Cargo.toml +101 -0
  651. package/third-party/cargo/ttf-parser@0.25.1/LICENSE-APACHE +201 -0
  652. package/third-party/cargo/ttf-parser@0.25.1/LICENSE-MIT +20 -0
  653. package/third-party/cargo/unicode-bidi-mirroring@0.4.0/Cargo.toml +22 -0
  654. package/third-party/cargo/unicode-bidi-mirroring@0.4.0/LICENSE-APACHE +201 -0
  655. package/third-party/cargo/unicode-bidi-mirroring@0.4.0/LICENSE-MIT +21 -0
  656. package/third-party/cargo/unicode-bidi@0.3.18/COPYRIGHT +8 -0
  657. package/third-party/cargo/unicode-bidi@0.3.18/Cargo.toml +90 -0
  658. package/third-party/cargo/unicode-bidi@0.3.18/LICENSE-APACHE +201 -0
  659. package/third-party/cargo/unicode-bidi@0.3.18/LICENSE-MIT +25 -0
  660. package/third-party/cargo/unicode-ccc@0.4.0/Cargo.toml +22 -0
  661. package/third-party/cargo/unicode-ccc@0.4.0/LICENSE-APACHE +201 -0
  662. package/third-party/cargo/unicode-ccc@0.4.0/LICENSE-MIT +21 -0
  663. package/third-party/cargo/unicode-ident@1.0.24/Cargo.toml +84 -0
  664. package/third-party/cargo/unicode-ident@1.0.24/LICENSE-APACHE +176 -0
  665. package/third-party/cargo/unicode-ident@1.0.24/LICENSE-MIT +23 -0
  666. package/third-party/cargo/unicode-ident@1.0.24/LICENSE-UNICODE +39 -0
  667. package/third-party/cargo/unicode-linebreak@0.1.5/Cargo.toml +32 -0
  668. package/third-party/cargo/unicode-linebreak@0.1.5/LICENSE +201 -0
  669. package/third-party/cargo/unicode-properties@0.1.4/COPYRIGHT +7 -0
  670. package/third-party/cargo/unicode-properties@0.1.4/Cargo.toml +65 -0
  671. package/third-party/cargo/unicode-properties@0.1.4/LICENSE-APACHE +201 -0
  672. package/third-party/cargo/unicode-properties@0.1.4/LICENSE-MIT +25 -0
  673. package/third-party/cargo/unicode-script@0.5.8/Cargo.toml +63 -0
  674. package/third-party/cargo/unicode-script@0.5.8/LICENSE-APACHE +201 -0
  675. package/third-party/cargo/unicode-script@0.5.8/LICENSE-MIT +27 -0
  676. package/third-party/cargo/unicode-segmentation@1.13.3/COPYRIGHT +7 -0
  677. package/third-party/cargo/unicode-segmentation@1.13.3/Cargo.toml +91 -0
  678. package/third-party/cargo/unicode-segmentation@1.13.3/LICENSE-APACHE +201 -0
  679. package/third-party/cargo/unicode-segmentation@1.13.3/LICENSE-MIT +25 -0
  680. package/third-party/cargo/unicode-vo@0.1.0/Cargo.toml +22 -0
  681. package/third-party/cargo/unicode-vo@0.1.0/LICENSE-APACHE +201 -0
  682. package/third-party/cargo/unicode-vo@0.1.0/LICENSE-MIT +21 -0
  683. package/third-party/cargo/unicode-width@0.2.2/COPYRIGHT +7 -0
  684. package/third-party/cargo/unicode-width@0.2.2/Cargo.toml +77 -0
  685. package/third-party/cargo/unicode-width@0.2.2/LICENSE-APACHE +201 -0
  686. package/third-party/cargo/unicode-width@0.2.2/LICENSE-MIT +25 -0
  687. package/third-party/cargo/unicode-xid@0.2.6/COPYRIGHT +7 -0
  688. package/third-party/cargo/unicode-xid@0.2.6/Cargo.toml +65 -0
  689. package/third-party/cargo/unicode-xid@0.2.6/LICENSE-APACHE +201 -0
  690. package/third-party/cargo/unicode-xid@0.2.6/LICENSE-MIT +25 -0
  691. package/third-party/cargo/urlencoding@2.1.3/Cargo.toml +41 -0
  692. package/third-party/cargo/urlencoding@2.1.3/LICENSE +20 -0
  693. package/third-party/cargo/usvg@0.47.0/Cargo.toml +138 -0
  694. package/third-party/cargo/usvg@0.47.0/LICENSE-APACHE +176 -0
  695. package/third-party/cargo/usvg@0.47.0/LICENSE-MIT +25 -0
  696. package/third-party/cargo/version_check@0.9.5/Cargo.toml +38 -0
  697. package/third-party/cargo/version_check@0.9.5/LICENSE-APACHE +201 -0
  698. package/third-party/cargo/version_check@0.9.5/LICENSE-MIT +19 -0
  699. package/third-party/cargo/wasm-bindgen-futures@0.4.76/Cargo.toml +88 -0
  700. package/third-party/cargo/wasm-bindgen-futures@0.4.76/LICENSE-APACHE +201 -0
  701. package/third-party/cargo/wasm-bindgen-futures@0.4.76/LICENSE-MIT +25 -0
  702. package/third-party/cargo/wasm-bindgen-macro-support@0.2.126/Cargo.toml +83 -0
  703. package/third-party/cargo/wasm-bindgen-macro-support@0.2.126/LICENSE-APACHE +201 -0
  704. package/third-party/cargo/wasm-bindgen-macro-support@0.2.126/LICENSE-MIT +25 -0
  705. package/third-party/cargo/wasm-bindgen-macro@0.2.126/Cargo.toml +73 -0
  706. package/third-party/cargo/wasm-bindgen-macro@0.2.126/LICENSE-APACHE +201 -0
  707. package/third-party/cargo/wasm-bindgen-macro@0.2.126/LICENSE-MIT +25 -0
  708. package/third-party/cargo/wasm-bindgen-shared@0.2.126/Cargo.toml +66 -0
  709. package/third-party/cargo/wasm-bindgen-shared@0.2.126/LICENSE-APACHE +201 -0
  710. package/third-party/cargo/wasm-bindgen-shared@0.2.126/LICENSE-MIT +25 -0
  711. package/third-party/cargo/wasm-bindgen@0.2.126/Cargo.toml +122 -0
  712. package/third-party/cargo/wasm-bindgen@0.2.126/LICENSE-APACHE +201 -0
  713. package/third-party/cargo/wasm-bindgen@0.2.126/LICENSE-MIT +25 -0
  714. package/third-party/cargo/wayland-sys@0.31.11/Cargo.toml +81 -0
  715. package/third-party/cargo/wayland-sys@0.31.11/LICENSE.txt +19 -0
  716. package/third-party/cargo/web-sys@0.3.103/Cargo.toml +2823 -0
  717. package/third-party/cargo/web-sys@0.3.103/LICENSE-APACHE +201 -0
  718. package/third-party/cargo/web-sys@0.3.103/LICENSE-MIT +25 -0
  719. package/third-party/cargo/weezl@0.1.12/Cargo.toml +120 -0
  720. package/third-party/cargo/weezl@0.1.12/LICENSE-APACHE +201 -0
  721. package/third-party/cargo/weezl@0.1.12/LICENSE-MIT +22 -0
  722. package/third-party/cargo/wgpu-core-deps-apple@30.0.0/Cargo.toml +53 -0
  723. package/third-party/cargo/wgpu-core-deps-apple@30.0.0/LICENSE.APACHE +176 -0
  724. package/third-party/cargo/wgpu-core-deps-apple@30.0.0/LICENSE.MIT +21 -0
  725. package/third-party/cargo/wgpu-core@30.0.0/Cargo.toml +237 -0
  726. package/third-party/cargo/wgpu-core@30.0.0/LICENSE.APACHE +176 -0
  727. package/third-party/cargo/wgpu-core@30.0.0/LICENSE.MIT +21 -0
  728. package/third-party/cargo/wgpu-hal@30.0.0/Cargo.toml +541 -0
  729. package/third-party/cargo/wgpu-hal@30.0.0/LICENSE.APACHE +176 -0
  730. package/third-party/cargo/wgpu-hal@30.0.0/LICENSE.MIT +21 -0
  731. package/third-party/cargo/wgpu-naga-bridge@30.0.0/Cargo.toml +46 -0
  732. package/third-party/cargo/wgpu-naga-bridge@30.0.0/LICENSE.APACHE +176 -0
  733. package/third-party/cargo/wgpu-naga-bridge@30.0.0/LICENSE.MIT +21 -0
  734. package/third-party/cargo/wgpu-types@30.0.0/Cargo.toml +161 -0
  735. package/third-party/cargo/wgpu-types@30.0.0/LICENSE.APACHE +176 -0
  736. package/third-party/cargo/wgpu-types@30.0.0/LICENSE.MIT +21 -0
  737. package/third-party/cargo/wgpu@30.0.0/Cargo.toml +278 -0
  738. package/third-party/cargo/wgpu@30.0.0/LICENSE.APACHE +176 -0
  739. package/third-party/cargo/wgpu@30.0.0/LICENSE.MIT +21 -0
  740. package/third-party/cargo/xmlwriter@0.1.0/Cargo.toml +23 -0
  741. package/third-party/cargo/xmlwriter@0.1.0/LICENSE +21 -0
  742. package/third-party/cargo/yazi@0.2.1/Cargo.toml +45 -0
  743. package/third-party/cargo/yazi@0.2.1/LICENSE-APACHE +201 -0
  744. package/third-party/cargo/yazi@0.2.1/LICENSE-MIT +19 -0
  745. package/third-party/cargo/zeno@0.3.3/Cargo.toml +65 -0
  746. package/third-party/cargo/zeno@0.3.3/LICENSE-APACHE +201 -0
  747. package/third-party/cargo/zeno@0.3.3/LICENSE-MIT +25 -0
  748. package/third-party/cargo/zerocopy-derive@0.8.54/Cargo.toml +209 -0
  749. package/third-party/cargo/zerocopy-derive@0.8.54/LICENSE-APACHE +202 -0
  750. package/third-party/cargo/zerocopy-derive@0.8.54/LICENSE-BSD +24 -0
  751. package/third-party/cargo/zerocopy-derive@0.8.54/LICENSE-MIT +26 -0
  752. package/third-party/cargo/zerocopy@0.8.54/Cargo.toml +419 -0
  753. package/third-party/cargo/zerocopy@0.8.54/LICENSE-APACHE +202 -0
  754. package/third-party/cargo/zerocopy@0.8.54/LICENSE-BSD +24 -0
  755. package/third-party/cargo/zerocopy@0.8.54/LICENSE-MIT +26 -0
  756. package/third-party/cargo/zmij@1.0.23/Cargo.toml +90 -0
  757. package/third-party/cargo/zmij@1.0.23/LICENSE-MIT +23 -0
  758. package/third-party/cargo/zune-core@0.5.1/Cargo.toml +47 -0
  759. package/third-party/cargo/zune-core@0.5.1/LICENSE-APACHE +201 -0
  760. package/third-party/cargo/zune-core@0.5.1/LICENSE-MIT +21 -0
  761. package/third-party/cargo/zune-core@0.5.1/LICENSE-ZLIB +19 -0
  762. package/third-party/cargo/zune-jpeg@0.5.15/Cargo.toml +67 -0
  763. package/third-party/cargo/zune-jpeg@0.5.15/LICENSE-APACHE +201 -0
  764. package/third-party/cargo/zune-jpeg@0.5.15/LICENSE-MIT +21 -0
  765. package/third-party/cargo/zune-jpeg@0.5.15/LICENSE-ZLIB +19 -0
  766. package/third-party/inventory.json +3614 -0
  767. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/esbuild-0.27.4-LICENSE.md +21 -0
  768. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/go-LICENSE +27 -0
  769. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/golang-x-sys-c0bba94af5f8-LICENSE +27 -0
  770. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/package.json +20 -0
  771. package/third-party/npm/@floating-ui__core@1.7.5/LICENSE +20 -0
  772. package/third-party/npm/@floating-ui__core@1.7.5/package.json +63 -0
  773. package/third-party/npm/@floating-ui__dom@1.7.6/LICENSE +20 -0
  774. package/third-party/npm/@floating-ui__dom@1.7.6/package.json +71 -0
  775. package/third-party/npm/@floating-ui__react-dom@2.1.8/LICENSE +20 -0
  776. package/third-party/npm/@floating-ui__react-dom@2.1.8/package.json +76 -0
  777. package/third-party/npm/@floating-ui__utils@0.2.11/LICENSE +20 -0
  778. package/third-party/npm/@floating-ui__utils@0.2.11/package.json +70 -0
  779. package/third-party/npm/@radix-ui__primitive@1.1.7/LICENSE +21 -0
  780. package/third-party/npm/@radix-ui__primitive@1.1.7/package.json +79 -0
  781. package/third-party/npm/@radix-ui__react-arrow@1.1.15/LICENSE +21 -0
  782. package/third-party/npm/@radix-ui__react-arrow@1.1.15/package.json +68 -0
  783. package/third-party/npm/@radix-ui__react-collection@1.1.15/LICENSE +21 -0
  784. package/third-party/npm/@radix-ui__react-collection@1.1.15/package.json +71 -0
  785. package/third-party/npm/@radix-ui__react-compose-refs@1.1.5/LICENSE +21 -0
  786. package/third-party/npm/@radix-ui__react-compose-refs@1.1.5/package.json +60 -0
  787. package/third-party/npm/@radix-ui__react-context-menu@2.3.7/LICENSE +21 -0
  788. package/third-party/npm/@radix-ui__react-context-menu@2.3.7/package.json +73 -0
  789. package/third-party/npm/@radix-ui__react-context@1.2.2/LICENSE +21 -0
  790. package/third-party/npm/@radix-ui__react-context@1.2.2/package.json +60 -0
  791. package/third-party/npm/@radix-ui__react-direction@1.1.4/LICENSE +21 -0
  792. package/third-party/npm/@radix-ui__react-direction@1.1.4/package.json +60 -0
  793. package/third-party/npm/@radix-ui__react-dismissable-layer@1.1.19/LICENSE +21 -0
  794. package/third-party/npm/@radix-ui__react-dismissable-layer@1.1.19/package.json +74 -0
  795. package/third-party/npm/@radix-ui__react-focus-guards@1.1.6/LICENSE +21 -0
  796. package/third-party/npm/@radix-ui__react-focus-guards@1.1.6/package.json +60 -0
  797. package/third-party/npm/@radix-ui__react-focus-scope@1.1.16/LICENSE +21 -0
  798. package/third-party/npm/@radix-ui__react-focus-scope@1.1.16/package.json +71 -0
  799. package/third-party/npm/@radix-ui__react-id@1.1.4/LICENSE +21 -0
  800. package/third-party/npm/@radix-ui__react-id@1.1.4/package.json +63 -0
  801. package/third-party/npm/@radix-ui__react-menu@2.1.24/LICENSE +21 -0
  802. package/third-party/npm/@radix-ui__react-menu@2.1.24/package.json +86 -0
  803. package/third-party/npm/@radix-ui__react-popper@1.3.7/LICENSE +21 -0
  804. package/third-party/npm/@radix-ui__react-popper@1.3.7/package.json +78 -0
  805. package/third-party/npm/@radix-ui__react-portal@1.1.17/LICENSE +21 -0
  806. package/third-party/npm/@radix-ui__react-portal@1.1.17/package.json +69 -0
  807. package/third-party/npm/@radix-ui__react-presence@1.1.10/LICENSE +21 -0
  808. package/third-party/npm/@radix-ui__react-presence@1.1.10/package.json +68 -0
  809. package/third-party/npm/@radix-ui__react-primitive@2.1.10/LICENSE +21 -0
  810. package/third-party/npm/@radix-ui__react-primitive@2.1.10/package.json +68 -0
  811. package/third-party/npm/@radix-ui__react-roving-focus@1.1.19/LICENSE +21 -0
  812. package/third-party/npm/@radix-ui__react-roving-focus@1.1.19/package.json +78 -0
  813. package/third-party/npm/@radix-ui__react-slot@1.3.3/LICENSE +21 -0
  814. package/third-party/npm/@radix-ui__react-slot@1.3.3/package.json +63 -0
  815. package/third-party/npm/@radix-ui__react-use-callback-ref@1.1.4/LICENSE +21 -0
  816. package/third-party/npm/@radix-ui__react-use-callback-ref@1.1.4/package.json +60 -0
  817. package/third-party/npm/@radix-ui__react-use-controllable-state@1.2.6/LICENSE +21 -0
  818. package/third-party/npm/@radix-ui__react-use-controllable-state@1.2.6/package.json +65 -0
  819. package/third-party/npm/@radix-ui__react-use-effect-event@0.0.5/LICENSE +21 -0
  820. package/third-party/npm/@radix-ui__react-use-effect-event@0.0.5/package.json +65 -0
  821. package/third-party/npm/@radix-ui__react-use-is-hydrated@0.1.3/LICENSE +21 -0
  822. package/third-party/npm/@radix-ui__react-use-is-hydrated@0.1.3/package.json +61 -0
  823. package/third-party/npm/@radix-ui__react-use-layout-effect@1.1.4/LICENSE +21 -0
  824. package/third-party/npm/@radix-ui__react-use-layout-effect@1.1.4/package.json +60 -0
  825. package/third-party/npm/@radix-ui__react-use-size@1.1.4/LICENSE +21 -0
  826. package/third-party/npm/@radix-ui__react-use-size@1.1.4/package.json +63 -0
  827. package/third-party/npm/aria-hidden@1.2.6/LICENSE +21 -0
  828. package/third-party/npm/aria-hidden@1.2.6/package.json +71 -0
  829. package/third-party/npm/detect-node-es@1.1.0/LICENSE +21 -0
  830. package/third-party/npm/detect-node-es@1.1.0/package.json +29 -0
  831. package/third-party/npm/esbuild@0.27.4/LICENSE.md +21 -0
  832. package/third-party/npm/esbuild@0.27.4/package.json +49 -0
  833. package/third-party/npm/fflate@0.8.3/LICENSE +21 -0
  834. package/third-party/npm/fflate@0.8.3/package.json +128 -0
  835. package/third-party/npm/get-nonce@1.0.1/LICENSE +21 -0
  836. package/third-party/npm/get-nonce@1.0.1/package.json +68 -0
  837. package/third-party/npm/mediabunny@1.52.2/LICENSE +373 -0
  838. package/third-party/npm/mediabunny@1.52.2/package.json +136 -0
  839. package/third-party/npm/mediabunny@1.52.2/source/LICENSE +373 -0
  840. package/third-party/npm/mediabunny@1.52.2/source/package.json +136 -0
  841. package/third-party/npm/mediabunny@1.52.2/source/src/adts/adts-demuxer.ts +400 -0
  842. package/third-party/npm/mediabunny@1.52.2/source/src/adts/adts-muxer.ts +124 -0
  843. package/third-party/npm/mediabunny@1.52.2/source/src/adts/adts-reader.ts +85 -0
  844. package/third-party/npm/mediabunny@1.52.2/source/src/aes.ts +307 -0
  845. package/third-party/npm/mediabunny@1.52.2/source/src/codec-data.ts +3178 -0
  846. package/third-party/npm/mediabunny@1.52.2/source/src/codec.ts +1154 -0
  847. package/third-party/npm/mediabunny@1.52.2/source/src/conversion.ts +2042 -0
  848. package/third-party/npm/mediabunny@1.52.2/source/src/custom-coder.ts +212 -0
  849. package/third-party/npm/mediabunny@1.52.2/source/src/decode.ts +263 -0
  850. package/third-party/npm/mediabunny@1.52.2/source/src/demuxer.ts +43 -0
  851. package/third-party/npm/mediabunny@1.52.2/source/src/encode.ts +1412 -0
  852. package/third-party/npm/mediabunny@1.52.2/source/src/flac/flac-demuxer.ts +813 -0
  853. package/third-party/npm/mediabunny@1.52.2/source/src/flac/flac-misc.ts +165 -0
  854. package/third-party/npm/mediabunny@1.52.2/source/src/flac/flac-muxer.ts +350 -0
  855. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-demuxer.ts +995 -0
  856. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-misc.ts +81 -0
  857. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-muxer.ts +1529 -0
  858. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-segmented-input.ts +772 -0
  859. package/third-party/npm/mediabunny@1.52.2/source/src/id3.ts +972 -0
  860. package/third-party/npm/mediabunny@1.52.2/source/src/index.ts +319 -0
  861. package/third-party/npm/mediabunny@1.52.2/source/src/input-format.ts +819 -0
  862. package/third-party/npm/mediabunny@1.52.2/source/src/input-track.ts +1141 -0
  863. package/third-party/npm/mediabunny@1.52.2/source/src/input.ts +571 -0
  864. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-boxes.ts +1911 -0
  865. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-demuxer.ts +3953 -0
  866. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-misc.ts +90 -0
  867. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-muxer.ts +1595 -0
  868. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-reader.ts +91 -0
  869. package/third-party/npm/mediabunny@1.52.2/source/src/logging.ts +120 -0
  870. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/ebml.ts +770 -0
  871. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/matroska-demuxer.ts +2598 -0
  872. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/matroska-misc.ts +29 -0
  873. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/matroska-muxer.ts +1360 -0
  874. package/third-party/npm/mediabunny@1.52.2/source/src/media-sink.ts +2589 -0
  875. package/third-party/npm/mediabunny@1.52.2/source/src/media-source.ts +3041 -0
  876. package/third-party/npm/mediabunny@1.52.2/source/src/metadata.ts +335 -0
  877. package/third-party/npm/mediabunny@1.52.2/source/src/misc.ts +1336 -0
  878. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-demuxer.ts +469 -0
  879. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-muxer.ts +169 -0
  880. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-reader.ts +61 -0
  881. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-writer.ts +121 -0
  882. package/third-party/npm/mediabunny@1.52.2/source/src/mpeg-ts/mpeg-ts-demuxer.ts +2519 -0
  883. package/third-party/npm/mediabunny@1.52.2/source/src/mpeg-ts/mpeg-ts-misc.ts +32 -0
  884. package/third-party/npm/mediabunny@1.52.2/source/src/mpeg-ts/mpeg-ts-muxer.ts +842 -0
  885. package/third-party/npm/mediabunny@1.52.2/source/src/muxer.ts +80 -0
  886. package/third-party/npm/mediabunny@1.52.2/source/src/node.ts +11 -0
  887. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-demuxer.ts +1087 -0
  888. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-misc.ts +116 -0
  889. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-muxer.ts +527 -0
  890. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-reader.ts +93 -0
  891. package/third-party/npm/mediabunny@1.52.2/source/src/output-format.ts +1425 -0
  892. package/third-party/npm/mediabunny@1.52.2/source/src/output.ts +940 -0
  893. package/third-party/npm/mediabunny@1.52.2/source/src/packet.ts +287 -0
  894. package/third-party/npm/mediabunny@1.52.2/source/src/pcm.ts +112 -0
  895. package/third-party/npm/mediabunny@1.52.2/source/src/reader.ts +391 -0
  896. package/third-party/npm/mediabunny@1.52.2/source/src/resample.ts +287 -0
  897. package/third-party/npm/mediabunny@1.52.2/source/src/sample.ts +3231 -0
  898. package/third-party/npm/mediabunny@1.52.2/source/src/segmented-input.ts +575 -0
  899. package/third-party/npm/mediabunny@1.52.2/source/src/source.ts +2588 -0
  900. package/third-party/npm/mediabunny@1.52.2/source/src/subtitles.ts +131 -0
  901. package/third-party/npm/mediabunny@1.52.2/source/src/target.ts +871 -0
  902. package/third-party/npm/mediabunny@1.52.2/source/src/tsconfig.json +16 -0
  903. package/third-party/npm/mediabunny@1.52.2/source/src/wave/riff-writer.ts +36 -0
  904. package/third-party/npm/mediabunny@1.52.2/source/src/wave/wave-demuxer.ts +583 -0
  905. package/third-party/npm/mediabunny@1.52.2/source/src/wave/wave-muxer.ts +375 -0
  906. package/third-party/npm/mediabunny@1.52.2/source/src/writer.ts +128 -0
  907. package/third-party/npm/react-dom@19.3.0/LICENSE +21 -0
  908. package/third-party/npm/react-dom@19.3.0/package.json +117 -0
  909. package/third-party/npm/react-remove-scroll-bar@2.3.8/package.json +85 -0
  910. package/third-party/npm/react-remove-scroll-bar@2.3.8/react-remove-scroll-bar-LICENSE +21 -0
  911. package/third-party/npm/react-remove-scroll@2.7.2/LICENSE +21 -0
  912. package/third-party/npm/react-remove-scroll@2.7.2/package.json +98 -0
  913. package/third-party/npm/react-style-singleton@2.2.3/LICENSE +21 -0
  914. package/third-party/npm/react-style-singleton@2.2.3/package.json +90 -0
  915. package/third-party/npm/react@19.3.0/LICENSE +21 -0
  916. package/third-party/npm/react@19.3.0/package.json +51 -0
  917. package/third-party/npm/scheduler@0.28.0/LICENSE +21 -0
  918. package/third-party/npm/scheduler@0.28.0/package.json +27 -0
  919. package/third-party/npm/tslib@2.8.1/LICENSE.txt +12 -0
  920. package/third-party/npm/tslib@2.8.1/package.json +47 -0
  921. package/third-party/npm/typescript@5.9.3/LICENSE.txt +55 -0
  922. package/third-party/npm/typescript@5.9.3/ThirdPartyNoticeText.txt +193 -0
  923. package/third-party/npm/typescript@5.9.3/package.json +120 -0
  924. package/third-party/npm/use-callback-ref@1.3.3/LICENSE +21 -0
  925. package/third-party/npm/use-callback-ref@1.3.3/package.json +85 -0
  926. package/third-party/npm/use-sidecar@1.1.3/LICENSE +21 -0
  927. package/third-party/npm/use-sidecar@1.1.3/package.json +93 -0
  928. package/third-party/packages/render-engine/assets/OFL.txt +93 -0
  929. package/third-party/packages/studio/public/fonts/OFL.txt +93 -0
  930. package/third-party/packages/studio/vendor/osmo-icons/LICENSE +21 -0
  931. package/third-party/packages/studio/vendor/shadcn/LICENSE +21 -0
  932. package/third-party/repository-notices.md +41 -0
  933. package/third-party/rust-standard-library/COPYRIGHT-library.html +5556 -0
  934. package/third-party/rust-standard-library/licenses/Apache-2.0.txt +73 -0
  935. package/third-party/rust-standard-library/licenses/BSD-2-Clause.txt +9 -0
  936. package/third-party/rust-standard-library/licenses/CC-BY-SA-4.0.txt +427 -0
  937. package/third-party/rust-standard-library/licenses/GCC-exception-3.1.txt +30 -0
  938. package/third-party/rust-standard-library/licenses/GPL-2.0-only.txt +133 -0
  939. package/third-party/rust-standard-library/licenses/GPL-3.0-or-later.txt +202 -0
  940. package/third-party/rust-standard-library/licenses/ISC.txt +7 -0
  941. package/third-party/rust-standard-library/licenses/LLVM-exception.txt +15 -0
  942. package/third-party/rust-standard-library/licenses/MIT.txt +9 -0
  943. package/third-party/rust-standard-library/licenses/NCSA.txt +29 -0
  944. package/third-party/rust-standard-library/licenses/OFL-1.1.txt +43 -0
  945. package/third-party/rust-standard-library/licenses/Unicode-3.0.txt +39 -0
  946. package/third-party/rust-standard-library/version.txt +1 -0
  947. package/vendor/osmo-lite +0 -0
  948. package/vendor/osmo-scene-0.1.0.tgz +0 -0
  949. package/vendor/platform.json +1 -0
@@ -0,0 +1,1141 @@
1
+ /*!
2
+ * Copyright (c) 2026-present, Vanilagy and contributors
3
+ *
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ */
8
+
9
+ import { AudioCodec, MediaCodec, VideoCodec } from './codec';
10
+ import { determineVideoPacketType } from './codec-data';
11
+ import { customAudioDecoders, customVideoDecoders } from './custom-coder';
12
+ import { Input } from './input';
13
+ import { Logging } from './logging';
14
+ import { EncodedPacketSink, PacketRetrievalOptions } from './media-sink';
15
+ import { assert, MaybePromise, Rational, Rotation, roundToDivisor, simplifyRational } from './misc';
16
+ import { TrackType } from './output';
17
+ import { EncodedPacket, PacketType } from './packet';
18
+ import { TrackDisposition } from './metadata';
19
+ import { DurationMetadataRequestOptions } from './demuxer';
20
+
21
+ /**
22
+ * Contains aggregate statistics about the encoded packets of a track.
23
+ * @group Input files & tracks
24
+ * @public
25
+ */
26
+ export type PacketStats = {
27
+ /** The total number of packets. */
28
+ packetCount: number;
29
+ /** The average number of packets per second. For video tracks, this will equal the average frame rate (FPS). */
30
+ averagePacketRate: number;
31
+ /** The average number of bits per second. */
32
+ averageBitrate: number;
33
+ };
34
+
35
+ export interface InputTrackBacking {
36
+ getType(): TrackType;
37
+ getId(): number;
38
+ getNumber(): number;
39
+
40
+ getCodec(): MaybePromise<MediaCodec | null>;
41
+ getInternalCodecId(): MaybePromise<string | number | Uint8Array | null>;
42
+ getName(): MaybePromise<string | null>;
43
+ getLanguageCode(): MaybePromise<string>;
44
+ getTimeResolution(): MaybePromise<number>;
45
+ isRelativeToUnixEpoch(): MaybePromise<boolean>;
46
+ getUnixTimeForTimestamp(timestamp: number): MaybePromise<number | null>;
47
+ getDisposition(): MaybePromise<TrackDisposition>;
48
+ getPairingMask(): bigint;
49
+ getBitrate(): MaybePromise<number | null>;
50
+ getAverageBitrate(): MaybePromise<number | null>;
51
+ getDurationFromMetadata(options: DurationMetadataRequestOptions): Promise<number | null>;
52
+ getLiveRefreshInterval(): Promise<number | null>;
53
+ getHasOnlyKeyPackets?(): MaybePromise<boolean | null>;
54
+ getDecoderConfig(): Promise<VideoDecoderConfig | AudioDecoderConfig | null>;
55
+ getMetadataCodecParameterString?(): MaybePromise<string | null>;
56
+
57
+ getFirstPacket(options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
58
+ getPacket(timestamp: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
59
+ getNextPacket(packet: EncodedPacket, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
60
+ getKeyPacket(timestamp: number, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
61
+ getNextKeyPacket(packet: EncodedPacket, options: PacketRetrievalOptions): Promise<EncodedPacket | null>;
62
+ }
63
+
64
+ /**
65
+ * Represents a media track in an input file.
66
+ * @group Input files & tracks
67
+ * @public
68
+ */
69
+ export abstract class InputTrack {
70
+ /** The input file this track belongs to. */
71
+ readonly input: Input;
72
+ /** @internal */
73
+ _backing: InputTrackBacking;
74
+ /** @internal */
75
+ constructor(input: Input, backing: InputTrackBacking) {
76
+ this.input = input;
77
+ this._backing = backing;
78
+ }
79
+
80
+ /** The type of the track. */
81
+ abstract get type(): TrackType;
82
+ /** Returns the codec of the track's packets. */
83
+ abstract getCodec(): Promise<MediaCodec | null>;
84
+ /**
85
+ * The codec of the track's packets.
86
+ * @deprecated Use {@link InputTrack.getCodec} instead.
87
+ */
88
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
89
+ abstract get codec(): MediaCodec | null;
90
+ /** Returns the full codec parameter string for this track. */
91
+ abstract getCodecParameterString(): Promise<string | null>;
92
+ /** Checks if this track's packets can be decoded by the browser. */
93
+ abstract canDecode(): Promise<boolean>;
94
+ /**
95
+ * For a given packet of this track, this method determines the actual type of this packet (key/delta) by looking
96
+ * into its bitstream. Returns null if the type couldn't be determined.
97
+ */
98
+ abstract determinePacketType(packet: EncodedPacket): Promise<PacketType | null>;
99
+ /**
100
+ * Returns whether the track metadata says that this track only contains key packets. The actual packets may
101
+ * differ.
102
+ */
103
+ abstract hasOnlyKeyPackets(): Promise<boolean>;
104
+
105
+ /** Returns true if and only if this track is a video track. */
106
+ isVideoTrack(): this is InputVideoTrack {
107
+ return this instanceof InputVideoTrack;
108
+ }
109
+
110
+ /** Returns true if and only if this track is an audio track. */
111
+ isAudioTrack(): this is InputAudioTrack {
112
+ return this instanceof InputAudioTrack;
113
+ }
114
+
115
+ /** The unique ID of this track in the input file. */
116
+ get id() {
117
+ return this._backing.getId();
118
+ }
119
+
120
+ /**
121
+ * The 1-based index of this track among all tracks of the same type in the input file. For example, the first
122
+ * video track has number 1, the second video track has number 2, and so on. The index refers to the order in
123
+ * which the tracks are returned by {@link Input.getTracks}.
124
+ */
125
+ get number() {
126
+ return this._backing.getNumber();
127
+ }
128
+
129
+ /**
130
+ * Returns the identifier of the codec used internally by the container. It is not homogenized by Mediabunny
131
+ * and depends entirely on the container format.
132
+ *
133
+ * This method can be used to determine the codec of a track in case Mediabunny doesn't know that codec.
134
+ *
135
+ * - For ISOBMFF files, this resolves to the name of the Sample Description Box (e.g. `'avc1'`).
136
+ * - For Matroska files, this resolves to the value of the `CodecID` element.
137
+ * - For WAVE files, this resolves to the value of the format tag in the `'fmt '` chunk.
138
+ * - For ADTS files, this resolves to the `MPEG-4 Audio Object Type`.
139
+ * - For MPEG-TS files, this resolves to the `streamType` value from the Program Map Table.
140
+ * - In all other cases, this resolves to `null`.
141
+ */
142
+ async getInternalCodecId() {
143
+ return this._backing.getInternalCodecId();
144
+ }
145
+
146
+ /**
147
+ * See {@link InputTrack.getInternalCodecId}.
148
+ * @deprecated Use {@link InputTrack.getInternalCodecId} instead.
149
+ */
150
+ get internalCodecId() {
151
+ return requireSync(this._backing.getInternalCodecId(), 'internalCodecId', 'getInternalCodecId');
152
+ }
153
+
154
+ /**
155
+ * Returns the ISO 639-2/T language code for this track. If the language is unknown, this resolves to `'und'`
156
+ * (undetermined).
157
+ */
158
+ async getLanguageCode() {
159
+ return this._backing.getLanguageCode();
160
+ }
161
+
162
+ /**
163
+ * The ISO 639-2/T language code for this track. If the language is unknown, this field is `'und'` (undetermined).
164
+ * @deprecated Use {@link InputTrack.getLanguageCode} instead.
165
+ */
166
+ get languageCode() {
167
+ return requireSync(this._backing.getLanguageCode(), 'languageCode', 'getLanguageCode');
168
+ }
169
+
170
+ /** Returns the user-defined name for this track. */
171
+ async getName() {
172
+ return this._backing.getName();
173
+ }
174
+
175
+ /**
176
+ * A user-defined name for this track.
177
+ * @deprecated Use {@link InputTrack.getName} instead.
178
+ */
179
+ get name() {
180
+ return requireSync(this._backing.getName(), 'name', 'getName');
181
+ }
182
+
183
+ /**
184
+ * Returns a positive number x such that all timestamps and durations of all packets of this track are
185
+ * integer multiples of 1/x.
186
+ */
187
+ async getTimeResolution() {
188
+ return this._backing.getTimeResolution();
189
+ }
190
+
191
+ /**
192
+ * A positive number x such that all timestamps and durations of all packets of this track are
193
+ * integer multiples of 1/x.
194
+ * @deprecated Use {@link InputTrack.getTimeResolution} instead.
195
+ */
196
+ get timeResolution() {
197
+ return requireSync(this._backing.getTimeResolution(), 'timeResolution', 'getTimeResolution');
198
+ }
199
+
200
+ /**
201
+ * Returns whether the timestamps of this track are relative to the Unix epoch (January 1, 1970 00:00:00 UTC).
202
+ * When `true`, each timestamp maps to a definitive point in time.
203
+ */
204
+ async isRelativeToUnixEpoch() {
205
+ return this._backing.isRelativeToUnixEpoch();
206
+ }
207
+
208
+ /**
209
+ * Returns the Unix time (in seconds since January 1, 1970 00:00:00 UTC) that the given track timestamp (in seconds)
210
+ * maps to, or `null` if there is no such mapping. This provides a piecewise-continuous mapping from this track's
211
+ * timestamp space into wall-clock time. Such mapping exists, for example, for HLS playlists with
212
+ * `#EXT-X-PROGRAM-DATE-TIME` tags present.
213
+ *
214
+ * This mapping can be available even when {@link InputTrack.isRelativeToUnixEpoch} is `false`, for example for HLS
215
+ * streams with program date time information but with {@link HlsInputFormatOptions.offsetTimestampsByDateTime}
216
+ * set to `false`.
217
+ */
218
+ async getUnixTimeForTimestamp(timestamp: number): Promise<number | null> {
219
+ return this._backing.getUnixTimeForTimestamp(timestamp);
220
+ }
221
+
222
+ /**
223
+ * Whether the track's timestamps can be mapped to Unix wall clock time via
224
+ * {@link InputTrack.getUnixTimeForTimestamp}.
225
+ */
226
+ async hasUnixTimeMapping(): Promise<boolean> {
227
+ return (await this._backing.getUnixTimeForTimestamp(await this.getFirstTimestamp())) !== null;
228
+ }
229
+
230
+ /** Returns the track's disposition, i.e. information about its intended usage. */
231
+ async getDisposition() {
232
+ return this._backing.getDisposition();
233
+ }
234
+
235
+ /**
236
+ * The track's disposition, i.e. information about its intended usage.
237
+ * @deprecated Use {@link InputTrack.getDisposition} instead.
238
+ */
239
+ get disposition() {
240
+ return requireSync(this._backing.getDisposition(), 'disposition', 'getDisposition');
241
+ }
242
+
243
+ /**
244
+ * Returns the peak bitrate of the track in bits per second, as specified in the track's metadata. This might not
245
+ * match the actual media data's bitrate.
246
+ */
247
+ async getBitrate() {
248
+ return this._backing.getBitrate();
249
+ }
250
+
251
+ /**
252
+ * Returns the average bitrate of the track in bits per second, as specified in the track's metadata. This might
253
+ * not match the actual media data's bitrate.
254
+ */
255
+ async getAverageBitrate() {
256
+ return this._backing.getAverageBitrate();
257
+ }
258
+
259
+ /**
260
+ * Returns the start timestamp of the first packet of this track, in seconds. While often near zero, this value
261
+ * may be positive or even negative. A negative starting timestamp means the track's timing has been offset. Samples
262
+ * with a negative timestamp should not be presented.
263
+ */
264
+ async getFirstTimestamp() {
265
+ const firstPacket = await this._backing.getFirstPacket({ metadataOnly: true });
266
+ return firstPacket?.timestamp ?? 0;
267
+ }
268
+
269
+ /**
270
+ * Returns the end timestamp of the last packet of this track, in seconds.
271
+ *
272
+ * By default, when the underlying media is live, this method will only resolve once the live stream ends. If you
273
+ * want to query the current end timestamp of the stream, set {@link PacketRetrievalOptions.skipLiveWait} to `true`
274
+ * in the options.
275
+ */
276
+ async computeDuration(options?: PacketRetrievalOptions) {
277
+ const lastPacket = await this._backing.getPacket(Infinity, { metadataOnly: true, ...options });
278
+ const result = (lastPacket?.timestamp ?? 0) + (lastPacket?.duration ?? 0);
279
+
280
+ return roundToDivisor(result, await this.getTimeResolution());
281
+ }
282
+
283
+ /**
284
+ * Gets the duration (end timestamp) in seconds of this track from metadata stored in the file. This value may be
285
+ * approximate or diverge from the actual, precise duration returned by `.computeDuration()`, but compared to that
286
+ * method, this method is cheaper. When the duration cannot be determined from the file metadata, `null`
287
+ * is returned.
288
+ *
289
+ * By default, when the underlying media is live, this method will only resolve once the live stream
290
+ * ends. If you want to query the current duration of the media, set
291
+ * {@link DurationMetadataRequestOptions.skipLiveWait} to `true` in the options.
292
+ */
293
+ async getDurationFromMetadata(options: DurationMetadataRequestOptions = {}) {
294
+ return this._backing.getDurationFromMetadata(options);
295
+ }
296
+
297
+ /**
298
+ * Computes aggregate packet statistics for this track, such as average packet rate or bitrate.
299
+ *
300
+ * @param targetPacketCount - This optional parameter sets a target for how many packets this method must have
301
+ * looked at before it can return early; this means, you can use it to aggregate only a subset (prefix) of all
302
+ * packets. This is very useful for getting a great estimate of video frame rate without having to scan through the
303
+ * entire file.
304
+ *
305
+ * By default, when the underlying media is live and `targetPacketCount` is not set, this method will only resolve
306
+ * once the live stream ends. If you want to query the current packet statistics of the stream, set
307
+ * {@link PacketRetrievalOptions.skipLiveWait} to `true` in the options.
308
+ */
309
+ async computePacketStats(targetPacketCount = Infinity, options?: PacketRetrievalOptions): Promise<PacketStats> {
310
+ const sink = new EncodedPacketSink(this);
311
+
312
+ let startTimestamp = Infinity;
313
+ let endTimestamp = -Infinity;
314
+ let packetCount = 0;
315
+ let totalPacketBytes = 0;
316
+
317
+ for await (const packet of sink.packets(undefined, undefined, { metadataOnly: true, ...options })) {
318
+ if (
319
+ packetCount >= targetPacketCount
320
+ // This additional condition is needed to produce correct results with out-of-presentation-order packets
321
+ && packet.timestamp >= endTimestamp
322
+ ) {
323
+ break;
324
+ }
325
+
326
+ startTimestamp = Math.min(startTimestamp, packet.timestamp);
327
+ endTimestamp = Math.max(endTimestamp, packet.timestamp + packet.duration);
328
+
329
+ packetCount++;
330
+ totalPacketBytes += packet.byteLength;
331
+ }
332
+
333
+ return {
334
+ packetCount,
335
+ averagePacketRate: packetCount
336
+ ? Number((packetCount / (endTimestamp - startTimestamp)).toPrecision(16))
337
+ : 0,
338
+ averageBitrate: packetCount
339
+ ? Number((8 * totalPacketBytes / (endTimestamp - startTimestamp)).toPrecision(16))
340
+ : 0,
341
+ };
342
+ }
343
+
344
+ /**
345
+ * Whether or not this track is currently live, meaning the media's end is still unknown.
346
+ *
347
+ * The value returned by this method may change over time as the track stops being live. To keep track of the
348
+ * track's live status, poll this method at the track's refresh interval
349
+ * via {@link InputTrack.getLiveRefreshInterval}.
350
+ */
351
+ async isLive() {
352
+ return (await this._backing.getLiveRefreshInterval()) !== null;
353
+ }
354
+
355
+ /**
356
+ * Returns the track's live refresh interval in seconds, or `null` if the track is not live. This interval describes
357
+ * the time it takes, on average, for new live media data to become available.
358
+ */
359
+ async getLiveRefreshInterval() {
360
+ return this._backing.getLiveRefreshInterval();
361
+ }
362
+
363
+ /**
364
+ * Returns `true` if this track can be paired with the given track. Two tracks being pairable means they can be
365
+ * presented (displayed) together.
366
+ *
367
+ * Returns `false` if `other` equals `this`.
368
+ */
369
+ canBePairedWith(other: InputTrack) {
370
+ if (!(other instanceof InputTrack)) {
371
+ throw new TypeError('other must be an InputTrack.');
372
+ }
373
+
374
+ if (this.input !== other.input || this === other) {
375
+ return false;
376
+ }
377
+
378
+ return (this._backing.getPairingMask() & other._backing.getPairingMask()) !== 0n;
379
+ }
380
+
381
+ /**
382
+ * Gets the list of other tracks that can be paired with this track. An optional query can be provided to narrow
383
+ * down the results.
384
+ */
385
+ async getPairableTracks(query?: InputTrackQuery<InputTrack>) {
386
+ return this.input.getTracks(mergeInputTrackQueries({
387
+ filter: t => t.canBePairedWith(this),
388
+ }, query));
389
+ }
390
+
391
+ /**
392
+ * Gets the list of other video tracks that can be paired with this track. An optional query can be provided to
393
+ * narrow down the results.
394
+ */
395
+ async getPairableVideoTracks(query?: InputTrackQuery<InputVideoTrack>) {
396
+ return this.input.getVideoTracks(mergeInputTrackQueries({
397
+ filter: t => t.canBePairedWith(this),
398
+ }, query));
399
+ }
400
+
401
+ /**
402
+ * Gets the list of other audio tracks that can be paired with this track. An optional query can be provided to
403
+ * narrow down the results.
404
+ */
405
+ async getPairableAudioTracks(query?: InputTrackQuery<InputAudioTrack>) {
406
+ return this.input.getAudioTracks(mergeInputTrackQueries({
407
+ filter: t => t.canBePairedWith(this),
408
+ }, query));
409
+ }
410
+
411
+ /** Returns the primary track that can be paired with this track, optionally steered by the provided query. */
412
+ async getPrimaryPairableVideoTrack(query?: InputTrackQuery<InputVideoTrack>) {
413
+ return this.input.getPrimaryVideoTrack(mergeInputTrackQueries({
414
+ filter: t => t.canBePairedWith(this),
415
+ }, query));
416
+ }
417
+
418
+ /** Returns the primary track that can be paired with this track, optionally steered by the provided query. */
419
+ async getPrimaryPairableAudioTrack(query?: InputTrackQuery<InputAudioTrack>) {
420
+ return this.input.getPrimaryAudioTrack(mergeInputTrackQueries({
421
+ filter: t => t.canBePairedWith(this),
422
+ }, query));
423
+ }
424
+
425
+ /** Returns `true` if there is another track that can be paired with this track. */
426
+ async hasPairableTrack(predicate?: (track: InputTrack) => MaybePromise<boolean>): Promise<boolean> {
427
+ predicate &&= toValidatedPredicate(predicate);
428
+
429
+ const tracks = await this.input.getTracks();
430
+ for (const track of tracks) {
431
+ if (!this.canBePairedWith(track)) {
432
+ continue;
433
+ }
434
+ if (!predicate || await predicate(track)) {
435
+ return true;
436
+ }
437
+ }
438
+
439
+ return false;
440
+ }
441
+
442
+ /** Returns `true` if there is a video track that can be paired with this track. */
443
+ hasPairableVideoTrack(predicate?: (track: InputVideoTrack) => MaybePromise<boolean>): Promise<boolean> {
444
+ predicate &&= toValidatedPredicate(predicate);
445
+
446
+ return this.hasPairableTrack(async x =>
447
+ x.isVideoTrack() && (!predicate || await predicate(x)),
448
+ );
449
+ }
450
+
451
+ /** Returns `true` if there is an audio track that can be paired with this track. */
452
+ hasPairableAudioTrack(predicate?: (track: InputAudioTrack) => MaybePromise<boolean>): Promise<boolean> {
453
+ predicate &&= toValidatedPredicate(predicate);
454
+
455
+ return this.hasPairableTrack(async x =>
456
+ x.isAudioTrack() && (!predicate || await predicate(x)),
457
+ );
458
+ }
459
+ }
460
+
461
+ const requireSync = <T>(value: MaybePromise<T>, getterName: string, asyncName: string): T => {
462
+ if (value instanceof Promise) {
463
+ throw new Error(
464
+ `'${getterName}' is deprecated and not available synchronously for this track. Use the preferred`
465
+ + ` '${asyncName}()' instead.`,
466
+ );
467
+ }
468
+ return value;
469
+ };
470
+
471
+ const toValidatedPredicate = <T extends InputTrack>(
472
+ predicate?: (track: T) => MaybePromise<boolean>,
473
+ ) => {
474
+ if (predicate !== undefined && typeof predicate !== 'function') {
475
+ throw new TypeError('predicate, when provided, must be a function.');
476
+ }
477
+
478
+ return predicate
479
+ ? (track: T) => {
480
+ const handle = (result: boolean) => {
481
+ if (typeof result !== 'boolean') {
482
+ throw new TypeError('predicate must return or resolve to a boolean value.');
483
+ }
484
+ return result;
485
+ };
486
+
487
+ const result = predicate(track);
488
+ if (result instanceof Promise) {
489
+ return result.then(handle);
490
+ }
491
+ return handle(result);
492
+ }
493
+ : undefined;
494
+ };
495
+
496
+ export interface InputVideoTrackBacking extends InputTrackBacking {
497
+ getType(): 'video';
498
+ getCodec(): MaybePromise<VideoCodec | null>;
499
+ getCodedWidth(): MaybePromise<number>;
500
+ getCodedHeight(): MaybePromise<number>;
501
+ getSquarePixelWidth(): MaybePromise<number>;
502
+ getSquarePixelHeight(): MaybePromise<number>;
503
+ getMetadataDisplayWidth?(): MaybePromise<number | null>;
504
+ getMetadataDisplayHeight?(): MaybePromise<number | null>;
505
+ getRotation(): MaybePromise<Rotation>;
506
+ getColorSpace(): Promise<VideoColorSpaceInit>;
507
+ canBeTransparent(): Promise<boolean>;
508
+ getDecoderConfig(): Promise<VideoDecoderConfig | null>;
509
+ }
510
+
511
+ /**
512
+ * Represents a video track in an input file.
513
+ * @group Input files & tracks
514
+ * @public
515
+ */
516
+ export class InputVideoTrack extends InputTrack {
517
+ /** @internal */
518
+ override _backing: InputVideoTrackBacking;
519
+ /** @internal */
520
+ _pixelAspectRatioCache: Rational | null = null;
521
+
522
+ /** @internal */
523
+ constructor(input: Input, backing: InputVideoTrackBacking) {
524
+ super(input, backing);
525
+
526
+ this._backing = backing;
527
+ }
528
+
529
+ get type(): TrackType {
530
+ return 'video';
531
+ }
532
+
533
+ /** The codec of the track's packets. */
534
+ async getCodec(): Promise<VideoCodec | null> {
535
+ return this._backing.getCodec();
536
+ }
537
+
538
+ /**
539
+ * The codec of the track's packets.
540
+ * @deprecated Use {@link InputVideoTrack.getCodec} instead.
541
+ */
542
+ get codec(): VideoCodec | null {
543
+ return requireSync(this._backing.getCodec(), 'codec', 'getCodec');
544
+ }
545
+
546
+ async hasOnlyKeyPackets() {
547
+ return (await this._backing.getHasOnlyKeyPackets?.())
548
+ ?? (await this._backing.getCodec() === 'prores'); // Only ProRes is fully intra-frame
549
+ }
550
+
551
+ /** Returns the width in pixels of the track's coded samples, before any transformations or rotations. */
552
+ async getCodedWidth() {
553
+ return this._backing.getCodedWidth();
554
+ }
555
+
556
+ /**
557
+ * The width in pixels of the track's coded samples, before any transformations or rotations.
558
+ * @deprecated Use {@link InputVideoTrack.getCodedWidth} instead.
559
+ */
560
+ get codedWidth() {
561
+ return requireSync(this._backing.getCodedWidth(), 'codedWidth', 'getCodedWidth');
562
+ }
563
+
564
+ /** Returns the height in pixels of the track's coded samples, before any transformations or rotations. */
565
+ async getCodedHeight() {
566
+ return this._backing.getCodedHeight();
567
+ }
568
+
569
+ /**
570
+ * The height in pixels of the track's coded samples, before any transformations or rotations.
571
+ * @deprecated Use {@link InputVideoTrack.getCodedHeight} instead.
572
+ */
573
+ get codedHeight() {
574
+ return requireSync(this._backing.getCodedHeight(), 'codedHeight', 'getCodedHeight');
575
+ }
576
+
577
+ /** Returns the angle in degrees by which the track's frames should be rotated (clockwise). */
578
+ async getRotation() {
579
+ return this._backing.getRotation();
580
+ }
581
+
582
+ /**
583
+ * The angle in degrees by which the track's frames should be rotated (clockwise).
584
+ * @deprecated Use {@link InputVideoTrack.getRotation} instead.
585
+ */
586
+ get rotation() {
587
+ return requireSync(this._backing.getRotation(), 'rotation', 'getRotation');
588
+ }
589
+
590
+ /**
591
+ * Returns the width of the track's frames in square pixels, adjusted for pixel aspect ratio but before rotation.
592
+ */
593
+ async getSquarePixelWidth() {
594
+ return this._backing.getSquarePixelWidth();
595
+ }
596
+
597
+ /**
598
+ * The width of the track's frames in square pixels, adjusted for pixel aspect ratio but before rotation.
599
+ * @deprecated Use {@link InputVideoTrack.getSquarePixelWidth} instead.
600
+ */
601
+ get squarePixelWidth() {
602
+ return requireSync(this._backing.getSquarePixelWidth(), 'squarePixelWidth', 'getSquarePixelWidth');
603
+ }
604
+
605
+ /**
606
+ * Returns the height of the track's frames in square pixels, adjusted for pixel aspect ratio but before rotation.
607
+ */
608
+ async getSquarePixelHeight() {
609
+ return this._backing.getSquarePixelHeight();
610
+ }
611
+
612
+ /**
613
+ * The height of the track's frames in square pixels, adjusted for pixel aspect ratio but before rotation.
614
+ * @deprecated Use {@link InputVideoTrack.getSquarePixelHeight} instead.
615
+ */
616
+ get squarePixelHeight() {
617
+ return requireSync(this._backing.getSquarePixelHeight(), 'squarePixelHeight', 'getSquarePixelHeight');
618
+ }
619
+
620
+ /**
621
+ * Returns the pixel aspect ratio of the track's frames as a rational number in its reduced form. Most videos use
622
+ * square pixels (1:1).
623
+ */
624
+ async getPixelAspectRatio() {
625
+ // Potential minor async race condition here if called twice, but doesn't matter since the computation is
626
+ // so cheap
627
+ return this._pixelAspectRatioCache ??= simplifyRational({
628
+ num: (await this.getSquarePixelWidth()) * (await this.getCodedHeight()),
629
+ den: (await this.getSquarePixelHeight()) * (await this.getCodedWidth()),
630
+ });
631
+ }
632
+
633
+ /**
634
+ * The pixel aspect ratio of the track's frames, as a rational number in its reduced form. Most videos use
635
+ * square pixels (1:1).
636
+ * @deprecated Use {@link InputVideoTrack.getPixelAspectRatio} instead.
637
+ */
638
+ get pixelAspectRatio() {
639
+ return this._pixelAspectRatioCache ??= simplifyRational({
640
+ num: requireSync(this._backing.getSquarePixelWidth(), 'pixelAspectRatio', 'getPixelAspectRatio')
641
+ * requireSync(this._backing.getCodedHeight(), 'pixelAspectRatio', 'getPixelAspectRatio'),
642
+ den: requireSync(this._backing.getSquarePixelHeight(), 'pixelAspectRatio', 'getPixelAspectRatio')
643
+ * requireSync(this._backing.getCodedWidth(), 'pixelAspectRatio', 'getPixelAspectRatio'),
644
+ });
645
+ }
646
+
647
+ /** Returns the display width of the track's frames in pixels, after aspect ratio adjustment and rotation. */
648
+ async getDisplayWidth() {
649
+ const metadata = await this._backing.getMetadataDisplayWidth?.();
650
+ if (metadata != null) {
651
+ return metadata;
652
+ }
653
+
654
+ const rotation = await this.getRotation();
655
+ return rotation % 180 === 0 ? this.getSquarePixelWidth() : this.getSquarePixelHeight();
656
+ }
657
+
658
+ /**
659
+ * The display width of the track's frames in pixels, after aspect ratio adjustment and rotation.
660
+ * @deprecated Use {@link InputVideoTrack.getDisplayWidth} instead.
661
+ */
662
+ get displayWidth() {
663
+ const metadataRaw = this._backing.getMetadataDisplayWidth?.();
664
+ if (metadataRaw !== undefined) {
665
+ const metadata = requireSync(metadataRaw, 'displayWidth', 'getDisplayWidth');
666
+ if (metadata !== null) {
667
+ return metadata;
668
+ }
669
+ }
670
+
671
+ const rotation = requireSync(this._backing.getRotation(), 'displayWidth', 'getDisplayWidth');
672
+ const value = rotation % 180 === 0
673
+ ? this._backing.getSquarePixelWidth()
674
+ : this._backing.getSquarePixelHeight();
675
+ return requireSync(value, 'displayWidth', 'getDisplayWidth');
676
+ }
677
+
678
+ /** Returns the display height of the track's frames in pixels, after aspect ratio adjustment and rotation. */
679
+ async getDisplayHeight() {
680
+ const metadata = await this._backing.getMetadataDisplayHeight?.();
681
+ if (metadata != null) {
682
+ return metadata;
683
+ }
684
+
685
+ const rotation = await this.getRotation();
686
+ return rotation % 180 === 0 ? this.getSquarePixelHeight() : this.getSquarePixelWidth();
687
+ }
688
+
689
+ /**
690
+ * The display height of the track's frames in pixels, after aspect ratio adjustment and rotation.
691
+ * @deprecated Use {@link InputVideoTrack.getDisplayHeight} instead.
692
+ */
693
+ get displayHeight() {
694
+ const metadataRaw = this._backing.getMetadataDisplayHeight?.();
695
+ if (metadataRaw !== undefined) {
696
+ const metadata = requireSync(metadataRaw, 'displayHeight', 'getDisplayHeight');
697
+ if (metadata !== null) {
698
+ return metadata;
699
+ }
700
+ }
701
+
702
+ const rotation = requireSync(this._backing.getRotation(), 'displayHeight', 'getDisplayHeight');
703
+ const value = rotation % 180 === 0
704
+ ? this._backing.getSquarePixelHeight()
705
+ : this._backing.getSquarePixelWidth();
706
+ return requireSync(value, 'displayHeight', 'getDisplayHeight');
707
+ }
708
+
709
+ /** Returns the color space of the track's samples. */
710
+ async getColorSpace() {
711
+ return this._backing.getColorSpace();
712
+ }
713
+
714
+ /** If this method returns true, the track's samples use a high dynamic range (HDR). */
715
+ async hasHighDynamicRange() {
716
+ const colorSpace = await this._backing.getColorSpace();
717
+
718
+ return (colorSpace.primaries as string) === 'bt2020' || (colorSpace.primaries as string) === 'smpte432'
719
+ || (colorSpace.transfer as string) === 'pq' || (colorSpace.transfer as string) === 'hlg'
720
+ || (colorSpace.matrix as string) === 'bt2020-ncl';
721
+ }
722
+
723
+ /** Checks if this track may contain transparent samples with alpha data. */
724
+ async canBeTransparent() {
725
+ return this._backing.canBeTransparent();
726
+ }
727
+
728
+ /**
729
+ * Returns the [decoder configuration](https://www.w3.org/TR/webcodecs/#video-decoder-config) for decoding the
730
+ * track's packets using a [`VideoDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/VideoDecoder). Returns
731
+ * null if the track's codec is unknown.
732
+ */
733
+ async getDecoderConfig() {
734
+ return this._backing.getDecoderConfig();
735
+ }
736
+
737
+ async getCodecParameterString() {
738
+ const fromMetadata = await this._backing.getMetadataCodecParameterString?.();
739
+ if (fromMetadata != null) {
740
+ return fromMetadata;
741
+ }
742
+
743
+ const decoderConfig = await this._backing.getDecoderConfig();
744
+ return decoderConfig?.codec ?? null;
745
+ }
746
+
747
+ async canDecode() {
748
+ try {
749
+ const decoderConfig = await this._backing.getDecoderConfig();
750
+ if (!decoderConfig) {
751
+ return false;
752
+ }
753
+
754
+ const codec = await this._backing.getCodec();
755
+ assert(codec !== null);
756
+
757
+ if (customVideoDecoders.some(x => x.supports(codec, decoderConfig))) {
758
+ return true;
759
+ }
760
+
761
+ if (typeof VideoDecoder === 'undefined') {
762
+ return false;
763
+ }
764
+
765
+ const support = await VideoDecoder.isConfigSupported(decoderConfig);
766
+ return support.supported === true;
767
+ } catch (error) {
768
+ Logging._error('Error during decodability check:', error);
769
+ return false;
770
+ }
771
+ }
772
+
773
+ async determinePacketType(packet: EncodedPacket): Promise<PacketType | null> {
774
+ if (!(packet instanceof EncodedPacket)) {
775
+ throw new TypeError('packet must be an EncodedPacket.');
776
+ }
777
+ if (packet.isMetadataOnly) {
778
+ throw new TypeError('packet must not be metadata-only to determine its type.');
779
+ }
780
+
781
+ const codec = await this.getCodec();
782
+ if (codec === null) {
783
+ return null;
784
+ }
785
+
786
+ const decoderConfig = await this.getDecoderConfig();
787
+ assert(decoderConfig);
788
+
789
+ return determineVideoPacketType(codec, decoderConfig, packet.data);
790
+ }
791
+ }
792
+
793
+ export interface InputAudioTrackBacking extends InputTrackBacking {
794
+ getType(): 'audio';
795
+ getCodec(): MaybePromise<AudioCodec | null>;
796
+ getNumberOfChannels(): MaybePromise<number>;
797
+ getSampleRate(): MaybePromise<number>;
798
+ getDecoderConfig(): Promise<AudioDecoderConfig | null>;
799
+ }
800
+
801
+ /**
802
+ * Represents an audio track in an input file.
803
+ * @group Input files & tracks
804
+ * @public
805
+ */
806
+ export class InputAudioTrack extends InputTrack {
807
+ /** @internal */
808
+ override _backing: InputAudioTrackBacking;
809
+
810
+ /** @internal */
811
+ constructor(input: Input, backing: InputAudioTrackBacking) {
812
+ super(input, backing);
813
+
814
+ this._backing = backing;
815
+ }
816
+
817
+ get type(): TrackType {
818
+ return 'audio';
819
+ }
820
+
821
+ /** The codec of the track's packets. */
822
+ async getCodec(): Promise<AudioCodec | null> {
823
+ return this._backing.getCodec();
824
+ }
825
+
826
+ /**
827
+ * The codec of the track's packets.
828
+ * @deprecated Use {@link InputAudioTrack.getCodec} instead.
829
+ */
830
+ get codec(): AudioCodec | null {
831
+ return requireSync(this._backing.getCodec(), 'codec', 'getCodec');
832
+ }
833
+
834
+ async hasOnlyKeyPackets() {
835
+ return (await this._backing.getHasOnlyKeyPackets?.()) ?? true;
836
+ }
837
+
838
+ /** Returns the number of audio channels in the track. */
839
+ async getNumberOfChannels() {
840
+ return this._backing.getNumberOfChannels();
841
+ }
842
+
843
+ /**
844
+ * The number of audio channels in the track.
845
+ * @deprecated Use {@link InputAudioTrack.getNumberOfChannels} instead.
846
+ */
847
+ get numberOfChannels() {
848
+ return requireSync(this._backing.getNumberOfChannels(), 'numberOfChannels', 'getNumberOfChannels');
849
+ }
850
+
851
+ /** Returns the track's audio sample rate in hertz. */
852
+ async getSampleRate() {
853
+ return this._backing.getSampleRate();
854
+ }
855
+
856
+ /**
857
+ * The track's audio sample rate in hertz.
858
+ * @deprecated Use {@link InputAudioTrack.getSampleRate} instead.
859
+ */
860
+ get sampleRate() {
861
+ return requireSync(this._backing.getSampleRate(), 'sampleRate', 'getSampleRate');
862
+ }
863
+
864
+ /**
865
+ * Returns the [decoder configuration](https://www.w3.org/TR/webcodecs/#audio-decoder-config) for decoding the
866
+ * track's packets using an [`AudioDecoder`](https://developer.mozilla.org/en-US/docs/Web/API/AudioDecoder). Returns
867
+ * null if the track's codec is unknown.
868
+ */
869
+ async getDecoderConfig() {
870
+ return this._backing.getDecoderConfig();
871
+ }
872
+
873
+ async getCodecParameterString() {
874
+ const fromMetadata = await this._backing.getMetadataCodecParameterString?.();
875
+ if (fromMetadata != null) {
876
+ return fromMetadata;
877
+ }
878
+
879
+ const decoderConfig = await this._backing.getDecoderConfig();
880
+ return decoderConfig?.codec ?? null;
881
+ }
882
+
883
+ async canDecode() {
884
+ try {
885
+ const decoderConfig = await this._backing.getDecoderConfig();
886
+ if (!decoderConfig) {
887
+ return false;
888
+ }
889
+
890
+ const codec = await this._backing.getCodec();
891
+ assert(codec !== null);
892
+
893
+ if (customAudioDecoders.some(x => x.supports(codec, decoderConfig))) {
894
+ return true;
895
+ }
896
+
897
+ if (decoderConfig.codec.startsWith('pcm-')) {
898
+ return true; // Since we decode it ourselves
899
+ } else {
900
+ if (typeof AudioDecoder === 'undefined') {
901
+ return false;
902
+ }
903
+
904
+ const support = await AudioDecoder.isConfigSupported(decoderConfig);
905
+ return support.supported === true;
906
+ }
907
+ } catch (error) {
908
+ Logging._error('Error during decodability check:', error);
909
+ return false;
910
+ }
911
+ }
912
+
913
+ async determinePacketType(packet: EncodedPacket): Promise<PacketType | null> {
914
+ if (!(packet instanceof EncodedPacket)) {
915
+ throw new TypeError('packet must be an EncodedPacket.');
916
+ }
917
+
918
+ if ((await this.getCodec()) === null) {
919
+ return null;
920
+ }
921
+
922
+ return 'key'; // No audio codec with delta packets
923
+ }
924
+ }
925
+
926
+ /**
927
+ * Defines a query for input tracks. Can be used to query tracks tersely and expressively, which is especially useful
928
+ * for media inputs with many tracks, such as HLS manifests.
929
+ *
930
+ * @group Input files & tracks
931
+ * @public
932
+ */
933
+ export type InputTrackQuery<T extends InputTrack> = {
934
+ /**
935
+ * A filter predicate function called for every track. Returning or resolving to `false` excludes the track from
936
+ * the result.
937
+ */
938
+ filter?: (track: T) => MaybePromise<boolean>;
939
+ /**
940
+ * A function called for every track, used to define a track ordering. Tracks are ordered in ascending order using
941
+ * the value returned by this function. When the function returns an array of numbers `arr`, tracks will be sorted
942
+ * by `arr[0]` unless they have the same value, in which case they will be sorted by `arr[1]`, and so on. This
943
+ * allows you to construct a list of ordering criteria, sorted by importance.
944
+ *
945
+ * To help construct complex ordering criteria, the {@link asc}, {@link desc}, and {@link prefer} helper functions
946
+ * can be used.
947
+ */
948
+ sortBy?: (track: T) => MaybePromise<number | number[]>;
949
+ };
950
+
951
+ /**
952
+ * Helper function for use in {@link InputTrackQuery.sortBy}, used to describe sorting tracks by a numeric property in
953
+ * ascending order. `null` and `undefined` are accepted too and are last in the order (sorted to the end).
954
+ *
955
+ * @group Input files & tracks
956
+ * @public
957
+ */
958
+ export const asc = (value: number | null | undefined) => {
959
+ return value ?? Infinity; // nulls and undefined last
960
+ };
961
+
962
+ /**
963
+ * Helper function for use in {@link InputTrackQuery.sortBy}, used to describe sorting tracks by a numeric property in
964
+ * descending order. `null` and `undefined` are accepted too and are last in the order (sorted to the end).
965
+ *
966
+ * @group Input files & tracks
967
+ * @public
968
+ */
969
+ export const desc = (value: number | null | undefined) => {
970
+ return -(value ?? -Infinity); // nulls and undefined last
971
+ };
972
+
973
+ /**
974
+ * Helper function for use in {@link InputTrackQuery.sortBy}, used to sort tracks by boolean properties. `true` is
975
+ * sorted to the start, `false` to the end. Useful for expressing soft preferences (e.g., "I'd prefer 1080p, but other
976
+ * resolutions are fine too") as opposed to {@link InputTrackQuery.filter} which expresses hard requirements for
977
+ * tracks.
978
+ *
979
+ * @group Input files & tracks
980
+ * @public
981
+ */
982
+ export const prefer = (value: boolean) => {
983
+ return -value;
984
+ };
985
+
986
+ export const toValidatedInputTrackQuery = <T extends InputTrack>(
987
+ query: InputTrackQuery<T>,
988
+ ): InputTrackQuery<T> => {
989
+ if (typeof query !== 'object' || !query) {
990
+ throw new TypeError('query must be an object.');
991
+ }
992
+ if (query.filter !== undefined && typeof query.filter !== 'function') {
993
+ throw new TypeError('query.filter, when provided, must be a function.');
994
+ }
995
+ if (query.sortBy !== undefined && typeof query.sortBy !== 'function') {
996
+ throw new TypeError('query.sortBy, when provided, must be a function.');
997
+ }
998
+
999
+ // Instead of validating the return types of the functions everywhere the query is used, simply return a new query
1000
+ // which wraps the old one while validating it.
1001
+ return {
1002
+ filter: query.filter
1003
+ ? (track) => {
1004
+ const handle = (bool: boolean) => {
1005
+ if (typeof bool !== 'boolean') {
1006
+ throw new TypeError('query.filter must return or resolve to a boolean.');
1007
+ }
1008
+
1009
+ return bool;
1010
+ };
1011
+
1012
+ const result = query.filter!(track);
1013
+ if (result instanceof Promise) {
1014
+ return result.then(handle);
1015
+ } else {
1016
+ return handle(result);
1017
+ }
1018
+ }
1019
+ : undefined,
1020
+ sortBy: query.sortBy
1021
+ ? (track) => {
1022
+ const handle = (value: number | number[]) => {
1023
+ if (
1024
+ typeof value !== 'number'
1025
+ && (!Array.isArray(value) || !value.every(x => typeof x === 'number'))
1026
+ ) {
1027
+ throw new TypeError(
1028
+ 'query.sortBy must return or resolve to a number or an array of numbers.',
1029
+ );
1030
+ }
1031
+
1032
+ return value;
1033
+ };
1034
+
1035
+ const result = query.sortBy!(track);
1036
+ if (result instanceof Promise) {
1037
+ return result.then(handle);
1038
+ } else {
1039
+ return handle(result);
1040
+ }
1041
+ }
1042
+ : undefined,
1043
+ };
1044
+ };
1045
+
1046
+ export const mergeInputTrackQueries = <T extends InputTrack>(
1047
+ queryA: InputTrackQuery<T> | undefined,
1048
+ queryB: InputTrackQuery<T> | undefined,
1049
+ ): InputTrackQuery<T> => {
1050
+ return {
1051
+ filter: queryA?.filter || queryB?.filter
1052
+ ? (track) => {
1053
+ const resultA = queryA?.filter?.(track) ?? true;
1054
+ const handleResultA = (resultA: boolean) => {
1055
+ if (resultA === false) {
1056
+ return false;
1057
+ }
1058
+
1059
+ return queryB?.filter?.(track) ?? true;
1060
+ };
1061
+
1062
+ if (resultA instanceof Promise) {
1063
+ return resultA.then(handleResultA);
1064
+ } else {
1065
+ return handleResultA(resultA);
1066
+ }
1067
+ }
1068
+ : undefined,
1069
+ sortBy: queryA?.sortBy || queryB?.sortBy
1070
+ ? (track) => {
1071
+ const resultA = queryA?.sortBy?.(track) ?? [];
1072
+ const resultB = queryB?.sortBy?.(track) ?? [];
1073
+
1074
+ type Result = Awaited<typeof resultA>;
1075
+ const join = (resultA: Result, resultB: Result) => {
1076
+ return [
1077
+ ...(Array.isArray(resultA) ? resultA : [resultA]),
1078
+ ...(Array.isArray(resultB) ? resultB : [resultB]),
1079
+ ];
1080
+ };
1081
+
1082
+ if (resultA instanceof Promise || resultB instanceof Promise) {
1083
+ return Promise.all([resultA, resultB]).then(([resultA, resultB]) => {
1084
+ return join(resultA, resultB);
1085
+ });
1086
+ } else {
1087
+ return join(resultA, resultB);
1088
+ }
1089
+ }
1090
+ : undefined,
1091
+ };
1092
+ };
1093
+
1094
+ export const queryInputTracks = async <T extends InputTrack>(
1095
+ tracks: T[],
1096
+ query?: InputTrackQuery<T>,
1097
+ ): Promise<T[]> => {
1098
+ let matched = tracks;
1099
+ if (query?.filter) {
1100
+ const filterMatches = tracks.map(t => query.filter!(t));
1101
+ const hasAsyncFilter = filterMatches.some(x => x instanceof Promise);
1102
+ if (hasAsyncFilter) {
1103
+ // eslint-disable-next-line @typescript-eslint/await-thenable
1104
+ const resolvedFilterMatches = await Promise.all(filterMatches);
1105
+ matched = tracks.filter((_, i) => resolvedFilterMatches[i]);
1106
+ } else {
1107
+ matched = tracks.filter((_, i) => filterMatches[i] as boolean);
1108
+ }
1109
+ }
1110
+
1111
+ if (!query?.sortBy) {
1112
+ return matched;
1113
+ }
1114
+
1115
+ const sortValues = matched.map(t => query.sortBy!(t));
1116
+ const hasAsyncSort = sortValues.some(x => x instanceof Promise);
1117
+ const resolvedSortValues = hasAsyncSort
1118
+ // eslint-disable-next-line @typescript-eslint/await-thenable
1119
+ ? await Promise.all(sortValues)
1120
+ : sortValues as (number | number[])[];
1121
+
1122
+ return matched
1123
+ .map((track, i) => ({ track, sortValue: resolvedSortValues[i] }))
1124
+ .sort((a, b) => {
1125
+ const aValues = Array.isArray(a.sortValue) ? a.sortValue : [a.sortValue];
1126
+ const bValues = Array.isArray(b.sortValue) ? b.sortValue : [b.sortValue];
1127
+ const maxLength = Math.max(aValues.length, bValues.length);
1128
+
1129
+ for (let i = 0; i < maxLength; i++) {
1130
+ const aValue = aValues[i] ?? 0;
1131
+ const bValue = bValues[i] ?? 0;
1132
+ if (aValue === bValue) {
1133
+ continue;
1134
+ }
1135
+ return aValue - bValue;
1136
+ }
1137
+
1138
+ return 0;
1139
+ })
1140
+ .map(x => x.track);
1141
+ };