@osmo.inc/cli 0.1.18 → 0.1.19

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 (943) hide show
  1. package/DEPLOY.md +62 -16
  2. package/README.md +31 -15
  3. package/SETUP.md +19 -7
  4. package/THIRD_PARTY_NOTICES.md +5 -16
  5. package/bin/osmo.mjs +12 -0
  6. package/dist/osmo.js +2500 -8905
  7. package/package.json +13 -26
  8. package/release.json +49 -84
  9. package/third-party/inventory.json +0 -3601
  10. package/node_modules/@esbuild/darwin-arm64/README.md +0 -3
  11. package/node_modules/@esbuild/darwin-arm64/bin/esbuild +0 -0
  12. package/node_modules/@esbuild/darwin-arm64/package.json +0 -20
  13. package/node_modules/esbuild/LICENSE.md +0 -21
  14. package/node_modules/esbuild/README.md +0 -3
  15. package/node_modules/esbuild/bin/esbuild +0 -223
  16. package/node_modules/esbuild/install.js +0 -289
  17. package/node_modules/esbuild/lib/main.d.ts +0 -716
  18. package/node_modules/esbuild/lib/main.js +0 -2532
  19. package/node_modules/esbuild/package.json +0 -49
  20. package/node_modules/typescript/LICENSE.txt +0 -55
  21. package/node_modules/typescript/ThirdPartyNoticeText.txt +0 -193
  22. package/node_modules/typescript/lib/lib.d.ts +0 -22
  23. package/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
  24. package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
  25. package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
  26. package/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
  27. package/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
  28. package/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
  29. package/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
  30. package/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
  31. package/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
  32. package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
  33. package/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
  34. package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
  35. package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
  36. package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
  37. package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
  38. package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
  39. package/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
  40. package/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
  41. package/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
  42. package/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
  43. package/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
  44. package/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
  45. package/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
  46. package/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
  47. package/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
  48. package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
  49. package/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
  50. package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
  51. package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
  52. package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
  53. package/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
  54. package/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
  55. package/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
  56. package/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
  57. package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
  58. package/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
  59. package/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
  60. package/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
  61. package/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
  62. package/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
  63. package/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
  64. package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
  65. package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
  66. package/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
  67. package/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
  68. package/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
  69. package/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
  70. package/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
  71. package/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
  72. package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
  73. package/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
  74. package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
  75. package/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
  76. package/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
  77. package/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
  78. package/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
  79. package/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
  80. package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
  81. package/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
  82. package/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
  83. package/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
  84. package/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
  85. package/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
  86. package/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
  87. package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
  88. package/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
  89. package/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
  90. package/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
  91. package/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
  92. package/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
  93. package/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
  94. package/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
  95. package/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
  96. package/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
  97. package/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
  98. package/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
  99. package/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
  100. package/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
  101. package/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
  102. package/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
  103. package/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
  104. package/node_modules/typescript/lib/lib.es6.d.ts +0 -23
  105. package/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
  106. package/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
  107. package/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
  108. package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
  109. package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
  110. package/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
  111. package/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
  112. package/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
  113. package/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
  114. package/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
  115. package/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
  116. package/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
  117. package/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
  118. package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
  119. package/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
  120. package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
  121. package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
  122. package/node_modules/typescript/lib/typescript.js +0 -382
  123. package/node_modules/typescript/package.json +0 -57
  124. package/runtime/apps/native/tools/compile.mjs +0 -217
  125. package/runtime/packages/scene/scripts/validate-strict.mjs +0 -246
  126. package/runtime/packages/scene/src/clip.d.mts +0 -14
  127. package/runtime/packages/scene/src/clip.mjs +0 -15
  128. package/runtime/packages/scene/src/color-value.d.mts +0 -5
  129. package/runtime/packages/scene/src/color-value.mjs +0 -19
  130. package/runtime/packages/scene/src/color.ts +0 -1
  131. package/runtime/packages/scene/src/effects.ts +0 -213
  132. package/runtime/packages/scene/src/elements.ts +0 -491
  133. package/runtime/packages/scene/src/evaluate.ts +0 -919
  134. package/runtime/packages/scene/src/index.ts +0 -69
  135. package/runtime/packages/scene/src/jsx-runtime.ts +0 -73
  136. package/runtime/packages/scene/src/knob-schema.ts +0 -115
  137. package/runtime/packages/scene/src/knobs.ts +0 -118
  138. package/runtime/packages/scene/src/mask.d.mts +0 -6
  139. package/runtime/packages/scene/src/mask.mjs +0 -17
  140. package/runtime/packages/scene/src/metadata.d.mts +0 -23
  141. package/runtime/packages/scene/src/metadata.mjs +0 -44
  142. package/runtime/packages/scene/src/motion-sampling.d.mts +0 -2
  143. package/runtime/packages/scene/src/motion-sampling.mjs +0 -50
  144. package/runtime/packages/scene/src/motion.ts +0 -121
  145. package/runtime/packages/scene/src/shader.ts +0 -57
  146. package/src/resource-examples/example-image/landscape.svg +0 -7
  147. package/src/resource-examples/example-image/resource.json +0 -8
  148. package/src/resource-examples/example-model/gem.glb +0 -0
  149. package/src/resource-examples/example-model/preview.svg +0 -1
  150. package/src/resource-examples/example-model/resource.json +0 -7
  151. package/src/resource-examples/example-scene/resource.json +0 -1
  152. package/src/resource-examples/example-scene/scene.tsx +0 -8
  153. package/src/resource-examples/example-shader/effect.wgsl +0 -7
  154. package/src/resource-examples/example-shader/preview.svg +0 -1
  155. package/src/resource-examples/example-shader/resource.json +0 -27
  156. package/src/resource-examples/example-shader/tint.wgsl +0 -7
  157. package/src/resource-examples/example-video/ambient.mp4 +0 -0
  158. package/src/resource-examples/example-video/resource.json +0 -9
  159. package/src/starter/scene.tsx +0 -20
  160. package/studio/index.html +0 -2
  161. package/studio/public/check-circle-filled.svg +0 -3
  162. package/studio/public/comment-cursor/active-outer.svg +0 -3
  163. package/studio/public/comment-cursor/default.svg +0 -6
  164. package/studio/public/osmo-studio-logo.svg +0 -12
  165. package/studio/public/pencil-simple.svg +0 -5
  166. package/studio/src/active-outer-TVYUEURE.svg +0 -3
  167. package/studio/src/app.css +0 -4
  168. package/studio/src/app.js +0 -714
  169. package/studio/src/default-6CTRH4V5.svg +0 -6
  170. package/studio/src/engine_bg.wasm +0 -0
  171. package/studio/src/inter-cyrillic-ext-wght-normal-IYF56FF6.woff2 +0 -0
  172. package/studio/src/inter-cyrillic-wght-normal-JEOLYBOO.woff2 +0 -0
  173. package/studio/src/inter-greek-ext-wght-normal-EOVOK2B5.woff2 +0 -0
  174. package/studio/src/inter-greek-wght-normal-IRE366VL.woff2 +0 -0
  175. package/studio/src/inter-latin-ext-wght-normal-HA22NDSG.woff2 +0 -0
  176. package/studio/src/inter-latin-wght-normal-NRMW37G5.woff2 +0 -0
  177. package/studio/src/inter-vietnamese-wght-normal-CE5GGD3W.woff2 +0 -0
  178. package/studio/src/osmo-studio-logo-D5R2V77B.svg +0 -12
  179. package/third-party/cargo/adler2@2.0.1/Cargo.toml +0 -91
  180. package/third-party/cargo/adler2@2.0.1/LICENSE-0BSD +0 -12
  181. package/third-party/cargo/adler2@2.0.1/LICENSE-APACHE +0 -201
  182. package/third-party/cargo/adler2@2.0.1/LICENSE-MIT +0 -23
  183. package/third-party/cargo/allocator-api2@0.2.21/Cargo.toml +0 -48
  184. package/third-party/cargo/allocator-api2@0.2.21/LICENSE-APACHE +0 -176
  185. package/third-party/cargo/allocator-api2@0.2.21/LICENSE-MIT +0 -23
  186. package/third-party/cargo/arrayref@0.3.9/Cargo.toml +0 -23
  187. package/third-party/cargo/arrayref@0.3.9/LICENSE +0 -26
  188. package/third-party/cargo/arrayvec@0.7.8/Cargo.toml +0 -112
  189. package/third-party/cargo/arrayvec@0.7.8/LICENSE-APACHE +0 -201
  190. package/third-party/cargo/arrayvec@0.7.8/LICENSE-MIT +0 -25
  191. package/third-party/cargo/ascii@1.1.0/Cargo.toml +0 -41
  192. package/third-party/cargo/ascii@1.1.0/LICENSE-APACHE +0 -201
  193. package/third-party/cargo/ascii@1.1.0/LICENSE-MIT +0 -22
  194. package/third-party/cargo/ash@0.38.0+1.3.281/Cargo.toml +0 -66
  195. package/third-party/cargo/ash@0.38.0+1.3.281/LICENSE-APACHE +0 -67
  196. package/third-party/cargo/ash@0.38.0+1.3.281/LICENSE-MIT +0 -25
  197. package/third-party/cargo/autocfg@1.5.1/Cargo.toml +0 -75
  198. package/third-party/cargo/autocfg@1.5.1/LICENSE-APACHE +0 -201
  199. package/third-party/cargo/autocfg@1.5.1/LICENSE-MIT +0 -25
  200. package/third-party/cargo/base64@0.13.1/Cargo.toml +0 -53
  201. package/third-party/cargo/base64@0.13.1/LICENSE-APACHE +0 -201
  202. package/third-party/cargo/base64@0.13.1/LICENSE-MIT +0 -21
  203. package/third-party/cargo/base64@0.22.1/Cargo.toml +0 -85
  204. package/third-party/cargo/base64@0.22.1/LICENSE-APACHE +0 -201
  205. package/third-party/cargo/base64@0.22.1/LICENSE-MIT +0 -21
  206. package/third-party/cargo/bit-set@0.10.0/Cargo.toml +0 -108
  207. package/third-party/cargo/bit-set@0.10.0/LICENSE-APACHE +0 -201
  208. package/third-party/cargo/bit-set@0.10.0/LICENSE-MIT +0 -25
  209. package/third-party/cargo/bit-vec@0.9.1/Cargo.toml +0 -94
  210. package/third-party/cargo/bit-vec@0.9.1/LICENSE-APACHE +0 -201
  211. package/third-party/cargo/bit-vec@0.9.1/LICENSE-MIT +0 -25
  212. package/third-party/cargo/bitflags@2.13.0/Cargo.toml +0 -120
  213. package/third-party/cargo/bitflags@2.13.0/LICENSE-APACHE +0 -201
  214. package/third-party/cargo/bitflags@2.13.0/LICENSE-MIT +0 -25
  215. package/third-party/cargo/block2@0.6.2/Cargo.toml +0 -115
  216. package/third-party/cargo/block2@0.6.2/MIT-terms.txt +0 -22
  217. package/third-party/cargo/block2@0.6.2/madsmtm-objc2-b4167b582b2f-LICENSE.md +0 -34
  218. package/third-party/cargo/bumpalo@3.20.3/Cargo.toml +0 -99
  219. package/third-party/cargo/bumpalo@3.20.3/LICENSE-APACHE +0 -201
  220. package/third-party/cargo/bumpalo@3.20.3/LICENSE-MIT +0 -25
  221. package/third-party/cargo/bytemuck@1.25.1/Cargo.toml +0 -153
  222. package/third-party/cargo/bytemuck@1.25.1/LICENSE-APACHE +0 -61
  223. package/third-party/cargo/bytemuck@1.25.1/LICENSE-MIT +0 -9
  224. package/third-party/cargo/bytemuck@1.25.1/LICENSE-ZLIB +0 -11
  225. package/third-party/cargo/bytemuck_derive@1.11.0/Cargo.toml +0 -60
  226. package/third-party/cargo/bytemuck_derive@1.11.0/LICENSE-APACHE +0 -61
  227. package/third-party/cargo/bytemuck_derive@1.11.0/LICENSE-MIT +0 -9
  228. package/third-party/cargo/bytemuck_derive@1.11.0/LICENSE-ZLIB +0 -11
  229. package/third-party/cargo/byteorder-lite@0.1.0/Cargo.toml +0 -57
  230. package/third-party/cargo/byteorder-lite@0.1.0/LICENSE-MIT +0 -21
  231. package/third-party/cargo/byteorder-lite@0.1.0/UNLICENSE +0 -24
  232. package/third-party/cargo/byteorder@1.5.0/COPYING +0 -3
  233. package/third-party/cargo/byteorder@1.5.0/Cargo.toml +0 -54
  234. package/third-party/cargo/byteorder@1.5.0/LICENSE-MIT +0 -21
  235. package/third-party/cargo/byteorder@1.5.0/UNLICENSE +0 -24
  236. package/third-party/cargo/cfg-if@1.0.4/Cargo.toml +0 -47
  237. package/third-party/cargo/cfg-if@1.0.4/LICENSE-APACHE +0 -201
  238. package/third-party/cargo/cfg-if@1.0.4/LICENSE-MIT +0 -25
  239. package/third-party/cargo/cfg_aliases@0.2.1/Cargo.toml +0 -43
  240. package/third-party/cargo/cfg_aliases@0.2.1/LICENSE +0 -9
  241. package/third-party/cargo/chunked_transfer@1.5.0/Cargo.toml +0 -27
  242. package/third-party/cargo/chunked_transfer@1.5.0/LICENSE-APACHE +0 -201
  243. package/third-party/cargo/chunked_transfer@1.5.0/LICENSE-MIT +0 -22
  244. package/third-party/cargo/codespan-reporting@0.13.1/Cargo.toml +0 -115
  245. package/third-party/cargo/codespan-reporting@0.13.1/LICENSE +0 -201
  246. package/third-party/cargo/color_quant@1.1.0/Cargo.toml +0 -20
  247. package/third-party/cargo/color_quant@1.1.0/LICENSE +0 -21
  248. package/third-party/cargo/console_error_panic_hook@0.1.7/Cargo.toml +0 -27
  249. package/third-party/cargo/console_error_panic_hook@0.1.7/LICENSE-APACHE +0 -201
  250. package/third-party/cargo/console_error_panic_hook@0.1.7/LICENSE-MIT +0 -25
  251. package/third-party/cargo/core_maths@0.1.1/Cargo.toml +0 -37
  252. package/third-party/cargo/core_maths@0.1.1/LICENSE +0 -21
  253. package/third-party/cargo/cosmic-text@0.19.0/Cargo.toml +0 -214
  254. package/third-party/cargo/cosmic-text@0.19.0/LICENSE-APACHE +0 -201
  255. package/third-party/cargo/cosmic-text@0.19.0/LICENSE-MIT +0 -21
  256. package/third-party/cargo/crc32fast@1.5.0/Cargo.toml +0 -68
  257. package/third-party/cargo/crc32fast@1.5.0/LICENSE-APACHE +0 -202
  258. package/third-party/cargo/crc32fast@1.5.0/LICENSE-MIT +0 -21
  259. package/third-party/cargo/data-url@0.3.2/Cargo.toml +0 -63
  260. package/third-party/cargo/data-url@0.3.2/LICENSE-APACHE +0 -201
  261. package/third-party/cargo/data-url@0.3.2/LICENSE-MIT +0 -25
  262. package/third-party/cargo/dispatch2@0.3.1/Cargo.toml +0 -122
  263. package/third-party/cargo/dispatch2@0.3.1/MIT-terms.txt +0 -22
  264. package/third-party/cargo/dispatch2@0.3.1/madsmtm-objc2-8852b424193c-LICENSE.md +0 -34
  265. package/third-party/cargo/dlib@0.5.3/Cargo.toml +0 -43
  266. package/third-party/cargo/dlib@0.5.3/LICENSE.txt +0 -19
  267. package/third-party/cargo/document-features@0.2.12/Cargo.toml +0 -51
  268. package/third-party/cargo/document-features@0.2.12/LICENSE-APACHE +0 -73
  269. package/third-party/cargo/document-features@0.2.12/LICENSE-MIT +0 -19
  270. package/third-party/cargo/equivalent@1.0.2/Cargo.toml +0 -37
  271. package/third-party/cargo/equivalent@1.0.2/LICENSE-APACHE +0 -201
  272. package/third-party/cargo/equivalent@1.0.2/LICENSE-MIT +0 -25
  273. package/third-party/cargo/errno@0.3.14/Cargo.toml +0 -67
  274. package/third-party/cargo/errno@0.3.14/LICENSE-APACHE +0 -201
  275. package/third-party/cargo/errno@0.3.14/LICENSE-MIT +0 -25
  276. package/third-party/cargo/etagere@0.3.0/Cargo.toml +0 -57
  277. package/third-party/cargo/etagere@0.3.0/LICENSE-APACHE +0 -13
  278. package/third-party/cargo/etagere@0.3.0/LICENSE-MIT +0 -20
  279. package/third-party/cargo/euclid@0.22.14/COPYRIGHT +0 -5
  280. package/third-party/cargo/euclid@0.22.14/Cargo.toml +0 -66
  281. package/third-party/cargo/euclid@0.22.14/LICENSE-APACHE +0 -201
  282. package/third-party/cargo/euclid@0.22.14/LICENSE-MIT +0 -25
  283. package/third-party/cargo/fastrand@2.5.0/Cargo.toml +0 -89
  284. package/third-party/cargo/fastrand@2.5.0/LICENSE-APACHE +0 -201
  285. package/third-party/cargo/fastrand@2.5.0/LICENSE-MIT +0 -23
  286. package/third-party/cargo/fdeflate@0.3.7/Cargo.toml +0 -55
  287. package/third-party/cargo/fdeflate@0.3.7/LICENSE-APACHE +0 -177
  288. package/third-party/cargo/fdeflate@0.3.7/LICENSE-MIT +0 -25
  289. package/third-party/cargo/flate2@1.1.9/Cargo.toml +0 -274
  290. package/third-party/cargo/flate2@1.1.9/LICENSE-APACHE +0 -201
  291. package/third-party/cargo/flate2@1.1.9/LICENSE-MIT +0 -25
  292. package/third-party/cargo/float-cmp@0.9.0/Cargo.toml +0 -39
  293. package/third-party/cargo/float-cmp@0.9.0/LICENSE +0 -19
  294. package/third-party/cargo/float_next_after@1.0.0/Cargo.toml +0 -43
  295. package/third-party/cargo/float_next_after@1.0.0/LICENSE +0 -23
  296. package/third-party/cargo/foldhash@0.2.0/Cargo.toml +0 -80
  297. package/third-party/cargo/foldhash@0.2.0/LICENSE +0 -19
  298. package/third-party/cargo/font-types@0.11.3/Cargo.toml +0 -55
  299. package/third-party/cargo/font-types@0.11.3/LICENSE-APACHE +0 -67
  300. package/third-party/cargo/font-types@0.11.3/LICENSE-MIT +0 -25
  301. package/third-party/cargo/fontdb@0.23.0/Cargo.toml +0 -83
  302. package/third-party/cargo/fontdb@0.23.0/LICENSE +0 -21
  303. package/third-party/cargo/futures-core@0.3.32/Cargo.toml +0 -66
  304. package/third-party/cargo/futures-core@0.3.32/LICENSE-APACHE +0 -202
  305. package/third-party/cargo/futures-core@0.3.32/LICENSE-MIT +0 -26
  306. package/third-party/cargo/futures-task@0.3.32/Cargo.toml +0 -58
  307. package/third-party/cargo/futures-task@0.3.32/LICENSE-APACHE +0 -202
  308. package/third-party/cargo/futures-task@0.3.32/LICENSE-MIT +0 -26
  309. package/third-party/cargo/futures-util@0.3.32/Cargo.toml +0 -181
  310. package/third-party/cargo/futures-util@0.3.32/LICENSE-APACHE +0 -202
  311. package/third-party/cargo/futures-util@0.3.32/LICENSE-MIT +0 -26
  312. package/third-party/cargo/getrandom@0.4.3/Cargo.toml +0 -165
  313. package/third-party/cargo/getrandom@0.4.3/LICENSE-APACHE +0 -201
  314. package/third-party/cargo/getrandom@0.4.3/LICENSE-MIT +0 -26
  315. package/third-party/cargo/gif@0.14.2/Cargo.toml +0 -84
  316. package/third-party/cargo/gif@0.14.2/LICENSE-APACHE +0 -201
  317. package/third-party/cargo/gif@0.14.2/LICENSE-MIT +0 -21
  318. package/third-party/cargo/glam@0.33.2/Cargo.toml +0 -354
  319. package/third-party/cargo/glam@0.33.2/LICENSE-APACHE +0 -201
  320. package/third-party/cargo/glam@0.33.2/LICENSE-MIT +0 -23
  321. package/third-party/cargo/glow@0.17.0/Cargo.toml +0 -122
  322. package/third-party/cargo/glow@0.17.0/LICENSE-APACHE +0 -201
  323. package/third-party/cargo/glow@0.17.0/LICENSE-MIT +0 -23
  324. package/third-party/cargo/glow@0.17.0/LICENSE-ZLIB +0 -15
  325. package/third-party/cargo/gltf-derive@1.4.1/Cargo.toml +0 -34
  326. package/third-party/cargo/gltf-derive@1.4.1/LICENSE-APACHE +0 -202
  327. package/third-party/cargo/gltf-derive@1.4.1/LICENSE-MIT +0 -26
  328. package/third-party/cargo/gltf-json@1.4.1/Cargo.toml +0 -50
  329. package/third-party/cargo/gltf-json@1.4.1/LICENSE-APACHE +0 -202
  330. package/third-party/cargo/gltf-json@1.4.1/LICENSE-MIT +0 -26
  331. package/third-party/cargo/gltf@1.4.1/Cargo.toml +0 -122
  332. package/third-party/cargo/gltf@1.4.1/LICENSE-APACHE +0 -202
  333. package/third-party/cargo/gltf@1.4.1/LICENSE-MIT +0 -26
  334. package/third-party/cargo/glyphon@0.12.0/Cargo.toml +0 -35
  335. package/third-party/cargo/glyphon@0.12.0/LICENSE-APACHE +0 -201
  336. package/third-party/cargo/glyphon@0.12.0/LICENSE-MIT +0 -23
  337. package/third-party/cargo/glyphon@0.12.0/LICENSE-ZLIB +0 -15
  338. package/third-party/cargo/gpu-allocator@0.28.0/Cargo.toml +0 -180
  339. package/third-party/cargo/gpu-allocator@0.28.0/LICENSE-APACHE +0 -201
  340. package/third-party/cargo/gpu-allocator@0.28.0/LICENSE-MIT +0 -7
  341. package/third-party/cargo/grid@1.0.1/Cargo.toml +0 -77
  342. package/third-party/cargo/grid@1.0.1/LICENSE +0 -21
  343. package/third-party/cargo/half@2.7.1/Cargo.toml +0 -137
  344. package/third-party/cargo/half@2.7.1/LICENSE-APACHE +0 -176
  345. package/third-party/cargo/half@2.7.1/LICENSE-MIT +0 -19
  346. package/third-party/cargo/harfrust@0.5.2/Cargo.toml +0 -115
  347. package/third-party/cargo/harfrust@0.5.2/harfbuzz-harfrust-efdae3142ab7-LICENSE +0 -22
  348. package/third-party/cargo/hashbrown@0.16.1/Cargo.toml +0 -180
  349. package/third-party/cargo/hashbrown@0.16.1/LICENSE-APACHE +0 -201
  350. package/third-party/cargo/hashbrown@0.16.1/LICENSE-MIT +0 -25
  351. package/third-party/cargo/hashbrown@0.17.1/Cargo.toml +0 -201
  352. package/third-party/cargo/hashbrown@0.17.1/LICENSE-APACHE +0 -201
  353. package/third-party/cargo/hashbrown@0.17.1/LICENSE-MIT +0 -25
  354. package/third-party/cargo/httpdate@1.0.3/Cargo.toml +0 -35
  355. package/third-party/cargo/httpdate@1.0.3/LICENSE-APACHE +0 -201
  356. package/third-party/cargo/httpdate@1.0.3/LICENSE-MIT +0 -19
  357. package/third-party/cargo/image-webp@0.2.4/Cargo.toml +0 -63
  358. package/third-party/cargo/image-webp@0.2.4/LICENSE-APACHE +0 -177
  359. package/third-party/cargo/image-webp@0.2.4/LICENSE-MIT +0 -25
  360. package/third-party/cargo/image@0.25.10/Cargo.toml +0 -248
  361. package/third-party/cargo/image@0.25.10/LICENSE-APACHE +0 -177
  362. package/third-party/cargo/image@0.25.10/LICENSE-MIT +0 -25
  363. package/third-party/cargo/imagesize@0.14.0/Cargo.toml +0 -104
  364. package/third-party/cargo/imagesize@0.14.0/LICENSE +0 -21
  365. package/third-party/cargo/indexmap@2.14.0/Cargo.toml +0 -167
  366. package/third-party/cargo/indexmap@2.14.0/LICENSE-APACHE +0 -201
  367. package/third-party/cargo/indexmap@2.14.0/LICENSE-MIT +0 -25
  368. package/third-party/cargo/inflections@1.1.1/Cargo.toml +0 -21
  369. package/third-party/cargo/inflections@1.1.1/LICENSE +0 -20
  370. package/third-party/cargo/itoa@1.0.18/Cargo.toml +0 -66
  371. package/third-party/cargo/itoa@1.0.18/LICENSE-APACHE +0 -176
  372. package/third-party/cargo/itoa@1.0.18/LICENSE-MIT +0 -23
  373. package/third-party/cargo/js-sys@0.3.103/Cargo.toml +0 -98
  374. package/third-party/cargo/js-sys@0.3.103/LICENSE-APACHE +0 -201
  375. package/third-party/cargo/js-sys@0.3.103/LICENSE-MIT +0 -25
  376. package/third-party/cargo/khronos-egl@6.0.0/Cargo.toml +0 -82
  377. package/third-party/cargo/khronos-egl@6.0.0/LICENSE-APACHE +0 -201
  378. package/third-party/cargo/khronos-egl@6.0.0/LICENSE-MIT +0 -23
  379. package/third-party/cargo/kurbo@0.13.1/Cargo.toml +0 -230
  380. package/third-party/cargo/kurbo@0.13.1/LICENSE-APACHE +0 -202
  381. package/third-party/cargo/kurbo@0.13.1/LICENSE-MIT +0 -25
  382. package/third-party/cargo/lazy_static@1.5.0/Cargo.toml +0 -46
  383. package/third-party/cargo/lazy_static@1.5.0/LICENSE-APACHE +0 -201
  384. package/third-party/cargo/lazy_static@1.5.0/LICENSE-MIT +0 -25
  385. package/third-party/cargo/libc@0.2.186/Cargo.toml +0 -229
  386. package/third-party/cargo/libc@0.2.186/LICENSE-APACHE +0 -176
  387. package/third-party/cargo/libc@0.2.186/LICENSE-MIT +0 -25
  388. package/third-party/cargo/libloading@0.8.9/Cargo.toml +0 -90
  389. package/third-party/cargo/libloading@0.8.9/LICENSE +0 -12
  390. package/third-party/cargo/libm@0.2.16/Cargo.toml +0 -61
  391. package/third-party/cargo/libm@0.2.16/LICENSE.txt +0 -258
  392. package/third-party/cargo/linebender_resource_handle@0.1.1/Cargo.toml +0 -107
  393. package/third-party/cargo/linebender_resource_handle@0.1.1/LICENSE-APACHE +0 -176
  394. package/third-party/cargo/linebender_resource_handle@0.1.1/LICENSE-MIT +0 -19
  395. package/third-party/cargo/litrs@1.0.0/Cargo.toml +0 -63
  396. package/third-party/cargo/litrs@1.0.0/LICENSE-APACHE +0 -176
  397. package/third-party/cargo/litrs@1.0.0/LICENSE-MIT +0 -25
  398. package/third-party/cargo/lock_api@0.4.14/Cargo.toml +0 -68
  399. package/third-party/cargo/lock_api@0.4.14/LICENSE-APACHE +0 -201
  400. package/third-party/cargo/lock_api@0.4.14/LICENSE-MIT +0 -25
  401. package/third-party/cargo/log@0.4.33/Cargo.toml +0 -152
  402. package/third-party/cargo/log@0.4.33/LICENSE-APACHE +0 -201
  403. package/third-party/cargo/log@0.4.33/LICENSE-MIT +0 -25
  404. package/third-party/cargo/lru@0.16.4/Cargo.toml +0 -47
  405. package/third-party/cargo/lru@0.16.4/LICENSE +0 -21
  406. package/third-party/cargo/lyon_geom@1.0.19/Cargo.toml +0 -69
  407. package/third-party/cargo/lyon_geom@1.0.19/nical-lyon-56219c95c658-LICENSE-APACHE +0 -13
  408. package/third-party/cargo/lyon_geom@1.0.19/nical-lyon-56219c95c658-LICENSE-MIT +0 -20
  409. package/third-party/cargo/lyon_path@1.0.19/Cargo.toml +0 -58
  410. package/third-party/cargo/lyon_path@1.0.19/nical-lyon-56219c95c658-LICENSE-APACHE +0 -13
  411. package/third-party/cargo/lyon_path@1.0.19/nical-lyon-56219c95c658-LICENSE-MIT +0 -20
  412. package/third-party/cargo/lyon_tessellation@1.0.20/Cargo.toml +0 -71
  413. package/third-party/cargo/lyon_tessellation@1.0.20/nical-lyon-7fa75ea8eea3-LICENSE-APACHE +0 -13
  414. package/third-party/cargo/lyon_tessellation@1.0.20/nical-lyon-7fa75ea8eea3-LICENSE-MIT +0 -20
  415. package/third-party/cargo/memchr@2.8.3/COPYING +0 -3
  416. package/third-party/cargo/memchr@2.8.3/Cargo.toml +0 -89
  417. package/third-party/cargo/memchr@2.8.3/LICENSE-MIT +0 -21
  418. package/third-party/cargo/memchr@2.8.3/UNLICENSE +0 -24
  419. package/third-party/cargo/memmap2@0.9.11/Cargo.toml +0 -59
  420. package/third-party/cargo/memmap2@0.9.11/LICENSE-APACHE +0 -201
  421. package/third-party/cargo/memmap2@0.9.11/LICENSE-MIT +0 -26
  422. package/third-party/cargo/miniz_oxide@0.8.9/Cargo.toml +0 -91
  423. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE +0 -25
  424. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE-APACHE.md +0 -177
  425. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE-MIT.md +0 -24
  426. package/third-party/cargo/miniz_oxide@0.8.9/LICENSE-ZLIB.md +0 -14
  427. package/third-party/cargo/moxcms@0.8.1/Cargo.toml +0 -113
  428. package/third-party/cargo/moxcms@0.8.1/LICENSE-APACHE.md +0 -201
  429. package/third-party/cargo/moxcms@0.8.1/LICENSE.md +0 -26
  430. package/third-party/cargo/naga-types@30.0.0/Cargo.toml +0 -94
  431. package/third-party/cargo/naga-types@30.0.0/LICENSE.APACHE +0 -176
  432. package/third-party/cargo/naga-types@30.0.0/LICENSE.MIT +0 -21
  433. package/third-party/cargo/naga@30.0.0/Cargo.toml +0 -246
  434. package/third-party/cargo/naga@30.0.0/LICENSE.APACHE +0 -176
  435. package/third-party/cargo/naga@30.0.0/LICENSE.MIT +0 -21
  436. package/third-party/cargo/num-traits@0.2.19/Cargo.toml +0 -54
  437. package/third-party/cargo/num-traits@0.2.19/LICENSE-APACHE +0 -201
  438. package/third-party/cargo/num-traits@0.2.19/LICENSE-MIT +0 -25
  439. package/third-party/cargo/objc2-core-foundation@0.3.2/Cargo.toml +0 -221
  440. package/third-party/cargo/objc2-core-foundation@0.3.2/MIT-terms.txt +0 -22
  441. package/third-party/cargo/objc2-core-foundation@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +0 -34
  442. package/third-party/cargo/objc2-core-graphics@0.3.2/Cargo.toml +0 -331
  443. package/third-party/cargo/objc2-core-graphics@0.3.2/MIT-terms.txt +0 -22
  444. package/third-party/cargo/objc2-core-graphics@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +0 -34
  445. package/third-party/cargo/objc2-encode@4.1.0/Cargo.toml +0 -81
  446. package/third-party/cargo/objc2-encode@4.1.0/MIT-terms.txt +0 -22
  447. package/third-party/cargo/objc2-encode@4.1.0/madsmtm-objc2-8d214f547736-LICENSE.md +0 -34
  448. package/third-party/cargo/objc2-foundation@0.3.2/Cargo.toml +0 -529
  449. package/third-party/cargo/objc2-foundation@0.3.2/MIT-terms.txt +0 -22
  450. package/third-party/cargo/objc2-foundation@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +0 -34
  451. package/third-party/cargo/objc2-io-surface@0.3.2/Cargo.toml +0 -139
  452. package/third-party/cargo/objc2-io-surface@0.3.2/MIT-terms.txt +0 -22
  453. package/third-party/cargo/objc2-io-surface@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +0 -34
  454. package/third-party/cargo/objc2-metal@0.3.2/Cargo.toml +0 -601
  455. package/third-party/cargo/objc2-metal@0.3.2/MIT-terms.txt +0 -22
  456. package/third-party/cargo/objc2-metal@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +0 -34
  457. package/third-party/cargo/objc2-quartz-core@0.3.2/Cargo.toml +0 -302
  458. package/third-party/cargo/objc2-quartz-core@0.3.2/MIT-terms.txt +0 -22
  459. package/third-party/cargo/objc2-quartz-core@0.3.2/madsmtm-objc2-7b1abfd750a2-LICENSE.md +0 -34
  460. package/third-party/cargo/objc2@0.6.4/Cargo.toml +0 -232
  461. package/third-party/cargo/objc2@0.6.4/MIT-terms.txt +0 -22
  462. package/third-party/cargo/objc2@0.6.4/madsmtm-objc2-8852b424193c-LICENSE.md +0 -34
  463. package/third-party/cargo/once_cell@1.21.4/Cargo.toml +0 -119
  464. package/third-party/cargo/once_cell@1.21.4/LICENSE-APACHE +0 -201
  465. package/third-party/cargo/once_cell@1.21.4/LICENSE-MIT +0 -23
  466. package/third-party/cargo/ordered-float@5.3.0/Cargo.toml +0 -162
  467. package/third-party/cargo/ordered-float@5.3.0/LICENSE-MIT +0 -25
  468. package/third-party/cargo/parking_lot@0.12.5/Cargo.toml +0 -87
  469. package/third-party/cargo/parking_lot@0.12.5/LICENSE-APACHE +0 -201
  470. package/third-party/cargo/parking_lot@0.12.5/LICENSE-MIT +0 -25
  471. package/third-party/cargo/parking_lot_core@0.9.12/Cargo.toml +0 -72
  472. package/third-party/cargo/parking_lot_core@0.9.12/LICENSE-APACHE +0 -201
  473. package/third-party/cargo/parking_lot_core@0.9.12/LICENSE-MIT +0 -25
  474. package/third-party/cargo/pico-args@0.5.0/Cargo.toml +0 -32
  475. package/third-party/cargo/pico-args@0.5.0/LICENSE +0 -20
  476. package/third-party/cargo/pin-project-lite@0.2.17/Cargo.toml +0 -198
  477. package/third-party/cargo/pin-project-lite@0.2.17/LICENSE-APACHE +0 -177
  478. package/third-party/cargo/pin-project-lite@0.2.17/LICENSE-MIT +0 -23
  479. package/third-party/cargo/pkg-config@0.3.33/Cargo.toml +0 -43
  480. package/third-party/cargo/pkg-config@0.3.33/LICENSE-APACHE +0 -201
  481. package/third-party/cargo/pkg-config@0.3.33/LICENSE-MIT +0 -25
  482. package/third-party/cargo/png@0.18.1/Cargo.toml +0 -130
  483. package/third-party/cargo/png@0.18.1/LICENSE-APACHE +0 -201
  484. package/third-party/cargo/png@0.18.1/LICENSE-MIT +0 -25
  485. package/third-party/cargo/pollster@0.4.0/Cargo.toml +0 -53
  486. package/third-party/cargo/pollster@0.4.0/LICENSE-APACHE +0 -201
  487. package/third-party/cargo/pollster@0.4.0/LICENSE-MIT +0 -25
  488. package/third-party/cargo/polycool@0.4.0/Cargo.toml +0 -83
  489. package/third-party/cargo/polycool@0.4.0/LICENSE-APACHE +0 -202
  490. package/third-party/cargo/polycool@0.4.0/LICENSE-MIT +0 -25
  491. package/third-party/cargo/pp-rs@0.2.1/Cargo.toml +0 -23
  492. package/third-party/cargo/pp-rs@0.2.1/LICENSE +0 -29
  493. package/third-party/cargo/presser@0.3.1/Cargo.toml +0 -58
  494. package/third-party/cargo/presser@0.3.1/LICENSE-APACHE +0 -201
  495. package/third-party/cargo/presser@0.3.1/LICENSE-MIT +0 -25
  496. package/third-party/cargo/proc-macro2@1.0.106/Cargo.toml +0 -105
  497. package/third-party/cargo/proc-macro2@1.0.106/LICENSE-APACHE +0 -176
  498. package/third-party/cargo/proc-macro2@1.0.106/LICENSE-MIT +0 -23
  499. package/third-party/cargo/profiling@1.0.18/Cargo.toml +0 -96
  500. package/third-party/cargo/profiling@1.0.18/aclysma-profiling-8271551172eb-LICENSE-APACHE +0 -201
  501. package/third-party/cargo/profiling@1.0.18/aclysma-profiling-8271551172eb-LICENSE-MIT +0 -21
  502. package/third-party/cargo/pxfm@0.1.30/Cargo.toml +0 -53
  503. package/third-party/cargo/pxfm@0.1.30/LICENSE-APACHE.md +0 -201
  504. package/third-party/cargo/pxfm@0.1.30/LICENSE.md +0 -26
  505. package/third-party/cargo/quick-error@2.0.1/Cargo.toml +0 -24
  506. package/third-party/cargo/quick-error@2.0.1/LICENSE-APACHE +0 -202
  507. package/third-party/cargo/quick-error@2.0.1/LICENSE-MIT +0 -19
  508. package/third-party/cargo/quote@1.0.46/Cargo.toml +0 -70
  509. package/third-party/cargo/quote@1.0.46/LICENSE-APACHE +0 -176
  510. package/third-party/cargo/quote@1.0.46/LICENSE-MIT +0 -23
  511. package/third-party/cargo/rangemap@1.7.1/Cargo.toml +0 -91
  512. package/third-party/cargo/rangemap@1.7.1/LICENSE-APACHE +0 -191
  513. package/third-party/cargo/rangemap@1.7.1/LICENSE-MIT +0 -7
  514. package/third-party/cargo/raw-window-handle@0.6.2/Cargo.toml +0 -56
  515. package/third-party/cargo/raw-window-handle@0.6.2/LICENSE-APACHE.md +0 -177
  516. package/third-party/cargo/raw-window-handle@0.6.2/LICENSE-MIT.md +0 -21
  517. package/third-party/cargo/raw-window-handle@0.6.2/LICENSE-ZLIB.md +0 -11
  518. package/third-party/cargo/raw-window-metal@1.1.0/Cargo.toml +0 -111
  519. package/third-party/cargo/raw-window-metal@1.1.0/LICENSE-APACHE +0 -202
  520. package/third-party/cargo/raw-window-metal@1.1.0/LICENSE-MIT +0 -17
  521. package/third-party/cargo/read-fonts@0.37.0/Cargo.toml +0 -95
  522. package/third-party/cargo/read-fonts@0.37.0/LICENSE-APACHE +0 -67
  523. package/third-party/cargo/read-fonts@0.37.0/LICENSE-MIT +0 -25
  524. package/third-party/cargo/read-fonts@0.39.2/Cargo.toml +0 -96
  525. package/third-party/cargo/read-fonts@0.39.2/LICENSE-APACHE +0 -67
  526. package/third-party/cargo/read-fonts@0.39.2/LICENSE-MIT +0 -25
  527. package/third-party/cargo/renderdoc-sys@1.1.0/Cargo.toml +0 -39
  528. package/third-party/cargo/renderdoc-sys@1.1.0/LICENSE-APACHE +0 -201
  529. package/third-party/cargo/renderdoc-sys@1.1.0/LICENSE-MIT +0 -25
  530. package/third-party/cargo/resvg@0.47.0/Cargo.toml +0 -112
  531. package/third-party/cargo/resvg@0.47.0/LICENSE-APACHE +0 -176
  532. package/third-party/cargo/resvg@0.47.0/LICENSE-MIT +0 -25
  533. package/third-party/cargo/rgb@0.8.53/Cargo.toml +0 -110
  534. package/third-party/cargo/rgb@0.8.53/LICENSE +0 -21
  535. package/third-party/cargo/roxmltree@0.21.1/Cargo.toml +0 -75
  536. package/third-party/cargo/roxmltree@0.21.1/LICENSE-APACHE +0 -201
  537. package/third-party/cargo/roxmltree@0.21.1/LICENSE-MIT +0 -21
  538. package/third-party/cargo/rustc-hash@1.1.0/Cargo.toml +0 -25
  539. package/third-party/cargo/rustc-hash@1.1.0/LICENSE-APACHE +0 -201
  540. package/third-party/cargo/rustc-hash@1.1.0/LICENSE-MIT +0 -23
  541. package/third-party/cargo/rustc-hash@2.1.3/Cargo.toml +0 -50
  542. package/third-party/cargo/rustc-hash@2.1.3/LICENSE-APACHE +0 -176
  543. package/third-party/cargo/rustc-hash@2.1.3/LICENSE-MIT +0 -23
  544. package/third-party/cargo/rustix@1.1.4/COPYRIGHT +0 -29
  545. package/third-party/cargo/rustix@1.1.4/Cargo.toml +0 -292
  546. package/third-party/cargo/rustix@1.1.4/LICENSE-APACHE +0 -201
  547. package/third-party/cargo/rustix@1.1.4/LICENSE-Apache-2.0_WITH_LLVM-exception +0 -220
  548. package/third-party/cargo/rustix@1.1.4/LICENSE-MIT +0 -23
  549. package/third-party/cargo/rustversion@1.0.23/Cargo.toml +0 -69
  550. package/third-party/cargo/rustversion@1.0.23/LICENSE-APACHE +0 -176
  551. package/third-party/cargo/rustversion@1.0.23/LICENSE-MIT +0 -23
  552. package/third-party/cargo/rustybuzz@0.20.1/Cargo.toml +0 -110
  553. package/third-party/cargo/rustybuzz@0.20.1/LICENSE +0 -22
  554. package/third-party/cargo/scopeguard@1.2.0/Cargo.toml +0 -43
  555. package/third-party/cargo/scopeguard@1.2.0/LICENSE-APACHE +0 -201
  556. package/third-party/cargo/scopeguard@1.2.0/LICENSE-MIT +0 -25
  557. package/third-party/cargo/self_cell@1.2.2/Cargo.toml +0 -33
  558. package/third-party/cargo/self_cell@1.2.2/LICENSE-APACHE +0 -201
  559. package/third-party/cargo/self_cell@1.2.2/LICENSE-GPLv2 +0 -339
  560. package/third-party/cargo/self_cell@1.3.0/Cargo.toml +0 -33
  561. package/third-party/cargo/self_cell@1.3.0/LICENSE-APACHE +0 -201
  562. package/third-party/cargo/self_cell@1.3.0/LICENSE-GPLv2 +0 -339
  563. package/third-party/cargo/serde@1.0.228/Cargo.toml +0 -84
  564. package/third-party/cargo/serde@1.0.228/LICENSE-APACHE +0 -176
  565. package/third-party/cargo/serde@1.0.228/LICENSE-MIT +0 -23
  566. package/third-party/cargo/serde_core@1.0.228/Cargo.toml +0 -87
  567. package/third-party/cargo/serde_core@1.0.228/LICENSE-APACHE +0 -176
  568. package/third-party/cargo/serde_core@1.0.228/LICENSE-MIT +0 -23
  569. package/third-party/cargo/serde_derive@1.0.228/Cargo.toml +0 -87
  570. package/third-party/cargo/serde_derive@1.0.228/LICENSE-APACHE +0 -176
  571. package/third-party/cargo/serde_derive@1.0.228/LICENSE-MIT +0 -23
  572. package/third-party/cargo/serde_json@1.0.150/Cargo.toml +0 -162
  573. package/third-party/cargo/serde_json@1.0.150/LICENSE-APACHE +0 -176
  574. package/third-party/cargo/serde_json@1.0.150/LICENSE-MIT +0 -23
  575. package/third-party/cargo/simd-adler32@0.3.10/Cargo.toml +0 -68
  576. package/third-party/cargo/simd-adler32@0.3.10/LICENSE.md +0 -21
  577. package/third-party/cargo/simplecss@0.2.2/Cargo.toml +0 -146
  578. package/third-party/cargo/simplecss@0.2.2/LICENSE-APACHE +0 -201
  579. package/third-party/cargo/simplecss@0.2.2/LICENSE-MIT +0 -21
  580. package/third-party/cargo/siphasher@1.0.3/COPYING +0 -7
  581. package/third-party/cargo/siphasher@1.0.3/Cargo.toml +0 -64
  582. package/third-party/cargo/skrifa@0.40.0/Cargo.toml +0 -86
  583. package/third-party/cargo/skrifa@0.40.0/LICENSE-APACHE +0 -67
  584. package/third-party/cargo/skrifa@0.40.0/LICENSE-MIT +0 -25
  585. package/third-party/cargo/skrifa@0.42.1/Cargo.toml +0 -86
  586. package/third-party/cargo/skrifa@0.42.1/LICENSE-APACHE +0 -67
  587. package/third-party/cargo/skrifa@0.42.1/LICENSE-MIT +0 -25
  588. package/third-party/cargo/slab@0.4.12/Cargo.toml +0 -67
  589. package/third-party/cargo/slab@0.4.12/LICENSE +0 -25
  590. package/third-party/cargo/slotmap@1.1.1/Cargo.toml +0 -83
  591. package/third-party/cargo/slotmap@1.1.1/LICENSE +0 -19
  592. package/third-party/cargo/smallvec@1.15.2/Cargo.toml +0 -103
  593. package/third-party/cargo/smallvec@1.15.2/LICENSE-APACHE +0 -201
  594. package/third-party/cargo/smallvec@1.15.2/LICENSE-MIT +0 -25
  595. package/third-party/cargo/smol_str@0.3.6/Cargo.toml +0 -155
  596. package/third-party/cargo/smol_str@0.3.6/LICENSE-APACHE +0 -201
  597. package/third-party/cargo/smol_str@0.3.6/LICENSE-MIT +0 -23
  598. package/third-party/cargo/spirv@0.4.0+sdk-1.4.341.0/Cargo.toml +0 -56
  599. package/third-party/cargo/spirv@0.4.0+sdk-1.4.341.0/gfx-rs-rspirv-8afc3d0ac8e1-LICENSE +0 -202
  600. package/third-party/cargo/static_assertions@1.1.0/Cargo.toml +0 -39
  601. package/third-party/cargo/static_assertions@1.1.0/LICENSE-APACHE +0 -202
  602. package/third-party/cargo/static_assertions@1.1.0/LICENSE-MIT +0 -21
  603. package/third-party/cargo/strict-num@0.1.1/Cargo.toml +0 -35
  604. package/third-party/cargo/strict-num@0.1.1/LICENSE +0 -19
  605. package/third-party/cargo/svgtypes@0.16.1/Cargo.toml +0 -57
  606. package/third-party/cargo/svgtypes@0.16.1/LICENSE-APACHE +0 -201
  607. package/third-party/cargo/svgtypes@0.16.1/LICENSE-MIT +0 -20
  608. package/third-party/cargo/swash@0.2.9/Cargo.toml +0 -93
  609. package/third-party/cargo/swash@0.2.9/LICENSE-APACHE +0 -201
  610. package/third-party/cargo/swash@0.2.9/LICENSE-MIT +0 -25
  611. package/third-party/cargo/syn@2.0.118/Cargo.toml +0 -272
  612. package/third-party/cargo/syn@2.0.118/LICENSE-APACHE +0 -176
  613. package/third-party/cargo/syn@2.0.118/LICENSE-MIT +0 -23
  614. package/third-party/cargo/sys-locale@0.3.2/Cargo.toml +0 -73
  615. package/third-party/cargo/sys-locale@0.3.2/LICENSE-APACHE +0 -201
  616. package/third-party/cargo/sys-locale@0.3.2/LICENSE-MIT +0 -21
  617. package/third-party/cargo/taffy@0.12.1/Cargo.toml +0 -171
  618. package/third-party/cargo/taffy@0.12.1/DioxusLabs-taffy-1c9e37a0a1cf-LICENSE.md +0 -25
  619. package/third-party/cargo/tempfile@3.27.0/Cargo.toml +0 -105
  620. package/third-party/cargo/tempfile@3.27.0/LICENSE-APACHE +0 -201
  621. package/third-party/cargo/tempfile@3.27.0/LICENSE-MIT +0 -25
  622. package/third-party/cargo/termcolor@1.4.1/COPYING +0 -3
  623. package/third-party/cargo/termcolor@1.4.1/Cargo.toml +0 -40
  624. package/third-party/cargo/termcolor@1.4.1/LICENSE-MIT +0 -21
  625. package/third-party/cargo/termcolor@1.4.1/UNLICENSE +0 -24
  626. package/third-party/cargo/thiserror-impl@2.0.18/Cargo.toml +0 -52
  627. package/third-party/cargo/thiserror-impl@2.0.18/LICENSE-APACHE +0 -176
  628. package/third-party/cargo/thiserror-impl@2.0.18/LICENSE-MIT +0 -23
  629. package/third-party/cargo/thiserror@2.0.18/Cargo.toml +0 -119
  630. package/third-party/cargo/thiserror@2.0.18/LICENSE-APACHE +0 -176
  631. package/third-party/cargo/thiserror@2.0.18/LICENSE-MIT +0 -23
  632. package/third-party/cargo/tiny-skia-path@0.12.0/Cargo.toml +0 -58
  633. package/third-party/cargo/tiny-skia-path@0.12.0/LICENSE +0 -30
  634. package/third-party/cargo/tiny-skia@0.12.0/Cargo.toml +0 -116
  635. package/third-party/cargo/tiny-skia@0.12.0/LICENSE +0 -30
  636. package/third-party/cargo/tiny_http@0.12.0/Cargo.toml +0 -82
  637. package/third-party/cargo/tiny_http@0.12.0/LICENSE-APACHE +0 -201
  638. package/third-party/cargo/tiny_http@0.12.0/LICENSE-MIT +0 -25
  639. package/third-party/cargo/tinyvec@1.12.0/Cargo.toml +0 -184
  640. package/third-party/cargo/tinyvec@1.12.0/LICENSE-APACHE.md +0 -202
  641. package/third-party/cargo/tinyvec@1.12.0/LICENSE-MIT.md +0 -5
  642. package/third-party/cargo/tinyvec@1.12.0/LICENSE-ZLIB.md +0 -11
  643. package/third-party/cargo/tinyvec_macros@0.1.1/Cargo.toml +0 -19
  644. package/third-party/cargo/tinyvec_macros@0.1.1/LICENSE-APACHE.md +0 -202
  645. package/third-party/cargo/tinyvec_macros@0.1.1/LICENSE-MIT.md +0 -21
  646. package/third-party/cargo/tinyvec_macros@0.1.1/LICENSE-ZLIB.md +0 -20
  647. package/third-party/cargo/ttf-parser@0.25.1/Cargo.toml +0 -101
  648. package/third-party/cargo/ttf-parser@0.25.1/LICENSE-APACHE +0 -201
  649. package/third-party/cargo/ttf-parser@0.25.1/LICENSE-MIT +0 -20
  650. package/third-party/cargo/unicode-bidi-mirroring@0.4.0/Cargo.toml +0 -22
  651. package/third-party/cargo/unicode-bidi-mirroring@0.4.0/LICENSE-APACHE +0 -201
  652. package/third-party/cargo/unicode-bidi-mirroring@0.4.0/LICENSE-MIT +0 -21
  653. package/third-party/cargo/unicode-bidi@0.3.18/COPYRIGHT +0 -8
  654. package/third-party/cargo/unicode-bidi@0.3.18/Cargo.toml +0 -90
  655. package/third-party/cargo/unicode-bidi@0.3.18/LICENSE-APACHE +0 -201
  656. package/third-party/cargo/unicode-bidi@0.3.18/LICENSE-MIT +0 -25
  657. package/third-party/cargo/unicode-ccc@0.4.0/Cargo.toml +0 -22
  658. package/third-party/cargo/unicode-ccc@0.4.0/LICENSE-APACHE +0 -201
  659. package/third-party/cargo/unicode-ccc@0.4.0/LICENSE-MIT +0 -21
  660. package/third-party/cargo/unicode-ident@1.0.24/Cargo.toml +0 -84
  661. package/third-party/cargo/unicode-ident@1.0.24/LICENSE-APACHE +0 -176
  662. package/third-party/cargo/unicode-ident@1.0.24/LICENSE-MIT +0 -23
  663. package/third-party/cargo/unicode-ident@1.0.24/LICENSE-UNICODE +0 -39
  664. package/third-party/cargo/unicode-linebreak@0.1.5/Cargo.toml +0 -32
  665. package/third-party/cargo/unicode-linebreak@0.1.5/LICENSE +0 -201
  666. package/third-party/cargo/unicode-properties@0.1.4/COPYRIGHT +0 -7
  667. package/third-party/cargo/unicode-properties@0.1.4/Cargo.toml +0 -65
  668. package/third-party/cargo/unicode-properties@0.1.4/LICENSE-APACHE +0 -201
  669. package/third-party/cargo/unicode-properties@0.1.4/LICENSE-MIT +0 -25
  670. package/third-party/cargo/unicode-script@0.5.8/Cargo.toml +0 -63
  671. package/third-party/cargo/unicode-script@0.5.8/LICENSE-APACHE +0 -201
  672. package/third-party/cargo/unicode-script@0.5.8/LICENSE-MIT +0 -27
  673. package/third-party/cargo/unicode-segmentation@1.13.3/COPYRIGHT +0 -7
  674. package/third-party/cargo/unicode-segmentation@1.13.3/Cargo.toml +0 -91
  675. package/third-party/cargo/unicode-segmentation@1.13.3/LICENSE-APACHE +0 -201
  676. package/third-party/cargo/unicode-segmentation@1.13.3/LICENSE-MIT +0 -25
  677. package/third-party/cargo/unicode-vo@0.1.0/Cargo.toml +0 -22
  678. package/third-party/cargo/unicode-vo@0.1.0/LICENSE-APACHE +0 -201
  679. package/third-party/cargo/unicode-vo@0.1.0/LICENSE-MIT +0 -21
  680. package/third-party/cargo/unicode-width@0.2.2/COPYRIGHT +0 -7
  681. package/third-party/cargo/unicode-width@0.2.2/Cargo.toml +0 -77
  682. package/third-party/cargo/unicode-width@0.2.2/LICENSE-APACHE +0 -201
  683. package/third-party/cargo/unicode-width@0.2.2/LICENSE-MIT +0 -25
  684. package/third-party/cargo/unicode-xid@0.2.6/COPYRIGHT +0 -7
  685. package/third-party/cargo/unicode-xid@0.2.6/Cargo.toml +0 -65
  686. package/third-party/cargo/unicode-xid@0.2.6/LICENSE-APACHE +0 -201
  687. package/third-party/cargo/unicode-xid@0.2.6/LICENSE-MIT +0 -25
  688. package/third-party/cargo/urlencoding@2.1.3/Cargo.toml +0 -41
  689. package/third-party/cargo/urlencoding@2.1.3/LICENSE +0 -20
  690. package/third-party/cargo/usvg@0.47.0/Cargo.toml +0 -138
  691. package/third-party/cargo/usvg@0.47.0/LICENSE-APACHE +0 -176
  692. package/third-party/cargo/usvg@0.47.0/LICENSE-MIT +0 -25
  693. package/third-party/cargo/version_check@0.9.5/Cargo.toml +0 -38
  694. package/third-party/cargo/version_check@0.9.5/LICENSE-APACHE +0 -201
  695. package/third-party/cargo/version_check@0.9.5/LICENSE-MIT +0 -19
  696. package/third-party/cargo/wasm-bindgen-futures@0.4.76/Cargo.toml +0 -88
  697. package/third-party/cargo/wasm-bindgen-futures@0.4.76/LICENSE-APACHE +0 -201
  698. package/third-party/cargo/wasm-bindgen-futures@0.4.76/LICENSE-MIT +0 -25
  699. package/third-party/cargo/wasm-bindgen-macro-support@0.2.126/Cargo.toml +0 -83
  700. package/third-party/cargo/wasm-bindgen-macro-support@0.2.126/LICENSE-APACHE +0 -201
  701. package/third-party/cargo/wasm-bindgen-macro-support@0.2.126/LICENSE-MIT +0 -25
  702. package/third-party/cargo/wasm-bindgen-macro@0.2.126/Cargo.toml +0 -73
  703. package/third-party/cargo/wasm-bindgen-macro@0.2.126/LICENSE-APACHE +0 -201
  704. package/third-party/cargo/wasm-bindgen-macro@0.2.126/LICENSE-MIT +0 -25
  705. package/third-party/cargo/wasm-bindgen-shared@0.2.126/Cargo.toml +0 -66
  706. package/third-party/cargo/wasm-bindgen-shared@0.2.126/LICENSE-APACHE +0 -201
  707. package/third-party/cargo/wasm-bindgen-shared@0.2.126/LICENSE-MIT +0 -25
  708. package/third-party/cargo/wasm-bindgen@0.2.126/Cargo.toml +0 -122
  709. package/third-party/cargo/wasm-bindgen@0.2.126/LICENSE-APACHE +0 -201
  710. package/third-party/cargo/wasm-bindgen@0.2.126/LICENSE-MIT +0 -25
  711. package/third-party/cargo/wayland-sys@0.31.11/Cargo.toml +0 -81
  712. package/third-party/cargo/wayland-sys@0.31.11/LICENSE.txt +0 -19
  713. package/third-party/cargo/web-sys@0.3.103/Cargo.toml +0 -2823
  714. package/third-party/cargo/web-sys@0.3.103/LICENSE-APACHE +0 -201
  715. package/third-party/cargo/web-sys@0.3.103/LICENSE-MIT +0 -25
  716. package/third-party/cargo/weezl@0.1.12/Cargo.toml +0 -120
  717. package/third-party/cargo/weezl@0.1.12/LICENSE-APACHE +0 -201
  718. package/third-party/cargo/weezl@0.1.12/LICENSE-MIT +0 -22
  719. package/third-party/cargo/wgpu-core-deps-apple@30.0.0/Cargo.toml +0 -53
  720. package/third-party/cargo/wgpu-core-deps-apple@30.0.0/LICENSE.APACHE +0 -176
  721. package/third-party/cargo/wgpu-core-deps-apple@30.0.0/LICENSE.MIT +0 -21
  722. package/third-party/cargo/wgpu-core@30.0.0/Cargo.toml +0 -237
  723. package/third-party/cargo/wgpu-core@30.0.0/LICENSE.APACHE +0 -176
  724. package/third-party/cargo/wgpu-core@30.0.0/LICENSE.MIT +0 -21
  725. package/third-party/cargo/wgpu-hal@30.0.0/Cargo.toml +0 -541
  726. package/third-party/cargo/wgpu-hal@30.0.0/LICENSE.APACHE +0 -176
  727. package/third-party/cargo/wgpu-hal@30.0.0/LICENSE.MIT +0 -21
  728. package/third-party/cargo/wgpu-naga-bridge@30.0.0/Cargo.toml +0 -46
  729. package/third-party/cargo/wgpu-naga-bridge@30.0.0/LICENSE.APACHE +0 -176
  730. package/third-party/cargo/wgpu-naga-bridge@30.0.0/LICENSE.MIT +0 -21
  731. package/third-party/cargo/wgpu-types@30.0.0/Cargo.toml +0 -161
  732. package/third-party/cargo/wgpu-types@30.0.0/LICENSE.APACHE +0 -176
  733. package/third-party/cargo/wgpu-types@30.0.0/LICENSE.MIT +0 -21
  734. package/third-party/cargo/wgpu@30.0.0/Cargo.toml +0 -278
  735. package/third-party/cargo/wgpu@30.0.0/LICENSE.APACHE +0 -176
  736. package/third-party/cargo/wgpu@30.0.0/LICENSE.MIT +0 -21
  737. package/third-party/cargo/xmlwriter@0.1.0/Cargo.toml +0 -23
  738. package/third-party/cargo/xmlwriter@0.1.0/LICENSE +0 -21
  739. package/third-party/cargo/yazi@0.2.1/Cargo.toml +0 -45
  740. package/third-party/cargo/yazi@0.2.1/LICENSE-APACHE +0 -201
  741. package/third-party/cargo/yazi@0.2.1/LICENSE-MIT +0 -19
  742. package/third-party/cargo/zeno@0.3.3/Cargo.toml +0 -65
  743. package/third-party/cargo/zeno@0.3.3/LICENSE-APACHE +0 -201
  744. package/third-party/cargo/zeno@0.3.3/LICENSE-MIT +0 -25
  745. package/third-party/cargo/zerocopy-derive@0.8.54/Cargo.toml +0 -209
  746. package/third-party/cargo/zerocopy-derive@0.8.54/LICENSE-APACHE +0 -202
  747. package/third-party/cargo/zerocopy-derive@0.8.54/LICENSE-BSD +0 -24
  748. package/third-party/cargo/zerocopy-derive@0.8.54/LICENSE-MIT +0 -26
  749. package/third-party/cargo/zerocopy@0.8.54/Cargo.toml +0 -419
  750. package/third-party/cargo/zerocopy@0.8.54/LICENSE-APACHE +0 -202
  751. package/third-party/cargo/zerocopy@0.8.54/LICENSE-BSD +0 -24
  752. package/third-party/cargo/zerocopy@0.8.54/LICENSE-MIT +0 -26
  753. package/third-party/cargo/zmij@1.0.23/Cargo.toml +0 -90
  754. package/third-party/cargo/zmij@1.0.23/LICENSE-MIT +0 -23
  755. package/third-party/cargo/zune-core@0.5.1/Cargo.toml +0 -47
  756. package/third-party/cargo/zune-core@0.5.1/LICENSE-APACHE +0 -201
  757. package/third-party/cargo/zune-core@0.5.1/LICENSE-MIT +0 -21
  758. package/third-party/cargo/zune-core@0.5.1/LICENSE-ZLIB +0 -19
  759. package/third-party/cargo/zune-jpeg@0.5.15/Cargo.toml +0 -67
  760. package/third-party/cargo/zune-jpeg@0.5.15/LICENSE-APACHE +0 -201
  761. package/third-party/cargo/zune-jpeg@0.5.15/LICENSE-MIT +0 -21
  762. package/third-party/cargo/zune-jpeg@0.5.15/LICENSE-ZLIB +0 -19
  763. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/esbuild-0.27.4-LICENSE.md +0 -21
  764. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/go-LICENSE +0 -27
  765. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/golang-x-sys-c0bba94af5f8-LICENSE +0 -27
  766. package/third-party/npm/@esbuild__darwin-arm64@0.27.4/package.json +0 -20
  767. package/third-party/npm/@floating-ui__core@1.7.5/LICENSE +0 -20
  768. package/third-party/npm/@floating-ui__core@1.7.5/package.json +0 -63
  769. package/third-party/npm/@floating-ui__dom@1.7.6/LICENSE +0 -20
  770. package/third-party/npm/@floating-ui__dom@1.7.6/package.json +0 -71
  771. package/third-party/npm/@floating-ui__react-dom@2.1.8/LICENSE +0 -20
  772. package/third-party/npm/@floating-ui__react-dom@2.1.8/package.json +0 -76
  773. package/third-party/npm/@floating-ui__utils@0.2.11/LICENSE +0 -20
  774. package/third-party/npm/@floating-ui__utils@0.2.11/package.json +0 -70
  775. package/third-party/npm/@radix-ui__primitive@1.1.7/LICENSE +0 -21
  776. package/third-party/npm/@radix-ui__primitive@1.1.7/package.json +0 -79
  777. package/third-party/npm/@radix-ui__react-arrow@1.1.15/LICENSE +0 -21
  778. package/third-party/npm/@radix-ui__react-arrow@1.1.15/package.json +0 -68
  779. package/third-party/npm/@radix-ui__react-collection@1.1.15/LICENSE +0 -21
  780. package/third-party/npm/@radix-ui__react-collection@1.1.15/package.json +0 -71
  781. package/third-party/npm/@radix-ui__react-compose-refs@1.1.5/LICENSE +0 -21
  782. package/third-party/npm/@radix-ui__react-compose-refs@1.1.5/package.json +0 -60
  783. package/third-party/npm/@radix-ui__react-context-menu@2.3.7/LICENSE +0 -21
  784. package/third-party/npm/@radix-ui__react-context-menu@2.3.7/package.json +0 -73
  785. package/third-party/npm/@radix-ui__react-context@1.2.2/LICENSE +0 -21
  786. package/third-party/npm/@radix-ui__react-context@1.2.2/package.json +0 -60
  787. package/third-party/npm/@radix-ui__react-direction@1.1.4/LICENSE +0 -21
  788. package/third-party/npm/@radix-ui__react-direction@1.1.4/package.json +0 -60
  789. package/third-party/npm/@radix-ui__react-dismissable-layer@1.1.19/LICENSE +0 -21
  790. package/third-party/npm/@radix-ui__react-dismissable-layer@1.1.19/package.json +0 -74
  791. package/third-party/npm/@radix-ui__react-focus-guards@1.1.6/LICENSE +0 -21
  792. package/third-party/npm/@radix-ui__react-focus-guards@1.1.6/package.json +0 -60
  793. package/third-party/npm/@radix-ui__react-focus-scope@1.1.16/LICENSE +0 -21
  794. package/third-party/npm/@radix-ui__react-focus-scope@1.1.16/package.json +0 -71
  795. package/third-party/npm/@radix-ui__react-id@1.1.4/LICENSE +0 -21
  796. package/third-party/npm/@radix-ui__react-id@1.1.4/package.json +0 -63
  797. package/third-party/npm/@radix-ui__react-menu@2.1.24/LICENSE +0 -21
  798. package/third-party/npm/@radix-ui__react-menu@2.1.24/package.json +0 -86
  799. package/third-party/npm/@radix-ui__react-popper@1.3.7/LICENSE +0 -21
  800. package/third-party/npm/@radix-ui__react-popper@1.3.7/package.json +0 -78
  801. package/third-party/npm/@radix-ui__react-portal@1.1.17/LICENSE +0 -21
  802. package/third-party/npm/@radix-ui__react-portal@1.1.17/package.json +0 -69
  803. package/third-party/npm/@radix-ui__react-presence@1.1.10/LICENSE +0 -21
  804. package/third-party/npm/@radix-ui__react-presence@1.1.10/package.json +0 -68
  805. package/third-party/npm/@radix-ui__react-primitive@2.1.10/LICENSE +0 -21
  806. package/third-party/npm/@radix-ui__react-primitive@2.1.10/package.json +0 -68
  807. package/third-party/npm/@radix-ui__react-roving-focus@1.1.19/LICENSE +0 -21
  808. package/third-party/npm/@radix-ui__react-roving-focus@1.1.19/package.json +0 -78
  809. package/third-party/npm/@radix-ui__react-slot@1.3.3/LICENSE +0 -21
  810. package/third-party/npm/@radix-ui__react-slot@1.3.3/package.json +0 -63
  811. package/third-party/npm/@radix-ui__react-use-callback-ref@1.1.4/LICENSE +0 -21
  812. package/third-party/npm/@radix-ui__react-use-callback-ref@1.1.4/package.json +0 -60
  813. package/third-party/npm/@radix-ui__react-use-controllable-state@1.2.6/LICENSE +0 -21
  814. package/third-party/npm/@radix-ui__react-use-controllable-state@1.2.6/package.json +0 -65
  815. package/third-party/npm/@radix-ui__react-use-effect-event@0.0.5/LICENSE +0 -21
  816. package/third-party/npm/@radix-ui__react-use-effect-event@0.0.5/package.json +0 -65
  817. package/third-party/npm/@radix-ui__react-use-is-hydrated@0.1.3/LICENSE +0 -21
  818. package/third-party/npm/@radix-ui__react-use-is-hydrated@0.1.3/package.json +0 -61
  819. package/third-party/npm/@radix-ui__react-use-layout-effect@1.1.4/LICENSE +0 -21
  820. package/third-party/npm/@radix-ui__react-use-layout-effect@1.1.4/package.json +0 -60
  821. package/third-party/npm/@radix-ui__react-use-size@1.1.4/LICENSE +0 -21
  822. package/third-party/npm/@radix-ui__react-use-size@1.1.4/package.json +0 -63
  823. package/third-party/npm/aria-hidden@1.2.6/LICENSE +0 -21
  824. package/third-party/npm/aria-hidden@1.2.6/package.json +0 -71
  825. package/third-party/npm/detect-node-es@1.1.0/LICENSE +0 -21
  826. package/third-party/npm/detect-node-es@1.1.0/package.json +0 -29
  827. package/third-party/npm/esbuild@0.27.4/LICENSE.md +0 -21
  828. package/third-party/npm/esbuild@0.27.4/package.json +0 -49
  829. package/third-party/npm/get-nonce@1.0.1/LICENSE +0 -21
  830. package/third-party/npm/get-nonce@1.0.1/package.json +0 -68
  831. package/third-party/npm/mediabunny@1.52.2/LICENSE +0 -373
  832. package/third-party/npm/mediabunny@1.52.2/package.json +0 -136
  833. package/third-party/npm/mediabunny@1.52.2/source/LICENSE +0 -373
  834. package/third-party/npm/mediabunny@1.52.2/source/package.json +0 -136
  835. package/third-party/npm/mediabunny@1.52.2/source/src/adts/adts-demuxer.ts +0 -400
  836. package/third-party/npm/mediabunny@1.52.2/source/src/adts/adts-muxer.ts +0 -124
  837. package/third-party/npm/mediabunny@1.52.2/source/src/adts/adts-reader.ts +0 -85
  838. package/third-party/npm/mediabunny@1.52.2/source/src/aes.ts +0 -307
  839. package/third-party/npm/mediabunny@1.52.2/source/src/codec-data.ts +0 -3178
  840. package/third-party/npm/mediabunny@1.52.2/source/src/codec.ts +0 -1154
  841. package/third-party/npm/mediabunny@1.52.2/source/src/conversion.ts +0 -2042
  842. package/third-party/npm/mediabunny@1.52.2/source/src/custom-coder.ts +0 -212
  843. package/third-party/npm/mediabunny@1.52.2/source/src/decode.ts +0 -263
  844. package/third-party/npm/mediabunny@1.52.2/source/src/demuxer.ts +0 -43
  845. package/third-party/npm/mediabunny@1.52.2/source/src/encode.ts +0 -1412
  846. package/third-party/npm/mediabunny@1.52.2/source/src/flac/flac-demuxer.ts +0 -813
  847. package/third-party/npm/mediabunny@1.52.2/source/src/flac/flac-misc.ts +0 -165
  848. package/third-party/npm/mediabunny@1.52.2/source/src/flac/flac-muxer.ts +0 -350
  849. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-demuxer.ts +0 -995
  850. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-misc.ts +0 -81
  851. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-muxer.ts +0 -1529
  852. package/third-party/npm/mediabunny@1.52.2/source/src/hls/hls-segmented-input.ts +0 -772
  853. package/third-party/npm/mediabunny@1.52.2/source/src/id3.ts +0 -972
  854. package/third-party/npm/mediabunny@1.52.2/source/src/index.ts +0 -319
  855. package/third-party/npm/mediabunny@1.52.2/source/src/input-format.ts +0 -819
  856. package/third-party/npm/mediabunny@1.52.2/source/src/input-track.ts +0 -1141
  857. package/third-party/npm/mediabunny@1.52.2/source/src/input.ts +0 -571
  858. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-boxes.ts +0 -1911
  859. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-demuxer.ts +0 -3953
  860. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-misc.ts +0 -90
  861. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-muxer.ts +0 -1595
  862. package/third-party/npm/mediabunny@1.52.2/source/src/isobmff/isobmff-reader.ts +0 -91
  863. package/third-party/npm/mediabunny@1.52.2/source/src/logging.ts +0 -120
  864. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/ebml.ts +0 -770
  865. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/matroska-demuxer.ts +0 -2598
  866. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/matroska-misc.ts +0 -29
  867. package/third-party/npm/mediabunny@1.52.2/source/src/matroska/matroska-muxer.ts +0 -1360
  868. package/third-party/npm/mediabunny@1.52.2/source/src/media-sink.ts +0 -2589
  869. package/third-party/npm/mediabunny@1.52.2/source/src/media-source.ts +0 -3041
  870. package/third-party/npm/mediabunny@1.52.2/source/src/metadata.ts +0 -335
  871. package/third-party/npm/mediabunny@1.52.2/source/src/misc.ts +0 -1336
  872. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-demuxer.ts +0 -469
  873. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-muxer.ts +0 -169
  874. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-reader.ts +0 -61
  875. package/third-party/npm/mediabunny@1.52.2/source/src/mp3/mp3-writer.ts +0 -121
  876. package/third-party/npm/mediabunny@1.52.2/source/src/mpeg-ts/mpeg-ts-demuxer.ts +0 -2519
  877. package/third-party/npm/mediabunny@1.52.2/source/src/mpeg-ts/mpeg-ts-misc.ts +0 -32
  878. package/third-party/npm/mediabunny@1.52.2/source/src/mpeg-ts/mpeg-ts-muxer.ts +0 -842
  879. package/third-party/npm/mediabunny@1.52.2/source/src/muxer.ts +0 -80
  880. package/third-party/npm/mediabunny@1.52.2/source/src/node.ts +0 -11
  881. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-demuxer.ts +0 -1087
  882. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-misc.ts +0 -116
  883. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-muxer.ts +0 -527
  884. package/third-party/npm/mediabunny@1.52.2/source/src/ogg/ogg-reader.ts +0 -93
  885. package/third-party/npm/mediabunny@1.52.2/source/src/output-format.ts +0 -1425
  886. package/third-party/npm/mediabunny@1.52.2/source/src/output.ts +0 -940
  887. package/third-party/npm/mediabunny@1.52.2/source/src/packet.ts +0 -287
  888. package/third-party/npm/mediabunny@1.52.2/source/src/pcm.ts +0 -112
  889. package/third-party/npm/mediabunny@1.52.2/source/src/reader.ts +0 -391
  890. package/third-party/npm/mediabunny@1.52.2/source/src/resample.ts +0 -287
  891. package/third-party/npm/mediabunny@1.52.2/source/src/sample.ts +0 -3231
  892. package/third-party/npm/mediabunny@1.52.2/source/src/segmented-input.ts +0 -575
  893. package/third-party/npm/mediabunny@1.52.2/source/src/source.ts +0 -2588
  894. package/third-party/npm/mediabunny@1.52.2/source/src/subtitles.ts +0 -131
  895. package/third-party/npm/mediabunny@1.52.2/source/src/target.ts +0 -871
  896. package/third-party/npm/mediabunny@1.52.2/source/src/tsconfig.json +0 -16
  897. package/third-party/npm/mediabunny@1.52.2/source/src/wave/riff-writer.ts +0 -36
  898. package/third-party/npm/mediabunny@1.52.2/source/src/wave/wave-demuxer.ts +0 -583
  899. package/third-party/npm/mediabunny@1.52.2/source/src/wave/wave-muxer.ts +0 -375
  900. package/third-party/npm/mediabunny@1.52.2/source/src/writer.ts +0 -128
  901. package/third-party/npm/react-dom@19.3.0/LICENSE +0 -21
  902. package/third-party/npm/react-dom@19.3.0/package.json +0 -117
  903. package/third-party/npm/react-remove-scroll-bar@2.3.8/package.json +0 -85
  904. package/third-party/npm/react-remove-scroll-bar@2.3.8/react-remove-scroll-bar-LICENSE +0 -21
  905. package/third-party/npm/react-remove-scroll@2.7.2/LICENSE +0 -21
  906. package/third-party/npm/react-remove-scroll@2.7.2/package.json +0 -98
  907. package/third-party/npm/react-style-singleton@2.2.3/LICENSE +0 -21
  908. package/third-party/npm/react-style-singleton@2.2.3/package.json +0 -90
  909. package/third-party/npm/react@19.3.0/LICENSE +0 -21
  910. package/third-party/npm/react@19.3.0/package.json +0 -51
  911. package/third-party/npm/scheduler@0.28.0/LICENSE +0 -21
  912. package/third-party/npm/scheduler@0.28.0/package.json +0 -27
  913. package/third-party/npm/tslib@2.8.1/LICENSE.txt +0 -12
  914. package/third-party/npm/tslib@2.8.1/package.json +0 -47
  915. package/third-party/npm/typescript@5.9.3/LICENSE.txt +0 -55
  916. package/third-party/npm/typescript@5.9.3/ThirdPartyNoticeText.txt +0 -193
  917. package/third-party/npm/typescript@5.9.3/package.json +0 -120
  918. package/third-party/npm/use-callback-ref@1.3.3/LICENSE +0 -21
  919. package/third-party/npm/use-callback-ref@1.3.3/package.json +0 -85
  920. package/third-party/npm/use-sidecar@1.1.3/LICENSE +0 -21
  921. package/third-party/npm/use-sidecar@1.1.3/package.json +0 -93
  922. package/third-party/packages/render-engine/assets/OFL.txt +0 -93
  923. package/third-party/packages/studio/public/fonts/OFL.txt +0 -93
  924. package/third-party/packages/studio/vendor/osmo-icons/LICENSE +0 -21
  925. package/third-party/packages/studio/vendor/shadcn/LICENSE +0 -21
  926. package/third-party/repository-notices.md +0 -41
  927. package/third-party/rust-standard-library/COPYRIGHT-library.html +0 -5556
  928. package/third-party/rust-standard-library/licenses/Apache-2.0.txt +0 -73
  929. package/third-party/rust-standard-library/licenses/BSD-2-Clause.txt +0 -9
  930. package/third-party/rust-standard-library/licenses/CC-BY-SA-4.0.txt +0 -427
  931. package/third-party/rust-standard-library/licenses/GCC-exception-3.1.txt +0 -30
  932. package/third-party/rust-standard-library/licenses/GPL-2.0-only.txt +0 -133
  933. package/third-party/rust-standard-library/licenses/GPL-3.0-or-later.txt +0 -202
  934. package/third-party/rust-standard-library/licenses/ISC.txt +0 -7
  935. package/third-party/rust-standard-library/licenses/LLVM-exception.txt +0 -15
  936. package/third-party/rust-standard-library/licenses/MIT.txt +0 -9
  937. package/third-party/rust-standard-library/licenses/NCSA.txt +0 -29
  938. package/third-party/rust-standard-library/licenses/OFL-1.1.txt +0 -43
  939. package/third-party/rust-standard-library/licenses/Unicode-3.0.txt +0 -39
  940. package/third-party/rust-standard-library/version.txt +0 -1
  941. package/vendor/osmo-lite +0 -0
  942. package/vendor/osmo-scene-0.1.0.tgz +0 -0
  943. package/vendor/platform.json +0 -1
