@datamoc/mw_games 0.42.0 → 0.44.2

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 (333) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/README.md +84 -1
  3. package/REFERENCE.md +134 -6
  4. package/api-surface.json +1814 -116
  5. package/data/microgm-essential.PROVENANCE.md +13 -0
  6. package/data/microgm-essential.sf2 +0 -0
  7. package/data/soundfont-catalog.json +8 -0
  8. package/dist/actors/Resource.d.ts.map +1 -1
  9. package/dist/actors/Resource.js +2 -3
  10. package/dist/actors/Resource.js.map +1 -1
  11. package/dist/audio/AdaptiveMusic.d.ts +85 -0
  12. package/dist/audio/AdaptiveMusic.d.ts.map +1 -0
  13. package/dist/audio/AdaptiveMusic.js +230 -0
  14. package/dist/audio/AdaptiveMusic.js.map +1 -0
  15. package/dist/audio/AudioLoader.d.ts +33 -0
  16. package/dist/audio/AudioLoader.d.ts.map +1 -0
  17. package/dist/audio/AudioLoader.js +58 -0
  18. package/dist/audio/AudioLoader.js.map +1 -0
  19. package/dist/audio/AudioViews.d.ts +70 -0
  20. package/dist/audio/AudioViews.d.ts.map +1 -0
  21. package/dist/audio/AudioViews.js +119 -0
  22. package/dist/audio/AudioViews.js.map +1 -0
  23. package/dist/audio/BusBudget.d.ts +89 -0
  24. package/dist/audio/BusBudget.d.ts.map +1 -0
  25. package/dist/audio/BusBudget.js +120 -0
  26. package/dist/audio/BusBudget.js.map +1 -0
  27. package/dist/audio/Channels.d.ts +66 -1
  28. package/dist/audio/Channels.d.ts.map +1 -1
  29. package/dist/audio/Channels.js +119 -31
  30. package/dist/audio/Channels.js.map +1 -1
  31. package/dist/audio/CoreHost.d.ts +114 -0
  32. package/dist/audio/CoreHost.d.ts.map +1 -0
  33. package/dist/audio/CoreHost.js +335 -0
  34. package/dist/audio/CoreHost.js.map +1 -0
  35. package/dist/audio/DecoderGuard.d.ts +139 -0
  36. package/dist/audio/DecoderGuard.d.ts.map +1 -0
  37. package/dist/audio/DecoderGuard.js +208 -0
  38. package/dist/audio/DecoderGuard.js.map +1 -0
  39. package/dist/audio/Fft.d.ts +3 -0
  40. package/dist/audio/Fft.d.ts.map +1 -0
  41. package/dist/audio/Fft.js +45 -0
  42. package/dist/audio/Fft.js.map +1 -0
  43. package/dist/audio/LoopTags.d.ts +18 -0
  44. package/dist/audio/LoopTags.d.ts.map +1 -1
  45. package/dist/audio/LoopTags.js +20 -0
  46. package/dist/audio/LoopTags.js.map +1 -1
  47. package/dist/audio/Midi.d.ts +35 -0
  48. package/dist/audio/Midi.d.ts.map +1 -1
  49. package/dist/audio/Midi.js +71 -1
  50. package/dist/audio/Midi.js.map +1 -1
  51. package/dist/audio/MidiRender.d.ts +47 -0
  52. package/dist/audio/MidiRender.d.ts.map +1 -1
  53. package/dist/audio/MidiRender.js +100 -2
  54. package/dist/audio/MidiRender.js.map +1 -1
  55. package/dist/audio/MidiSynth.d.ts +147 -0
  56. package/dist/audio/MidiSynth.d.ts.map +1 -0
  57. package/dist/audio/MidiSynth.js +205 -0
  58. package/dist/audio/MidiSynth.js.map +1 -0
  59. package/dist/audio/MusicPlayer.d.ts +80 -0
  60. package/dist/audio/MusicPlayer.d.ts.map +1 -0
  61. package/dist/audio/MusicPlayer.js +147 -0
  62. package/dist/audio/MusicPlayer.js.map +1 -0
  63. package/dist/audio/Playable.d.ts +7 -0
  64. package/dist/audio/Playable.d.ts.map +1 -1
  65. package/dist/audio/Playable.js.map +1 -1
  66. package/dist/audio/Positional.d.ts +12 -4
  67. package/dist/audio/Positional.d.ts.map +1 -1
  68. package/dist/audio/Positional.js +5 -2
  69. package/dist/audio/Positional.js.map +1 -1
  70. package/dist/audio/Resample.d.ts +61 -0
  71. package/dist/audio/Resample.d.ts.map +1 -0
  72. package/dist/audio/Resample.js +97 -0
  73. package/dist/audio/Resample.js.map +1 -0
  74. package/dist/audio/SampleDecoder.d.ts +16 -2
  75. package/dist/audio/SampleDecoder.d.ts.map +1 -1
  76. package/dist/audio/SampleDecoder.js +10 -6
  77. package/dist/audio/SampleDecoder.js.map +1 -1
  78. package/dist/audio/Settings.d.ts +99 -0
  79. package/dist/audio/Settings.d.ts.map +1 -0
  80. package/dist/audio/Settings.js +134 -0
  81. package/dist/audio/Settings.js.map +1 -0
  82. package/dist/audio/Sfx.d.ts +148 -0
  83. package/dist/audio/Sfx.d.ts.map +1 -0
  84. package/dist/audio/Sfx.js +213 -0
  85. package/dist/audio/Sfx.js.map +1 -0
  86. package/dist/audio/Sound.d.ts +2 -0
  87. package/dist/audio/Sound.d.ts.map +1 -1
  88. package/dist/audio/Sound.js +3 -0
  89. package/dist/audio/Sound.js.map +1 -1
  90. package/dist/audio/SoundFont.d.ts +5 -3
  91. package/dist/audio/SoundFont.d.ts.map +1 -1
  92. package/dist/audio/SoundFont.js +10 -8
  93. package/dist/audio/SoundFont.js.map +1 -1
  94. package/dist/audio/SpectralDistance.d.ts +34 -0
  95. package/dist/audio/SpectralDistance.d.ts.map +1 -0
  96. package/dist/audio/SpectralDistance.js +64 -0
  97. package/dist/audio/SpectralDistance.js.map +1 -0
  98. package/dist/audio/StreamChannel.d.ts +150 -0
  99. package/dist/audio/StreamChannel.d.ts.map +1 -0
  100. package/dist/audio/StreamChannel.js +390 -0
  101. package/dist/audio/StreamChannel.js.map +1 -0
  102. package/dist/audio/StreamPlayable.d.ts +73 -0
  103. package/dist/audio/StreamPlayable.d.ts.map +1 -0
  104. package/dist/audio/StreamPlayable.js +130 -0
  105. package/dist/audio/StreamPlayable.js.map +1 -0
  106. package/dist/audio/Synth.d.ts +1 -1
  107. package/dist/audio/Synth.d.ts.map +1 -1
  108. package/dist/audio/Synth.js +4 -0
  109. package/dist/audio/Synth.js.map +1 -1
  110. package/dist/audio/SyxBank.d.ts +73 -0
  111. package/dist/audio/SyxBank.d.ts.map +1 -0
  112. package/dist/audio/SyxBank.js +130 -0
  113. package/dist/audio/SyxBank.js.map +1 -0
  114. package/dist/audio/Underrun.d.ts +25 -0
  115. package/dist/audio/Underrun.d.ts.map +1 -0
  116. package/dist/audio/Underrun.js +18 -0
  117. package/dist/audio/Underrun.js.map +1 -0
  118. package/dist/audio/Wav.d.ts +56 -0
  119. package/dist/audio/Wav.d.ts.map +1 -0
  120. package/dist/audio/Wav.js +164 -0
  121. package/dist/audio/Wav.js.map +1 -0
  122. package/dist/audio/WebMidi.d.ts +58 -0
  123. package/dist/audio/WebMidi.d.ts.map +1 -0
  124. package/dist/audio/WebMidi.js +79 -0
  125. package/dist/audio/WebMidi.js.map +1 -0
  126. package/dist/audio/humanize/Onsets.d.ts.map +1 -1
  127. package/dist/audio/humanize/Onsets.js +1 -44
  128. package/dist/audio/humanize/Onsets.js.map +1 -1
  129. package/dist/audio/index.d.ts +43 -7
  130. package/dist/audio/index.d.ts.map +1 -1
  131. package/dist/audio/index.js +21 -3
  132. package/dist/audio/index.js.map +1 -1
  133. package/dist/battle/AttackPreview.d.ts.map +1 -1
  134. package/dist/battle/AttackPreview.js +8 -8
  135. package/dist/battle/AttackPreview.js.map +1 -1
  136. package/dist/battle/StatStages.d.ts.map +1 -1
  137. package/dist/battle/StatStages.js +2 -1
  138. package/dist/battle/StatStages.js.map +1 -1
  139. package/dist/board/Engine.d.ts +2 -0
  140. package/dist/board/Engine.d.ts.map +1 -1
  141. package/dist/board/Engine.js +1 -1
  142. package/dist/board/Engine.js.map +1 -1
  143. package/dist/board/HexSkirmish.d.ts.map +1 -1
  144. package/dist/board/HexSkirmish.js +11 -72
  145. package/dist/board/HexSkirmish.js.map +1 -1
  146. package/dist/board/Tactics.d.ts.map +1 -1
  147. package/dist/board/Tactics.js +3 -5
  148. package/dist/board/Tactics.js.map +1 -1
  149. package/dist/board/tourney.d.ts.map +1 -1
  150. package/dist/board/tourney.js +2 -19
  151. package/dist/board/tourney.js.map +1 -1
  152. package/dist/core/Handles.js +7 -7
  153. package/dist/core/Handles.js.map +1 -1
  154. package/dist/mw_games.global.js +25 -22
  155. package/dist/mwl/conditions.d.ts +12 -0
  156. package/dist/mwl/conditions.d.ts.map +1 -1
  157. package/dist/mwl/conditions.js +49 -8
  158. package/dist/mwl/conditions.js.map +1 -1
  159. package/dist/mwl/index.d.ts +13 -0
  160. package/dist/mwl/index.d.ts.map +1 -1
  161. package/dist/mwl/index.js +7 -0
  162. package/dist/mwl/index.js.map +1 -1
  163. package/dist/mwl/objects.d.ts +31 -0
  164. package/dist/mwl/objects.d.ts.map +1 -0
  165. package/dist/mwl/objects.js +83 -0
  166. package/dist/mwl/objects.js.map +1 -0
  167. package/dist/mwl/package-container.d.ts +185 -0
  168. package/dist/mwl/package-container.d.ts.map +1 -0
  169. package/dist/mwl/package-container.js +446 -0
  170. package/dist/mwl/package-container.js.map +1 -0
  171. package/dist/mwl/package-document.d.ts +217 -0
  172. package/dist/mwl/package-document.d.ts.map +1 -0
  173. package/dist/mwl/package-document.js +639 -0
  174. package/dist/mwl/package-document.js.map +1 -0
  175. package/dist/mwl/package-rom.d.ts +37 -0
  176. package/dist/mwl/package-rom.d.ts.map +1 -0
  177. package/dist/mwl/package-rom.js +96 -0
  178. package/dist/mwl/package-rom.js.map +1 -0
  179. package/dist/mwl/package-verify.d.ts +34 -0
  180. package/dist/mwl/package-verify.d.ts.map +1 -0
  181. package/dist/mwl/package-verify.js +111 -0
  182. package/dist/mwl/package-verify.js.map +1 -0
  183. package/dist/mwl/package.d.ts +184 -0
  184. package/dist/mwl/package.d.ts.map +1 -0
  185. package/dist/mwl/package.js +382 -0
  186. package/dist/mwl/package.js.map +1 -0
  187. package/dist/mwl/schema.d.ts +1 -1
  188. package/dist/mwl/schema.d.ts.map +1 -1
  189. package/dist/mwl/tables.d.ts +2 -0
  190. package/dist/mwl/tables.d.ts.map +1 -1
  191. package/dist/mwl/tables.js +13 -0
  192. package/dist/mwl/tables.js.map +1 -1
  193. package/dist/physics/PhysicsWorld.d.ts.map +1 -1
  194. package/dist/physics/PhysicsWorld.js +4 -3
  195. package/dist/physics/PhysicsWorld.js.map +1 -1
  196. package/dist/physics/XpbdWorld.d.ts +23 -5
  197. package/dist/physics/XpbdWorld.d.ts.map +1 -1
  198. package/dist/physics/XpbdWorld.js +91 -6
  199. package/dist/physics/XpbdWorld.js.map +1 -1
  200. package/dist/testing/FakeAudio.d.ts +149 -0
  201. package/dist/testing/FakeAudio.d.ts.map +1 -0
  202. package/dist/testing/FakeAudio.js +219 -0
  203. package/dist/testing/FakeAudio.js.map +1 -0
  204. package/dist/testing/index.d.ts +18 -0
  205. package/dist/testing/index.d.ts.map +1 -1
  206. package/dist/testing/index.js +22 -0
  207. package/dist/testing/index.js.map +1 -1
  208. package/dist/threads/index.d.ts +2 -2
  209. package/dist/threads/index.d.ts.map +1 -1
  210. package/dist/threads/index.js +1 -1
  211. package/dist/threads/index.js.map +1 -1
  212. package/dist/threads/spawn.d.ts +32 -0
  213. package/dist/threads/spawn.d.ts.map +1 -1
  214. package/dist/threads/spawn.js +35 -11
  215. package/dist/threads/spawn.js.map +1 -1
  216. package/dist/three-d/Collision3D.d.ts +46 -2
  217. package/dist/three-d/Collision3D.d.ts.map +1 -1
  218. package/dist/three-d/Collision3D.js +46 -2
  219. package/dist/three-d/Collision3D.js.map +1 -1
  220. package/dist/three-d/Grid.d.ts +12 -1
  221. package/dist/three-d/Grid.d.ts.map +1 -1
  222. package/dist/three-d/Grid.js +12 -1
  223. package/dist/three-d/Grid.js.map +1 -1
  224. package/dist/three-d/Vox.d.ts +13 -1
  225. package/dist/three-d/Vox.d.ts.map +1 -1
  226. package/dist/three-d/Vox.js +13 -1
  227. package/dist/three-d/Vox.js.map +1 -1
  228. package/dist/two-d/Game.d.ts +32 -1
  229. package/dist/two-d/Game.d.ts.map +1 -1
  230. package/dist/two-d/Game.js +105 -14
  231. package/dist/two-d/Game.js.map +1 -1
  232. package/dist/two-d/Scene2D.d.ts +24 -0
  233. package/dist/two-d/Scene2D.d.ts.map +1 -1
  234. package/dist/two-d/Scene2D.js +30 -0
  235. package/dist/two-d/Scene2D.js.map +1 -1
  236. package/dist/two-d/render/HazeLayer.d.ts.map +1 -1
  237. package/dist/two-d/render/HazeLayer.js +2 -1
  238. package/dist/two-d/render/HazeLayer.js.map +1 -1
  239. package/dist/two-d/render/ImageModifiers.d.ts +4 -2
  240. package/dist/two-d/render/ImageModifiers.d.ts.map +1 -1
  241. package/dist/two-d/render/ImageModifiers.js +13 -8
  242. package/dist/two-d/render/ImageModifiers.js.map +1 -1
  243. package/dist/two-d/render/NeonGlow.d.ts.map +1 -1
  244. package/dist/two-d/render/NeonGlow.js +2 -1
  245. package/dist/two-d/render/NeonGlow.js.map +1 -1
  246. package/dist/two-d/render/Particles.d.ts.map +1 -1
  247. package/dist/two-d/render/Particles.js +2 -1
  248. package/dist/two-d/render/Particles.js.map +1 -1
  249. package/dist/two-d/render/SceneTransition.d.ts +301 -0
  250. package/dist/two-d/render/SceneTransition.d.ts.map +1 -0
  251. package/dist/two-d/render/SceneTransition.js +458 -0
  252. package/dist/two-d/render/SceneTransition.js.map +1 -0
  253. package/dist/two-d/render/ScreenEffects.d.ts.map +1 -1
  254. package/dist/two-d/render/ScreenEffects.js +2 -1
  255. package/dist/two-d/render/ScreenEffects.js.map +1 -1
  256. package/dist/two-d/render/SkeletalSprite.d.ts.map +1 -1
  257. package/dist/two-d/render/SkeletalSprite.js +2 -1
  258. package/dist/two-d/render/SkeletalSprite.js.map +1 -1
  259. package/dist/two-d/render/Types2D.d.ts +2 -2
  260. package/dist/two-d/render/Types2D.d.ts.map +1 -1
  261. package/dist/two-d/render/Types2D.js +2 -2
  262. package/dist/two-d/render/Types2D.js.map +1 -1
  263. package/dist/two-d/render/index.d.ts +2 -0
  264. package/dist/two-d/render/index.d.ts.map +1 -1
  265. package/dist/two-d/render/index.js +1 -0
  266. package/dist/two-d/render/index.js.map +1 -1
  267. package/dist/two-d/ui/Bar.d.ts.map +1 -1
  268. package/dist/two-d/ui/Bar.js +3 -5
  269. package/dist/two-d/ui/Bar.js.map +1 -1
  270. package/dist/two-d/ui/Button.d.ts +23 -0
  271. package/dist/two-d/ui/Button.d.ts.map +1 -1
  272. package/dist/two-d/ui/Button.js +37 -0
  273. package/dist/two-d/ui/Button.js.map +1 -1
  274. package/dist/two-d/ui/Dropdown.d.ts +5 -1
  275. package/dist/two-d/ui/Dropdown.d.ts.map +1 -1
  276. package/dist/two-d/ui/Dropdown.js +8 -1
  277. package/dist/two-d/ui/Dropdown.js.map +1 -1
  278. package/dist/two-d/ui/DropdownView.d.ts +63 -3
  279. package/dist/two-d/ui/DropdownView.d.ts.map +1 -1
  280. package/dist/two-d/ui/DropdownView.js +168 -9
  281. package/dist/two-d/ui/DropdownView.js.map +1 -1
  282. package/dist/two-d/ui/FloatingText.d.ts.map +1 -1
  283. package/dist/two-d/ui/FloatingText.js +2 -1
  284. package/dist/two-d/ui/FloatingText.js.map +1 -1
  285. package/dist/two-d/ui/IconGrid.d.ts.map +1 -1
  286. package/dist/two-d/ui/IconGrid.js +2 -1
  287. package/dist/two-d/ui/IconGrid.js.map +1 -1
  288. package/dist/two-d/ui/ListView.d.ts.map +1 -1
  289. package/dist/two-d/ui/ListView.js +2 -1
  290. package/dist/two-d/ui/ListView.js.map +1 -1
  291. package/dist/two-d/ui/ScrollBox.d.ts +96 -0
  292. package/dist/two-d/ui/ScrollBox.d.ts.map +1 -1
  293. package/dist/two-d/ui/ScrollBox.js +218 -5
  294. package/dist/two-d/ui/ScrollBox.js.map +1 -1
  295. package/dist/two-d/ui/ScrollText.d.ts +131 -0
  296. package/dist/two-d/ui/ScrollText.d.ts.map +1 -0
  297. package/dist/two-d/ui/ScrollText.js +218 -0
  298. package/dist/two-d/ui/ScrollText.js.map +1 -0
  299. package/dist/two-d/ui/Slider.d.ts.map +1 -1
  300. package/dist/two-d/ui/Slider.js +4 -4
  301. package/dist/two-d/ui/Slider.js.map +1 -1
  302. package/dist/two-d/ui/Tooltip.d.ts +70 -1
  303. package/dist/two-d/ui/Tooltip.d.ts.map +1 -1
  304. package/dist/two-d/ui/Tooltip.js +115 -3
  305. package/dist/two-d/ui/Tooltip.js.map +1 -1
  306. package/dist/two-d/ui/Window.d.ts +35 -2
  307. package/dist/two-d/ui/Window.d.ts.map +1 -1
  308. package/dist/two-d/ui/Window.js +58 -3
  309. package/dist/two-d/ui/Window.js.map +1 -1
  310. package/dist/two-d/ui/index.d.ts +7 -5
  311. package/dist/two-d/ui/index.d.ts.map +1 -1
  312. package/dist/two-d/ui/index.js +3 -2
  313. package/dist/two-d/ui/index.js.map +1 -1
  314. package/dist/version.d.ts +1 -1
  315. package/dist/version.js +1 -1
  316. package/package.json +14 -3
  317. package/sbom.cdx.json +19 -260
  318. package/tools/audio.d.mts +75 -0
  319. package/tools/audio.mjs +437 -0
  320. package/tools/browser-driver.mjs +3 -3
  321. package/tools/browser-smoke.mjs +19 -2
  322. package/tools/build-tablebases.mjs +7 -3
  323. package/tools/compile-openings.mjs +7 -3
  324. package/tools/compile-resources.d.mts +2 -0
  325. package/tools/compile-resources.mjs +13 -1
  326. package/tools/emit-page.d.mts +6 -0
  327. package/tools/emit-page.mjs +43 -3
  328. package/tools/find-chrome.mjs +4 -2
  329. package/tools/init.mjs +11 -3
  330. package/tools/mwl.mjs +144 -2
  331. package/tools/play-uci.mjs +9 -5
  332. package/tools/vite.mjs +9 -1
  333. package/tools.md +2 -1
