{
  "version": 3,
  "sources": ["../../../../src/packages/worker/worker.ts"],
  "sourcesContent": ["import path from 'node:path';\nimport fs from 'node:fs';\nimport gfs from '../graceful-fs/index.ts';\nimport type {\n  Cafs,\n  PackageFiles,\n  SideEffects,\n  SideEffectsDiff,\n} from '../cafs-types/index.ts';\nimport { createCafsStore } from '../create-cafs-store/index.ts';\nimport * as crypto from '../crypto.polyfill/index.ts';\nimport { pkgRequiresBuild } from '../exec.pkg-requires-build/index.ts';\nimport { hardLinkDir } from '../fs.hard-link-dir/index.ts';\nimport {\n  type CafsFunctions,\n  checkPkgFilesIntegrity,\n  createCafs,\n  type PackageFilesIndex,\n  type FilesIndex,\n  optimisticRenameOverwrite,\n  readManifestFromStore,\n  type VerifyResult,\n} from '../store.cafs/index.ts';\nimport { symlinkDependencySync } from '../symlink-dependency/index.ts';\nimport type { DependencyManifest } from '../types/index.ts';\nimport { loadJsonFile } from 'load-json-file';\nimport { parentPort } from 'node:worker_threads';\nimport type {\n  AddDirToStoreMessage,\n  ReadPkgFromCafsMessage,\n  LinkPkgMessage,\n  SymlinkAllModulesMessage,\n  TarballExtractMessage,\n  HardLinkDirMessage,\n  InitStoreMessage,\n} from './types.ts';\nimport process from 'node:process';\n\n// eslint-disable-next-line optimize-regex/optimize-regex\nconst INTEGRITY_REGEX: RegExp = /^([^-]+)-([a-z0-9+/=]+)$/i;\n\nparentPort?.on('message', handleMessage);\n\nconst cafsCache = new Map<string, CafsFunctions>();\nconst cafsStoreCache = new Map<string, Cafs>();\nconst cafsLocker = new Map<string, number>();\n\nasync function handleMessage(\n  message:\n    | TarballExtractMessage\n    | LinkPkgMessage\n    | AddDirToStoreMessage\n    | ReadPkgFromCafsMessage\n    | SymlinkAllModulesMessage\n    | HardLinkDirMessage\n    | InitStoreMessage\n    | false\n): Promise<void> {\n  if (message === false) {\n    parentPort?.off('message', handleMessage);\n\n    // eslint-disable-next-line n/no-process-exit\n    process.exit(0);\n  }\n\n  try {\n    switch (message.type) {\n      case 'extract': {\n        parentPort?.postMessage(addTarballToStore(message));\n        break;\n      }\n\n      case 'link': {\n        parentPort?.postMessage(importPackage(message));\n        break;\n      }\n\n      case 'add-dir': {\n        parentPort?.postMessage(await addFilesFromDir(message));\n        break;\n      }\n\n      case 'init-store': {\n        parentPort?.postMessage(initStore(message));\n        break;\n      }\n\n      case 'readPkgFromCafs': {\n        let { storeDir, filesIndexFile, readManifest, verifyStoreIntegrity } =\n          message;\n\n        let pkgFilesIndex: PackageFilesIndex | undefined;\n\n        try {\n          pkgFilesIndex = await loadJsonFile<PackageFilesIndex>(filesIndexFile);\n        } catch {\n          // ignoring. It is fine if the integrity file is not present. Just refetch the package\n        }\n\n        if (!pkgFilesIndex) {\n          parentPort?.postMessage({\n            status: 'success',\n            value: {\n              verified: false,\n              pkgFilesIndex: null,\n            },\n          });\n\n          return;\n        }\n\n        let verifyResult: VerifyResult | undefined;\n\n        if (pkgFilesIndex.requiresBuild == null) {\n          readManifest = true;\n        }\n\n        if (verifyStoreIntegrity) {\n          verifyResult = checkPkgFilesIntegrity(\n            storeDir,\n            pkgFilesIndex,\n            readManifest\n          );\n        } else {\n          verifyResult = {\n            passed: true,\n            manifest: readManifest\n              ? readManifestFromStore(storeDir, pkgFilesIndex)\n              : undefined,\n          };\n        }\n\n        const requiresBuild =\n          pkgFilesIndex.requiresBuild ??\n          pkgRequiresBuild(verifyResult.manifest, pkgFilesIndex.files);\n\n        parentPort?.postMessage({\n          status: 'success',\n          value: {\n            verified: verifyResult.passed,\n            manifest: verifyResult.manifest,\n            pkgFilesIndex,\n            requiresBuild,\n          },\n        });\n\n        break;\n      }\n\n      case 'symlinkAllModules': {\n        parentPort?.postMessage(symlinkAllModules(message));\n        break;\n      }\n\n      case 'hardLinkDir': {\n        hardLinkDir(message.src, message.destDirs);\n        parentPort?.postMessage({ status: 'success' });\n        break;\n      }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  } catch (e: any) {\n    parentPort?.postMessage({\n      status: 'error',\n      error: {\n        code: e.code,\n        message: e.message ?? e.toString(),\n      },\n    });\n  }\n}\n\nfunction addTarballToStore({\n  buffer,\n  storeDir,\n  integrity,\n  filesIndexFile,\n}: TarballExtractMessage):\n  | {\n      status: string;\n      error: {\n        type: string;\n        expected: string;\n        algorithm?: never;\n        found?: never;\n        storeDir?: never;\n      };\n      value?: never;\n    }\n  | {\n      status: string;\n      error: {\n        type: string;\n        algorithm: string;\n        expected: string;\n        found: string;\n        storeDir?: never;\n      };\n      value?: never;\n    }\n  | {\n      status: string;\n      error: {\n        type: string;\n        storeDir: string;\n        expected?: never;\n        algorithm?: never;\n        found?: never;\n      };\n      value?: never;\n    }\n  | {\n      status: string;\n      value: {\n        filesIndex: Record<string, string>;\n        manifest: DependencyManifest | undefined;\n        requiresBuild: boolean;\n      };\n      error?: never;\n    } {\n  if (typeof integrity === 'string') {\n    const match = integrity.match(INTEGRITY_REGEX);\n\n    if (match === null) {\n      return {\n        status: 'error',\n        error: { type: 'integrity_validation_failed', expected: integrity },\n      };\n    }\n\n    const [, algo, integrityHash] = match;\n\n    if (typeof integrityHash !== 'string') {\n      return {\n        status: 'error',\n        error: { type: 'integrity_validation_failed', expected: integrity },\n      };\n    }\n\n    if (typeof algo !== 'string') {\n      return {\n        status: 'error',\n        error: { type: 'integrity_validation_failed', expected: integrity },\n      };\n    }\n\n    // Compensate for the possibility of non-uniform Base64 padding\n    const normalizedRemoteHash: string = Buffer.from(\n      integrityHash,\n      'base64'\n    ).toString('hex');\n\n    const calculatedHash: string = crypto.hash(algo, buffer, 'hex');\n\n    if (calculatedHash !== normalizedRemoteHash) {\n      return {\n        status: 'error',\n        error: {\n          type: 'integrity_validation_failed',\n          algorithm: algo,\n          expected: integrity,\n          found: `${algo}-${Buffer.from(calculatedHash, 'hex').toString('base64')}`,\n        },\n      };\n    }\n  }\n  if (!cafsCache.has(storeDir)) {\n    cafsCache.set(storeDir, createCafs(storeDir));\n  }\n  const cafs = cafsCache.get(storeDir);\n\n  if (typeof cafs === 'undefined') {\n    return {\n      status: 'error',\n      error: { type: 'cafs_not_found', storeDir },\n    };\n  }\n\n  const { filesIndex, manifest } = cafs.addFilesFromTarball(buffer, true);\n\n  const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);\n\n  const requiresBuild = writeFilesIndexFile(filesIndexFile, {\n    manifest: manifest ?? {},\n    files: filesIntegrity,\n  });\n\n  return {\n    status: 'success',\n    value: { filesIndex: filesMap, manifest, requiresBuild },\n  };\n}\n\ntype AddFilesFromDirResult = {\n  status: string;\n  value: {\n    filesIndex: Record<string, string>;\n    manifest?: DependencyManifest | undefined;\n    requiresBuild: boolean;\n  };\n};\n\nfunction initStore({ storeDir }: InitStoreMessage): { status: string } {\n  fs.mkdirSync(storeDir, { recursive: true });\n  try {\n    const hexChars = '0123456789abcdef'.split('');\n\n    for (const subDir of ['files', 'index']) {\n      const subDirPath = path.join(storeDir, subDir);\n\n      fs.mkdirSync(subDirPath);\n\n      for (const hex1 of hexChars) {\n        for (const hex2 of hexChars) {\n          fs.mkdirSync(path.join(subDirPath, `${hex1}${hex2}`));\n        }\n      }\n    }\n  } catch {\n    // If a parallel process has already started creating the directories in the store,\n    // then we just stop.\n  }\n\n  return { status: 'success' };\n}\n\nasync function addFilesFromDir({\n  dir,\n  storeDir,\n  filesIndexFile,\n  sideEffectsCacheKey,\n  files,\n}: AddDirToStoreMessage): Promise<AddFilesFromDirResult> {\n  if (!cafsCache.has(storeDir)) {\n    cafsCache.set(storeDir, createCafs(storeDir));\n  }\n\n  const cafs = cafsCache.get(storeDir);\n\n  if (typeof cafs === 'undefined') {\n    return {\n      status: 'success',\n      value: {\n        filesIndex: {},\n        manifest: {\n          name: '',\n          version: '',\n        },\n        requiresBuild: false,\n      },\n    };\n  }\n\n  const { filesIndex, manifest } = cafs.addFilesFromDir(dir, {\n    files,\n    readManifest: true,\n  });\n\n  const { filesIntegrity, filesMap } = processFilesIndex(filesIndex);\n\n  let requiresBuild: boolean;\n\n  if (typeof sideEffectsCacheKey === 'string') {\n    let filesIndex!: PackageFilesIndex;\n\n    try {\n      filesIndex = await loadJsonFile<PackageFilesIndex>(filesIndexFile);\n    } catch {\n      // If there is no existing index file, then we cannot store the side effects.\n      return {\n        status: 'success',\n        value: {\n          filesIndex: filesMap,\n          manifest,\n          requiresBuild: pkgRequiresBuild(manifest, filesIntegrity),\n        },\n      };\n    }\n    filesIndex.sideEffects = filesIndex.sideEffects ?? {};\n    filesIndex.sideEffects[sideEffectsCacheKey] = calculateDiff(\n      filesIndex.files,\n      filesIntegrity\n    );\n    if (filesIndex.requiresBuild == null) {\n      requiresBuild = pkgRequiresBuild(manifest, filesIntegrity);\n    } else {\n      requiresBuild = filesIndex.requiresBuild;\n    }\n    writeJsonFile(filesIndexFile, filesIndex);\n  } else {\n    requiresBuild = writeFilesIndexFile(filesIndexFile, {\n      manifest: manifest ?? {},\n      files: filesIntegrity,\n    });\n  }\n  return {\n    status: 'success',\n    value: { filesIndex: filesMap, manifest, requiresBuild },\n  };\n}\n\nfunction calculateDiff(\n  baseFiles: PackageFiles,\n  sideEffectsFiles: PackageFiles\n): SideEffectsDiff {\n  const deleted: string[] = [];\n  const added: PackageFiles = {};\n  for (const file of new Set([\n    ...Object.keys(baseFiles),\n    ...Object.keys(sideEffectsFiles),\n  ])) {\n    if (!sideEffectsFiles[file]) {\n      deleted.push(file);\n    } else if (\n      !baseFiles[file] ||\n      baseFiles[file].integrity !== sideEffectsFiles[file].integrity ||\n      baseFiles[file].mode !== sideEffectsFiles[file].mode\n    ) {\n      added[file] = sideEffectsFiles[file];\n    }\n  }\n  const diff: SideEffectsDiff = {};\n  if (deleted.length > 0) {\n    diff.deleted = deleted;\n  }\n  if (Object.keys(added).length > 0) {\n    diff.added = added;\n  }\n  return diff;\n}\n\ninterface ProcessFilesIndexResult {\n  filesIntegrity: PackageFiles;\n  filesMap: Record<string, string>;\n}\n\nfunction processFilesIndex(filesIndex: FilesIndex): ProcessFilesIndexResult {\n  const filesIntegrity: PackageFiles = {};\n  const filesMap: Record<string, string> = {};\n  for (const [\n    k,\n    { checkedAt, filePath, integrity, mode, size },\n  ] of Object.entries(filesIndex)) {\n    filesIntegrity[k] = {\n      checkedAt,\n      integrity: integrity.toString(), // TODO: use the raw Integrity object\n      mode,\n      size,\n    };\n    filesMap[k] = filePath;\n  }\n  return { filesIntegrity, filesMap };\n}\n\ninterface ImportPackageResult {\n  status: string;\n  value: {\n    isBuilt: boolean;\n    importMethod?: string | undefined;\n  };\n}\n\nfunction importPackage({\n  storeDir,\n  packageImportMethod,\n  filesResponse,\n  sideEffectsCacheKey,\n  targetDir,\n  requiresBuild,\n  force,\n  keepModulesDir,\n  disableRelinkLocalDirDeps,\n}: LinkPkgMessage): ImportPackageResult {\n  const cacheKey = JSON.stringify({ storeDir, packageImportMethod });\n  if (!cafsStoreCache.has(cacheKey)) {\n    cafsStoreCache.set(\n      cacheKey,\n      createCafsStore(storeDir, { packageImportMethod, cafsLocker })\n    );\n  }\n  const cafsStore = cafsStoreCache.get(cacheKey);\n\n  if (typeof cafsStore === 'undefined') {\n    return {\n      status: 'success',\n      value: { isBuilt: false, importMethod: '' },\n    };\n  }\n\n  const { importMethod, isBuilt } = cafsStore.importPackage(targetDir, {\n    filesResponse,\n    force,\n    disableRelinkLocalDirDeps,\n    requiresBuild,\n    sideEffectsCacheKey,\n    keepModulesDir,\n  });\n\n  return { status: 'success', value: { isBuilt, importMethod } };\n}\n\nfunction symlinkAllModules(opts: SymlinkAllModulesMessage): {\n  status: 'success';\n} {\n  for (const dep of opts.deps) {\n    for (const [alias, pkgDir] of Object.entries(dep.children)) {\n      if (alias !== dep.name) {\n        symlinkDependencySync(pkgDir, dep.modules, alias);\n      }\n    }\n  }\n  return { status: 'success' };\n}\n\nfunction writeFilesIndexFile(\n  filesIndexFile: string,\n  {\n    manifest,\n    files,\n    sideEffects,\n  }: {\n    manifest: Partial<DependencyManifest>;\n    files: PackageFiles;\n    sideEffects?: SideEffects;\n  }\n): boolean {\n  const requiresBuild = pkgRequiresBuild(manifest, files);\n  const filesIndex: PackageFilesIndex = {\n    name: manifest.name,\n    version: manifest.version,\n    requiresBuild,\n    files,\n    sideEffects,\n  };\n  writeJsonFile(filesIndexFile, filesIndex);\n  return requiresBuild;\n}\n\nfunction writeJsonFile(filePath: string, data: unknown): void {\n  const targetDir = path.dirname(filePath);\n  // TODO: use the API of @pnpm/cafs to write this file\n  // There is actually no need to create the directory in 99% of cases.\n  // So by using cafs API, we'll improve performance.\n  fs.mkdirSync(targetDir, { recursive: true });\n  // We remove the \"-index.json\" from the end of the temp file name\n  // in order to avoid ENAMETOOLONG errors\n  const temp = `${filePath.slice(0, -11)}${process.pid}`;\n  gfs.writeFileSync(temp, JSON.stringify(data));\n  optimisticRenameOverwrite(temp, filePath);\n}\n\nprocess.on('uncaughtException', (err) => {\n  console.error(err);\n});\n"],
  "mappings": "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",
  "names": ["filesIndex"]
}
