cubing 0.36.2 → 0.37.0-pre1

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 (63) hide show
  1. package/dist/esm/alg/index.js +1 -1
  2. package/dist/esm/bluetooth/index.js +5 -5
  3. package/dist/esm/{chunk-CS3NN22U.js → chunk-6XZN5QCJ.js} +46 -39
  4. package/dist/esm/chunk-6XZN5QCJ.js.map +7 -0
  5. package/dist/esm/{chunk-BT4N5EGX.js → chunk-7MSAVSVG.js} +3 -3
  6. package/dist/esm/chunk-7QE2OVHX.js +9 -0
  7. package/dist/esm/{chunk-RHC3DIN3.js.map → chunk-7QE2OVHX.js.map} +1 -1
  8. package/dist/esm/{chunk-KPYYHLXC.js → chunk-GGJSIUGA.js} +4 -4
  9. package/dist/esm/{chunk-QWQ3WKAJ.js → chunk-L4PH24KU.js} +3 -3
  10. package/dist/esm/{chunk-IKK6NEES.js → chunk-L7WY7BIO.js} +3 -3
  11. package/dist/esm/{chunk-EODSL4J7.js → chunk-O64NYJ3S.js} +5 -5
  12. package/dist/esm/{chunk-UIGRNWPE.js → chunk-RSF22LKP.js} +2 -2
  13. package/dist/esm/{chunk-2OZSC5I6.js → chunk-TM7SKFJD.js} +3 -2
  14. package/dist/esm/{chunk-2OZSC5I6.js.map → chunk-TM7SKFJD.js.map} +2 -2
  15. package/dist/esm/{chunk-Z4KB5H3Q.js → chunk-TNBM5BTH.js} +13 -13
  16. package/dist/esm/{chunk-HNCNLZCQ.js → chunk-WWCSMIJO.js} +22 -9
  17. package/dist/esm/{chunk-HNCNLZCQ.js.map → chunk-WWCSMIJO.js.map} +2 -2
  18. package/dist/esm/{chunk-HPHL232Y.js → chunk-ZIFM3JF6.js} +2 -2
  19. package/dist/esm/inside-PD4VUO4N.js +17 -0
  20. package/dist/esm/{search-worker-js-entry-Z7ZJHXOP.js.map → inside-PD4VUO4N.js.map} +1 -1
  21. package/dist/esm/kpuzzle/index.js +2 -2
  22. package/dist/esm/notation/index.js +6 -8
  23. package/dist/esm/protocol/index.js +4 -4
  24. package/dist/esm/puzzle-geometry/index.js +1 -1
  25. package/dist/esm/puzzles/index.js +4 -4
  26. package/dist/esm/scramble/index.js +9 -9
  27. package/dist/esm/search/index.js +10 -10
  28. package/dist/esm/{search-worker-ts-entry-7OR7E6EC.js → search/worker-workarounds/search-worker-entry.js} +6 -6
  29. package/dist/esm/search/worker-workarounds/search-worker-entry.js.map +7 -0
  30. package/dist/esm/{search-dynamic-sgs-side-events-X3HJIH2M.js → search-dynamic-sgs-side-events-U7UKYK6F.js} +6 -6
  31. package/dist/esm/{search-dynamic-sgs-unofficial-4DTLRYXW.js → search-dynamic-sgs-unofficial-MGKPYZK5.js} +6 -6
  32. package/dist/esm/{search-dynamic-solve-4x4x4-KOSBPTFL.js → search-dynamic-solve-4x4x4-YRWEYWTY.js} +6 -6
  33. package/dist/esm/{search-dynamic-solve-kilominx-QJWWB2PY.js → search-dynamic-solve-kilominx-HCOWDD7C.js} +2 -2
  34. package/dist/esm/stream/index.js +1 -1
  35. package/dist/esm/twisty/index.js +26 -19
  36. package/dist/esm/twisty/index.js.map +2 -2
  37. package/dist/esm/{twisty-dynamic-3d-XRLWOI7Y.js → twisty-dynamic-3d-JRADYLKK.js} +6 -6
  38. package/dist/esm/{twsearch-FMALADRY.js → twsearch-JCPGQMKW.js} +2 -2
  39. package/dist/types/notation/index.d.ts +2 -3
  40. package/dist/types/{outside-ef4dd4d1.d.ts → outside-7959a3cd.d.ts} +3 -2
  41. package/dist/types/scramble/index.d.ts +1 -1
  42. package/dist/types/search/index.d.ts +1 -1
  43. package/package.json +1 -2
  44. package/dist/esm/chunk-CS3NN22U.js.map +0 -7
  45. package/dist/esm/chunk-RHC3DIN3.js +0 -9
  46. package/dist/esm/search-worker-inside-generated-string-EFAMJBWG.js +0 -4337
  47. package/dist/esm/search-worker-inside-generated-string-EFAMJBWG.js.map +0 -7
  48. package/dist/esm/search-worker-js-entry-Z7ZJHXOP.js +0 -17
  49. package/dist/esm/search-worker-ts-entry-7OR7E6EC.js.map +0 -7
  50. /package/dist/esm/{chunk-BT4N5EGX.js.map → chunk-7MSAVSVG.js.map} +0 -0
  51. /package/dist/esm/{chunk-KPYYHLXC.js.map → chunk-GGJSIUGA.js.map} +0 -0
  52. /package/dist/esm/{chunk-QWQ3WKAJ.js.map → chunk-L4PH24KU.js.map} +0 -0
  53. /package/dist/esm/{chunk-IKK6NEES.js.map → chunk-L7WY7BIO.js.map} +0 -0
  54. /package/dist/esm/{chunk-EODSL4J7.js.map → chunk-O64NYJ3S.js.map} +0 -0
  55. /package/dist/esm/{chunk-UIGRNWPE.js.map → chunk-RSF22LKP.js.map} +0 -0
  56. /package/dist/esm/{chunk-Z4KB5H3Q.js.map → chunk-TNBM5BTH.js.map} +0 -0
  57. /package/dist/esm/{chunk-HPHL232Y.js.map → chunk-ZIFM3JF6.js.map} +0 -0
  58. /package/dist/esm/{search-dynamic-sgs-side-events-X3HJIH2M.js.map → search-dynamic-sgs-side-events-U7UKYK6F.js.map} +0 -0
  59. /package/dist/esm/{search-dynamic-sgs-unofficial-4DTLRYXW.js.map → search-dynamic-sgs-unofficial-MGKPYZK5.js.map} +0 -0
  60. /package/dist/esm/{search-dynamic-solve-4x4x4-KOSBPTFL.js.map → search-dynamic-solve-4x4x4-YRWEYWTY.js.map} +0 -0
  61. /package/dist/esm/{search-dynamic-solve-kilominx-QJWWB2PY.js.map → search-dynamic-solve-kilominx-HCOWDD7C.js.map} +0 -0
  62. /package/dist/esm/{twisty-dynamic-3d-XRLWOI7Y.js.map → twisty-dynamic-3d-JRADYLKK.js.map} +0 -0
  63. /package/dist/esm/{twsearch-FMALADRY.js.map → twsearch-JCPGQMKW.js.map} +0 -0