package/sbom.cdx.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.6",
4
- "serialNumber": "urn:uuid:d84e1ae6-4f60-52e2-ba6e-2d20240cc411",
4
+ "serialNumber": "urn:uuid:ad839257-b40e-58ce-a4d4-235de9c80272",
5
5
  "version": 1,
6
6
  "metadata": {
7
7
  "tools": {
@@ -10,16 +10,16 @@
10
10
  "type": "application",
11
11
  "group": "datamoc",
12
12
  "name": "tools/sbom.mjs",
13
- "version": "0.42.0"
13
+ "version": "0.44.2"
14
14
  }
15
15
  ]
16
16
  },
17
17
  "component": {
18
18
  "type": "library",
19
- "bom-ref": "pkg:npm/%40datamoc/mw_games@0.42.0",
19
+ "bom-ref": "pkg:npm/%40datamoc/mw_games@0.44.2",
20
20
  "name": "@datamoc/mw_games",
21
- "version": "0.42.0",
22
- "purl": "pkg:npm/%40datamoc/mw_games@0.42.0",
21
+ "version": "0.44.2",
22
+ "purl": "pkg:npm/%40datamoc/mw_games@0.44.2",
23
23
  "description": "A local-file game framework: renderer-free game logic, drawn through PixiJS in 2D or Babylon.js in 3D, with mobile and desktop packaging.",
24
24
  "licenses": [
25
25
  {
@@ -96,15 +96,15 @@
96
96
  },
97
97
  {
98
98
  "type": "library",
99
- "bom-ref": "pkg:npm/%40capacitor/cli@8.5.3",
99
+ "bom-ref": "pkg:npm/%40capacitor/cli@8.4.3",
100
100
  "name": "@capacitor/cli",
101
- "version": "8.5.3",
102
- "purl": "pkg:npm/%40capacitor/cli@8.5.3",
101
+ "version": "8.4.3",
102
+ "purl": "pkg:npm/%40capacitor/cli@8.4.3",
103
103
  "scope": "excluded",
104
104
  "hashes": [
105
105
  {
106
106
  "alg": "SHA-512",
107
- "content": "fc6eb1c276bea78192de5b6149d58ddce4e1087d85f393b4524772f2bbf7a005ef80431ec8580f1080373cc012fbe2241f052e05804028e4099d97dcae1d67d3"
107
+ "content": "13727b17a81d65204c230074fd65671d9e52f945c93e0bdd9f2aadc2bc9c702191464219df86f9b2061831ad888f86a08a691470ca1270093e2bf82b4ed2f55e"
108
108
  }
109
109
  ],
110
110
  "licenses": [
@@ -159,15 +159,15 @@
159
159
  },
160
160
  {
161
161
  "type": "library",
162
- "bom-ref": "pkg:npm/%40datamoc/pyroeis@0.9.0",
162
+ "bom-ref": "pkg:npm/%40datamoc/pyroeis@0.9.1",
163
163
  "name": "@datamoc/pyroeis",
164
- "version": "0.9.0",
165
- "purl": "pkg:npm/%40datamoc/pyroeis@0.9.0",
164
+ "version": "0.9.1",
165
+ "purl": "pkg:npm/%40datamoc/pyroeis@0.9.1",
166
166
  "scope": "optional",
167
167
  "hashes": [
168
168
  {
169
169
  "alg": "SHA-512",
170
- "content": "22c2104fc4df7b87209157a3168afb143eefd46abdb5b4f92c45125244c26265badca578a81b78be2bc6c5f59c29973b5b20dc0b940143aa00016abebed6da22"
170
+ "content": "e5e9ddb5a14c66d60edf1b9a83769a987483804718c7b71bb7a4b6e3f0efbc9c2618658da7a9e59afe7eb7ff38b7ad3aaf43d7dbf307dc71f51e365c8fc442e0"
171
171
  }
172
172
  ],
173
173
  "licenses": [
@@ -2110,48 +2110,6 @@
2110
2110
  }
2111
2111
  ]
2112
2112
  },
2113
- {
2114
- "type": "library",
2115
- "bom-ref": "pkg:npm/bplist-creator@0.1.0",
2116
- "name": "bplist-creator",
2117
- "version": "0.1.0",
2118
- "purl": "pkg:npm/bplist-creator@0.1.0",
2119
- "scope": "excluded",
2120
- "hashes": [
2121
- {
2122
- "alg": "SHA-512",
2123
- "content": "b17687662732104998f3a5b2b9e2d341eb1b7a81ff9aabaf6ab25a40d6e3b8e40efbb81b15c0c45aa2a671603870e4cbcc595f82f922571a259359396c12299a"
2124
- }
2125
- ],
2126
- "licenses": [
2127
- {
2128
- "license": {
2129
- "id": "MIT"
2130
- }
2131
- }
2132
- ]
2133
- },
2134
- {
2135
- "type": "library",
2136
- "bom-ref": "pkg:npm/bplist-parser@0.3.1",
2137
- "name": "bplist-parser",
2138
- "version": "0.3.1",
2139
- "purl": "pkg:npm/bplist-parser@0.3.1",
2140
- "scope": "excluded",
2141
- "hashes": [
2142
- {
2143
- "alg": "SHA-512",
2144
- "content": "3f227188db40e53d8f94b21e068b7895ba7bae3e0e69dce39cc643fc6e73b8136df1e8bfc8253bfb05b48766da83dbebf1cfbf5ae456992c5ba8097d84bd6b04"
2145
- }
2146
- ],
2147
- "licenses": [
2148
- {
2149
- "license": {
2150
- "id": "MIT"
2151
- }
2152
- }
2153
- ]
2154
- },
2155
2113
  {
2156
2114
  "type": "library",
2157
2115
  "bom-ref": "pkg:npm/bplist-parser@0.3.2",
@@ -3937,27 +3895,6 @@
3937
3895
  }
3938
3896
  ]
3939
3897
  },
