@vltpkg/vlx 1.0.0-rc.1 → 1.0.0-rc.11
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/add-to-path.d.ts.map +1 -0
- package/dist/add-to-path.js.map +1 -0
- package/dist/delete.d.ts.map +1 -0
- package/dist/delete.js.map +1 -0
- package/dist/dir-exists.d.ts.map +1 -0
- package/dist/dir-exists.js.map +1 -0
- package/dist/do-prompt.d.ts.map +1 -0
- package/dist/do-prompt.js.map +1 -0
- package/dist/find-executable.d.ts.map +1 -0
- package/dist/find-executable.js.map +1 -0
- package/dist/find-package.d.ts.map +1 -0
- package/dist/find-package.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/infer-default-executable.d.ts.map +1 -0
- package/dist/infer-default-executable.js.map +1 -0
- package/dist/infer-name.d.ts.map +1 -0
- package/dist/infer-name.js.map +1 -0
- package/dist/info.d.ts.map +1 -0
- package/dist/info.js.map +1 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js.map +1 -0
- package/dist/list.d.ts.map +1 -0
- package/dist/list.js.map +1 -0
- package/dist/mount-path.d.ts.map +1 -0
- package/dist/mount-path.js.map +1 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js.map +1 -0
- package/package.json +20 -34
- package/dist/esm/add-to-path.d.ts.map +0 -1
- package/dist/esm/add-to-path.js.map +0 -1
- package/dist/esm/delete.d.ts.map +0 -1
- package/dist/esm/delete.js.map +0 -1
- package/dist/esm/dir-exists.d.ts.map +0 -1
- package/dist/esm/dir-exists.js.map +0 -1
- package/dist/esm/do-prompt.d.ts.map +0 -1
- package/dist/esm/do-prompt.js.map +0 -1
- package/dist/esm/find-executable.d.ts.map +0 -1
- package/dist/esm/find-executable.js.map +0 -1
- package/dist/esm/find-package.d.ts.map +0 -1
- package/dist/esm/find-package.js.map +0 -1
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/infer-default-executable.d.ts.map +0 -1
- package/dist/esm/infer-default-executable.js.map +0 -1
- package/dist/esm/infer-name.d.ts.map +0 -1
- package/dist/esm/infer-name.js.map +0 -1
- package/dist/esm/info.d.ts.map +0 -1
- package/dist/esm/info.js.map +0 -1
- package/dist/esm/install.d.ts.map +0 -1
- package/dist/esm/install.js.map +0 -1
- package/dist/esm/list.d.ts.map +0 -1
- package/dist/esm/list.js.map +0 -1
- package/dist/esm/mount-path.d.ts.map +0 -1
- package/dist/esm/mount-path.js.map +0 -1
- package/dist/esm/package.json +0 -3
- package/dist/esm/resolve.d.ts.map +0 -1
- package/dist/esm/resolve.js.map +0 -1
- /package/dist/{esm/add-to-path.d.ts → add-to-path.d.ts} +0 -0
- /package/dist/{esm/add-to-path.js → add-to-path.js} +0 -0
- /package/dist/{esm/delete.d.ts → delete.d.ts} +0 -0
- /package/dist/{esm/delete.js → delete.js} +0 -0
- /package/dist/{esm/dir-exists.d.ts → dir-exists.d.ts} +0 -0
- /package/dist/{esm/dir-exists.js → dir-exists.js} +0 -0
- /package/dist/{esm/do-prompt.d.ts → do-prompt.d.ts} +0 -0
- /package/dist/{esm/do-prompt.js → do-prompt.js} +0 -0
- /package/dist/{esm/find-executable.d.ts → find-executable.d.ts} +0 -0
- /package/dist/{esm/find-executable.js → find-executable.js} +0 -0
- /package/dist/{esm/find-package.d.ts → find-package.d.ts} +0 -0
- /package/dist/{esm/find-package.js → find-package.js} +0 -0
- /package/dist/{esm/index.d.ts → index.d.ts} +0 -0
- /package/dist/{esm/index.js → index.js} +0 -0
- /package/dist/{esm/infer-default-executable.d.ts → infer-default-executable.d.ts} +0 -0
- /package/dist/{esm/infer-default-executable.js → infer-default-executable.js} +0 -0
- /package/dist/{esm/infer-name.d.ts → infer-name.d.ts} +0 -0
- /package/dist/{esm/infer-name.js → infer-name.js} +0 -0
- /package/dist/{esm/info.d.ts → info.d.ts} +0 -0
- /package/dist/{esm/info.js → info.js} +0 -0
- /package/dist/{esm/install.d.ts → install.d.ts} +0 -0
- /package/dist/{esm/install.js → install.js} +0 -0
- /package/dist/{esm/list.d.ts → list.d.ts} +0 -0
- /package/dist/{esm/list.js → list.js} +0 -0
- /package/dist/{esm/mount-path.d.ts → mount-path.d.ts} +0 -0
- /package/dist/{esm/mount-path.js → mount-path.js} +0 -0
- /package/dist/{esm/resolve.d.ts → resolve.d.ts} +0 -0
- /package/dist/{esm/resolve.js → resolve.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-to-path.d.ts","sourceRoot":"","sources":["../src/add-to-path.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,YAAa,MAAM,SAUxC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-to-path.js","sourceRoot":"","sources":["../src/add-to-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG;QACjB,GAAG,IAAI,GAAG,CACR,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,KAAK,CACrD,SAAS,CACV,CACF;KACF;SACE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,IAAI,CAAC,SAAS,CAAC,CAAA;AACpB,CAAC,CAAA","sourcesContent":["import { delimiter } from 'node:path'\n\nexport const addToPATH = (newPath: string) => {\n process.env.PATH = [\n ...new Set(\n `${newPath}${delimiter}${process.env.PATH ?? ''}`.split(\n delimiter,\n ),\n ),\n ]\n .filter(p => !!p)\n .join(delimiter)\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../src/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAY5C,eAAO,MAAM,SAAS,SACd,MAAM,EAAE,WACL,cAAc,WACd,UAAU,sBAqBpB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../src/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,IAAY,EAAW,EAAE;IACzD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;IACnC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,IAAc,EACd,OAAuB,EACvB,OAAmB,EACnB,EAAE;IACF,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC;QAChC,2CAA2C;QAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YACnB,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;YACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC3B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA","sourcesContent":["import type { RollbackRemove } from '@vltpkg/rollback-remove'\nimport { basename } from 'node:path'\nimport type { VlxOptions } from './index.ts'\nimport { vlxInfo } from './info.ts'\nimport { vlxList } from './list.ts'\n\nconst keyMatch = (keys: string[], path: string): boolean => {\n if (!keys.length) return true\n for (const k of keys) {\n if (path.includes(k)) return true\n }\n return false\n}\n\nexport const vlxDelete = async (\n keys: string[],\n remover: RollbackRemove,\n options: VlxOptions,\n) => {\n const removed: string[] = []\n const promises: Promise<void>[] = []\n for await (const p of vlxList()) {\n // if the request for info fails, delete it\n const key = basename(p)\n try {\n vlxInfo(p, options)\n if (keyMatch(keys, key)) {\n promises.push(remover.rm(p))\n removed.push(key)\n }\n } catch {\n // delete if no good\n promises.push(remover.rm(p))\n removed.push(key)\n }\n }\n await Promise.all(promises)\n return removed\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dir-exists.d.ts","sourceRoot":"","sources":["../src/dir-exists.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,SAAgB,MAAM,KAAG,OAAO,CAAC,OAAO,CAI3D,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dir-exists.js","sourceRoot":"","sources":["../src/dir-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE,CAChE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EACtB,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA","sourcesContent":["import { stat } from 'node:fs/promises'\n\nexport const dirExists = async (path: string): Promise<boolean> =>\n stat(path).then(\n st => st.isDirectory(),\n () => false,\n )\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"do-prompt.d.ts","sourceRoot":"","sources":["../src/do-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,eAAO,MAAM,QAAQ,SACb,IAAI,OACL,MAAM,cACC,MAAM,OACb,QAAQ,KACZ,OAAO,CAAC,OAAO,CAMjB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"do-prompt.js","sourceRoot":"","sources":["../src/do-prompt.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,IAAU,EACV,GAAW,EACX,UAAkB,EAClB,EAAa,EACK,EAAE;IACpB,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;SAC7C,IAAI,EAAE;SACN,WAAW,EAAE,CAAA;IAChB,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC1C,CAAC,CAAA","sourcesContent":["import type { Spec } from '@vltpkg/spec'\nimport type { PromptFn } from './index.ts'\n\nexport const doPrompt = async (\n spec: Spec,\n dir: string,\n resolution: string,\n fn?: PromptFn,\n): Promise<boolean> => {\n if (!fn) return true\n const result = (await fn(spec, dir, resolution))\n .trim()\n .toLowerCase()\n return !result || result.startsWith('y')\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-executable.d.ts","sourceRoot":"","sources":["../src/find-executable.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SACnB,MAAM,eACC,MAAM,gCASpB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-executable.js","sourceRoot":"","sources":["../src/find-executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,IAAY,EACZ,WAAmB,EACnB,EAAE;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,mBAAmB,CACnC,OAAO,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,CACzC,CAAA;QACD,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;YAAE,MAAK;IAC/C,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { findCmdShimIfExists } from '@vltpkg/cmd-shim'\nimport { relative, resolve } from 'node:path'\nimport { walkUp } from 'walk-up-path'\n\n/**\n * Find the executable in a node_modules/.bin folder between the cwd\n * and the projectRoot.\n *\n * Returns `[executable, target]` showing the package origin.\n */\nexport const findExecutable = async (\n arg0: string,\n projectRoot: string,\n) => {\n for (const path of walkUp(process.cwd())) {\n const bin = await findCmdShimIfExists(\n resolve(path, 'node_modules/.bin', arg0),\n )\n if (bin) return bin[0]\n if (relative(path, projectRoot) === '') break\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-package.d.ts","sourceRoot":"","sources":["../src/find-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIvD,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,YAAY,CAAA;AAWtD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,SAChB,MAAM,eACC,MAAM,eACN,WAAW,KACvB,OAAO,CAAC,SAAS,GAAG,OAAO,CAmB7B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-package.js","sourceRoot":"","sources":["../src/find-package.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,WAAwB,EAAE,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,IAAY,EACZ,WAAmB,EACnB,WAAwB,EACM,EAAE;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;YACrC,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,QAAuB,CAAA;YAC5C,OAAO;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACd,GAAG,GAAG;aACP,CAAA;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;YAAE,MAAK;IAC/C,CAAC;AACH,CAAC,CAAA","sourcesContent":["import type { PackageJson } from '@vltpkg/package-json'\nimport { relative, resolve } from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport { walkUp } from 'walk-up-path'\nimport type { VlxInfo, VlxManifest } from './index.ts'\nimport { inferDefaultExecutable } from './infer-default-executable.ts'\n\nconst maybeManifest = (p: string, packageJson: PackageJson) => {\n try {\n return packageJson.read(p)\n } catch {\n return {}\n }\n}\n\n/**\n * Find the nearest package in a node_modules folder between the cwd\n * and the projectRoot. This should only be used to look for local packages.\n * Note that the `resolved` value in the VlxInfo object is a bit useless,\n * as we didn't install anything and so don't need to do a full resolution.\n */\nexport const findPackage = async (\n name: string,\n projectRoot: string,\n packageJson: PackageJson,\n): Promise<undefined | VlxInfo> => {\n for (const path of walkUp(process.cwd())) {\n const p = resolve(path, 'node_modules', name)\n const manifest = maybeManifest(path, packageJson)\n try {\n const m = packageJson.read(p, { reload: true })\n const bin = inferDefaultExecutable(m)\n const { vlx = {} } = manifest as VlxManifest\n return {\n path,\n name,\n version: m.version,\n resolved: String(pathToFileURL(p)),\n arg0: bin?.[0],\n ...vlx,\n }\n } catch {}\n if (relative(path, projectRoot) === '') break\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EACV,wBAAwB,EACxB,+BAA+B,EAC/B,UAAU,EACX,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElE,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,SAAS,CAAC,EAAE,SAAS,CAAA;QACrB,UAAU,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;KACtC,CAAA;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,CACrB,OAAO,EAAE,IAAI,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,8CAA8C;AAC9C,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG;IACzC,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;IAEZ,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAClC,wBAAwB,GACxB,+BAA+B,GAC/B,cAAc,GAAG;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAEH,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8DA,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA","sourcesContent":["import type { InstallOptions } from '@vltpkg/graph'\nimport type {\n PackageInfoClientOptions,\n PackageInfoClientRequestOptions,\n Resolution,\n} from '@vltpkg/package-info'\nimport type { Spec, SpecOptions } from '@vltpkg/spec'\nimport type { Integrity, NormalizedManifest } from '@vltpkg/types'\n\nexport type VlxManifest = NormalizedManifest & {\n vlx?: {\n integrity?: Integrity\n signatures?: Resolution['signatures']\n }\n}\n\n/**\n * Provide a promptFn which is `()=>Promise<string>` if you want to confirm\n * before installing things. If it returns a string that does not start with\n * the letter 'y', then operation will be aborted. If not provided, consent is\n * assumed.\n */\nexport type PromptFn = (\n pkgSpec: Spec,\n path: string,\n resolution: string,\n) => Promise<string>\n\n/** The info about a given vlx installation */\nexport type VlxInfo = VlxManifest['vlx'] & {\n /** name of the package that is being run */\n name: string\n\n /** version of the package being run */\n version?: string\n\n /**\n * path to the synthetic project for non-local installs, or to the\n * current projectRoot if the resolution is local.\n */\n path: string\n\n /**\n * resolution of the package installed, for non-local installs,\n * or a file URL into the node_modules for project local installs.\n */\n resolved: string\n\n /**\n * Full path to the inferred default binary for the dependency if it exists.\n */\n arg0?: string\n}\n\nexport type VlxOptions = SpecOptions &\n PackageInfoClientOptions &\n PackageInfoClientRequestOptions &\n InstallOptions & {\n package?: string\n yes?: boolean\n }\n\nexport { vlxDelete as delete } from './delete.ts'\nexport { vlxInfo as info } from './info.ts'\nexport { vlxInstall as install } from './install.ts'\nexport { vlxList as list } from './list.ts'\nexport { vlxResolve as resolve } from './resolve.ts'\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-default-executable.d.ts","sourceRoot":"","sources":["../src/infer-default-executable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mBAGhC,kBAAkB,KAAG,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAiBlD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-default-executable.js","sourceRoot":"","sources":["../src/infer-default-executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,IAAI,EACJ,GAAG,GACgB,EAAgC,EAAE;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,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,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA","sourcesContent":["import { parseScope } from '@vltpkg/types'\nimport type { NormalizedManifest } 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}: NormalizedManifest): undefined | [string, string] => {\n if (!bin) return undefined\n\n let [, binName] = parseScope(name ?? '')\n if (!binName) return undefined\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 const res = bin[binName]\n if (!res) return undefined\n\n return [binName, res]\n}\n"]}
|
|
@@ -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 @@
|
|
|
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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD,OAAO,KAAK,EAAE,OAAO,EAAe,UAAU,EAAE,MAAM,YAAY,CAAA;AAKlE,eAAO,MAAM,OAAO,SACZ,MAAM,WACH,UAAU,aACR,kBAAkB,KAC5B,OA8BF,CAAA"}
|
package/dist/info.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,IAAY,EACZ,OAAmB,EACnB,QAA6B,EACpB,EAAE;IACX,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE5B,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;QAC/B,QAAQ,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAA;QAEtC,8DAA8D;QAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;YAC7C,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAChD,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAA;YACtC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,EAAE,GAAG,EAAE,GAAG,QAAuB,CAAA;YACvC,OAAO;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,QAAQ;gBACR,IAAI;gBACJ,GAAG,GAAG;aACP,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,MAAM,KAAK,CAAC,+BAA+B,EAAE,EAAW,CAAC,CAAA;IAC3D,CAAC;IACD,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAA;AAC9C,CAAC,CAAA","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport type { NormalizedManifest } from '@vltpkg/types'\nimport { XDG } from '@vltpkg/xdg'\nimport { resolve } from 'node:path'\nimport type { VlxInfo, VlxManifest, VlxOptions } from './index.ts'\nimport { inferDefaultExecutable } from './infer-default-executable.ts'\n\nimport { mountPath } from './mount-path.ts'\n\nexport const vlxInfo = (\n path: string,\n options: VlxOptions,\n manifest?: NormalizedManifest,\n): VlxInfo => {\n const root = new XDG('vlt/vlx').data()\n path = mountPath(root, path)\n\n try {\n // do not allow it to traverse up or read arbitrary paths\n const { packageJson } = options\n manifest ??= packageJson.read(path)\n const { dependencies = {} } = manifest\n\n // every one of these has exactly one dep, on the resolved url\n for (const [name, resolved] of Object.entries(dependencies)) {\n const p = resolve(path, 'node_modules', name)\n const pj = packageJson.read(p, { reload: true })\n const def = inferDefaultExecutable(pj)\n const arg0 = def?.[0]\n const { vlx } = manifest as VlxManifest\n return {\n path,\n name,\n version: pj.version,\n resolved,\n arg0,\n ...vlx,\n }\n }\n } catch (er) {\n throw error('Could not get vlx information', er as Error)\n }\n throw error('Could not get vlx information')\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
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,CAiEjB,CAAA"}
|
|
@@ -0,0 +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('/', '§') + '-' + 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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAIA,wBAAuB,OAAO,0CAM7B"}
|
package/dist/list.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../src/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;IACtC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;AACH,CAAC","sourcesContent":["import { XDG } from '@vltpkg/xdg'\nimport { opendir } from 'node:fs/promises'\nimport { resolve } from 'node:path'\n\nexport async function* vlxList() {\n const path = new XDG('vlt/vlx').data()\n const dir = await opendir(path)\n for await (const dirent of dir) {\n yield resolve(path, dirent.name)\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount-path.d.ts","sourceRoot":"","sources":["../src/mount-path.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAU,MAAM,QAAQ,MAAM,KAAG,MAItD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount-path.js","sourceRoot":"","sources":["../src/mount-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE;IAC9D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IACjB,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACjE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AACpC,CAAC,CAAA","sourcesContent":["import { join } from 'node:path'\n\n/**\n * Prevent `vlx exec-cache info/delete/ls` from reaching out of its\n * safe little sandbox.\n */\nexport const mountPath = (root: string, path: string): string => {\n path = join(path)\n path = path.startsWith(root) ? path.substring(root.length) : path\n return join(root, join('/', path))\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAW,UAAU,EAAE,MAAM,YAAY,CAAA;AAG/D;;;;;GAKG;AACH,eAAO,MAAM,UAAU,gBACR,MAAM,EAAE,WACZ,UAAU,aACR,QAAQ,KAClB,OAAO,CAAC,SAAS,GAAG,MAAM,CA6E5B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { Spec } from '@vltpkg/spec'\nimport { resolve } from 'node:path'\nimport { addToPATH } from './add-to-path.ts'\nimport { findExecutable } from './find-executable.ts'\nimport { findPackage } from './find-package.ts'\nimport type { PromptFn, VlxInfo, VlxOptions } from './index.ts'\nimport { vlxInstall } from './install.ts'\n\n/**\n * Figure out the `arg0` to use for an exec command.\n *\n * If `undefined` is returned, then the caller should spawn an interactive\n * shell, or in multi-workspace mode, raise an error.\n */\nexport const vlxResolve = async (\n positionals: string[],\n options: VlxOptions,\n promptFn?: PromptFn,\n): Promise<undefined | string> => {\n const noArgs = positionals.length === 0\n let arg0 = positionals[0]\n let pkgOption = options.package\n const { projectRoot, packageJson } = options\n\n if (!pkgOption) {\n // can come from any package\n if (!arg0) {\n // caller will run interactive shell\n return undefined\n }\n\n const found = await findExecutable(arg0, projectRoot)\n // if found locally, then that's the bin, whatever the package is\n // since no package option was provided anyway.\n if (found) return found\n // ok, not local, might have to install something.\n // treat the arg0 as a package specifier\n pkgOption = arg0\n arg0 = undefined\n }\n\n let pkgTarget: undefined | VlxInfo = undefined\n\n if (pkgOption) {\n // check for local option, otherwise install in data dir we can\n // ONLY do the local option if the spec is a simple name. otherwise\n // it's too complicated to know if it's a match, especially in this\n // world of multiple registries and such, and it's easy enough to\n // just install it externally.\n const pkgSpec = Spec.parseArgs(pkgOption, options)\n const { name, bareSpec } = pkgSpec.final\n // if it's just a name, we can use the local version\n if (!bareSpec) {\n pkgTarget = await findPackage(name, projectRoot, packageJson)\n }\n pkgTarget ??= await vlxInstall(pkgSpec, options, promptFn)\n }\n\n if (pkgTarget) {\n addToPATH(resolve(pkgTarget.path, 'node_modules/.bin'))\n // if we now have a pkgTarget, and we did not have any arguments, then\n // the user did something like `vlx --package=foo`, but didn't give us\n // a command. In that case, we add the relevant exec-cache .bin folder to\n // the PATH env, and let the caller invoke an interactive shell.\n if (noArgs) return undefined\n }\n\n // now if we had a package option, then pkgTarget is set\n // if arg0 isn't set, then we need to infer from the manifest\n // This is like doing `vlx foo@version`, where we treat arg0\n // as the package option. A default exec *must* be inferred then.\n if (!arg0) {\n /* c8 ignore start - impossible, case already handled */\n if (!pkgTarget) {\n throw error('Must supply a --package option and/or arguments', {\n code: 'EUSAGE',\n })\n }\n /* c8 ignore stop */\n\n // infer arg0 from the manifst found at pkgTarget[1]\n arg0 = pkgTarget.arg0\n if (!arg0) {\n const { name, version, bin } = packageJson.read(\n resolve(pkgTarget.path, 'node_modules', pkgTarget.name),\n )\n throw error('Package executable could not be inferred', {\n name,\n version,\n found: bin,\n })\n }\n }\n\n return arg0\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,64 +1,51 @@
|
|
|
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.11",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/vltpkg/vltpkg.git",
|
|
8
8
|
"directory": "src/vlx"
|
|
9
9
|
},
|
|
10
10
|
"author": "vlt technology inc. <support@vlt.sh> (http://vlt.sh)",
|
|
11
|
-
"tshy": {
|
|
12
|
-
"selfLink": false,
|
|
13
|
-
"liveDev": true,
|
|
14
|
-
"dialects": [
|
|
15
|
-
"esm"
|
|
16
|
-
],
|
|
17
|
-
"exports": {
|
|
18
|
-
"./package.json": "./package.json",
|
|
19
|
-
".": "./src/index.ts"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
11
|
"dependencies": {
|
|
23
|
-
"path-scurry": "^2.0.
|
|
12
|
+
"path-scurry": "^2.0.1",
|
|
24
13
|
"walk-up-path": "^4.0.0",
|
|
25
|
-
"@vltpkg/
|
|
26
|
-
"@vltpkg/
|
|
27
|
-
"@vltpkg/
|
|
28
|
-
"@vltpkg/package-json": "1.0.0-rc.
|
|
29
|
-
"@vltpkg/
|
|
30
|
-
"@vltpkg/
|
|
31
|
-
"@vltpkg/
|
|
32
|
-
"@vltpkg/
|
|
33
|
-
"@vltpkg/
|
|
14
|
+
"@vltpkg/error-cause": "1.0.0-rc.11",
|
|
15
|
+
"@vltpkg/cmd-shim": "1.0.0-rc.11",
|
|
16
|
+
"@vltpkg/graph": "1.0.0-rc.11",
|
|
17
|
+
"@vltpkg/package-json": "1.0.0-rc.11",
|
|
18
|
+
"@vltpkg/rollback-remove": "1.0.0-rc.11",
|
|
19
|
+
"@vltpkg/package-info": "1.0.0-rc.11",
|
|
20
|
+
"@vltpkg/spec": "1.0.0-rc.11",
|
|
21
|
+
"@vltpkg/types": "1.0.0-rc.11",
|
|
22
|
+
"@vltpkg/xdg": "1.0.0-rc.11"
|
|
34
23
|
},
|
|
35
24
|
"devDependencies": {
|
|
36
|
-
"@eslint/js": "^9.
|
|
37
|
-
"@types/node": "^22.
|
|
38
|
-
"eslint": "^9.
|
|
39
|
-
"prettier": "^3.
|
|
40
|
-
"tap": "^21.
|
|
41
|
-
"tshy": "^3.0.2",
|
|
25
|
+
"@eslint/js": "^9.39.1",
|
|
26
|
+
"@types/node": "^22.19.2",
|
|
27
|
+
"eslint": "^9.39.1",
|
|
28
|
+
"prettier": "^3.7.4",
|
|
29
|
+
"tap": "^21.5.0",
|
|
42
30
|
"typedoc": "~0.27.9",
|
|
43
31
|
"typescript": "5.7.3",
|
|
44
|
-
"typescript-eslint": "^8.
|
|
32
|
+
"typescript-eslint": "^8.49.0"
|
|
45
33
|
},
|
|
46
34
|
"license": "BSD-2-Clause-Patent",
|
|
47
35
|
"engines": {
|
|
48
|
-
"node": ">=22"
|
|
36
|
+
"node": ">=22.9.0"
|
|
49
37
|
},
|
|
50
38
|
"tap": {
|
|
51
39
|
"extends": "../../tap-config.yaml"
|
|
52
40
|
},
|
|
53
41
|
"prettier": "../../.prettierrc.js",
|
|
54
|
-
"module": "./dist/
|
|
42
|
+
"module": "./dist/index.js",
|
|
55
43
|
"type": "module",
|
|
56
44
|
"exports": {
|
|
57
45
|
"./package.json": "./package.json",
|
|
58
46
|
".": {
|
|
59
47
|
"import": {
|
|
60
|
-
"
|
|
61
|
-
"default": "./dist/esm/index.js"
|
|
48
|
+
"default": "./dist/index.js"
|
|
62
49
|
}
|
|
63
50
|
}
|
|
64
51
|
},
|
|
@@ -73,7 +60,6 @@
|
|
|
73
60
|
"snap": "tap",
|
|
74
61
|
"test": "tap",
|
|
75
62
|
"posttest": "tsc --noEmit",
|
|
76
|
-
"tshy": "tshy",
|
|
77
63
|
"typecheck": "tsc --noEmit"
|
|
78
64
|
}
|
|
79
65
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-to-path.d.ts","sourceRoot":"","sources":["../../src/add-to-path.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,YAAa,MAAM,SAUxC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-to-path.js","sourceRoot":"","sources":["../../src/add-to-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;IAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG;QACjB,GAAG,IAAI,GAAG,CACR,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,KAAK,CACrD,SAAS,CACV,CACF;KACF;SACE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,IAAI,CAAC,SAAS,CAAC,CAAA;AACpB,CAAC,CAAA","sourcesContent":["import { delimiter } from 'node:path'\n\nexport const addToPATH = (newPath: string) => {\n process.env.PATH = [\n ...new Set(\n `${newPath}${delimiter}${process.env.PATH ?? ''}`.split(\n delimiter,\n ),\n ),\n ]\n .filter(p => !!p)\n .join(delimiter)\n}\n"]}
|
package/dist/esm/delete.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAY5C,eAAO,MAAM,SAAS,SACd,MAAM,EAAE,WACL,cAAc,WACd,UAAU,sBAqBpB,CAAA"}
|
package/dist/esm/delete.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,IAAY,EAAW,EAAE;IACzD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;IACnC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,IAAc,EACd,OAAuB,EACvB,OAAmB,EACnB,EAAE;IACF,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAoB,EAAE,CAAA;IACpC,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,EAAE,CAAC;QAChC,2CAA2C;QAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YACnB,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;YACpB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC3B,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA","sourcesContent":["import type { RollbackRemove } from '@vltpkg/rollback-remove'\nimport { basename } from 'node:path'\nimport type { VlxOptions } from './index.ts'\nimport { vlxInfo } from './info.ts'\nimport { vlxList } from './list.ts'\n\nconst keyMatch = (keys: string[], path: string): boolean => {\n if (!keys.length) return true\n for (const k of keys) {\n if (path.includes(k)) return true\n }\n return false\n}\n\nexport const vlxDelete = async (\n keys: string[],\n remover: RollbackRemove,\n options: VlxOptions,\n) => {\n const removed: string[] = []\n const promises: Promise<void>[] = []\n for await (const p of vlxList()) {\n // if the request for info fails, delete it\n const key = basename(p)\n try {\n vlxInfo(p, options)\n if (keyMatch(keys, key)) {\n promises.push(remover.rm(p))\n removed.push(key)\n }\n } catch {\n // delete if no good\n promises.push(remover.rm(p))\n removed.push(key)\n }\n }\n await Promise.all(promises)\n return removed\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dir-exists.d.ts","sourceRoot":"","sources":["../../src/dir-exists.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,SAAgB,MAAM,KAAG,OAAO,CAAC,OAAO,CAI3D,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dir-exists.js","sourceRoot":"","sources":["../../src/dir-exists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE,CAChE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EACtB,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA","sourcesContent":["import { stat } from 'node:fs/promises'\n\nexport const dirExists = async (path: string): Promise<boolean> =>\n stat(path).then(\n st => st.isDirectory(),\n () => false,\n )\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"do-prompt.d.ts","sourceRoot":"","sources":["../../src/do-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,eAAO,MAAM,QAAQ,SACb,IAAI,OACL,MAAM,cACC,MAAM,OACb,QAAQ,KACZ,OAAO,CAAC,OAAO,CAMjB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"do-prompt.js","sourceRoot":"","sources":["../../src/do-prompt.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,IAAU,EACV,GAAW,EACX,UAAkB,EAClB,EAAa,EACK,EAAE;IACpB,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;SAC7C,IAAI,EAAE;SACN,WAAW,EAAE,CAAA;IAChB,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC1C,CAAC,CAAA","sourcesContent":["import type { Spec } from '@vltpkg/spec'\nimport type { PromptFn } from './index.ts'\n\nexport const doPrompt = async (\n spec: Spec,\n dir: string,\n resolution: string,\n fn?: PromptFn,\n): Promise<boolean> => {\n if (!fn) return true\n const result = (await fn(spec, dir, resolution))\n .trim()\n .toLowerCase()\n return !result || result.startsWith('y')\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-executable.d.ts","sourceRoot":"","sources":["../../src/find-executable.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SACnB,MAAM,eACC,MAAM,gCASpB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-executable.js","sourceRoot":"","sources":["../../src/find-executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,IAAY,EACZ,WAAmB,EACnB,EAAE;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,mBAAmB,CACnC,OAAO,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC,CACzC,CAAA;QACD,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;YAAE,MAAK;IAC/C,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { findCmdShimIfExists } from '@vltpkg/cmd-shim'\nimport { relative, resolve } from 'node:path'\nimport { walkUp } from 'walk-up-path'\n\n/**\n * Find the executable in a node_modules/.bin folder between the cwd\n * and the projectRoot.\n *\n * Returns `[executable, target]` showing the package origin.\n */\nexport const findExecutable = async (\n arg0: string,\n projectRoot: string,\n) => {\n for (const path of walkUp(process.cwd())) {\n const bin = await findCmdShimIfExists(\n resolve(path, 'node_modules/.bin', arg0),\n )\n if (bin) return bin[0]\n if (relative(path, projectRoot) === '') break\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-package.d.ts","sourceRoot":"","sources":["../../src/find-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIvD,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,YAAY,CAAA;AAWtD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,SAChB,MAAM,eACC,MAAM,eACN,WAAW,KACvB,OAAO,CAAC,SAAS,GAAG,OAAO,CAmB7B,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-package.js","sourceRoot":"","sources":["../../src/find-package.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,WAAwB,EAAE,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,IAAY,EACZ,WAAmB,EACnB,WAAwB,EACM,EAAE;IAChC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,MAAM,GAAG,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAA;YACrC,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,QAAuB,CAAA;YAC5C,OAAO;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBACd,GAAG,GAAG;aACP,CAAA;QACH,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;YAAE,MAAK;IAC/C,CAAC;AACH,CAAC,CAAA","sourcesContent":["import type { PackageJson } from '@vltpkg/package-json'\nimport { relative, resolve } from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport { walkUp } from 'walk-up-path'\nimport type { VlxInfo, VlxManifest } from './index.ts'\nimport { inferDefaultExecutable } from './infer-default-executable.ts'\n\nconst maybeManifest = (p: string, packageJson: PackageJson) => {\n try {\n return packageJson.read(p)\n } catch {\n return {}\n }\n}\n\n/**\n * Find the nearest package in a node_modules folder between the cwd\n * and the projectRoot. This should only be used to look for local packages.\n * Note that the `resolved` value in the VlxInfo object is a bit useless,\n * as we didn't install anything and so don't need to do a full resolution.\n */\nexport const findPackage = async (\n name: string,\n projectRoot: string,\n packageJson: PackageJson,\n): Promise<undefined | VlxInfo> => {\n for (const path of walkUp(process.cwd())) {\n const p = resolve(path, 'node_modules', name)\n const manifest = maybeManifest(path, packageJson)\n try {\n const m = packageJson.read(p, { reload: true })\n const bin = inferDefaultExecutable(m)\n const { vlx = {} } = manifest as VlxManifest\n return {\n path,\n name,\n version: m.version,\n resolved: String(pathToFileURL(p)),\n arg0: bin?.[0],\n ...vlx,\n }\n } catch {}\n if (relative(path, projectRoot) === '') break\n }\n}\n"]}
|
package/dist/esm/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EACV,wBAAwB,EACxB,+BAA+B,EAC/B,UAAU,EACX,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElE,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,SAAS,CAAC,EAAE,SAAS,CAAA;QACrB,UAAU,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;KACtC,CAAA;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,CACrB,OAAO,EAAE,IAAI,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,8CAA8C;AAC9C,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG;IACzC,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAA;IAEZ,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAClC,wBAAwB,GACxB,+BAA+B,GAC/B,cAAc,GAAG;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAEH,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA8DA,OAAO,EAAE,SAAS,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA","sourcesContent":["import type { InstallOptions } from '@vltpkg/graph'\nimport type {\n PackageInfoClientOptions,\n PackageInfoClientRequestOptions,\n Resolution,\n} from '@vltpkg/package-info'\nimport type { Spec, SpecOptions } from '@vltpkg/spec'\nimport type { Integrity, NormalizedManifest } from '@vltpkg/types'\n\nexport type VlxManifest = NormalizedManifest & {\n vlx?: {\n integrity?: Integrity\n signatures?: Resolution['signatures']\n }\n}\n\n/**\n * Provide a promptFn which is `()=>Promise<string>` if you want to confirm\n * before installing things. If it returns a string that does not start with\n * the letter 'y', then operation will be aborted. If not provided, consent is\n * assumed.\n */\nexport type PromptFn = (\n pkgSpec: Spec,\n path: string,\n resolution: string,\n) => Promise<string>\n\n/** The info about a given vlx installation */\nexport type VlxInfo = VlxManifest['vlx'] & {\n /** name of the package that is being run */\n name: string\n\n /** version of the package being run */\n version?: string\n\n /**\n * path to the synthetic project for non-local installs, or to the\n * current projectRoot if the resolution is local.\n */\n path: string\n\n /**\n * resolution of the package installed, for non-local installs,\n * or a file URL into the node_modules for project local installs.\n */\n resolved: string\n\n /**\n * Full path to the inferred default binary for the dependency if it exists.\n */\n arg0?: string\n}\n\nexport type VlxOptions = SpecOptions &\n PackageInfoClientOptions &\n PackageInfoClientRequestOptions &\n InstallOptions & {\n package?: string\n yes?: boolean\n }\n\nexport { vlxDelete as delete } from './delete.ts'\nexport { vlxInfo as info } from './info.ts'\nexport { vlxInstall as install } from './install.ts'\nexport { vlxList as list } from './list.ts'\nexport { vlxResolve as resolve } from './resolve.ts'\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infer-default-executable.d.ts","sourceRoot":"","sources":["../../src/infer-default-executable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEvD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mBAGhC,kBAAkB,KAAG,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAiBlD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infer-default-executable.js","sourceRoot":"","sources":["../../src/infer-default-executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,IAAI,EACJ,GAAG,GACgB,EAAgC,EAAE;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,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,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;IACxB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAE1B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AACvB,CAAC,CAAA","sourcesContent":["import { parseScope } from '@vltpkg/types'\nimport type { NormalizedManifest } 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}: NormalizedManifest): undefined | [string, string] => {\n if (!bin) return undefined\n\n let [, binName] = parseScope(name ?? '')\n if (!binName) return undefined\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 const res = bin[binName]\n if (!res) return undefined\n\n return [binName, res]\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1 +0,0 @@
|
|
|
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/info.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/info.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD,OAAO,KAAK,EAAE,OAAO,EAAe,UAAU,EAAE,MAAM,YAAY,CAAA;AAKlE,eAAO,MAAM,OAAO,SACZ,MAAM,WACH,UAAU,aACR,kBAAkB,KAC5B,OA8BF,CAAA"}
|
package/dist/esm/info.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,IAAY,EACZ,OAAmB,EACnB,QAA6B,EACpB,EAAE;IACX,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE5B,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;QAC/B,QAAQ,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAA;QAEtC,8DAA8D;QAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;YAC7C,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAChD,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAA;YACtC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACrB,MAAM,EAAE,GAAG,EAAE,GAAG,QAAuB,CAAA;YACvC,OAAO;gBACL,IAAI;gBACJ,IAAI;gBACJ,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,QAAQ;gBACR,IAAI;gBACJ,GAAG,GAAG;aACP,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,MAAM,KAAK,CAAC,+BAA+B,EAAE,EAAW,CAAC,CAAA;IAC3D,CAAC;IACD,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAA;AAC9C,CAAC,CAAA","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport type { NormalizedManifest } from '@vltpkg/types'\nimport { XDG } from '@vltpkg/xdg'\nimport { resolve } from 'node:path'\nimport type { VlxInfo, VlxManifest, VlxOptions } from './index.ts'\nimport { inferDefaultExecutable } from './infer-default-executable.ts'\n\nimport { mountPath } from './mount-path.ts'\n\nexport const vlxInfo = (\n path: string,\n options: VlxOptions,\n manifest?: NormalizedManifest,\n): VlxInfo => {\n const root = new XDG('vlt/vlx').data()\n path = mountPath(root, path)\n\n try {\n // do not allow it to traverse up or read arbitrary paths\n const { packageJson } = options\n manifest ??= packageJson.read(path)\n const { dependencies = {} } = manifest\n\n // every one of these has exactly one dep, on the resolved url\n for (const [name, resolved] of Object.entries(dependencies)) {\n const p = resolve(path, 'node_modules', name)\n const pj = packageJson.read(p, { reload: true })\n const def = inferDefaultExecutable(pj)\n const arg0 = def?.[0]\n const { vlx } = manifest as VlxManifest\n return {\n path,\n name,\n version: pj.version,\n resolved,\n arg0,\n ...vlx,\n }\n }\n } catch (er) {\n throw error('Could not get vlx information', er as Error)\n }\n throw error('Could not get vlx information')\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
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,CAiEjB,CAAA"}
|
package/dist/esm/install.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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('/', '§') + '-' + 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/dist/esm/list.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/list.ts"],"names":[],"mappings":"AAIA,wBAAuB,OAAO,0CAM7B"}
|
package/dist/esm/list.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,OAAO;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;IACtC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;AACH,CAAC","sourcesContent":["import { XDG } from '@vltpkg/xdg'\nimport { opendir } from 'node:fs/promises'\nimport { resolve } from 'node:path'\n\nexport async function* vlxList() {\n const path = new XDG('vlt/vlx').data()\n const dir = await opendir(path)\n for await (const dirent of dir) {\n yield resolve(path, dirent.name)\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mount-path.d.ts","sourceRoot":"","sources":["../../src/mount-path.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAU,MAAM,QAAQ,MAAM,KAAG,MAItD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mount-path.js","sourceRoot":"","sources":["../../src/mount-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE;IAC9D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IACjB,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACjE,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AACpC,CAAC,CAAA","sourcesContent":["import { join } from 'node:path'\n\n/**\n * Prevent `vlx exec-cache info/delete/ls` from reaching out of its\n * safe little sandbox.\n */\nexport const mountPath = (root: string, path: string): string => {\n path = join(path)\n path = path.startsWith(root) ? path.substring(root.length) : path\n return join(root, join('/', path))\n}\n"]}
|
package/dist/esm/package.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/resolve.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAW,UAAU,EAAE,MAAM,YAAY,CAAA;AAG/D;;;;;GAKG;AACH,eAAO,MAAM,UAAU,gBACR,MAAM,EAAE,WACZ,UAAU,aACR,QAAQ,KAClB,OAAO,CAAC,SAAS,GAAG,MAAM,CA6E5B,CAAA"}
|
package/dist/esm/resolve.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { Spec } from '@vltpkg/spec'\nimport { resolve } from 'node:path'\nimport { addToPATH } from './add-to-path.ts'\nimport { findExecutable } from './find-executable.ts'\nimport { findPackage } from './find-package.ts'\nimport type { PromptFn, VlxInfo, VlxOptions } from './index.ts'\nimport { vlxInstall } from './install.ts'\n\n/**\n * Figure out the `arg0` to use for an exec command.\n *\n * If `undefined` is returned, then the caller should spawn an interactive\n * shell, or in multi-workspace mode, raise an error.\n */\nexport const vlxResolve = async (\n positionals: string[],\n options: VlxOptions,\n promptFn?: PromptFn,\n): Promise<undefined | string> => {\n const noArgs = positionals.length === 0\n let arg0 = positionals[0]\n let pkgOption = options.package\n const { projectRoot, packageJson } = options\n\n if (!pkgOption) {\n // can come from any package\n if (!arg0) {\n // caller will run interactive shell\n return undefined\n }\n\n const found = await findExecutable(arg0, projectRoot)\n // if found locally, then that's the bin, whatever the package is\n // since no package option was provided anyway.\n if (found) return found\n // ok, not local, might have to install something.\n // treat the arg0 as a package specifier\n pkgOption = arg0\n arg0 = undefined\n }\n\n let pkgTarget: undefined | VlxInfo = undefined\n\n if (pkgOption) {\n // check for local option, otherwise install in data dir we can\n // ONLY do the local option if the spec is a simple name. otherwise\n // it's too complicated to know if it's a match, especially in this\n // world of multiple registries and such, and it's easy enough to\n // just install it externally.\n const pkgSpec = Spec.parseArgs(pkgOption, options)\n const { name, bareSpec } = pkgSpec.final\n // if it's just a name, we can use the local version\n if (!bareSpec) {\n pkgTarget = await findPackage(name, projectRoot, packageJson)\n }\n pkgTarget ??= await vlxInstall(pkgSpec, options, promptFn)\n }\n\n if (pkgTarget) {\n addToPATH(resolve(pkgTarget.path, 'node_modules/.bin'))\n // if we now have a pkgTarget, and we did not have any arguments, then\n // the user did something like `vlx --package=foo`, but didn't give us\n // a command. In that case, we add the relevant exec-cache .bin folder to\n // the PATH env, and let the caller invoke an interactive shell.\n if (noArgs) return undefined\n }\n\n // now if we had a package option, then pkgTarget is set\n // if arg0 isn't set, then we need to infer from the manifest\n // This is like doing `vlx foo@version`, where we treat arg0\n // as the package option. A default exec *must* be inferred then.\n if (!arg0) {\n /* c8 ignore start - impossible, case already handled */\n if (!pkgTarget) {\n throw error('Must supply a --package option and/or arguments', {\n code: 'EUSAGE',\n })\n }\n /* c8 ignore stop */\n\n // infer arg0 from the manifst found at pkgTarget[1]\n arg0 = pkgTarget.arg0\n if (!arg0) {\n const { name, version, bin } = packageJson.read(\n resolve(pkgTarget.path, 'node_modules', pkgTarget.name),\n )\n throw error('Package executable could not be inferred', {\n name,\n version,\n found: bin,\n })\n }\n }\n\n return arg0\n}\n"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|