@@ -18,7 +18,7 @@ import {
18
18
  functionFromTraversal,
19
19
  keyToMove,
20
20
  setAlgDebug
21
- } from "../chunk-2OZSC5I6.js";
21
+ } from "../chunk-TM7SKFJD.js";
22
22
  export {
23
23
  Alg,
24
24
  AlgBuilder,
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  binaryComponentsToReid3x3x3,
3
3
  twizzleBinaryToBinaryComponents
4
- } from "../chunk-IKK6NEES.js";
4
+ } from "../chunk-L7WY7BIO.js";
5
5
  import {
6
6
  cube3x3x3,
7
7
  puzzles
8
- } from "../chunk-KPYYHLXC.js";
8
+ } from "../chunk-GGJSIUGA.js";
9
9
  import {
10
10
  experimental3x3x3KPuzzle
11
- } from "../chunk-QWQ3WKAJ.js";
11
+ } from "../chunk-L4PH24KU.js";
12
12
  import {
13
13
  KState
14
- } from "../chunk-UIGRNWPE.js";
14
+ } from "../chunk-RSF22LKP.js";
15
15
  import {
16
16
  Alg,
17
17
  Move,
18
18
  experimentalAppendMove,
19
19
  keyToMove
20
- } from "../chunk-2OZSC5I6.js";
20
+ } from "../chunk-TM7SKFJD.js";
21
21
 
22
22
  // src/cubing/bluetooth/debug.ts
23
23
  var DEBUG_LOGGING_ENABLED = false;
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  insideAPI
3
- } from "./chunk-Z4KB5H3Q.js";
3
+ } from "./chunk-TNBM5BTH.js";
4
4
  import {
5
5
  exposeAPI
6
- } from "./chunk-RHC3DIN3.js";
6
+ } from "./chunk-7QE2OVHX.js";
7
7
  import {
8
8
  node_adapter_default
9
9
  } from "./chunk-ZYCJIZDN.js";
10
10
  import {
11
11
  Alg
12
- } from "./chunk-2OZSC5I6.js";
12
+ } from "./chunk-TM7SKFJD.js";
13
13
 
14
14
  // src/cubing/search/inside/solve/puzzles/clock.ts
15
15
  import { randomUIntBelow } from "random-uint-below";
@@ -107,21 +107,27 @@ async function constructWorker(source, options) {
107
107
  return worker;
108
108
  }
109
109
 