3940
- {
3941
- "type": "library",
3942
- "bom-ref": "pkg:npm/readline-sync@1.4.10",
3943
- "name": "readline-sync",
3944
- "version": "1.4.10",
3945
- "purl": "pkg:npm/readline-sync@1.4.10",
3946
- "scope": "optional",
3947
- "hashes": [
3948
- {
3949
- "alg": "SHA-512",
3950
- "content": "80dbdaf3fe9401ef1061ea48407fe3436aa7f75423d01f6c62330106cdd0381f05d825dc2a02f141a2513fbeac595450b7e414fbc7c09026c2be38cc16eed873"
3951
- }
3952
- ],
3953
- "licenses": [
3954
- {
3955
- "license": {
3956
- "id": "MIT"
3957
- }
3958
- }
3959
- ]
3960
- },
3961
3898
  {
3962
3899
  "type": "library",
3963
3900
  "bom-ref": "pkg:npm/rimraf@6.1.3",
@@ -4189,27 +4126,6 @@
4189
4126
  }
4190
4127
  ]
4191
4128
  },
4192
- {
4193
- "type": "library",
4194
- "bom-ref": "pkg:npm/simple-plist@1.3.1",
4195
- "name": "simple-plist",
4196
- "version": "1.3.1",
4197
- "purl": "pkg:npm/simple-plist@1.3.1",
4198
- "scope": "excluded",
4199
- "hashes": [
4200
- {
4201
- "alg": "SHA-512",
4202
- "content": "88c4b0e62d17b1e327ae1b48cd16fb5e94045dea5af71856c465288c704be37488a50b834248775a9cbaed96c3cd956be842b1bf0542867569765f211152c38b"
4203
- }
4204
- ],
4205
- "licenses": [
4206
- {
4207
- "license": {
4208
- "id": "MIT"
4209
- }
4210
- }
4211
- ]
4212
- },
4213
4129
  {
4214
4130
  "type": "library",
4215
4131
  "bom-ref": "pkg:npm/sisteransi@1.0.5",
@@ -4294,48 +4210,6 @@
4294
4210
  }
