@vltpkg/vlx 1.0.0-rc.14 → 1.0.0-rc.15
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/infer-name.js +1 -1
- package/dist/infer-name.js.map +1 -1
- package/dist/install.js +1 -1
- package/dist/install.js.map +1 -1
- package/package.json +10 -10
package/dist/infer-name.js
CHANGED
|
@@ -16,7 +16,7 @@ export const inferName = (s, options) => {
|
|
|
16
16
|
.replace(/[^a-zA-Z0-9/]/g, ' ')
|
|
17
17
|
.trim()
|
|
18
18
|
.replace(/ /g, '-')
|
|
19
|
-
.replace('/', '
|
|
19
|
+
.replace('/', '+'), spec.bareSpec, spec.options)
|
|
20
20
|
: spec;
|
|
21
21
|
};
|
|
22
22
|
//# sourceMappingURL=infer-name.js.map
|
package/dist/infer-name.js.map
CHANGED
|
@@ -1 +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('/', '
|
|
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/install.js
CHANGED
|
@@ -30,7 +30,7 @@ export const vlxInstall = async (spec, options, promptFn) => {
|
|
|
30
30
|
.digest('hex')
|
|
31
31
|
.substring(0, 8);
|
|
32
32
|
const xdg = new XDG('vlt/vlx');
|
|
33
|
-
const dir = xdg.data(pkgSpec.name.replace('/', '
|
|
33
|
+
const dir = xdg.data(pkgSpec.name.replace('/', '+') + '-' + hash);
|
|
34
34
|
if (await dirExists(dir)) {
|
|
35
35
|
try {
|
|
36
36
|
return vlxInfo(dir, options);
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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, rm } 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('/', '
|
|
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;AAExD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,IAAmB,EACnB,OAAmB,EACnB,QAAmB,EACD,EAAE;IACpB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAExC,wEAAwE;IACxE,uEAAuE;IACvE,sCAAsC;IACtC,OAAO,GAAG;QACR,GAAG,OAAO;QACV,CAAC,+BAA+B,CAAC,EAAE,QAAQ;KAC5C,CAAA;IACD,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,iBAAiB,CAC9D,OAAO,CACR,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC3B,MAAM,CAAC,KAAK,CAAC;SACb,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAClB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAA;IACjE,IAAI,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,sDAAsD;YACtD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GACN,OAAO,CAAC,GAAG;QACX,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC/D,IAAI,CAAC,EAAE;QAAE,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAEzC,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEnE,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,KAAK;QACX,YAAY,EAAE;YACZ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,QAAQ;SACpC;QACD,GAAG,EAAE;YACH,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC;KACF,CAAA;IAED,MAAM,SAAS,CACb,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,EAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACzC,CAAA;IAED,MAAM,OAAO,CAAC;QACZ,GAAG,OAAO;QACV,WAAW;QACX,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;QAC3B,oDAAoD;QACpD,YAAY,EAAE,GAAG;KAClB,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AACxC,CAAC,CAAA","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, rm } 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 try {\n return vlxInfo(dir, options)\n } catch {\n // If vlxInfo fails, the directory likely contains a broken installation\n // Clean it up and retry the full installation process\n await rm(dir, { recursive: true, force: true })\n }\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 // vlx always run lifecycle scripts for all packages\n allowScripts: '*',\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": "1.0.0-rc.
|
|
4
|
+
"version": "1.0.0-rc.15",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/vltpkg/vltpkg.git",
|
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"path-scurry": "^2.0.1",
|
|
13
13
|
"walk-up-path": "^4.0.0",
|
|
14
|
-
"@vltpkg/cmd-shim": "1.0.0-rc.
|
|
15
|
-
"@vltpkg/error-cause": "1.0.0-rc.
|
|
16
|
-
"@vltpkg/
|
|
17
|
-
"@vltpkg/
|
|
18
|
-
"@vltpkg/package-json": "1.0.0-rc.
|
|
19
|
-
"@vltpkg/rollback-remove": "1.0.0-rc.
|
|
20
|
-
"@vltpkg/spec": "1.0.0-rc.
|
|
21
|
-
"@vltpkg/types": "1.0.0-rc.
|
|
22
|
-
"@vltpkg/xdg": "1.0.0-rc.
|
|
14
|
+
"@vltpkg/cmd-shim": "1.0.0-rc.15",
|
|
15
|
+
"@vltpkg/error-cause": "1.0.0-rc.15",
|
|
16
|
+
"@vltpkg/graph": "1.0.0-rc.15",
|
|
17
|
+
"@vltpkg/package-info": "1.0.0-rc.15",
|
|
18
|
+
"@vltpkg/package-json": "1.0.0-rc.15",
|
|
19
|
+
"@vltpkg/rollback-remove": "1.0.0-rc.15",
|
|
20
|
+
"@vltpkg/spec": "1.0.0-rc.15",
|
|
21
|
+
"@vltpkg/types": "1.0.0-rc.15",
|
|
22
|
+
"@vltpkg/xdg": "1.0.0-rc.15"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@eslint/js": "^9.39.1",
|