cubing 0.36.3 → 0.37.0-pre2
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.
- package/dist/esm/bluetooth/index.js +1 -1
- package/dist/esm/{chunk-VL47U5J6.js → chunk-7MSAVSVG.js} +2 -2
- package/dist/esm/chunk-7QE2OVHX.js +9 -0
- package/dist/esm/{chunk-RHC3DIN3.js.map → chunk-7QE2OVHX.js.map} +1 -1
- package/dist/esm/{chunk-N4YR7ABS.js → chunk-C7CN4URV.js} +95 -38
- package/dist/esm/chunk-C7CN4URV.js.map +7 -0
- package/dist/esm/{chunk-XM2O37XU.js → chunk-GGJSIUGA.js} +1 -1
- package/dist/esm/{chunk-HYGNVDCH.js → chunk-O64NYJ3S.js} +2 -2
- package/dist/esm/{chunk-32CPLOFX.js → chunk-TNBM5BTH.js} +7 -7
- package/dist/esm/{search-worker-js-entry-TWY4DMZQ.js → inside-PD4VUO4N.js} +5 -5
- package/dist/esm/{search-worker-js-entry-TWY4DMZQ.js.map → inside-PD4VUO4N.js.map} +1 -1
- package/dist/esm/puzzles/index.js +1 -1
- package/dist/esm/scramble/index.js +5 -5
- package/dist/esm/search/index.js +6 -6
- package/dist/esm/{search-worker-ts-entry-ZR4EM4NC.js → search/worker-workarounds/search-worker-entry.js} +6 -6
- package/dist/esm/search/worker-workarounds/search-worker-entry.js.map +7 -0
- package/dist/esm/{search-dynamic-sgs-side-events-CUV4L6KG.js → search-dynamic-sgs-side-events-U7UKYK6F.js} +2 -2
- package/dist/esm/{search-dynamic-sgs-unofficial-XFWM4IT6.js → search-dynamic-sgs-unofficial-MGKPYZK5.js} +2 -2
- package/dist/esm/{search-dynamic-solve-4x4x4-EA6XTQN2.js → search-dynamic-solve-4x4x4-YRWEYWTY.js} +3 -3
- package/dist/esm/twisty/index.js +2 -2
- package/dist/esm/{twisty-dynamic-3d-HPZKQUDJ.js → twisty-dynamic-3d-JRADYLKK.js} +3 -3
- package/package.json +1 -2
- package/dist/esm/chunk-N4YR7ABS.js.map +0 -7
- package/dist/esm/chunk-RHC3DIN3.js +0 -9
- package/dist/esm/search-worker-inside-generated-string-OA23ZSGX.js +0 -4337
- package/dist/esm/search-worker-inside-generated-string-OA23ZSGX.js.map +0 -7
- package/dist/esm/search-worker-ts-entry-ZR4EM4NC.js.map +0 -7
- /package/dist/esm/{chunk-VL47U5J6.js.map → chunk-7MSAVSVG.js.map} +0 -0
- /package/dist/esm/{chunk-XM2O37XU.js.map → chunk-GGJSIUGA.js.map} +0 -0
- /package/dist/esm/{chunk-HYGNVDCH.js.map → chunk-O64NYJ3S.js.map} +0 -0
- /package/dist/esm/{chunk-32CPLOFX.js.map → chunk-TNBM5BTH.js.map} +0 -0
- /package/dist/esm/{search-dynamic-sgs-side-events-CUV4L6KG.js.map → search-dynamic-sgs-side-events-U7UKYK6F.js.map} +0 -0
- /package/dist/esm/{search-dynamic-sgs-unofficial-XFWM4IT6.js.map → search-dynamic-sgs-unofficial-MGKPYZK5.js.map} +0 -0
- /package/dist/esm/{search-dynamic-solve-4x4x4-EA6XTQN2.js.map → search-dynamic-solve-4x4x4-YRWEYWTY.js.map} +0 -0
- /package/dist/esm/{twisty-dynamic-3d-HPZKQUDJ.js.map → twisty-dynamic-3d-JRADYLKK.js.map} +0 -0
|
@@ -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-
|
|
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-
|
|
1178
|
+
//# sourceMappingURL=chunk-7MSAVSVG.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/search/
|
|
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": []
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
insideAPI
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TNBM5BTH.js";
|
|
4
4
|
import {
|
|
5
5
|
exposeAPI
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7QE2OVHX.js";
|
|
7
7
|
import {
|
|
8
8
|
node_adapter_default
|
|
9
9
|
} from "./chunk-ZYCJIZDN.js";
|
|
@@ -107,21 +107,36 @@ async function constructWorker(source, options) {
|
|
|
107
107
|
return worker;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
// src/cubing/search/
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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;
|
|
125
|
+
}
|
|
126
|
+
function instantiateSearchWorkerURLNewURLImportMetaURL() {
|
|
127
|
+
return new Worker(
|
|
128
|
+
new URL(
|
|
129
|
+
"./search/worker-workarounds/search-worker-entry.js",
|
|
130
|
+
import.meta.url
|
|
131
|
+
),
|
|
132
|
+
{ type: "module" }
|
|
133
|
+
);
|
|
114
134
|
}
|
|
115
135
|
|
|
116
136
|
// src/cubing/search/instantiator.ts
|
|
117
|
-
|
|
118
|
-
async function instantiateModuleWorker() {
|
|
137
|
+
async function instantiateModuleWorker(workerEntryFileURL) {
|
|
119
138
|
return new Promise(async (resolve, reject) => {
|
|
120
|
-
const timeoutID = setTimeout(() => {
|
|
121
|
-
reject(new Error("module instantiation timeout"));
|
|
122
|
-
}, MODULE_WORKER_TIMEOUT_MILLISECONDS);
|
|
123
139
|
try {
|
|
124
|
-
const workerEntryFileURL = await getWorkerEntryFileURL();
|
|
125
140
|
if (!workerEntryFileURL) {
|
|
126
141
|
reject(new Error("Could not get worker entry file URL."));
|
|
127
142
|
}
|
|
@@ -141,13 +156,10 @@ async function instantiateModuleWorker() {
|
|
|
141
156
|
type: "module"
|
|
142
157
|
});
|
|
143
158
|
const onError = (e) => {
|
|
144
|
-
|
|
145
|
-
reject(e);
|
|
146
|
-
}
|
|
159
|
+
reject(e);
|
|
147
160
|
};
|
|
148
161
|
const onFirstMessage = (messageData) => {
|
|
149
162
|
if (messageData === "comlink-exposed") {
|
|
150
|
-
clearTimeout(timeoutID);
|
|
151
163
|
resolve(wrapWithTerminate(worker));
|
|
152
164
|
} else {
|
|
153
165
|
reject(
|
|
@@ -170,16 +182,38 @@ async function instantiateModuleWorker() {
|
|
|
170
182
|
}
|
|
171
183
|
});
|
|
172
184
|
}
|
|
185
|
+
async function instantiateModuleWorkerDirectlyForBrowser() {
|
|
186
|
+
return new Promise(async (resolve, reject) => {
|
|
187
|
+
try {
|
|
188
|
+
const worker = instantiateSearchWorkerURLNewURLImportMetaURL();
|
|
189
|
+
const onError = (e) => {
|
|
190
|
+
reject(e);
|
|
191
|
+
};
|
|
192
|
+
const onFirstMessage = (messageData) => {
|
|
193
|
+
if (messageData === "comlink-exposed") {
|
|
194
|
+
resolve(wrapWithTerminate(worker));
|
|
195
|
+
} else {
|
|
196
|
+
reject(
|
|
197
|
+
new Error(`wrong module instantiation message ${messageData}`)
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
worker.addEventListener("error", onError, {
|
|
202
|
+
once: true
|
|
203
|
+
});
|
|
204
|
+
worker.addEventListener("message", (e) => onFirstMessage(e.data), {
|
|
205
|
+
once: true
|
|
206
|
+
});
|
|
207
|
+
} catch (e) {
|
|
208
|
+
reject(e);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
173
212
|
function wrapWithTerminate(worker) {
|
|
174
213
|
const insideAPI2 = wrap(worker);
|
|
175
214
|
const terminate = worker.terminate.bind(worker);
|
|
176
215
|
return { insideAPI: insideAPI2, outsideAPI: { terminate } };
|
|
177
216
|
}
|
|
178
|
-
async function instantiateClassicWorker() {
|
|
179
|
-
const { workerSource } = await import("./search-worker-inside-generated-string-OA23ZSGX.js");
|
|
180
|
-
const worker = await constructWorker(workerSource, { eval: true });
|
|
181
|
-
return wrapWithTerminate(worker);
|
|
182
|
-
}
|
|
183
217
|
var allInsideOutsideAPIPromises = [];
|
|
184
218
|
async function instantiateWorker() {
|
|
185
219
|
const insideOutsideAPIPromise = instantiateWorkerImplementation();
|
|
@@ -197,25 +231,48 @@ async function mapToAllWorkers(f) {
|
|
|
197
231
|
}
|
|
198
232
|
async function instantiateWorkerImplementation() {
|
|
199
233
|
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();
|
|
234
|
+
console.warn("The `forceStringWorker` workaround is no longer supported.");
|
|
204
235
|
}
|
|
205
|
-
|
|
206
|
-
return
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
236
|
+
function failed(methodDescription) {
|
|
237
|
+
return `Module worker instantiation${methodDescription ? ` ${methodDescription}` : ""} failed`;
|
|
238
|
+
}
|
|
239
|
+
const fallbackOrder = [
|
|
240
|
+
[
|
|
241
|
+
async () => instantiateModuleWorker(await searchWorkerURLImportMetaResolve()),
|
|
242
|
+
"using `import.meta.resolve(\u2026)",
|
|
243
|
+
null
|
|
244
|
+
],
|
|
245
|
+
// TODO: This fallback should be lower (because it's less portable), but we need to try it earlier to work around https://github.com/parcel-bundler/parcel/issues/9051
|
|
246
|
+
[
|
|
247
|
+
instantiateModuleWorkerDirectlyForBrowser,
|
|
248
|
+
"using inline `new URL(\u2026, import.meta.url)`",
|
|
249
|
+
"may"
|
|
250
|
+
],
|
|
251
|
+
[
|
|
252
|
+
async () => instantiateModuleWorker(searchWorkerURLNewURLImportMetaURL()),
|
|
253
|
+
"using `new URL(\u2026, import.meta.url)`",
|
|
254
|
+
"will"
|
|
255
|
+
],
|
|
256
|
+
[
|
|
257
|
+
async () => instantiateModuleWorker(await searchWorkerURLEsbuildWorkaround()),
|
|
258
|
+
"using the `esbuild` workaround",
|
|
259
|
+
"will"
|
|
260
|
+
]
|
|
261
|
+
];
|
|
262
|
+
for (const [fn, description, warnOnSuccess] of fallbackOrder) {
|
|
263
|
+
try {
|
|
264
|
+
const worker = await fn();
|
|
265
|
+
if (warnOnSuccess) {
|
|
266
|
+
console.warn(
|
|
267
|
+
`Module worker instantiation required ${description}. \`cubing.js\` ${warnOnSuccess} not support this fallback in the future.`
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
return worker;
|
|
271
|
+
} catch {
|
|
272
|
+
console.warn(`${failed(description)}, falling back.`);
|
|
215
273
|
}
|
|
216
|
-
console.warn(`${commonErrorPrefix} Falling back to string worker.`, e);
|
|
217
|
-
return instantiateClassicWorker();
|
|
218
274
|
}
|
|
275
|
+
throw new Error(`${failed()}. There are no more fallbacks available.`);
|
|
219
276
|
}
|
|
220
277
|
|
|
221
278
|
// src/cubing/search/outside.ts
|
|
@@ -330,4 +387,4 @@ export {
|
|
|
330
387
|
solveTwsearch,
|
|
331
388
|
setDebug
|
|
332
389
|
};
|
|
333
|
-
//# sourceMappingURL=chunk-
|
|
390
|
+
//# sourceMappingURL=chunk-C7CN4URV.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\nexport function instantiateSearchWorkerURLNewURLImportMetaURL(): Worker {\n return new Worker(\n new URL(\n \"./search/worker-workarounds/search-worker-entry.js\",\n import.meta.url,\n ),\n { type: \"module\" },\n );\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 instantiateSearchWorkerURLNewURLImportMetaURL,\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\n// Maybe some day if we work really hard, this code path can work:\n// - in `node` (https://github.com/nodejs/node/issues/43583#issuecomment-1540025755)\n// - for CDNs (https://github.com/tc39/proposal-module-expressions or https://github.com/whatwg/html/issues/6911)\nexport async function instantiateModuleWorkerDirectlyForBrowser(): Promise<InsideOutsideAPI> {\n // rome-ignore lint/suspicious/noAsyncPromiseExecutor: TODO\n return new Promise<InsideOutsideAPI>(async (resolve, reject) => {\n try {\n const worker = instantiateSearchWorkerURLNewURLImportMetaURL();\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 worker.addEventListener(\"error\", onError, {\n once: true,\n });\n worker.addEventListener(\"message\", (e) => onFirstMessage(e.data), {\n once: true,\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: () => Promise<InsideOutsideAPI>,\n description: string,\n warnOnSuccess: null | string,\n ][] = [\n [\n async () =>\n instantiateModuleWorker(await searchWorkerURLImportMetaResolve()),\n \"using `import.meta.resolve(\u2026)\",\n null,\n ],\n // TODO: This fallback should be lower (because it's less portable), but we need to try it earlier to work around https://github.com/parcel-bundler/parcel/issues/9051\n [\n instantiateModuleWorkerDirectlyForBrowser,\n \"using inline `new URL(\u2026, import.meta.url)`\",\n \"may\",\n ],\n [\n async () => instantiateModuleWorker(searchWorkerURLNewURLImportMetaURL()),\n \"using `new URL(\u2026, import.meta.url)`\",\n \"will\",\n ],\n [\n async () =>\n instantiateModuleWorker(await searchWorkerURLEsbuildWorkaround()),\n \"using the `esbuild` workaround\",\n \"will\",\n ],\n ];\n\n for (const [fn, description, warnOnSuccess] of fallbackOrder) {\n try {\n const worker = await fn();\n if (warnOnSuccess) {\n console.warn(\n `Module worker instantiation required ${description}. \\`cubing.js\\` ${warnOnSuccess} 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
|
puzzles
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GGJSIUGA.js";
|
|
4
4
|
import {
|
|
5
5
|
from
|
|
6
6
|
} from "./chunk-L4PH24KU.js";
|
|
@@ -612,4 +612,4 @@ export {
|
|
|
612
612
|
random333OrientedScramble,
|
|
613
613
|
random333FewestMovesScramble
|
|
614
614
|
};
|
|
615
|
-
//# sourceMappingURL=chunk-
|
|
615
|
+
//# sourceMappingURL=chunk-O64NYJ3S.js.map
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
random333Scramble,
|
|
8
8
|
setIsInsideWorker,
|
|
9
9
|
solve333
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-O64NYJ3S.js";
|
|
11
11
|
import {
|
|
12
12
|
countMoves
|
|
13
13
|
} from "./chunk-WWCSMIJO.js";
|
|
14
14
|
import {
|
|
15
15
|
cube2x2x2,
|
|
16
16
|
puzzles
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-GGJSIUGA.js";
|
|
18
18
|
import {
|
|
19
19
|
from,
|
|
20
20
|
normalize2x2x2Orientation
|
|
@@ -172,7 +172,7 @@ function randomStateFromSGS(kpuzzle, sgs) {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
// src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/index.ts
|
|
175
|
-
var searchDynamicSideEvents = from(() => import("./search-dynamic-sgs-side-events-
|
|
175
|
+
var searchDynamicSideEvents = from(() => import("./search-dynamic-sgs-side-events-U7UKYK6F.js"));
|
|
176
176
|
|
|
177
177
|
// src/cubing/search/inside/solve/twsearch.ts
|
|
178
178
|
var twsearchPromise = from(async () => import("./twsearch-JCPGQMKW.js"));
|
|
@@ -359,7 +359,7 @@ async function random222Scramble() {
|
|
|
359
359
|
}
|
|
360
360
|
|
|
361
361
|
// src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/index.ts
|
|
362
|
-
var dynamic4x4x4Solver = from(() => import("./search-dynamic-solve-4x4x4-
|
|
362
|
+
var dynamic4x4x4Solver = from(() => import("./search-dynamic-solve-4x4x4-YRWEYWTY.js"));
|
|
363
363
|
|
|
364
364
|
// src/cubing/search/inside/solve/puzzles/4x4x4.ts
|
|
365
365
|
var randomSuffixes = [
|
|
@@ -452,7 +452,7 @@ async function oriented555RandomMoves() {
|
|
|
452
452
|
var dynamicFTOSolver = from(() => import("./search-dynamic-solve-fto-IDE3JR5R.js"));
|
|
453
453
|
|
|
454
454
|
// src/cubing/search/inside/solve/puzzles/fto.ts
|
|
455
|
-
var dynamic = from(() => import("./search-dynamic-sgs-unofficial-
|
|
455
|
+
var dynamic = from(() => import("./search-dynamic-sgs-unofficial-MGKPYZK5.js"));
|
|
456
456
|
async function randomFTOScramble() {
|
|
457
457
|
mustBeInsideWorker();
|
|
458
458
|
return new Alg(await (await dynamicFTOSolver).randomFTOScrambleString());
|
|
@@ -540,7 +540,7 @@ async function randomPyraminxScrambleFixedOrientation() {
|
|
|
540
540
|
}
|
|
541
541
|
|
|
542
542
|
// src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/index.ts
|
|
543
|
-
var searchDynamicUnofficial = from(() => import("./search-dynamic-sgs-unofficial-
|
|
543
|
+
var searchDynamicUnofficial = from(() => import("./search-dynamic-sgs-unofficial-MGKPYZK5.js"));
|
|
544
544
|
|
|
545
545
|
// src/cubing/search/inside/solve/puzzles/redi_cube.ts
|
|
546
546
|
async function randomRediCubeScramble() {
|
|
@@ -797,4 +797,4 @@ var insideAPI = {
|
|
|
797
797
|
export {
|
|
798
798
|
insideAPI
|
|
799
799
|
};
|
|
800
|
-
//# sourceMappingURL=chunk-
|
|
800
|
+
//# sourceMappingURL=chunk-TNBM5BTH.js.map
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
} from "./chunk-6OUID4YZ.js";
|
|
4
4
|
import {
|
|
5
5
|
insideAPI
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TNBM5BTH.js";
|
|
7
|
+
import "./chunk-O64NYJ3S.js";
|
|
7
8
|
import "./chunk-ZYCJIZDN.js";
|
|
8
|
-
import "./chunk-HYGNVDCH.js";
|
|
9
9
|
import "./chunk-WWCSMIJO.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-GGJSIUGA.js";
|
|
11
11
|
import "./chunk-L4PH24KU.js";
|
|
12
12
|
import "./chunk-RSF22LKP.js";
|
|
13
13
|
import "./chunk-TM7SKFJD.js";
|
|
14
14
|
|
|
15
|
-
// src/cubing/search/inside/
|
|
15
|
+
// src/cubing/search/inside/index.ts
|
|
16
16
|
expose(insideAPI);
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=inside-PD4VUO4N.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/search/inside/
|
|
3
|
+
"sources": ["../../src/cubing/search/inside/index.ts"],
|
|
4
4
|
"sourcesContent": ["import { expose } from \"../../vendor/apache/comlink-everywhere/inside\";\nimport { insideAPI } from \"./api\";\n\nexpose(insideAPI);\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;AAGA,OAAO,SAAS;",
|
|
6
6
|
"names": []
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
randomScrambleForEvent
|
|
3
|
-
} from "../chunk-
|
|
4
|
-
import "../chunk-
|
|
5
|
-
import "../chunk-
|
|
3
|
+
} from "../chunk-C7CN4URV.js";
|
|
4
|
+
import "../chunk-TNBM5BTH.js";
|
|
5
|
+
import "../chunk-O64NYJ3S.js";
|
|
6
|
+
import "../chunk-7QE2OVHX.js";
|
|
6
7
|
import "../chunk-ZYCJIZDN.js";
|
|
7
|
-
import "../chunk-HYGNVDCH.js";
|
|
8
8
|
import "../chunk-WWCSMIJO.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-GGJSIUGA.js";
|
|
10
10
|
import "../chunk-L4PH24KU.js";
|
|
11
11
|
import "../chunk-RSF22LKP.js";
|
|
12
12
|
import "../chunk-TM7SKFJD.js";
|
package/dist/esm/search/index.js
CHANGED
|
@@ -6,15 +6,15 @@ import {
|
|
|
6
6
|
solvePyraminx,
|
|
7
7
|
solveSkewb,
|
|
8
8
|
solveTwsearch
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-RHC3DIN3.js";
|
|
12
|
-
import "../chunk-ZYCJIZDN.js";
|
|
9
|
+
} from "../chunk-C7CN4URV.js";
|
|
10
|
+
import "../chunk-TNBM5BTH.js";
|
|
13
11
|
import {
|
|
14
12
|
random333State
|
|
15
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-O64NYJ3S.js";
|
|
14
|
+
import "../chunk-7QE2OVHX.js";
|
|
15
|
+
import "../chunk-ZYCJIZDN.js";
|
|
16
16
|
import "../chunk-WWCSMIJO.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-GGJSIUGA.js";
|
|
18
18
|
import "../chunk-L4PH24KU.js";
|
|
19
19
|
import "../chunk-RSF22LKP.js";
|
|
20
20
|
import "../chunk-TM7SKFJD.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
nodeEndpointPort
|
|
3
|
-
} from "
|
|
3
|
+
} from "../../chunk-6OUID4YZ.js";
|
|
4
4
|
import {
|
|
5
5
|
exposeAPI
|
|
6
|
-
} from "
|
|
7
|
-
import "
|
|
6
|
+
} from "../../chunk-7QE2OVHX.js";
|
|
7
|
+
import "../../chunk-ZYCJIZDN.js";
|
|
8
8
|
|
|
9
|
-
// src/cubing/search/
|
|
9
|
+
// src/cubing/search/worker-workarounds/search-worker-entry.js
|
|
10
10
|
if (exposeAPI.expose) {
|
|
11
11
|
(async () => {
|
|
12
|
-
await import("
|
|
12
|
+
await import("../../inside-PD4VUO4N.js");
|
|
13
13
|
const messagePort = globalThis.postMessage ? globalThis : await nodeEndpointPort();
|
|
14
14
|
messagePort.postMessage("comlink-exposed");
|
|
15
15
|
})();
|
|
@@ -18,4 +18,4 @@ var WORKER_ENTRY_FILE_URL = import.meta.url;
|
|
|
18
18
|
export {
|
|
19
19
|
WORKER_ENTRY_FILE_URL
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=search-worker-
|
|
21
|
+
//# sourceMappingURL=search-worker-entry.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/cubing/search/worker-workarounds/search-worker-entry.js"],
|
|
4
|
+
"sourcesContent": ["import { nodeEndpointPort } from \"../../vendor/apache/comlink-everywhere/inside/index\";\nimport { exposeAPI } from \"./worker-guard\";\n\nif (exposeAPI.expose) {\n (async () => {\n await import(\"../inside\");\n\n // Workaround for `node`\n const messagePort = globalThis.postMessage\n ? globalThis\n : await nodeEndpointPort();\n messagePort.postMessage(\"comlink-exposed\"); // TODO: remove this\n })();\n}\n\n// Workaround for `esbuild`: https://github.com/evanw/esbuild/issues/312#issuecomment-1092195778\nexport const WORKER_ENTRY_FILE_URL = import.meta.url;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAGA,IAAI,UAAU,QAAQ;AACpB,GAAC,YAAY;AACX,UAAM,OAAO,0BAAW;AAGxB,UAAM,cAAc,WAAW,cAC3B,aACA,MAAM,iBAAiB;AAC3B,gBAAY,YAAY,iBAAiB;AAAA,EAC3C,GAAG;AACL;AAGO,IAAM,wBAAwB,YAAY;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
cube2x2x2,
|
|
6
6
|
puzzles
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GGJSIUGA.js";
|
|
8
8
|
import "./chunk-L4PH24KU.js";
|
|
9
9
|
import {
|
|
10
10
|
KPuzzle
|
|
@@ -1888,4 +1888,4 @@ export {
|
|
|
1888
1888
|
sgsDataSkewbFixedCorner,
|
|
1889
1889
|
skewbKPuzzleWithoutMOCached
|
|
1890
1890
|
};
|
|
1891
|
-
//# sourceMappingURL=search-dynamic-sgs-side-events-
|
|
1891
|
+
//# sourceMappingURL=search-dynamic-sgs-side-events-U7UKYK6F.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-ZIFM3JF6.js";
|
|
4
4
|
import {
|
|
5
5
|
puzzles
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-GGJSIUGA.js";
|
|
7
7
|
import "./chunk-L4PH24KU.js";
|
|
8
8
|
import "./chunk-RSF22LKP.js";
|
|
9
9
|
import {
|
|
@@ -1265,4 +1265,4 @@ export {
|
|
|
1265
1265
|
getRandomRediCubeScramble,
|
|
1266
1266
|
sgsDataFTO
|
|
1267
1267
|
};
|
|
1268
|
-
//# sourceMappingURL=search-dynamic-sgs-unofficial-
|
|
1268
|
+
//# sourceMappingURL=search-dynamic-sgs-unofficial-MGKPYZK5.js.map
|
package/dist/esm/{search-dynamic-solve-4x4x4-EA6XTQN2.js → search-dynamic-solve-4x4x4-YRWEYWTY.js}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mustBeInsideWorker,
|
|
3
3
|
random333Scramble
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-O64NYJ3S.js";
|
|
5
|
+
import "./chunk-GGJSIUGA.js";
|
|
6
6
|
import "./chunk-L4PH24KU.js";
|
|
7
7
|
import "./chunk-RSF22LKP.js";
|
|
8
8
|
import {
|
|
@@ -2921,4 +2921,4 @@ export {
|
|
|
2921
2921
|
initialize,
|
|
2922
2922
|
random444Scramble
|
|
2923
2923
|
};
|
|
2924
|
-
//# sourceMappingURL=search-dynamic-solve-4x4x4-
|
|
2924
|
+
//# sourceMappingURL=search-dynamic-solve-4x4x4-YRWEYWTY.js.map
|
package/dist/esm/twisty/index.js
CHANGED
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
rawRenderPooled,
|
|
19
19
|
setCameraFromOrbitCoordinates,
|
|
20
20
|
setTwistyDebug
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-7MSAVSVG.js";
|
|
22
22
|
import {
|
|
23
23
|
countAnimatedLeaves,
|
|
24
24
|
countMetricMoves,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
cube3x3x3,
|
|
29
29
|
puzzles
|
|
30
|
-
} from "../chunk-
|
|
30
|
+
} from "../chunk-GGJSIUGA.js";
|
|
31
31
|
import {
|
|
32
32
|
customPGPuzzleLoader,
|
|
33
33
|
getPartialAppendOptionsForPuzzleSpecificSimplifyOptions,
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
THREEJS,
|
|
4
4
|
haveStartedSharingRenderers,
|
|
5
5
|
hintFaceletStyles
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7MSAVSVG.js";
|
|
7
7
|
import {
|
|
8
8
|
cube3x3x3
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-GGJSIUGA.js";
|
|
10
10
|
import {
|
|
11
11
|
getFaceletStickeringMask
|
|
12
12
|
} from "./chunk-L4PH24KU.js";
|
|
@@ -1793,4 +1793,4 @@ export {
|
|
|
1793
1793
|
cube3DShim,
|
|
1794
1794
|
pg3dShim
|
|
1795
1795
|
};
|
|
1796
|
-
//# sourceMappingURL=twisty-dynamic-3d-
|
|
1796
|
+
//# sourceMappingURL=twisty-dynamic-3d-JRADYLKK.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cubing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0-pre2",
|
|
4
4
|
"description": "A collection of JavaScript cubing libraries.",
|
|
5
5
|
"author": "The js.cubing.net team",
|
|
6
6
|
"type": "module",
|
|
@@ -113,7 +113,6 @@
|
|
|
113
113
|
"build-site-twizzle": "make build-site-twizzle",
|
|
114
114
|
"build-site-experiments": "make build-site-experiments",
|
|
115
115
|
"build-site-docs": "make build-site-docs",
|
|
116
|
-
"build-search-worker": "make build-search-worker",
|
|
117
116
|
"generate-js": "make generate-js",
|
|
118
117
|
"generate-js-parsers": "make generate-js-parsers",
|
|
119
118
|
"generate-js-svg": "make generate-js-svg",
|