4295
4211
  ]
4296
4212
  },
4297
- {
4298
- "type": "library",
4299
- "bom-ref": "pkg:npm/sprintf-js@1.1.3",
4300
- "name": "sprintf-js",
4301
- "version": "1.1.3",
4302
- "purl": "pkg:npm/sprintf-js@1.1.3",
4303
- "scope": "optional",
4304
- "hashes": [
4305
- {
4306
- "alg": "SHA-512",
4307
- "content": "3a8fb4444155e7dfebcf781f24d2908819707c7692112975a5c1b200142c9e721f58e16de89363e600a883653a30b67ffc81980fe9c0f2723e9934a144445e68"
4308
- }
4309
- ],
4310
- "licenses": [
4311
- {
4312
- "license": {
4313
- "id": "BSD-3-Clause"
4314
- }
4315
- }
4316
- ]
4317
- },
4318
- {
4319
- "type": "library",
4320
- "bom-ref": "pkg:npm/stream-buffers@2.2.0",
4321
- "name": "stream-buffers",
4322
- "version": "2.2.0",
4323
- "purl": "pkg:npm/stream-buffers@2.2.0",
4324
- "scope": "excluded",
4325
- "hashes": [
4326
- {
4327
- "alg": "SHA-512",
4328
- "content": "bb240afe6c794231ee9fcd052c94df69613b26dc1f44c2812e43277bab9d60e9af1f409ac28b556bb4df8181f3027a69867e3e4f0788c7540a3274486e2a6652"
4329
- }
4330
- ],
4331
- "licenses": [
4332
- {
4333
- "license": {
4334
- "id": "Unlicense"
4335
- }
4336
- }
4337
- ]
4338
- },
4339
4213
  {
4340
4214
  "type": "library",
4341
4215
  "bom-ref": "pkg:npm/string-width@4.2.3",
@@ -4504,27 +4378,6 @@
4504
4378
  }
