cubing 0.29.1 → 0.29.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 (89) hide show
  1. package/README.md +1 -6
  2. package/dist/esm/alg/index.js +1 -1
  3. package/dist/esm/bluetooth/index.js +36 -31
  4. package/dist/esm/bluetooth/index.js.map +2 -2
  5. package/dist/esm/{chunk-NI7U4XAZ.js → chunk-7OIUETFU.js} +9 -8
  6. package/dist/esm/chunk-7OIUETFU.js.map +7 -0
  7. package/dist/esm/{chunk-XRZBPKES.js → chunk-EOEJDDXN.js} +95 -58
  8. package/dist/esm/chunk-EOEJDDXN.js.map +7 -0
  9. package/dist/esm/{chunk-WXCNEGW3.js → chunk-HR5D6SD4.js} +2 -2
  10. package/dist/esm/{chunk-WXCNEGW3.js.map → chunk-HR5D6SD4.js.map} +2 -2
  11. package/dist/esm/{chunk-XT3R2ENM.js → chunk-J5KJ2WWA.js} +35 -34
  12. package/dist/esm/chunk-J5KJ2WWA.js.map +7 -0
  13. package/dist/esm/{chunk-ZNAYJGVL.js → chunk-NUMCMGLU.js} +2 -2
  14. package/dist/esm/{chunk-ZNAYJGVL.js.map → chunk-NUMCMGLU.js.map} +0 -0
  15. package/dist/esm/{chunk-AHEXXC6V.js → chunk-OT7AIIFN.js} +4 -4
  16. package/dist/esm/chunk-OT7AIIFN.js.map +7 -0
  17. package/dist/esm/{chunk-XU5ILFX5.js → chunk-POCUG6QW.js} +6 -4
  18. package/dist/esm/{chunk-XU5ILFX5.js.map → chunk-POCUG6QW.js.map} +2 -2
  19. package/dist/esm/{chunk-OX6O2ZO5.js → chunk-QHWK5RXN.js} +1 -1
  20. package/dist/esm/chunk-QHWK5RXN.js.map +7 -0
  21. package/dist/esm/{chunk-GW4FGG42.js → chunk-RH4WZIGC.js} +2 -2
  22. package/dist/esm/{chunk-GW4FGG42.js.map → chunk-RH4WZIGC.js.map} +0 -0
  23. package/dist/esm/{chunk-2JDBIQSV.js → chunk-RIXFKOD6.js} +7 -7
  24. package/dist/esm/{chunk-2JDBIQSV.js.map → chunk-RIXFKOD6.js.map} +2 -2
  25. package/dist/esm/{chunk-2IZUSAXQ.js → chunk-WEYPAZEE.js} +1 -1
  26. package/dist/esm/{chunk-2IZUSAXQ.js.map → chunk-WEYPAZEE.js.map} +1 -1
  27. package/dist/esm/{chunk-WYKXX2XY.js → chunk-WNZXZ4MW.js} +10 -8
  28. package/dist/esm/{chunk-WYKXX2XY.js.map → chunk-WNZXZ4MW.js.map} +2 -2
  29. package/dist/esm/{chunk-U2ONHTIX.js → chunk-YD2TMJI2.js} +33 -31
  30. package/dist/esm/chunk-YD2TMJI2.js.map +7 -0
  31. package/dist/esm/kpuzzle/index.js +2 -2
  32. package/dist/esm/notation/index.js +2 -2
  33. package/dist/esm/protocol/index.js +4 -4
  34. package/dist/esm/puzzle-geometry/index.js +110 -84
  35. package/dist/esm/puzzle-geometry/index.js.map +2 -2
  36. package/dist/esm/puzzles/index.js +10 -6
  37. package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js → puzzles-dynamic-side-events-3K26JTOG.js} +2 -2
  38. package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js.map → puzzles-dynamic-side-events-3K26JTOG.js.map} +1 -1
  39. package/dist/esm/scramble/index.js +3 -3
  40. package/dist/esm/search/index.js +8 -8
  41. package/dist/esm/{search-dynamic-sgs-side-events-4H3X5HLH.js → search-dynamic-sgs-side-events-AE3TLLPA.js} +6 -6
  42. package/dist/esm/search-dynamic-sgs-side-events-AE3TLLPA.js.map +7 -0
  43. package/dist/esm/{search-dynamic-sgs-unofficial-7IRW4LVD.js → search-dynamic-sgs-unofficial-JUXMNMNO.js} +122 -67
  44. package/dist/esm/search-dynamic-sgs-unofficial-JUXMNMNO.js.map +7 -0
  45. package/dist/esm/{search-dynamic-solve-3x3x3-7XZTYQMO.js → search-dynamic-solve-3x3x3-SA75BI5I.js} +649 -405
  46. package/dist/esm/search-dynamic-solve-3x3x3-SA75BI5I.js.map +7 -0
  47. package/dist/esm/{search-dynamic-solve-4x4x4-7JTJCCSY.js → search-dynamic-solve-4x4x4-ALKH43DT.js} +399 -150
  48. package/dist/esm/search-dynamic-solve-4x4x4-ALKH43DT.js.map +7 -0
  49. package/dist/esm/{search-dynamic-solve-fto-4LI23P6K.js → search-dynamic-solve-fto-5B5ZESQC.js} +74 -34
  50. package/dist/esm/search-dynamic-solve-fto-5B5ZESQC.js.map +7 -0
  51. package/dist/esm/{search-dynamic-solve-kilominx-3HEVQ4MC.js → search-dynamic-solve-kilominx-OY4VIARG.js} +136 -71
  52. package/dist/esm/search-dynamic-solve-kilominx-OY4VIARG.js.map +7 -0
  53. package/dist/esm/{search-dynamic-solve-master_tetraminx-UB32C7MM.js → search-dynamic-solve-master_tetraminx-GE2BTRGI.js} +84 -41
  54. package/dist/esm/search-dynamic-solve-master_tetraminx-GE2BTRGI.js.map +7 -0
  55. package/dist/esm/{search-dynamic-solve-sq1-HA72TYF2.js → search-dynamic-solve-sq1-W6PSSLR6.js} +129 -54
  56. package/dist/esm/search-dynamic-solve-sq1-W6PSSLR6.js.map +7 -0
  57. package/dist/esm/{search-worker-inside-generated-string-ZEY77HTF.js → search-worker-inside-generated-string-7HYFSSPW.js} +28 -28
  58. package/dist/esm/search-worker-inside-generated-string-7HYFSSPW.js.map +7 -0
  59. package/dist/esm/{search-worker-js-entry-T6YIT7YD.js → search-worker-js-entry-SNUA3SOE.js} +44 -35
  60. package/dist/esm/search-worker-js-entry-SNUA3SOE.js.map +7 -0
  61. package/dist/esm/{search-worker-ts-entry-OUEC4L5I.js → search-worker-ts-entry-LNB7KNFY.js} +3 -3
  62. package/dist/esm/{search-worker-ts-entry-OUEC4L5I.js.map → search-worker-ts-entry-LNB7KNFY.js.map} +0 -0
  63. package/dist/esm/stream/index.js +1 -1
  64. package/dist/esm/stream/index.js.map +2 -2
  65. package/dist/esm/twisty/index.js +287 -273
  66. package/dist/esm/twisty/index.js.map +2 -2
  67. package/dist/esm/{twisty-dynamic-3d-AZUSXQ5S.js → twisty-dynamic-3d-PU74EKRA.js} +57 -59
  68. package/dist/esm/twisty-dynamic-3d-PU74EKRA.js.map +7 -0
  69. package/dist/types/{TwizzleLink-bef52ecd.d.ts → TwizzleLink-ce20e840.d.ts} +1 -1
  70. package/dist/types/puzzles/index.d.ts +5 -3
  71. package/dist/types/twisty/index.d.ts +2 -2
  72. package/package.json +51 -147
  73. package/dist/esm/chunk-AHEXXC6V.js.map +0 -7
  74. package/dist/esm/chunk-NI7U4XAZ.js.map +0 -7
  75. package/dist/esm/chunk-OX6O2ZO5.js.map +0 -7
  76. package/dist/esm/chunk-U2ONHTIX.js.map +0 -7
  77. package/dist/esm/chunk-XRZBPKES.js.map +0 -7
  78. package/dist/esm/chunk-XT3R2ENM.js.map +0 -7
  79. package/dist/esm/search-dynamic-sgs-side-events-4H3X5HLH.js.map +0 -7
  80. package/dist/esm/search-dynamic-sgs-unofficial-7IRW4LVD.js.map +0 -7
  81. package/dist/esm/search-dynamic-solve-3x3x3-7XZTYQMO.js.map +0 -7
  82. package/dist/esm/search-dynamic-solve-4x4x4-7JTJCCSY.js.map +0 -7
  83. package/dist/esm/search-dynamic-solve-fto-4LI23P6K.js.map +0 -7
  84. package/dist/esm/search-dynamic-solve-kilominx-3HEVQ4MC.js.map +0 -7
  85. package/dist/esm/search-dynamic-solve-master_tetraminx-UB32C7MM.js.map +0 -7
  86. package/dist/esm/search-dynamic-solve-sq1-HA72TYF2.js.map +0 -7
  87. package/dist/esm/search-worker-inside-generated-string-ZEY77HTF.js.map +0 -7
  88. package/dist/esm/search-worker-js-entry-T6YIT7YD.js.map +0 -7
  89. package/dist/esm/twisty-dynamic-3d-AZUSXQ5S.js.map +0 -7
