@vltpkg/vlx 0.0.0-12 → 0.0.0-14
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/dist/esm/infer-default-executable.d.ts.map +1 -1
- package/dist/esm/infer-default-executable.js +7 -1
- package/dist/esm/infer-default-executable.js.map +1 -1
- package/dist/esm/infer-name.d.ts +13 -0
- package/dist/esm/infer-name.d.ts.map +1 -0
- package/dist/esm/infer-name.js +22 -0
- package/dist/esm/infer-name.js.map +1 -0
- package/dist/esm/install.d.ts +1 -1
- package/dist/esm/install.d.ts.map +1 -1
- package/dist/esm/install.js +3 -4
- package/dist/esm/install.js.map +1 -1
- package/package.json +14 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infer-default-executable.d.ts","sourceRoot":"","sources":["../../src/infer-default-executable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mBAGhC,QAAQ,KAAG,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"infer-default-executable.d.ts","sourceRoot":"","sources":["../../src/infer-default-executable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mBAGhC,QAAQ,KAAG,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAqBxC,CAAA"}
|
|
@@ -6,12 +6,18 @@
|
|
|
6
6
|
export const inferDefaultExecutable = ({ name, bin, }) => {
|
|
7
7
|
if (!bin)
|
|
8
8
|
return undefined;
|
|
9
|
-
|
|
9
|
+
let binName = name?.startsWith('@') ? name.split('/')[1] : name;
|
|
10
10
|
if (!binName)
|
|
11
11
|
return undefined;
|
|
12
12
|
if (typeof bin === 'string') {
|
|
13
13
|
return [binName, bin];
|
|
14
14
|
}
|
|
15
|
+
// if it's exactly one key, that's the one,
|
|
16
|
+
// even if it doesn't match the name
|
|
17
|
+
const keys = Object.keys(bin);
|
|
18
|
+
if (keys.length === 1) {
|
|
19
|
+
binName = keys[0];
|
|
20
|
+
}
|
|
15
21
|
bin = bin[binName];
|
|
16
22
|
if (!bin)
|
|
17
23
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infer-default-executable.js","sourceRoot":"","sources":["../../src/infer-default-executable.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,IAAI,EACJ,GAAG,GACM,EAAgC,EAAE;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,
|
|
1
|
+
{"version":3,"file":"infer-default-executable.js","sourceRoot":"","sources":["../../src/infer-default-executable.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,IAAI,EACJ,GAAG,GACM,EAAgC,EAAE;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,IAAI,OAAO,GAAG,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACvB,CAAC;IAED,2CAA2C;IAC3C,oCAAoC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,GAAI,IAAiB,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IAClB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA","sourcesContent":["import type { Manifest } from '@vltpkg/types'\n\n/**\n * Infer the default binary from a package.\n *\n * Returns `undefined` if it couldn't be determined\n */\nexport const inferDefaultExecutable = ({\n name,\n bin,\n}: Manifest): undefined | [string, string] => {\n if (!bin) return undefined\n\n let binName = name?.startsWith('@') ? name.split('/')[1] : name\n if (!binName) return undefined\n\n if (typeof bin === 'string') {\n return [binName, bin]\n }\n\n // if it's exactly one key, that's the one,\n // even if it doesn't match the name\n const keys = Object.keys(bin)\n if (keys.length === 1) {\n binName = (keys as [string])[0]\n }\n\n bin = bin[binName]\n if (!bin) return undefined\n\n return [binName, bin]\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SpecOptions } from '@vltpkg/spec';
|
|
2
|
+
import { Spec } from '@vltpkg/spec';
|
|
3
|
+
/**
|
|
4
|
+
* If the final spec is unnamed, infer a name by slugifying the bareSpec.
|
|
5
|
+
*
|
|
6
|
+
* This is a bit less "correct" than how install does it, because we don't
|
|
7
|
+
* actually need to get the "true" name from the manifest, we just need
|
|
8
|
+
* something intelligible that works, and will want to avoid the performance
|
|
9
|
+
* hit of having to fetch the manifest a second time, especially for git
|
|
10
|
+
* deps where that can be quite slow.
|
|
11
|
+
*/
|
|
12
|
+
export declare const inferName: (s: Spec | string, options: SpecOptions) => Spec;
|
|
13
|
+
//# sourceMappingURL=infer-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-name.d.ts","sourceRoot":"","sources":["../../src/infer-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,MACjB,IAAI,GAAG,MAAM,WACP,WAAW,KACnB,IAcF,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Spec } from '@vltpkg/spec';
|
|
2
|
+
/**
|
|
3
|
+
* If the final spec is unnamed, infer a name by slugifying the bareSpec.
|
|
4
|
+
*
|
|
5
|
+
* This is a bit less "correct" than how install does it, because we don't
|
|
6
|
+
* actually need to get the "true" name from the manifest, we just need
|
|
7
|
+
* something intelligible that works, and will want to avoid the performance
|
|
8
|
+
* hit of having to fetch the manifest a second time, especially for git
|
|
9
|
+
* deps where that can be quite slow.
|
|
10
|
+
*/
|
|
11
|
+
export const inferName = (s, options) => {
|
|
12
|
+
const spec = typeof s === 'string' ? Spec.parseArgs(s, options) : s;
|
|
13
|
+
const { name } = spec;
|
|
14
|
+
return !name || name === '(unknown)' ?
|
|
15
|
+
Spec.parse(spec.bareSpec
|
|
16
|
+
.replace(/[^a-zA-Z0-9/]/g, ' ')
|
|
17
|
+
.trim()
|
|
18
|
+
.replace(/ /g, '-')
|
|
19
|
+
.replace('/', '§'), spec.bareSpec, spec.options)
|
|
20
|
+
: spec;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=infer-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-name.js","sourceRoot":"","sources":["../../src/infer-name.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,CAAgB,EAChB,OAAoB,EACd,EAAE;IACR,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IACrB,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,QAAQ;aACV,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;aAC9B,IAAI,EAAE;aACN,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;aAClB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EACpB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,OAAO,CACb;QACH,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA","sourcesContent":["import type { SpecOptions } from '@vltpkg/spec'\nimport { Spec } from '@vltpkg/spec'\n\n/**\n * If the final spec is unnamed, infer a name by slugifying the bareSpec.\n *\n * This is a bit less \"correct\" than how install does it, because we don't\n * actually need to get the \"true\" name from the manifest, we just need\n * something intelligible that works, and will want to avoid the performance\n * hit of having to fetch the manifest a second time, especially for git\n * deps where that can be quite slow.\n */\nexport const inferName = (\n s: Spec | string,\n options: SpecOptions,\n): Spec => {\n const spec = typeof s === 'string' ? Spec.parseArgs(s, options) : s\n const { name } = spec\n return !name || name === '(unknown)' ?\n Spec.parse(\n spec.bareSpec\n .replace(/[^a-zA-Z0-9/]/g, ' ')\n .trim()\n .replace(/ /g, '-')\n .replace('/', '§'),\n spec.bareSpec,\n spec.options,\n )\n : spec\n}\n"]}
|
package/dist/esm/install.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAQxC,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI/D;;;GAGG;AACH,eAAO,MAAM,UAAU,SACf,IAAI,GAAG,MAAM,WACV,UAAU,aACR,QAAQ,KAClB,OAAO,CAAC,OAAO,CAyDjB,CAAA"}
|
package/dist/esm/install.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { error } from '@vltpkg/error-cause';
|
|
2
2
|
import { install } from '@vltpkg/graph';
|
|
3
3
|
import { PackageInfoClient } from '@vltpkg/package-info';
|
|
4
|
-
import { Spec } from '@vltpkg/spec';
|
|
5
4
|
import { XDG } from '@vltpkg/xdg';
|
|
6
5
|
import { createHash } from 'node:crypto';
|
|
7
6
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
@@ -9,14 +8,14 @@ import { resolve } from 'node:path';
|
|
|
9
8
|
import { PathScurry } from 'path-scurry';
|
|
10
9
|
import { dirExists } from "./dir-exists.js";
|
|
11
10
|
import { doPrompt } from "./do-prompt.js";
|
|
11
|
+
import { inferName } from "./infer-name.js";
|
|
12
12
|
import { vlxInfo } from "./info.js";
|
|
13
13
|
/**
|
|
14
14
|
* Install a given package spec in the appropriate folder, if it's not
|
|
15
15
|
* already present.
|
|
16
16
|
*/
|
|
17
17
|
export const vlxInstall = async (spec, options, promptFn) => {
|
|
18
|
-
const pkgSpec =
|
|
19
|
-
const { name } = pkgSpec.final;
|
|
18
|
+
const pkgSpec = inferName(spec, options);
|
|
20
19
|
// We always use the cache as much as possible, to prevent unnecessarily
|
|
21
20
|
// waiting to run a command while installing something. The one we used
|
|
22
21
|
// last time is almost certainly fine.
|
|
@@ -43,7 +42,7 @@ export const vlxInstall = async (spec, options, promptFn) => {
|
|
|
43
42
|
const manifest = {
|
|
44
43
|
name: 'vlx',
|
|
45
44
|
dependencies: {
|
|
46
|
-
[name]: resolution.resolved,
|
|
45
|
+
[pkgSpec.name]: resolution.resolved,
|
|
47
46
|
},
|
|
48
47
|
vlx: {
|
|
49
48
|
integrity: resolution.integrity,
|
package/dist/esm/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { install } from '@vltpkg/graph'\nimport { PackageInfoClient } from '@vltpkg/package-info'\nimport type { Spec } from '@vltpkg/spec'\nimport { XDG } from '@vltpkg/xdg'\nimport { createHash } from 'node:crypto'\nimport { mkdir, writeFile } from 'node:fs/promises'\nimport { resolve } from 'node:path'\nimport { PathScurry } from 'path-scurry'\nimport { dirExists } from './dir-exists.ts'\nimport { doPrompt } from './do-prompt.ts'\nimport type { PromptFn, VlxInfo, VlxOptions } from './index.ts'\nimport { inferName } from './infer-name.ts'\nimport { vlxInfo } from './info.ts'\n\n/**\n * Install a given package spec in the appropriate folder, if it's not\n * already present.\n */\nexport const vlxInstall = async (\n spec: Spec | string,\n options: VlxOptions,\n promptFn?: PromptFn,\n): Promise<VlxInfo> => {\n const pkgSpec = inferName(spec, options)\n\n // We always use the cache as much as possible, to prevent unnecessarily\n // waiting to run a command while installing something. The one we used\n // last time is almost certainly fine.\n options = {\n ...options,\n ['stale-while-revalidate-factor']: Infinity,\n }\n const packageInfo = (options.packageInfo = new PackageInfoClient(\n options,\n ))\n\n const resolution = await packageInfo.resolve(pkgSpec, options)\n const hash = createHash('sha512')\n .update(resolution.resolved)\n .digest('hex')\n .substring(0, 8)\n const xdg = new XDG('vlt/vlx')\n const dir = xdg.data(pkgSpec.name.replace('/', '§') + '-' + hash)\n if (await dirExists(dir)) {\n return vlxInfo(dir, options)\n }\n\n const ok =\n options.yes ||\n (await doPrompt(pkgSpec, dir, resolution.resolved, promptFn))\n if (!ok) throw error('Operation aborted')\n\n await mkdir(resolve(dir, 'node_modules/.vlt'), { recursive: true })\n\n const manifest = {\n name: 'vlx',\n dependencies: {\n [pkgSpec.name]: resolution.resolved,\n },\n vlx: {\n integrity: resolution.integrity,\n signatures: resolution.signatures,\n },\n }\n\n await writeFile(\n resolve(dir, 'package.json'),\n JSON.stringify(manifest, null, 2) + '\\n',\n )\n\n await install({\n ...options,\n packageInfo,\n projectRoot: dir,\n monorepo: undefined,\n scurry: new PathScurry(dir),\n })\n\n return vlxInfo(dir, options, manifest)\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vltpkg/vlx",
|
|
3
3
|
"description": "vlt exec management",
|
|
4
|
-
"version": "0.0.0-
|
|
4
|
+
"version": "0.0.0-14",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/vltpkg/vltpkg.git",
|
|
@@ -21,26 +21,26 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"path-scurry": "^2.0.0",
|
|
23
23
|
"walk-up-path": "^4.0.0",
|
|
24
|
-
"@vltpkg/
|
|
25
|
-
"@vltpkg/graph": "0.0.0-
|
|
26
|
-
"@vltpkg/
|
|
27
|
-
"@vltpkg/
|
|
28
|
-
"@vltpkg/package-info": "0.0.0-
|
|
29
|
-
"@vltpkg/
|
|
30
|
-
"@vltpkg/
|
|
31
|
-
"@vltpkg/types": "0.0.0-
|
|
32
|
-
"@vltpkg/xdg": "0.0.0-
|
|
24
|
+
"@vltpkg/error-cause": "0.0.0-14",
|
|
25
|
+
"@vltpkg/graph": "0.0.0-14",
|
|
26
|
+
"@vltpkg/package-json": "0.0.0-14",
|
|
27
|
+
"@vltpkg/cmd-shim": "0.0.0-14",
|
|
28
|
+
"@vltpkg/package-info": "0.0.0-14",
|
|
29
|
+
"@vltpkg/spec": "0.0.0-14",
|
|
30
|
+
"@vltpkg/rollback-remove": "0.0.0-14",
|
|
31
|
+
"@vltpkg/types": "0.0.0-14",
|
|
32
|
+
"@vltpkg/xdg": "0.0.0-14"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@eslint/js": "^9.
|
|
36
|
-
"@types/node": "^22.15.
|
|
37
|
-
"eslint": "^9.
|
|
35
|
+
"@eslint/js": "^9.28.0",
|
|
36
|
+
"@types/node": "^22.15.29",
|
|
37
|
+
"eslint": "^9.28.0",
|
|
38
38
|
"prettier": "^3.5.3",
|
|
39
39
|
"tap": "^21.1.0",
|
|
40
40
|
"tshy": "^3.0.2",
|
|
41
41
|
"typedoc": "~0.27.9",
|
|
42
42
|
"typescript": "5.7.3",
|
|
43
|
-
"typescript-eslint": "^8.
|
|
43
|
+
"typescript-eslint": "^8.33.1"
|
|
44
44
|
},
|
|
45
45
|
"license": "BSD-2-Clause-Patent",
|
|
46
46
|
"engines": {
|