4505
4379
  ]
4506
4380
  },
4507
- {
4508
- "type": "library",
4509
- "bom-ref": "pkg:npm/tmp@0.2.7",
4510
- "name": "tmp",
4511
- "version": "0.2.7",
4512
- "purl": "pkg:npm/tmp@0.2.7",
4513
- "scope": "optional",
4514
- "hashes": [
4515
- {
4516
- "alg": "SHA-512",
4517
- "content": "7b4be8b48a69e14a36009612cd51d5eb109c6b0ba27b3dc3cea0c06eb4dcdd8c4192994de9ef9d335dd97887199c383f4294ae536cdf677af3c18f2e9049da5f"
4518
- }
4519
- ],
4520
- "licenses": [
4521
- {
4522
- "license": {
4523
- "id": "MIT"
4524
- }
4525
- }
4526
- ]
4527
- },
4528
4381
  {
4529
4382
  "type": "library",
4530
4383
  "bom-ref": "pkg:npm/tree-kill@1.2.2",
@@ -4672,27 +4525,6 @@
4672
4525
  }
4673
4526
  ]
4674
4527
  },
4675
- {
4676
- "type": "library",
4677
- "bom-ref": "pkg:npm/uuid@7.0.3",
4678
- "name": "uuid",
4679
- "version": "7.0.3",
4680
- "purl": "pkg:npm/uuid@7.0.3",
4681
- "scope": "excluded",
4682
- "hashes": [
4683
- {
4684
- "alg": "SHA-512",
4685
- "content": "0cf4a47b4a57853660a05fddf964add9068a3021527f1ed07a0c44593f893ae1c5e5a5ab2849f41beced8ee260fe01bcfc8b4afab6cf083ff236ff32ca287a0a"
4686
- }
4687
- ],
4688
- "licenses": [
4689
- {
4690
- "license": {
4691
- "id": "MIT"
4692
- }
4693
- }
4694
- ]
4695
- },
4696
4528
  {
4697
4529
  "type": "library",
4698
4530
  "bom-ref": "pkg:npm/vite@8.3.4",
@@ -4777,27 +4609,6 @@
4777
4609
  }
