{"version":3,"sources":["jsdelivr-header.js","/npm/@gera2ld/tarjs@0.3.1/dist/index.js"],"names":[],"mappings":"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","file":"/npm/@gera2ld/tarjs@0.3.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@gera2ld/tarjs@0.3.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*! @gera2ld/tarjs v0.3.1 | MIT License */\n(function (exports) {\n'use strict';\n\nconst encoder = new TextEncoder();\nconst utf8Encode = input => encoder.encode(input);\nconst decoder = new TextDecoder();\nconst utf8Decode = input => decoder.decode(input);\nfunction getArrayBuffer(file) {\n  if (typeof file === 'string') return utf8Encode(file).buffer;\n  if (file instanceof ArrayBuffer) return file;\n  if (ArrayBuffer.isView(file)) return new Uint8Array(file).buffer;\n  return file.arrayBuffer();\n}\n\nclass TarReader {\n  static async load(file) {\n    const buffer = await getArrayBuffer(file);\n    const fileInfos = loadTarFile(buffer);\n    return new TarReader(buffer, fileInfos);\n  }\n  #buffer;\n  constructor(buffer, fileInfos) {\n    this.fileInfos = fileInfos;\n    this.#buffer = buffer;\n  }\n  getTextFile(filename) {\n    const item = this.fileInfos.find(info => info.name === filename);\n    if (!item) throw new Error(`File not found: ${filename}`);\n    return readTextFile(this.#buffer, item.headerOffset + 512, item.size);\n  }\n  getFileBlob(filename, mimetype = '') {\n    const item = this.fileInfos.find(info => info.name === filename);\n    if (!item) throw new Error(`File not found: ${filename}`);\n    return readFileBlob(this.#buffer, item.headerOffset + 512, item.size, mimetype);\n  }\n}\nfunction loadTarFile(buffer) {\n  const fileInfos = [];\n  let offset = 0;\n  while (offset < buffer.byteLength - 512) {\n    const fileName = readFileName(buffer, offset);\n    if (!fileName) break;\n    const fileType = readFileType(buffer, offset);\n    const fileSize = readFileSize(buffer, offset);\n    fileInfos.push({\n      name: fileName,\n      type: fileType,\n      size: fileSize,\n      headerOffset: offset\n    });\n    offset += 512 + 512 * Math.floor((fileSize + 511) / 512);\n  }\n  return fileInfos;\n}\nfunction readString(buffer, offset, maxSize) {\n  let size = 0;\n  let view = new Uint8Array(buffer, offset, maxSize);\n  while (size < maxSize && view[size]) size += 1;\n  view = new Uint8Array(buffer, offset, size);\n  return utf8Decode(view);\n}\nfunction readFileName(buffer, offset) {\n  return readString(buffer, offset, 100);\n}\nfunction readFileType(buffer, offset) {\n  // offset = 156, length = 1\n  const view = new Uint8Array(buffer, offset + 156, 1);\n  return view[0];\n}\nfunction readFileSize(buffer, offset) {\n  // offset = 124, length = 12\n  const view = new Uint8Array(buffer, offset + 124, 12);\n  const sizeStr = utf8Decode(view);\n  return parseInt(sizeStr, 8);\n}\nfunction readFileBlob(buffer, offset, size, mimetype) {\n  const view = new Uint8Array(buffer, offset, size);\n  return new Blob([view], {\n    type: mimetype\n  });\n}\nfunction readTextFile(buffer, offset, size) {\n  const view = new Uint8Array(buffer, offset, size);\n  return utf8Decode(view);\n}\n\nlet TarFileType = /*#__PURE__*/function (TarFileType) {\n  TarFileType[TarFileType[\"File\"] = 0] = \"File\";\n  TarFileType[TarFileType[\"Dir\"] = 53] = \"Dir\";\n  return TarFileType;\n}({});\n\nclass TarWriter {\n  #fileData;\n  constructor() {\n    this.#fileData = [];\n  }\n  addFile(name, file, opts) {\n    const data = getArrayBuffer(file);\n    const size = data.byteLength ?? file.size;\n    const item = {\n      name,\n      type: TarFileType.File,\n      data,\n      size,\n      opts\n    };\n    this.#fileData.push(item);\n  }\n  addFolder(name, opts) {\n    this.#fileData.push({\n      name,\n      type: TarFileType.Dir,\n      data: null,\n      size: 0,\n      opts\n    });\n  }\n  async write() {\n    const buffer = createBuffer(this.#fileData);\n    const view = new Uint8Array(buffer);\n    let offset = 0;\n    for (const item of this.#fileData) {\n      // write header\n      writeFileName(buffer, item.name, offset);\n      writeFileType(buffer, item.type, offset);\n      writeFileSize(buffer, item.size, offset);\n      fillHeader(buffer, offset, item.opts, item.type);\n      writeChecksum(buffer, offset);\n\n      // write data\n      const itemBuffer = await item.data;\n      if (itemBuffer) {\n        const data = new Uint8Array(itemBuffer);\n        view.set(data, offset + 512);\n      }\n      offset += 512 + 512 * Math.floor((item.size + 511) / 512);\n    }\n    return new Blob([buffer], {\n      type: 'application/x-tar'\n    });\n  }\n}\nfunction createBuffer(fileData) {\n  const dataSize = fileData.reduce((prev, item) => prev + 512 + 512 * Math.floor((item.size + 511) / 512), 0);\n  const bufSize = 10240 * Math.floor((dataSize + 10240 - 1) / 10240);\n  return new ArrayBuffer(bufSize);\n}\nfunction writeString(buffer, str, offset, size) {\n  const bytes = utf8Encode(str);\n  const view = new Uint8Array(buffer, offset, size);\n  for (let i = 0; i < size; i += 1) {\n    view[i] = i < bytes.length ? bytes[i] : 0;\n  }\n}\nfunction writeFileName(buffer, name, offset) {\n  // offset: 0\n  writeString(buffer, name, offset, 100);\n}\nfunction writeFileType(buffer, type, offset) {\n  // offset: 156\n  const typeView = new Uint8Array(buffer, offset + 156, 1);\n  typeView[0] = type;\n}\nfunction writeFileSize(buffer, size, offset) {\n  // offset: 124\n  const sizeStr = size.toString(8).padStart(11, '0');\n  writeString(buffer, sizeStr, offset + 124, 12);\n}\nfunction writeFileMode(buffer, mode, offset) {\n  // offset: 100\n  writeString(buffer, mode.toString(8).padStart(7, '0'), offset + 100, 8);\n}\nfunction writeFileUid(buffer, uid, offset) {\n  // offset: 108\n  writeString(buffer, uid.toString(8).padStart(7, '0'), offset + 108, 8);\n}\nfunction writeFileGid(buffer, gid, offset) {\n  // offset: 116\n  writeString(buffer, gid.toString(8).padStart(7, '0'), offset + 116, 8);\n}\nfunction writeFileMtime(buffer, mtime, offset) {\n  // offset: 136\n  writeString(buffer, mtime.toString(8).padStart(11, '0'), offset + 136, 12);\n}\nfunction writeFileUser(buffer, user, offset) {\n  // offset: 265\n  writeString(buffer, user, offset + 265, 32);\n}\nfunction writeFileGroup(buffer, group, offset) {\n  // offset: 297\n  writeString(buffer, group, offset + 297, 32);\n}\nfunction writeChecksum(buffer, offset) {\n  const header = new Uint8Array(buffer, offset, 512);\n  // fill checksum fields with space\n  for (let i = 0; i < 8; i += 1) {\n    header[148 + i] = 32;\n  }\n  // add up header bytes as checksum\n  let chksum = 0;\n  for (let i = 0; i < 512; i += 1) {\n    chksum += header[i];\n  }\n  writeString(buffer, chksum.toString(8).padEnd(8, ' '), offset + 148, 8);\n}\nfunction fillHeader(buffer, offset, opts, fileType) {\n  const {\n    uid,\n    gid,\n    mode,\n    mtime,\n    user,\n    group\n  } = {\n    uid: 1000,\n    gid: 1000,\n    mode: fileType === TarFileType.File ? 0o664 : 0o775,\n    mtime: ~~(Date.now() / 1000),\n    user: 'gera2ld',\n    group: 'tarjs',\n    ...opts\n  };\n  writeFileMode(buffer, mode, offset);\n  writeFileUid(buffer, uid, offset);\n  writeFileGid(buffer, gid, offset);\n  writeFileMtime(buffer, mtime, offset);\n  writeString(buffer, 'ustar', offset + 257, 6); // magic string\n  writeString(buffer, '00', offset + 263, 2); // magic version\n\n  writeFileUser(buffer, user, offset);\n  writeFileGroup(buffer, group, offset);\n}\n\nexports.TarFileType = TarFileType;\nexports.TarReader = TarReader;\nexports.TarWriter = TarWriter;\nexports.createBuffer = createBuffer;\nexports.getArrayBuffer = getArrayBuffer;\nexports.loadTarFile = loadTarFile;\nexports.readFileBlob = readFileBlob;\nexports.readTextFile = readTextFile;\nexports.utf8Decode = utf8Decode;\nexports.utf8Encode = utf8Encode;\n\n})(this.tarjs = this.tarjs || {});\n"]}