{"version":3,"sources":["../../src/bin/cli.ts","../../src/index.ts","../../src/config.ts","../../src/workbook.ts"],"sourcesContent":["#! /usr/bin/env node\nimport { writeFile } from \"node:fs/promises\";\nimport { build } from \"src/index\";\n\nconst [action = \"build\", ...args] = process.argv.slice(2);\n\nconst readStdin = async (bufferSize?: number): Promise<Buffer> => {\n  return new Promise((resolve) => {\n    const buffers: Buffer[] = [];\n    process.stdin.on(\"readable\", () => {\n      const read = process.stdin.read();\n      if (read) {\n        buffers.push(read);\n      }\n    });\n    process.stdin.on(\"end\", () => {\n      resolve(Buffer.concat(buffers, bufferSize));\n    });\n  });\n};\n\nconst main = async () => {\n  switch (action) {\n    case \"build\": {\n      const stdin = JSON.parse((await readStdin()).toString(\"utf8\"));\n      const result = build(stdin);\n      await writeFile(args[0] || `${process.cwd()}/out.xlsx`, result);\n      break;\n    }\n    default:\n      console.log(\"Sorry, that is not something I know how to do.\");\n  }\n  process.exit(0);\n};\n\nmain();\n","import {\n  AOA2SheetOpts,\n  AutoFilterInfo,\n  ColInfo,\n  ParsingOptions,\n  ProtectInfo,\n  Range,\n  read,\n  readFile,\n  RowInfo,\n  Sheet2JSONOpts,\n  utils,\n  write,\n  WritingOptions,\n} from \"xlsx\";\nimport \"./config\";\nimport { isString } from \"./helpers\";\nimport { WorkBook } from \"./workbook\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const parse = <T = any[]>(mixed: unknown, options: Sheet2JSONOpts & ParsingOptions = {}) => {\n  const { dateNF, header = 1, range, blankrows, defval, raw = true, rawNumbers, ...otherOptions } = options;\n  const workBook = isString(mixed)\n    ? readFile(mixed, { dateNF, raw, ...otherOptions })\n    : read(mixed, { dateNF, raw, ...otherOptions });\n  return Object.keys(workBook.Sheets).map((name) => {\n    const sheet = workBook.Sheets[name]!;\n    return {\n      name,\n      data: utils.sheet_to_json<T>(sheet, {\n        dateNF,\n        header,\n        range: typeof range === \"function\" ? range(sheet) : range,\n        blankrows,\n        defval,\n        raw,\n        rawNumbers,\n      }),\n    };\n  });\n};\n\nexport const parseMetadata = (mixed: unknown, options: ParsingOptions = {}) => {\n  const workBook = isString(mixed) ? readFile(mixed, options) : read(mixed, options);\n  return Object.keys(workBook.Sheets).map((name) => {\n    const sheet = workBook.Sheets[name]!;\n    return { name, data: sheet[\"!ref\"] ? utils.decode_range(sheet[\"!ref\"]) : null };\n  });\n};\n\nexport type WorkSheetOptions = {\n  /** Column Info */\n  \"!cols\"?: ColInfo[];\n\n  /** Row Info */\n  \"!rows\"?: RowInfo[];\n\n  /** Merge Ranges */\n  \"!merges\"?: Range[];\n\n  /** Worksheet Protection info */\n  \"!protect\"?: ProtectInfo;\n\n  /** AutoFilter info */\n  \"!autofilter\"?: AutoFilterInfo;\n};\n\nexport type WorkSheet<T = unknown> = {\n  name: string;\n  data: T[][];\n  options: WorkSheetOptions;\n};\n\nexport type BuildOptions = WorkSheetOptions & {\n  parseOptions?: AOA2SheetOpts;\n  writeOptions?: WritingOptions;\n  sheetOptions?: WorkSheetOptions;\n};\n\nexport const build = (\n  worksheets: WorkSheet[],\n  { parseOptions = {}, writeOptions = {}, sheetOptions = {}, ...otherOptions }: BuildOptions = {},\n): Buffer => {\n  const { bookType = \"xlsx\", bookSST = false, type = \"buffer\", ...otherWriteOptions } = writeOptions;\n  const legacyOptions = Object.keys(otherOptions).filter((key) => {\n    if ([\"!cols\", \"!rows\", \"!merges\", \"!protect\", \"!autofilter\"].includes(key)) {\n      console.debug(`Deprecated options['${key}'], please use options.sheetOptions['${key}'] instead.`);\n      return true;\n    }\n    console.debug(`Unknown options['${key}'], please use options.parseOptions / options.writeOptions`);\n    return false;\n  });\n  const workBook = worksheets.reduce<WorkBook>((soFar, { name, data, options = {} }, index) => {\n    const sheetName = name || `Sheet_${index}`;\n    const sheetData = utils.aoa_to_sheet(data, parseOptions);\n    soFar.SheetNames.push(sheetName);\n    soFar.Sheets[sheetName] = sheetData;\n    Object.assign(soFar.Sheets[sheetName]!, legacyOptions, sheetOptions, options);\n    return soFar;\n  }, new WorkBook());\n  return write(workBook, { bookType, bookSST, type, ...otherWriteOptions });\n};\n\nexport default { parse, parseMetadata, build };\n","import * as fs from \"fs\";\nimport { set_fs } from \"xlsx\";\n\nset_fs(fs);\n","import type { WorkSheet, WorkBook as XLSXWorkBook } from \"xlsx\";\n\nexport class WorkBook implements XLSXWorkBook {\n  Sheets: Record<string, WorkSheet> = {};\n  SheetNames: string[] = [];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sBAA0B;;;ACD1B,IAAAA,eAcO;;;ACdP,SAAoB;AACpB,kBAAuB;AAAA,IAEvB,oBAAO,EAAE;;;ACDF,IAAM,WAAN,MAAuC;AAAA,EAC5C,SAAoC,CAAC;AAAA,EACrC,aAAuB,CAAC;AAC1B;;;AF0EO,IAAM,QAAQ,CACnB,YACA,EAAE,eAAe,CAAC,GAAG,eAAe,CAAC,GAAG,eAAe,CAAC,GAAG,GAAG,aAAa,IAAkB,CAAC,MACnF;AACX,QAAM,EAAE,WAAW,QAAQ,UAAU,OAAO,OAAO,UAAU,GAAG,kBAAkB,IAAI;AACtF,QAAM,gBAAgB,OAAO,KAAK,YAAY,EAAE,OAAO,CAAC,QAAQ;AAC9D,QAAI,CAAC,SAAS,SAAS,WAAW,YAAY,aAAa,EAAE,SAAS,GAAG,GAAG;AAC1E,cAAQ,MAAM,uBAAuB,GAAG,wCAAwC,GAAG,aAAa;AAChG,aAAO;AAAA,IACT;AACA,YAAQ,MAAM,oBAAoB,GAAG,4DAA4D;AACjG,WAAO;AAAA,EACT,CAAC;AACD,QAAM,WAAW,WAAW,OAAiB,CAAC,OAAO,EAAE,MAAM,MAAM,UAAU,CAAC,EAAE,GAAG,UAAU;AAC3F,UAAM,YAAY,QAAQ,SAAS,KAAK;AACxC,UAAM,YAAY,mBAAM,aAAa,MAAM,YAAY;AACvD,UAAM,WAAW,KAAK,SAAS;AAC/B,UAAM,OAAO,SAAS,IAAI;AAC1B,WAAO,OAAO,MAAM,OAAO,SAAS,GAAI,eAAe,cAAc,OAAO;AAC5E,WAAO;AAAA,EACT,GAAG,IAAI,SAAS,CAAC;AACjB,aAAO,oBAAM,UAAU,EAAE,UAAU,SAAS,MAAM,GAAG,kBAAkB,CAAC;AAC1E;;;ADjGA,IAAM,CAAC,SAAS,SAAS,GAAG,IAAI,IAAI,QAAQ,KAAK,MAAM,CAAC;AAExD,IAAM,YAAY,OAAO,eAAyC;AAChE,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,UAAoB,CAAC;AAC3B,YAAQ,MAAM,GAAG,YAAY,MAAM;AACjC,YAAMC,QAAO,QAAQ,MAAM,KAAK;AAChC,UAAIA,OAAM;AACR,gBAAQ,KAAKA,KAAI;AAAA,MACnB;AAAA,IACF,CAAC;AACD,YAAQ,MAAM,GAAG,OAAO,MAAM;AAC5B,cAAQ,OAAO,OAAO,SAAS,UAAU,CAAC;AAAA,IAC5C,CAAC;AAAA,EACH,CAAC;AACH;AAEA,IAAM,OAAO,YAAY;AACvB,UAAQ,QAAQ;AAAA,IACd,KAAK,SAAS;AACZ,YAAM,QAAQ,KAAK,OAAO,MAAM,UAAU,GAAG,SAAS,MAAM,CAAC;AAC7D,YAAM,SAAS,MAAM,KAAK;AAC1B,gBAAM,2BAAU,KAAK,CAAC,KAAK,GAAG,QAAQ,IAAI,CAAC,aAAa,MAAM;AAC9D;AAAA,IACF;AAAA,IACA;AACE,cAAQ,IAAI,gDAAgD;AAAA,EAChE;AACA,UAAQ,KAAK,CAAC;AAChB;AAEA,KAAK;","names":["import_xlsx","read"]}