4778
4610
  ]
4779
4611
  },
4780
- {
4781
- "type": "library",
4782
- "bom-ref": "pkg:npm/xcode@3.0.1",
4783
- "name": "xcode",
4784
- "version": "3.0.1",
4785
- "purl": "pkg:npm/xcode@3.0.1",
4786
- "scope": "excluded",
4787
- "hashes": [
4788
- {
4789
- "alg": "SHA-512",
4790
- "content": "902cf993b27b5db26d8c004ebe47399499a488387c5618d5086362a9d282b1c995a5d554a440325efd719822e4409e5db07ab1dc83cee175be3530e153f7dab4"
4791
- }
4792
- ],
4793
- "licenses": [
4794
- {
4795
- "license": {
4796
- "id": "Apache-2.0"
4797
- }
4798
- }
4799
- ]
4800
- },
4801
4612
  {
4802
4613
  "type": "library",
4803
4614
  "bom-ref": "pkg:npm/xml2js@0.6.2",
@@ -4923,7 +4734,7 @@
4923
4734
  ]
4924
4735
  },
4925
4736
  {
4926
- "ref": "pkg:npm/%40capacitor/cli@8.5.3",
4737
+ "ref": "pkg:npm/%40capacitor/cli@8.4.3",
4927
4738
  "dependsOn": [
4928
4739
  "pkg:npm/%40ionic/cli-framework-output@2.2.8",
4929
4740
  "pkg:npm/%40ionic/utils-subprocess@3.0.1",
@@ -4941,7 +4752,6 @@
4941
4752
  "pkg:npm/semver@7.8.5",
4942
4753
  "pkg:npm/tar@7.5.22",
4943
4754
  "pkg:npm/tslib@2.8.1",
4944
- "pkg:npm/xcode@3.0.1",
4945
4755
  "pkg:npm/xml2js@0.6.2"
4946
4756
  ]
4947
4757
  },
