@datamoc/mw_games 0.19.0 → 0.22.0

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 (141) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/dist/ai/index.d.ts +2 -2
  3. package/dist/ai/index.d.ts.map +1 -1
  4. package/dist/ai/index.js +1 -1
  5. package/dist/ai/index.js.map +1 -1
  6. package/dist/ai/search.d.ts +49 -0
  7. package/dist/ai/search.d.ts.map +1 -1
  8. package/dist/ai/search.js +48 -0
  9. package/dist/ai/search.js.map +1 -1
  10. package/dist/audio/Channels.d.ts +19 -0
  11. package/dist/audio/Channels.d.ts.map +1 -1
  12. package/dist/audio/Channels.js +33 -4
  13. package/dist/audio/Channels.js.map +1 -1
  14. package/dist/audio/LoopTags.d.ts +37 -0
  15. package/dist/audio/LoopTags.d.ts.map +1 -0
  16. package/dist/audio/LoopTags.js +116 -0
  17. package/dist/audio/LoopTags.js.map +1 -0
  18. package/dist/audio/Midi.d.ts +5 -0
  19. package/dist/audio/Midi.d.ts.map +1 -1
  20. package/dist/audio/Midi.js +9 -1
  21. package/dist/audio/Midi.js.map +1 -1
  22. package/dist/audio/MidiRender.d.ts +42 -4
  23. package/dist/audio/MidiRender.d.ts.map +1 -1
  24. package/dist/audio/MidiRender.js +286 -199
  25. package/dist/audio/MidiRender.js.map +1 -1
  26. package/dist/audio/index.d.ts +5 -3
  27. package/dist/audio/index.d.ts.map +1 -1
  28. package/dist/audio/index.js +2 -1
  29. package/dist/audio/index.js.map +1 -1
  30. package/dist/board/Engine.d.ts +33 -0
  31. package/dist/board/Engine.d.ts.map +1 -1
  32. package/dist/board/Engine.js +448 -1
  33. package/dist/board/Engine.js.map +1 -1
  34. package/dist/board/bitboard.d.ts +132 -0
  35. package/dist/board/bitboard.d.ts.map +1 -0
  36. package/dist/board/bitboard.js +495 -0
  37. package/dist/board/bitboard.js.map +1 -0
  38. package/dist/board/chess.d.ts +16 -0
  39. package/dist/board/chess.d.ts.map +1 -1
  40. package/dist/board/chess.js +43 -0
  41. package/dist/board/chess.js.map +1 -1
  42. package/dist/board/index.d.ts +11 -3
  43. package/dist/board/index.d.ts.map +1 -1
  44. package/dist/board/index.js +6 -2
  45. package/dist/board/index.js.map +1 -1
  46. package/dist/board/openings.d.ts +58 -0
  47. package/dist/board/openings.d.ts.map +1 -0
  48. package/dist/board/openings.js +45 -0
  49. package/dist/board/openings.js.map +1 -0
  50. package/dist/board/tablebase.d.ts +118 -0
  51. package/dist/board/tablebase.d.ts.map +1 -0
  52. package/dist/board/tablebase.js +414 -0
  53. package/dist/board/tablebase.js.map +1 -0
  54. package/dist/board/tourney.d.ts +90 -0
  55. package/dist/board/tourney.d.ts.map +1 -0
  56. package/dist/board/tourney.js +1013 -0
  57. package/dist/board/tourney.js.map +1 -0
  58. package/dist/core/JavaRandom.d.ts +55 -0
  59. package/dist/core/JavaRandom.d.ts.map +1 -0
  60. package/dist/core/JavaRandom.js +81 -0
  61. package/dist/core/JavaRandom.js.map +1 -0
  62. package/dist/core/index.d.ts +2 -0
  63. package/dist/core/index.d.ts.map +1 -1
  64. package/dist/core/index.js +1 -0
  65. package/dist/core/index.js.map +1 -1
  66. package/dist/mw_games.global.js +123 -116
  67. package/dist/rpg/EventRunner.d.ts +7 -0
  68. package/dist/rpg/EventRunner.d.ts.map +1 -1
  69. package/dist/rpg/EventRunner.js +6 -0
  70. package/dist/rpg/EventRunner.js.map +1 -1
  71. package/dist/threads/index.d.ts +3 -0
  72. package/dist/threads/index.d.ts.map +1 -0
  73. package/dist/threads/index.js +2 -0
  74. package/dist/threads/index.js.map +1 -0
  75. package/dist/threads/spawn.d.ts +41 -0
  76. package/dist/threads/spawn.d.ts.map +1 -0
  77. package/dist/threads/spawn.js +143 -0
  78. package/dist/threads/spawn.js.map +1 -0
  79. package/dist/threads/worker.d.ts +51 -0
  80. package/dist/threads/worker.d.ts.map +1 -0
  81. package/dist/threads/worker.js +84 -0
  82. package/dist/threads/worker.js.map +1 -0
  83. package/dist/two-d/render/FogLayer.d.ts +68 -0
  84. package/dist/two-d/render/FogLayer.d.ts.map +1 -0
  85. package/dist/two-d/render/FogLayer.js +83 -0
  86. package/dist/two-d/render/FogLayer.js.map +1 -0
  87. package/dist/two-d/render/LiquidLayer.d.ts +62 -0
  88. package/dist/two-d/render/LiquidLayer.d.ts.map +1 -0
  89. package/dist/two-d/render/LiquidLayer.js +102 -0
  90. package/dist/two-d/render/LiquidLayer.js.map +1 -0
  91. package/dist/two-d/render/RpgmAutotile.d.ts +5 -0
  92. package/dist/two-d/render/RpgmAutotile.d.ts.map +1 -1
  93. package/dist/two-d/render/RpgmAutotile.js +4 -3
  94. package/dist/two-d/render/RpgmAutotile.js.map +1 -1
  95. package/dist/two-d/render/TileMap.d.ts +14 -2
  96. package/dist/two-d/render/TileMap.d.ts.map +1 -1
  97. package/dist/two-d/render/TileMap.js +32 -2
  98. package/dist/two-d/render/TileMap.js.map +1 -1
  99. package/dist/two-d/render/index.d.ts +4 -0
  100. package/dist/two-d/render/index.d.ts.map +1 -1
  101. package/dist/two-d/render/index.js +2 -0
  102. package/dist/two-d/render/index.js.map +1 -1
  103. package/dist/two-d/ui/Label.d.ts.map +1 -1
  104. package/dist/two-d/ui/Label.js +11 -2
  105. package/dist/two-d/ui/Label.js.map +1 -1
  106. package/dist/two-d/ui/ListView.d.ts +24 -0
  107. package/dist/two-d/ui/ListView.d.ts.map +1 -1
  108. package/dist/two-d/ui/ListView.js +97 -4
  109. package/dist/two-d/ui/ListView.js.map +1 -1
  110. package/dist/two-d/ui/MessageLog.d.ts +62 -0
  111. package/dist/two-d/ui/MessageLog.d.ts.map +1 -0
  112. package/dist/two-d/ui/MessageLog.js +114 -0
  113. package/dist/two-d/ui/MessageLog.js.map +1 -0
  114. package/dist/two-d/ui/RadioGroup.d.ts +68 -0
  115. package/dist/two-d/ui/RadioGroup.d.ts.map +1 -0
  116. package/dist/two-d/ui/RadioGroup.js +177 -0
  117. package/dist/two-d/ui/RadioGroup.js.map +1 -0
  118. package/dist/two-d/ui/TextModel.d.ts +26 -1
  119. package/dist/two-d/ui/TextModel.d.ts.map +1 -1
  120. package/dist/two-d/ui/TextModel.js +56 -7
  121. package/dist/two-d/ui/TextModel.js.map +1 -1
  122. package/dist/two-d/ui/TextSharpness.d.ts +33 -0
  123. package/dist/two-d/ui/TextSharpness.d.ts.map +1 -0
  124. package/dist/two-d/ui/TextSharpness.js +56 -0
  125. package/dist/two-d/ui/TextSharpness.js.map +1 -0
  126. package/dist/two-d/ui/index.d.ts +5 -0
  127. package/dist/two-d/ui/index.d.ts.map +1 -1
  128. package/dist/two-d/ui/index.js +3 -0
  129. package/dist/two-d/ui/index.js.map +1 -1
  130. package/dist/version.d.ts +1 -1
  131. package/dist/version.js +1 -1
  132. package/package.json +19 -2
  133. package/sbom.cdx.json +54 -28
  134. package/tools/build-tablebases.d.mts +22 -0
  135. package/tools/build-tablebases.mjs +549 -0
  136. package/tools/compile-openings.d.mts +20 -0
  137. package/tools/compile-openings.mjs +130 -0
  138. package/tools/compress-dist.d.mts +8 -0
  139. package/tools/compress-dist.mjs +76 -30
  140. package/tools/play-uci.d.mts +26 -0
  141. package/tools/play-uci.mjs +194 -0