@@ -3,10 +3,10 @@ import {
3
3
  StickeringManager,
4
4
  experimental3x3x3KPuzzle,
5
5
  experimentalStickerings
6
- } from "./chunk-U2ONHTIX.js";
6
+ } from "./chunk-YD2TMJI2.js";
7
7
  import {
8
8
  KPuzzle
9
- } from "./chunk-XU5ILFX5.js";
9
+ } from "./chunk-POCUG6QW.js";
10
10
 
11
11
  // src/cubing/puzzles/events.ts
12
12
  var wcaEvents = {
@@ -19,11 +19,11 @@ var wcaEvents = {
19
19
  "333bf": { puzzleID: "3x3x3", eventName: "3x3x3 Blindfolded" },
20
20
  "333fm": { puzzleID: "3x3x3", eventName: "3x3x3 Fewest Moves" },
21
21
  "333oh": { puzzleID: "3x3x3", eventName: "3x3x3 One-Handed" },
22
- "clock": { puzzleID: "clock", eventName: "Clock" },
23
- "minx": { puzzleID: "megaminx", eventName: "Megaminx" },
24
- "pyram": { puzzleID: "pyraminx", eventName: "Pyraminx" },
25
- "skewb": { puzzleID: "skewb", eventName: "Skewb" },
26
- "sq1": { puzzleID: "square1", eventName: "Square-1" },
22
+ clock: { puzzleID: "clock", eventName: "Clock" },
23
+ minx: { puzzleID: "megaminx", eventName: "Megaminx" },
24
+ pyram: { puzzleID: "pyraminx", eventName: "Pyraminx" },
25
+ skewb: { puzzleID: "skewb", eventName: "Skewb" },
26
+ sq1: { puzzleID: "square1", eventName: "Square-1" },
27
27
  "444bf": { puzzleID: "4x4x4", eventName: "4x4x4 Blindfolded" },
28
28
  "555bf": { puzzleID: "5x5x5", eventName: "5x5x5 Blindfolded" },
29
29
  "333mb": { puzzleID: "3x3x3", eventName: "3x3x3 Multi-Blind" }
@@ -31,7 +31,7 @@ var wcaEvents = {
31
31
  function wcaEventInfo(event) {
32
32
  return wcaEvents[event] ?? null;
33
33
  }
34
- var events = {
34
+ var twizzleEvents = {
35
35
  ...wcaEvents,
36
36
  fto: { puzzleID: "fto", eventName: "Face-Turning Octahedron" },
37
37
  master_tetraminx: {
@@ -48,7 +48,7 @@ var events = {
48
48
  }
49
49
  };
50
50
  function eventInfo(event) {
51
- return events[event] ?? null;
51
+ return twizzleEvents[event] ?? null;
52
52
  }
53
53
 
54
54
  // src/cubing/puzzles/stickerings/cube-stickerings.ts
@@ -91,11 +91,12 @@ async function cubeAppearance(puzzleLoader, stickering) {
91
91
  switch (stickering) {
92
92
  case "full":
93
93
  break;
94
- case "PLL":
94
+ case "PLL": {
95
95
  dimF2L();
96
96
  setPLL();
97
97
  break;
98
- case "CLS":
98
+ }
99
+ case "CLS": {
99
100
  dimF2L();
100
101
  puzzleStickering.set(cornerDFR(), "Regular" /* Regular */);
101
102
  puzzleStickering.set(LL(), "Ignoriented" /* Ignoriented */);
@@ -105,17 +106,20 @@ async function cubeAppearance(puzzleLoader, stickering) {
105
106
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
106
107
  );
107
108
  break;
108
- case "OLL":
109
+ }
110
+ case "OLL": {
109
111
  dimF2L();
110
112
  setOLL();
111
113
  break;
112
- case "COLL":
114
+ }
115
+ case "COLL": {
113
116
  dimF2L();
114
117
  puzzleStickering.set(m.and([LL(), EDGES()]), "Ignoriented" /* Ignoriented */);
115
118
  puzzleStickering.set(m.and([LL(), CENTERS()]), "Dim" /* Dim */);
116
119
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
117
120
  break;
118
- case "OCLL":
121
+ }
122
+ case "OCLL": {
119
123
  dimF2L();
120
124
  dimOLL();
121
125
  puzzleStickering.set(
@@ -123,49 +127,58 @@ async function cubeAppearance(puzzleLoader, stickering) {
123
127
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
124
128
  );
125
129
  break;
126
- case "CLL":
130
+ }
131
+ case "CLL": {
127
132
  dimF2L();
128
133
  puzzleStickering.set(
129
134
  m.not(m.and([CORNERS(), LL()])),
130
135
  "Dim" /* Dim */
131
136
  );
132
137
  break;
133
- case "ELL":
138
+ }
139
+ case "ELL": {
134
140
  dimF2L();
135
141
  puzzleStickering.set(LL(), "Dim" /* Dim */);
136
142
  puzzleStickering.set(m.and([LL(), EDGES()]), "Regular" /* Regular */);
137
143
  break;
138
- case "ELS":
144
+ }
145
+ case "ELS": {
139
146
  dimF2L();
140
147
  setOLL();
141
148
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Ignored" /* Ignored */);
142
149
  puzzleStickering.set(edgeFR(), "Regular" /* Regular */);
143
150
  puzzleStickering.set(cornerDFR(), "Ignored" /* Ignored */);
144
151
  break;
145
- case "LL":
152
+ }
153
+ case "LL": {
146
154
  dimF2L();
147
155
  break;
148
- case "F2L":
156
+ }
157
+ case "F2L": {
149
158
  puzzleStickering.set(LL(), "Ignored" /* Ignored */);
150
159
  break;
151
- case "ZBLL":
160
+ }
161
+ case "ZBLL": {
152
162
  dimF2L();
153
163
  puzzleStickering.set(LL(), "PermuteNonPrimary" /* PermuteNonPrimary */);
154
164
  puzzleStickering.set(centerLL(), "Dim" /* Dim */);
155
165
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
156
166
  break;
157
- case "ZBLS":
167
+ }
168
+ case "ZBLS": {
158
169
  dimF2L();
159
170
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
160
171
  setOLL();
161
172
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Ignored" /* Ignored */);
162
173
  break;
163
- case "VLS":
174
+ }
175
+ case "VLS": {
164
176
  dimF2L();
165
177
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
166
178
  setOLL();
167
179
  break;
168
- case "WVLS":
180
+ }
181
+ case "WVLS": {
169
182
  dimF2L();
170
183
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
171
184
  puzzleStickering.set(m.and([LL(), EDGES()]), "Ignoriented" /* Ignoriented */);
@@ -175,20 +188,23 @@ async function cubeAppearance(puzzleLoader, stickering) {
175
188
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
176
189
  );
177
190
  break;
178
- case "LS":
191
+ }
192
+ case "LS": {
179
193
  dimF2L();
180
194
  puzzleStickering.set(slotFR(), "Regular" /* Regular */);
181
195
  puzzleStickering.set(LL(), "Ignored" /* Ignored */);
182
196
  puzzleStickering.set(centerLL(), "Dim" /* Dim */);
183
197
  break;
184
- case "EO":
198
+ }
199
+ case "EO": {
185
200
  puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
186
201
  puzzleStickering.set(
187
202
  EDGES(),
188
203
  "OrientationWithoutPermutation" /* OrientationWithoutPermutation */
189
204
  );
190
205
  break;
191
- case "EOline":
206
+ }
207
+ case "EOline": {
192
208
  puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
193
209
  puzzleStickering.set(
194
210
  EDGES(),
@@ -196,7 +212,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
196
212
  );
197
213
  puzzleStickering.set(m.and(m.moves(["D", "M"])), "Regular" /* Regular */);
198
214
  break;
199
- case "EOcross":
215
+ }
216
+ case "EOcross": {
200
217
  puzzleStickering.set(
201
218
  EDGES(),
202
219
  "OrientationWithoutPermutation" /* OrientationWithoutPermutation */
@@ -204,19 +221,23 @@ async function cubeAppearance(puzzleLoader, stickering) {
204
221
  puzzleStickering.set(m.move("D"), "Regular" /* Regular */);
205
222
  puzzleStickering.set(CORNERS(), "Ignored" /* Ignored */);
206
223
  break;
207
- case "CMLL":
224
+ }
225
+ case "CMLL": {
208
226
  puzzleStickering.set(F2L(), "Dim" /* Dim */);
209
227
  puzzleStickering.set(L6E(), "Ignored" /* Ignored */);
210
228
  puzzleStickering.set(m.and([LL(), CORNERS()]), "Regular" /* Regular */);
211
229
  break;
212
- case "L10P":
230
+ }
231
+ case "L10P": {
213
232
  puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
214
233
  puzzleStickering.set(m.and([CORNERS(), LL()]), "Regular" /* Regular */);
215
234
  break;
216
- case "L6E":
235
+ }
236
+ case "L6E": {
217
237
  puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
218
238
  break;
219
- case "L6EO":
239
+ }
240
+ case "L6EO": {
220
241
  puzzleStickering.set(m.not(L6E()), "Dim" /* Dim */);
221
242
  puzzleStickering.set(
222
243
  L6E(),
@@ -227,7 +248,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
227
248
  "OrientationStickers" /* OrientationStickers */
228
249
  );
229
250
  break;
230
- case "Daisy":
251
+ }
252
+ case "Daisy": {
231
253
  puzzleStickering.set(m.all(), "Ignored" /* Ignored */);
232
254
  puzzleStickering.set(CENTERS(), "Dim" /* Dim */);
233
255
  puzzleStickering.set(
@@ -239,7 +261,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
239
261
  "IgnoreNonPrimary" /* IgnoreNonPrimary */
240
262
  );
241
263
  break;
242
- case "Cross":
264
+ }
265
+ case "Cross": {
243
266
  puzzleStickering.set(m.all(), "Ignored" /* Ignored */);
244
267
  puzzleStickering.set(CENTERS(), "Dim" /* Dim */);
245
268
  puzzleStickering.set(
@@ -251,7 +274,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
251
274
  "Regular" /* Regular */
252
275
  );
253
276
  break;
254
- case "2x2x2":
277
+ }
278
+ case "2x2x2": {
255
279
  puzzleStickering.set(
256
280
  m.or(m.moves(["U", "F", "R"])),
257
281
  "Ignored" /* Ignored */
@@ -261,7 +285,8 @@ async function cubeAppearance(puzzleLoader, stickering) {
261
285
  "Dim" /* Dim */
262
286
  );
263
287
  break;
264
- case "2x2x3":
288
+ }
289
+ case "2x2x3": {
265
290
  puzzleStickering.set(m.all(), "Dim" /* Dim */);
266
291
  puzzleStickering.set(
267
292
  m.or(m.moves(["U", "F", "R"])),
@@ -276,16 +301,20 @@ async function cubeAppearance(puzzleLoader, stickering) {
276
301
  "Regular" /* Regular */
277
302
  );
278
303
  break;
279
- case "Void Cube":
304
+ }
305
+ case "Void Cube": {
280
306
  puzzleStickering.set(CENTERS(), "Invisible" /* Invisible */);
281
307
  break;
308
+ }
282
309
  case "picture":
283
- case "invisible":
310
+ case "invisible": {
284
311
  puzzleStickering.set(m.all(), "Invisible" /* Invisible */);
285
312
  break;
286
- case "centers-only":
313
+ }
314
+ case "centers-only": {
287
315
  puzzleStickering.set(m.not(CENTERS()), "Ignored" /* Ignored */);
288
316
  break;
317
+ }
289
318
  default:
290
319
  console.warn(
291
320
  `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`
@@ -371,11 +400,11 @@ var cube2x2x2 = {
371
400
  fullName: "2\xD72\xD72 Cube",
372
401
  kpuzzle: getCached(
373
402
  async () => new KPuzzle(
374
- (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).cube2x2x2JSON
403
+ (await import("./puzzles-dynamic-side-events-3K26JTOG.js")).cube2x2x2JSON
375
404
  )
376
405
  ),
377
406
  svg: async () => {
378
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).cube2x2x2SVG;
407
+ return (await import("./puzzles-dynamic-side-events-3K26JTOG.js")).cube2x2x2SVG;
379
408
  },
380
409
  pg: getCached(async () => {
381
410
  return asyncGetPuzzleGeometry("2x2x2");
@@ -414,11 +443,11 @@ var clock = {
414
443
  inventionYear: 1988,
415
444
  kpuzzle: getCached(
416
445
  async () => new KPuzzle(
417
- (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).clockJSON
446
+ (await import("./puzzles-dynamic-side-events-3K26JTOG.js")).clockJSON
418
447
  )
419
448
  ),
420
449
  svg: getCached(async () => {
421
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).clockSVG;
450
+ return (await import("./puzzles-dynamic-side-events-3K26JTOG.js")).clockSVG;
422
451
  })
423
452
  };
424
453
 
@@ -451,43 +480,49 @@ async function ftoStickering(puzzleLoader, stickering) {
451
480
  switch (stickering) {
452
481
  case "full":
453
482
  break;
454
- case "experimental-fto-fc":
483
+ case "experimental-fto-fc": {
455
484
  puzzleStickering.set(
456
485
  m.not(experimentalFTO_FC()),
457
486
  "Ignored" /* Ignored */
458
487
  );
459
488
  break;
460
- case "experimental-fto-f2t":
489
+ }
490
+ case "experimental-fto-f2t": {
461
491
  puzzleStickering.set(
462
492
  m.not(experimentalFTO_F2T()),
463
493
  "Ignored" /* Ignored */
464
494
  );
465
495
  puzzleStickering.set(experimentalFTO_FC(), "Dim" /* Dim */);
466
496
  break;
467
- case "experimental-fto-sc":
497
+ }
498
+ case "experimental-fto-sc": {
468
499
  puzzleStickering.set(
469
500
  m.not(experimentalFTO_SC()),
470
501
  "Ignored" /* Ignored */
471
502
  );
472
503
  puzzleStickering.set(experimentalFTO_F2T(), "Dim" /* Dim */);
473
504
  break;
474
- case "experimental-fto-l2c":
505
+ }
506
+ case "experimental-fto-l2c": {
475
507
  puzzleStickering.set(
476
508
  m.not(experimentalFTO_L2C()),
477
509
  "Ignored" /* Ignored */
478
510
  );
479
511
  puzzleStickering.set(experimentalFTO_SC(), "Dim" /* Dim */);
480
512
  break;
481
- case "experimental-fto-lbt":
513
+ }
514
+ case "experimental-fto-lbt": {
482
515
  puzzleStickering.set(
483
516
  m.not(experimentalFTO_LBT()),
484
517
  "Ignored" /* Ignored */
485
518
  );
486
519
  puzzleStickering.set(experimentalFTO_L2C(), "Dim" /* Dim */);
487
520
  break;
488
- case "experimental-fto-l3t":
521
+ }
522
+ case "experimental-fto-l3t": {
489
523
  puzzleStickering.set(experimentalFTO_LBT(), "Dim" /* Dim */);
490
524
  break;
525
+ }
491
526
  default:
492
527
  console.warn(
493
528
  `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`
@@ -576,7 +611,7 @@ var PyraminxPuzzleLoader = class extends PGPuzzleLoader {
576
611
  inventedBy: ["Uwe Meffert"]
577
612
  });
578
613
  this.svg = getCached(async () => {
579
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).pyraminxSVG;
614
+ return (await import("./puzzles-dynamic-side-events-3K26JTOG.js")).pyraminxSVG;
580
615
  });
581
616
  }
582
617
  };
@@ -590,11 +625,11 @@ var square1 = {
590
625
  inventionYear: 1990,
591
626
  kpuzzle: getCached(
592
627
  async () => new KPuzzle(
593
- (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).sq1HyperOrbitJSON
628
+ (await import("./puzzles-dynamic-side-events-3K26JTOG.js")).sq1HyperOrbitJSON
594
629
  )
595
630
  ),
596
631
  svg: getCached(async () => {
597
- return (await import("./puzzles-dynamic-side-events-5C7LMBWX.js")).sq1HyperOrbitSVG;
632
+ return (await import("./puzzles-dynamic-side-events-3K26JTOG.js")).sq1HyperOrbitSVG;
598
633
  })
599
634
  };
600
635
 
@@ -679,22 +714,22 @@ var puzzles = {
679
714
  fullName: "40\xD740\xD740 Cube"
680
715
  }),
681
716
  clock,
682
- "megaminx": megaminx,
717
+ megaminx,
683
718
  pyraminx,
684
- "skewb": new PGPuzzleLoader({
719
+ skewb: new PGPuzzleLoader({
685
720
  id: "skewb",
686
721
  fullName: "Skewb",
687
722
  inventedBy: ["Tony Durham"]
688
723
  }),
689
724
  square1,
690
- "fto": fto,
691
- "gigaminx": new PGPuzzleLoader({
725
+ fto,
726
+ gigaminx: new PGPuzzleLoader({
692
727
  id: "gigaminx",
693
728
  fullName: "Gigaminx",
694
729
  inventedBy: ["Tyler Fox"],
695
730
  inventionYear: 2006
696
731
  }),
697
- "master_tetraminx": new PGPuzzleLoader({
732
+ master_tetraminx: new PGPuzzleLoader({
698
733
  pgID: "master tetraminx",
699
734
  id: "master_tetraminx",
700
735
  fullName: "Master Tetraminx",
@@ -702,14 +737,16 @@ var puzzles = {
702
737
  inventionYear: 2002
703
738
  }),
704
739
  kilominx,
705
- "redi_cube": rediCube
740
+ redi_cube: rediCube
706
741
  };
707
742
 
708
743
  export {
744
+ wcaEvents,
709
745
  wcaEventInfo,
746
+ twizzleEvents,
710
747
  eventInfo,
711
748
  cube2x2x2,
712
749
  cube3x3x3,
713
750
  puzzles
714
751
  };
715
- //# sourceMappingURL=chunk-XRZBPKES.js.map
752
+ //# sourceMappingURL=chunk-EOEJDDXN.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/puzzles/events.ts", "../../src/cubing/puzzles/stickerings/cube-stickerings.ts", "../../src/cubing/puzzles/async/lazy-cached.ts", "../../src/cubing/puzzles/async/async-pg3d.ts", "../../src/cubing/puzzles/implementations/2x2x2/index.ts", "../../src/cubing/puzzles/implementations/3x3x3/index.ts", "../../src/cubing/puzzles/implementations/clock/index.ts", "../../src/cubing/puzzles/stickerings/fto-stickerings.ts", "../../src/cubing/puzzles/implementations/fto/index.ts", "../../src/cubing/puzzles/stickerings/megaminx-stickerings.ts", "../../src/cubing/puzzles/implementations/megaminx/index.ts", "../../src/cubing/puzzles/implementations/pyraminx/index.ts", "../../src/cubing/puzzles/implementations/square1/index.ts", "../../src/cubing/puzzles/implementations/kilominx/index.ts", "../../src/cubing/puzzles/implementations/redi-cube/index.ts", "../../src/cubing/puzzles/implementations/4x4x4/index.ts", "../../src/cubing/puzzles/index.ts"],
4
+ "sourcesContent": ["import type { PuzzleID } from \"../twisty\";\n\ninterface EventInfo {\n puzzleID: PuzzleID;\n eventName: string;\n}\n\nexport const wcaEvents: Record<string, EventInfo> = {\n \"333\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Cube\" },\n \"222\": { puzzleID: \"2x2x2\", eventName: \"2x2x2 Cube\" },\n \"444\": { puzzleID: \"4x4x4\", eventName: \"4x4x4 Cube\" },\n \"555\": { puzzleID: \"5x5x5\", eventName: \"5x5x5 Cube\" },\n \"666\": { puzzleID: \"6x6x6\", eventName: \"6x6x6 Cube\" },\n \"777\": { puzzleID: \"7x7x7\", eventName: \"7x7x7 Cube\" },\n \"333bf\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Blindfolded\" },\n \"333fm\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Fewest Moves\" },\n \"333oh\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 One-Handed\" },\n clock: { puzzleID: \"clock\", eventName: \"Clock\" },\n minx: { puzzleID: \"megaminx\", eventName: \"Megaminx\" },\n pyram: { puzzleID: \"pyraminx\", eventName: \"Pyraminx\" },\n skewb: { puzzleID: \"skewb\", eventName: \"Skewb\" },\n sq1: { puzzleID: \"square1\", eventName: \"Square-1\" },\n \"444bf\": { puzzleID: \"4x4x4\", eventName: \"4x4x4 Blindfolded\" },\n \"555bf\": { puzzleID: \"5x5x5\", eventName: \"5x5x5 Blindfolded\" },\n \"333mb\": { puzzleID: \"3x3x3\", eventName: \"3x3x3 Multi-Blind\" },\n};\n\n/** @category Event Info */\nexport function wcaEventInfo(event: string): EventInfo | null {\n return wcaEvents[event] ?? null;\n}\n\nexport const twizzleEvents: Record<string, EventInfo> = {\n ...wcaEvents,\n fto: { puzzleID: \"fto\", eventName: \"Face-Turning Octahedron\" },\n master_tetraminx: {\n puzzleID: \"master_tetraminx\",\n eventName: \"Master Tetraminx\",\n },\n kilominx: {\n puzzleID: \"kilominx\",\n eventName: \"Kilominx\",\n },\n redi_cube: {\n puzzleID: \"redi_cube\",\n eventName: \"Redi Cube\",\n },\n};\n\n/** @category Event Info */\nexport function eventInfo(event: string): EventInfo | null {\n return twizzleEvents[event] ?? null;\n}\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n PieceSet,\n PieceStickering,\n PuzzleAppearance,\n PuzzleStickering,\n StickeringManager,\n} from \"./appearance\";\nimport { experimentalStickerings } from \"./puzzle-stickerings\";\n\n// TODO: cache calculations?\nexport async function cubeAppearance(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<PuzzleAppearance> {\n const kpuzzle = await puzzleLoader.kpuzzle();\n const puzzleStickering = new PuzzleStickering(kpuzzle);\n const m = new StickeringManager(kpuzzle);\n\n const LL = (): PieceSet => m.move(\"U\");\n const orUD = (): PieceSet => m.or(m.moves([\"U\", \"D\"]));\n const orLR = (): PieceSet => m.or(m.moves([\"L\", \"R\"]));\n const M = (): PieceSet => m.not(orLR());\n\n const F2L = (): PieceSet => m.not(LL());\n\n const CENTERS = (): PieceSet => m.orbitPrefix(\"CENTER\");\n const EDGES = (): PieceSet => m.orbitPrefix(\"EDGE\");\n const CORNERS = (): PieceSet =>\n m.or([\n m.orbitPrefix(\"CORNER\"),\n m.orbitPrefix(\"C4RNER\"),\n m.orbitPrefix(\"C5RNER\"),\n ]);\n\n const L6E = (): PieceSet => m.or([M(), m.and([LL(), EDGES()])]);\n const centerLL = (): PieceSet => m.and([LL(), CENTERS()]);\n\n const edgeFR = (): PieceSet => m.and([m.and(m.moves([\"F\", \"R\"])), EDGES()]);\n const cornerDFR = (): PieceSet =>\n m.and([m.and(m.moves([\"F\", \"R\"])), CORNERS(), m.not(LL())]);\n const slotFR = (): PieceSet => m.or([cornerDFR(), edgeFR()]);\n\n function dimF2L(): void {\n puzzleStickering.set(F2L(), PieceStickering.Dim);\n }\n\n function setPLL(): void {\n puzzleStickering.set(LL(), PieceStickering.PermuteNonPrimary);\n puzzleStickering.set(centerLL(), PieceStickering.Dim); // For PG\n }\n\n function setOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.IgnoreNonPrimary);\n puzzleStickering.set(centerLL(), PieceStickering.Regular); // For PG\n }\n\n function dimOLL(): void {\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(centerLL(), PieceStickering.Dim); // For PG\n }\n\n switch (stickering) {\n case \"full\":\n break;\n case \"PLL\": {\n dimF2L();\n setPLL();\n break;\n }\n case \"CLS\": {\n dimF2L();\n puzzleStickering.set(cornerDFR(), PieceStickering.Regular);\n puzzleStickering.set(LL(), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([LL(), CORNERS()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n }\n case \"OLL\": {\n dimF2L();\n setOLL();\n break;\n }\n case \"COLL\": {\n dimF2L();\n puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), PieceStickering.Dim);\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);\n break;\n }\n case \"OCLL\": {\n dimF2L();\n dimOLL();\n puzzleStickering.set(\n m.and([LL(), CORNERS()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n }\n case \"CLL\": {\n dimF2L();\n puzzleStickering.set(\n m.not(m.and([CORNERS(), LL()])),\n PieceStickering.Dim,\n );\n break;\n }\n case \"ELL\": {\n dimF2L();\n puzzleStickering.set(LL(), PieceStickering.Dim);\n puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Regular);\n break;\n }\n case \"ELS\": {\n dimF2L();\n setOLL();\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Ignored);\n puzzleStickering.set(edgeFR(), PieceStickering.Regular);\n puzzleStickering.set(cornerDFR(), PieceStickering.Ignored);\n break;\n }\n case \"LL\": {\n dimF2L();\n break;\n }\n case \"F2L\": {\n puzzleStickering.set(LL(), PieceStickering.Ignored);\n break;\n }\n case \"ZBLL\": {\n dimF2L();\n puzzleStickering.set(LL(), PieceStickering.PermuteNonPrimary);\n puzzleStickering.set(centerLL(), PieceStickering.Dim); // For PG\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);\n break;\n }\n case \"ZBLS\": {\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n setOLL();\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Ignored);\n break;\n }\n case \"VLS\": {\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n setOLL();\n break;\n }\n case \"WVLS\": {\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n puzzleStickering.set(m.and([LL(), EDGES()]), PieceStickering.Ignoriented);\n puzzleStickering.set(m.and([LL(), CENTERS()]), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([LL(), CORNERS()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n }\n case \"LS\": {\n dimF2L();\n puzzleStickering.set(slotFR(), PieceStickering.Regular);\n puzzleStickering.set(LL(), PieceStickering.Ignored);\n puzzleStickering.set(centerLL(), PieceStickering.Dim);\n break;\n }\n case \"EO\": {\n puzzleStickering.set(CORNERS(), PieceStickering.Ignored);\n puzzleStickering.set(\n EDGES(),\n PieceStickering.OrientationWithoutPermutation,\n );\n break;\n }\n case \"EOline\": {\n puzzleStickering.set(CORNERS(), PieceStickering.Ignored);\n puzzleStickering.set(\n EDGES(),\n PieceStickering.OrientationWithoutPermutation,\n );\n puzzleStickering.set(m.and(m.moves([\"D\", \"M\"])), PieceStickering.Regular);\n break;\n }\n case \"EOcross\": {\n puzzleStickering.set(\n EDGES(),\n PieceStickering.OrientationWithoutPermutation,\n );\n puzzleStickering.set(m.move(\"D\"), PieceStickering.Regular);\n puzzleStickering.set(CORNERS(), PieceStickering.Ignored);\n break;\n }\n case \"CMLL\": {\n puzzleStickering.set(F2L(), PieceStickering.Dim);\n puzzleStickering.set(L6E(), PieceStickering.Ignored);\n puzzleStickering.set(m.and([LL(), CORNERS()]), PieceStickering.Regular);\n break;\n }\n case \"L10P\": {\n puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);\n puzzleStickering.set(m.and([CORNERS(), LL()]), PieceStickering.Regular);\n break;\n }\n case \"L6E\": {\n puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);\n break;\n }\n case \"L6EO\": {\n puzzleStickering.set(m.not(L6E()), PieceStickering.Dim);\n puzzleStickering.set(\n L6E(),\n PieceStickering.OrientationWithoutPermutation,\n );\n puzzleStickering.set(\n m.and([CENTERS(), orUD()]),\n PieceStickering.OrientationStickers,\n ); // For PG\n break;\n }\n case \"Daisy\": {\n puzzleStickering.set(m.all(), PieceStickering.Ignored);\n puzzleStickering.set(CENTERS(), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([m.move(\"D\"), CENTERS()]),\n PieceStickering.Regular,\n );\n puzzleStickering.set(\n m.and([m.move(\"U\"), EDGES()]),\n PieceStickering.IgnoreNonPrimary,\n );\n break;\n }\n case \"Cross\": {\n puzzleStickering.set(m.all(), PieceStickering.Ignored);\n puzzleStickering.set(CENTERS(), PieceStickering.Dim);\n puzzleStickering.set(\n m.and([m.move(\"D\"), CENTERS()]),\n PieceStickering.Regular,\n );\n puzzleStickering.set(\n m.and([m.move(\"D\"), EDGES()]),\n PieceStickering.Regular,\n );\n break;\n }\n case \"2x2x2\": {\n puzzleStickering.set(\n m.or(m.moves([\"U\", \"F\", \"R\"])),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(\n m.and([m.or(m.moves([\"U\", \"F\", \"R\"])), CENTERS()]),\n PieceStickering.Dim,\n );\n break;\n }\n case \"2x2x3\": {\n puzzleStickering.set(m.all(), PieceStickering.Dim);\n puzzleStickering.set(\n m.or(m.moves([\"U\", \"F\", \"R\"])),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(\n m.and([m.or(m.moves([\"U\", \"F\", \"R\"])), CENTERS()]),\n PieceStickering.Dim,\n );\n puzzleStickering.set(\n m.and([m.move(\"F\"), m.not(m.or(m.moves([\"U\", \"R\"])))]),\n PieceStickering.Regular,\n );\n break;\n }\n case \"Void Cube\": {\n puzzleStickering.set(CENTERS(), PieceStickering.Invisible);\n break;\n }\n case \"picture\":\n // fallthrough\n case \"invisible\": {\n puzzleStickering.set(m.all(), PieceStickering.Invisible);\n break;\n }\n case \"centers-only\": {\n puzzleStickering.set(m.not(CENTERS()), PieceStickering.Ignored);\n break;\n }\n default:\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n puzzleStickering.set(m.and(m.moves([])), PieceStickering.Dim);\n }\n return puzzleStickering.toAppearance();\n}\n\nexport async function cubeStickerings(): Promise<ExperimentalStickering[]> {\n const stickerings: ExperimentalStickering[] = [];\n for (const [name, info] of Object.entries(experimentalStickerings)) {\n if (info.groups && \"3x3x3\" in info.groups) {\n stickerings.push(name);\n }\n }\n return stickerings;\n}\n", "export function getCached<T>(getValue: () => Promise<T>): () => Promise<T> {\n let cachedPromise: Promise<T> | null = null;\n return (): Promise<T> => {\n return (cachedPromise ??= getValue());\n };\n}\n", "import { KPuzzle, KPuzzleDefinition } from \"../../kpuzzle\";\nimport type { PuzzleGeometry } from \"../../puzzle-geometry\";\nimport type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport type { PuzzleAppearance } from \"../stickerings/appearance\";\nimport {\n cubeAppearance,\n cubeStickerings,\n} from \"../stickerings/cube-stickerings\";\nimport { getCached } from \"./lazy-cached\";\n\n// TODO: modify this to handle TwistyPlayer options\nexport async function asyncGetPuzzleGeometry(\n puzzleName: string,\n): Promise<PuzzleGeometry> {\n const puzzleGeometry = await import(\"../../puzzle-geometry\");\n return puzzleGeometry.getPuzzleGeometryByName(puzzleName, {\n allMoves: true,\n orientCenters: true,\n addRotations: true,\n });\n}\n\n// TODO: can we cache the puzzleGeometry to avoid duplicate calls, without\n// wasting memory? Maybe just save the latest one for successive calls about the\n// same puzzle?\nexport async function asyncGetKPuzzle(\n pgPromise: Promise<PuzzleGeometry>,\n puzzleName: string,\n): Promise<KPuzzle> {\n const pg = await pgPromise;\n const kpuzzleDefinition: KPuzzleDefinition = pg.getKPuzzleDefinition(true);\n kpuzzleDefinition.name = puzzleName;\n const puzzleGeometry = await import(\"../../puzzle-geometry\");\n const pgNotation = new puzzleGeometry.ExperimentalPGNotation(\n pg,\n pg.getOrbitsDef(true),\n );\n return new KPuzzle(kpuzzleDefinition, {\n experimentalPGNotation: pgNotation,\n });\n}\n\nexport function asyncLazyKPuzzleGetter(\n pgPromise: Promise<PuzzleGeometry>,\n puzzleName: string,\n): () => Promise<KPuzzle> {\n return getCached(() => asyncGetKPuzzle(pgPromise, puzzleName));\n}\n\ntype PuzzleLoaderConstructorArgs = {\n pgID?: string;\n id: string;\n fullName: string;\n inventedBy?: string[];\n inventionYear?: number;\n};\n\nexport class PGPuzzleLoader implements PuzzleLoader {\n pgId?: string;\n id: string;\n fullName: string;\n inventedBy?: string[];\n inventionYear?: number;\n constructor(info: PuzzleLoaderConstructorArgs) {\n this.pgId = info.pgID;\n this.id = info.id;\n this.fullName = info.fullName;\n this.inventedBy = info.inventedBy;\n this.inventionYear = info.inventionYear;\n }\n\n #cachedPG: Promise<PuzzleGeometry> | undefined;\n pg(): Promise<PuzzleGeometry> {\n return (this.#cachedPG ??= asyncGetPuzzleGeometry(this.pgId ?? this.id));\n }\n\n #cachedKPuzzle: Promise<KPuzzle> | undefined;\n kpuzzle(): Promise<KPuzzle> {\n return (this.#cachedKPuzzle ??= asyncGetKPuzzle(this.pg(), this.id));\n }\n\n #cachedSVG: Promise<string> | undefined;\n svg(): Promise<string> {\n return (this.#cachedSVG ??= (async () =>\n (await this.pg()).generatesvg())());\n }\n}\n\nexport class CubePGPuzzleLoader extends PGPuzzleLoader {\n appearance(stickering: ExperimentalStickering): Promise<PuzzleAppearance> {\n return cubeAppearance(this, stickering);\n }\n stickerings = cubeStickerings;\n}\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport type { ExperimentalStickering } from \"../../../twisty\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\nimport type { PuzzleAppearance } from \"../../stickerings/appearance\";\nimport {\n cubeAppearance,\n cubeStickerings,\n} from \"../../stickerings/cube-stickerings\";\n\n/** @category Specific Puzzles */\nexport const cube2x2x2: PuzzleLoader = {\n id: \"2x2x2\",\n fullName: \"2\u00D72\u00D72 Cube\",\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2JSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .cube2x2x2SVG;\n },\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"2x2x2\");\n }),\n appearance: (stickering: ExperimentalStickering): Promise<PuzzleAppearance> =>\n cubeAppearance(cube2x2x2, stickering),\n stickerings: cubeStickerings,\n};\n", "// Include 3x3x3 in the main bundle for better performance.\nimport { experimental3x3x3KPuzzle } from \"../../cubing-private\";\nimport type { ExperimentalStickering } from \"../../../twisty\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\nimport type { PuzzleAppearance } from \"../../stickerings/appearance\";\nimport {\n cubeAppearance,\n cubeStickerings,\n} from \"../../stickerings/cube-stickerings\";\n\n/** @category Specific Puzzles */\nexport const cube3x3x3: PuzzleLoader = {\n id: \"3x3x3\",\n fullName: \"3\u00D73\u00D73 Cube\",\n inventedBy: [\"Ern\u0151 Rubik\"],\n inventionYear: 1974, // https://en.wikipedia.org/wiki/Rubik%27s_Cube#Conception_and_development\n kpuzzle: getCached(async () => {\n return experimental3x3x3KPuzzle;\n }),\n svg: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3SVG;\n }),\n llSVG: getCached(async () => {\n return (await import(\"../dynamic/3x3x3/puzzles-dynamic-3x3x3\"))\n .cube3x3x3LLSVG;\n }),\n pg: getCached(async () => {\n return asyncGetPuzzleGeometry(\"3x3x3\");\n }),\n appearance: (stickering: ExperimentalStickering): Promise<PuzzleAppearance> =>\n cubeAppearance(cube3x3x3, stickering),\n stickerings: cubeStickerings,\n};\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const clock: PuzzleLoader = {\n id: \"clock\",\n fullName: \"Clock\",\n inventedBy: [\"Christopher C. Wiggs\", \"Christopher J. Taylor\"],\n inventionYear: 1988, // Patent application year: https://www.jaapsch.net/puzzles/patents/us4869506.pdf\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .clockJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .clockSVG;\n }),\n};\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport {\n PuzzleAppearance,\n PuzzleStickering,\n StickeringManager,\n PieceSet,\n PieceStickering,\n} from \"./appearance\";\n\nexport async function ftoStickering(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<PuzzleAppearance> {\n const kpuzzle = await puzzleLoader.kpuzzle();\n const puzzleStickering = new PuzzleStickering(kpuzzle);\n const m = new StickeringManager(kpuzzle);\n\n const experimentalFTO_FC = (): PieceSet =>\n m.and([m.move(\"U\"), m.not(m.or(m.moves([\"F\", \"BL\", \"BR\"])))]);\n const experimentalFTO_F2T = (): PieceSet =>\n m.and([m.move(\"U\"), m.not(m.move(\"F\"))]);\n const experimentalFTO_SC = (): PieceSet =>\n m.or([\n experimentalFTO_F2T(),\n m.and([m.move(\"F\"), m.not(m.or(m.moves([\"U\", \"BL\", \"BR\"])))]),\n ]);\n const experimentalFTO_L2C = (): PieceSet =>\n m.not(\n m.or([\n m.and([m.move(\"U\"), m.move(\"F\")]),\n m.and([m.move(\"F\"), m.move(\"BL\")]),\n m.and([m.move(\"F\"), m.move(\"BR\")]),\n m.and([m.move(\"BL\"), m.move(\"BR\")]),\n ]),\n );\n const experimentalFTO_LBT = (): PieceSet =>\n m.not(\n m.or([\n m.and([m.move(\"F\"), m.move(\"BL\")]),\n m.and([m.move(\"F\"), m.move(\"BR\")]),\n m.and([m.move(\"BL\"), m.move(\"BR\")]),\n ]),\n );\n\n switch (stickering) {\n case \"full\":\n break;\n case \"experimental-fto-fc\": {\n puzzleStickering.set(\n m.not(experimentalFTO_FC()),\n PieceStickering.Ignored,\n );\n break;\n }\n case \"experimental-fto-f2t\": {\n puzzleStickering.set(\n m.not(experimentalFTO_F2T()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_FC(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-sc\": {\n puzzleStickering.set(\n m.not(experimentalFTO_SC()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_F2T(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-l2c\": {\n puzzleStickering.set(\n m.not(experimentalFTO_L2C()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_SC(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-lbt\": {\n puzzleStickering.set(\n m.not(experimentalFTO_LBT()),\n PieceStickering.Ignored,\n );\n puzzleStickering.set(experimentalFTO_L2C(), PieceStickering.Dim);\n break;\n }\n case \"experimental-fto-l3t\": {\n puzzleStickering.set(experimentalFTO_LBT(), PieceStickering.Dim);\n break;\n }\n default:\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n puzzleStickering.set(m.and(m.moves([])), PieceStickering.Dim);\n }\n return puzzleStickering.toAppearance();\n}\n\nexport async function ftoStickerings(): Promise<ExperimentalStickering[]> {\n return [\n \"full\",\n \"experimental-fto-fc\",\n \"experimental-fto-f2t\",\n \"experimental-fto-sc\",\n \"experimental-fto-l2c\",\n \"experimental-fto-lbt\",\n \"experimental-fto-l3t\",\n ];\n}\n", "import type { ExperimentalStickering } from \"../../../twisty\";\nimport { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleAppearance } from \"../../stickerings/appearance\";\nimport {\n ftoStickering,\n ftoStickerings,\n} from \"../../stickerings/fto-stickerings\";\n\nclass FTOPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n pgID: \"FTO\",\n id: \"fto\",\n fullName: \"Face-Turning Octahedron\",\n inventedBy: [\"Karl Rohrbach\", \"David Pitcher\"], // http://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1663\n inventionYear: 1983, // http://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1663\n });\n }\n appearance(stickering: ExperimentalStickering): Promise<PuzzleAppearance> {\n return ftoStickering(this, stickering);\n }\n stickerings = ftoStickerings;\n svg = getCached(async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .ftoSVG;\n });\n}\n\nexport const fto = new FTOPuzzleLoader();\n", "import type { ExperimentalStickering } from \"../../twisty\";\nimport type { PuzzleLoader } from \"../PuzzleLoader\";\nimport type { PuzzleAppearance } from \"./appearance\";\nimport { cubeAppearance } from \"./cube-stickerings\";\n\n// TODO: cache calculations?\nexport async function megaminxAppearance(\n puzzleLoader: PuzzleLoader,\n stickering: ExperimentalStickering,\n): Promise<PuzzleAppearance> {\n switch (stickering) {\n case \"full\":\n case \"F2L\":\n case \"LL\":\n case \"OLL\":\n case \"PLL\":\n case \"ELS\":\n case \"CLS\":\n return cubeAppearance(puzzleLoader, stickering);\n default:\n console.warn(\n `Unsupported stickering for ${puzzleLoader.id}: ${stickering}. Setting all pieces to dim.`,\n );\n }\n return cubeAppearance(puzzleLoader, \"full\");\n}\n\nexport async function megaminxStickerings(): Promise<ExperimentalStickering[]> {\n return [\"full\", \"F2L\", \"LL\", \"OLL\", \"PLL\", \"ELS\", \"CLS\"];\n}\n", "import type { ExperimentalStickering } from \"../../../twisty\";\nimport { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport type { PuzzleAppearance } from \"../../stickerings/appearance\";\nimport {\n megaminxAppearance,\n megaminxStickerings,\n} from \"../../stickerings/megaminx-stickerings\";\n\nclass MegaminxPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n id: \"megaminx\",\n fullName: \"Megaminx\",\n // Too many simultaneous inventors to name.\n inventionYear: 1981, // Earliest date from https://www.jaapsch.net/puzzles/megaminx.htm\n });\n }\n appearance(stickering: ExperimentalStickering): Promise<PuzzleAppearance> {\n return megaminxAppearance(this, stickering);\n }\n stickerings = megaminxStickerings;\n}\n\nexport const megaminx = new MegaminxPuzzleLoader();\n", "import { PGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\n\nclass PyraminxPuzzleLoader extends PGPuzzleLoader {\n constructor() {\n super({\n id: \"pyraminx\",\n fullName: \"Pyraminx\",\n inventedBy: [\"Uwe Meffert\"],\n });\n }\n svg = getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .pyraminxSVG;\n });\n}\n\nexport const pyraminx = new PyraminxPuzzleLoader();\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const square1: PuzzleLoader = {\n id: \"square1\",\n fullName: \"Square-1\",\n inventedBy: [\"Karel Hr\u0161el\", \"Vojtech Kopsk\u00FD\"],\n inventionYear: 1990, // Czech patent application year: http://spisy.upv.cz/Patents/FullDocuments/277/277266.pdf\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .sq1HyperOrbitJSON,\n ),\n ),\n svg: getCached(async () => {\n return (await import(\"../dynamic/side-events/puzzles-dynamic-side-events\"))\n .sq1HyperOrbitSVG;\n }),\n};\n", "import type { PuzzleLoader } from \"../..\";\nimport type { Move } from \"../../../alg\";\nimport { KPuzzle, KTransformationData } from \"../../../kpuzzle\";\nimport type { ExperimentalPGNotation } from \"../../../puzzle-geometry\";\nimport { asyncGetPuzzleGeometry } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\n\n// TODO: Make this consistent with Megaminx corners\nexport const kilominx: PuzzleLoader = {\n id: \"kilominx\",\n fullName: \"Kilominx\",\n kpuzzle: getCached(async () => {\n const pg = await asyncGetPuzzleGeometry(\"megaminx + chopasaurus\");\n const kpuzzleDefinition = JSON.parse(\n JSON.stringify(pg.getKPuzzleDefinition(true)),\n );\n delete kpuzzleDefinition.orbits.CENTERS;\n delete kpuzzleDefinition.orbits.CENTERS2;\n delete kpuzzleDefinition.startStateData.CENTERS;\n delete kpuzzleDefinition.startStateData.CENTERS2;\n for (const moveDefinition of Object.values(kpuzzleDefinition.moves)) {\n delete (moveDefinition as any).CENTERS;\n delete (moveDefinition as any).CENTERS2;\n }\n kpuzzleDefinition.name = \"kilominx\";\n delete kpuzzleDefinition.experimentalPuzzleDescription;\n const puzzleGeometry = await import(\"../../../puzzle-geometry\");\n const pgNotation = new puzzleGeometry.ExperimentalPGNotation(\n pg,\n pg.getOrbitsDef(true),\n );\n const kpuzzle = new KPuzzle(kpuzzleDefinition, {\n experimentalPGNotation: {\n lookupMove: (move: Move): KTransformationData | null => {\n if (move.toString() === \"x2\" || move.toString() === \"x2'\") {\n return x2Transformation.transformationData;\n }\n return pgNotation.lookupMove(move);\n },\n } as ExperimentalPGNotation,\n });\n const x2Transformation = kpuzzle.algToTransformation(\"Rv2 Fv Uv'\");\n kpuzzleDefinition.moves[\"x2\"] = x2Transformation;\n return kpuzzle;\n }),\n svg: getCached(async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .kilominxSVG;\n }),\n};\n", "import { KPuzzle } from \"../../../kpuzzle\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nexport const rediCube: PuzzleLoader = {\n id: \"redi_cube\",\n fullName: \"Redi Cube\",\n // Announced 2009-07-21: https://www.youtube.com/watch?v=cjfMzA1u3vM\n // https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1520\n inventedBy: [\"Oskar van Deventer\"],\n inventionYear: 2009,\n kpuzzle: getCached(\n async () =>\n new KPuzzle(\n (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .rediCubeJSON,\n ),\n ),\n svg: async () => {\n return (await import(\"../dynamic/unofficial/puzzles-dynamic-unofficial\"))\n .rediCubeSVG;\n },\n};\n", "import { CubePGPuzzleLoader } from \"../../async/async-pg3d\";\nimport { getCached } from \"../../async/lazy-cached\";\nimport type { PuzzleLoader } from \"../../PuzzleLoader\";\n\nconst cube4x4x4: PuzzleLoader = new CubePGPuzzleLoader({\n id: \"4x4x4\",\n fullName: \"4\u00D74\u00D74 Cube\",\n});\n\ncube4x4x4.llSVG = getCached(async () => {\n return (await import(\"../dynamic/4x4x4/puzzles-dynamic-4x4x4\"))\n .cube4x4x4LLSVG;\n});\n\nexport { cube4x4x4 };\n", "export { eventInfo, wcaEventInfo, wcaEvents, twizzleEvents } from \"./events\";\nexport type { PuzzleLoader };\nexport { cube2x2x2, cube3x3x3 };\n\nimport { CubePGPuzzleLoader, PGPuzzleLoader } from \"./async/async-pg3d\";\nimport { cube2x2x2 } from \"./implementations/2x2x2\";\nimport { cube3x3x3 } from \"./implementations/3x3x3\";\nimport { clock } from \"./implementations/clock\";\nimport { fto } from \"./implementations/fto\";\nimport { megaminx } from \"./implementations/megaminx\";\nimport { pyraminx } from \"./implementations/pyraminx\";\nimport { square1 } from \"./implementations/square1\";\nimport { kilominx } from \"./implementations/kilominx\";\nimport type { PuzzleLoader } from \"./PuzzleLoader\";\nimport { rediCube } from \"./implementations/redi-cube\";\nimport { cube4x4x4 } from \"./implementations/4x4x4\";\n\n/** @category All Puzzles */\nexport const puzzles: Record<string, PuzzleLoader> = {\n /******** Start of WCA Puzzles *******/\n \"3x3x3\": cube3x3x3,\n \"2x2x2\": cube2x2x2,\n \"4x4x4\": cube4x4x4,\n \"5x5x5\": new CubePGPuzzleLoader({ id: \"5x5x5\", fullName: \"5\u00D75\u00D75 Cube\" }),\n \"6x6x6\": new CubePGPuzzleLoader({ id: \"6x6x6\", fullName: \"6\u00D76\u00D76 Cube\" }),\n \"7x7x7\": new CubePGPuzzleLoader({ id: \"7x7x7\", fullName: \"7\u00D77\u00D77 Cube\" }),\n \"40x40x40\": new CubePGPuzzleLoader({\n id: \"40x40x40\",\n fullName: \"40\u00D740\u00D740 Cube\",\n }),\n // 3x3x3 Blindfolded\n // 3x3x3 Fewest Moves\n // 3x3x3 One-Handed\n clock,\n megaminx: megaminx,\n pyraminx,\n skewb: new PGPuzzleLoader({\n id: \"skewb\",\n fullName: \"Skewb\",\n inventedBy: [\"Tony Durham\"], // https://www.jaapsch.net/puzzles/skewb.htm\n // inventionYear: 1982, // 1982 is actually the year of Hofstadter's column.\n }),\n square1,\n // 4x4x4 Blindfolded\n // 5x5x5 Blindfolded\n /******** End of WCA puzzles ********/\n fto: fto,\n gigaminx: new PGPuzzleLoader({\n id: \"gigaminx\",\n fullName: \"Gigaminx\",\n inventedBy: [\"Tyler Fox\"],\n inventionYear: 2006, // Earliest date from https://www.twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1475\n }),\n master_tetraminx: new PGPuzzleLoader({\n pgID: \"master tetraminx\",\n id: \"master_tetraminx\",\n fullName: \"Master Tetraminx\",\n inventedBy: [\"Katsuhiko Okamoto\"], // Using master pyraminx: https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1352\n inventionYear: 2002, // Using master pyraminx: https://twistypuzzles.com/cgi-bin/puzzle.cgi?pkey=1352\n }),\n kilominx,\n redi_cube: rediCube,\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -35,7 +35,7 @@ function validateMax(max) {
35
35
  }
36
36
  if (max > MAX_JS_PRECISE_INT) {
37
37
  throw new Error(
38
- `Called randomInt.below() with max == ${max}, which is larger than JavaScript can handle with integer precision.`
38
+ `Called randomInt.below() with max === ${max}, which is larger than JavaScript can handle with integer precision.`
39
39
  );
40
40
  }
41
41
  }
@@ -74,4 +74,4 @@ export {
74
74
  randomChoiceFactory,
75
75
  randomPermute
76
76
  };
77
- //# sourceMappingURL=chunk-WXCNEGW3.js.map
77
+ //# sourceMappingURL=chunk-HR5D6SD4.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/vendor/random-uint-below/get-random-values.ts", "../../src/cubing/vendor/random-uint-below/random53BitValue.ts", "../../src/cubing/vendor/random-uint-below/random-choice.ts", "../../src/cubing/vendor/random-uint-below/index.ts"],
4
- "sourcesContent": ["export type GetRandomValuesFunction = (arr: Uint32Array) => void;\n\n// This is a workaround for a `node` segfault.\n// In theory, imports are cached and safe to import multiple times: https://nodejs.org/api/esm.html#esm_urls\n// In practice, a rapid series of inline imports inside a worker causes a segfault(!) in `node`.\n// So we cache a single import reference. We avoid populating it until we first need it, so that we don't attempt to perform the import in environments that don't need or have it (e.g. browsers, `deno`).\nlet cryptoPromise: Promise<typeof import(\"crypto\")> | null = null;\n\n// `@types/node` is... lacking. This type may cause an error in the future, at which point we can hopefully use `@types/node` directly.\ntype NodeWebCrypto = typeof import(\"crypto\").webcrypto & {\n getRandomValues: GetRandomValuesFunction;\n};\n\n// Mangled so that bundlers don't try to inline the source.\nconst cryptoMangled = \"cr-yp-to\";\nconst cryptoUnmangled = () => cryptoMangled.replace(/-/g, \"\");\n\n// We could use top-level await to define this more statically, but that has limited transpilation support.\nexport async function getRandomValuesFactory(): Promise<GetRandomValuesFunction> {\n if (!globalThis?.crypto?.getRandomValues) {\n const nodeWebCrypto = (\n await (cryptoPromise ??= import(/* @vite-ignore */ cryptoUnmangled()))\n ).webcrypto as NodeWebCrypto;\n return nodeWebCrypto.getRandomValues.bind(\n nodeWebCrypto,\n ) as typeof nodeWebCrypto.getRandomValues;\n } else {\n return crypto.getRandomValues.bind(crypto) as GetRandomValuesFunction;\n }\n}\n", "import {\n getRandomValuesFactory,\n GetRandomValuesFunction,\n} from \"./get-random-values\";\n\n/*\n * randomInt.below(max) returns a random non-negative integer less than max (0 <= output < max).\n * `max` must be at most 2^53.\n */\n\nconst MAX_JS_PRECISE_INT = 9007199254740992;\n\nconst UPPER_HALF_MULTIPLIER = 2097152; // 2^21. We have to use multiplication because bit shifts truncate to 32 bits.\nconst LOWER_HALF_DIVIDER = 2048;\n\nfunction random53BitValue(getRandomValues: GetRandomValuesFunction): number {\n // Construct a random 53-bit value from a 32-bit upper half and a 21-bit lower half.\n const arr = new Uint32Array(2);\n getRandomValues(arr);\n const upper = arr[0];\n const lower = arr[1];\n return (\n Math.floor(upper * UPPER_HALF_MULTIPLIER) +\n Math.floor(lower / LOWER_HALF_DIVIDER)\n );\n}\n\nfunction validateMax(max: number): void {\n if (typeof max !== \"number\" || max < 0 || Math.floor(max) !== max) {\n throw new Error(\n \"randomInt.below() not called with a positive integer value.\",\n );\n }\n if (max > MAX_JS_PRECISE_INT) {\n throw new Error(\n `Called randomInt.below() with max == ${max}, which is larger than JavaScript can handle with integer precision.`,\n );\n }\n}\n\n// TODO: cache generated `randomUIntBelow`?\nexport async function randomUIntBelowFactory(): Promise<\n (max: number) => number\n> {\n const getRandomValues = await getRandomValuesFactory();\n const randomUIntBelow = (max: number): number => {\n validateMax(max);\n\n const val = random53BitValue(getRandomValues);\n const maxUniformSamplingRange = Math.floor(MAX_JS_PRECISE_INT / max) * max;\n\n // Rejection sampling:\n if (val < maxUniformSamplingRange) {\n return val % max;\n } else {\n // val % max would produce a biased result. This bias an be very bad if `max` is on the order of MAX_JS_PRECISE_INT. We have to try again, so just call ourselves recursively.\n // For some values of `max` just above 9007199254740992 / 2, this happens about once on average. For other values of `max`, it's less than that (and for small values of `max` it's extremely unlikely).\n\n // TODO: Use more bits of accuracy instead of rejection sampling to avoid DoS.\n return randomUIntBelow(max);\n }\n };\n return randomUIntBelow;\n}\n", "import { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// Inspired by https://reference.wolfram.com/language/ref/RandomChoice.html\n// This library itself should be kept small, but a wrapper library may want to implement selecting multiple element without replacement as with replacement:\n// https://reference.wolfram.com/language/ref/RandomSample.html\nexport async function randomChoiceFactory<T>(): Promise<(arr: Array<T>) => T> {\n const randomUIntBelow = await randomUIntBelowFactory();\n return (arr: Array<T>): T => arr[randomUIntBelow(arr.length)];\n}\n", "export { randomChoiceFactory } from \"./random-choice\";\nexport { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// TODO: reuse factory properly, move this to a separate file, add to impl.\nimport { randomUIntBelowFactory } from \"./random53BitValue\";\nconst randomUIntBelowPromise = randomUIntBelowFactory();\nexport async function randomPermute<T>(list: T[]): Promise<void> {\n for (let i = 1; i < list.length; i++) {\n const j = (await randomUIntBelowPromise)(i);\n [list[i], list[j]] = [list[j], list[i]];\n }\n}\n"],
5
- "mappings": ";AAMA,IAAI,gBAAyD;AAQ7D,IAAM,gBAAgB;AACtB,IAAM,kBAAkB,MAAM,cAAc,QAAQ,MAAM,EAAE;AAG5D,eAAsB,yBAA2D;AAC/E,MAAI,CAAC,YAAY,QAAQ,iBAAiB;AACxC,UAAM,iBACJ,OAAO,kCAAkB;AAAA;AAAA,MAA0B,gBAAgB;AAAA,SACnE;AACF,WAAO,cAAc,gBAAgB;AAAA,MACnC;AAAA,IACF;AAAA,EACF,OAAO;AACL,WAAO,OAAO,gBAAgB,KAAK,MAAM;AAAA,EAC3C;AACF;;;ACnBA,IAAM,qBAAqB;AAE3B,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAE3B,SAAS,iBAAiB,iBAAkD;AAE1E,QAAM,MAAM,IAAI,YAAY,CAAC;AAC7B,kBAAgB,GAAG;AACnB,QAAM,QAAQ,IAAI;AAClB,QAAM,QAAQ,IAAI;AAClB,SACE,KAAK,MAAM,QAAQ,qBAAqB,IACxC,KAAK,MAAM,QAAQ,kBAAkB;AAEzC;AAEA,SAAS,YAAY,KAAmB;AACtC,MAAI,OAAO,QAAQ,YAAY,MAAM,KAAK,KAAK,MAAM,GAAG,MAAM,KAAK;AACjE,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,MAAI,MAAM,oBAAoB;AAC5B,UAAM,IAAI;AAAA,MACR,wCAAwC;AAAA,IAC1C;AAAA,EACF;AACF;AAGA,eAAsB,yBAEpB;AACA,QAAM,kBAAkB,MAAM,uBAAuB;AACrD,QAAM,kBAAkB,CAAC,QAAwB;AAC/C,gBAAY,GAAG;AAEf,UAAM,MAAM,iBAAiB,eAAe;AAC5C,UAAM,0BAA0B,KAAK,MAAM,qBAAqB,GAAG,IAAI;AAGvE,QAAI,MAAM,yBAAyB;AACjC,aAAO,MAAM;AAAA,IACf,OAAO;AAKL,aAAO,gBAAgB,GAAG;AAAA,IAC5B;AAAA,EACF;AACA,SAAO;AACT;;;AC1DA,eAAsB,sBAAwD;AAC5E,QAAM,kBAAkB,MAAM,uBAAuB;AACrD,SAAO,CAAC,QAAqB,IAAI,gBAAgB,IAAI,MAAM;AAC7D;;;ACHA,IAAM,yBAAyB,uBAAuB;AACtD,eAAsB,cAAiB,MAA0B;AAC/D,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,KAAK,MAAM,wBAAwB,CAAC;AAC1C,KAAC,KAAK,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;AAAA,EACxC;AACF;",
4
+ "sourcesContent": ["export type GetRandomValuesFunction = (arr: Uint32Array) => void;\n\n// This is a workaround for a `node` segfault.\n// In theory, imports are cached and safe to import multiple times: https://nodejs.org/api/esm.html#esm_urls\n// In practice, a rapid series of inline imports inside a worker causes a segfault(!) in `node`.\n// So we cache a single import reference. We avoid populating it until we first need it, so that we don't attempt to perform the import in environments that don't need or have it (e.g. browsers, `deno`).\nlet cryptoPromise: Promise<typeof import(\"crypto\")> | null = null;\n\n// `@types/node` is... lacking. This type may cause an error in the future, at which point we can hopefully use `@types/node` directly.\ntype NodeWebCrypto = typeof import(\"crypto\").webcrypto & {\n getRandomValues: GetRandomValuesFunction;\n};\n\n// Mangled so that bundlers don't try to inline the source.\nconst cryptoMangled = \"cr-yp-to\";\nconst cryptoUnmangled = () => cryptoMangled.replace(/-/g, \"\");\n\n// We could use top-level await to define this more statically, but that has limited transpilation support.\nexport async function getRandomValuesFactory(): Promise<GetRandomValuesFunction> {\n if (!globalThis?.crypto?.getRandomValues) {\n const nodeWebCrypto = (\n await (cryptoPromise ??= import(/* @vite-ignore */ cryptoUnmangled()))\n ).webcrypto as NodeWebCrypto;\n return nodeWebCrypto.getRandomValues.bind(\n nodeWebCrypto,\n ) as typeof nodeWebCrypto.getRandomValues;\n } else {\n return crypto.getRandomValues.bind(crypto) as GetRandomValuesFunction;\n }\n}\n", "import {\n getRandomValuesFactory,\n GetRandomValuesFunction,\n} from \"./get-random-values\";\n\n/*\n * randomInt.below(max) returns a random non-negative integer less than max (0 <= output < max).\n * `max` must be at most 2^53.\n */\n\nconst MAX_JS_PRECISE_INT = 9007199254740992;\n\nconst UPPER_HALF_MULTIPLIER = 2097152; // 2^21. We have to use multiplication because bit shifts truncate to 32 bits.\nconst LOWER_HALF_DIVIDER = 2048;\n\nfunction random53BitValue(getRandomValues: GetRandomValuesFunction): number {\n // Construct a random 53-bit value from a 32-bit upper half and a 21-bit lower half.\n const arr = new Uint32Array(2);\n getRandomValues(arr);\n const upper = arr[0];\n const lower = arr[1];\n return (\n Math.floor(upper * UPPER_HALF_MULTIPLIER) +\n Math.floor(lower / LOWER_HALF_DIVIDER)\n );\n}\n\nfunction validateMax(max: number): void {\n if (typeof max !== \"number\" || max < 0 || Math.floor(max) !== max) {\n throw new Error(\n \"randomInt.below() not called with a positive integer value.\",\n );\n }\n if (max > MAX_JS_PRECISE_INT) {\n throw new Error(\n `Called randomInt.below() with max === ${max}, which is larger than JavaScript can handle with integer precision.`,\n );\n }\n}\n\n// TODO: cache generated `randomUIntBelow`?\nexport async function randomUIntBelowFactory(): Promise<\n (max: number) => number\n> {\n const getRandomValues = await getRandomValuesFactory();\n const randomUIntBelow = (max: number): number => {\n validateMax(max);\n\n const val = random53BitValue(getRandomValues);\n const maxUniformSamplingRange = Math.floor(MAX_JS_PRECISE_INT / max) * max;\n\n // Rejection sampling:\n if (val < maxUniformSamplingRange) {\n return val % max;\n } else {\n // val % max would produce a biased result. This bias an be very bad if `max` is on the order of MAX_JS_PRECISE_INT. We have to try again, so just call ourselves recursively.\n // For some values of `max` just above 9007199254740992 / 2, this happens about once on average. For other values of `max`, it's less than that (and for small values of `max` it's extremely unlikely).\n\n // TODO: Use more bits of accuracy instead of rejection sampling to avoid DoS.\n return randomUIntBelow(max);\n }\n };\n return randomUIntBelow;\n}\n", "import { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// Inspired by https://reference.wolfram.com/language/ref/RandomChoice.html\n// This library itself should be kept small, but a wrapper library may want to implement selecting multiple element without replacement as with replacement:\n// https://reference.wolfram.com/language/ref/RandomSample.html\nexport async function randomChoiceFactory<T>(): Promise<(arr: T[]) => T> {\n const randomUIntBelow = await randomUIntBelowFactory();\n return (arr: T[]): T => arr[randomUIntBelow(arr.length)];\n}\n", "export { randomChoiceFactory } from \"./random-choice\";\nexport { randomUIntBelowFactory } from \"./random53BitValue\";\n\n// TODO: reuse factory properly, move this to a separate file, add to impl.\nimport { randomUIntBelowFactory } from \"./random53BitValue\";\nconst randomUIntBelowPromise = randomUIntBelowFactory();\nexport async function randomPermute<T>(list: T[]): Promise<void> {\n for (let i = 1; i < list.length; i++) {\n const j = (await randomUIntBelowPromise)(i);\n [list[i], list[j]] = [list[j], list[i]];\n }\n}\n"],
5
+ "mappings": ";AAMA,IAAI,gBAAyD;AAQ7D,IAAM,gBAAgB;AACtB,IAAM,kBAAkB,MAAM,cAAc,QAAQ,MAAM,EAAE;AAG5D,eAAsB,yBAA2D;AAC/E,MAAI,CAAC,YAAY,QAAQ,iBAAiB;AACxC,UAAM,iBACJ,OAAO,kCAAkB;AAAA;AAAA,MAA0B,gBAAgB;AAAA,SACnE;AACF,WAAO,cAAc,gBAAgB;AAAA,MACnC;AAAA,IACF;AAAA,EACF,OAAO;AACL,WAAO,OAAO,gBAAgB,KAAK,MAAM;AAAA,EAC3C;AACF;;;ACnBA,IAAM,qBAAqB;AAE3B,IAAM,wBAAwB;AAC9B,IAAM,qBAAqB;AAE3B,SAAS,iBAAiB,iBAAkD;AAE1E,QAAM,MAAM,IAAI,YAAY,CAAC;AAC7B,kBAAgB,GAAG;AACnB,QAAM,QAAQ,IAAI;AAClB,QAAM,QAAQ,IAAI;AAClB,SACE,KAAK,MAAM,QAAQ,qBAAqB,IACxC,KAAK,MAAM,QAAQ,kBAAkB;AAEzC;AAEA,SAAS,YAAY,KAAmB;AACtC,MAAI,OAAO,QAAQ,YAAY,MAAM,KAAK,KAAK,MAAM,GAAG,MAAM,KAAK;AACjE,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,MAAI,MAAM,oBAAoB;AAC5B,UAAM,IAAI;AAAA,MACR,yCAAyC;AAAA,IAC3C;AAAA,EACF;AACF;AAGA,eAAsB,yBAEpB;AACA,QAAM,kBAAkB,MAAM,uBAAuB;AACrD,QAAM,kBAAkB,CAAC,QAAwB;AAC/C,gBAAY,GAAG;AAEf,UAAM,MAAM,iBAAiB,eAAe;AAC5C,UAAM,0BAA0B,KAAK,MAAM,qBAAqB,GAAG,IAAI;AAGvE,QAAI,MAAM,yBAAyB;AACjC,aAAO,MAAM;AAAA,IACf,OAAO;AAKL,aAAO,gBAAgB,GAAG;AAAA,IAC5B;AAAA,EACF;AACA,SAAO;AACT;;;AC1DA,eAAsB,sBAAmD;AACvE,QAAM,kBAAkB,MAAM,uBAAuB;AACrD,SAAO,CAAC,QAAgB,IAAI,gBAAgB,IAAI,MAAM;AACxD;;;ACHA,IAAM,yBAAyB,uBAAuB;AACtD,eAAsB,cAAiB,MAA0B;AAC/D,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,KAAK,MAAM,wBAAwB,CAAC;AAC1C,KAAC,KAAK,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE;AAAA,EACxC;AACF;",
6
6
  "names": []
7
7
  }