@@ -4958,15 +4768,15 @@
4958
4768
  ]
4959
4769
  },
4960
4770
  {
4961
- "ref": "pkg:npm/%40datamoc/mw_games@0.42.0",
4771
+ "ref": "pkg:npm/%40datamoc/mw_games@0.44.2",
4962
4772
  "dependsOn": [
4963
4773
  "pkg:npm/%40babylonjs/core@9.31.0",
4964
4774
  "pkg:npm/%40babylonjs/loaders@9.31.0",
4965
4775
  "pkg:npm/%40capacitor/android@8.5.3",
4966
- "pkg:npm/%40capacitor/cli@8.5.3",
4776
+ "pkg:npm/%40capacitor/cli@8.4.3",
4967
4777
  "pkg:npm/%40capacitor/core@8.5.3",
4968
4778
  "pkg:npm/%40capacitor/ios@8.5.3",
4969
- "pkg:npm/%40datamoc/pyroeis@0.9.0",
4779
+ "pkg:npm/%40datamoc/pyroeis@0.9.1",
4970
4780
  "pkg:npm/%40types/node@26.6.5",
4971
4781
  "pkg:npm/%40types/ws@8.18.2",
4972
4782
  "pkg:npm/json5@2.2.3",
@@ -4983,12 +4793,8 @@
4983
4793
  ]
4984
4794
  },
4985
4795
  {
4986
- "ref": "pkg:npm/%40datamoc/pyroeis@0.9.0",
4987
- "dependsOn": [
4988
- "pkg:npm/readline-sync@1.4.10",
4989
- "pkg:npm/sprintf-js@1.1.3",
4990
- "pkg:npm/tmp@0.2.7"
4991
- ]
4796
+ "ref": "pkg:npm/%40datamoc/pyroeis@0.9.1",
4797
+ "dependsOn": []
4992
4798
  },
4993
4799
  {
4994
4800
  "ref": "pkg:npm/%40emnapi/runtime@1.11.3",
@@ -5440,18 +5246,6 @@
5440
5246
  "ref": "pkg:npm/boolbase@1.0.0",
5441
5247
  "dependsOn": []
5442
5248
  },
5443
- {
5444
- "ref": "pkg:npm/bplist-creator@0.1.0",
5445
- "dependsOn": [
5446
- "pkg:npm/stream-buffers@2.2.0"
5447
- ]
5448
- },
5449
- {
5450
- "ref": "pkg:npm/bplist-parser@0.3.1",
5451
- "dependsOn": [
5452
- "pkg:npm/big-integer@1.6.52"
5453
- ]
5454
- },
5455
5249
  {
5456
5250
  "ref": "pkg:npm/bplist-parser@0.3.2",
5457
5251
  "dependsOn": [
@@ -5918,10 +5712,6 @@
5918
5712
  "pkg:npm/util-deprecate@1.0.2"
5919
5713
  ]
5920
5714
  },
