install-module-linked-compat 0.1.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.
Files changed (97) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/bin/cli.js +5 -0
  4. package/dist/cjs/cli.d.cts +3 -0
  5. package/dist/cjs/cli.d.ts +3 -0
  6. package/dist/cjs/cli.js +82 -0
  7. package/dist/cjs/cli.js.map +1 -0
  8. package/dist/cjs/compat.d.cts +1 -0
  9. package/dist/cjs/compat.d.ts +1 -0
  10. package/dist/cjs/compat.js +20 -0
  11. package/dist/cjs/compat.js.map +1 -0
  12. package/dist/cjs/constants.d.cts +1 -0
  13. package/dist/cjs/constants.d.ts +1 -0
  14. package/dist/cjs/constants.js +19 -0
  15. package/dist/cjs/constants.js.map +1 -0
  16. package/dist/cjs/index.d.cts +9 -0
  17. package/dist/cjs/index.d.ts +9 -0
  18. package/dist/cjs/index.js +51 -0
  19. package/dist/cjs/index.js.map +1 -0
  20. package/dist/cjs/lib/cache.d.cts +2 -0
  21. package/dist/cjs/lib/cache.d.ts +2 -0
  22. package/dist/cjs/lib/cache.js +182 -0
  23. package/dist/cjs/lib/cache.js.map +1 -0
  24. package/dist/cjs/lib/clear.d.cts +2 -0
  25. package/dist/cjs/lib/clear.d.ts +2 -0
  26. package/dist/cjs/lib/clear.js +17 -0
  27. package/dist/cjs/lib/clear.js.map +1 -0
  28. package/dist/cjs/lib/getSpecifier.d.cts +2 -0
  29. package/dist/cjs/lib/getSpecifier.d.ts +2 -0
  30. package/dist/cjs/lib/getSpecifier.js +34 -0
  31. package/dist/cjs/lib/getSpecifier.js.map +1 -0
  32. package/dist/cjs/lib/install.d.cts +2 -0
  33. package/dist/cjs/lib/install.d.ts +2 -0
  34. package/dist/cjs/lib/install.js +69 -0
  35. package/dist/cjs/lib/install.js.map +1 -0
  36. package/dist/cjs/lib/parseInstallString.d.cts +4 -0
  37. package/dist/cjs/lib/parseInstallString.d.ts +4 -0
  38. package/dist/cjs/lib/parseInstallString.js +51 -0
  39. package/dist/cjs/lib/parseInstallString.js.map +1 -0
  40. package/dist/cjs/lib/renameWithFallback.d.cts +1 -0
  41. package/dist/cjs/lib/renameWithFallback.d.ts +1 -0
  42. package/dist/cjs/lib/renameWithFallback.js +32 -0
  43. package/dist/cjs/lib/renameWithFallback.js.map +1 -0
  44. package/dist/cjs/package.json +1 -0
  45. package/dist/cjs/types.d.cts +9 -0
  46. package/dist/cjs/types.d.ts +9 -0
  47. package/dist/cjs/types.js +5 -0
  48. package/dist/cjs/types.js.map +1 -0
  49. package/dist/cjs/workers/async.d.cts +2 -0
  50. package/dist/cjs/workers/async.d.ts +2 -0
  51. package/dist/cjs/workers/async.js +108 -0
  52. package/dist/cjs/workers/async.js.map +1 -0
  53. package/dist/cjs/workers/sync.d.cts +1 -0
  54. package/dist/cjs/workers/sync.d.ts +1 -0
  55. package/dist/cjs/workers/sync.js +30 -0
  56. package/dist/cjs/workers/sync.js.map +1 -0
  57. package/dist/esm/cli.d.ts +3 -0
  58. package/dist/esm/cli.js +66 -0
  59. package/dist/esm/cli.js.map +1 -0
  60. package/dist/esm/compat.d.ts +1 -0
  61. package/dist/esm/compat.js +4 -0
  62. package/dist/esm/compat.js.map +1 -0
  63. package/dist/esm/constants.d.ts +1 -0
  64. package/dist/esm/constants.js +3 -0
  65. package/dist/esm/constants.js.map +1 -0
  66. package/dist/esm/index.d.ts +9 -0
  67. package/dist/esm/index.js +14 -0
  68. package/dist/esm/index.js.map +1 -0
  69. package/dist/esm/lib/cache.d.ts +2 -0
  70. package/dist/esm/lib/cache.js +93 -0
  71. package/dist/esm/lib/cache.js.map +1 -0
  72. package/dist/esm/lib/clear.d.ts +2 -0
  73. package/dist/esm/lib/clear.js +6 -0
  74. package/dist/esm/lib/clear.js.map +1 -0
  75. package/dist/esm/lib/getSpecifier.d.ts +2 -0
  76. package/dist/esm/lib/getSpecifier.js +18 -0
  77. package/dist/esm/lib/getSpecifier.js.map +1 -0
  78. package/dist/esm/lib/install.d.ts +2 -0
  79. package/dist/esm/lib/install.js +23 -0
  80. package/dist/esm/lib/install.js.map +1 -0
  81. package/dist/esm/lib/parseInstallString.d.ts +4 -0
  82. package/dist/esm/lib/parseInstallString.js +14 -0
  83. package/dist/esm/lib/parseInstallString.js.map +1 -0
  84. package/dist/esm/lib/renameWithFallback.d.ts +1 -0
  85. package/dist/esm/lib/renameWithFallback.js +16 -0
  86. package/dist/esm/lib/renameWithFallback.js.map +1 -0
  87. package/dist/esm/package.json +1 -0
  88. package/dist/esm/types.d.ts +9 -0
  89. package/dist/esm/types.js +1 -0
  90. package/dist/esm/types.js.map +1 -0
  91. package/dist/esm/workers/async.d.ts +2 -0
  92. package/dist/esm/workers/async.js +50 -0
  93. package/dist/esm/workers/async.js.map +1 -0
  94. package/dist/esm/workers/sync.d.ts +1 -0
  95. package/dist/esm/workers/sync.js +14 -0
  96. package/dist/esm/workers/sync.js.map +1 -0
  97. package/package.json +83 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021-2022 Kevin Malakoff
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ ## install-module-linked-compat
2
+
3
+ Installs and symlinks a module into node_modules
4
+
5
+ ### Example 1
6
+
7
+ ```typescript
8
+ import installModule from 'install-module-linked-compat';
9
+
10
+ const res = await installModule('my-module@1.2.3', /* path to node_modules */ );
11
+ ```
12
+
13
+ ### Documentation
14
+
15
+ [API Docs](https://kmalakoff.github.io/install-module-linked-compat/)
package/bin/cli.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ // biome-ignore lint/security/noGlobalEval: dual esm and cjs
4
+ if (typeof require === 'undefined') eval("import('../dist/esm/cli.js').then((cli) => cli.default(process.argv.slice(2), 'iml')).catch((err) => { console.error(err); process.exit(-1); });");
5
+ else require('../dist/cjs/cli.js')(process.argv.slice(2), 'iml');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ declare const _default: (argv: string[], name?: string) => void;
3
+ export default _default;
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ declare const _default: (argv: string[], name?: string) => void;
3
+ export default _default;
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return _default;
10
+ }
11
+ });
12
+ var _exitcompat = /*#__PURE__*/ _interop_require_default(require("exit-compat"));
13
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
14
+ var _getoptscompat = /*#__PURE__*/ _interop_require_default(require("getopts-compat"));
15
+ var _path = /*#__PURE__*/ _interop_require_default(require("path"));
16
+ var _url = /*#__PURE__*/ _interop_require_default(require("url"));
17
+ var _clearts = /*#__PURE__*/ _interop_require_default(require("./lib/clear.js"));
18
+ function _interop_require_default(obj) {
19
+ return obj && obj.__esModule ? obj : {
20
+ default: obj
21
+ };
22
+ }
23
+ var __dirname = _path.default.dirname(typeof __filename !== 'undefined' ? __filename : _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()));
24
+ var ERROR_CODE = 7;
25
+ function getVersion() {
26
+ var packageJsonPath = _path.default.join(__dirname, '..', '..', 'package.json');
27
+ var packageJson = JSON.parse(_fs.default.readFileSync(packageJsonPath, 'utf8'));
28
+ return packageJson.version;
29
+ }
30
+ function printHelp(name) {
31
+ var version = getVersion();
32
+ console.log("".concat(name, " v").concat(version));
33
+ console.log('');
34
+ console.log("Usage: ".concat(name, " [options] [command]"));
35
+ console.log('');
36
+ console.log('Commands:');
37
+ console.log(' clear Clear the module cache');
38
+ console.log('');
39
+ console.log('Options:');
40
+ console.log(' -v, --version Print version number');
41
+ console.log(' -h, --help Print this help message');
42
+ }
43
+ var _default = function(argv, name) {
44
+ name = name || 'iml';
45
+ var options = (0, _getoptscompat.default)(argv, {
46
+ alias: {
47
+ version: 'v',
48
+ help: 'h'
49
+ },
50
+ boolean: [
51
+ 'version',
52
+ 'help'
53
+ ],
54
+ stopEarly: true
55
+ });
56
+ if (options.version) {
57
+ console.log(getVersion());
58
+ (0, _exitcompat.default)(0);
59
+ return;
60
+ }
61
+ if (options.help) {
62
+ printHelp(name);
63
+ (0, _exitcompat.default)(0);
64
+ return;
65
+ }
66
+ var args = options._;
67
+ if (!args.length) {
68
+ console.log("Missing command. Example usage: ".concat(name, " [command]"));
69
+ console.log('Run "'.concat(name, ' --help" for more information.'));
70
+ (0, _exitcompat.default)(ERROR_CODE);
71
+ return;
72
+ }
73
+ if (args[0] === 'clear') {
74
+ (0, _clearts.default)();
75
+ (0, _exitcompat.default)(0);
76
+ return;
77
+ }
78
+ console.log("Unrecognized command: ".concat(args[0], ". Example usage: ").concat(name, " [command]"));
79
+ console.log('Run "'.concat(name, ' --help" for more information.'));
80
+ (0, _exitcompat.default)(ERROR_CODE);
81
+ };
82
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/install-module-linked-compat/src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport exit from 'exit-compat';\nimport fs from 'fs';\nimport getopts from 'getopts-compat';\nimport path from 'path';\nimport url from 'url';\nimport clear from './lib/clear.ts';\n\nconst __dirname = path.dirname(typeof __filename !== 'undefined' ? __filename : url.fileURLToPath(import.meta.url));\n\nconst ERROR_CODE = 7;\n\nfunction getVersion(): string {\n const packageJsonPath = path.join(__dirname, '..', '..', 'package.json');\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n return packageJson.version;\n}\n\nfunction printHelp(name: string): void {\n const version = getVersion();\n console.log(`${name} v${version}`);\n console.log('');\n console.log(`Usage: ${name} [options] [command]`);\n console.log('');\n console.log('Commands:');\n console.log(' clear Clear the module cache');\n console.log('');\n console.log('Options:');\n console.log(' -v, --version Print version number');\n console.log(' -h, --help Print this help message');\n}\n\nexport default (argv: string[], name?: string): void => {\n name = name || 'iml';\n const options = getopts(argv, {\n alias: { version: 'v', help: 'h' },\n boolean: ['version', 'help'],\n stopEarly: true,\n });\n\n if (options.version) {\n console.log(getVersion());\n exit(0);\n return;\n }\n\n if (options.help) {\n printHelp(name);\n exit(0);\n return;\n }\n\n const args = options._;\n if (!args.length) {\n console.log(`Missing command. Example usage: ${name} [command]`);\n console.log(`Run \"${name} --help\" for more information.`);\n exit(ERROR_CODE);\n return;\n }\n\n if (args[0] === 'clear') {\n clear();\n exit(0);\n return;\n }\n\n console.log(`Unrecognized command: ${args[0]}. Example usage: ${name} [command]`);\n console.log(`Run \"${name} --help\" for more information.`);\n exit(ERROR_CODE);\n};\n"],"names":["__dirname","path","dirname","__filename","url","fileURLToPath","ERROR_CODE","getVersion","packageJsonPath","join","packageJson","JSON","parse","fs","readFileSync","version","printHelp","name","console","log","argv","options","getopts","alias","help","boolean","stopEarly","exit","args","_","length","clear"],"mappings":";;;;;+BAiCA;;;eAAA;;;iEA/BiB;yDACF;oEACK;2DACH;0DACD;8DACE;;;;;;AAElB,IAAMA,YAAYC,aAAI,CAACC,OAAO,CAAC,OAAOC,eAAe,cAAcA,aAAaC,YAAG,CAACC,aAAa,CAAC;AAElG,IAAMC,aAAa;AAEnB,SAASC;IACP,IAAMC,kBAAkBP,aAAI,CAACQ,IAAI,CAACT,WAAW,MAAM,MAAM;IACzD,IAAMU,cAAcC,KAAKC,KAAK,CAACC,WAAE,CAACC,YAAY,CAACN,iBAAiB;IAChE,OAAOE,YAAYK,OAAO;AAC5B;AAEA,SAASC,UAAUC,IAAY;IAC7B,IAAMF,UAAUR;IAChBW,QAAQC,GAAG,CAAC,AAAC,GAAWJ,OAATE,MAAK,MAAY,OAARF;IACxBG,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,AAAC,UAAc,OAALF,MAAK;IAC3BC,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC;AACd;IAEA,WAAe,SAACC,MAAgBH;IAC9BA,OAAOA,QAAQ;IACf,IAAMI,UAAUC,IAAAA,sBAAO,EAACF,MAAM;QAC5BG,OAAO;YAAER,SAAS;YAAKS,MAAM;QAAI;QACjCC,SAAS;YAAC;YAAW;SAAO;QAC5BC,WAAW;IACb;IAEA,IAAIL,QAAQN,OAAO,EAAE;QACnBG,QAAQC,GAAG,CAACZ;QACZoB,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAIN,QAAQG,IAAI,EAAE;QAChBR,UAAUC;QACVU,IAAAA,mBAAI,EAAC;QACL;IACF;IAEA,IAAMC,OAAOP,QAAQQ,CAAC;IACtB,IAAI,CAACD,KAAKE,MAAM,EAAE;QAChBZ,QAAQC,GAAG,CAAC,AAAC,mCAAuC,OAALF,MAAK;QACpDC,QAAQC,GAAG,CAAC,AAAC,QAAY,OAALF,MAAK;QACzBU,IAAAA,mBAAI,EAACrB;QACL;IACF;IAEA,IAAIsB,IAAI,CAAC,EAAE,KAAK,SAAS;QACvBG,IAAAA,gBAAK;QACLJ,IAAAA,mBAAI,EAAC;QACL;IACF;IAEAT,QAAQC,GAAG,CAAC,AAAC,yBAAmDF,OAA3BW,IAAI,CAAC,EAAE,EAAC,qBAAwB,OAALX,MAAK;IACrEC,QAAQC,GAAG,CAAC,AAAC,QAAY,OAALF,MAAK;IACzBU,IAAAA,mBAAI,EAACrB;AACP"}
@@ -0,0 +1 @@
1
+ export declare function homedir(): string;
@@ -0,0 +1 @@
1
+ export declare function homedir(): string;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "homedir", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return homedir;
9
+ }
10
+ });
11
+ var _os = /*#__PURE__*/ _interop_require_default(require("os"));
12
+ function _interop_require_default(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
17
+ function homedir() {
18
+ return typeof _os.default.homedir === 'function' ? _os.default.homedir() : require('homedir-polyfill')();
19
+ }
20
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/install-module-linked-compat/src/compat.ts"],"sourcesContent":["import os from 'os';\n\nexport function homedir(): string {\n return typeof os.homedir === 'function' ? os.homedir() : require('homedir-polyfill')();\n}\n"],"names":["homedir","os","require"],"mappings":";;;;+BAEgBA;;;eAAAA;;;yDAFD;;;;;;AAER,SAASA;IACd,OAAO,OAAOC,WAAE,CAACD,OAAO,KAAK,aAAaC,WAAE,CAACD,OAAO,KAAKE,QAAQ;AACnE"}
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_CACHE_PATH: string;
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_CACHE_PATH: string;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "DEFAULT_CACHE_PATH", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DEFAULT_CACHE_PATH;
9
+ }
10
+ });
11
+ var _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
+ var _compatts = require("./compat.js");
13
+ function _interop_require_default(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ var DEFAULT_CACHE_PATH = _path.default.join((0, _compatts.homedir)(), '.iml');
19
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/install-module-linked-compat/src/constants.ts"],"sourcesContent":["import path from 'path';\n\nimport { homedir } from './compat.ts';\n\nexport const DEFAULT_CACHE_PATH = path.join(homedir(), '.iml') as string;\n"],"names":["DEFAULT_CACHE_PATH","path","join","homedir"],"mappings":";;;;+BAIaA;;;eAAAA;;;2DAJI;wBAEO;;;;;;AAEjB,IAAMA,qBAAqBC,aAAI,CAACC,IAAI,CAACC,IAAAA,iBAAO,KAAI"}
@@ -0,0 +1,9 @@
1
+ import type { InstallCallback, InstallOptions } from './types.js';
2
+ export { default as clear } from './lib/clear.js';
3
+ export { default as install } from './lib/install.js';
4
+ export { default as parseInstallString } from './lib/parseInstallString.js';
5
+ export type * from './types.js';
6
+ export default function installModule(installString: string, nodeModulesPath: string, callback: InstallCallback): void;
7
+ export default function installModule(installString: string, nodeModulesPath: string, options: InstallOptions, callback: InstallCallback): void;
8
+ export default function installModule(installString: string, nodeModulesPath: string, options?: InstallOptions): Promise<string>;
9
+ export declare function sync(installString: string, nodeModulesPath: string, options?: InstallOptions): string | undefined;
@@ -0,0 +1,9 @@
1
+ import type { InstallCallback, InstallOptions } from './types.js';
2
+ export { default as clear } from './lib/clear.js';
3
+ export { default as install } from './lib/install.js';
4
+ export { default as parseInstallString } from './lib/parseInstallString.js';
5
+ export type * from './types.js';
6
+ export default function installModule(installString: string, nodeModulesPath: string, callback: InstallCallback): void;
7
+ export default function installModule(installString: string, nodeModulesPath: string, options: InstallOptions, callback: InstallCallback): void;
8
+ export default function installModule(installString: string, nodeModulesPath: string, options?: InstallOptions): Promise<string>;
9
+ export declare function sync(installString: string, nodeModulesPath: string, options?: InstallOptions): string | undefined;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get clear () {
13
+ return _clearts.default;
14
+ },
15
+ get default () {
16
+ return installModule;
17
+ },
18
+ get install () {
19
+ return _installts.default;
20
+ },
21
+ get parseInstallString () {
22
+ return _parseInstallStringts.default;
23
+ },
24
+ get sync () {
25
+ return sync;
26
+ }
27
+ });
28
+ var _asyncts = /*#__PURE__*/ _interop_require_default(require("./workers/async.js"));
29
+ var _syncts = /*#__PURE__*/ _interop_require_default(require("./workers/sync.js"));
30
+ var _clearts = /*#__PURE__*/ _interop_require_default(require("./lib/clear.js"));
31
+ var _installts = /*#__PURE__*/ _interop_require_default(require("./lib/install.js"));
32
+ var _parseInstallStringts = /*#__PURE__*/ _interop_require_default(require("./lib/parseInstallString.js"));
33
+ function _interop_require_default(obj) {
34
+ return obj && obj.__esModule ? obj : {
35
+ default: obj
36
+ };
37
+ }
38
+ function installModule(installString, nodeModulesPath, options, callback) {
39
+ callback = typeof options === 'function' ? options : callback;
40
+ options = typeof options === 'function' ? {} : options || {};
41
+ if (typeof callback === 'function') return (0, _asyncts.default)(installString, nodeModulesPath, options, callback);
42
+ return new Promise(function(resolve, reject) {
43
+ return (0, _asyncts.default)(installString, nodeModulesPath, options, function(err, dest) {
44
+ return err ? reject(err) : resolve(dest);
45
+ });
46
+ });
47
+ }
48
+ function sync(installString, nodeModulesPath, options) {
49
+ return (0, _syncts.default)(installString, nodeModulesPath, options || {});
50
+ }
51
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/install-module-linked-compat/src/index.ts"],"sourcesContent":["import type { InstallCallback, InstallOptions } from './types.ts';\nimport worker from './workers/async.ts';\nimport workerSync from './workers/sync.ts';\n\nexport { default as clear } from './lib/clear.ts';\nexport { default as install } from './lib/install.ts';\nexport { default as parseInstallString } from './lib/parseInstallString.ts';\nexport type * from './types.ts';\n\nexport default function installModule(installString: string, nodeModulesPath: string, callback: InstallCallback): void;\nexport default function installModule(installString: string, nodeModulesPath: string, options: InstallOptions, callback: InstallCallback): void;\nexport default function installModule(installString: string, nodeModulesPath: string, options?: InstallOptions): Promise<string>;\nexport default function installModule(installString: string, nodeModulesPath: string, options?: InstallOptions | InstallCallback, callback?: InstallCallback): void | Promise<string> {\n callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as InstallOptions);\n\n if (typeof callback === 'function') return worker(installString, nodeModulesPath, options, callback);\n return new Promise((resolve, reject) => worker(installString, nodeModulesPath, options, (err, dest) => (err ? reject(err) : resolve(dest as string))));\n}\n\nexport function sync(installString: string, nodeModulesPath: string, options?: InstallOptions): string | undefined {\n return workerSync(installString, nodeModulesPath, options || {});\n}\n"],"names":["clear","installModule","install","parseInstallString","sync","installString","nodeModulesPath","options","callback","worker","Promise","resolve","reject","err","dest","workerSync"],"mappings":";;;;;;;;;;;QAIoBA;eAAAA,gBAAK;;QAQzB;eAAwBC;;QAPJC;eAAAA,kBAAO;;QACPC;eAAAA,6BAAkB;;QActBC;eAAAA;;;8DAnBG;6DACI;8DAEU;gEACE;2EACW;;;;;;AAM/B,SAASH,cAAcI,aAAqB,EAAEC,eAAuB,EAAEC,OAA0C,EAAEC,QAA0B;IAC1JA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;IACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;IAE7D,IAAI,OAAOC,aAAa,YAAY,OAAOC,IAAAA,gBAAM,EAACJ,eAAeC,iBAAiBC,SAASC;IAC3F,OAAO,IAAIE,QAAQ,SAACC,SAASC;eAAWH,IAAAA,gBAAM,EAACJ,eAAeC,iBAAiBC,SAAS,SAACM,KAAKC;mBAAUD,MAAMD,OAAOC,OAAOF,QAAQG;;;AACtI;AAEO,SAASV,KAAKC,aAAqB,EAAEC,eAAuB,EAAEC,OAAwB;IAC3F,OAAOQ,IAAAA,eAAU,EAACV,eAAeC,iBAAiBC,WAAW,CAAC;AAChE"}
@@ -0,0 +1,2 @@
1
+ import type { EnsureCachedCallback } from '../types.js';
2
+ export default function ensureCached(installString: string, cachePath: string, callback: EnsureCachedCallback): void;
@@ -0,0 +1,2 @@
1
+ import type { EnsureCachedCallback } from '../types.js';
2
+ export default function ensureCached(installString: string, cachePath: string, callback: EnsureCachedCallback): void;
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ensureCached;
9
+ }
10
+ });
11
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
+ var _fsremovecompat = require("fs-remove-compat");
13
+ var _lockfile = /*#__PURE__*/ _interop_require_default(require("lockfile"));
14
+ var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
15
+ var _path = /*#__PURE__*/ _interop_require_default(require("path"));
16
+ var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
17
+ var _tempsuffix = /*#__PURE__*/ _interop_require_default(require("temp-suffix"));
18
+ var _getSpecifierts = /*#__PURE__*/ _interop_require_default(require("./getSpecifier.js"));
19
+ var _installts = /*#__PURE__*/ _interop_require_default(require("./install.js"));
20
+ var _parseInstallStringts = /*#__PURE__*/ _interop_require_default(require("./parseInstallString.js"));
21
+ var _renameWithFallbackts = /*#__PURE__*/ _interop_require_default(require("./renameWithFallback.js"));
22
+ function _array_like_to_array(arr, len) {
23
+ if (len == null || len > arr.length) len = arr.length;
24
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
25
+ return arr2;
26
+ }
27
+ function _array_without_holes(arr) {
28
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
29
+ }
30
+ function _define_property(obj, key, value) {
31
+ if (key in obj) {
32
+ Object.defineProperty(obj, key, {
33
+ value: value,
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true
37
+ });
38
+ } else obj[key] = value;
39
+ return obj;
40
+ }
41
+ function _interop_require_default(obj) {
42
+ return obj && obj.__esModule ? obj : {
43
+ default: obj
44
+ };
45
+ }
46
+ function _iterable_to_array(iter) {
47
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
48
+ return Array.from(iter);
49
+ }
50
+ }
51
+ function _non_iterable_spread() {
52
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
53
+ }
54
+ function _object_spread(target) {
55
+ for(var i = 1; i < arguments.length; i++){
56
+ var source = arguments[i] != null ? arguments[i] : {};
57
+ var ownKeys = Object.keys(source);
58
+ if (typeof Object.getOwnPropertySymbols === "function") {
59
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
60
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
61
+ }));
62
+ }
63
+ ownKeys.forEach(function(key) {
64
+ _define_property(target, key, source[key]);
65
+ });
66
+ }
67
+ return target;
68
+ }
69
+ function _to_consumable_array(arr) {
70
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
71
+ }
72
+ function _unsupported_iterable_to_array(o, minLen) {
73
+ if (!o) return;
74
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
75
+ var n = Object.prototype.toString.call(o).slice(8, -1);
76
+ if (n === "Object" && o.constructor) n = o.constructor.name;
77
+ if (n === "Map" || n === "Set") return Array.from(n);
78
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
79
+ }
80
+ var LOCK_OPTIONS = {
81
+ wait: 600000,
82
+ pollPeriod: 100,
83
+ stale: 660000,
84
+ retries: 3
85
+ };
86
+ function ensureCached(installString, cachePath, callback) {
87
+ (0, _getSpecifierts.default)(installString, function(err, specifier) {
88
+ if (err) return callback(err);
89
+ // biome-ignore lint/style/noNonNullAssertion: getSpecifier always sets the specifier when err is null
90
+ var cachedAt = _path.default.join(cachePath, specifier);
91
+ var lockPath = "".concat(cachedAt, ".lock");
92
+ var readyPath = _path.default.join(cachedAt, '.ready');
93
+ var name = (0, _parseInstallStringts.default)(installString).name;
94
+ // Check if already cached AND complete (fast path, no lock needed)
95
+ _fs.default.stat(readyPath, function(readyErr) {
96
+ if (!readyErr) return callback(undefined, cachedAt); // Valid cache
97
+ // Not cached or incomplete - acquire lock and install
98
+ doLockedInstall();
99
+ });
100
+ function doLockedInstall() {
101
+ // Ensure lock file's parent directory exists (handles scoped packages like @scope/pkg)
102
+ (0, _mkdirpclassic.default)(_path.default.dirname(lockPath), function(mkdirErr) {
103
+ if (mkdirErr) return callback(mkdirErr);
104
+ var startTime = Date.now();
105
+ // Retry loop for Windows EPERM - treat it like EEXIST (lock held by another process)
106
+ function tryLock(cb) {
107
+ _lockfile.default.lock(lockPath, _object_spread({}, LOCK_OPTIONS), function(lockErr) {
108
+ if (lockErr && lockErr.code === 'EPERM' && Date.now() - startTime < LOCK_OPTIONS.wait) {
109
+ setTimeout(function() {
110
+ return tryLock(cb);
111
+ }, LOCK_OPTIONS.pollPeriod);
112
+ return;
113
+ }
114
+ cb(lockErr);
115
+ });
116
+ }
117
+ tryLock(function(lockErr) {
118
+ if (lockErr) return callback(lockErr);
119
+ // Single exit point - always unlock before calling back
120
+ function done(err) {
121
+ _lockfile.default.unlock(lockPath, function() {
122
+ return callback(err, err ? undefined : cachedAt);
123
+ });
124
+ }
125
+ // Re-check cache (another process may have completed while we waited for lock)
126
+ _fs.default.stat(readyPath, function(readyErr) {
127
+ if (!readyErr) return done(); // Cache appeared while we waited
128
+ // Clean up any incomplete cache before installing
129
+ (0, _fsremovecompat.safeRm)(cachedAt, function(rmErr) {
130
+ if (rmErr) return done(rmErr);
131
+ doInstall(done);
132
+ });
133
+ });
134
+ });
135
+ });
136
+ }
137
+ function doInstall(cb) {
138
+ var _path1;
139
+ var tmp = "".concat(cachedAt, "-").concat((0, _tempsuffix.default)());
140
+ var tmpModulePath = (_path1 = _path.default).join.apply(_path1, [
141
+ tmp,
142
+ 'node_modules'
143
+ ].concat(_to_consumable_array(name.split('/'))));
144
+ var queue = new _queuecb.default(1);
145
+ queue.defer(function(cb) {
146
+ return (0, _mkdirpclassic.default)(tmp, function(err) {
147
+ return cb(err);
148
+ });
149
+ });
150
+ queue.defer(function(cb) {
151
+ return _fs.default.writeFile(_path.default.join(tmp, 'package.json'), '{}', 'utf8', function(err) {
152
+ return cb(err);
153
+ });
154
+ });
155
+ // biome-ignore lint/style/noNonNullAssertion: getSpecifier always sets the specifier when err is null
156
+ queue.defer(_installts.default.bind(null, specifier, tmp));
157
+ queue.defer(function(qcb) {
158
+ // Verify npm actually created the package directory - npm may silently skip
159
+ // installation (exit 0) when platform doesn't match (os/cpu/libc fields)
160
+ _fs.default.stat(tmpModulePath, function(statErr) {
161
+ if (statErr) return qcb(new Error("Package directory not created by npm. This may happen when the package has platform restrictions (os/cpu/libc) that don't match the current system: ".concat(tmpModulePath)));
162
+ qcb();
163
+ });
164
+ });
165
+ queue.defer(_renameWithFallbackts.default.bind(null, tmpModulePath, cachedAt));
166
+ queue.defer(_renameWithFallbackts.default.bind(null, _path.default.join(tmp, 'node_modules'), _path.default.join(cachedAt, 'node_modules')));
167
+ // Write .ready marker after both renames succeed
168
+ queue.defer(function(cb) {
169
+ return _fs.default.writeFile(readyPath, '', 'utf8', function(err) {
170
+ return cb(err);
171
+ });
172
+ });
173
+ queue.await(function(queueErr) {
174
+ // Clean up temp directory whether installed or not
175
+ (0, _fsremovecompat.safeRm)(tmp, function() {
176
+ return cb(queueErr);
177
+ });
178
+ });
179
+ }
180
+ });
181
+ }
182
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/install-module-linked-compat/src/lib/cache.ts"],"sourcesContent":["import fs from 'fs';\nimport { safeRm } from 'fs-remove-compat';\nimport lockfile from 'lockfile';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport tempSuffix from 'temp-suffix';\nimport type { EnsureCachedCallback } from '../types.ts';\nimport getSpecifier from './getSpecifier.ts';\nimport install from './install.ts';\nimport parse from './parseInstallString.ts';\nimport renameWithFallback from './renameWithFallback.ts';\n\nconst LOCK_OPTIONS = {\n wait: 600000, // Wait up to 10 minutes for lock (npm installs can be slow)\n pollPeriod: 100, // Check every 100ms\n stale: 660000, // Consider locks stale after 11 minutes (must be > wait)\n retries: 3, // Retry 3 times on transient errors\n};\n\nexport default function ensureCached(installString: string, cachePath: string, callback: EnsureCachedCallback) {\n getSpecifier(installString, (err, specifier) => {\n if (err) return callback(err);\n // biome-ignore lint/style/noNonNullAssertion: getSpecifier always sets the specifier when err is null\n const cachedAt = path.join(cachePath, specifier!);\n const lockPath = `${cachedAt}.lock`;\n const readyPath = path.join(cachedAt, '.ready');\n const { name } = parse(installString);\n\n // Check if already cached AND complete (fast path, no lock needed)\n fs.stat(readyPath, (readyErr: NodeJS.ErrnoException | null) => {\n if (!readyErr) return callback(undefined, cachedAt); // Valid cache\n\n // Not cached or incomplete - acquire lock and install\n doLockedInstall();\n });\n\n function doLockedInstall() {\n // Ensure lock file's parent directory exists (handles scoped packages like @scope/pkg)\n mkdirp(path.dirname(lockPath), (mkdirErr: Error | null) => {\n if (mkdirErr) return callback(mkdirErr);\n\n const startTime = Date.now();\n\n // Retry loop for Windows EPERM - treat it like EEXIST (lock held by another process)\n function tryLock(cb: (err?: Error | null) => void) {\n lockfile.lock(lockPath, { ...LOCK_OPTIONS }, (lockErr: Error | null) => {\n if (lockErr && (lockErr as NodeJS.ErrnoException).code === 'EPERM' && Date.now() - startTime < LOCK_OPTIONS.wait) {\n setTimeout(() => tryLock(cb), LOCK_OPTIONS.pollPeriod);\n return;\n }\n cb(lockErr);\n });\n }\n\n tryLock((lockErr) => {\n if (lockErr) return callback(lockErr);\n\n // Single exit point - always unlock before calling back\n function done(err?: Error | null) {\n lockfile.unlock(lockPath, () => callback(err, err ? undefined : cachedAt));\n }\n\n // Re-check cache (another process may have completed while we waited for lock)\n fs.stat(readyPath, (readyErr: NodeJS.ErrnoException | null) => {\n if (!readyErr) return done(); // Cache appeared while we waited\n\n // Clean up any incomplete cache before installing\n safeRm(cachedAt, (rmErr) => {\n if (rmErr) return done(rmErr);\n doInstall(done);\n });\n });\n });\n });\n }\n\n function doInstall(cb: (err?: Error | null) => void) {\n const tmp = `${cachedAt}-${tempSuffix()}`;\n const tmpModulePath = path.join(tmp, 'node_modules', ...name.split('/'));\n\n const queue = new Queue(1);\n queue.defer((cb) => mkdirp(tmp, (err) => cb(err)));\n queue.defer((cb) => fs.writeFile(path.join(tmp, 'package.json'), '{}', 'utf8', (err) => cb(err)));\n // biome-ignore lint/style/noNonNullAssertion: getSpecifier always sets the specifier when err is null\n queue.defer(install.bind(null, specifier!, tmp));\n queue.defer((qcb) => {\n // Verify npm actually created the package directory - npm may silently skip\n // installation (exit 0) when platform doesn't match (os/cpu/libc fields)\n fs.stat(tmpModulePath, (statErr) => {\n if (statErr) return qcb(new Error(`Package directory not created by npm. This may happen when the package has platform restrictions (os/cpu/libc) that don't match the current system: ${tmpModulePath}`));\n qcb();\n });\n });\n queue.defer(renameWithFallback.bind(null, tmpModulePath, cachedAt));\n queue.defer(renameWithFallback.bind(null, path.join(tmp, 'node_modules'), path.join(cachedAt, 'node_modules')));\n // Write .ready marker after both renames succeed\n queue.defer((cb) => fs.writeFile(readyPath, '', 'utf8', (err) => cb(err)));\n queue.await((queueErr) => {\n // Clean up temp directory whether installed or not\n safeRm(tmp, () => cb(queueErr));\n });\n }\n });\n}\n"],"names":["ensureCached","LOCK_OPTIONS","wait","pollPeriod","stale","retries","installString","cachePath","callback","getSpecifier","err","specifier","cachedAt","path","join","lockPath","readyPath","name","parse","fs","stat","readyErr","undefined","doLockedInstall","mkdirp","dirname","mkdirErr","startTime","Date","now","tryLock","cb","lockfile","lock","lockErr","code","setTimeout","done","unlock","safeRm","rmErr","doInstall","tmp","tempSuffix","tmpModulePath","split","queue","Queue","defer","writeFile","install","bind","qcb","statErr","Error","renameWithFallback","await","queueErr"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { CleanOptions } from '../types.js';
2
+ export default function clear(_options?: CleanOptions): void;
@@ -0,0 +1,2 @@
1
+ import type { CleanOptions } from '../types.js';
2
+ export default function clear(_options?: CleanOptions): void;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return clear;
9
+ }
10
+ });
11
+ var _fsremovecompat = require("fs-remove-compat");
12
+ var _constantsts = require("../constants.js");
13
+ function clear(_options) {
14
+ (0, _fsremovecompat.safeRmSync)(_constantsts.DEFAULT_CACHE_PATH);
15
+ console.log("Cleaned ".concat(_constantsts.DEFAULT_CACHE_PATH));
16
+ }
17
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/install-module-linked-compat/src/lib/clear.ts"],"sourcesContent":["import { safeRmSync } from 'fs-remove-compat';\nimport { DEFAULT_CACHE_PATH } from '../constants.ts';\n\nimport type { CleanOptions } from '../types.ts';\n\nexport default function clear(_options?: CleanOptions) {\n safeRmSync(DEFAULT_CACHE_PATH);\n console.log(`Cleaned ${DEFAULT_CACHE_PATH}`);\n}\n"],"names":["clear","_options","safeRmSync","DEFAULT_CACHE_PATH","console","log"],"mappings":";;;;+BAKA;;;eAAwBA;;;8BALG;2BACQ;AAIpB,SAASA,MAAMC,QAAuB;IACnDC,IAAAA,0BAAU,EAACC,+BAAkB;IAC7BC,QAAQC,GAAG,CAAC,AAAC,WAA6B,OAAnBF,+BAAkB;AAC3C"}
@@ -0,0 +1,2 @@
1
+ import type { GetScopedSpecifiedCallback } from '../types.js';
2
+ export default function getSpecifier(installString: string, callback: GetScopedSpecifiedCallback): void;
@@ -0,0 +1,2 @@
1
+ import type { GetScopedSpecifiedCallback } from '../types.js';
2
+ export default function getSpecifier(installString: string, callback: GetScopedSpecifiedCallback): void;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return getSpecifier;
9
+ }
10
+ });
11
+ var _getfilecompat = require("get-file-compat");
12
+ var _parseInstallStringts = /*#__PURE__*/ _interop_require_default(require("./parseInstallString.js"));
13
+ function _interop_require_default(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ function getSpecifier(installString, callback) {
19
+ var _parseInstallString = (0, _parseInstallStringts.default)(installString), name = _parseInstallString.name, version = _parseInstallString.version;
20
+ if (version) return callback(undefined, installString);
21
+ // URL-encode the package name (handles scoped packages: @scope/pkg -> @scope%2Fpkg)
22
+ var encodedName = encodeURIComponent(name).replace(/%40/g, '@');
23
+ (0, _getfilecompat.getContent)("https://registry.npmjs.org/".concat(encodedName, "/latest"), 'utf8', function(err, res) {
24
+ if (err) return callback(err);
25
+ try {
26
+ var _ref;
27
+ var json = JSON.parse((_ref = res === null || res === void 0 ? void 0 : res.content) !== null && _ref !== void 0 ? _ref : 'null');
28
+ callback(undefined, "".concat(name, "@").concat(json.version));
29
+ } catch (err) {
30
+ callback(err);
31
+ }
32
+ });
33
+ }
34
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/node/install-module-linked-compat/src/lib/getSpecifier.ts"],"sourcesContent":["import { getContent } from 'get-file-compat';\nimport type { GetScopedSpecifiedCallback } from '../types.ts';\nimport parseInstallString from './parseInstallString.ts';\n\ninterface JSONPackage {\n version: string;\n}\n\nexport default function getSpecifier(installString: string, callback: GetScopedSpecifiedCallback) {\n const { name, version } = parseInstallString(installString);\n if (version) return callback(undefined, installString);\n\n // URL-encode the package name (handles scoped packages: @scope/pkg -> @scope%2Fpkg)\n const encodedName = encodeURIComponent(name).replace(/%40/g, '@');\n getContent(`https://registry.npmjs.org/${encodedName}/latest`, 'utf8', (err, res) => {\n if (err) return callback(err);\n try {\n const json = JSON.parse(res?.content ?? 'null');\n callback(undefined, `${name}@${(json as JSONPackage).version}`);\n } catch (err) {\n callback(err as Error);\n }\n });\n}\n"],"names":["getSpecifier","installString","callback","parseInstallString","name","version","undefined","encodedName","encodeURIComponent","replace","getContent","err","res","json","JSON","parse","content"],"mappings":";;;;+BAQA;;;eAAwBA;;;6BARG;2EAEI;;;;;;AAMhB,SAASA,aAAaC,aAAqB,EAAEC,QAAoC;IAC9F,IAA0BC,sBAAAA,IAAAA,6BAAkB,EAACF,gBAArCG,OAAkBD,oBAAlBC,MAAMC,UAAYF,oBAAZE;IACd,IAAIA,SAAS,OAAOH,SAASI,WAAWL;IAExC,oFAAoF;IACpF,IAAMM,cAAcC,mBAAmBJ,MAAMK,OAAO,CAAC,QAAQ;IAC7DC,IAAAA,yBAAU,EAAC,AAAC,8BAAyC,OAAZH,aAAY,YAAU,QAAQ,SAACI,KAAKC;QAC3E,IAAID,KAAK,OAAOT,SAASS;QACzB,IAAI;;YACF,IAAME,OAAOC,KAAKC,KAAK,SAACH,gBAAAA,0BAAAA,IAAKI,OAAO,uCAAI;YACxCd,SAASI,WAAW,AAAC,GAAU,OAARF,MAAK,KAAiC,OAA9B,AAACS,KAAqBR,OAAO;QAC9D,EAAE,OAAOM,KAAK;YACZT,SAASS;QACX;IACF;AACF"}
@@ -0,0 +1,2 @@
1
+ import type { InstallCallback } from '../types.js';
2
+ export default function install(specifier: string, dest: string, callback: InstallCallback): void;
@@ -0,0 +1,2 @@
1
+ import type { InstallCallback } from '../types.js';
2
+ export default function install(specifier: string, dest: string, callback: InstallCallback): void;