@vltpkg/cmd-shim 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/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js.map +1 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js.map +1 -0
- package/dist/to-batch-syntax.d.ts.map +1 -0
- package/dist/to-batch-syntax.js.map +1 -0
- package/package.json +12 -26
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/package.json +0 -3
- package/dist/esm/paths.d.ts.map +0 -1
- package/dist/esm/paths.js.map +0 -1
- package/dist/esm/read.d.ts.map +0 -1
- package/dist/esm/read.js.map +0 -1
- package/dist/esm/to-batch-syntax.d.ts.map +0 -1
- package/dist/esm/to-batch-syntax.js.map +0 -1
- /package/dist/{esm/index.d.ts → index.d.ts} +0 -0
- /package/dist/{esm/index.js → index.js} +0 -0
- /package/dist/{esm/paths.d.ts → paths.d.ts} +0 -0
- /package/dist/{esm/paths.js → paths.js} +0 -0
- /package/dist/{esm/read.d.ts → read.d.ts} +0 -0
- /package/dist/{esm/read.js → read.js} +0 -0
- /package/dist/{esm/to-batch-syntax.d.ts → to-batch-syntax.d.ts} +0 -0
- /package/dist/{esm/to-batch-syntax.js → to-batch-syntax.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAG7D,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,mBAAmB,GACpB,MAAM,WAAW,CAAA;AAKlB,eAAO,MAAM,eAAe,SACpB,MAAM,MACR,MAAM,WACD,cAAc,kBAQxB,CAAA;AAED,eAAO,MAAM,OAAO,SACZ,MAAM,MACR,MAAM,WACD,cAAc,kBAYxB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// On windows, create a .cmd file.\n// Read the #! in the file to see what it uses. The vast majority\n// of the time, this will be either:\n// \"#!/usr/bin/env <prog> <args...>\"\n// or:\n// \"#!<prog> <args...>\"\n//\n// Write a binroot/pkg.bin + \".cmd\" file that has this line in it:\n// @<prog> <args...> %dp0%<target> %*\n\nimport {\n chmod,\n mkdir,\n readFile,\n stat,\n writeFile,\n} from 'node:fs/promises'\n\nimport { error } from '@vltpkg/error-cause'\nimport type { RollbackRemove } from '@vltpkg/rollback-remove'\nimport { dirname, relative } from 'node:path'\nimport { convertToSetCommands } from './to-batch-syntax.ts'\nexport {\n findCmdShim,\n findCmdShimIfExists,\n readCmdShim,\n readCmdShimIfExists,\n} from './read.ts'\n\nconst shebangExpr =\n /^#!\\s*(?:\\/usr\\/bin\\/env\\s+(?:-S\\s+)?((?:[^ \\t=]+=[^ \\t=]+\\s+)*))?([^ \\t]+)(.*)$/\n\nexport const cmdShimIfExists = async (\n from: string,\n to: string,\n remover: RollbackRemove,\n) => {\n try {\n await stat(from)\n } catch {\n return\n }\n await writeShim(from, to, remover)\n}\n\nexport const cmdShim = async (\n from: string,\n to: string,\n remover: RollbackRemove,\n) => {\n try {\n await stat(from)\n await writeShim(from, to, remover)\n } catch (er) {\n throw error('Could not shim to executable file', {\n path: from,\n target: to,\n cause: er,\n })\n }\n}\n\nconst writeShim = async (\n from: string,\n to: string,\n remover: RollbackRemove,\n) => {\n await Promise.all([\n remover.rm(to),\n remover.rm(to + '.cmd'),\n remover.rm(to + '.ps1'),\n remover.rm(to + '.pwsh'),\n ])\n // make a cmd file and a sh script\n // First, check if the bin is a #! of some sort.\n // If not, then assume it's something that'll be compiled, or some other\n // sort of script, and just call it directly.\n await mkdir(dirname(to), { recursive: true })\n const data = await readFile(from, 'utf8').catch(() => '')\n if (!data) {\n return await writeShim_(from, to)\n }\n const firstLine = data.trim().split(/\\r*\\n/)[0]\n const shebang = firstLine?.match(shebangExpr) ?? undefined\n return writeShim_(\n from,\n to,\n shebang?.[2],\n shebang?.[3],\n shebang?.[1],\n )\n}\n\nconst writeShim_ = async (\n from: string,\n to: string,\n prog?: string,\n args?: string,\n variables?: string,\n) => {\n let shTarget = relative(dirname(to), from)\n let target = shTarget.split('/').join('\\\\')\n let longProg\n let shProg = prog?.split('\\\\').join('/')\n let shLongProg\n let pwshProg = shProg && `\"${shProg}$exe\"`\n let pwshLongProg\n shTarget = shTarget.split('\\\\').join('/')\n args = args || ''\n variables = variables || ''\n if (!prog) {\n prog = `\"%dp0%\\\\${target}\"`\n shProg = `\"$basedir/${shTarget}\"`\n pwshProg = shProg\n args = ''\n target = ''\n shTarget = ''\n } else {\n longProg = `\"%dp0%\\\\${prog}.exe\"`\n shLongProg = `\"$basedir/${prog}\"`\n pwshLongProg = `\"$basedir/${prog}$exe\"`\n target = `\"%dp0%\\\\${target}\"`\n shTarget = `\"$basedir/${shTarget}\"`\n }\n\n // Subroutine trick to fix https://github.com/npm/cmd-shim/issues/10\n // and https://github.com/npm/cli/issues/969\n const head =\n '@ECHO off\\r\\n' +\n 'GOTO start\\r\\n' +\n ':find_dp0\\r\\n' +\n 'SET dp0=%~dp0\\r\\n' +\n 'EXIT /b\\r\\n' +\n ':start\\r\\n' +\n 'SETLOCAL\\r\\n' +\n 'CALL :find_dp0\\r\\n'\n\n let cmd\n if (longProg) {\n /* c8 ignore next */\n shLongProg = (shLongProg ?? '').trim()\n args = args.trim()\n const variablesBatch = convertToSetCommands(variables)\n cmd =\n `${head}${variablesBatch}\\r\\n` +\n `IF EXIST ${longProg} (\\r\\n` +\n ` SET \"_prog=${longProg.replace(/(^\")|(\"$)/g, '')}\"\\r\\n` +\n ') ELSE (\\r\\n' +\n ` SET \"_prog=${prog.replace(/(^\")|(\"$)/g, '')}\"\\r\\n` +\n ' SET PATHEXT=%PATHEXT:;.JS;=;%\\r\\n' +\n ')\\r\\n' +\n '\\r\\n' +\n // prevent \"Terminate Batch Job? (Y/n)\" message\n // https://github.com/npm/cli/issues/969#issuecomment-737496588\n 'endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & ' +\n `\"%_prog%\" ${args} ${target} %*\\r\\n`\n } else {\n cmd = `${head}${prog} ${args} ${target} %*\\r\\n`\n }\n\n let sh =\n '#!/bin/sh\\n' +\n `basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\\n` +\n '\\n' +\n 'case `uname` in\\n' +\n ' *CYGWIN*|*MINGW*|*MSYS*)\\n' +\n ' if command -v cygpath > /dev/null 2>&1; then\\n' +\n ' basedir=`cygpath -w \"$basedir\"`\\n' +\n ' fi\\n' +\n ' ;;\\n' +\n 'esac\\n' +\n '\\n'\n\n if (shLongProg) {\n sh +=\n `if [ -x ${shLongProg} ]; then\\n` +\n ` exec ${variables}${shLongProg} ${args} ${shTarget} \"$@\"\\n` +\n 'else \\n' +\n ` exec ${variables}${shProg} ${args} ${shTarget} \"$@\"\\n` +\n 'fi\\n'\n } else {\n sh += `exec ${shProg} ${args} ${shTarget} \"$@\"\\n`\n }\n\n let pwsh =\n '#!/usr/bin/env pwsh\\n' +\n '$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\\n' +\n '\\n' +\n '$exe=\"\"\\n' +\n 'if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\\n' +\n ' # Fix case when both the Windows and Linux builds of Node\\n' +\n ' # are installed in the same directory\\n' +\n ' $exe=\".exe\"\\n' +\n '}\\n'\n\n if (shLongProg) {\n pwsh +=\n '$ret=0\\n' +\n `if (Test-Path ${pwshLongProg}) {\\n` +\n ' # Support pipeline input\\n' +\n ' if ($MyInvocation.ExpectingInput) {\\n' +\n ` $input | & ${pwshLongProg} ${args} ${shTarget} $args\\n` +\n ' } else {\\n' +\n ` & ${pwshLongProg} ${args} ${shTarget} $args\\n` +\n ' }\\n' +\n ' $ret=$LASTEXITCODE\\n' +\n '} else {\\n' +\n ' # Support pipeline input\\n' +\n ' if ($MyInvocation.ExpectingInput) {\\n' +\n ` $input | & ${pwshProg} ${args} ${shTarget} $args\\n` +\n ' } else {\\n' +\n ` & ${pwshProg} ${args} ${shTarget} $args\\n` +\n ' }\\n' +\n ' $ret=$LASTEXITCODE\\n' +\n '}\\n' +\n 'exit $ret\\n'\n } else {\n pwsh +=\n '# Support pipeline input\\n' +\n 'if ($MyInvocation.ExpectingInput) {\\n' +\n ` $input | & ${pwshProg} ${args} ${shTarget} $args\\n` +\n '} else {\\n' +\n ` & ${pwshProg} ${args} ${shTarget} $args\\n` +\n '}\\n' +\n 'exit $LASTEXITCODE\\n'\n }\n\n await Promise.all([\n writeFile(to + '.cmd', cmd, 'utf8'),\n writeFile(to + '.ps1', pwsh, 'utf8'),\n writeFile(to, sh, 'utf8'),\n ])\n await chmodShim(to)\n}\n\nconst chmodShim = async (to: string) =>\n await Promise.all([\n chmod(to, 0o755),\n chmod(to + '.cmd', 0o755),\n chmod(to + '.ps1', 0o755),\n ])\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,SAEP,MAAM,aAMW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,qBAAqB;AACrB,MAAM,CAAC,MAAM,KAAK,GAChB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC5B,CAAC,IAAY,EAAE,EAAE,CAAC;QAChB,IAAI,GAAG,MAAM;QACb,IAAI,GAAG,MAAM;QACb,IAAI;QACJ,IAAI,GAAG,OAAO;KACf;IACH,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AAC5B,oBAAoB","sourcesContent":["// On non-windows platforms, we only look for symlinks, not shims\n/* c8 ignore start */\nexport const paths =\n process.platform === 'win32' ?\n (path: string) => [\n path + '.cmd',\n path + '.ps1',\n path,\n path + '.pwsh',\n ]\n : (path: string) => [path]\n/* c8 ignore stop */\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"AAoCA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,SACxB,MAAM,KACX,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,SAAgB,MAAM,8BAQ7C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,SAAgB,MAAM,gCAUrD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,SAAgB,MAAM,oBAmB7C,CAAA"}
|
package/dist/read.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../src/read.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { lstat, readFile, readlink } from 'node:fs/promises'\nimport { dirname, resolve } from 'node:path'\nimport { paths } from './paths.ts'\n\nconst extractPath = (path: string, cmdshimContents: string) => {\n if (/\\.cmd$/i.test(path)) {\n return extractPathFromCmd(cmdshimContents)\n } else if (/\\.(ps1|pwsh)$/i.test(path)) {\n return extractPathFromPowershell(cmdshimContents)\n } else {\n return extractPathFromCygwin(cmdshimContents)\n }\n}\n\nconst extractPathFromPowershell = (cmdshimContents: string) => {\n const matches = /\"[$]basedir\\/([^\"]+?)\"\\s+[$]args/.exec(\n cmdshimContents,\n )\n return matches?.[1]?.replace(/\\\\/g, '/')\n}\n\nconst extractPathFromCmd = (cmdshimContents: string) => {\n const matches = /\"%(?:~dp0|dp0%)\\\\([^\"]+?)\"\\s+%[*]/.exec(\n cmdshimContents,\n )\n return matches?.[1]?.replace(/\\\\/g, '/')\n}\n\nconst extractPathFromCygwin = (cmdshimContents: string) => {\n const matches = /\"[$]basedir\\/([^\"]+?)\"\\s+\"[$]@\"/.exec(\n cmdshimContents,\n )\n return matches?.[1]?.replace(/\\\\/g, '/')\n}\n\n/**\n * Find a matching cmd, cygwin, powershell, or symlink executable,\n * and return the matching file and the target it references in a\n * `[string,string]` tuple if found, or undefined if not.\n */\nexport const findCmdShimIfExists = async (\n path: string,\n): Promise<undefined | [string, string]> => {\n path = path.replace(/\\.(cmd|pwsh|ps1)$/i, '')\n for (const p of paths(path)) {\n const result = await readCmdShimIfExists(p)\n if (result) return [p, result]\n }\n}\n\n/**\n * Find a matching cmd, cygwin, powershell, or symlink executable,\n * and return the matching file and the target it references in a\n * `[string,string]` tuple if found, or throw if not found.\n */\nexport const findCmdShim = async (path: string) => {\n const result = await findCmdShimIfExists(path)\n if (result) return result\n throw error(\n 'Could not find matching cmd shim',\n { path },\n findCmdShim,\n )\n}\n\n/**\n * Read the specified executable shim if it exists, returning the\n * target it references. Return undefined if it does not exist\n * or cannot be dereferenced.\n */\nexport const readCmdShimIfExists = async (path: string) => {\n try {\n const st = await lstat(path)\n if (st.isSymbolicLink()) {\n return resolve(dirname(path), await readlink(path))\n }\n const contents = await readFile(path)\n const destination = extractPath(path, contents.toString())\n if (destination) return resolve(dirname(path), destination)\n } catch {}\n}\n\n/**\n * Read the specified executable shim, returning the target\n * it references. Raise an error if it does not exist or cannot be read.\n */\nexport const readCmdShim = async (path: string) => {\n try {\n const st = await lstat(path)\n if (st.isSymbolicLink()) {\n return resolve(dirname(path), await readlink(path))\n }\n // create a new error to capture the stack trace from this point,\n // instead of getting some opaque stack into node's internals\n const contents = await readFile(path)\n const destination = extractPath(path, contents.toString())\n if (destination) return resolve(dirname(path), destination)\n } catch (er) {\n throw error(\n 'Could not read shim',\n { path, cause: er },\n readCmdShim,\n )\n }\n throw error('Not a valid cmd shim', { path }, readCmdShim)\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-batch-syntax.d.ts","sourceRoot":"","sources":["../src/to-batch-syntax.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,QAAS,MAAM,SAAS,MAAM,WACd,CAAA;AAiBhD,eAAO,MAAM,oBAAoB,mBAAoB,MAAM,WAG9C,CAAA;AAEb,eAAO,MAAM,4BAA4B,UAAW,MAAM,WAezD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-batch-syntax.js","sourceRoot":"","sources":["../src/to-batch-syntax.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAChE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;AAEhD,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAC1D,GAAG,IAAI,KAAK,CAAC,CAAC;IACZ,QAAQ,GAAG,IAAI,4BAA4B,CAAC,KAAK,CAAC,MAAM;IAC1D,CAAC,CAAC,EAAE,CAAA;AAEN,MAAM,yBAAyB,GAAG,CAAC,YAAsB,EAAE,EAAE,CAC3D,YAAY,CAAC,MAAM,CACjB,CAAC,KAA6B,EAAE,WAAW,EAAE,EAAE;IAC7C,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnD,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IAChB,OAAO,KAAK,CAAA;AACd,CAAC,EACD,EAAE,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAAsB,EAAE,EAAE,CAC7D,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACjE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KAClD,IAAI,CAAC,EAAE,CAAC,CAAA;AAEb,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,KAAa,EAAE,EAAE;IAC5D,MAAM,iBAAiB,GAAG,6BAA6B,CAAA;IACvD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,GAAG,CAAC;QACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,cAAc,GAClB,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YAChD,MAAM,IAAI,cAAc,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YACvD,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAA;QAC1C,CAAC;IACH,CAAC,QAAQ,iBAAiB,CAAC,SAAS,GAAG,CAAC,EAAC;IACzC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACjC,OAAO,MAAM,CAAA;AACf,CAAC,CAAA","sourcesContent":["export const convertToSetCommand = (key: string, value: string) =>\n convertToSetCommand_(key.trim(), value.trim())\n\nconst convertToSetCommand_ = (key: string, value: string) =>\n key && value ?\n `@SET ${key}=${replaceDollarWithPercentPair(value)}\\r\\n`\n : ''\n\nconst extractVariableValuePairs = (declarations: string[]) =>\n declarations.reduce(\n (pairs: Record<string, string>, declaration) => {\n const [key = '', val = ''] = declaration.split('=')\n pairs[key] = val\n return pairs\n },\n {},\n )\n\nexport const convertToSetCommands = (variableString: string) =>\n Object.entries(extractVariableValuePairs(variableString.split(' ')))\n .map(([key, val]) => convertToSetCommand(key, val))\n .join('')\n\nexport const replaceDollarWithPercentPair = (value: string) => {\n const dollarExpressions = /\\$\\{?([^$@#?\\- \\t{}:]+)\\}?/g\n let result = ''\n let startIndex = 0\n do {\n const match = dollarExpressions.exec(value)\n if (match) {\n const betweenMatches =\n value.substring(startIndex, match.index) || ''\n result += betweenMatches + '%' + String(match[1]) + '%'\n startIndex = dollarExpressions.lastIndex\n }\n } while (dollarExpressions.lastIndex > 0)\n result += value.slice(startIndex)\n return result\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,55 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vltpkg/cmd-shim",
|
|
3
3
|
"description": "Executable script shims for Windows",
|
|
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/cmd-shim"
|
|
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
|
-
"@vltpkg/rollback-remove": "1.0.0-rc.
|
|
24
|
-
"@vltpkg/error-cause": "1.0.0-rc.
|
|
12
|
+
"@vltpkg/rollback-remove": "1.0.0-rc.11",
|
|
13
|
+
"@vltpkg/error-cause": "1.0.0-rc.11"
|
|
25
14
|
},
|
|
26
15
|
"devDependencies": {
|
|
27
|
-
"@eslint/js": "^9.
|
|
28
|
-
"@types/node": "^22.
|
|
29
|
-
"eslint": "^9.
|
|
30
|
-
"prettier": "^3.
|
|
31
|
-
"tap": "^21.
|
|
32
|
-
"tshy": "^3.0.2",
|
|
16
|
+
"@eslint/js": "^9.39.1",
|
|
17
|
+
"@types/node": "^22.19.2",
|
|
18
|
+
"eslint": "^9.39.1",
|
|
19
|
+
"prettier": "^3.7.4",
|
|
20
|
+
"tap": "^21.5.0",
|
|
33
21
|
"typedoc": "~0.27.9",
|
|
34
22
|
"typescript": "5.7.3",
|
|
35
|
-
"typescript-eslint": "^8.
|
|
23
|
+
"typescript-eslint": "^8.49.0"
|
|
36
24
|
},
|
|
37
25
|
"license": "BSD-2-Clause-Patent",
|
|
38
26
|
"engines": {
|
|
39
|
-
"node": ">=22"
|
|
27
|
+
"node": ">=22.9.0"
|
|
40
28
|
},
|
|
41
29
|
"tap": {
|
|
42
30
|
"extends": "../../tap-config.yaml"
|
|
43
31
|
},
|
|
44
32
|
"prettier": "../../.prettierrc.js",
|
|
45
|
-
"module": "./dist/
|
|
33
|
+
"module": "./dist/index.js",
|
|
46
34
|
"type": "module",
|
|
47
35
|
"exports": {
|
|
48
36
|
"./package.json": "./package.json",
|
|
49
37
|
".": {
|
|
50
38
|
"import": {
|
|
51
|
-
"
|
|
52
|
-
"default": "./dist/esm/index.js"
|
|
39
|
+
"default": "./dist/index.js"
|
|
53
40
|
}
|
|
54
41
|
}
|
|
55
42
|
},
|
|
@@ -64,7 +51,6 @@
|
|
|
64
51
|
"snap": "tap",
|
|
65
52
|
"test": "tap",
|
|
66
53
|
"posttest": "tsc --noEmit",
|
|
67
|
-
"tshy": "tshy",
|
|
68
54
|
"typecheck": "tsc --noEmit"
|
|
69
55
|
}
|
|
70
56
|
}
|
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":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAG7D,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,mBAAmB,GACpB,MAAM,WAAW,CAAA;AAKlB,eAAO,MAAM,eAAe,SACpB,MAAM,MACR,MAAM,WACD,cAAc,kBAQxB,CAAA;AAED,eAAO,MAAM,OAAO,SACZ,MAAM,MACR,MAAM,WACD,cAAc,kBAYxB,CAAA"}
|
package/dist/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// On windows, create a .cmd file.\n// Read the #! in the file to see what it uses. The vast majority\n// of the time, this will be either:\n// \"#!/usr/bin/env <prog> <args...>\"\n// or:\n// \"#!<prog> <args...>\"\n//\n// Write a binroot/pkg.bin + \".cmd\" file that has this line in it:\n// @<prog> <args...> %dp0%<target> %*\n\nimport {\n chmod,\n mkdir,\n readFile,\n stat,\n writeFile,\n} from 'node:fs/promises'\n\nimport { error } from '@vltpkg/error-cause'\nimport type { RollbackRemove } from '@vltpkg/rollback-remove'\nimport { dirname, relative } from 'node:path'\nimport { convertToSetCommands } from './to-batch-syntax.ts'\nexport {\n findCmdShim,\n findCmdShimIfExists,\n readCmdShim,\n readCmdShimIfExists,\n} from './read.ts'\n\nconst shebangExpr =\n /^#!\\s*(?:\\/usr\\/bin\\/env\\s+(?:-S\\s+)?((?:[^ \\t=]+=[^ \\t=]+\\s+)*))?([^ \\t]+)(.*)$/\n\nexport const cmdShimIfExists = async (\n from: string,\n to: string,\n remover: RollbackRemove,\n) => {\n try {\n await stat(from)\n } catch {\n return\n }\n await writeShim(from, to, remover)\n}\n\nexport const cmdShim = async (\n from: string,\n to: string,\n remover: RollbackRemove,\n) => {\n try {\n await stat(from)\n await writeShim(from, to, remover)\n } catch (er) {\n throw error('Could not shim to executable file', {\n path: from,\n target: to,\n cause: er,\n })\n }\n}\n\nconst writeShim = async (\n from: string,\n to: string,\n remover: RollbackRemove,\n) => {\n await Promise.all([\n remover.rm(to),\n remover.rm(to + '.cmd'),\n remover.rm(to + '.ps1'),\n remover.rm(to + '.pwsh'),\n ])\n // make a cmd file and a sh script\n // First, check if the bin is a #! of some sort.\n // If not, then assume it's something that'll be compiled, or some other\n // sort of script, and just call it directly.\n await mkdir(dirname(to), { recursive: true })\n const data = await readFile(from, 'utf8').catch(() => '')\n if (!data) {\n return await writeShim_(from, to)\n }\n const firstLine = data.trim().split(/\\r*\\n/)[0]\n const shebang = firstLine?.match(shebangExpr) ?? undefined\n return writeShim_(\n from,\n to,\n shebang?.[2],\n shebang?.[3],\n shebang?.[1],\n )\n}\n\nconst writeShim_ = async (\n from: string,\n to: string,\n prog?: string,\n args?: string,\n variables?: string,\n) => {\n let shTarget = relative(dirname(to), from)\n let target = shTarget.split('/').join('\\\\')\n let longProg\n let shProg = prog?.split('\\\\').join('/')\n let shLongProg\n let pwshProg = shProg && `\"${shProg}$exe\"`\n let pwshLongProg\n shTarget = shTarget.split('\\\\').join('/')\n args = args || ''\n variables = variables || ''\n if (!prog) {\n prog = `\"%dp0%\\\\${target}\"`\n shProg = `\"$basedir/${shTarget}\"`\n pwshProg = shProg\n args = ''\n target = ''\n shTarget = ''\n } else {\n longProg = `\"%dp0%\\\\${prog}.exe\"`\n shLongProg = `\"$basedir/${prog}\"`\n pwshLongProg = `\"$basedir/${prog}$exe\"`\n target = `\"%dp0%\\\\${target}\"`\n shTarget = `\"$basedir/${shTarget}\"`\n }\n\n // Subroutine trick to fix https://github.com/npm/cmd-shim/issues/10\n // and https://github.com/npm/cli/issues/969\n const head =\n '@ECHO off\\r\\n' +\n 'GOTO start\\r\\n' +\n ':find_dp0\\r\\n' +\n 'SET dp0=%~dp0\\r\\n' +\n 'EXIT /b\\r\\n' +\n ':start\\r\\n' +\n 'SETLOCAL\\r\\n' +\n 'CALL :find_dp0\\r\\n'\n\n let cmd\n if (longProg) {\n /* c8 ignore next */\n shLongProg = (shLongProg ?? '').trim()\n args = args.trim()\n const variablesBatch = convertToSetCommands(variables)\n cmd =\n `${head}${variablesBatch}\\r\\n` +\n `IF EXIST ${longProg} (\\r\\n` +\n ` SET \"_prog=${longProg.replace(/(^\")|(\"$)/g, '')}\"\\r\\n` +\n ') ELSE (\\r\\n' +\n ` SET \"_prog=${prog.replace(/(^\")|(\"$)/g, '')}\"\\r\\n` +\n ' SET PATHEXT=%PATHEXT:;.JS;=;%\\r\\n' +\n ')\\r\\n' +\n '\\r\\n' +\n // prevent \"Terminate Batch Job? (Y/n)\" message\n // https://github.com/npm/cli/issues/969#issuecomment-737496588\n 'endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & ' +\n `\"%_prog%\" ${args} ${target} %*\\r\\n`\n } else {\n cmd = `${head}${prog} ${args} ${target} %*\\r\\n`\n }\n\n let sh =\n '#!/bin/sh\\n' +\n `basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\\n` +\n '\\n' +\n 'case `uname` in\\n' +\n ' *CYGWIN*|*MINGW*|*MSYS*)\\n' +\n ' if command -v cygpath > /dev/null 2>&1; then\\n' +\n ' basedir=`cygpath -w \"$basedir\"`\\n' +\n ' fi\\n' +\n ' ;;\\n' +\n 'esac\\n' +\n '\\n'\n\n if (shLongProg) {\n sh +=\n `if [ -x ${shLongProg} ]; then\\n` +\n ` exec ${variables}${shLongProg} ${args} ${shTarget} \"$@\"\\n` +\n 'else \\n' +\n ` exec ${variables}${shProg} ${args} ${shTarget} \"$@\"\\n` +\n 'fi\\n'\n } else {\n sh += `exec ${shProg} ${args} ${shTarget} \"$@\"\\n`\n }\n\n let pwsh =\n '#!/usr/bin/env pwsh\\n' +\n '$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\\n' +\n '\\n' +\n '$exe=\"\"\\n' +\n 'if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\\n' +\n ' # Fix case when both the Windows and Linux builds of Node\\n' +\n ' # are installed in the same directory\\n' +\n ' $exe=\".exe\"\\n' +\n '}\\n'\n\n if (shLongProg) {\n pwsh +=\n '$ret=0\\n' +\n `if (Test-Path ${pwshLongProg}) {\\n` +\n ' # Support pipeline input\\n' +\n ' if ($MyInvocation.ExpectingInput) {\\n' +\n ` $input | & ${pwshLongProg} ${args} ${shTarget} $args\\n` +\n ' } else {\\n' +\n ` & ${pwshLongProg} ${args} ${shTarget} $args\\n` +\n ' }\\n' +\n ' $ret=$LASTEXITCODE\\n' +\n '} else {\\n' +\n ' # Support pipeline input\\n' +\n ' if ($MyInvocation.ExpectingInput) {\\n' +\n ` $input | & ${pwshProg} ${args} ${shTarget} $args\\n` +\n ' } else {\\n' +\n ` & ${pwshProg} ${args} ${shTarget} $args\\n` +\n ' }\\n' +\n ' $ret=$LASTEXITCODE\\n' +\n '}\\n' +\n 'exit $ret\\n'\n } else {\n pwsh +=\n '# Support pipeline input\\n' +\n 'if ($MyInvocation.ExpectingInput) {\\n' +\n ` $input | & ${pwshProg} ${args} ${shTarget} $args\\n` +\n '} else {\\n' +\n ` & ${pwshProg} ${args} ${shTarget} $args\\n` +\n '}\\n' +\n 'exit $LASTEXITCODE\\n'\n }\n\n await Promise.all([\n writeFile(to + '.cmd', cmd, 'utf8'),\n writeFile(to + '.ps1', pwsh, 'utf8'),\n writeFile(to, sh, 'utf8'),\n ])\n await chmodShim(to)\n}\n\nconst chmodShim = async (to: string) =>\n await Promise.all([\n chmod(to, 0o755),\n chmod(to + '.cmd', 0o755),\n chmod(to + '.ps1', 0o755),\n ])\n"]}
|
package/dist/esm/package.json
DELETED
package/dist/esm/paths.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/paths.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,SAEP,MAAM,aAMW,CAAA"}
|
package/dist/esm/paths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/paths.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,qBAAqB;AACrB,MAAM,CAAC,MAAM,KAAK,GAChB,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC5B,CAAC,IAAY,EAAE,EAAE,CAAC;QAChB,IAAI,GAAG,MAAM;QACb,IAAI,GAAG,MAAM;QACb,IAAI;QACJ,IAAI,GAAG,OAAO;KACf;IACH,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AAC5B,oBAAoB","sourcesContent":["// On non-windows platforms, we only look for symlinks, not shims\n/* c8 ignore start */\nexport const paths =\n process.platform === 'win32' ?\n (path: string) => [\n path + '.cmd',\n path + '.ps1',\n path,\n path + '.pwsh',\n ]\n : (path: string) => [path]\n/* c8 ignore stop */\n"]}
|
package/dist/esm/read.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/read.ts"],"names":[],"mappings":"AAoCA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,SACxB,MAAM,KACX,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,SAAgB,MAAM,8BAQ7C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,SAAgB,MAAM,gCAUrD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,SAAgB,MAAM,oBAmB7C,CAAA"}
|
package/dist/esm/read.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/read.ts"],"names":[],"mappings":"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","sourcesContent":["import { error } from '@vltpkg/error-cause'\nimport { lstat, readFile, readlink } from 'node:fs/promises'\nimport { dirname, resolve } from 'node:path'\nimport { paths } from './paths.ts'\n\nconst extractPath = (path: string, cmdshimContents: string) => {\n if (/\\.cmd$/i.test(path)) {\n return extractPathFromCmd(cmdshimContents)\n } else if (/\\.(ps1|pwsh)$/i.test(path)) {\n return extractPathFromPowershell(cmdshimContents)\n } else {\n return extractPathFromCygwin(cmdshimContents)\n }\n}\n\nconst extractPathFromPowershell = (cmdshimContents: string) => {\n const matches = /\"[$]basedir\\/([^\"]+?)\"\\s+[$]args/.exec(\n cmdshimContents,\n )\n return matches?.[1]?.replace(/\\\\/g, '/')\n}\n\nconst extractPathFromCmd = (cmdshimContents: string) => {\n const matches = /\"%(?:~dp0|dp0%)\\\\([^\"]+?)\"\\s+%[*]/.exec(\n cmdshimContents,\n )\n return matches?.[1]?.replace(/\\\\/g, '/')\n}\n\nconst extractPathFromCygwin = (cmdshimContents: string) => {\n const matches = /\"[$]basedir\\/([^\"]+?)\"\\s+\"[$]@\"/.exec(\n cmdshimContents,\n )\n return matches?.[1]?.replace(/\\\\/g, '/')\n}\n\n/**\n * Find a matching cmd, cygwin, powershell, or symlink executable,\n * and return the matching file and the target it references in a\n * `[string,string]` tuple if found, or undefined if not.\n */\nexport const findCmdShimIfExists = async (\n path: string,\n): Promise<undefined | [string, string]> => {\n path = path.replace(/\\.(cmd|pwsh|ps1)$/i, '')\n for (const p of paths(path)) {\n const result = await readCmdShimIfExists(p)\n if (result) return [p, result]\n }\n}\n\n/**\n * Find a matching cmd, cygwin, powershell, or symlink executable,\n * and return the matching file and the target it references in a\n * `[string,string]` tuple if found, or throw if not found.\n */\nexport const findCmdShim = async (path: string) => {\n const result = await findCmdShimIfExists(path)\n if (result) return result\n throw error(\n 'Could not find matching cmd shim',\n { path },\n findCmdShim,\n )\n}\n\n/**\n * Read the specified executable shim if it exists, returning the\n * target it references. Return undefined if it does not exist\n * or cannot be dereferenced.\n */\nexport const readCmdShimIfExists = async (path: string) => {\n try {\n const st = await lstat(path)\n if (st.isSymbolicLink()) {\n return resolve(dirname(path), await readlink(path))\n }\n const contents = await readFile(path)\n const destination = extractPath(path, contents.toString())\n if (destination) return resolve(dirname(path), destination)\n } catch {}\n}\n\n/**\n * Read the specified executable shim, returning the target\n * it references. Raise an error if it does not exist or cannot be read.\n */\nexport const readCmdShim = async (path: string) => {\n try {\n const st = await lstat(path)\n if (st.isSymbolicLink()) {\n return resolve(dirname(path), await readlink(path))\n }\n // create a new error to capture the stack trace from this point,\n // instead of getting some opaque stack into node's internals\n const contents = await readFile(path)\n const destination = extractPath(path, contents.toString())\n if (destination) return resolve(dirname(path), destination)\n } catch (er) {\n throw error(\n 'Could not read shim',\n { path, cause: er },\n readCmdShim,\n )\n }\n throw error('Not a valid cmd shim', { path }, readCmdShim)\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-batch-syntax.d.ts","sourceRoot":"","sources":["../../src/to-batch-syntax.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,QAAS,MAAM,SAAS,MAAM,WACd,CAAA;AAiBhD,eAAO,MAAM,oBAAoB,mBAAoB,MAAM,WAG9C,CAAA;AAEb,eAAO,MAAM,4BAA4B,UAAW,MAAM,WAezD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-batch-syntax.js","sourceRoot":"","sources":["../../src/to-batch-syntax.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAChE,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;AAEhD,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAC1D,GAAG,IAAI,KAAK,CAAC,CAAC;IACZ,QAAQ,GAAG,IAAI,4BAA4B,CAAC,KAAK,CAAC,MAAM;IAC1D,CAAC,CAAC,EAAE,CAAA;AAEN,MAAM,yBAAyB,GAAG,CAAC,YAAsB,EAAE,EAAE,CAC3D,YAAY,CAAC,MAAM,CACjB,CAAC,KAA6B,EAAE,WAAW,EAAE,EAAE;IAC7C,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnD,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IAChB,OAAO,KAAK,CAAA;AACd,CAAC,EACD,EAAE,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAAsB,EAAE,EAAE,CAC7D,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KACjE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KAClD,IAAI,CAAC,EAAE,CAAC,CAAA;AAEb,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,KAAa,EAAE,EAAE;IAC5D,MAAM,iBAAiB,GAAG,6BAA6B,CAAA;IACvD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,GAAG,CAAC;QACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,cAAc,GAClB,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YAChD,MAAM,IAAI,cAAc,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;YACvD,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAA;QAC1C,CAAC;IACH,CAAC,QAAQ,iBAAiB,CAAC,SAAS,GAAG,CAAC,EAAC;IACzC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACjC,OAAO,MAAM,CAAA;AACf,CAAC,CAAA","sourcesContent":["export const convertToSetCommand = (key: string, value: string) =>\n convertToSetCommand_(key.trim(), value.trim())\n\nconst convertToSetCommand_ = (key: string, value: string) =>\n key && value ?\n `@SET ${key}=${replaceDollarWithPercentPair(value)}\\r\\n`\n : ''\n\nconst extractVariableValuePairs = (declarations: string[]) =>\n declarations.reduce(\n (pairs: Record<string, string>, declaration) => {\n const [key = '', val = ''] = declaration.split('=')\n pairs[key] = val\n return pairs\n },\n {},\n )\n\nexport const convertToSetCommands = (variableString: string) =>\n Object.entries(extractVariableValuePairs(variableString.split(' ')))\n .map(([key, val]) => convertToSetCommand(key, val))\n .join('')\n\nexport const replaceDollarWithPercentPair = (value: string) => {\n const dollarExpressions = /\\$\\{?([^$@#?\\- \\t{}:]+)\\}?/g\n let result = ''\n let startIndex = 0\n do {\n const match = dollarExpressions.exec(value)\n if (match) {\n const betweenMatches =\n value.substring(startIndex, match.index) || ''\n result += betweenMatches + '%' + String(match[1]) + '%'\n startIndex = dollarExpressions.lastIndex\n }\n } while (dollarExpressions.lastIndex > 0)\n result += value.slice(startIndex)\n return result\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
|