@pnpm/prepare-package
Advanced tools
Comparing version 5.0.25 to 6.0.0
@@ -6,2 +6,5 @@ export interface PreparePackageOptions { | ||
} | ||
export declare function preparePackage(opts: PreparePackageOptions, pkgDir: string): Promise<boolean>; | ||
export declare function preparePackage(opts: PreparePackageOptions, gitRootDir: string, subDir: string): Promise<{ | ||
shouldBeBuilt: boolean; | ||
pkgDir: string; | ||
}>; |
@@ -7,4 +7,7 @@ "use strict"; | ||
exports.preparePackage = void 0; | ||
const assert_1 = __importDefault(require("assert")); | ||
const fs_1 = __importDefault(require("fs")); | ||
const path_1 = __importDefault(require("path")); | ||
const util_1 = __importDefault(require("util")); | ||
const error_1 = require("@pnpm/error"); | ||
const lifecycle_1 = require("@pnpm/lifecycle"); | ||
@@ -23,9 +26,10 @@ const read_package_json_1 = require("@pnpm/read-package-json"); | ||
]; | ||
async function preparePackage(opts, pkgDir) { | ||
async function preparePackage(opts, gitRootDir, subDir) { | ||
const pkgDir = safeJoinPath(gitRootDir, subDir); | ||
const manifest = await (0, read_package_json_1.safeReadPackageJsonFromDir)(pkgDir); | ||
if (manifest?.scripts == null || !packageShouldBeBuilt(manifest, pkgDir)) | ||
return false; | ||
return { shouldBeBuilt: false, pkgDir }; | ||
if (opts.ignoreScripts) | ||
return true; | ||
const pm = (await (0, preferred_pm_1.default)(pkgDir))?.name ?? 'npm'; | ||
return { shouldBeBuilt: true, pkgDir }; | ||
const pm = (await (0, preferred_pm_1.default)(gitRootDir))?.name ?? 'npm'; | ||
const execOpts = { | ||
@@ -47,12 +51,23 @@ depPath: `${manifest.name}@${manifest.version}`, | ||
continue; | ||
let newScriptName; | ||
if (pm !== 'pnpm') { | ||
newScriptName = `${pm}-run-${scriptName}`; | ||
manifest.scripts[newScriptName] = `${pm} run ${scriptName}`; | ||
} | ||
else { | ||
newScriptName = scriptName; | ||
} | ||
// eslint-disable-next-line no-await-in-loop | ||
await (0, lifecycle_1.runLifecycleHook)(scriptName, manifest, execOpts); | ||
await (0, lifecycle_1.runLifecycleHook)(newScriptName, manifest, execOpts); | ||
} | ||
} | ||
catch (err) { // eslint-disable-line | ||
err.code = 'ERR_PNPM_PREPARE_PACKAGE'; | ||
catch (err) { | ||
(0, assert_1.default)(util_1.default.types.isNativeError(err)); | ||
Object.assign(err, { | ||
code: 'ERR_PNPM_PREPARE_PACKAGE', | ||
}); | ||
throw err; | ||
} | ||
await (0, rimraf_1.default)(path_1.default.join(pkgDir, 'node_modules')); | ||
return true; | ||
return { shouldBeBuilt: true, pkgDir }; | ||
} | ||
@@ -72,2 +87,14 @@ exports.preparePackage = preparePackage; | ||
} | ||
function safeJoinPath(root, sub) { | ||
const joined = path_1.default.join(root, sub); | ||
// prevent the dir traversal attack | ||
const relative = path_1.default.relative(root, joined); | ||
if (relative.startsWith('..')) { | ||
throw new error_1.PnpmError('INVALID_PATH', `Path "${sub}" should be a sub directory`); | ||
} | ||
if (!fs_1.default.existsSync(joined) || !fs_1.default.lstatSync(joined).isDirectory()) { | ||
throw new error_1.PnpmError('INVALID_PATH', `Path "${sub}" is not a directory`); | ||
} | ||
return joined; | ||
} | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@pnpm/prepare-package", | ||
"version": "5.0.25", | ||
"version": "6.0.0", | ||
"description": "Prepares a Git-hosted package", | ||
@@ -12,7 +12,7 @@ "main": "lib/index.js", | ||
"engines": { | ||
"node": ">=16.14" | ||
"node": ">=18.12" | ||
}, | ||
"repository": "https://github.com/pnpm/pnpm/blob/main/exec/prepare-package", | ||
"keywords": [ | ||
"pnpm8", | ||
"pnpm9", | ||
"pnpm" | ||
@@ -28,7 +28,8 @@ ], | ||
"execa": "npm:safe-execa@0.1.2", | ||
"preferred-pm": "^3.1.2", | ||
"preferred-pm": "^3.1.3", | ||
"ramda": "npm:@pnpm/ramda@0.28.1", | ||
"@pnpm/read-package-json": "8.0.8", | ||
"@pnpm/lifecycle": "16.0.13", | ||
"@pnpm/types": "9.4.2" | ||
"@pnpm/error": "6.0.0", | ||
"@pnpm/lifecycle": "17.0.0", | ||
"@pnpm/types": "10.0.0", | ||
"@pnpm/read-package-json": "9.0.0" | ||
}, | ||
@@ -39,6 +40,6 @@ "funding": "https://opencollective.com/pnpm", | ||
"load-json-file": "^6.2.0", | ||
"@pnpm/prepare": "0.0.90", | ||
"@pnpm/prepare-package": "6.0.0", | ||
"@pnpm/test-fixtures": "0.1.20", | ||
"@pnpm/prepare": "0.0.90", | ||
"@pnpm/test-ipc-server": "0.0.0", | ||
"@pnpm/prepare-package": "5.0.25" | ||
"@pnpm/test-ipc-server": "0.0.0" | ||
}, | ||
@@ -45,0 +46,0 @@ "exports": { |
Sorry, the diff of this file is not supported yet
10677
104
8
+ Added@pnpm/error@6.0.0
+ Added@isaacs/cliui@8.0.2(transitive)
+ Added@npmcli/agent@2.2.2(transitive)
+ Added@npmcli/fs@3.1.1(transitive)
+ Added@pkgjs/parseargs@0.11.0(transitive)
+ Added@pnpm/constants@8.0.0(transitive)
+ Added@pnpm/core-loggers@10.0.0(transitive)
+ Added@pnpm/directory-fetcher@8.0.0(transitive)
+ Added@pnpm/error@6.0.0(transitive)
+ Added@pnpm/exec.pkg-requires-build@1.0.0(transitive)
+ Added@pnpm/fetcher-base@16.0.0(transitive)
+ Added@pnpm/fs.packlist@2.0.0(transitive)
+ Added@pnpm/graceful-fs@4.0.0(transitive)
+ Added@pnpm/lifecycle@17.0.0(transitive)
+ Added@pnpm/link-bins@10.0.0(transitive)
+ Added@pnpm/manifest-utils@6.0.0(transitive)
+ Added@pnpm/npm-lifecycle@3.0.4(transitive)
+ Added@pnpm/package-bins@9.0.0(transitive)
+ Added@pnpm/read-modules-dir@7.0.0(transitive)
+ Added@pnpm/read-package-json@9.0.0(transitive)
+ Added@pnpm/read-project-manifest@6.0.0(transitive)
+ Added@pnpm/resolver-base@12.0.0(transitive)
+ Added@pnpm/store-controller-types@18.0.0(transitive)
+ Added@pnpm/text.comments-parser@3.0.0(transitive)
+ Added@pnpm/types@10.0.0(transitive)
+ Added@pnpm/write-project-manifest@6.0.0(transitive)
+ Added@yarnpkg/fslib@3.1.0(transitive)
+ Added@yarnpkg/parsers@3.0.2(transitive)
+ Added@yarnpkg/shell@4.0.0(transitive)
+ Addedabbrev@2.0.0(transitive)
+ Addedagent-base@7.1.1(transitive)
+ Addedansi-regex@6.0.1(transitive)
+ Addedansi-styles@6.2.1(transitive)
+ Addedcacache@18.0.3(transitive)
+ Addedclipanion@4.0.0-rc.3(transitive)
+ Addedeastasianwidth@0.2.0(transitive)
+ Addedemoji-regex@9.2.2(transitive)
+ Addedforeground-child@3.2.0(transitive)
+ Addedfs-minipass@3.0.3(transitive)
+ Addedglob@10.4.1(transitive)
+ Addedhttp-proxy-agent@7.0.2(transitive)
+ Addedhttps-proxy-agent@7.0.4(transitive)
+ Addedjackspeak@3.4.0(transitive)
+ Addedlru-cache@10.2.2(transitive)
+ Addedmake-fetch-happen@13.0.1(transitive)
+ Addedminimatch@9.0.4(transitive)
+ Addedminipass@7.1.2(transitive)
+ Addedminipass-collect@2.0.1(transitive)
+ Addedminipass-fetch@3.0.5(transitive)
+ Addednode-gyp@10.1.0(transitive)
+ Addednopt@7.2.1(transitive)
+ Addedpath-scurry@1.11.1(transitive)
+ Addedproc-log@3.0.04.2.0(transitive)
+ Addedsocks-proxy-agent@8.0.3(transitive)
+ Addedssri@10.0.6(transitive)
+ Addedstring-width@5.1.2(transitive)
+ Addedstrip-ansi@7.1.0(transitive)
+ Addedtslib@2.6.3(transitive)
+ Addedunique-filename@3.0.0(transitive)
+ Addedunique-slug@4.0.0(transitive)
+ Addedwrap-ansi@7.0.08.1.0(transitive)
- Removed@gar/promisify@1.1.3(transitive)
- Removed@npmcli/fs@2.1.2(transitive)
- Removed@npmcli/move-file@2.0.1(transitive)
- Removed@pnpm/constants@7.1.1(transitive)
- Removed@pnpm/core-loggers@9.0.6(transitive)
- Removed@pnpm/directory-fetcher@7.0.12(transitive)
- Removed@pnpm/error@5.0.3(transitive)
- Removed@pnpm/fetcher-base@15.0.7(transitive)
- Removed@pnpm/fs.packlist@1.0.3(transitive)
- Removed@pnpm/graceful-fs@3.2.0(transitive)
- Removed@pnpm/lifecycle@16.0.13(transitive)
- Removed@pnpm/link-bins@9.0.13(transitive)
- Removed@pnpm/manifest-utils@5.0.8(transitive)
- Removed@pnpm/npm-lifecycle@2.0.2(transitive)
- Removed@pnpm/package-bins@8.0.6(transitive)
- Removed@pnpm/read-modules-dir@6.0.1(transitive)
- Removed@pnpm/read-package-json@8.0.8(transitive)
- Removed@pnpm/read-project-manifest@5.0.11(transitive)
- Removed@pnpm/resolver-base@11.1.0(transitive)
- Removed@pnpm/store-controller-types@17.2.0(transitive)
- Removed@pnpm/text.comments-parser@2.0.0(transitive)
- Removed@pnpm/types@9.4.2(transitive)
- Removed@pnpm/write-project-manifest@5.0.6(transitive)
- Removed@tootallnate/once@2.0.0(transitive)
- Removed@types/emscripten@1.39.13(transitive)
- Removed@yarnpkg/fslib@2.10.4(transitive)
- Removed@yarnpkg/libzip@2.3.0(transitive)
- Removed@yarnpkg/parsers@2.6.0(transitive)
- Removed@yarnpkg/shell@3.2.5(transitive)
- Removedabbrev@1.1.1(transitive)
- Removedagent-base@6.0.2(transitive)
- Removedagentkeepalive@4.5.0(transitive)
- Removedaproba@2.0.0(transitive)
- Removedare-we-there-yet@3.0.1(transitive)
- Removedcacache@16.1.3(transitive)
- Removedclipanion@3.2.0-rc.4(transitive)
- Removedcolor-support@1.1.3(transitive)
- Removedconsole-control-strings@1.1.0(transitive)
- Removeddelegates@1.0.0(transitive)
- Removedgauge@4.0.4(transitive)
- Removedhas-unicode@2.0.1(transitive)
- Removedhttp-proxy-agent@5.0.0(transitive)
- Removedhttps-proxy-agent@5.0.1(transitive)
- Removedhumanize-ms@1.2.1(transitive)
- Removedinfer-owner@1.0.4(transitive)
- Removedmake-fetch-happen@10.2.1(transitive)
- Removedminipass-collect@1.0.2(transitive)
- Removedminipass-fetch@2.1.2(transitive)
- Removednode-gyp@9.4.1(transitive)
- Removednopt@6.0.0(transitive)
- Removednpmlog@6.0.2(transitive)
- Removedpromise-inflight@1.0.1(transitive)
- Removedset-blocking@2.0.0(transitive)
- Removedsocks-proxy-agent@7.0.0(transitive)
- Removedssri@9.0.1(transitive)
- Removedstream-buffers@3.0.2(transitive)
- Removedtslib@1.14.1(transitive)
- Removedunique-filename@2.0.1(transitive)
- Removedunique-slug@3.0.0(transitive)
- Removedwide-align@1.1.5(transitive)
Updated@pnpm/lifecycle@17.0.0
Updated@pnpm/types@10.0.0
Updatedpreferred-pm@^3.1.3