@@ -1,919 +0,0 @@
1
- import { readMask, maskSourceIndex } from "./mask.mjs";
2
- import { clipFields, clipTiming, isClipPrimitive } from "./clip.mjs";
3
- import { readGroupLabel, readGroupPlayback, readSceneTracks, trackPlayback } from "./metadata.mjs";
4
- import { isKnobRef, isKnobSet, resolveKnob, evaluateKnobs, type KnobScope, type KnobDescription } from "./knobs.js";
5
- import { evaluateEffects, type EvaluatedEffect } from "./effects.js";
6
- import {
7
- Scene, Model, Surface,
8
- Camera,
9
- Group,
10
- Rect, Path,
11
- Text,
12
- Image,
13
- Video,
14
- Audio,
15
- Shader,
16
- type UniformValue,
17
- Fragment,
18
- type Child,
19
- type Color,
20
- type Element,
21
- type FrameContext,
22
- type Vec2,
23
- type TextPath,
24
- type Vec3,
25
- } from "./elements.js";
26
- import { isMotion, sampleMotion } from "./motion.js";
27
-
28
- export interface Transform {
29
- position: Vec2;
30
- z: number;
31
- rotation: number;
32
- scale: Vec2;
33
- origin: Vec2;
34
- opacity: number;
35
- }
36
- interface BaseNode {
37
- track?: number;
38
- effects?: EvaluatedEffect[];
39
- transform: Transform;
40
- key?: string | number;
41
- }
42
- export interface CompositionNode extends BaseNode {
43
- type: "composition";
44
- width: number;
45
- height: number;
46
- scene: EvaluatedScene;
47
- }
48
- export interface GroupNode extends BaseNode {
49
- mask?: { index: number; mode: "alpha" | "vector" | "luminance"; invert: boolean };
50
- controls?: KnobDescription;
51
- depth?: number;
52
- sideFill?: Color;
53
- type: "group";
54
- children: SceneNode[];
55
- width?: number | "auto" | "fill";
56
- height?: number | "auto" | "fill";
57
- layout?: "free" | "row" | "column";
58
- gap?: number;
59
- padding?: readonly number[];
60
- align?: string;
61
- justify?: string;
62
- fill?: Color;
63
- stroke?: { color: Color; width: number };
64
- rounding?: number;
65
- shape?: "box" | "ellipse";
66
- clip?: boolean;
67
- /** True only for an authored `clip`: effects are bounded to the shape as well. */
68
- clipEffects?: boolean;
69
- }
70
- export interface RectNode extends BaseNode {
71
- type: "rect";
72
- width: number;
73
- height: number;
74
- fill: Color;
75
- radius: number;
76
- }
77
- export interface PathNode extends BaseNode {
78
- width?: number;
79
- height?: number;
80
- viewBox?: readonly [number, number, number, number];
81
- fit?: "contain" | "fill";
82
- type: "path";
83
- d: string;
84
- fill: Color;
85
- fillRule: "nonzero" | "evenodd";
86
- stroke?: { color: Color; width: number; cap: "butt" | "round" | "square"; join: "miter" | "round" | "bevel"; miterLimit: number; trimStart: number; trimEnd: number };
87
- }
88
- export interface TextNode extends BaseNode {
89
- height?: number;
90
- verticalAlign?: "top" | "center" | "bottom";
91
- alignBounds?: "lineBox" | "glyphs";
92
- path?: TextPath;
93
- type: "text";
94
- text: string;
95
- font: string;
96
- fontSource?: string;
97
- fontSize: number;
98
- fontWeight?: number;
99
- color: Color;
100
- width?: number;
101
- align: "left" | "center" | "right";
102
- lineHeight: number;
103
- letterSpacing: number;
104
- }
105
- export interface MediaNode extends BaseNode {
106
- type: "image" | "video" | "audio";
107
- src: string;
108
- sourceFile?: string;
109
- width?: number;
110
- height?: number;
111
- fit?: "cover" | "contain" | "fill";
112
- rounding?: number;
113
- start?: number;
114
- duration?: number;
115
- trimIn?: number;
116
- playbackRate?: number;
117
- volume?: number;
118
- }
119
- export interface ShaderNode extends BaseNode {
120
- type: "shader";
121
- src: string;
122
- backdrop: boolean | "replace";
123
- sourceFile?: string;
124
- width: number;
125
- height: number;
126
- rounding: number;
127
- uniforms: Record<string, UniformValue>;
128
- }
129
- export interface ModelNode extends BaseNode {
130
- type: "model"; src: string; sourceFile?: string; height: number;
131
- rotation3d: Vec3; animations: Record<string, number>; children: SurfaceNode[];
132
- }
133
- export interface SurfaceNode extends BaseNode {
134
- type: "surface"; key?: string | number; nodes?: (string | number)[];
135
- material?: string | number; primitive?: number; slot: "baseColor";
136
- width?: number; height?: number; shading?: "lit" | "unlit";
137
- color?: Color; metalness?: number; roughness?: number;
138
- effects?: EvaluatedEffect[]; children: SceneNode[];
139
- }
140
- export type SceneNode = CompositionNode | GroupNode | RectNode | PathNode | TextNode | MediaNode | ShaderNode | ModelNode | SurfaceNode;
141
- export interface EvaluatedCamera {
142
- position: Vec2;
143
- z: number;
144
- target: Vec3;
145
- fov: number;
146
- }
147
- export interface EvaluatedScene extends FrameContext {
148
- effects?: EvaluatedEffect[];
149
- camera?: EvaluatedCamera;
150
- type: "scene";
151
- totalFrames: number;
152
- background: Color;
153
- children: SceneNode[];
154
- }
155
-
156
- function number(value: unknown, label: string, minimum = -Infinity): number {
157
- if (typeof value !== "number" || !Number.isFinite(value) || value < minimum) {
158
- throw new Error(`${label}: expected a finite number >= ${minimum}`);
159
- }
160
- return value;
161
- }
162
- function positive(value: unknown, label: string): number {
163
- const n = number(value, label, 0);
164
- if (n === 0) throw new Error(`${label}: must be greater than zero`);
165
- return n;
166
- }
167
- function pair(value: unknown, label: string): Vec2 {
168
- if (!Array.isArray(value) || value.length !== 2)
169
- throw new Error(`${label}: expected [x, y]`);
170
- return [number(value[0], label), number(value[1], label)];
171
- }
172
- function color(value: unknown, label: string): Color {
173
- if (
174
- typeof value !== "string" ||
175
- (value !== "transparent" && !/^#(?:[\da-f]{6}|[\da-f]{8})$/i.test(value))
176
- ) {
177
- throw new Error(`${label}: expected #RRGGBB, #RRGGBBAA or transparent`);
178
- }
179
- return value as Color;
180
- }
181
- function transform(props: Readonly<Record<string, unknown>>): Transform {
182
- const scale = props.scale ?? 1;
183
- const opacity = number(props.opacity ?? 1, "opacity", 0);
184
- if (opacity > 1) throw new Error("opacity: must be <= 1");
185
- return {
186
- position: pair(props.position ?? [0, 0], "position"),
187
- z: number(props.z ?? 0, "z"),
188
- rotation: number(props.rotation ?? 0, "rotation"),
189
- scale:
190
- typeof scale === "number"
191
- ? [number(scale, "scale"), scale]
192
- : pair(scale, "scale"),
193
- origin: pair(props.origin ?? [0, 0], "origin"),
194
- opacity,
195
- };
196
- }
197
- function resolve(value: unknown, time: number, scope: KnobScope = []): unknown {
198
- if (isKnobRef(value)) return resolveKnob(value, scope);
199
- if (isKnobSet(value)) return value;
200
- if (isMotion(value)) return sampleMotion(value, time);
201
- if (Array.isArray(value)) return value.map((v) => resolve(v, time, scope));
202
- if (
203
- value &&
204
- typeof value === "object" &&
205
- !isElement(value) &&
206
- Object.getPrototypeOf(value) === Object.prototype
207
- )
208
- return Object.fromEntries(
209
- Object.entries(value).map(([k, v]) => [k, resolve(v, time, scope)]),
210
- );
211
- return value;
212
- }
213
- function isElement(value: unknown): value is Element {
214
- return (
215
- typeof value === "object" &&
216
- value !== null &&
217
- "type" in value &&
218
- "props" in value
219
- );
220
- }
221
-
222
- /** Evaluate at an exact frame. Produces host-independent data; does not draw pixels. */
223
- export function evaluateFrame(root: Element, frame: number): EvaluatedScene {
224
- return evaluateScene(root, frame);
225
- }
226
- function evaluateScene(root: Element, frame: number, clock?: Partial<ClockContext>, depth = 0): EvaluatedScene {
227
- if (depth > 32) throw new Error("Scene nesting exceeds 32 levels");
228
- if (!isElement(root) || (root.type !== Scene && root.type !== "scene")) {
229
- throw new Error(
230
- "The root must be <Scene>; put custom components inside it",
231
- );
232
- }
233
- const p = root.props;
234
- checkProps(
235
- p,
236
- "Scene",
237
- ["width", "height", "duration", "fps", "background", "children", "effects", "tracks"],
238
- false,
239
- );
240
- const tracks = readSceneTracks(p.tracks);
241
- const width = positive(p.width, "Scene.width");
242
- const height = positive(p.height, "Scene.height");
243
- if (![width,height].every(v=>Number.isInteger(v)&&v<=8192)) throw new Error("Scene dimensions must be whole pixels, at most 8192 per side");
244
- const duration = positive(p.duration, "Scene.duration");
245
- const fps = positive(p.fps ?? 30, "Scene.fps");
246
- const totalFrames = Math.ceil(duration * fps);
247
- if (!Number.isSafeInteger(totalFrames) || totalFrames < 1)
248
- throw new Error("Scene frame count is out of range");
249
- if (!clock && (!Number.isSafeInteger(frame) || frame < 0 || frame >= totalFrames)) {
250
- throw new Error(`Frame must be an integer in [0, ${totalFrames - 1}]`);
251
- }
252
- const context: ClockContext = Object.freeze({
253
- frame,
254
- time: frame / fps,
255
- fps,
256
- width,
257
- height,
258
- duration,
259
- ...clock,
260
- });
261
- let camera: EvaluatedCamera | undefined;
262
- const children: unknown[] = [];
263
- function collect(child: unknown, depth = 0): void {
264
- if (depth > 256) throw new Error("Scene nesting exceeds 256 levels");
265
- if (Array.isArray(child)) {
266
- for (const item of child) collect(item, depth + 1);
267
- } else if (
268
- isElement(child) && (child.type === Camera || child.type === "camera")
269
- ) {
270
- if (camera) throw new Error("Scene accepts only one Camera");
271
- camera = evaluateCamera(
272
- resolve(child.props, context.time) as Record<string, unknown>, context,
273
- );
274
- } else {
275
- children.push(child);
276
- }
277
- }
278
- collect(p.children);
279
- const evaluatedChildren = isolateGroups(visit(children, context, depth));
280
- function checkPlacement(nodes: SceneNode[], parent: string) {
281
- for (const n of nodes) {
282
- if (n.track !== undefined && parent !== "scene") throw new Error(`${n.type}.track is only supported on root timeline clips`);
283
- if (n.type === "model" && parent !== "scene") throw new Error("Model must be a direct child of Scene");
284
- if (n.type === "surface" && parent !== "model") throw new Error("Surface must be a direct child of Model");
285
- if ("children" in n) checkPlacement(n.children, n.type);
286
- }
287
- }
288
- checkPlacement(evaluatedChildren, "scene");
289
- // Keep topology and local clocks stable while applying lane playback controls.
290
- for (const node of evaluatedChildren) {
291
- const state = trackPlayback(tracks, node.track);
292
- if (!state.visible) node.transform.opacity = 0;
293
- if (!state.audible) silence(node);
294
- }
295
- return {
296
- type: "scene",
297
- ...(camera ? { camera } : {}),
298
- ...context,
299
- totalFrames,
300
- background: color(p.background ?? "transparent", "Scene.background"),
301
- ...(p.effects === undefined ? {} : { effects: evaluateEffects(p.effects, context.time, root.sourceFile) }),
302
- children: evaluatedChildren,
303
- };
304
- }
305
-
306
- function evaluateCamera(
307
- props: Record<string, unknown>,
308
- context: FrameContext,
309
- ): EvaluatedCamera {
310
- checkProps(props, "Camera", ["position", "z", "target", "fov"], false);
311
- const position = pair(
312
- props.position ?? [context.width / 2, context.height / 2], "Camera.position",
313
- );
314
- const z = number(props.z ?? 2000, "Camera.z");
315
- const t = props.target ?? [context.width / 2, context.height / 2, 0];
316
- if (!Array.isArray(t) || t.length !== 3)
317
- throw new Error("Camera.target: expected [x, y, z]");
318
- const target: Vec3 = [
319
- number(t[0], "Camera.target"), number(t[1], "Camera.target"), number(t[2], "Camera.target"),
320
- ];
321
- if (Math.hypot(position[0] - target[0], position[1] - target[1], z - target[2]) < 0.0001) {
322
- throw new Error("Camera.position and z must differ from target");
323
- }
324
- const fov = positive(
325
- props.fov ?? 2 * Math.atan(context.height / 4000) * 180 / Math.PI, "Camera.fov",
326
- );
327
- if (fov >= 180) throw new Error("Camera.fov must be less than 180 degrees");
328
- return { position, z, target, fov };
329
- }
330
-
331
- interface ClockContext extends FrameContext { offset?: number; windowStart?: number; windowEnd?: number; }
332
-
333
- // Evaluation-only state: do not serialize editor controls into render snapshots.
334
- const soloGroups = new WeakSet<SceneNode>();
335
- function silence(node: SceneNode) {
336
- if (node.type === 'audio' || node.type === 'video') node.volume = 0;
337
- if ('children' in node) node.children.forEach(silence);
338
- if (node.type === 'composition') node.scene.children.forEach(silence);
339
- }
340
- function isolateGroups(nodes: SceneNode[]): SceneNode[] {
341
- if (nodes.some(node => soloGroups.has(node)))
342
- for (const node of nodes) if (!soloGroups.has(node)) {
343
- node.transform.opacity = 0;
344
- silence(node);
345
- }
346
- return nodes;
347
- }
348
-
349
- // Flatten only structural fragments: indices continue to match the editor's
350
- // evaluated children and selection paths, including the mask source itself.
351
- function maskChildren(child: unknown): Element[] {
352
- if (child == null || typeof child === "boolean") return [];
353
- if (Array.isArray(child)) return child.flatMap(maskChildren);
354
- if (!isElement(child)) throw new Error("Group children must be elements");
355
- if (child.type === Fragment || child.type === "fragment") return maskChildren(child.props.children);
356
- return [child];
357
- }
358
- function vectorMask(child: Element): Element {
359
- const p = {...child.props, opacity: 1, effects: undefined};
360
- const type = child.type;
361
- if (type === Group || type === "group") {
362
- const children = maskChildren(child.props.children);
363
- Object.assign(p, {children:children.map(vectorMask), depth:0, sideFill:undefined,
364
- fill:child.props.fill !== undefined || !children.length ? "#ffffff" : "transparent", stroke:undefined});
365
- } else if (type === Path || type === "path" || type === Rect || type === "rect") {
366
- Object.assign(p, {fill:"#ffffff", stroke:undefined});
367
- } else if (type === Text || type === "text") Object.assign(p, {color:"#ffffff"});
368
- else throw new Error("Vector masks require Group, Path, Rect, or Text outlines; use alpha or luminance for media, shaders, and scenes");
369
- return {...child, props:p};
370
- }
371
-
372
- function visit(
373
- child: unknown,
374
- context: ClockContext,
375
- depth: number,
376
- scope: KnobScope = [],
377
- ): SceneNode[] {
378
- if (depth > 256)
379
- throw new Error(
380
- "Scene nesting exceeds 256 levels; check for recursive components",
381
- );
382
- if (child === null || child === undefined || typeof child === "boolean")
383
- return [];
384
- if (Array.isArray(child))
385
- return child.flatMap((c) => visit(c, context, depth + 1, scope));
386
- if (!isElement(child))
387
- throw new Error(
388
- "Scene children must be components; put text inside <Text>",
389
- );
390
- const builtins = new Map<unknown, string>([
391
- [Group, "group"], [Model, "model"], [Surface, "surface"],
392
- [Rect, "rect"], [Path, "path"],
393
- [Text, "text"],
394
- [Image, "image"],
395
- [Video, "video"],
396
- [Audio, "audio"],
397
- [Shader, "shader"],
398
- [Fragment, "fragment"],
399
- [Scene, "scene"],
400
- [Camera, "camera"],
401
- ]);
402
- const type = builtins.get(child.type) ?? child.type;
403
- if (type === 'composition') {
404
- const source = child.props.scene as Element;
405
- const timing = clipTiming(child.props, context.duration, context.fps, 'Scene instance');
406
- const localTime = Math.max(0,Math.min(timing.duration-1e-9,context.time-timing.start));
407
- const p = Object.fromEntries(Object.entries(child.props).filter(([k])=>k!=='scene').map(([k,v])=>[k,k==='effects'?v:resolve(v,localTime,scope)]));
408
- const trim = number(p.trimIn ?? 0, 'Scene instance.trimIn', 0);
409
- const sourceDuration = positive(source.props.duration, 'Scene.duration');
410
- if (trim >= sourceDuration) throw new Error('Scene instance.trimIn must be before the source end');
411
- const offset = (context.offset ?? 0) + timing.start - trim;
412
- const start = Math.max(context.windowStart ?? 0, offset + trim);
413
- const end = Math.min(context.windowEnd ?? Infinity, offset + Math.min(sourceDuration, trim + timing.duration));
414
- const time = Math.max(0, Math.min(sourceDuration - 1e-9, context.time - timing.start + trim));
415
- // An instance can resize its viewport without scaling its contents or
416
- // mutating the shared source. Layout and default camera framing resolve
417
- // against these dimensions through the ordinary scene evaluator.
418
- const dimension = (name: 'width' | 'height') => {
419
- if (p[name] === undefined) return source.props[name];
420
- const value = positive(p[name], `Scene instance.${name}`);
421
- if (value < 1 || value > 8192) throw new Error('Scene instance dimensions must be 1..8192 pixels per side');
422
- return Math.round(value);
423
- };
424
- const viewport = {...source,props:{...source.props,width:dimension('width'),height:dimension('height')}};
425
- const scene = evaluateScene(viewport, 0, {time, frame:time*context.fps, fps:context.fps, offset, windowStart:start, windowEnd:end}, depth+1);
426
- const active = context.time >= timing.start && context.time < timing.start + Math.min(timing.duration, sourceDuration-trim);
427
- readGroupLabel(p.label); readGroupPlayback(p);
428
- const node: CompositionNode = {type:'composition',width:scene.width,height:scene.height,scene,
429
- ...(timing.track === undefined ? {} : {track:timing.track}),
430
- transform:transform({...p,opacity:active && !p.hidden ? p.opacity : 0}),
431
- ...(p.effects === undefined ? {} : {effects:evaluateEffects(p.effects,localTime,child.sourceFile)})};
432
- if (p.solo) soloGroups.add(node);
433
- return [node];
434
- }
435
- const parentContext = context;
436
- const timing = typeof type === "string" && isClipPrimitive(type)
437
- ? clipTiming(child.props, context.duration, context.fps, type) : null;
438
- const localClock = timing && (child.props.start !== undefined || child.props.duration !== undefined || child.props.track !== undefined);
439
- let active = true;
440
- if (localClock) {
441
- const { start, duration } = timing;
442
- active = context.time >= start && context.time < start + duration;
443
- const offset = (context.offset ?? 0) + start;
444
- const time = Math.max(0, Math.min(duration - 1e-9, context.time - start));
445
- context = { ...context, time, frame: Math.floor(time * context.fps), duration, offset,
446
- windowStart: Math.max(context.windowStart ?? 0, offset),
447
- windowEnd: Math.min(context.windowEnd ?? Infinity, offset + duration) };
448
- }
449
- let controls: KnobDescription | undefined;
450
- if (type === "group") {
451
- readGroupLabel(child.props.label);
452
- readGroupPlayback(child.props);
453
- if (child.props.knobs !== undefined) {
454
- if (!isKnobSet(child.props.knobs)) throw new Error("Group.knobs must be a defineKnobs declaration");
455
- controls = evaluateKnobs(child.props.knobs, child.props.values, context.time, scope);
456
- scope = [...scope, { set: child.props.knobs, description: controls }];
457
- } else if (child.props.values !== undefined) throw new Error("Group.values requires Group.knobs");
458
- }
459
- const props = Object.fromEntries(Object.entries(child.props).map(([name, value]) => [name,
460
- (name === "children" && !isKnobRef(value)) || name === "effects" || (type === "group" && (name === "knobs" || name === "values"))
461
- ? value : resolve(value, context.time, scope),
462
- ]));
463
- if (typeof type === "function") {
464
- const result: Child = type(Object.freeze(props), context);
465
- const nodes = visit(result, context, depth + 1, scope);
466
- // A keyed custom component owns a fragment scope, preserving its identity
467
- // independently of repeated child keys inside other component instances.
468
- if (child.key !== undefined)
469
- return [
470
- {
471
- type: "group",
472
- key: child.key,
473
- transform: transform({}),
474
- children: nodes,
475
- },
476
- ];
477
- return nodes;
478
- }
479
- if (type === "fragment") {
480
- const children = visit(props.children, context, depth + 1, scope);
481
- return child.key === undefined
482
- ? children
483
- : [{ type: "group", key: child.key, transform: transform({}), children }];
484
- }
485
- if (type === "scene") throw new Error("Scenes cannot be nested");
486
- if (type === "camera") throw new Error("Camera must be a direct child of Scene");
487
- if (type === "model") {
488
- checkProps(props, "Model", ["src","position","z","height","rotation","scale","opacity","animations","children"], false);
489
- if (typeof props.src !== "string" || !/\.glb$/i.test(props.src) || /^[a-z]+:/i.test(props.src)) throw new Error("Model.src: expected a local .glb path");
490
- const rot=props.rotation ?? [0,0,0];
491
- if (!Array.isArray(rot) || rot.length !== 3) throw new Error("Model.rotation: expected [x,y,z] degrees");
492
- const animations=props.animations ?? {};
493
- if (!animations || typeof animations !== "object" || Array.isArray(animations)) throw new Error("Model.animations: expected a map of clip names to progress");
494
- const tracks: Record<string,number> = {};
495
- for (const [name,v] of Object.entries(animations)) {
496
- if (!name.trim()) throw new Error("Model.animations: empty clip name");
497
- const progress=number(v,`Model.animations.${name}`,0);
498
- if(progress>1)throw new Error("Animation progress must be between 0 and 1");
499
- Object.defineProperty(tracks,name,{value:progress,enumerable:true});
500
- }
501
- const children=visit(props.children,context,depth+1,scope);
502
- if(children.some(n=>n.type!=="surface"))throw new Error("Model accepts Surface children only");
503
- return [{type:"model",src:props.src,...(child.sourceFile?{sourceFile:child.sourceFile}:{}),
504
- ...(child.key===undefined?{}:{key:child.key}),
505
- ...(timing?.track === undefined ? {} : {track: timing.track}),
506
- transform:transform({...props,opacity:active ? props.opacity : 0,position:props.position??[context.width/2,context.height/2],rotation:0,scale:positive(props.scale??1,"Model.scale")}),
507
- height:positive(props.height,"Model.height"),rotation3d:rot.map(v=>number(v,"Model.rotation")) as unknown as Vec3,
508
- animations:tracks,children:children as SurfaceNode[]}];
509
- }
510
- if (type === "surface") {
511
- checkProps(props,"Surface",["node","nodes","material","primitive","slot","width","height","shading","color","metalness","roughness","effects","children"],false);
512
- const selector=(v:unknown):string|number=>{
513
- if(typeof v==="string"&&v.trim())return v;
514
- if(typeof v==="number"&&Number.isSafeInteger(v)&&v>=0)return v;
515
- throw new Error("Surface selector must be a nonempty name or nonnegative index");
516
- };
517
- if(props.node!==undefined&&props.nodes!==undefined)throw new Error("Use Surface.node or Surface.nodes, not both");
518
- const targets=props.nodes??(props.node===undefined?undefined:[props.node]);
519
- if(targets!==undefined&&(!Array.isArray(targets)||!targets.length))throw new Error("Surface.nodes must be a nonempty list");
520
- if(targets===undefined&&props.material===undefined)throw new Error("Surface needs a node or material selector");
521
- const width=props.width===undefined?undefined:positive(props.width,"Surface.width");
522
- const height=props.height===undefined?undefined:positive(props.height,"Surface.height");
523
- const children=visit(props.children,width === undefined || height === undefined ? context : Object.freeze({...context,width,height}),depth+1,scope);
524
- if((width===undefined)!==(height===undefined)||children.length&&width===undefined)throw new Error("Surface content requires width and height");
525
- if(width!==undefined&&(width>4096||height!>4096))throw new Error("Surface canvas limit is 4096 per side");
526
- const unit=(v:unknown,label:string)=>{const n=number(v,label,0);if(n>1)throw new Error(`${label}: must be <= 1`);return n;};
527
- if(props.primitive!==undefined&&(!Number.isSafeInteger(props.primitive)||number(props.primitive,"Surface.primitive",0)<0))throw new Error("Surface.primitive must be an index");
528
- return [{type:"surface",transform:transform({}),...(child.key===undefined?{}:{key:child.key}),
529
- ...(targets===undefined?{}:{nodes:(targets as unknown[]).map(selector)}),
530
- ...(props.material===undefined?{}:{material:selector(props.material)}),
531
- ...(props.primitive===undefined?{}:{primitive:props.primitive as number}),
532
- slot:choice(props.slot??"baseColor",["baseColor"],"Surface.slot"),
533
- ...(width===undefined?{}:{width,height}),
534
- ...(props.shading===undefined?{}:{shading:choice(props.shading,["lit","unlit"],"Surface.shading")}),
535
- ...(props.color===undefined?{}:{color:color(props.color,"Surface.color")}),
536
- ...(props.metalness===undefined?{}:{metalness:unit(props.metalness,"Surface.metalness")}),
537
- ...(props.roughness===undefined?{}:{roughness:unit(props.roughness,"Surface.roughness")}),
538
- ...(props.effects===undefined?{}:{effects:evaluateEffects(props.effects,context.time,child.sourceFile)}),children}];
539
- }
540
- const base: BaseNode = {
541
- ...(props.effects === undefined ? {} : { effects: evaluateEffects(props.effects, context.time, child.sourceFile, v => isKnobRef(v) ? resolveKnob(v, scope) : v) }),
542
- transform: transform(active ? props : {...props, opacity: 0}),
543
- ...(timing?.track === undefined ? {} : {track: timing.track}),
544
- ...(child.key === undefined ? {} : { key: child.key }),
545
- };
546
- if (type === "group") {
547
- checkProps(props, "Group", [
548
- "knobs", "values", "start", "duration", "track", "label", "hidden", "solo",
549
- "depth",
550
- "sideFill",
551
- "children",
552
- "width",
553
- "height",
554
- "layout",
555
- "gap",
556
- "padding",
557
- "align",
558
- "justify",
559
- "fill",
560
- "stroke",
561
- "rounding",
562
- "shape",
563
- "clip", "mask",
564
- ]);
565
- const layout = choice(
566
- props.layout ?? "free",
567
- ["free", "row", "column"],
568
- "Group.layout",
569
- );
570
- const size = (v: unknown, label: string) =>
571
- v === undefined
572
- ? undefined
573
- : v === "fill" ? "fill" as const
574
- : v === "auto"
575
- ? layout === "free"
576
- ? fail(`${label}: auto requires row/column layout`)
577
- : ("auto" as const)
578
- : number(v, label, 0);
579
- const width = size(props.width, "Group.width"),
580
- height = size(props.height, "Group.height");
581
- const shape = choice(
582
- props.shape ?? "box",
583
- ["box", "ellipse"],
584
- "Group.shape",
585
- );
586
- const padding = props.padding ?? 0;
587
- const pads =
588
- typeof padding === "number"
589
- ? [padding, padding, padding, padding]
590
- : padding;
591
- if (!Array.isArray(pads) || pads.length !== 4)
592
- throw new Error(
593
- "Group.padding: expected a number or [top, right, bottom, left]",
594
- );
595
- const stroke = props.stroke;
596
- if (
597
- stroke !== undefined &&
598
- (!stroke || typeof stroke !== "object" || Array.isArray(stroke))
599
- )
600
- throw new Error("Group.stroke: expected { color, width }");
601
- const st = stroke as Record<string, unknown> | undefined;
602
- if (st && Object.keys(st).some((k) => k !== "color" && k !== "width"))
603
- throw new Error("Group.stroke: unsupported property");
604
- if (props.clip !== undefined && typeof props.clip !== "boolean")
605
- throw new Error("Group.clip: expected boolean");
606
- const mask = readMask(props.mask);
607
- const sources = mask ? maskChildren(props.children) : null;
608
- const sourceIndex = mask ? maskSourceIndex(sources!, mask) : -1;
609
- const children: SceneNode[] = [];
610
- let maskIndex = -1;
611
- if (sources) for (const [i, source] of sources.entries()) {
612
- const isMask = i === sourceIndex;
613
- const evaluated = visit(isMask && mask!.mode === "vector" ? vectorMask(source) : source, context, depth + 1, scope);
614
- if (isMask) {
615
- if (evaluated.length !== 1 || evaluated[0].type === "audio") throw new Error("Group.mask: source must be a visual layer");
616
- maskIndex = children.length;
617
- // A matte controls visibility only; video/audio descendants are silent.
618
- silence(evaluated[0]);
619
- }
620
- children.push(...evaluated);
621
- }
622
- const node: GroupNode = {
623
- type: "group",
624
- ...base,
625
- ...(controls ? { controls } : {}),
626
- ...(width === undefined ? {} : { width }),
627
- ...(height === undefined ? {} : { height }),
628
- layout,
629
- shape,
630
- gap: number(props.gap ?? 0, "Group.gap", 0),
631
- padding: pads.map((v) => number(v, "Group.padding", 0)),
632
- align: choice(
633
- props.align ?? "start",
634
- ["start", "center", "end", "stretch"],
635
- "Group.align",
636
- ),
637
- justify: choice(
638
- props.justify ?? "start",
639
- ["start", "center", "end", "spaceBetween", "spaceAround"],
640
- "Group.justify",
641
- ),
642
- fill: color(props.fill ?? "transparent", "Group.fill"),
643
- depth: number(props.depth ?? 0, "Group.depth", 0),
644
- sideFill: color(props.sideFill ?? props.fill ?? "transparent", "Group.sideFill"),
645
- ...(st
646
- ? {
647
- stroke: {
648
- color: color(st.color, "Group.stroke.color"),
649
- width: number(st.width, "Group.stroke.width", 0),
650
- },
651
- }
652
- : {}),
653
- rounding: number(props.rounding ?? 0, "Group.rounding", 0),
654
- clip: props.clip !== false,
655
- ...(props.clip === true ? { clipEffects: true } : {}),
656
- children: isolateGroups(sources ? children : visit(props.children, context, depth + 1, scope)),
657
- ...(mask ? {mask:{index:maskIndex,mode:mask.mode,invert:mask.invert}} : {}),
658
- };
659
- if (props.hidden) node.transform.opacity = 0;
660
- if (props.solo) soloGroups.add(node);
661
- return [node];
662
- }
663
- if (type === "shader") {
664
- checkProps(props, "Shader", ["src", "backdrop", "width", "height", "rounding", "uniforms"]);
665
- if (props.backdrop !== undefined && typeof props.backdrop !== "boolean" && props.backdrop !== "replace")
666
- throw new Error('Shader.backdrop: expected a boolean or "replace"');
667
- if (typeof props.src !== "string" || !props.src.trim() || /^[a-z]+:/i.test(props.src) || !/\.wgsl$/i.test(props.src))
668
- throw new Error("Shader.src: expected a local .wgsl file path");
669
- const inputs = props.uniforms ?? {};
670
- if (!inputs || typeof inputs !== "object" || Array.isArray(inputs))
671
- throw new Error("Shader.uniforms: expected named numbers or vectors");
672
- if (Object.keys(inputs).length > 32) throw new Error("Shader.uniforms: maximum 32 fields");
673
- const uniforms: Record<string, UniformValue> = {};
674
- for (const [name, value] of Object.entries(inputs)) {
675
- if (!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(name)) throw new Error(`Shader.uniforms: invalid name "${name}"`);
676
- const values = Array.isArray(value) ? value : [value];
677
- if (Array.isArray(value) && (value.length < 2 || value.length > 4))
678
- throw new Error(`Shader.uniforms.${name}: expected a number or vector of 2–4 numbers`);
679
- for (const v of values) {
680
- number(v, `Shader.uniforms.${name}`);
681
- if (!Number.isFinite(Math.fround(v))) throw new Error(`Shader.uniforms.${name}: exceeds f32 range`);
682
- }
683
- Object.defineProperty(uniforms, name, { value, enumerable: true });
684
- }
685
- return [{ type: "shader", ...base, src: props.src, backdrop: props.backdrop ?? false,
686
- ...(child.sourceFile ? { sourceFile: child.sourceFile } : {}),
687
- width: positive(props.width, "Shader.width"), height: positive(props.height, "Shader.height"),
688
- rounding: number(props.rounding ?? 0, "Shader.rounding", 0), uniforms }];
689
- }
690
- if (type === "image" || type === "video" || type === "audio") {
691
- const visual = type !== "audio",
692
- timed = type !== "image";
693
- checkProps(
694
- props,
695
- type,
696
- [
697
- "src",
698
- ...(visual ? ["width", "height", "fit", "rounding"] : []),
699
- ...(timed
700
- ? ["start", "duration", "trimIn", "playbackRate", "volume"]
701
- : []),
702
- ],
703
- visual,
704
- );
705
- if (
706
- typeof props.src !== "string" ||
707
- !props.src.trim() ||
708
- /^[a-z]+:/i.test(props.src)
709
- )
710
- throw new Error(`${type}.src: expected a local file path`);
711
- const node: MediaNode = {
712
- type,
713
- ...base,
714
- src: props.src,
715
- ...(child.sourceFile ? { sourceFile: child.sourceFile } : {}),
716
- };
717
- if (visual)
718
- Object.assign(node, {
719
- width: positive(props.width, `${type}.width`),
720
- height: positive(props.height, `${type}.height`),
721
- fit: choice(
722
- props.fit ?? "cover",
723
- ["cover", "contain", "fill"],
724
- `${type}.fit`,
725
- ),
726
- rounding: number(props.rounding ?? 0, `${type}.rounding`, 0),
727
- });
728
- if (timed) {
729
- const localStart = number(props.start ?? 0, `${type}.start`, 0);
730
- const authoredStart = (parentContext.offset ?? 0) + localStart;
731
- const start = Math.max(authoredStart, parentContext.windowStart ?? 0);
732
- const authoredDuration = positive(props.duration ?? Math.max(parentContext.duration - localStart, 1 / context.fps), `${type}.duration`);
733
- const end = Math.min(authoredStart + authoredDuration, parentContext.windowEnd ?? Infinity);
734
- const volume = number(props.volume ?? 1, `${type}.volume`, 0);
735
- if (volume > 1) throw new Error(`${type}.volume: must be <= 1`);
736
- const rate = positive(props.playbackRate ?? 1, `${type}.playbackRate`);
737
- if (rate < 0.25 || rate > 4)
738
- throw new Error(`${type}.playbackRate: expected 0.25 through 4`);
739
- Object.assign(node, {
740
- start,
741
- duration: Math.max(1 / context.fps, end - start),
742
- trimIn: number(props.trimIn ?? 0, `${type}.trimIn`, 0) + (start - authoredStart) * rate,
743
- playbackRate: rate,
744
- volume: end > start ? volume : 0,
745
- });
746
- }
747
- return [node];
748
- }
749
- if (type === "path") {
750
- checkProps(props, "Path", ["width", "height", "viewBox", "fit", "d", "fill", "fillRule", "stroke"]);
751
- if (typeof props.d !== "string" || !props.d.trim() || props.d.length > 65536)
752
- throw new Error("Path.d: expected nonempty SVG path data, at most 64 KiB");
753
- let stroke: PathNode["stroke"];
754
- if (props.stroke !== undefined) {
755
- const st = props.stroke as Record<string, unknown>;
756
- if (!st || typeof st !== "object" || Array.isArray(st) || Object.keys(st).some(k => !["color", "width", "cap", "join", "miterLimit", "trimStart", "trimEnd"].includes(k)))
757
- throw new Error("Path.stroke: expected color, width and optional cap/join/miterLimit/trimStart/trimEnd");
758
- const width = number(st.width, "Path.stroke.width", 0), miterLimit = number(st.miterLimit ?? 4, "Path.stroke.miterLimit", 1);
759
- if (width > 2048 || miterLimit > 100) throw new Error("Path.stroke: width must be <= 2048 and miterLimit <= 100");
760
- const trimStart = number(st.trimStart ?? 0, "Path.stroke.trimStart", 0), trimEnd = number(st.trimEnd ?? 1, "Path.stroke.trimEnd", 0);
761
- if (trimStart > 1 || trimEnd > 1) throw new Error("Path.stroke: trimStart and trimEnd are fractions from 0 to 1");
762
- stroke = { color: color(st.color, "Path.stroke.color"), width, miterLimit, trimStart, trimEnd,
763
- cap: choice(st.cap ?? "butt", ["butt", "round", "square"], "Path.stroke.cap"),
764
- join: choice(st.join ?? "miter", ["miter", "round", "bevel"], "Path.stroke.join") };
765
- }
766
- const sizing: Pick<PathNode, "width" | "height" | "viewBox" | "fit"> = {};
767
- for (const key of ["width", "height"] as const) if (props[key] !== undefined) sizing[key] = positive(props[key], `Path.${key}`);
768
- if (props.viewBox !== undefined) {
769
- const box = props.viewBox;
770
- if (!Array.isArray(box) || box.length !== 4) throw new Error("Path.viewBox: expected [minX, minY, width, height]");
771
- sizing.viewBox = [number(box[0], "Path.viewBox.x"), number(box[1], "Path.viewBox.y"), positive(box[2], "Path.viewBox.width"), positive(box[3], "Path.viewBox.height")];
772
- }
773
- if (props.fit !== undefined) {
774
- sizing.fit = choice(props.fit, ["contain", "fill"], "Path.fit");
775
- if (sizing.width === undefined && sizing.height === undefined && sizing.viewBox === undefined) throw new Error("Path.fit requires width, height or viewBox");
776
- }
777
- return [{ type: "path", ...base, ...sizing, d: props.d, fill: color(props.fill ?? "#ffffff", "Path.fill"),
778
- fillRule: choice(props.fillRule ?? "nonzero", ["nonzero", "evenodd"], "Path.fillRule"), ...(stroke ? { stroke } : {}) }];
779
- }
780
- if (type === "rect") {
781
- checkProps(props, "Rect", [
782
- "width",
783
- "height",
784
- "fill",
785
- "radius",
786
- "children",
787
- ]);
788
- if (props.children !== undefined)
789
- throw new Error("Rect does not accept children");
790
- const width = number(props.width, "Rect.width", 0);
791
- const height = number(props.height, "Rect.height", 0);
792
- return [
793
- {
794
- type: "rect",
795
- ...base,
796
- width,
797
- height,
798
- fill: color(props.fill ?? "#ffffff", "Rect.fill"),
799
- radius: Math.min(
800
- number(props.radius ?? 0, "Rect.radius", 0),
801
- width / 2,
802
- height / 2,
803
- ),
804
- },
805
- ];
806
- }
807
- if (type === "text") {
808
- checkProps(props, "Text", ["height", "verticalAlign", "alignBounds",
809
- "children",
810
- "font",
811
- "fontSize",
812
- "fontWeight",
813
- "color",
814
- "width",
815
- "align",
816
- "lineHeight",
817
- "letterSpacing",
818
- "path",
819
- ]);
820
- let path: TextPath | undefined;
821
- if (props.path !== undefined) {
822
- if (!props.path || typeof props.path !== "object" || Array.isArray(props.path))
823
- throw new Error("Text.path: expected a path object");
824
- for (const key of ["width", "height", "verticalAlign", "alignBounds", "align", "lineHeight"])
825
- if (props[key] !== undefined) throw new Error(`Text.${key} cannot be used with Text.path`);
826
- const p = props.path as Record<string, unknown>;
827
- const progress = number(p.progress ?? 0, "Text.path.progress");
828
- if (p.shape === "ellipse") {
829
- checkProps(p, "Text.path", ["shape", "radius", "progress"], false);
830
- const radius = pair(p.radius, "Text.path.radius");
831
- path = { shape: "ellipse", radius: [positive(radius[0], "Text.path.radius[0]"), positive(radius[1], "Text.path.radius[1]")], progress };
832
- } else if (p.shape === "svg") {
833
- checkProps(p, "Text.path", ["shape", "d", "progress"], false);
834
- if (typeof p.d !== "string" || !p.d.trim() || p.d.length > 65536)
835
- throw new Error("Text.path.d: expected nonempty SVG path data (up to 65536 characters)");
836
- path = { shape: "svg", d: p.d, progress };
837
- } else throw new Error('Text.path.shape: expected "ellipse" or "svg"');
838
- if (/[\r\n\u2028\u2029]/u.test(String(props.children)))
839
- throw new Error("Text.path requires single-line text");
840
- }
841
- if (
842
- typeof props.children !== "string" &&
843
- typeof props.children !== "number"
844
- )
845
- throw new Error("Text requires string or number children");
846
- if (typeof props.children === "number")
847
- number(props.children, "Text.children");
848
- const font = props.font ?? "Inter";
849
- if (typeof font !== "string" || font.length === 0)
850
- throw new Error("Text.font must be a nonempty string");
851
- if (props.verticalAlign !== undefined && props.height === undefined) throw new Error("Text.verticalAlign requires height");
852
- const box = {
853
- ...(props.height === undefined ? {} : {height: positive(props.height, "Text.height")}),
854
- ...(props.verticalAlign === undefined ? {} : {verticalAlign: choice(props.verticalAlign, ["top", "center", "bottom"], "Text.verticalAlign")}),
855
- ...(props.alignBounds === undefined ? {} : {alignBounds: choice(props.alignBounds, ["lineBox", "glyphs"], "Text.alignBounds")}),
856
- };
857
- const align = props.align ?? "left";
858
- if (align !== "left" && align !== "center" && align !== "right")
859
- throw new Error("Text.align must be left, center or right");
860
- return [
861
- {
862
- type: "text",
863
- ...base, ...box,
864
- ...(path ? { path } : {}),
865
- text: String(props.children),
866
- font,
867
- ...(child.sourceFile ? { fontSource: child.sourceFile } : {}),
868
- ...(props.fontWeight === undefined
869
- ? {}
870
- : {
871
- fontWeight: choice(
872
- props.fontWeight,
873
- [400, 500, 600, 700],
874
- "Text.fontWeight",
875
- ),
876
- }),
877
- fontSize: positive(props.fontSize ?? 48, "Text.fontSize"),
878
- color: color(props.color ?? "#ffffff", "Text.color"),
879
- ...(props.width === undefined
880
- ? {}
881
- : { width: positive(props.width, "Text.width") }),
882
- align,
883
- lineHeight: positive(props.lineHeight ?? 1.2, "Text.lineHeight"),
884
- letterSpacing: number(props.letterSpacing ?? 0, "Text.letterSpacing"),
885
- },
886
- ];
887
- }
888
- throw new Error(`Unsupported primitive: ${String(child.type)}`);
889
- }
890
-
891
- function fail(message: string): never {
892
- throw new Error(message);
893
- }
894
- function choice<const T extends string | number>(
895
- value: unknown,
896
- options: readonly T[],
897
- label: string,
898
- ): T {
899
- if (!options.includes(value as T))
900
- throw new Error(`${label}: expected ${options.join(", ")}`);
901
- return value as T;
902
- }
903
- function checkProps(
904
- props: Record<string, unknown>,
905
- label: string,
906
- allowed: string[],
907
- visual = true,
908
- ) {
909
- const names = new Set([
910
- "id",
911
- ...(isClipPrimitive(label) ? clipFields : []),
912
- ...allowed,
913
- ...(visual ? ["position", "z", "rotation", "scale", "origin", "opacity", "effects"] : []),
914
- ]);
915
- if (props.id !== undefined && (typeof props.id !== "string" || !props.id.trim())) throw new Error(`${label}.id: expected a nonempty string`);
916
- for (const name of Object.keys(props))
917
- if (!names.has(name))
918
- throw new Error(`${label}: unsupported prop "${name}"`);
919
- }