{
  "version": 3,
  "sources": ["../../../../src/packages/store.cafs/addFilesFromTarball.ts"],
  "sourcesContent": ["import type {\n  AddToStoreResult,\n  FilesIndex,\n  FileWriteResult,\n} from '../cafs-types/index.ts';\nimport type { DependencyManifest } from '../types/index.ts';\nimport isGzip from 'is-gzip';\nimport { gunzipSync } from 'node:zlib';\nimport { parseJsonBufferSync } from './parseJson.ts';\nimport { parseTarball } from './parseTarball.ts';\n\nexport function addFilesFromTarball(\n  addBufferToCafs: (buffer: Buffer, mode: number) => FileWriteResult,\n  _ignore: null | ((filename: string) => boolean),\n  tarballBuffer: Buffer,\n  readManifest?: boolean\n): AddToStoreResult {\n  const ignore = _ignore ?? (() => false);\n\n  const tarContent =\n    isGzip(tarballBuffer) === true\n      ? gunzipSync(tarballBuffer)\n      : Buffer.isBuffer(tarballBuffer)\n        ? tarballBuffer\n        : Buffer.from(tarballBuffer);\n\n  const { files } = parseTarball(tarContent);\n\n  const filesIndex: FilesIndex = {};\n\n  let manifestBuffer: Buffer | undefined;\n\n  for (const [relativePath, { mode, offset, size }] of files) {\n    if (ignore(relativePath)) {\n      continue;\n    }\n\n    const fileBuffer = tarContent.slice(offset, offset + size);\n\n    if (readManifest === true && relativePath === 'package.json') {\n      manifestBuffer = fileBuffer;\n    }\n\n    filesIndex[relativePath] = {\n      mode,\n      size,\n      ...addBufferToCafs(fileBuffer, mode),\n    };\n  }\n\n  return {\n    filesIndex,\n    manifest: manifestBuffer\n      ? (parseJsonBufferSync(manifestBuffer) as DependencyManifest)\n      : undefined,\n  };\n}\n"],
  "mappings": "AAMA,OAAO,YAAY;AACnB,SAAS,kBAAkB;AAC3B,SAAS,2BAA2B;AACpC,SAAS,oBAAoB;AAEtB,SAAS,oBACd,iBACA,SACA,eACA,cACkB;AAClB,QAAM,SAAS,YAAY,MAAM;AAEjC,QAAM,aACJ,OAAO,aAAa,MAAM,OACtB,WAAW,aAAa,IACxB,OAAO,SAAS,aAAa,IAC3B,gBACA,OAAO,KAAK,aAAa;AAEjC,QAAM,EAAE,MAAM,IAAI,aAAa,UAAU;AAEzC,QAAM,aAAyB,CAAC;AAEhC,MAAI;AAEJ,aAAW,CAAC,cAAc,EAAE,MAAM,QAAQ,KAAK,CAAC,KAAK,OAAO;AAC1D,QAAI,OAAO,YAAY,GAAG;AACxB;AAAA,IACF;AAEA,UAAM,aAAa,WAAW,MAAM,QAAQ,SAAS,IAAI;AAEzD,QAAI,iBAAiB,QAAQ,iBAAiB,gBAAgB;AAC5D,uBAAiB;AAAA,IACnB;AAEA,eAAW,YAAY,IAAI;AAAA,MACzB;AAAA,MACA;AAAA,MACA,GAAG,gBAAgB,YAAY,IAAI;AAAA,IACrC;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,UAAU,iBACL,oBAAoB,cAAc,IACnC;AAAA,EACN;AACF;",
  "names": []
}
