napi-postinstall 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -2
- package/lib/constants.d.ts +1 -1
- package/lib/fallback.d.ts +2 -0
- package/lib/fallback.js +74 -0
- package/lib/fallback.js.map +1 -0
- package/lib/helpers.d.ts +1 -1
- package/lib/target.d.ts +1 -1
- package/package.json +5 -1
package/README.md
CHANGED
@@ -76,6 +76,7 @@ This will check and prepare the napi binding packages for you automatically.
|
|
76
76
|
#### Types
|
77
77
|
|
78
78
|
```ts
|
79
|
+
// napi-postinstall
|
79
80
|
export interface PackageJson {
|
80
81
|
name: string
|
81
82
|
version: string
|
@@ -85,16 +86,30 @@ export declare function checkAndPreparePackage(
|
|
85
86
|
packageNameOrPackageJson: PackageJson | string,
|
86
87
|
checkVersion?: boolean,
|
87
88
|
): Promise<void>
|
89
|
+
|
90
|
+
// napi-postinstall/fallback
|
91
|
+
declare function fallback<T = unknown>(
|
92
|
+
packageJsonPath: string,
|
93
|
+
checkVersion?: boolean,
|
94
|
+
): T
|
95
|
+
export = fallback
|
88
96
|
```
|
89
97
|
|
90
98
|
#### Example
|
91
99
|
|
92
100
|
```js
|
93
|
-
|
101
|
+
// index.js
|
102
|
+
const { checkAndPreparePackage, isNpm } = require('napi-postinstall')
|
94
103
|
|
95
104
|
if (isNpm()) {
|
96
|
-
checkAndPreparePackage('unrs-resolver' /* <napi-package-name> */)
|
105
|
+
void checkAndPreparePackage('unrs-resolver' /* <napi-package-name> */)
|
97
106
|
}
|
107
|
+
|
108
|
+
// fallback.js
|
109
|
+
module.exports = require('napi-postinstall/fallback')(
|
110
|
+
require.resolve('../package.json') /* <napi-package-json-path> */,
|
111
|
+
true /* <check-version> */,
|
112
|
+
)
|
98
113
|
```
|
99
114
|
|
100
115
|
## Sponsors and Backers
|
package/lib/constants.d.ts
CHANGED
package/lib/fallback.js
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
"use strict";
|
2
|
+
const node_child_process_1 = require("node:child_process");
|
3
|
+
const fs = require("node:fs");
|
4
|
+
const os = require("node:os");
|
5
|
+
const path = require("node:path");
|
6
|
+
const constants_js_1 = require("./constants.js");
|
7
|
+
const helpers_js_1 = require("./helpers.js");
|
8
|
+
const EXECUTORS = {
|
9
|
+
npm: 'npx',
|
10
|
+
pnpm: 'pnpm',
|
11
|
+
yarn: 'yarn',
|
12
|
+
bun: 'bun',
|
13
|
+
deno: (args) => ['deno', 'run', `npm:${args[0]}`, ...args.slice(1)],
|
14
|
+
};
|
15
|
+
function constructCommand(value, args) {
|
16
|
+
const list = typeof value === 'function'
|
17
|
+
? value(args)
|
18
|
+
:
|
19
|
+
[].concat(value, args);
|
20
|
+
return {
|
21
|
+
command: list[0],
|
22
|
+
args: list.slice(1),
|
23
|
+
};
|
24
|
+
}
|
25
|
+
function fallback(packageJsonPath, checkVersion) {
|
26
|
+
const packageJson = require(packageJsonPath);
|
27
|
+
const { name, version: pkgVersion, optionalDependencies } = packageJson;
|
28
|
+
const { napi, version = pkgVersion } = (0, helpers_js_1.getNapiInfoFromPackageJson)(packageJson, checkVersion);
|
29
|
+
if (checkVersion && pkgVersion !== version) {
|
30
|
+
throw new Error((0, helpers_js_1.errorMessage)(`Inconsistent package versions found for \`${name}\` v${pkgVersion} vs \`${napi.packageName}\` v${version}.`));
|
31
|
+
}
|
32
|
+
if (process.versions.webcontainer) {
|
33
|
+
const bindingPkgName = `${napi.packageName}-${constants_js_1.WASM32_WASI}`;
|
34
|
+
if (!optionalDependencies?.[bindingPkgName]) {
|
35
|
+
throw new Error((0, helpers_js_1.errorMessage)(`\`${constants_js_1.WASM32_WASI}\` target is unavailable for \`${name}\` v${version}`));
|
36
|
+
}
|
37
|
+
const baseDir = path.resolve(os.tmpdir(), `${name}-${version}`);
|
38
|
+
const bindingEntry = path.resolve(baseDir, `node_modules/${bindingPkgName}/${napi.binaryName}.wasi.cjs`);
|
39
|
+
if (!fs.existsSync(bindingEntry)) {
|
40
|
+
fs.rmSync(baseDir, { recursive: true, force: true });
|
41
|
+
fs.mkdirSync(baseDir, { recursive: true });
|
42
|
+
const bindingPkg = `${bindingPkgName}@${version}`;
|
43
|
+
console.log((0, helpers_js_1.errorMessage)(`Downloading \`${bindingPkg}\` on WebContainer...`));
|
44
|
+
(0, node_child_process_1.execFileSync)('pnpm', ['i', bindingPkg], {
|
45
|
+
cwd: baseDir,
|
46
|
+
stdio: 'inherit',
|
47
|
+
});
|
48
|
+
}
|
49
|
+
return require(bindingEntry);
|
50
|
+
}
|
51
|
+
const userAgent = ((process.env.npm_config_user_agent || '').split('/')[0] ||
|
52
|
+
'npm');
|
53
|
+
const executor = EXECUTORS[userAgent];
|
54
|
+
if (!executor) {
|
55
|
+
throw new Error((0, helpers_js_1.errorMessage)(`Unsupported package manager: ${userAgent}. Supported managers are: ${Object.keys(EXECUTORS).join(', ')}.`));
|
56
|
+
}
|
57
|
+
const { command, args } = constructCommand(executor, [
|
58
|
+
'napi-postinstall',
|
59
|
+
name,
|
60
|
+
version,
|
61
|
+
checkVersion ? '1' : '0',
|
62
|
+
]);
|
63
|
+
const pkgDir = path.dirname(packageJsonPath);
|
64
|
+
(0, node_child_process_1.execFileSync)(command, args, {
|
65
|
+
cwd: pkgDir,
|
66
|
+
stdio: 'inherit',
|
67
|
+
});
|
68
|
+
process.env[`SKIP_${name.replace(/-/g, '_').toUpperCase()}_FALLBACK`] = '1';
|
69
|
+
const PKG_RESOLVED_PATH = require.resolve(pkgDir);
|
70
|
+
delete require.cache[PKG_RESOLVED_PATH];
|
71
|
+
return require(pkgDir);
|
72
|
+
}
|
73
|
+
module.exports = fallback;
|
74
|
+
//# sourceMappingURL=fallback.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
|
package/lib/helpers.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { NapiInfo, PackageJson } from './types.js';
|
1
|
+
import type { NapiInfo, PackageJson } from './types.js';
|
2
2
|
export declare function getGlobalNpmRegistry(): string;
|
3
3
|
export declare function removeRecursive(dir: string): void;
|
4
4
|
export declare function downloadedNodePath(name: string, subpath: string): string;
|
package/lib/target.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
import { Target } from './types.js';
|
1
|
+
import type { Target } from './types.js';
|
2
2
|
export declare function parseTriple(rawTriple: string): Target;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "napi-postinstall",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.3.0",
|
4
4
|
"type": "commonjs",
|
5
5
|
"description": "The `postinstall` script helper for handling native bindings in legacy `npm` versions",
|
6
6
|
"repository": "git+https://github.com/un-ts/napi-postinstall.git",
|
@@ -18,6 +18,10 @@
|
|
18
18
|
"types": "./lib/index.d.ts",
|
19
19
|
"default": "./lib/index.js"
|
20
20
|
},
|
21
|
+
"./fallback": {
|
22
|
+
"types": "./lib/fallback.d.ts",
|
23
|
+
"default": "./lib/fallback.js"
|
24
|
+
},
|
21
25
|
"./package.json": "./package.json"
|
22
26
|
},
|
23
27
|
"files": [
|