@xwordly/xword-parser
Version:
Fast, type-safe TypeScript library for parsing crossword puzzles (PUZ, iPUZ, JPZ, XD)
68 lines (66 loc) • 2.46 kB
JavaScript
import { getOrderedFormatsToTry } from './chunk-Q5B2K4C6.mjs';
import { ParseError, FormatDetectionError } from './chunk-O732NFC7.mjs';
// src/lazy.ts
async function parseLazy(data, options) {
let content;
if (data instanceof ArrayBuffer) {
content = Buffer.from(data);
} else {
content = data;
}
const formatsToTry = getOrderedFormatsToTry(content, options?.filename);
let lastError;
for (const format of formatsToTry) {
try {
switch (format) {
case "ipuz": {
const textContent = typeof content === "string" ? content : content.toString(options?.encoding || "utf-8");
const { parseIpuz, convertIpuzToUnified } = await import('./ipuz-AHSMAOCY.mjs');
const puzzle = parseIpuz(textContent, options);
return convertIpuzToUnified(puzzle);
}
case "puz": {
if (typeof content !== "string") {
const { parsePuz, convertPuzToUnified } = await import('./puz-S4CPVAJW.mjs');
const puzzle = parsePuz(content, options);
return convertPuzToUnified(puzzle);
}
break;
}
case "jpz": {
const textContent = typeof content === "string" ? content : content.toString(options?.encoding || "utf-8");
const { parseJpz, convertJpzToUnified } = await import('./jpz-NKYRZFGR.mjs');
const puzzle = parseJpz(textContent, options);
return convertJpzToUnified(puzzle);
}
case "xd": {
const textContent = typeof content === "string" ? content : content.toString(options?.encoding || "utf-8");
const { parseXd, convertXdToUnified } = await import('./xd-BWIXUM7J.mjs');
const puzzle = parseXd(textContent, options);
return convertXdToUnified(puzzle);
}
}
} catch (e) {
lastError = e;
if (e instanceof ParseError && !e.isFormatMismatch()) {
throw e;
}
}
}
if (lastError && !(lastError instanceof ParseError && lastError.isFormatMismatch())) {
if (lastError instanceof Error) {
throw lastError;
}
throw new FormatDetectionError(
"Unable to detect puzzle format. Supported formats: iPUZ, PUZ, JPZ, XD",
void 0,
lastError
);
}
throw new FormatDetectionError(
"Unable to detect puzzle format. Supported formats: iPUZ, PUZ, JPZ, XD"
);
}
export { parseLazy };
//# sourceMappingURL=lazy.mjs.map
//# sourceMappingURL=lazy.mjs.map