5921
- {
5922
- "ref": "pkg:npm/readline-sync@1.4.10",
5923
- "dependsOn": []
5924
- },
5925
5715
  {
5926
5716
  "ref": "pkg:npm/rimraf@6.1.3",
5927
5717
  "dependsOn": [
@@ -6018,14 +5808,6 @@
6018
5808
  "ref": "pkg:npm/signal-exit@3.0.7",
6019
5809
  "dependsOn": []
6020
5810
  },
6021
- {
6022
- "ref": "pkg:npm/simple-plist@1.3.1",
6023
- "dependsOn": [
6024
- "pkg:npm/bplist-creator@0.1.0",
6025
- "pkg:npm/bplist-parser@0.3.1",
6026
- "pkg:npm/plist@3.1.1"
6027
- ]
6028
- },
6029
5811
  {
6030
5812
  "ref": "pkg:npm/sisteransi@1.0.5",
6031
5813
  "dependsOn": []
@@ -6046,14 +5828,6 @@
6046
5828
  "ref": "pkg:npm/split2@4.2.0",
6047
5829
  "dependsOn": []
6048
5830
  },
6049
- {
6050
- "ref": "pkg:npm/sprintf-js@1.1.3",
6051
- "dependsOn": []
6052
- },
6053
- {
6054
- "ref": "pkg:npm/stream-buffers@2.2.0",
6055
- "dependsOn": []
6056
- },
6057
5831
  {
6058
5832
  "ref": "pkg:npm/string-width@4.2.3",
6059
5833
  "dependsOn": [
@@ -6113,10 +5887,6 @@
6113
5887
  "pkg:npm/picomatch@4.0.7"
6114
5888
  ]
6115
5889
  },
6116
- {
6117
- "ref": "pkg:npm/tmp@0.2.7",
6118
- "dependsOn": []
6119
- },
6120
5890
  {
6121
5891
  "ref": "pkg:npm/tree-kill@1.2.2",
6122
5892
  "dependsOn": []
@@ -6166,10 +5936,6 @@
6166
5936
  "ref": "pkg:npm/util-deprecate@1.0.2",
6167
5937
  "dependsOn": []
6168
5938
  },
6169
- {
6170
- "ref": "pkg:npm/uuid@7.0.3",
6171
- "dependsOn": []
6172
- },
6173
5939
  {
6174
5940
  "ref": "pkg:npm/vite@8.3.4",
6175
5941
  "dependsOn": [
@@ -6200,13 +5966,6 @@
6200
5966
  "ref": "pkg:npm/ws@8.22.0",
6201
5967
  "dependsOn": []
6202
5968
  },
6203
- {
6204
- "ref": "pkg:npm/xcode@3.0.1",
6205
- "dependsOn": [
6206
- "pkg:npm/simple-plist@1.3.1",
6207
- "pkg:npm/uuid@7.0.3"
6208
- ]
6209
- },
6210
5969
  {
6211
5970
  "ref": "pkg:npm/xml2js@0.6.2",
6212
5971
  "dependsOn": [
@@ -0,0 +1,75 @@
1
+ /** what `detectAudioFormat` makes of a file */
2
+ export interface AudioFormat {
3
+ /** the format by name: `'MIDI'`, `'WAV'`, `'Ogg Vorbis'`, `'MWA'`, `'unknown'`... */
4
+ format: string;
5
+ kind: 'midi' | 'wav' | 'soundfont' | 'compressed' | 'chip' | 'tracker' | 'sysex' | 'unknown';
6
+ }
7
+
8
+ /** the report `inspectAudio` returns: the format, the size, and the numbers that matter for that format */
9
+ export interface AudioInspection extends AudioFormat {
10
+ name: string;
11
+ bytes: number;
12
+ [detail: string]: unknown;
13
+ }
14
+
15
+ export interface RenderToWavOptions {
16
+ /** an engine name, or several separated by commas and tried in order */
17
+ synth?: string;
18
+ /** module paths imported first, to register the engines `synth` names */
19
+ modules?: string[];
20
+ /** the bytes of a SoundFont for the General MIDI voicing */
21
+ soundfont?: Uint8Array;
22
+ rate?: number;
23
+ gain?: number;
24
+ /** render only these MIDI channels, 0 to 15 */
25
+ channels?: number[];
26
+ /** 32-bit float samples instead of 16-bit PCM */
27
+ float?: boolean;
28
+ }
29
+
30
+ export interface AudioBudgetOptions {
31
+ /** render rate assumed for MIDI files; 22050 */
32
+ rate?: number;
33
+ /** a MIDI render is capped here, as the library's own cap is; 480 */
34
+ maxSeconds?: number;
35
+ /** fail when the decoded audio would hold more than this many megabytes */
36
+ maxMegabytes?: number;
37
+ /** fail for any track longer than this many seconds */
38
+ maxTrackSeconds?: number;
39
+ }
40
+
41
+ export interface AudioBudgetFile {
42
+ path: string;
43
+ format: string;
44
+ diskBytes: number;
45
+ /** bytes it adds to a page, base64 included */
46
+ pageBytes: number;
47
+ seconds: number | null;
48
+ /** bytes of stereo float samples it holds decoded, or null when that cannot be known without decoding */
49
+ decodedBytes: number | null;
50
+ }
51
+
52
+ export interface AudioBudgetReport {
53
+ files: AudioBudgetFile[];
54
+ totals: { diskBytes: number; pageBytes: number; decodedBytes: number };
55
+ problems: string[];
56
+ }
57
+
58
+ /** names a file by its content, falling back on the extension for formats with no signature */
59
+ export function detectAudioFormat(bytes: Uint8Array, name?: string): AudioFormat;
60
+ /** describes one file: its format and the numbers that matter for that format */
61
+ export function inspectAudio(bytes: Uint8Array, name?: string): Promise<AudioInspection>;
62
+ /** `"0,9"` as `[0, 9]` */
63
+ export function parseChannelList(text: string): number[];
64
+ /** renders MIDI bytes to WAV bytes through a registered engine, a SoundFont or the built-in synth */
65
+ export function renderToWav(midi: Uint8Array, options?: RenderToWavOptions): Promise<Uint8Array>;
66
+ /** resamples WAV bytes to another rate */
67
+ export function resampleWav(wav: Uint8Array, rate: number, float?: boolean): Promise<Uint8Array>;
68
+ /** how far apart two WAV files sound, in dB of log-spectrum difference */
69
+ export function compareWavs(
70
+ a: Uint8Array,
71
+ b: Uint8Array,
72
+ options?: { windowSize?: number; hop?: number; floorDb?: number },
73
+ ): Promise<{ decibels: number; windows: number }>;
74
+ /** what the audio files under these paths cost a page and a bus */
75
+ export function audioBudget(paths: string[], options?: AudioBudgetOptions): Promise<AudioBudgetReport>;