110
- // src/cubing/search/inside/search-worker-ts-entry-path-getter.ts
111
- exposeAPI.expose = false;
112
- async function getWorkerEntryFileURL() {
113
- return (await import("./search-worker-ts-entry-7OR7E6EC.js")).WORKER_ENTRY_FILE_URL;
110
+ // src/cubing/search/worker-workarounds/index.ts
111
+ async function searchWorkerURLImportMetaResolve() {
112
+ return import.meta.resolve(
113
+ "./search/worker-workarounds/search-worker-entry.js"
114
+ );
115
+ }
116
+ function searchWorkerURLNewURLImportMetaURL() {
117
+ return new URL(
118
+ "./search/worker-workarounds/search-worker-entry.js",
119
+ import.meta.url
120
+ );
121
+ }
122
+ async function searchWorkerURLEsbuildWorkaround() {
123
+ exposeAPI.expose = false;
124
+ return (await import("./search/worker-workarounds/search-worker-entry.js")).WORKER_ENTRY_FILE_URL;
114
125
  }
115
126
 
116
127
  // src/cubing/search/instantiator.ts
117
- var MODULE_WORKER_TIMEOUT_MILLISECONDS = 5e3;
118
- async function instantiateModuleWorker() {
128
+ async function instantiateModuleWorker(workerEntryFileURL) {
119
129
  return new Promise(async (resolve, reject) => {
120
- const timeoutID = setTimeout(() => {
121
- reject(new Error("module instantiation timeout"));
122
- }, MODULE_WORKER_TIMEOUT_MILLISECONDS);
123
130
  try {
124
- const workerEntryFileURL = await getWorkerEntryFileURL();
125
131
  if (!workerEntryFileURL) {
126
132
  reject(new Error("Could not get worker entry file URL."));
127
133
  }
@@ -141,13 +147,10 @@ async function instantiateModuleWorker() {
141
147
  type: "module"
142
148
  });
143
149
  const onError = (e) => {
144
- if (e.message?.startsWith("SyntaxError")) {
145
- reject(e);
146
- }
150
+ reject(e);
147
151
  };
148
152
  const onFirstMessage = (messageData) => {
149
153
  if (messageData === "comlink-exposed") {
150
- clearTimeout(timeoutID);
151
154
  resolve(wrapWithTerminate(worker));
152
155
  } else {
153
156
  reject(
@@ -175,11 +178,6 @@ function wrapWithTerminate(worker) {
175
178
  const terminate = worker.terminate.bind(worker);
176
179
  return { insideAPI: insideAPI2, outsideAPI: { terminate } };
177
180
  }
178
- async function instantiateClassicWorker() {
179
- const { workerSource } = await import("./search-worker-inside-generated-string-EFAMJBWG.js");
180
- const worker = await constructWorker(workerSource, { eval: true });
181
- return wrapWithTerminate(worker);
182
- }
183
181
  var allInsideOutsideAPIPromises = [];
184
182
  async function instantiateWorker() {
185
183
  const insideOutsideAPIPromise = instantiateWorkerImplementation();
@@ -197,25 +195,34 @@ async function mapToAllWorkers(f) {
197
195
  }
198
196
  async function instantiateWorkerImplementation() {
199
197
  if (searchOutsideDebugGlobals.forceStringWorker) {
200
- console.warn(
201
- "Using the `forceStringWorker` workaround for search worker instantiation. This will require downloading significantly more code than necessary, but the functionality will be the same."
202
- );
203
- return instantiateClassicWorker();
198
+ console.warn("The `forceStringWorker` workaround is no longer supported.");
204
199
  }
205
- try {
206
- return await instantiateModuleWorker();
207
- } catch (e) {
208
- const commonErrorPrefix = "Could not instantiate module worker (this may happen in Firefox, or when using Parcel).";
209
- if (searchOutsideDebugGlobals.disableStringWorker) {
210
- console.error(
211
- `${commonErrorPrefix} Fallback to string worker is disabled.`,
212
- e
213
- );
214
- throw new Error("Module worker instantiation failed.");
200
+ function failed(methodDescription) {
201
+ return `Module worker instantiation${methodDescription ? ` ${methodDescription}` : ""} failed`;
202
+ }
203
+ const fallbackOrder = [
204
+ [searchWorkerURLImportMetaResolve, "using `import.meta.resolve(\u2026)", false],
205
+ [
206
+ searchWorkerURLNewURLImportMetaURL,
207
+ "using `new URL(\u2026, import.meta.url)`",
208
+ true
209
+ ],
210
+ [searchWorkerURLEsbuildWorkaround, "using the `esbuild` workaround", true]
211
+ ];
212
+ for (const [fn, description, warnOnSuccess] of fallbackOrder) {
213
+ try {
214
+ const worker = await instantiateModuleWorker(await fn());
215
+ if (warnOnSuccess) {
216
+ console.warn(
217
+ `Module worker instantiation required ${description}. \`cubing.js\` will not support this fallback in the future.`
218
+ );
219
+ }
220
+ return worker;
221
+ } catch {
222
+ console.warn(`${failed(description)}, falling back.`);
215
223
  }
216
- console.warn(`${commonErrorPrefix} Falling back to string worker.`, e);
217
- return instantiateClassicWorker();
218
224
  }
225
+ throw new Error(`${failed()}. There are no more fallbacks available.`);
219
226
  }
220
227
 
221
228
  // src/cubing/search/outside.ts
@@ -330,4 +337,4 @@ export {
330
337
  solveTwsearch,
331
338
  setDebug
332
339
  };
333
- //# sourceMappingURL=chunk-CS3NN22U.js.map
340
+ //# sourceMappingURL=chunk-6XZN5QCJ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/search/inside/solve/puzzles/clock.ts", "../../src/cubing/search/inside/solve/puzzles/wca-minx.ts", "../../src/cubing/vendor/apache/comlink-everywhere/outside/index.ts", "../../src/cubing/search/worker-workarounds/index.ts", "../../src/cubing/search/instantiator.ts", "../../src/cubing/search/outside.ts"],
4
+ "sourcesContent": ["import { randomUIntBelow } from \"random-uint-below\";\n\nconst pins = [\"UR\", \"DR\", \"DL\", \"UL\"];\nconst backMoves = [\"U\", \"R\", \"D\", \"L\", \"ALL\"];\nconst frontMoves = pins.concat(backMoves);\n\nexport function randomClockScrambleString(): string {\n let filteringMoveCount = 0;\n\n function randomSuffix() {\n const amount = randomUIntBelow(12);\n if (amount !== 0) {\n filteringMoveCount++;\n }\n if (amount <= 6) {\n return `${amount}+`;\n } else {\n return `${12 - amount}-`;\n }\n }\n\n const moves = [];\n function side(families: string[]): void {\n for (const family of families) {\n moves.push(`${family}${randomSuffix()}`);\n }\n }\n\n side(frontMoves);\n moves.push(\"y2\");\n side(backMoves);\n\n // https://www.worldcubeassociation.org/regulations/#4b3\n if (filteringMoveCount < 2) {\n return randomClockScrambleString();\n }\n\n for (const pin of pins) {\n if (randomUIntBelow(2) === 0) {\n moves.push(pin);\n }\n }\n return moves.join(\" \");\n}\n", "import { randomUIntBelow } from \"random-uint-below\";\n\nconst suffixes = [\"++\", \"--\"];\n\nexport function randomMegaminxScrambleString(): string {\n function rdPair(): string {\n return `R${suffixes[randomUIntBelow(2)]} D${suffixes[randomUIntBelow(2)]}`;\n }\n\n function randomU(): string {\n return `U${[\"\", \"'\"][randomUIntBelow(2)]}`;\n }\n\n function row(): string {\n const chunks = [];\n for (let i = 0; i < 5; i++) {\n chunks.push(rdPair());\n }\n chunks.push(randomU());\n return chunks.join(\" \");\n }\n\n const chunks = [];\n for (let i = 0; i < 6; i++) {\n chunks.push(row());\n }\n return chunks.join(\"\\n\");\n}\n", "import nodeEndpoint from \"../node-adapter\";\n\nexport { wrap } from \"comlink\";\n// Mangled so that bundlers don't try to inline the source.\n\nconst worker_threads_mangled = \"node:w-orker-_threa-ds\";\nconst worker_threads_unmangled = () => worker_threads_mangled.replace(/-/g, \"\");\n\nconst useNodeWorkarounds =\n typeof globalThis.Worker === \"undefined\" &&\n typeof (globalThis as any).WorkerNavigator === \"undefined\";\n\nasync function nodeWorker(\n source: string | URL,\n options?: { eval?: boolean },\n): Promise<Worker> {\n const { Worker: NodeWorker } = await import(\n /* @vite-ignore */ worker_threads_unmangled()\n );\n const worker = new NodeWorker(source, options);\n worker.unref();\n return nodeEndpoint(worker);\n}\n\nexport async function constructWorker(\n source: string | URL,\n options?: { eval?: boolean; type?: WorkerType },\n): Promise<Worker> {\n let worker;\n if (useNodeWorkarounds) {\n return nodeWorker(source, { eval: options?.eval });\n } else {\n if (options?.eval) {\n const blob = new Blob([source as string], {\n type: \"application/javascript\",\n });\n source = URL.createObjectURL(blob);\n }\n worker = new globalThis.Worker(source, {\n type: options ? options.type : undefined, // TODO: Is it safe to use `options?.type`?\n });\n }\n return worker;\n}\n", "import { exposeAPI } from \"./worker-guard\";\n\nexport async function searchWorkerURLImportMetaResolve(): Promise<string> {\n // Note:\n // - We have to hardcode the expected path of the entry file in the ESM build, due to lack of `esbuild` support: https://github.com/evanw/esbuild/issues/2866\n // - This URL is based on the assumption that the code from this file ends up in a shared chunk in the `esm` build. This is not guaranteed by `esbuild`, but it consistently happens for our codebase.\n // - We inline the value (instead of using a constant), to maximize compatibility for hardcoded syntax detection in bundlers.\n // - `import.meta.resolve(\u2026)` returns a sync result in every environment except `bun`: https://loadeverything.net/#compatibility-dashboard\n // - We assume that it's `async`, just in case.\n // @ts-ignore\n return import.meta.resolve(\n \"./search/worker-workarounds/search-worker-entry.js\",\n );\n}\n\nexport function searchWorkerURLNewURLImportMetaURL(): URL {\n // Note:\n // - We have to hardcode the expected path of the entry file in the ESM build, due to lack of `esbuild` support: https://github.com/evanw/esbuild/issues/795\n // - This URL is based on the assumption that the code from this file ends up in a shared chunk in the `esm` build. This is not guaranteed by `esbuild`, but it consistently happens for our codebase.\n // - We inline the value (instead of using a constant), to maximize compatibility for hardcoded syntax detection in bundlers.\n return new URL(\n \"./search/worker-workarounds/search-worker-entry.js\",\n import.meta.url,\n );\n}\n\n// Workaround for `esbuild`: https://github.com/evanw/esbuild/issues/312#issuecomment-1092195778\nexport async function searchWorkerURLEsbuildWorkaround(): Promise<string> {\n exposeAPI.expose = false;\n return (await import(\"./search-worker-entry\")).WORKER_ENTRY_FILE_URL;\n}\n", "import {\n constructWorker,\n wrap,\n} from \"../vendor/apache/comlink-everywhere/outside\";\nimport { insideAPI, type WorkerInsideAPI } from \"./inside/api\";\nimport { searchOutsideDebugGlobals } from \"./outside\";\nimport {\n searchWorkerURLEsbuildWorkaround,\n searchWorkerURLImportMetaResolve,\n searchWorkerURLNewURLImportMetaURL,\n} from \"./worker-workarounds\";\n\nexport interface WorkerOutsideAPI {\n terminate: () => void; // `node` can return a `Promise` with an exit code, but we match the web worker API.\n}\nexport interface InsideOutsideAPI {\n insideAPI: WorkerInsideAPI;\n outsideAPI: WorkerOutsideAPI;\n}\n\nexport async function instantiateModuleWorker(\n workerEntryFileURL: string | URL,\n): Promise<InsideOutsideAPI> {\n // rome-ignore lint/suspicious/noAsyncPromiseExecutor: TODO\n return new Promise<InsideOutsideAPI>(async (resolve, reject) => {\n try {\n if (!workerEntryFileURL) {\n reject(new Error(\"Could not get worker entry file URL.\"));\n }\n let url: string | URL;\n if (globalThis.Worker) {\n // Standard browser-like environment.\n const importSrc = `import ${JSON.stringify(\n workerEntryFileURL.toString(),\n )};`;\n const blob = new Blob([importSrc], {\n type: \"text/javascript\",\n });\n url = URL.createObjectURL(blob);\n } else {\n // We need to keep the original entry file URL, but we have to wrap it in the `URL` class.\n url = new URL(workerEntryFileURL);\n }\n\n const worker = (await constructWorker(url, {\n type: \"module\",\n })) as Worker & {\n nodeWorker?: import(\"worker_threads\").Worker;\n };\n\n const onError = (e: ErrorEvent) => {\n reject(e);\n };\n\n // TODO: Remove this once we can remove the workarounds for lack of `import.meta.resolve(\u2026)` support.\n const onFirstMessage = (messageData: string) => {\n if (messageData === \"comlink-exposed\") {\n // We need to clear the timeout so that we don't prevent `node` from exiting in the meantime.\n resolve(wrapWithTerminate(worker));\n } else {\n reject(\n new Error(`wrong module instantiation message ${messageData}`),\n );\n }\n };\n\n if (worker.nodeWorker) {\n // We have to use `once` so the `unref()` from `comlink-everywhere` allows the process to quit as expected.\n worker.nodeWorker.once(\"message\", onFirstMessage);\n } else {\n worker.addEventListener(\"error\", onError, {\n once: true,\n });\n worker.addEventListener(\"message\", (e) => onFirstMessage(e.data), {\n once: true,\n });\n }\n } catch (e) {\n reject(e);\n }\n });\n}\n\nfunction wrapWithTerminate(worker: Worker): InsideOutsideAPI {\n const insideAPI = wrap<WorkerInsideAPI>(worker);\n const terminate = worker.terminate.bind(worker);\n return { insideAPI, outsideAPI: { terminate } };\n}\n\nexport const allInsideOutsideAPIPromises: Promise<InsideOutsideAPI>[] = [];\n\nexport async function instantiateWorker(): Promise<InsideOutsideAPI> {\n const insideOutsideAPIPromise = instantiateWorkerImplementation();\n allInsideOutsideAPIPromises.push(insideOutsideAPIPromise);\n insideAPI.setDebugMeasurePerf(searchOutsideDebugGlobals.logPerf);\n insideAPI.setScramblePrefetchLevel(\n searchOutsideDebugGlobals.scramblePrefetchLevel,\n );\n return insideOutsideAPIPromise;\n}\n\nexport async function mapToAllWorkers(\n f: (worker: InsideOutsideAPI) => void,\n): Promise<void> {\n await Promise.all(\n allInsideOutsideAPIPromises.map((worker) => worker.then(f)),\n );\n}\n\nasync function instantiateWorkerImplementation(): Promise<InsideOutsideAPI> {\n if (searchOutsideDebugGlobals.forceStringWorker) {\n console.warn(\"The `forceStringWorker` workaround is no longer supported.\");\n }\n\n function failed(methodDescription?: string) {\n return `Module worker instantiation${\n methodDescription ? ` ${methodDescription}` : \"\"\n } failed`;\n }\n\n const fallbackOrder: [\n fn: () => string | URL | Promise<string>,\n description: string,\n warnOnSuccess: boolean,\n ][] = [\n [searchWorkerURLImportMetaResolve, \"using `import.meta.resolve(\u2026)\", false],\n [\n searchWorkerURLNewURLImportMetaURL,\n \"using `new URL(\u2026, import.meta.url)`\",\n true,\n ],\n [searchWorkerURLEsbuildWorkaround, \"using the `esbuild` workaround\", true],\n ];\n\n for (const [fn, description, warnOnSuccess] of fallbackOrder) {\n try {\n const worker = await instantiateModuleWorker(await fn());\n if (warnOnSuccess) {\n console.warn(\n `Module worker instantiation required ${description}. \\`cubing.js\\` will not support this fallback in the future.`,\n );\n }\n return worker;\n } catch {\n console.warn(`${failed(description)}, falling back.`);\n }\n }\n\n throw new Error(`${failed()}. There are no more fallbacks available.`);\n}\n", "import { Alg } from \"../alg\";\nimport type { KPuzzle } from \"../kpuzzle\";\n// import { preInitialize222 } from \"../implementations/2x2x2\";\nimport type { KState } from \"../kpuzzle/KState\";\nimport type { PrefetchLevel } from \"./inside/api\";\nimport { randomClockScrambleString } from \"./inside/solve/puzzles/clock\"; // TODO: don't reach into `inside` code.\nimport { randomMegaminxScrambleString } from \"./inside/solve/puzzles/wca-minx\"; // TODO: don't reach into `inside` code.\nimport type { TwsearchOptions } from \"./inside/solve/twsearch\";\nimport {\n type InsideOutsideAPI,\n instantiateWorker,\n mapToAllWorkers,\n} from \"./instantiator\";\n\nlet cachedWorkerInstance: Promise<InsideOutsideAPI> | null = null;\nasync function getCachedWorkerInstance(): Promise<InsideOutsideAPI> {\n return await (cachedWorkerInstance ??= instantiateWorker());\n}\n\n// Pre-initialize the scrambler for the given event. (Otherwise, an event is\n// initialized the first time you ask for a scramble for that event.)\n//\n// Some typical numbers for a fast computer:\n// - 3x3x3 initialization: 200ms\n// - Each 3x3x3 scramble: 50ms\n// - 4x4x4 initialization: 2500ms\n// - Each 4x4x4 scramble: 300ms to 800ms\n//\n// It is safe to immediately call for a scramble\n// any time after starting pre-initialization, or to call for them without\n// pre-initializing. Pre-initializing essentially gives the scramble worker a\n// head start in case a scramble doesn't get requested immediately.\n//\n// Note that events cannot be pre-initialized in parallel. Attempting to\n// pre-initialize multiple events will initialize them consecutively. Scrambles\n// for a given event cannot be computed while another event is being initialized.\nexport function _preInitializationHintForEvent(\n eventID: string,\n // callback?: () => void\n): void {\n switch (eventID) {\n case \"clock\":\n case \"minx\":\n return;\n case \"333oh\":\n _preInitializationHintForEvent(\"333\");\n return;\n }\n (async () => {\n await (await getCachedWorkerInstance()).insideAPI.initialize(eventID);\n })();\n}\n\nexport async function randomScrambleForEvent(eventID: string): Promise<Alg> {\n switch (eventID) {\n case \"clock\":\n return Alg.fromString(await randomClockScrambleString());\n case \"minx\":\n return Alg.fromString(await randomMegaminxScrambleString());\n }\n const prom = _randomScrambleStringForEvent(eventID);\n const wat = await prom;\n return Alg.fromString(wat);\n}\n\nexport async function _randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n if (searchOutsideDebugGlobals.forceNewWorkerForEveryScramble) {\n }\n const worker = searchOutsideDebugGlobals.forceNewWorkerForEveryScramble\n ? await instantiateWorker()\n : await getCachedWorkerInstance();\n return worker.insideAPI.randomScrambleStringForEvent(eventID);\n}\n\nexport async function randomScrambleStringForEvent(\n eventID: string,\n): Promise<string> {\n switch (eventID) {\n case \"clock\":\n return randomClockScrambleString();\n case \"minx\":\n return randomMegaminxScrambleString();\n }\n return await _randomScrambleStringForEvent(eventID);\n}\n\nexport async function experimentalSolve3x3x3IgnoringCenters(\n state: KState,\n): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.insideAPI.solve333ToString(state.stateData));\n}\n\nexport async function experimentalSolve2x2x2(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(await cwi.insideAPI.solve222ToString(state.stateData));\n}\n\nexport async function solveSkewb(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(\n await cwi.insideAPI.solveSkewbToString(state.stateData),\n );\n}\n\nexport async function solvePyraminx(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(\n await cwi.insideAPI.solvePyraminxToString(state.stateData),\n );\n}\n\nexport async function solveMegaminx(state: KState): Promise<Alg> {\n const cwi = await getCachedWorkerInstance();\n return Alg.fromString(\n await cwi.insideAPI.solveMegaminxToString(state.stateData),\n );\n}\n\nexport interface SolveTwsearchOptions {\n moveSubset?: string[];\n startState?: KState;\n minDepth?: number;\n}\n\nexport async function solveTwsearch(\n kpuzzle: KPuzzle,\n state: KState,\n options?: SolveTwsearchOptions,\n): Promise<Alg> {\n const { startState, ...otherOptions } = options ?? {};\n const apiOptions: TwsearchOptions = otherOptions;\n if (startState) {\n apiOptions.startState =\n startState.experimentalToTransformation()!.transformationData;\n }\n const { ...def } = kpuzzle.definition;\n delete def.experimentalIsStateSolved;\n // delete def.experimentalDerivedMoves;\n const dedicatedWorker = await instantiateWorker();\n try {\n return Alg.fromString(\n await dedicatedWorker.insideAPI.solveTwsearchToString(\n def,\n state.stateData,\n apiOptions,\n ),\n );\n } finally {\n console.log(\"Search ended, terminating dedicated `twsearch` worker.\");\n // TODO: support re-using the same worker for multiple searches..\n await dedicatedWorker.outsideAPI.terminate();\n }\n}\n\ninterface SearchOutsideDebugGlobals {\n logPerf: boolean;\n scramblePrefetchLevel: `${PrefetchLevel}`;\n forceStringWorker: boolean;\n disableStringWorker: boolean;\n forceNewWorkerForEveryScramble: boolean;\n}\nexport const searchOutsideDebugGlobals: SearchOutsideDebugGlobals = {\n logPerf: false,\n scramblePrefetchLevel: \"auto\",\n forceStringWorker: false,\n disableStringWorker: false,\n forceNewWorkerForEveryScramble: false,\n};\n\nexport function setDebug(options: Partial<SearchOutsideDebugGlobals>): void {\n const { logPerf, scramblePrefetchLevel } = options;\n if (typeof logPerf !== \"undefined\") {\n searchOutsideDebugGlobals.logPerf = logPerf;\n mapToAllWorkers((worker) => worker.insideAPI.setDebugMeasurePerf(logPerf));\n }\n if (typeof scramblePrefetchLevel !== \"undefined\") {\n searchOutsideDebugGlobals.scramblePrefetchLevel = scramblePrefetchLevel;\n mapToAllWorkers((worker) =>\n worker.insideAPI.setScramblePrefetchLevel(\n scramblePrefetchLevel as PrefetchLevel,\n ),\n );\n }\n if (\"forceStringWorker\" in options) {\n searchOutsideDebugGlobals.forceStringWorker = !!options.forceStringWorker;\n }\n if (\"disableStringWorker\" in options) {\n searchOutsideDebugGlobals.disableStringWorker =\n !!options.disableStringWorker;\n }\n if (\"forceNewWorkerForEveryScramble\" in options) {\n searchOutsideDebugGlobals.forceNewWorkerForEveryScramble =\n !!options.forceNewWorkerForEveryScramble;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["randomUIntBelow", "chunks", "insideAPI"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  from
3
- } from "./chunk-QWQ3WKAJ.js";
3
+ } from "./chunk-L4PH24KU.js";
4
4
 
5
5
  // src/cubing/twisty/debug.ts
6
6
  var twistyDebugGlobals = {
@@ -541,7 +541,7 @@ var StatsPanel = class {
541
541
  // src/cubing/twisty/heavy-code-imports/3d.ts
542
542
  var cachedConstructorProxy = null;
543
543
  async function proxy3D() {
544
- return cachedConstructorProxy ?? (cachedConstructorProxy = import("./twisty-dynamic-3d-XRLWOI7Y.js"));
544
+ return cachedConstructorProxy ?? (cachedConstructorProxy = import("./twisty-dynamic-3d-JRADYLKK.js"));
545
545
  }
546
546
  var THREEJS = from(
547
547
  async () => (await proxy3D()).T3I
@@ -1175,4 +1175,4 @@ export {
1175
1175
  proxy3D,
1176
1176
  THREEJS
1177
1177
  };
1178
- //# sourceMappingURL=chunk-BT4N5EGX.js.map
1178
+ //# sourceMappingURL=chunk-7MSAVSVG.js.map
@@ -0,0 +1,9 @@
1
+ // src/cubing/search/worker-workarounds/worker-guard.ts
2
+ var exposeAPI = {
3
+ expose: true
4
+ };
5
+
6
+ export {
7
+ exposeAPI
8
+ };
9
+ //# sourceMappingURL=chunk-7QE2OVHX.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/cubing/search/inside/worker-guard.ts"],
3
+ "sources": ["../../src/cubing/search/worker-workarounds/worker-guard.ts"],
4
4
  "sourcesContent": ["export const exposeAPI: { expose: boolean } = {\n expose: true,\n};\n"],
5
5
  "mappings": ";AAAO,IAAM,YAAiC;AAAA,EAC5C,QAAQ;AACV;",
6
6
  "names": []
@@ -11,14 +11,14 @@ import {
11
11
  experimental3x3x3KPuzzle,
12
12
  from,
13
13
  getCached
14
- } from "./chunk-QWQ3WKAJ.js";
14
+ } from "./chunk-L4PH24KU.js";
15
15
  import {
16
16
  KPuzzle
17
- } from "./chunk-UIGRNWPE.js";
17
+ } from "./chunk-RSF22LKP.js";
18
18
  import {
19
19
  Move,
20
20
  QuantumMove
21
- } from "./chunk-2OZSC5I6.js";
21
+ } from "./chunk-TM7SKFJD.js";
22
22
 
23
23
  // src/cubing/puzzles/events.ts
24
24
  var wcaEvents = {
@@ -660,4 +660,4 @@ export {
660
660
  cube3x3x3,
661
661
  puzzles
662
662
  };
663
- //# sourceMappingURL=chunk-KPYYHLXC.js.map
663
+ //# sourceMappingURL=chunk-GGJSIUGA.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  KPuzzle,
3
3
  KState
4
- } from "./chunk-UIGRNWPE.js";
4
+ } from "./chunk-RSF22LKP.js";
5
5
  import {
6
6
  Alg,
7
7
  Move
8
- } from "./chunk-2OZSC5I6.js";
8
+ } from "./chunk-TM7SKFJD.js";
9
9
 
10
10
  // src/cubing/puzzles/stickerings/mask.ts
11
11
  function getFaceletStickeringMask(stickeringMask, orbitName, pieceIdx, faceletIdx, hint) {
@@ -1230,4 +1230,4 @@ export {
1230
1230
  customPGPuzzleLoader,
1231
1231
  experimental3x3x3KPuzzle
1232
1232
  };
1233
- //# sourceMappingURL=chunk-QWQ3WKAJ.js.map
1233
+ //# sourceMappingURL=chunk-L4PH24KU.js.map
@@ -3,10 +3,10 @@ import {
3
3
  normalize3x3x3Orientation,
4
4
  puzzleOrientation3x3x3Cache,
5
5
  puzzleOrientation3x3x3Idx
6
- } from "./chunk-QWQ3WKAJ.js";
6
+ } from "./chunk-L4PH24KU.js";
7
7
  import {
8
8
  KState
9
- } from "./chunk-UIGRNWPE.js";
9
+ } from "./chunk-RSF22LKP.js";
10
10
 
11
11
  // src/cubing/protocol/binary/orbit-indexing.ts
12
12
  function identityPermutation(numElems) {
@@ -251,4 +251,4 @@ export {
251
251
  bufferToSpacedHex,
252
252
  spacedHexToBuffer
253
253
  };
254
- //# sourceMappingURL=chunk-IKK6NEES.js.map
254
+ //# sourceMappingURL=chunk-L7WY7BIO.js.map
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  puzzles
3
- } from "./chunk-KPYYHLXC.js";
3
+ } from "./chunk-GGJSIUGA.js";
4
4
  import {
5
5
  from
6
- } from "./chunk-QWQ3WKAJ.js";
6
+ } from "./chunk-L4PH24KU.js";
7
7
  import {
8
8
  KState
9
- } from "./chunk-UIGRNWPE.js";
9
+ } from "./chunk-RSF22LKP.js";
10
10
  import {
11
11
  Alg,
12
12
  AlgBuilder,
13
13
  Move
14
- } from "./chunk-2OZSC5I6.js";
14
+ } from "./chunk-TM7SKFJD.js";
15
15
 
16
16
  // src/cubing/search/inside/solve/puzzles/3x3x3/index.ts
17
17
  import { randomChoice as randomChoice2 } from "random-uint-below";
@@ -612,4 +612,4 @@ export {
612
612
  random333OrientedScramble,
613
613
  random333FewestMovesScramble
614
614
  };
615
- //# sourceMappingURL=chunk-EODSL4J7.js.map
615
+ //# sourceMappingURL=chunk-O64NYJ3S.js.map
@@ -3,7 +3,7 @@ import {
3
3
  Move,
4
4
  TraversalDownUp,
5
5
  functionFromTraversal
6
- } from "./chunk-2OZSC5I6.js";
6
+ } from "./chunk-TM7SKFJD.js";
7
7
 
8
8
  // src/cubing/kpuzzle/combine.ts
9
9
  function combineTransformationData(definition, transformationData1, transformationData2) {
@@ -601,4 +601,4 @@ export {
601
601
  KTransformation,
602
602
  KPuzzle
603
603
  };
604
- //# sourceMappingURL=chunk-UIGRNWPE.js.map
604
+ //# sourceMappingURL=chunk-RSF22LKP.js.map
@@ -1047,7 +1047,7 @@ var AppendOptionsHelper = class {
1047
1047
  function areSameDirection(direction, move2) {
1048
1048
  return direction * Math.sign(move2.amount) >= 0;
1049
1049
  }
1050
- function offsetMod(x, positiveMod, offset) {
1050
+ function offsetMod(x, positiveMod, offset = 0) {
1051
1051
  return ((x - offset) % positiveMod + positiveMod) % positiveMod + offset;
1052
1052
  }
1053
1053
  function experimentalAppendMove(alg, addedMove, options) {
@@ -1835,10 +1835,11 @@ export {
1835
1835
  TraversalDownUp,
1836
1836
  TraversalUp,
1837
1837
  functionFromTraversal,
1838
+ offsetMod,
1838
1839
  experimentalAppendMove,
1839
1840
  Alg,
1840
1841
  Example,
1841
1842
  keyToMove,
1842
1843
  experimentalAlgCubingNetLink
1843
1844
  };
1844
- //# sourceMappingURL=chunk-2OZSC5I6.js.map
1845
+ //# sourceMappingURL=chunk-TM7SKFJD.js.map