Socket
Socket
Sign inDemoInstall

@pnpm/prepare-package

Package Overview
Dependencies
241
Maintainers
2
Versions
70
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 5.0.25 to 6.0.0

5

lib/index.d.ts

@@ -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;
}>;

43

lib/index.js

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc