UNPKG

@xwordly/xword-parser

Version:

Fast, type-safe TypeScript library for parsing crossword puzzles (PUZ, iPUZ, JPZ, XD)

68 lines (66 loc) 2.46 kB
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