@pnpm/store.cafs
Advanced tools
Comparing version 2.0.13 to 3.0.0
/// <reference types="node" /> | ||
import { type AddToStoreResult, type FileWriteResult } from '@pnpm/cafs-types'; | ||
export declare function addFilesFromDir(addBuffer: (buffer: Buffer, mode: number) => FileWriteResult, dirname: string, readManifest?: boolean): AddToStoreResult; | ||
export declare function addFilesFromDir(addBuffer: (buffer: Buffer, mode: number) => FileWriteResult, dirname: string, opts?: { | ||
files?: string[]; | ||
readManifest?: boolean; | ||
}): AddToStoreResult; |
@@ -7,2 +7,3 @@ "use strict"; | ||
exports.addFilesFromDir = void 0; | ||
const util_1 = __importDefault(require("util")); | ||
const fs_1 = __importDefault(require("fs")); | ||
@@ -12,21 +13,61 @@ const path_1 = __importDefault(require("path")); | ||
const parseJson_1 = require("./parseJson"); | ||
function addFilesFromDir(addBuffer, dirname, readManifest) { | ||
function addFilesFromDir(addBuffer, dirname, opts = {}) { | ||
const filesIndex = {}; | ||
const manifest = _retrieveFileIntegrities(addBuffer, dirname, dirname, filesIndex, readManifest); | ||
return { filesIndex, manifest }; | ||
let manifest; | ||
let files; | ||
if (opts.files) { | ||
files = []; | ||
for (const file of opts.files) { | ||
const absolutePath = path_1.default.join(dirname, file); | ||
let stat; | ||
try { | ||
stat = fs_1.default.statSync(absolutePath); | ||
} | ||
catch (err) { | ||
if (!(util_1.default.types.isNativeError(err) && 'code' in err && err.code === 'ENOENT')) { | ||
throw err; | ||
} | ||
continue; | ||
} | ||
files.push({ | ||
absolutePath, | ||
relativePath: file, | ||
stat, | ||
}); | ||
} | ||
} | ||
else { | ||
files = findFilesInDir(dirname); | ||
} | ||
for (const { absolutePath, relativePath, stat } of files) { | ||
const buffer = graceful_fs_1.default.readFileSync(absolutePath); | ||
if (opts.readManifest && relativePath === 'package.json') { | ||
manifest = (0, parseJson_1.parseJsonBufferSync)(buffer); | ||
} | ||
filesIndex[relativePath] = { | ||
mode: stat.mode, | ||
size: stat.size, | ||
...addBuffer(buffer, stat.mode), | ||
}; | ||
} | ||
return { manifest, filesIndex }; | ||
} | ||
exports.addFilesFromDir = addFilesFromDir; | ||
function _retrieveFileIntegrities(addBuffer, rootDir, currDir, index, readManifest) { | ||
const files = fs_1.default.readdirSync(currDir, { withFileTypes: true }); | ||
let manifest; | ||
function findFilesInDir(dir) { | ||
const files = []; | ||
findFiles(files, dir); | ||
return files; | ||
} | ||
function findFiles(filesList, dir, relativeDir = '') { | ||
const files = fs_1.default.readdirSync(dir, { withFileTypes: true }); | ||
for (const file of files) { | ||
const fullPath = path_1.default.join(currDir, file.name); | ||
const relativeSubdir = `${relativeDir}${relativeDir ? '/' : ''}${file.name}`; | ||
if (file.isDirectory()) { | ||
_retrieveFileIntegrities(addBuffer, rootDir, fullPath, index); | ||
findFiles(filesList, path_1.default.join(dir, file.name), relativeSubdir); | ||
continue; | ||
} | ||
const relativePath = path_1.default.relative(rootDir, fullPath); | ||
const absolutePath = path_1.default.join(dir, file.name); | ||
let stat; | ||
try { | ||
stat = fs_1.default.statSync(fullPath); | ||
stat = fs_1.default.statSync(absolutePath); | ||
} | ||
@@ -40,17 +81,12 @@ catch (err) { // eslint-disable-line | ||
if (stat.isDirectory()) { | ||
_retrieveFileIntegrities(addBuffer, rootDir, fullPath, index); | ||
findFiles(filesList, path_1.default.join(dir, file.name), relativeSubdir); | ||
continue; | ||
} | ||
const buffer = graceful_fs_1.default.readFileSync(fullPath); | ||
if (rootDir === currDir && readManifest && file.name === 'package.json') { | ||
manifest = (0, parseJson_1.parseJsonBufferSync)(buffer); | ||
} | ||
index[relativePath] = { | ||
mode: stat.mode, | ||
size: stat.size, | ||
...addBuffer(buffer, stat.mode), | ||
}; | ||
filesList.push({ | ||
relativePath: relativeSubdir, | ||
absolutePath, | ||
stat, | ||
}); | ||
} | ||
return manifest; | ||
} | ||
//# sourceMappingURL=addFilesFromDir.js.map |
@@ -8,7 +8,9 @@ import type { PackageFileInfo } from '@pnpm/cafs-types'; | ||
} | ||
export type SideEffects = Record<string, Record<string, PackageFileInfo>>; | ||
export interface PackageFilesIndex { | ||
name?: string; | ||
version?: string; | ||
requiresBuild?: boolean; | ||
files: Record<string, PackageFileInfo>; | ||
sideEffects?: Record<string, Record<string, PackageFileInfo>>; | ||
sideEffects?: SideEffects; | ||
} | ||
@@ -15,0 +17,0 @@ export declare function checkPkgFilesIntegrity(cafsDir: string, pkgIndex: PackageFilesIndex, readManifest?: boolean): VerifyResult; |
@@ -8,2 +8,3 @@ "use strict"; | ||
const fs_1 = __importDefault(require("fs")); | ||
const util_1 = __importDefault(require("util")); | ||
const graceful_fs_1 = __importDefault(require("@pnpm/graceful-fs")); | ||
@@ -109,4 +110,4 @@ const rimraf_1 = __importDefault(require("@zkochan/rimraf")); | ||
} | ||
catch (err) { // eslint-disable-line | ||
switch (err.code) { | ||
catch (err) { | ||
switch (util_1.default.types.isNativeError(err) && 'code' in err && err.code) { | ||
case 'ENOENT': return { passed: false }; | ||
@@ -131,4 +132,4 @@ case 'EINTEGRITY': { | ||
} | ||
catch (err) { // eslint-disable-line | ||
if (err.code === 'ENOENT') | ||
catch (err) { | ||
if (util_1.default.types.isNativeError(err) && 'code' in err && err.code === 'ENOENT') | ||
return null; | ||
@@ -135,0 +136,0 @@ throw err; |
/// <reference types="node" /> | ||
import { type PackageFileInfo, type FilesIndex } from '@pnpm/cafs-types'; | ||
import ssri from 'ssri'; | ||
import { checkPkgFilesIntegrity, type PackageFilesIndex, type VerifyResult } from './checkPkgFilesIntegrity'; | ||
import { checkPkgFilesIntegrity, type PackageFilesIndex, type SideEffects, type VerifyResult } from './checkPkgFilesIntegrity'; | ||
import { readManifestFromStore } from './readManifestFromStore'; | ||
@@ -9,3 +9,3 @@ import { getFilePathInCafs, type FileType, getFilePathByModeInCafs } from './getFilePathInCafs'; | ||
export type { IntegrityLike } from 'ssri'; | ||
export { checkPkgFilesIntegrity, readManifestFromStore, type FileType, getFilePathByModeInCafs, getFilePathInCafs, type PackageFileInfo, type PackageFilesIndex, optimisticRenameOverwrite, type FilesIndex, type VerifyResult, }; | ||
export { checkPkgFilesIntegrity, readManifestFromStore, type FileType, getFilePathByModeInCafs, getFilePathInCafs, type PackageFileInfo, type PackageFilesIndex, type SideEffects, optimisticRenameOverwrite, type FilesIndex, type VerifyResult, }; | ||
export type CafsLocker = Map<string, number>; | ||
@@ -17,3 +17,6 @@ export interface CreateCafsOpts { | ||
export declare function createCafs(cafsDir: string, { ignoreFile, cafsLocker }?: CreateCafsOpts): { | ||
addFilesFromDir: (dirname: string, readManifest?: boolean | undefined) => import("@pnpm/cafs-types").AddToStoreResult; | ||
addFilesFromDir: (dirname: string, opts?: { | ||
files?: string[] | undefined; | ||
readManifest?: boolean | undefined; | ||
} | undefined) => import("@pnpm/cafs-types").AddToStoreResult; | ||
addFilesFromTarball: (tarballBuffer: Buffer, readManifest?: boolean | undefined) => import("@pnpm/cafs-types").AddToStoreResult; | ||
@@ -20,0 +23,0 @@ getFilePathInCafs: (integrity: string | ssri.IntegrityLike, fileType: FileType) => string; |
@@ -9,2 +9,3 @@ "use strict"; | ||
const path_1 = __importDefault(require("path")); | ||
const util_1 = __importDefault(require("util")); | ||
const rename_overwrite_1 = __importDefault(require("rename-overwrite")); | ||
@@ -58,4 +59,4 @@ const checkPkgFilesIntegrity_1 = require("./checkPkgFilesIntegrity"); | ||
} | ||
catch (err) { // eslint-disable-line | ||
if (err.code !== 'ENOENT' || !fs_1.default.existsSync(fileDest)) | ||
catch (err) { | ||
if (!(util_1.default.types.isNativeError(err) && 'code' in err && err.code === 'ENOENT') || !fs_1.default.existsSync(fileDest)) | ||
throw err; | ||
@@ -62,0 +63,0 @@ // The temporary file path is created by appending the process ID to the target file name. |
{ | ||
"name": "@pnpm/store.cafs", | ||
"version": "2.0.13", | ||
"version": "3.0.0", | ||
"description": "A content-addressable filesystem for the packages storage", | ||
@@ -8,3 +8,3 @@ "main": "lib/index.js", | ||
"keywords": [ | ||
"pnpm8" | ||
"pnpm9" | ||
], | ||
@@ -19,15 +19,15 @@ "license": "MIT", | ||
"strip-bom": "^4.0.0", | ||
"@pnpm/fetcher-base": "15.0.7", | ||
"@pnpm/graceful-fs": "3.2.0", | ||
"@pnpm/store-controller-types": "17.2.0" | ||
"@pnpm/fetcher-base": "16.0.0", | ||
"@pnpm/graceful-fs": "4.0.0", | ||
"@pnpm/store-controller-types": "18.0.0" | ||
}, | ||
"devDependencies": { | ||
"@types/is-gzip": "2.0.0", | ||
"@types/node": "^18.14.6", | ||
"@types/ssri": "^7.1.4", | ||
"@types/node": "^18.19.24", | ||
"@types/ssri": "^7.1.5", | ||
"symlink-dir": "^5.2.1", | ||
"tempy": "^1.0.1", | ||
"@pnpm/cafs-types": "4.0.0", | ||
"@pnpm/store.cafs": "2.0.13", | ||
"@pnpm/types": "9.4.2" | ||
"@pnpm/cafs-types": "5.0.0", | ||
"@pnpm/store.cafs": "3.0.0", | ||
"@pnpm/types": "10.0.0" | ||
}, | ||
@@ -38,3 +38,3 @@ "bugs": { | ||
"engines": { | ||
"node": ">=16.14" | ||
"node": ">=18.12" | ||
}, | ||
@@ -41,0 +41,0 @@ "files": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
61719
828
+ Added@pnpm/fetcher-base@16.0.0(transitive)
+ Added@pnpm/graceful-fs@4.0.0(transitive)
+ Added@pnpm/resolver-base@12.0.0(transitive)
+ Added@pnpm/store-controller-types@18.0.0(transitive)
+ Added@pnpm/types@10.0.0(transitive)
- Removed@pnpm/fetcher-base@15.0.7(transitive)
- Removed@pnpm/graceful-fs@3.2.0(transitive)
- Removed@pnpm/resolver-base@11.1.0(transitive)
- Removed@pnpm/store-controller-types@17.2.0(transitive)
- Removed@pnpm/types@9.4.2(transitive)
Updated@pnpm/fetcher-base@16.0.0
Updated@pnpm/graceful-fs@4.0.0