package/sbom.cdx.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.6",
4
- "serialNumber": "urn:uuid:316ac220-52bf-5102-b492-e3d49b6d5244",
4
+ "serialNumber": "urn:uuid:c469a256-ecb3-5c57-af21-4a4fa43cfef7",
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.19.0"
13
+ "version": "0.22.0"
14
14
  }
15
15
  ]
16
16
  },
17
17
  "component": {
18
18
  "type": "library",
19
- "bom-ref": "pkg:npm/%40datamoc/mw_games@0.19.0",
19
+ "bom-ref": "pkg:npm/%40datamoc/mw_games@0.22.0",
20
20
  "name": "@datamoc/mw_games",
21
- "version": "0.19.0",
22
- "purl": "pkg:npm/%40datamoc/mw_games@0.19.0",
21
+ "version": "0.22.0",
22
+ "purl": "pkg:npm/%40datamoc/mw_games@0.22.0",
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
  {
@@ -33,15 +33,15 @@
33
33
  "components": [
34
34
  {
35
35
  "type": "library",
36
- "bom-ref": "pkg:npm/%40babylonjs/core@9.26.0",
36
+ "bom-ref": "pkg:npm/%40babylonjs/core@9.27.1",
37
37
  "name": "@babylonjs/core",
38
- "version": "9.26.0",
39
- "purl": "pkg:npm/%40babylonjs/core@9.26.0",
38
+ "version": "9.27.1",
39
+ "purl": "pkg:npm/%40babylonjs/core@9.27.1",
40
40
  "scope": "excluded",
41
41
  "hashes": [
42
42
  {
43
43
  "alg": "SHA-512",
44
- "content": "6097bb661f6f8fa5a0f0d6b0268032728185161bb35bd28b67290d9b69ef94daecd8fe371d332fdd2be06dfc072a40e91dc81ae1caddc9536549fd39e4b2e45e"
44
+ "content": "6dc1de07b60dad84620fea448598c47f39bcb53fcde1d0bca1886510d1556bd7e73ff5e21c46e6b7b87653a12cfefb3cc7f023bbef6f829726ab6aa72effb71f"
45
45
  }
46
46
  ],
47
47
  "licenses": [
@@ -54,15 +54,15 @@
54
54
  },
55
55
  {
56
56
  "type": "library",
57
- "bom-ref": "pkg:npm/%40babylonjs/loaders@9.26.0",
57
+ "bom-ref": "pkg:npm/%40babylonjs/loaders@9.27.1",
58
58
  "name": "@babylonjs/loaders",
59
- "version": "9.26.0",
60
- "purl": "pkg:npm/%40babylonjs/loaders@9.26.0",
59
+ "version": "9.27.1",
60
+ "purl": "pkg:npm/%40babylonjs/loaders@9.27.1",
61
61
  "scope": "excluded",
62
62
  "hashes": [
63
63
  {
64
64
  "alg": "SHA-512",
65
- "content": "2207e634db293eeec2c421b40bcbef377d8cd1f737c1eda697047360c758ad380d1454113be09d3f71c5ebcb1295a6743f9855f604b8d87057fb79145c001fad"
65
+ "content": "042b671f83ae0a2abb5cf34436c38fc8d05118e0519556e5778f58c0c21a95b3638e070030cb64fb0c7c933135ff2c0a1771dfae3af5edb30b4f7aa0989678da"
66
66
  }
67
67
  ],
68
68
  "licenses": [
@@ -1356,15 +1356,15 @@
1356
1356
  },
1357
1357
  {
1358
1358
  "type": "library",
1359
- "bom-ref": "pkg:npm/%40types/node@26.5.1",
1359
+ "bom-ref": "pkg:npm/%40types/node@26.6.2",
1360
1360
  "name": "@types/node",
1361
- "version": "26.5.1",
1362
- "purl": "pkg:npm/%40types/node@26.5.1",
1361
+ "version": "26.6.2",
1362
+ "purl": "pkg:npm/%40types/node@26.6.2",
1363
1363
  "scope": "excluded",
1364
1364
  "hashes": [
1365
1365
  {
1366
1366
  "alg": "SHA-512",
1367
- "content": "0b3366d857b35b8551fcb8c6eb251d88480b13fac043d4a58f9802bbf0b656b75c5bb2346a1359f0345b1d3ef3399eabdce36077f6ec4087926a80c6addd42ea"
1367
+ "content": "5f53f6d6c70cbf8cc628b62a8dd1a368a6bb08e6b444a55861964dfcd7ef2d0d497a0c4585d869646fcbca7f005f1e820d46af280775d6fe81bdfa640c1c8af2"
1368
1368
  }
1369
1369
  ],
1370
1370
  "licenses": [
@@ -3202,6 +3202,27 @@
3202
3202
  }
3203
3203
  ]
3204
3204
  },
3205
+ {
3206
+ "type": "library",
3207
+ "bom-ref": "pkg:npm/multithreading@0.3.52",
3208
+ "name": "multithreading",
3209
+ "version": "0.3.52",
3210
+ "purl": "pkg:npm/multithreading@0.3.52",
3211
+ "scope": "excluded",
3212
+ "hashes": [
3213
+ {
3214
+ "alg": "SHA-512",
3215
+ "content": "5e0fd81f59393ee63e41659f3c215ec39c6c529945f5cf9726a6343df95239f0186f5b96b876339b6cf328f920de2e406caf8e254b20cd7ef0b41f6081d9b4c6"
3216
+ }
3217
+ ],
3218
+ "licenses": [
3219
+ {
3220
+ "license": {
3221
+ "id": "MIT"
3222
+ }
3223
+ }
3224
+ ]
3225
+ },
3205
3226
  {
3206
3227
  "type": "library",
3207
3228
  "bom-ref": "pkg:npm/nanoid@3.3.19",
@@ -4402,13 +4423,13 @@
4402
4423
  ],
4403
4424
  "dependencies": [
4404
4425
  {
4405
- "ref": "pkg:npm/%40babylonjs/core@9.26.0",
4426
+ "ref": "pkg:npm/%40babylonjs/core@9.27.1",
4406
4427
  "dependsOn": []
4407
4428
  },
4408
4429
  {
4409
- "ref": "pkg:npm/%40babylonjs/loaders@9.26.0",
4430
+ "ref": "pkg:npm/%40babylonjs/loaders@9.27.1",
4410
4431
  "dependsOn": [
4411
- "pkg:npm/%40babylonjs/core@9.26.0",
4432
+ "pkg:npm/%40babylonjs/core@9.27.1",
4412
4433
  "pkg:npm/babylonjs-gltf2interface@9.26.0"
4413
4434
  ]
4414
4435
  },
@@ -4453,18 +4474,19 @@
4453
4474
  ]
4454
4475
  },
4455
4476
  {
4456
- "ref": "pkg:npm/%40datamoc/mw_games@0.19.0",
4477
+ "ref": "pkg:npm/%40datamoc/mw_games@0.22.0",
4457
4478
  "dependsOn": [
4458
- "pkg:npm/%40babylonjs/core@9.26.0",
4459
- "pkg:npm/%40babylonjs/loaders@9.26.0",
4479
+ "pkg:npm/%40babylonjs/core@9.27.1",
4480
+ "pkg:npm/%40babylonjs/loaders@9.27.1",
4460
4481
  "pkg:npm/%40capacitor/android@7.6.9",
4461
4482
  "pkg:npm/%40capacitor/cli@7.6.9",
4462
4483
  "pkg:npm/%40capacitor/core@7.6.9",
4463
4484
  "pkg:npm/%40capacitor/ios@7.6.9",
4464
- "pkg:npm/%40types/node@26.5.1",
4485
+ "pkg:npm/%40types/node@26.6.2",
4465
4486
  "pkg:npm/%40types/ws@8.18.1",
4466
4487
  "pkg:npm/fengari@0.1.5",
4467
4488
  "pkg:npm/json5@2.2.3",
4489
+ "pkg:npm/multithreading@0.3.52",
4468
4490
  "pkg:npm/pixi.js@8.20.1",
4469
4491
  "pkg:npm/playwright-core@1.63.0",
4470
4492
  "pkg:npm/prettier@3.9.6",
@@ -4776,11 +4798,11 @@
4776
4798
  {
4777
4799
  "ref": "pkg:npm/%40types/fs-extra@8.1.5",
4778
4800
  "dependsOn": [
4779
- "pkg:npm/%40types/node@26.5.1"
4801
+ "pkg:npm/%40types/node@26.6.2"
4780
4802
  ]
4781
4803
  },
4782
4804
  {
4783
- "ref": "pkg:npm/%40types/node@26.5.1",
4805
+ "ref": "pkg:npm/%40types/node@26.6.2",
4784
4806
  "dependsOn": [
4785
4807
  "pkg:npm/undici-types@8.9.0"
4786
4808
  ]
@@ -4792,7 +4814,7 @@
4792
4814
  {
4793
4815
  "ref": "pkg:npm/%40types/ws@8.18.1",
4794
4816
  "dependsOn": [
4795
- "pkg:npm/%40types/node@26.5.1"
4817
+ "pkg:npm/%40types/node@26.6.2"
4796
4818
  ]
4797
4819
  },
4798
4820
  {
@@ -5196,6 +5218,10 @@
5196
5218
  "ref": "pkg:npm/ms@2.1.3",
5197
5219
  "dependsOn": []
5198
5220
  },
5221
+ {
5222
+ "ref": "pkg:npm/multithreading@0.3.52",
5223
+ "dependsOn": []
5224
+ },
5199
5225
  {
5200
5226
  "ref": "pkg:npm/nanoid@3.3.19",
5201
5227
  "dependsOn": []
@@ -5532,7 +5558,7 @@
5532
5558
  {
5533
5559
  "ref": "pkg:npm/vite@8.3.0",
5534
5560
  "dependsOn": [
5535
- "pkg:npm/%40types/node@26.5.1",
5561
+ "pkg:npm/%40types/node@26.6.2",
5536
5562
  "pkg:npm/fsevents@2.3.3",
5537
5563
  "pkg:npm/lightningcss@1.33.0",
5538
5564
  "pkg:npm/picomatch@4.0.7",
@@ -0,0 +1,22 @@
1
+ export interface TablebaseSpec {
2
+ white: Array<'queen' | 'rook' | 'bishop' | 'knight'>;
3
+ }
4
+
5
+ export interface TablebaseSolution {
6
+ wdl: number[];
7
+ dtm: number[];
8
+ positions: number;
9
+ }
10
+
11
+ /**
12
+ * Solves one white-extras-against-lone-king ending by retrograde analysis.
13
+ * Self-contained for `threads.spawn`: everything it touches is nested inside.
14
+ * `lower` carries the smaller tables captures convert into, null for 3-piece.
15
+ */
16
+ export function tablebaseTask(
17
+ spec: TablebaseSpec,
18
+ lower: Record<string, { wdl: number[]; dtm: number[] }> | null,
19
+ ): TablebaseSolution;
20
+
21
+ /** `KQBK` from an ending id's letters, throwing on anything unshaped. */
22
+ export function specOf(id: string): TablebaseSpec;