{"version":3,"sources":["../node_modules/.pnpm/tsup@8.5.1_postcss@8.5.26_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","../lib/stable/processor-worker.ts","../lib/stable/native.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n  typeof document === \"undefined\" \n    ? new URL(`file:${__filename}`).href \n    : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n      ? document.currentScript.src \n      : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { parentPort, workerData } from \"node:worker_threads\";\n\nimport { loadNativeAddon, type NativeWrapper } from \"./native\";\n\ninterface Request {\n  id: number;\n  method: string;\n  args: unknown[];\n}\n\nconst port = parentPort;\nif (!port) throw new Error(\"processor-worker must run in a worker thread\");\n\nconst Native = loadNativeAddon().LibRawWrapper;\nconst wrapper = new Native(Number(workerData?.flags ?? 0));\nconst cancellation = new Int32Array(workerData.cancellationBuffer as SharedArrayBuffer);\nwrapper.setCancellationBuffer(cancellation);\nlet ownedInput: Buffer | undefined;\nlet processed = false;\nlet thumbnailUnpacked = false;\n\nconst aliases: Record<string, string> = {\n  unpackThumb: \"unpackThumbnail\",\n  thumbOk: \"thumbOK\",\n  dcrawProcess: \"processImage\",\n  dcrawPpmTiffWriter: \"writePPM\",\n  dcrawThumbWriter: \"writeThumbnail\",\n  dcrawMakeMemImage: \"createMemoryImage\",\n  dcrawMakeMemThumb: \"createMemoryThumbnail\",\n  colorAt: \"getColorAt\",\n  isSraw: \"isSRAW\",\n  isNikonSraw: \"isNikonSRAW\",\n  isCoolscanNef: \"isCoolscanNEF\",\n  isJpegThumb: \"isJPEGThumb\",\n  haveFpData: \"haveFPData\",\n  strError: \"strerror\",\n};\n\nfunction asBuffer(value: unknown): Buffer {\n  if (Buffer.isBuffer(value)) return Buffer.from(value);\n  if (value instanceof Uint8Array) return Buffer.from(value);\n  throw new TypeError(\"Expected Buffer or Uint8Array\");\n}\n\nfunction invoke(method: string, args: unknown[]): unknown {\n  if (method === \"recycle\") {\n    try {\n      return wrapper.close();\n    } finally {\n      ownedInput = undefined;\n      processed = false;\n      thumbnailUnpacked = false;\n    }\n  }\n  if (method === \"close\") {\n    try {\n      return wrapper.close();\n    } finally {\n      ownedInput = undefined;\n      processed = false;\n      thumbnailUnpacked = false;\n    }\n  }\n  if (method === \"loadFile\") {\n    wrapper.close();\n    ownedInput = undefined;\n    processed = false;\n    thumbnailUnpacked = false;\n    const result = wrapper.loadFile(...args);\n    return result;\n  }\n  if (method === \"openFile\") {\n    const result = wrapper.openFile(...args);\n    ownedInput = undefined;\n    processed = false;\n    thumbnailUnpacked = false;\n    return result;\n  }\n  if (method === \"loadBayerData\") {\n    wrapper.close();\n    ownedInput = undefined;\n    processed = false;\n    thumbnailUnpacked = false;\n    const result = wrapper.loadBayerData(...args);\n    return result;\n  }\n  if (method === \"loadBuffer\") {\n    wrapper.close();\n    ownedInput = undefined;\n    processed = false;\n    thumbnailUnpacked = false;\n    ownedInput = asBuffer(args[0]);\n    const result = wrapper.loadBuffer(ownedInput);\n    return result;\n  }\n  if (method === \"openBuffer\") {\n    const input = asBuffer(args[0]);\n    const nativeOpen = wrapper.openBuffer;\n    const result = nativeOpen\n      ? nativeOpen.call(wrapper, input)\n      : wrapper.loadBuffer(input);\n    ownedInput = input;\n    processed = false;\n    thumbnailUnpacked = false;\n    return result;\n  }\n  if (method === \"openBayer\") {\n    const input = asBuffer(args[0]);\n    const result = wrapper.openBayer(input, args[1]);\n    ownedInput = input;\n    processed = false;\n    thumbnailUnpacked = false;\n    return result;\n  }\n  if (method === \"phaseOneSubtractBlack\") {\n    return wrapper.phaseOneSubtractBlack(asBuffer(args[0]));\n  }\n  if (method === \"copyMemImageOwned\") {\n    const destination = Buffer.alloc(Number(args[0]));\n    wrapper.copyMemImage(destination, args[1], args[2]);\n    return destination;\n  }\n  if (method === \"renderProcessedImage\") {\n    if (!processed) {\n      wrapper.processImage();\n      processed = true;\n    }\n    return wrapper.createMemoryImage();\n  }\n  if (method === \"renderThumbnail\") {\n    if (!thumbnailUnpacked) {\n      wrapper.unpackThumbnail();\n      thumbnailUnpacked = true;\n    }\n    return wrapper.createMemoryThumbnail();\n  }\n  if (method === \"processRawThumbnailNative\") {\n    const options = args[0] as {\n      filePath: string;\n      format: string;\n      tryEmbedded: boolean;\n    };\n    wrapper.close();\n    ownedInput = undefined;\n    processed = false;\n    thumbnailUnpacked = false;\n    wrapper.loadFile(options.filePath);\n    if (options.tryEmbedded && options.format === \"jpeg\") {\n      try {\n        wrapper.unpackThumbnail();\n        thumbnailUnpacked = true;\n        return {\n          image: wrapper.createMemoryThumbnail(),\n          source: \"embedded-thumbnail\",\n        };\n      } catch {\n        // The full decode below is the deterministic fallback.\n      }\n    }\n    wrapper.processImage();\n    processed = true;\n    return { image: wrapper.createMemoryImage(), source: \"processed\" };\n  }\n  if (method === \"getImgData\") {\n    return {\n      metadata: wrapper.getMetadata(),\n      sizes: wrapper.getImageSize(),\n      advanced: wrapper.getAdvancedMetadata(),\n      lens: wrapper.getLensInfo(),\n      color: wrapper.getColorInfo(),\n      params: wrapper.getOutputParams(),\n    };\n  }\n\n  const nativeName = aliases[method] ?? method;\n  const nativeMethod = wrapper[nativeName];\n  if (typeof nativeMethod !== \"function\") {\n    const error = new Error(`Native operation ${method} is unavailable`);\n    Object.assign(error, { code: \"UNSUPPORTED_OPERATION\" });\n    throw error;\n  }\n  const result = nativeMethod.apply(wrapper, args);\n  if (method === \"dcrawProcess\" || method === \"processImage\") processed = true;\n  if (method === \"unpackThumb\" || method === \"unpackThumbEx\") thumbnailUnpacked = true;\n  if (method === \"freeImage\" || method === \"setOutputParams\") processed = false;\n  if (method === \"recycleDatastream\") ownedInput = undefined;\n  return result;\n}\n\nport.on(\"message\", ({ id, method, args }: Request) => {\n  try {\n    const result = invoke(method, args);\n    const events = wrapper.drainEvents() as Array<Record<string, unknown>>;\n    for (const event of events) port.postMessage({ event });\n    port.postMessage({ id, result });\n  } catch (error) {\n    const events = wrapper.drainEvents() as Array<Record<string, unknown>>;\n    for (const event of events) port.postMessage({ event });\n    const candidate = error as Error & { code?: string; librawCode?: number };\n    port.postMessage({\n      id,\n      error: {\n        name: candidate.name,\n        message: candidate.message,\n        code: candidate.code,\n        librawCode: candidate.librawCode,\n        stack: candidate.stack,\n      },\n    });\n  }\n});\n","import { existsSync, readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport nodeGypBuild from \"node-gyp-build\";\n\nexport interface NativeWrapper {\n  [name: string]: any;\n}\n\nexport interface NativeWrapperConstructor {\n  new (flags?: number): NativeWrapper;\n  getVersion(): string;\n  getCapabilities(): number;\n  getCameraList(): string[];\n  getCameraCount(): number;\n  cameraMakerIndexToMaker(index: number): string | null;\n  simplifyMakeModel(index: number, make: string, model: string): {\n    makerIndex: number;\n    make: string;\n    model: string;\n  };\n  strProgress(progress: number): string;\n}\n\nexport interface NativeAddon {\n  LibRawWrapper: NativeWrapperConstructor;\n}\n\nfunction moduleDirectory(): string {\n  return typeof __dirname === \"string\"\n    ? __dirname\n    : path.dirname(fileURLToPath(import.meta.url));\n}\n\nexport function findPackageRoot(start = moduleDirectory()): string {\n  let current = start;\n  for (;;) {\n    const manifest = path.join(current, \"package.json\");\n    if (existsSync(manifest)) {\n      try {\n        const parsed = JSON.parse(readFileSync(manifest, \"utf8\")) as {\n          name?: string;\n        };\n        if (parsed.name === \"lightdrift-libraw\") return current;\n      } catch {\n        // Keep walking; a parent package may own the bundled file.\n      }\n    }\n    const parent = path.dirname(current);\n    if (parent === current) break;\n    current = parent;\n  }\n  throw new Error(\"Cannot locate the lightdrift-libraw package root\");\n}\n\nlet cachedAddon: NativeAddon | undefined;\n\nexport function loadNativeAddon(): NativeAddon {\n  cachedAddon ??= nodeGypBuild(findPackageRoot()) as NativeAddon;\n  return cachedAddon;\n}\n"],"mappings":"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","names":["path","nodeGypBuild","result"]}