Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

napi-postinstall

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

napi-postinstall - npm Package Compare versions

Comparing version
0.2.5
to
0.3.0
+2
lib/fallback.d.ts
declare function fallback<T = unknown>(packageJsonPath: string, checkVersion?: boolean): T;
export = fallback;
"use strict";
const node_child_process_1 = require("node:child_process");
const fs = require("node:fs");
const os = require("node:os");
const path = require("node:path");
const constants_js_1 = require("./constants.js");
const helpers_js_1 = require("./helpers.js");
const EXECUTORS = {
npm: 'npx',
pnpm: 'pnpm',
yarn: 'yarn',
bun: 'bun',
deno: (args) => ['deno', 'run', `npm:${args[0]}`, ...args.slice(1)],
};
function constructCommand(value, args) {
const list = typeof value === 'function'
? value(args)
:
[].concat(value, args);
return {
command: list[0],
args: list.slice(1),
};
}
function fallback(packageJsonPath, checkVersion) {
const packageJson = require(packageJsonPath);
const { name, version: pkgVersion, optionalDependencies } = packageJson;
const { napi, version = pkgVersion } = (0, helpers_js_1.getNapiInfoFromPackageJson)(packageJson, checkVersion);
if (checkVersion && pkgVersion !== version) {
throw new Error((0, helpers_js_1.errorMessage)(`Inconsistent package versions found for \`${name}\` v${pkgVersion} vs \`${napi.packageName}\` v${version}.`));
}
if (process.versions.webcontainer) {
const bindingPkgName = `${napi.packageName}-${constants_js_1.WASM32_WASI}`;
if (!optionalDependencies?.[bindingPkgName]) {
throw new Error((0, helpers_js_1.errorMessage)(`\`${constants_js_1.WASM32_WASI}\` target is unavailable for \`${name}\` v${version}`));
}
const baseDir = path.resolve(os.tmpdir(), `${name}-${version}`);
const bindingEntry = path.resolve(baseDir, `node_modules/${bindingPkgName}/${napi.binaryName}.wasi.cjs`);
if (!fs.existsSync(bindingEntry)) {
fs.rmSync(baseDir, { recursive: true, force: true });
fs.mkdirSync(baseDir, { recursive: true });
const bindingPkg = `${bindingPkgName}@${version}`;
console.log((0, helpers_js_1.errorMessage)(`Downloading \`${bindingPkg}\` on WebContainer...`));
(0, node_child_process_1.execFileSync)('pnpm', ['i', bindingPkg], {
cwd: baseDir,
stdio: 'inherit',
});
}
return require(bindingEntry);
}
const userAgent = ((process.env.npm_config_user_agent || '').split('/')[0] ||
'npm');
const executor = EXECUTORS[userAgent];
if (!executor) {
throw new Error((0, helpers_js_1.errorMessage)(`Unsupported package manager: ${userAgent}. Supported managers are: ${Object.keys(EXECUTORS).join(', ')}.`));
}
const { command, args } = constructCommand(executor, [
'napi-postinstall',
name,
version,
checkVersion ? '1' : '0',
]);
const pkgDir = path.dirname(packageJsonPath);
(0, node_child_process_1.execFileSync)(command, args, {
cwd: pkgDir,
stdio: 'inherit',
});
process.env[`SKIP_${name.replace(/-/g, '_').toUpperCase()}_FALLBACK`] = '1';
const PKG_RESOLVED_PATH = require.resolve(pkgDir);
delete require.cache[PKG_RESOLVED_PATH];
return require(pkgDir);
}
module.exports = fallback;
//# sourceMappingURL=fallback.js.map
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
+1
-1

@@ -1,2 +0,2 @@

import { PackageJson } from './types.js';
import type { PackageJson } from './types.js';
export declare const DEFAULT_NPM_REGISTRY = "https://registry.npmjs.org/";

@@ -3,0 +3,0 @@ export declare const meta: PackageJson;

@@ -1,2 +0,2 @@

import { NapiInfo, PackageJson } from './types.js';
import type { NapiInfo, PackageJson } from './types.js';
export declare function getGlobalNpmRegistry(): string;

@@ -3,0 +3,0 @@ export declare function removeRecursive(dir: string): void;

@@ -1,2 +0,2 @@

import { Target } from './types.js';
import type { Target } from './types.js';
export declare function parseTriple(rawTriple: string): Target;
{
"name": "napi-postinstall",
"version": "0.2.5",
"version": "0.3.0",
"type": "commonjs",

@@ -21,2 +21,6 @@ "description": "The `postinstall` script helper for handling native bindings in legacy `npm` versions",

},
"./fallback": {
"types": "./lib/fallback.d.ts",
"default": "./lib/fallback.js"
},
"./package.json": "./package.json"

@@ -23,0 +27,0 @@ },

@@ -79,2 +79,3 @@ # napi-postinstall

```ts
// napi-postinstall
export interface PackageJson {

@@ -89,2 +90,9 @@ name: string

): Promise<void>
// napi-postinstall/fallback
declare function fallback<T = unknown>(
packageJsonPath: string,
checkVersion?: boolean,
): T
export = fallback
```

@@ -95,7 +103,14 @@

```js
import { checkAndPreparePackage, isNpm } from 'napi-postinstall'
// index.js
const { checkAndPreparePackage, isNpm } = require('napi-postinstall')
if (isNpm()) {
checkAndPreparePackage('unrs-resolver' /* <napi-package-name> */)
void checkAndPreparePackage('unrs-resolver' /* <napi-package-name> */)
}
// fallback.js
module.exports = require('napi-postinstall/fallback')(
require.resolve('../package.json') /* <napi-package-json-path> */,
true /* <check-version> */,
)
```

@@ -102,0 +117,0 @@