Download backend/node_modules/@prisma/fetch-engine/dist/chunk-CCMBPDR2.js from blackmistcode/polysignal_hackaton: direct link, hf CLI and curl.
- Browser
- Download file 85.4 kB
-
https://huggingface.co/blackmistcode/polysignal_hackaton/resolve/main/backend/node_modules/%40prisma/fetch-engine/dist/chunk-CCMBPDR2.js
- Command line
-
hf download hf://blackmistcode/polysignal_hackaton/backend/node_modules/@prisma/fetch-engine/dist/chunk-CCMBPDR2.js
-
curl -L -o chunk-CCMBPDR2.js https://huggingface.co/blackmistcode/polysignal_hackaton/resolve/main/backend/node_modules/%40prisma/fetch-engine/dist/chunk-CCMBPDR2.js
85.4 kB
| ; | |
| var __create = Object.create; | |
| var __defProp = Object.defineProperty; | |
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
| var __getOwnPropNames = Object.getOwnPropertyNames; | |
| var __getProtoOf = Object.getPrototypeOf; | |
| var __hasOwnProp = Object.prototype.hasOwnProperty; | |
| var __export = (target, all) => { | |
| for (var name in all) | |
| __defProp(target, name, { get: all[name], enumerable: true }); | |
| }; | |
| var __copyProps = (to, from, except, desc) => { | |
| if (from && typeof from === "object" || typeof from === "function") { | |
| for (let key of __getOwnPropNames(from)) | |
| if (!__hasOwnProp.call(to, key) && key !== except) | |
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
| } | |
| return to; | |
| }; | |
| var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | |
| // If the importer is in node compatibility mode or this is not an ESM | |
| // file that has been converted to a CommonJS file using a Babel- | |
| // compatible transform (i.e. "__esModule" has not been set), then set | |
| // "default" to the CommonJS "module.exports" for node compatibility. | |
| isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | |
| mod | |
| )); | |
| var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |
| var chunk_CCMBPDR2_exports = {}; | |
| __export(chunk_CCMBPDR2_exports, { | |
| download: () => download, | |
| getBinaryName: () => getBinaryName, | |
| getVersion: () => getVersion, | |
| maybeCopyToTmp: () => maybeCopyToTmp, | |
| plusX: () => plusX, | |
| vercelPkgPathRegex: () => vercelPkgPathRegex | |
| }); | |
| module.exports = __toCommonJS(chunk_CCMBPDR2_exports); | |
| var import_chunk_MWVY55RY = require("./chunk-MWVY55RY.js"); | |
| var import_chunk_7JLQJWOR = require("./chunk-7JLQJWOR.js"); | |
| var import_chunk_3VVCXIQ5 = require("./chunk-3VVCXIQ5.js"); | |
| var import_chunk_CY52DY2B = require("./chunk-CY52DY2B.js"); | |
| var import_chunk_LONQL55G = require("./chunk-LONQL55G.js"); | |
| var import_chunk_QFA3XBMW = require("./chunk-QFA3XBMW.js"); | |
| var import_chunk_FKGWOTGU = require("./chunk-FKGWOTGU.js"); | |
| var import_chunk_QGM4M3NI = require("./chunk-QGM4M3NI.js"); | |
| var import_node_fs = __toESM(require("node:fs")); | |
| var import_node_path = __toESM(require("node:path")); | |
| var import_node_util = require("node:util"); | |
| var import_debug = __toESM(require("@prisma/debug")); | |
| var import_get_platform = require("@prisma/get-platform"); | |
| var import_node_buffer = require("node:buffer"); | |
| var import_node_path2 = __toESM(require("node:path")); | |
| var import_node_child_process = __toESM(require("node:child_process")); | |
| var import_node_process = __toESM(require("node:process")); | |
| var import_node_process2 = __toESM(require("node:process")); | |
| var import_node_path3 = __toESM(require("node:path")); | |
| var import_node_url = require("node:url"); | |
| var import_node_process3 = __toESM(require("node:process")); | |
| var import_node_os = require("node:os"); | |
| var import_node_os2 = require("node:os"); | |
| var import_node_os3 = __toESM(require("node:os")); | |
| var import_node_fs2 = require("node:fs"); | |
| var import_node_child_process2 = require("node:child_process"); | |
| var import_node_fs3 = require("node:fs"); | |
| var import_promises = require("node:timers/promises"); | |
| var import_node_buffer2 = require("node:buffer"); | |
| var import_node_child_process3 = require("node:child_process"); | |
| var import_node_util2 = require("node:util"); | |
| var import_node_process4 = __toESM(require("node:process")); | |
| var require_windows = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js"(exports, module2) { | |
| "use strict"; | |
| module2.exports = isexe; | |
| isexe.sync = sync; | |
| var fs2 = (0, import_chunk_QGM4M3NI.__require)("fs"); | |
| function checkPathExt(path4, options) { | |
| var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT; | |
| if (!pathext) { | |
| return true; | |
| } | |
| pathext = pathext.split(";"); | |
| if (pathext.indexOf("") !== -1) { | |
| return true; | |
| } | |
| for (var i = 0; i < pathext.length; i++) { | |
| var p = pathext[i].toLowerCase(); | |
| if (p && path4.substr(-p.length).toLowerCase() === p) { | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| function checkStat(stat, path4, options) { | |
| if (!stat.isSymbolicLink() && !stat.isFile()) { | |
| return false; | |
| } | |
| return checkPathExt(path4, options); | |
| } | |
| function isexe(path4, options, cb) { | |
| fs2.stat(path4, function(er, stat) { | |
| cb(er, er ? false : checkStat(stat, path4, options)); | |
| }); | |
| } | |
| function sync(path4, options) { | |
| return checkStat(fs2.statSync(path4), path4, options); | |
| } | |
| } | |
| }); | |
| var require_mode = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js"(exports, module2) { | |
| "use strict"; | |
| module2.exports = isexe; | |
| isexe.sync = sync; | |
| var fs2 = (0, import_chunk_QGM4M3NI.__require)("fs"); | |
| function isexe(path4, options, cb) { | |
| fs2.stat(path4, function(er, stat) { | |
| cb(er, er ? false : checkStat(stat, options)); | |
| }); | |
| } | |
| function sync(path4, options) { | |
| return checkStat(fs2.statSync(path4), options); | |
| } | |
| function checkStat(stat, options) { | |
| return stat.isFile() && checkMode(stat, options); | |
| } | |
| function checkMode(stat, options) { | |
| var mod = stat.mode; | |
| var uid = stat.uid; | |
| var gid = stat.gid; | |
| var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid(); | |
| var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid(); | |
| var u = parseInt("100", 8); | |
| var g = parseInt("010", 8); | |
| var o = parseInt("001", 8); | |
| var ug = u | g; | |
| var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0; | |
| return ret; | |
| } | |
| } | |
| }); | |
| var require_isexe = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js"(exports, module2) { | |
| "use strict"; | |
| var fs2 = (0, import_chunk_QGM4M3NI.__require)("fs"); | |
| var core; | |
| if (process.platform === "win32" || global.TESTING_WINDOWS) { | |
| core = require_windows(); | |
| } else { | |
| core = require_mode(); | |
| } | |
| module2.exports = isexe; | |
| isexe.sync = sync; | |
| function isexe(path4, options, cb) { | |
| if (typeof options === "function") { | |
| cb = options; | |
| options = {}; | |
| } | |
| if (!cb) { | |
| if (typeof Promise !== "function") { | |
| throw new TypeError("callback not provided"); | |
| } | |
| return new Promise(function(resolve, reject) { | |
| isexe(path4, options || {}, function(er, is) { | |
| if (er) { | |
| reject(er); | |
| } else { | |
| resolve(is); | |
| } | |
| }); | |
| }); | |
| } | |
| core(path4, options || {}, function(er, is) { | |
| if (er) { | |
| if (er.code === "EACCES" || options && options.ignoreErrors) { | |
| er = null; | |
| is = false; | |
| } | |
| } | |
| cb(er, is); | |
| }); | |
| } | |
| function sync(path4, options) { | |
| try { | |
| return core.sync(path4, options || {}); | |
| } catch (er) { | |
| if (options && options.ignoreErrors || er.code === "EACCES") { | |
| return false; | |
| } else { | |
| throw er; | |
| } | |
| } | |
| } | |
| } | |
| }); | |
| var require_which = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js"(exports, module2) { | |
| "use strict"; | |
| var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys"; | |
| var path4 = (0, import_chunk_QGM4M3NI.__require)("path"); | |
| var COLON = isWindows ? ";" : ":"; | |
| var isexe = require_isexe(); | |
| var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" }); | |
| var getPathInfo = (cmd, opt) => { | |
| const colon = opt.colon || COLON; | |
| const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [""] : [ | |
| // windows always checks the cwd first | |
| ...isWindows ? [process.cwd()] : [], | |
| ...(opt.path || process.env.PATH || /* istanbul ignore next: very unusual */ | |
| "").split(colon) | |
| ]; | |
| const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : ""; | |
| const pathExt = isWindows ? pathExtExe.split(colon) : [""]; | |
| if (isWindows) { | |
| if (cmd.indexOf(".") !== -1 && pathExt[0] !== "") | |
| pathExt.unshift(""); | |
| } | |
| return { | |
| pathEnv, | |
| pathExt, | |
| pathExtExe | |
| }; | |
| }; | |
| var which = (cmd, opt, cb) => { | |
| if (typeof opt === "function") { | |
| cb = opt; | |
| opt = {}; | |
| } | |
| if (!opt) | |
| opt = {}; | |
| const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); | |
| const found = []; | |
| const step = (i) => new Promise((resolve, reject) => { | |
| if (i === pathEnv.length) | |
| return opt.all && found.length ? resolve(found) : reject(getNotFoundError(cmd)); | |
| const ppRaw = pathEnv[i]; | |
| const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; | |
| const pCmd = path4.join(pathPart, cmd); | |
| const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; | |
| resolve(subStep(p, i, 0)); | |
| }); | |
| const subStep = (p, i, ii) => new Promise((resolve, reject) => { | |
| if (ii === pathExt.length) | |
| return resolve(step(i + 1)); | |
| const ext = pathExt[ii]; | |
| isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { | |
| if (!er && is) { | |
| if (opt.all) | |
| found.push(p + ext); | |
| else | |
| return resolve(p + ext); | |
| } | |
| return resolve(subStep(p, i, ii + 1)); | |
| }); | |
| }); | |
| return cb ? step(0).then((res) => cb(null, res), cb) : step(0); | |
| }; | |
| var whichSync = (cmd, opt) => { | |
| opt = opt || {}; | |
| const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); | |
| const found = []; | |
| for (let i = 0; i < pathEnv.length; i++) { | |
| const ppRaw = pathEnv[i]; | |
| const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; | |
| const pCmd = path4.join(pathPart, cmd); | |
| const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; | |
| for (let j = 0; j < pathExt.length; j++) { | |
| const cur = p + pathExt[j]; | |
| try { | |
| const is = isexe.sync(cur, { pathExt: pathExtExe }); | |
| if (is) { | |
| if (opt.all) | |
| found.push(cur); | |
| else | |
| return cur; | |
| } | |
| } catch (ex) { | |
| } | |
| } | |
| } | |
| if (opt.all && found.length) | |
| return found; | |
| if (opt.nothrow) | |
| return null; | |
| throw getNotFoundError(cmd); | |
| }; | |
| module2.exports = which; | |
| which.sync = whichSync; | |
| } | |
| }); | |
| var require_path_key = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js"(exports, module2) { | |
| "use strict"; | |
| var pathKey2 = (options = {}) => { | |
| const environment = options.env || process.env; | |
| const platform = options.platform || process.platform; | |
| if (platform !== "win32") { | |
| return "PATH"; | |
| } | |
| return Object.keys(environment).reverse().find((key) => key.toUpperCase() === "PATH") || "Path"; | |
| }; | |
| module2.exports = pathKey2; | |
| module2.exports.default = pathKey2; | |
| } | |
| }); | |
| var require_resolveCommand = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js"(exports, module2) { | |
| "use strict"; | |
| var path4 = (0, import_chunk_QGM4M3NI.__require)("path"); | |
| var which = require_which(); | |
| var getPathKey = require_path_key(); | |
| function resolveCommandAttempt(parsed, withoutPathExt) { | |
| const env = parsed.options.env || process.env; | |
| const cwd = process.cwd(); | |
| const hasCustomCwd = parsed.options.cwd != null; | |
| const shouldSwitchCwd = hasCustomCwd && process.chdir !== void 0 && !process.chdir.disabled; | |
| if (shouldSwitchCwd) { | |
| try { | |
| process.chdir(parsed.options.cwd); | |
| } catch (err) { | |
| } | |
| } | |
| let resolved; | |
| try { | |
| resolved = which.sync(parsed.command, { | |
| path: env[getPathKey({ env })], | |
| pathExt: withoutPathExt ? path4.delimiter : void 0 | |
| }); | |
| } catch (e) { | |
| } finally { | |
| if (shouldSwitchCwd) { | |
| process.chdir(cwd); | |
| } | |
| } | |
| if (resolved) { | |
| resolved = path4.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved); | |
| } | |
| return resolved; | |
| } | |
| function resolveCommand(parsed) { | |
| return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); | |
| } | |
| module2.exports = resolveCommand; | |
| } | |
| }); | |
| var require_escape = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js"(exports, module2) { | |
| "use strict"; | |
| var metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; | |
| function escapeCommand(arg) { | |
| arg = arg.replace(metaCharsRegExp, "^$1"); | |
| return arg; | |
| } | |
| function escapeArgument(arg, doubleEscapeMetaChars) { | |
| arg = `${arg}`; | |
| arg = arg.replace(/(?=(\\+?)?)\1"/g, '$1$1\\"'); | |
| arg = arg.replace(/(?=(\\+?)?)\1$/, "$1$1"); | |
| arg = `"${arg}"`; | |
| arg = arg.replace(metaCharsRegExp, "^$1"); | |
| if (doubleEscapeMetaChars) { | |
| arg = arg.replace(metaCharsRegExp, "^$1"); | |
| } | |
| return arg; | |
| } | |
| module2.exports.command = escapeCommand; | |
| module2.exports.argument = escapeArgument; | |
| } | |
| }); | |
| var require_shebang_regex = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js"(exports, module2) { | |
| "use strict"; | |
| module2.exports = /^#!(.*)/; | |
| } | |
| }); | |
| var require_shebang_command = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js"(exports, module2) { | |
| "use strict"; | |
| var shebangRegex = require_shebang_regex(); | |
| module2.exports = (string = "") => { | |
| const match = string.match(shebangRegex); | |
| if (!match) { | |
| return null; | |
| } | |
| const [path4, argument] = match[0].replace(/#! ?/, "").split(" "); | |
| const binary = path4.split("/").pop(); | |
| if (binary === "env") { | |
| return argument; | |
| } | |
| return argument ? `${binary} ${argument}` : binary; | |
| }; | |
| } | |
| }); | |
| var require_readShebang = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js"(exports, module2) { | |
| "use strict"; | |
| var fs2 = (0, import_chunk_QGM4M3NI.__require)("fs"); | |
| var shebangCommand = require_shebang_command(); | |
| function readShebang(command) { | |
| const size = 150; | |
| const buffer = Buffer.alloc(size); | |
| let fd; | |
| try { | |
| fd = fs2.openSync(command, "r"); | |
| fs2.readSync(fd, buffer, 0, size, 0); | |
| fs2.closeSync(fd); | |
| } catch (e) { | |
| } | |
| return shebangCommand(buffer.toString()); | |
| } | |
| module2.exports = readShebang; | |
| } | |
| }); | |
| var require_parse = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js"(exports, module2) { | |
| "use strict"; | |
| var path4 = (0, import_chunk_QGM4M3NI.__require)("path"); | |
| var resolveCommand = require_resolveCommand(); | |
| var escape = require_escape(); | |
| var readShebang = require_readShebang(); | |
| var isWin = process.platform === "win32"; | |
| var isExecutableRegExp = /\.(?:com|exe)$/i; | |
| var isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; | |
| function detectShebang(parsed) { | |
| parsed.file = resolveCommand(parsed); | |
| const shebang = parsed.file && readShebang(parsed.file); | |
| if (shebang) { | |
| parsed.args.unshift(parsed.file); | |
| parsed.command = shebang; | |
| return resolveCommand(parsed); | |
| } | |
| return parsed.file; | |
| } | |
| function parseNonShell(parsed) { | |
| if (!isWin) { | |
| return parsed; | |
| } | |
| const commandFile = detectShebang(parsed); | |
| const needsShell = !isExecutableRegExp.test(commandFile); | |
| if (parsed.options.forceShell || needsShell) { | |
| const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); | |
| parsed.command = path4.normalize(parsed.command); | |
| parsed.command = escape.command(parsed.command); | |
| parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); | |
| const shellCommand = [parsed.command].concat(parsed.args).join(" "); | |
| parsed.args = ["/d", "/s", "/c", `"${shellCommand}"`]; | |
| parsed.command = process.env.comspec || "cmd.exe"; | |
| parsed.options.windowsVerbatimArguments = true; | |
| } | |
| return parsed; | |
| } | |
| function parse(command, args, options) { | |
| if (args && !Array.isArray(args)) { | |
| options = args; | |
| args = null; | |
| } | |
| args = args ? args.slice(0) : []; | |
| options = Object.assign({}, options); | |
| const parsed = { | |
| command, | |
| args, | |
| options, | |
| file: void 0, | |
| original: { | |
| command, | |
| args | |
| } | |
| }; | |
| return options.shell ? parsed : parseNonShell(parsed); | |
| } | |
| module2.exports = parse; | |
| } | |
| }); | |
| var require_enoent = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js"(exports, module2) { | |
| "use strict"; | |
| var isWin = process.platform === "win32"; | |
| function notFoundError(original, syscall) { | |
| return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { | |
| code: "ENOENT", | |
| errno: "ENOENT", | |
| syscall: `${syscall} ${original.command}`, | |
| path: original.command, | |
| spawnargs: original.args | |
| }); | |
| } | |
| function hookChildProcess(cp, parsed) { | |
| if (!isWin) { | |
| return; | |
| } | |
| const originalEmit = cp.emit; | |
| cp.emit = function(name, arg1) { | |
| if (name === "exit") { | |
| const err = verifyENOENT(arg1, parsed); | |
| if (err) { | |
| return originalEmit.call(cp, "error", err); | |
| } | |
| } | |
| return originalEmit.apply(cp, arguments); | |
| }; | |
| } | |
| function verifyENOENT(status, parsed) { | |
| if (isWin && status === 1 && !parsed.file) { | |
| return notFoundError(parsed.original, "spawn"); | |
| } | |
| return null; | |
| } | |
| function verifyENOENTSync(status, parsed) { | |
| if (isWin && status === 1 && !parsed.file) { | |
| return notFoundError(parsed.original, "spawnSync"); | |
| } | |
| return null; | |
| } | |
| module2.exports = { | |
| hookChildProcess, | |
| verifyENOENT, | |
| verifyENOENTSync, | |
| notFoundError | |
| }; | |
| } | |
| }); | |
| var require_cross_spawn = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js"(exports, module2) { | |
| "use strict"; | |
| var cp = (0, import_chunk_QGM4M3NI.__require)("child_process"); | |
| var parse = require_parse(); | |
| var enoent = require_enoent(); | |
| function spawn(command, args, options) { | |
| const parsed = parse(command, args, options); | |
| const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); | |
| enoent.hookChildProcess(spawned, parsed); | |
| return spawned; | |
| } | |
| function spawnSync(command, args, options) { | |
| const parsed = parse(command, args, options); | |
| const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); | |
| result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); | |
| return result; | |
| } | |
| module2.exports = spawn; | |
| module2.exports.spawn = spawn; | |
| module2.exports.sync = spawnSync; | |
| module2.exports._parse = parse; | |
| module2.exports._enoent = enoent; | |
| } | |
| }); | |
| var require_merge_stream = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "../../node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js"(exports, module2) { | |
| "use strict"; | |
| var { PassThrough } = (0, import_chunk_QGM4M3NI.__require)("stream"); | |
| module2.exports = function() { | |
| var sources = []; | |
| var output = new PassThrough({ objectMode: true }); | |
| output.setMaxListeners(0); | |
| output.add = add; | |
| output.isEmpty = isEmpty; | |
| output.on("unpipe", remove); | |
| Array.prototype.slice.call(arguments).forEach(add); | |
| return output; | |
| function add(source) { | |
| if (Array.isArray(source)) { | |
| source.forEach(add); | |
| return this; | |
| } | |
| sources.push(source); | |
| source.once("end", remove.bind(null, source)); | |
| source.once("error", output.emit.bind(output, "error")); | |
| source.pipe(output, { end: false }); | |
| return this; | |
| } | |
| function isEmpty() { | |
| return sources.length == 0; | |
| } | |
| function remove(source) { | |
| sources = sources.filter(function(it) { | |
| return it !== source; | |
| }); | |
| if (!sources.length && output.readable) { | |
| output.end(); | |
| } | |
| } | |
| }; | |
| } | |
| }); | |
| var require_package = (0, import_chunk_QGM4M3NI.__commonJS)({ | |
| "package.json"(exports, module2) { | |
| module2.exports = { | |
| name: "@prisma/fetch-engine", | |
| version: "6.19.3", | |
| description: "This package is intended for Prisma's internal use", | |
| main: "dist/index.js", | |
| types: "dist/index.d.ts", | |
| license: "Apache-2.0", | |
| author: "Tim Suchanek <suchanek@prisma.io>", | |
| homepage: "https://www.prisma.io", | |
| repository: { | |
| type: "git", | |
| url: "https://github.com/prisma/prisma.git", | |
| directory: "packages/fetch-engine" | |
| }, | |
| bugs: "https://github.com/prisma/prisma/issues", | |
| enginesOverride: {}, | |
| devDependencies: { | |
| "@types/node": "18.19.76", | |
| "@types/progress": "2.0.7", | |
| del: "6.1.1", | |
| execa: "8.0.1", | |
| "find-cache-dir": "5.0.0", | |
| "fs-extra": "11.3.0", | |
| hasha: "5.2.2", | |
| "http-proxy-agent": "7.0.2", | |
| "https-proxy-agent": "7.0.6", | |
| kleur: "4.1.5", | |
| "node-fetch": "3.3.2", | |
| "p-filter": "4.1.0", | |
| "p-map": "4.0.0", | |
| "p-retry": "4.6.2", | |
| progress: "2.0.3", | |
| "temp-dir": "2.0.0", | |
| tempy: "1.0.1", | |
| "timeout-signal": "2.0.0", | |
| typescript: "5.4.5" | |
| }, | |
| dependencies: { | |
| "@prisma/debug": "workspace:*", | |
| "@prisma/engines-version": "7.1.1-3.c2990dca591cba766e3b7ef5d9e8a84796e47ab7", | |
| "@prisma/get-platform": "workspace:*" | |
| }, | |
| scripts: { | |
| dev: "DEV=true tsx helpers/build.ts", | |
| build: "tsx helpers/build.ts", | |
| test: "vitest run", | |
| prepublishOnly: "pnpm run build" | |
| }, | |
| files: [ | |
| "README.md", | |
| "dist" | |
| ], | |
| sideEffects: false | |
| }; | |
| } | |
| }); | |
| var import_cross_spawn = (0, import_chunk_QGM4M3NI.__toESM)(require_cross_spawn(), 1); | |
| function stripFinalNewline(input) { | |
| const LF = typeof input === "string" ? "\n" : "\n".charCodeAt(); | |
| const CR = typeof input === "string" ? "\r" : "\r".charCodeAt(); | |
| if (input[input.length - 1] === LF) { | |
| input = input.slice(0, -1); | |
| } | |
| if (input[input.length - 1] === CR) { | |
| input = input.slice(0, -1); | |
| } | |
| return input; | |
| } | |
| function pathKey(options = {}) { | |
| const { | |
| env = process.env, | |
| platform = process.platform | |
| } = options; | |
| if (platform !== "win32") { | |
| return "PATH"; | |
| } | |
| return Object.keys(env).reverse().find((key) => key.toUpperCase() === "PATH") || "Path"; | |
| } | |
| var npmRunPath = ({ | |
| cwd = import_node_process2.default.cwd(), | |
| path: pathOption = import_node_process2.default.env[pathKey()], | |
| preferLocal = true, | |
| execPath = import_node_process2.default.execPath, | |
| addExecPath = true | |
| } = {}) => { | |
| const cwdString = cwd instanceof URL ? (0, import_node_url.fileURLToPath)(cwd) : cwd; | |
| const cwdPath = import_node_path3.default.resolve(cwdString); | |
| const result = []; | |
| if (preferLocal) { | |
| applyPreferLocal(result, cwdPath); | |
| } | |
| if (addExecPath) { | |
| applyExecPath(result, execPath, cwdPath); | |
| } | |
| return [...result, pathOption].join(import_node_path3.default.delimiter); | |
| }; | |
| var applyPreferLocal = (result, cwdPath) => { | |
| let previous; | |
| while (previous !== cwdPath) { | |
| result.push(import_node_path3.default.join(cwdPath, "node_modules/.bin")); | |
| previous = cwdPath; | |
| cwdPath = import_node_path3.default.resolve(cwdPath, ".."); | |
| } | |
| }; | |
| var applyExecPath = (result, execPath, cwdPath) => { | |
| const execPathString = execPath instanceof URL ? (0, import_node_url.fileURLToPath)(execPath) : execPath; | |
| result.push(import_node_path3.default.resolve(cwdPath, execPathString, "..")); | |
| }; | |
| var npmRunPathEnv = ({ env = import_node_process2.default.env, ...options } = {}) => { | |
| env = { ...env }; | |
| const pathName = pathKey({ env }); | |
| options.path = env[pathName]; | |
| env[pathName] = npmRunPath(options); | |
| return env; | |
| }; | |
| var copyProperty = (to, from, property, ignoreNonConfigurable) => { | |
| if (property === "length" || property === "prototype") { | |
| return; | |
| } | |
| if (property === "arguments" || property === "caller") { | |
| return; | |
| } | |
| const toDescriptor = Object.getOwnPropertyDescriptor(to, property); | |
| const fromDescriptor = Object.getOwnPropertyDescriptor(from, property); | |
| if (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) { | |
| return; | |
| } | |
| Object.defineProperty(to, property, fromDescriptor); | |
| }; | |
| var canCopyProperty = function(toDescriptor, fromDescriptor) { | |
| return toDescriptor === void 0 || toDescriptor.configurable || toDescriptor.writable === fromDescriptor.writable && toDescriptor.enumerable === fromDescriptor.enumerable && toDescriptor.configurable === fromDescriptor.configurable && (toDescriptor.writable || toDescriptor.value === fromDescriptor.value); | |
| }; | |
| var changePrototype = (to, from) => { | |
| const fromPrototype = Object.getPrototypeOf(from); | |
| if (fromPrototype === Object.getPrototypeOf(to)) { | |
| return; | |
| } | |
| Object.setPrototypeOf(to, fromPrototype); | |
| }; | |
| var wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/ | |
| ${fromBody}`; | |
| var toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, "toString"); | |
| var toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, "name"); | |
| var changeToString = (to, from, name) => { | |
| const withName = name === "" ? "" : `with ${name.trim()}() `; | |
| const newToString = wrappedToString.bind(null, withName, from.toString()); | |
| Object.defineProperty(newToString, "name", toStringName); | |
| Object.defineProperty(to, "toString", { ...toStringDescriptor, value: newToString }); | |
| }; | |
| function mimicFunction(to, from, { ignoreNonConfigurable = false } = {}) { | |
| const { name } = to; | |
| for (const property of Reflect.ownKeys(from)) { | |
| copyProperty(to, from, property, ignoreNonConfigurable); | |
| } | |
| changePrototype(to, from); | |
| changeToString(to, from, name); | |
| return to; | |
| } | |
| var calledFunctions = /* @__PURE__ */ new WeakMap(); | |
| var onetime = (function_, options = {}) => { | |
| if (typeof function_ !== "function") { | |
| throw new TypeError("Expected a function"); | |
| } | |
| let returnValue; | |
| let callCount = 0; | |
| const functionName = function_.displayName || function_.name || "<anonymous>"; | |
| const onetime2 = function(...arguments_) { | |
| calledFunctions.set(onetime2, ++callCount); | |
| if (callCount === 1) { | |
| returnValue = function_.apply(this, arguments_); | |
| function_ = null; | |
| } else if (options.throw === true) { | |
| throw new Error(`Function \`${functionName}\` can only be called once`); | |
| } | |
| return returnValue; | |
| }; | |
| mimicFunction(onetime2, function_); | |
| calledFunctions.set(onetime2, callCount); | |
| return onetime2; | |
| }; | |
| onetime.callCount = (function_) => { | |
| if (!calledFunctions.has(function_)) { | |
| throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`); | |
| } | |
| return calledFunctions.get(function_); | |
| }; | |
| var onetime_default = onetime; | |
| var getRealtimeSignals = () => { | |
| const length = SIGRTMAX - SIGRTMIN + 1; | |
| return Array.from({ length }, getRealtimeSignal); | |
| }; | |
| var getRealtimeSignal = (value, index) => ({ | |
| name: `SIGRT${index + 1}`, | |
| number: SIGRTMIN + index, | |
| action: "terminate", | |
| description: "Application-specific signal (realtime)", | |
| standard: "posix" | |
| }); | |
| var SIGRTMIN = 34; | |
| var SIGRTMAX = 64; | |
| var SIGNALS = [ | |
| { | |
| name: "SIGHUP", | |
| number: 1, | |
| action: "terminate", | |
| description: "Terminal closed", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGINT", | |
| number: 2, | |
| action: "terminate", | |
| description: "User interruption with CTRL-C", | |
| standard: "ansi" | |
| }, | |
| { | |
| name: "SIGQUIT", | |
| number: 3, | |
| action: "core", | |
| description: "User interruption with CTRL-\\", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGILL", | |
| number: 4, | |
| action: "core", | |
| description: "Invalid machine instruction", | |
| standard: "ansi" | |
| }, | |
| { | |
| name: "SIGTRAP", | |
| number: 5, | |
| action: "core", | |
| description: "Debugger breakpoint", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGABRT", | |
| number: 6, | |
| action: "core", | |
| description: "Aborted", | |
| standard: "ansi" | |
| }, | |
| { | |
| name: "SIGIOT", | |
| number: 6, | |
| action: "core", | |
| description: "Aborted", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGBUS", | |
| number: 7, | |
| action: "core", | |
| description: "Bus error due to misaligned, non-existing address or paging error", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGEMT", | |
| number: 7, | |
| action: "terminate", | |
| description: "Command should be emulated but is not implemented", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGFPE", | |
| number: 8, | |
| action: "core", | |
| description: "Floating point arithmetic error", | |
| standard: "ansi" | |
| }, | |
| { | |
| name: "SIGKILL", | |
| number: 9, | |
| action: "terminate", | |
| description: "Forced termination", | |
| standard: "posix", | |
| forced: true | |
| }, | |
| { | |
| name: "SIGUSR1", | |
| number: 10, | |
| action: "terminate", | |
| description: "Application-specific signal", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGSEGV", | |
| number: 11, | |
| action: "core", | |
| description: "Segmentation fault", | |
| standard: "ansi" | |
| }, | |
| { | |
| name: "SIGUSR2", | |
| number: 12, | |
| action: "terminate", | |
| description: "Application-specific signal", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGPIPE", | |
| number: 13, | |
| action: "terminate", | |
| description: "Broken pipe or socket", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGALRM", | |
| number: 14, | |
| action: "terminate", | |
| description: "Timeout or timer", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGTERM", | |
| number: 15, | |
| action: "terminate", | |
| description: "Termination", | |
| standard: "ansi" | |
| }, | |
| { | |
| name: "SIGSTKFLT", | |
| number: 16, | |
| action: "terminate", | |
| description: "Stack is empty or overflowed", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGCHLD", | |
| number: 17, | |
| action: "ignore", | |
| description: "Child process terminated, paused or unpaused", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGCLD", | |
| number: 17, | |
| action: "ignore", | |
| description: "Child process terminated, paused or unpaused", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGCONT", | |
| number: 18, | |
| action: "unpause", | |
| description: "Unpaused", | |
| standard: "posix", | |
| forced: true | |
| }, | |
| { | |
| name: "SIGSTOP", | |
| number: 19, | |
| action: "pause", | |
| description: "Paused", | |
| standard: "posix", | |
| forced: true | |
| }, | |
| { | |
| name: "SIGTSTP", | |
| number: 20, | |
| action: "pause", | |
| description: 'Paused using CTRL-Z or "suspend"', | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGTTIN", | |
| number: 21, | |
| action: "pause", | |
| description: "Background process cannot read terminal input", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGBREAK", | |
| number: 21, | |
| action: "terminate", | |
| description: "User interruption with CTRL-BREAK", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGTTOU", | |
| number: 22, | |
| action: "pause", | |
| description: "Background process cannot write to terminal output", | |
| standard: "posix" | |
| }, | |
| { | |
| name: "SIGURG", | |
| number: 23, | |
| action: "ignore", | |
| description: "Socket received out-of-band data", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGXCPU", | |
| number: 24, | |
| action: "core", | |
| description: "Process timed out", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGXFSZ", | |
| number: 25, | |
| action: "core", | |
| description: "File too big", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGVTALRM", | |
| number: 26, | |
| action: "terminate", | |
| description: "Timeout or timer", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGPROF", | |
| number: 27, | |
| action: "terminate", | |
| description: "Timeout or timer", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGWINCH", | |
| number: 28, | |
| action: "ignore", | |
| description: "Terminal window size changed", | |
| standard: "bsd" | |
| }, | |
| { | |
| name: "SIGIO", | |
| number: 29, | |
| action: "terminate", | |
| description: "I/O is available", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGPOLL", | |
| number: 29, | |
| action: "terminate", | |
| description: "Watched event", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGINFO", | |
| number: 29, | |
| action: "ignore", | |
| description: "Request for process information", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGPWR", | |
| number: 30, | |
| action: "terminate", | |
| description: "Device running out of power", | |
| standard: "systemv" | |
| }, | |
| { | |
| name: "SIGSYS", | |
| number: 31, | |
| action: "core", | |
| description: "Invalid system call", | |
| standard: "other" | |
| }, | |
| { | |
| name: "SIGUNUSED", | |
| number: 31, | |
| action: "terminate", | |
| description: "Invalid system call", | |
| standard: "other" | |
| } | |
| ]; | |
| var getSignals = () => { | |
| const realtimeSignals = getRealtimeSignals(); | |
| const signals2 = [...SIGNALS, ...realtimeSignals].map(normalizeSignal); | |
| return signals2; | |
| }; | |
| var normalizeSignal = ({ | |
| name, | |
| number: defaultNumber, | |
| description, | |
| action, | |
| forced = false, | |
| standard | |
| }) => { | |
| const { | |
| signals: { [name]: constantSignal } | |
| } = import_node_os2.constants; | |
| const supported = constantSignal !== void 0; | |
| const number = supported ? constantSignal : defaultNumber; | |
| return { name, number, description, supported, action, forced, standard }; | |
| }; | |
| var getSignalsByName = () => { | |
| const signals2 = getSignals(); | |
| return Object.fromEntries(signals2.map(getSignalByName)); | |
| }; | |
| var getSignalByName = ({ | |
| name, | |
| number, | |
| description, | |
| supported, | |
| action, | |
| forced, | |
| standard | |
| }) => [name, { name, number, description, supported, action, forced, standard }]; | |
| var signalsByName = getSignalsByName(); | |
| var getSignalsByNumber = () => { | |
| const signals2 = getSignals(); | |
| const length = SIGRTMAX + 1; | |
| const signalsA = Array.from( | |
| { length }, | |
| (value, number) => getSignalByNumber(number, signals2) | |
| ); | |
| return Object.assign({}, ...signalsA); | |
| }; | |
| var getSignalByNumber = (number, signals2) => { | |
| const signal = findSignalByNumber(number, signals2); | |
| if (signal === void 0) { | |
| return {}; | |
| } | |
| const { name, description, supported, action, forced, standard } = signal; | |
| return { | |
| [number]: { | |
| name, | |
| number, | |
| description, | |
| supported, | |
| action, | |
| forced, | |
| standard | |
| } | |
| }; | |
| }; | |
| var findSignalByNumber = (number, signals2) => { | |
| const signal = signals2.find(({ name }) => import_node_os.constants.signals[name] === number); | |
| if (signal !== void 0) { | |
| return signal; | |
| } | |
| return signals2.find((signalA) => signalA.number === number); | |
| }; | |
| var signalsByNumber = getSignalsByNumber(); | |
| var getErrorPrefix = ({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled }) => { | |
| if (timedOut) { | |
| return `timed out after ${timeout} milliseconds`; | |
| } | |
| if (isCanceled) { | |
| return "was canceled"; | |
| } | |
| if (errorCode !== void 0) { | |
| return `failed with ${errorCode}`; | |
| } | |
| if (signal !== void 0) { | |
| return `was killed with ${signal} (${signalDescription})`; | |
| } | |
| if (exitCode !== void 0) { | |
| return `failed with exit code ${exitCode}`; | |
| } | |
| return "failed"; | |
| }; | |
| var makeError = ({ | |
| stdout, | |
| stderr, | |
| all, | |
| error, | |
| signal, | |
| exitCode, | |
| command, | |
| escapedCommand, | |
| timedOut, | |
| isCanceled, | |
| killed, | |
| parsed: { options: { timeout, cwd = import_node_process3.default.cwd() } } | |
| }) => { | |
| exitCode = exitCode === null ? void 0 : exitCode; | |
| signal = signal === null ? void 0 : signal; | |
| const signalDescription = signal === void 0 ? void 0 : signalsByName[signal].description; | |
| const errorCode = error && error.code; | |
| const prefix = getErrorPrefix({ timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled }); | |
| const execaMessage = `Command ${prefix}: ${command}`; | |
| const isError = Object.prototype.toString.call(error) === "[object Error]"; | |
| const shortMessage = isError ? `${execaMessage} | |
| ${error.message}` : execaMessage; | |
| const message = [shortMessage, stderr, stdout].filter(Boolean).join("\n"); | |
| if (isError) { | |
| error.originalMessage = error.message; | |
| error.message = message; | |
| } else { | |
| error = new Error(message); | |
| } | |
| error.shortMessage = shortMessage; | |
| error.command = command; | |
| error.escapedCommand = escapedCommand; | |
| error.exitCode = exitCode; | |
| error.signal = signal; | |
| error.signalDescription = signalDescription; | |
| error.stdout = stdout; | |
| error.stderr = stderr; | |
| error.cwd = cwd; | |
| if (all !== void 0) { | |
| error.all = all; | |
| } | |
| if ("bufferedData" in error) { | |
| delete error.bufferedData; | |
| } | |
| error.failed = true; | |
| error.timedOut = Boolean(timedOut); | |
| error.isCanceled = isCanceled; | |
| error.killed = killed && !timedOut; | |
| return error; | |
| }; | |
| var aliases = ["stdin", "stdout", "stderr"]; | |
| var hasAlias = (options) => aliases.some((alias) => options[alias] !== void 0); | |
| var normalizeStdio = (options) => { | |
| if (!options) { | |
| return; | |
| } | |
| const { stdio } = options; | |
| if (stdio === void 0) { | |
| return aliases.map((alias) => options[alias]); | |
| } | |
| if (hasAlias(options)) { | |
| throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map((alias) => `\`${alias}\``).join(", ")}`); | |
| } | |
| if (typeof stdio === "string") { | |
| return stdio; | |
| } | |
| if (!Array.isArray(stdio)) { | |
| throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); | |
| } | |
| const length = Math.max(stdio.length, aliases.length); | |
| return Array.from({ length }, (value, index) => stdio[index]); | |
| }; | |
| var signals = []; | |
| signals.push("SIGHUP", "SIGINT", "SIGTERM"); | |
| if (process.platform !== "win32") { | |
| signals.push( | |
| "SIGALRM", | |
| "SIGABRT", | |
| "SIGVTALRM", | |
| "SIGXCPU", | |
| "SIGXFSZ", | |
| "SIGUSR2", | |
| "SIGTRAP", | |
| "SIGSYS", | |
| "SIGQUIT", | |
| "SIGIOT" | |
| // should detect profiler and enable/disable accordingly. | |
| // see #21 | |
| // 'SIGPROF' | |
| ); | |
| } | |
| if (process.platform === "linux") { | |
| signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT"); | |
| } | |
| var processOk = (process7) => !!process7 && typeof process7 === "object" && typeof process7.removeListener === "function" && typeof process7.emit === "function" && typeof process7.reallyExit === "function" && typeof process7.listeners === "function" && typeof process7.kill === "function" && typeof process7.pid === "number" && typeof process7.on === "function"; | |
| var kExitEmitter = Symbol.for("signal-exit emitter"); | |
| var global2 = globalThis; | |
| var ObjectDefineProperty = Object.defineProperty.bind(Object); | |
| var Emitter = class { | |
| emitted = { | |
| afterExit: false, | |
| exit: false | |
| }; | |
| listeners = { | |
| afterExit: [], | |
| exit: [] | |
| }; | |
| count = 0; | |
| id = Math.random(); | |
| constructor() { | |
| if (global2[kExitEmitter]) { | |
| return global2[kExitEmitter]; | |
| } | |
| ObjectDefineProperty(global2, kExitEmitter, { | |
| value: this, | |
| writable: false, | |
| enumerable: false, | |
| configurable: false | |
| }); | |
| } | |
| on(ev, fn) { | |
| this.listeners[ev].push(fn); | |
| } | |
| removeListener(ev, fn) { | |
| const list = this.listeners[ev]; | |
| const i = list.indexOf(fn); | |
| if (i === -1) { | |
| return; | |
| } | |
| if (i === 0 && list.length === 1) { | |
| list.length = 0; | |
| } else { | |
| list.splice(i, 1); | |
| } | |
| } | |
| emit(ev, code, signal) { | |
| if (this.emitted[ev]) { | |
| return false; | |
| } | |
| this.emitted[ev] = true; | |
| let ret = false; | |
| for (const fn of this.listeners[ev]) { | |
| ret = fn(code, signal) === true || ret; | |
| } | |
| if (ev === "exit") { | |
| ret = this.emit("afterExit", code, signal) || ret; | |
| } | |
| return ret; | |
| } | |
| }; | |
| var SignalExitBase = class { | |
| }; | |
| var signalExitWrap = (handler) => { | |
| return { | |
| onExit(cb, opts) { | |
| return handler.onExit(cb, opts); | |
| }, | |
| load() { | |
| return handler.load(); | |
| }, | |
| unload() { | |
| return handler.unload(); | |
| } | |
| }; | |
| }; | |
| var SignalExitFallback = class extends SignalExitBase { | |
| onExit() { | |
| return () => { | |
| }; | |
| } | |
| load() { | |
| } | |
| unload() { | |
| } | |
| }; | |
| var SignalExit = class extends SignalExitBase { | |
| // "SIGHUP" throws an `ENOSYS` error on Windows, | |
| // so use a supported signal instead | |
| /* c8 ignore start */ | |
| #hupSig = process4.platform === "win32" ? "SIGINT" : "SIGHUP"; | |
| /* c8 ignore stop */ | |
| #emitter = new Emitter(); | |
| #process; | |
| #originalProcessEmit; | |
| #originalProcessReallyExit; | |
| #sigListeners = {}; | |
| #loaded = false; | |
| constructor(process7) { | |
| super(); | |
| this.#process = process7; | |
| this.#sigListeners = {}; | |
| for (const sig of signals) { | |
| this.#sigListeners[sig] = () => { | |
| const listeners = this.#process.listeners(sig); | |
| let { count } = this.#emitter; | |
| const p = process7; | |
| if (typeof p.__signal_exit_emitter__ === "object" && typeof p.__signal_exit_emitter__.count === "number") { | |
| count += p.__signal_exit_emitter__.count; | |
| } | |
| if (listeners.length === count) { | |
| this.unload(); | |
| const ret = this.#emitter.emit("exit", null, sig); | |
| const s = sig === "SIGHUP" ? this.#hupSig : sig; | |
| if (!ret) | |
| process7.kill(process7.pid, s); | |
| } | |
| }; | |
| } | |
| this.#originalProcessReallyExit = process7.reallyExit; | |
| this.#originalProcessEmit = process7.emit; | |
| } | |
| onExit(cb, opts) { | |
| if (!processOk(this.#process)) { | |
| return () => { | |
| }; | |
| } | |
| if (this.#loaded === false) { | |
| this.load(); | |
| } | |
| const ev = opts?.alwaysLast ? "afterExit" : "exit"; | |
| this.#emitter.on(ev, cb); | |
| return () => { | |
| this.#emitter.removeListener(ev, cb); | |
| if (this.#emitter.listeners["exit"].length === 0 && this.#emitter.listeners["afterExit"].length === 0) { | |
| this.unload(); | |
| } | |
| }; | |
| } | |
| load() { | |
| if (this.#loaded) { | |
| return; | |
| } | |
| this.#loaded = true; | |
| this.#emitter.count += 1; | |
| for (const sig of signals) { | |
| try { | |
| const fn = this.#sigListeners[sig]; | |
| if (fn) | |
| this.#process.on(sig, fn); | |
| } catch (_) { | |
| } | |
| } | |
| this.#process.emit = (ev, ...a) => { | |
| return this.#processEmit(ev, ...a); | |
| }; | |
| this.#process.reallyExit = (code) => { | |
| return this.#processReallyExit(code); | |
| }; | |
| } | |
| unload() { | |
| if (!this.#loaded) { | |
| return; | |
| } | |
| this.#loaded = false; | |
| signals.forEach((sig) => { | |
| const listener = this.#sigListeners[sig]; | |
| if (!listener) { | |
| throw new Error("Listener not defined for signal: " + sig); | |
| } | |
| try { | |
| this.#process.removeListener(sig, listener); | |
| } catch (_) { | |
| } | |
| }); | |
| this.#process.emit = this.#originalProcessEmit; | |
| this.#process.reallyExit = this.#originalProcessReallyExit; | |
| this.#emitter.count -= 1; | |
| } | |
| #processReallyExit(code) { | |
| if (!processOk(this.#process)) { | |
| return 0; | |
| } | |
| this.#process.exitCode = code || 0; | |
| this.#emitter.emit("exit", this.#process.exitCode, null); | |
| return this.#originalProcessReallyExit.call(this.#process, this.#process.exitCode); | |
| } | |
| #processEmit(ev, ...args) { | |
| const og = this.#originalProcessEmit; | |
| if (ev === "exit" && processOk(this.#process)) { | |
| if (typeof args[0] === "number") { | |
| this.#process.exitCode = args[0]; | |
| } | |
| const ret = og.call(this.#process, ev, ...args); | |
| this.#emitter.emit("exit", this.#process.exitCode, null); | |
| return ret; | |
| } else { | |
| return og.call(this.#process, ev, ...args); | |
| } | |
| } | |
| }; | |
| var process4 = globalThis.process; | |
| var { | |
| /** | |
| * Called when the process is exiting, whether via signal, explicit | |
| * exit, or running out of stuff to do. | |
| * | |
| * If the global process object is not suitable for instrumentation, | |
| * then this will be a no-op. | |
| * | |
| * Returns a function that may be used to unload signal-exit. | |
| */ | |
| onExit, | |
| /** | |
| * Load the listeners. Likely you never need to call this, unless | |
| * doing a rather deep integration with signal-exit functionality. | |
| * Mostly exposed for the benefit of testing. | |
| * | |
| * @internal | |
| */ | |
| load, | |
| /** | |
| * Unload the listeners. Likely you never need to call this, unless | |
| * doing a rather deep integration with signal-exit functionality. | |
| * Mostly exposed for the benefit of testing. | |
| * | |
| * @internal | |
| */ | |
| unload | |
| } = signalExitWrap(processOk(process4) ? new SignalExit(process4) : new SignalExitFallback()); | |
| var DEFAULT_FORCE_KILL_TIMEOUT = 1e3 * 5; | |
| var spawnedKill = (kill, signal = "SIGTERM", options = {}) => { | |
| const killResult = kill(signal); | |
| setKillTimeout(kill, signal, options, killResult); | |
| return killResult; | |
| }; | |
| var setKillTimeout = (kill, signal, options, killResult) => { | |
| if (!shouldForceKill(signal, options, killResult)) { | |
| return; | |
| } | |
| const timeout = getForceKillAfterTimeout(options); | |
| const t = setTimeout(() => { | |
| kill("SIGKILL"); | |
| }, timeout); | |
| if (t.unref) { | |
| t.unref(); | |
| } | |
| }; | |
| var shouldForceKill = (signal, { forceKillAfterTimeout }, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult; | |
| var isSigterm = (signal) => signal === import_node_os3.default.constants.signals.SIGTERM || typeof signal === "string" && signal.toUpperCase() === "SIGTERM"; | |
| var getForceKillAfterTimeout = ({ forceKillAfterTimeout = true }) => { | |
| if (forceKillAfterTimeout === true) { | |
| return DEFAULT_FORCE_KILL_TIMEOUT; | |
| } | |
| if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { | |
| throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); | |
| } | |
| return forceKillAfterTimeout; | |
| }; | |
| var spawnedCancel = (spawned, context) => { | |
| const killResult = spawned.kill(); | |
| if (killResult) { | |
| context.isCanceled = true; | |
| } | |
| }; | |
| var timeoutKill = (spawned, signal, reject) => { | |
| spawned.kill(signal); | |
| reject(Object.assign(new Error("Timed out"), { timedOut: true, signal })); | |
| }; | |
| var setupTimeout = (spawned, { timeout, killSignal = "SIGTERM" }, spawnedPromise) => { | |
| if (timeout === 0 || timeout === void 0) { | |
| return spawnedPromise; | |
| } | |
| let timeoutId; | |
| const timeoutPromise = new Promise((resolve, reject) => { | |
| timeoutId = setTimeout(() => { | |
| timeoutKill(spawned, killSignal, reject); | |
| }, timeout); | |
| }); | |
| const safeSpawnedPromise = spawnedPromise.finally(() => { | |
| clearTimeout(timeoutId); | |
| }); | |
| return Promise.race([timeoutPromise, safeSpawnedPromise]); | |
| }; | |
| var validateTimeout = ({ timeout }) => { | |
| if (timeout !== void 0 && (!Number.isFinite(timeout) || timeout < 0)) { | |
| throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); | |
| } | |
| }; | |
| var setExitHandler = async (spawned, { cleanup, detached }, timedPromise) => { | |
| if (!cleanup || detached) { | |
| return timedPromise; | |
| } | |
| const removeExitHandler = onExit(() => { | |
| spawned.kill(); | |
| }); | |
| return timedPromise.finally(() => { | |
| removeExitHandler(); | |
| }); | |
| }; | |
| function isStream(stream) { | |
| return stream !== null && typeof stream === "object" && typeof stream.pipe === "function"; | |
| } | |
| function isWritableStream(stream) { | |
| return isStream(stream) && stream.writable !== false && typeof stream._write === "function" && typeof stream._writableState === "object"; | |
| } | |
| var isExecaChildProcess = (target) => target instanceof import_node_child_process2.ChildProcess && typeof target.then === "function"; | |
| var pipeToTarget = (spawned, streamName, target) => { | |
| if (typeof target === "string") { | |
| spawned[streamName].pipe((0, import_node_fs2.createWriteStream)(target)); | |
| return spawned; | |
| } | |
| if (isWritableStream(target)) { | |
| spawned[streamName].pipe(target); | |
| return spawned; | |
| } | |
| if (!isExecaChildProcess(target)) { | |
| throw new TypeError("The second argument must be a string, a stream or an Execa child process."); | |
| } | |
| if (!isWritableStream(target.stdin)) { | |
| throw new TypeError("The target child process's stdin must be available."); | |
| } | |
| spawned[streamName].pipe(target.stdin); | |
| return target; | |
| }; | |
| var addPipeMethods = (spawned) => { | |
| if (spawned.stdout !== null) { | |
| spawned.pipeStdout = pipeToTarget.bind(void 0, spawned, "stdout"); | |
| } | |
| if (spawned.stderr !== null) { | |
| spawned.pipeStderr = pipeToTarget.bind(void 0, spawned, "stderr"); | |
| } | |
| if (spawned.all !== void 0) { | |
| spawned.pipeAll = pipeToTarget.bind(void 0, spawned, "all"); | |
| } | |
| }; | |
| var getStreamContents = async (stream, { init, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, finalize }, { maxBuffer = Number.POSITIVE_INFINITY } = {}) => { | |
| if (!isAsyncIterable(stream)) { | |
| throw new Error("The first argument must be a Readable, a ReadableStream, or an async iterable."); | |
| } | |
| const state = init(); | |
| state.length = 0; | |
| try { | |
| for await (const chunk of stream) { | |
| const chunkType = getChunkType(chunk); | |
| const convertedChunk = convertChunk[chunkType](chunk, state); | |
| appendChunk({ convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer }); | |
| } | |
| appendFinalChunk({ state, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer }); | |
| return finalize(state); | |
| } catch (error) { | |
| error.bufferedData = finalize(state); | |
| throw error; | |
| } | |
| }; | |
| var appendFinalChunk = ({ state, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer }) => { | |
| const convertedChunk = getFinalChunk(state); | |
| if (convertedChunk !== void 0) { | |
| appendChunk({ convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer }); | |
| } | |
| }; | |
| var appendChunk = ({ convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer }) => { | |
| const chunkSize = getSize(convertedChunk); | |
| const newLength = state.length + chunkSize; | |
| if (newLength <= maxBuffer) { | |
| addNewChunk(convertedChunk, state, addChunk, newLength); | |
| return; | |
| } | |
| const truncatedChunk = truncateChunk(convertedChunk, maxBuffer - state.length); | |
| if (truncatedChunk !== void 0) { | |
| addNewChunk(truncatedChunk, state, addChunk, maxBuffer); | |
| } | |
| throw new MaxBufferError(); | |
| }; | |
| var addNewChunk = (convertedChunk, state, addChunk, newLength) => { | |
| state.contents = addChunk(convertedChunk, state, newLength); | |
| state.length = newLength; | |
| }; | |
| var isAsyncIterable = (stream) => typeof stream === "object" && stream !== null && typeof stream[Symbol.asyncIterator] === "function"; | |
| var getChunkType = (chunk) => { | |
| const typeOfChunk = typeof chunk; | |
| if (typeOfChunk === "string") { | |
| return "string"; | |
| } | |
| if (typeOfChunk !== "object" || chunk === null) { | |
| return "others"; | |
| } | |
| if (globalThis.Buffer?.isBuffer(chunk)) { | |
| return "buffer"; | |
| } | |
| const prototypeName = objectToString.call(chunk); | |
| if (prototypeName === "[object ArrayBuffer]") { | |
| return "arrayBuffer"; | |
| } | |
| if (prototypeName === "[object DataView]") { | |
| return "dataView"; | |
| } | |
| if (Number.isInteger(chunk.byteLength) && Number.isInteger(chunk.byteOffset) && objectToString.call(chunk.buffer) === "[object ArrayBuffer]") { | |
| return "typedArray"; | |
| } | |
| return "others"; | |
| }; | |
| var { toString: objectToString } = Object.prototype; | |
| var MaxBufferError = class extends Error { | |
| name = "MaxBufferError"; | |
| constructor() { | |
| super("maxBuffer exceeded"); | |
| } | |
| }; | |
| var identity = (value) => value; | |
| var noop = () => void 0; | |
| var getContentsProp = ({ contents }) => contents; | |
| var throwObjectStream = (chunk) => { | |
| throw new Error(`Streams in object mode are not supported: ${String(chunk)}`); | |
| }; | |
| var getLengthProp = (convertedChunk) => convertedChunk.length; | |
| async function getStreamAsArrayBuffer(stream, options) { | |
| return getStreamContents(stream, arrayBufferMethods, options); | |
| } | |
| var initArrayBuffer = () => ({ contents: new ArrayBuffer(0) }); | |
| var useTextEncoder = (chunk) => textEncoder.encode(chunk); | |
| var textEncoder = new TextEncoder(); | |
| var useUint8Array = (chunk) => new Uint8Array(chunk); | |
| var useUint8ArrayWithOffset = (chunk) => new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength); | |
| var truncateArrayBufferChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize); | |
| var addArrayBufferChunk = (convertedChunk, { contents, length: previousLength }, length) => { | |
| const newContents = hasArrayBufferResize() ? resizeArrayBuffer(contents, length) : resizeArrayBufferSlow(contents, length); | |
| new Uint8Array(newContents).set(convertedChunk, previousLength); | |
| return newContents; | |
| }; | |
| var resizeArrayBufferSlow = (contents, length) => { | |
| if (length <= contents.byteLength) { | |
| return contents; | |
| } | |
| const arrayBuffer = new ArrayBuffer(getNewContentsLength(length)); | |
| new Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0); | |
| return arrayBuffer; | |
| }; | |
| var resizeArrayBuffer = (contents, length) => { | |
| if (length <= contents.maxByteLength) { | |
| contents.resize(length); | |
| return contents; | |
| } | |
| const arrayBuffer = new ArrayBuffer(length, { maxByteLength: getNewContentsLength(length) }); | |
| new Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0); | |
| return arrayBuffer; | |
| }; | |
| var getNewContentsLength = (length) => SCALE_FACTOR ** Math.ceil(Math.log(length) / Math.log(SCALE_FACTOR)); | |
| var SCALE_FACTOR = 2; | |
| var finalizeArrayBuffer = ({ contents, length }) => hasArrayBufferResize() ? contents : contents.slice(0, length); | |
| var hasArrayBufferResize = () => "resize" in ArrayBuffer.prototype; | |
| var arrayBufferMethods = { | |
| init: initArrayBuffer, | |
| convertChunk: { | |
| string: useTextEncoder, | |
| buffer: useUint8Array, | |
| arrayBuffer: useUint8Array, | |
| dataView: useUint8ArrayWithOffset, | |
| typedArray: useUint8ArrayWithOffset, | |
| others: throwObjectStream | |
| }, | |
| getSize: getLengthProp, | |
| truncateChunk: truncateArrayBufferChunk, | |
| addChunk: addArrayBufferChunk, | |
| getFinalChunk: noop, | |
| finalize: finalizeArrayBuffer | |
| }; | |
| async function getStreamAsBuffer(stream, options) { | |
| if (!("Buffer" in globalThis)) { | |
| throw new Error("getStreamAsBuffer() is only supported in Node.js"); | |
| } | |
| try { | |
| return arrayBufferToNodeBuffer(await getStreamAsArrayBuffer(stream, options)); | |
| } catch (error) { | |
| if (error.bufferedData !== void 0) { | |
| error.bufferedData = arrayBufferToNodeBuffer(error.bufferedData); | |
| } | |
| throw error; | |
| } | |
| } | |
| var arrayBufferToNodeBuffer = (arrayBuffer) => globalThis.Buffer.from(arrayBuffer); | |
| async function getStreamAsString(stream, options) { | |
| return getStreamContents(stream, stringMethods, options); | |
| } | |
| var initString = () => ({ contents: "", textDecoder: new TextDecoder() }); | |
| var useTextDecoder = (chunk, { textDecoder }) => textDecoder.decode(chunk, { stream: true }); | |
| var addStringChunk = (convertedChunk, { contents }) => contents + convertedChunk; | |
| var truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize); | |
| var getFinalStringChunk = ({ textDecoder }) => { | |
| const finalChunk = textDecoder.decode(); | |
| return finalChunk === "" ? void 0 : finalChunk; | |
| }; | |
| var stringMethods = { | |
| init: initString, | |
| convertChunk: { | |
| string: identity, | |
| buffer: useTextDecoder, | |
| arrayBuffer: useTextDecoder, | |
| dataView: useTextDecoder, | |
| typedArray: useTextDecoder, | |
| others: throwObjectStream | |
| }, | |
| getSize: getLengthProp, | |
| truncateChunk: truncateStringChunk, | |
| addChunk: addStringChunk, | |
| getFinalChunk: getFinalStringChunk, | |
| finalize: getContentsProp | |
| }; | |
| var import_merge_stream = (0, import_chunk_QGM4M3NI.__toESM)(require_merge_stream(), 1); | |
| var validateInputOptions = (input) => { | |
| if (input !== void 0) { | |
| throw new TypeError("The `input` and `inputFile` options cannot be both set."); | |
| } | |
| }; | |
| var getInputSync = ({ input, inputFile }) => { | |
| if (typeof inputFile !== "string") { | |
| return input; | |
| } | |
| validateInputOptions(input); | |
| return (0, import_node_fs3.readFileSync)(inputFile); | |
| }; | |
| var handleInputSync = (options) => { | |
| const input = getInputSync(options); | |
| if (isStream(input)) { | |
| throw new TypeError("The `input` option cannot be a stream in sync mode"); | |
| } | |
| return input; | |
| }; | |
| var getInput = ({ input, inputFile }) => { | |
| if (typeof inputFile !== "string") { | |
| return input; | |
| } | |
| validateInputOptions(input); | |
| return (0, import_node_fs3.createReadStream)(inputFile); | |
| }; | |
| var handleInput = (spawned, options) => { | |
| const input = getInput(options); | |
| if (input === void 0) { | |
| return; | |
| } | |
| if (isStream(input)) { | |
| input.pipe(spawned.stdin); | |
| } else { | |
| spawned.stdin.end(input); | |
| } | |
| }; | |
| var makeAllStream = (spawned, { all }) => { | |
| if (!all || !spawned.stdout && !spawned.stderr) { | |
| return; | |
| } | |
| const mixed = (0, import_merge_stream.default)(); | |
| if (spawned.stdout) { | |
| mixed.add(spawned.stdout); | |
| } | |
| if (spawned.stderr) { | |
| mixed.add(spawned.stderr); | |
| } | |
| return mixed; | |
| }; | |
| var getBufferedData = async (stream, streamPromise) => { | |
| if (!stream || streamPromise === void 0) { | |
| return; | |
| } | |
| await (0, import_promises.setTimeout)(0); | |
| stream.destroy(); | |
| try { | |
| return await streamPromise; | |
| } catch (error) { | |
| return error.bufferedData; | |
| } | |
| }; | |
| var getStreamPromise = (stream, { encoding, buffer, maxBuffer }) => { | |
| if (!stream || !buffer) { | |
| return; | |
| } | |
| if (encoding === "utf8" || encoding === "utf-8") { | |
| return getStreamAsString(stream, { maxBuffer }); | |
| } | |
| if (encoding === null || encoding === "buffer") { | |
| return getStreamAsBuffer(stream, { maxBuffer }); | |
| } | |
| return applyEncoding(stream, maxBuffer, encoding); | |
| }; | |
| var applyEncoding = async (stream, maxBuffer, encoding) => { | |
| const buffer = await getStreamAsBuffer(stream, { maxBuffer }); | |
| return buffer.toString(encoding); | |
| }; | |
| var getSpawnedResult = async ({ stdout, stderr, all }, { encoding, buffer, maxBuffer }, processDone) => { | |
| const stdoutPromise = getStreamPromise(stdout, { encoding, buffer, maxBuffer }); | |
| const stderrPromise = getStreamPromise(stderr, { encoding, buffer, maxBuffer }); | |
| const allPromise = getStreamPromise(all, { encoding, buffer, maxBuffer: maxBuffer * 2 }); | |
| try { | |
| return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); | |
| } catch (error) { | |
| return Promise.all([ | |
| { error, signal: error.signal, timedOut: error.timedOut }, | |
| getBufferedData(stdout, stdoutPromise), | |
| getBufferedData(stderr, stderrPromise), | |
| getBufferedData(all, allPromise) | |
| ]); | |
| } | |
| }; | |
| var nativePromisePrototype = (async () => { | |
| })().constructor.prototype; | |
| var descriptors = ["then", "catch", "finally"].map((property) => [ | |
| property, | |
| Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property) | |
| ]); | |
| var mergePromise = (spawned, promise) => { | |
| for (const [property, descriptor] of descriptors) { | |
| const value = typeof promise === "function" ? (...args) => Reflect.apply(descriptor.value, promise(), args) : descriptor.value.bind(promise); | |
| Reflect.defineProperty(spawned, property, { ...descriptor, value }); | |
| } | |
| }; | |
| var getSpawnedPromise = (spawned) => new Promise((resolve, reject) => { | |
| spawned.on("exit", (exitCode, signal) => { | |
| resolve({ exitCode, signal }); | |
| }); | |
| spawned.on("error", (error) => { | |
| reject(error); | |
| }); | |
| if (spawned.stdin) { | |
| spawned.stdin.on("error", (error) => { | |
| reject(error); | |
| }); | |
| } | |
| }); | |
| var normalizeArgs = (file, args = []) => { | |
| if (!Array.isArray(args)) { | |
| return [file]; | |
| } | |
| return [file, ...args]; | |
| }; | |
| var NO_ESCAPE_REGEXP = /^[\w.-]+$/; | |
| var escapeArg = (arg) => { | |
| if (typeof arg !== "string" || NO_ESCAPE_REGEXP.test(arg)) { | |
| return arg; | |
| } | |
| return `"${arg.replaceAll('"', '\\"')}"`; | |
| }; | |
| var joinCommand = (file, args) => normalizeArgs(file, args).join(" "); | |
| var getEscapedCommand = (file, args) => normalizeArgs(file, args).map((arg) => escapeArg(arg)).join(" "); | |
| var SPACES_REGEXP = / +/g; | |
| var parseExpression = (expression) => { | |
| const typeOfExpression = typeof expression; | |
| if (typeOfExpression === "string") { | |
| return expression; | |
| } | |
| if (typeOfExpression === "number") { | |
| return String(expression); | |
| } | |
| if (typeOfExpression === "object" && expression !== null && !(expression instanceof import_node_child_process3.ChildProcess) && "stdout" in expression) { | |
| const typeOfStdout = typeof expression.stdout; | |
| if (typeOfStdout === "string") { | |
| return expression.stdout; | |
| } | |
| if (import_node_buffer2.Buffer.isBuffer(expression.stdout)) { | |
| return expression.stdout.toString(); | |
| } | |
| throw new TypeError(`Unexpected "${typeOfStdout}" stdout in template expression`); | |
| } | |
| throw new TypeError(`Unexpected "${typeOfExpression}" in template expression`); | |
| }; | |
| var concatTokens = (tokens, nextTokens, isNew) => isNew || tokens.length === 0 || nextTokens.length === 0 ? [...tokens, ...nextTokens] : [ | |
| ...tokens.slice(0, -1), | |
| `${tokens.at(-1)}${nextTokens[0]}`, | |
| ...nextTokens.slice(1) | |
| ]; | |
| var parseTemplate = ({ templates, expressions, tokens, index, template }) => { | |
| const templateString = template ?? templates.raw[index]; | |
| const templateTokens = templateString.split(SPACES_REGEXP).filter(Boolean); | |
| const newTokens = concatTokens( | |
| tokens, | |
| templateTokens, | |
| templateString.startsWith(" ") | |
| ); | |
| if (index === expressions.length) { | |
| return newTokens; | |
| } | |
| const expression = expressions[index]; | |
| const expressionTokens = Array.isArray(expression) ? expression.map((expression2) => parseExpression(expression2)) : [parseExpression(expression)]; | |
| return concatTokens( | |
| newTokens, | |
| expressionTokens, | |
| templateString.endsWith(" ") | |
| ); | |
| }; | |
| var parseTemplates = (templates, expressions) => { | |
| let tokens = []; | |
| for (const [index, template] of templates.entries()) { | |
| tokens = parseTemplate({ templates, expressions, tokens, index, template }); | |
| } | |
| return tokens; | |
| }; | |
| var verboseDefault = (0, import_node_util2.debuglog)("execa").enabled; | |
| var padField = (field, padding) => String(field).padStart(padding, "0"); | |
| var getTimestamp = () => { | |
| const date = /* @__PURE__ */ new Date(); | |
| return `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`; | |
| }; | |
| var logCommand = (escapedCommand, { verbose }) => { | |
| if (!verbose) { | |
| return; | |
| } | |
| import_node_process4.default.stderr.write(`[${getTimestamp()}] ${escapedCommand} | |
| `); | |
| }; | |
| var DEFAULT_MAX_BUFFER = 1e3 * 1e3 * 100; | |
| var getEnv = ({ env: envOption, extendEnv, preferLocal, localDir, execPath }) => { | |
| const env = extendEnv ? { ...import_node_process.default.env, ...envOption } : envOption; | |
| if (preferLocal) { | |
| return npmRunPathEnv({ env, cwd: localDir, execPath }); | |
| } | |
| return env; | |
| }; | |
| var handleArguments = (file, args, options = {}) => { | |
| const parsed = import_cross_spawn.default._parse(file, args, options); | |
| file = parsed.command; | |
| args = parsed.args; | |
| options = parsed.options; | |
| options = { | |
| maxBuffer: DEFAULT_MAX_BUFFER, | |
| buffer: true, | |
| stripFinalNewline: true, | |
| extendEnv: true, | |
| preferLocal: false, | |
| localDir: options.cwd || import_node_process.default.cwd(), | |
| execPath: import_node_process.default.execPath, | |
| encoding: "utf8", | |
| reject: true, | |
| cleanup: true, | |
| all: false, | |
| windowsHide: true, | |
| verbose: verboseDefault, | |
| ...options | |
| }; | |
| options.env = getEnv(options); | |
| options.stdio = normalizeStdio(options); | |
| if (import_node_process.default.platform === "win32" && import_node_path2.default.basename(file, ".exe") === "cmd") { | |
| args.unshift("/q"); | |
| } | |
| return { file, args, options, parsed }; | |
| }; | |
| var handleOutput = (options, value, error) => { | |
| if (typeof value !== "string" && !import_node_buffer.Buffer.isBuffer(value)) { | |
| return error === void 0 ? void 0 : ""; | |
| } | |
| if (options.stripFinalNewline) { | |
| return stripFinalNewline(value); | |
| } | |
| return value; | |
| }; | |
| function execa(file, args, options) { | |
| const parsed = handleArguments(file, args, options); | |
| const command = joinCommand(file, args); | |
| const escapedCommand = getEscapedCommand(file, args); | |
| logCommand(escapedCommand, parsed.options); | |
| validateTimeout(parsed.options); | |
| let spawned; | |
| try { | |
| spawned = import_node_child_process.default.spawn(parsed.file, parsed.args, parsed.options); | |
| } catch (error) { | |
| const dummySpawned = new import_node_child_process.default.ChildProcess(); | |
| const errorPromise = Promise.reject(makeError({ | |
| error, | |
| stdout: "", | |
| stderr: "", | |
| all: "", | |
| command, | |
| escapedCommand, | |
| parsed, | |
| timedOut: false, | |
| isCanceled: false, | |
| killed: false | |
| })); | |
| mergePromise(dummySpawned, errorPromise); | |
| return dummySpawned; | |
| } | |
| const spawnedPromise = getSpawnedPromise(spawned); | |
| const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise); | |
| const processDone = setExitHandler(spawned, parsed.options, timedPromise); | |
| const context = { isCanceled: false }; | |
| spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned)); | |
| spawned.cancel = spawnedCancel.bind(null, spawned, context); | |
| const handlePromise = async () => { | |
| const [{ error, exitCode, signal, timedOut }, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone); | |
| const stdout = handleOutput(parsed.options, stdoutResult); | |
| const stderr = handleOutput(parsed.options, stderrResult); | |
| const all = handleOutput(parsed.options, allResult); | |
| if (error || exitCode !== 0 || signal !== null) { | |
| const returnedError = makeError({ | |
| error, | |
| exitCode, | |
| signal, | |
| stdout, | |
| stderr, | |
| all, | |
| command, | |
| escapedCommand, | |
| parsed, | |
| timedOut, | |
| isCanceled: context.isCanceled || (parsed.options.signal ? parsed.options.signal.aborted : false), | |
| killed: spawned.killed | |
| }); | |
| if (!parsed.options.reject) { | |
| return returnedError; | |
| } | |
| throw returnedError; | |
| } | |
| return { | |
| command, | |
| escapedCommand, | |
| exitCode: 0, | |
| stdout, | |
| stderr, | |
| all, | |
| failed: false, | |
| timedOut: false, | |
| isCanceled: false, | |
| killed: false | |
| }; | |
| }; | |
| const handlePromiseOnce = onetime_default(handlePromise); | |
| handleInput(spawned, parsed.options); | |
| spawned.all = makeAllStream(spawned, parsed.options); | |
| addPipeMethods(spawned); | |
| mergePromise(spawned, handlePromiseOnce); | |
| return spawned; | |
| } | |
| function execaSync(file, args, options) { | |
| const parsed = handleArguments(file, args, options); | |
| const command = joinCommand(file, args); | |
| const escapedCommand = getEscapedCommand(file, args); | |
| logCommand(escapedCommand, parsed.options); | |
| const input = handleInputSync(parsed.options); | |
| let result; | |
| try { | |
| result = import_node_child_process.default.spawnSync(parsed.file, parsed.args, { ...parsed.options, input }); | |
| } catch (error) { | |
| throw makeError({ | |
| error, | |
| stdout: "", | |
| stderr: "", | |
| all: "", | |
| command, | |
| escapedCommand, | |
| parsed, | |
| timedOut: false, | |
| isCanceled: false, | |
| killed: false | |
| }); | |
| } | |
| const stdout = handleOutput(parsed.options, result.stdout, result.error); | |
| const stderr = handleOutput(parsed.options, result.stderr, result.error); | |
| if (result.error || result.status !== 0 || result.signal !== null) { | |
| const error = makeError({ | |
| stdout, | |
| stderr, | |
| error: result.error, | |
| signal: result.signal, | |
| exitCode: result.status, | |
| command, | |
| escapedCommand, | |
| parsed, | |
| timedOut: result.error && result.error.code === "ETIMEDOUT", | |
| isCanceled: false, | |
| killed: result.signal !== null | |
| }); | |
| if (!parsed.options.reject) { | |
| return error; | |
| } | |
| throw error; | |
| } | |
| return { | |
| command, | |
| escapedCommand, | |
| exitCode: 0, | |
| stdout, | |
| stderr, | |
| failed: false, | |
| timedOut: false, | |
| isCanceled: false, | |
| killed: false | |
| }; | |
| } | |
| var normalizeScriptStdin = ({ input, inputFile, stdio }) => input === void 0 && inputFile === void 0 && stdio === void 0 ? { stdin: "inherit" } : {}; | |
| var normalizeScriptOptions = (options = {}) => ({ | |
| preferLocal: true, | |
| ...normalizeScriptStdin(options), | |
| ...options | |
| }); | |
| function create$(options) { | |
| function $2(templatesOrOptions, ...expressions) { | |
| if (!Array.isArray(templatesOrOptions)) { | |
| return create$({ ...options, ...templatesOrOptions }); | |
| } | |
| const [file, ...args] = parseTemplates(templatesOrOptions, expressions); | |
| return execa(file, args, normalizeScriptOptions(options)); | |
| } | |
| $2.sync = (templates, ...expressions) => { | |
| if (!Array.isArray(templates)) { | |
| throw new TypeError("Please use $(options).sync`command` instead of $.sync(options)`command`."); | |
| } | |
| const [file, ...args] = parseTemplates(templates, expressions); | |
| return execaSync(file, args, normalizeScriptOptions(options)); | |
| }; | |
| return $2; | |
| } | |
| var $ = create$(); | |
| var import_fs_extra = (0, import_chunk_QGM4M3NI.__toESM)((0, import_chunk_LONQL55G.require_lib)()); | |
| async function pMap(iterable, mapper, { | |
| concurrency = Number.POSITIVE_INFINITY, | |
| stopOnError = true, | |
| signal | |
| } = {}) { | |
| return new Promise((resolve_, reject_) => { | |
| if (iterable[Symbol.iterator] === void 0 && iterable[Symbol.asyncIterator] === void 0) { | |
| throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`); | |
| } | |
| if (typeof mapper !== "function") { | |
| throw new TypeError("Mapper function is required"); | |
| } | |
| if (!(Number.isSafeInteger(concurrency) && concurrency >= 1 || concurrency === Number.POSITIVE_INFINITY)) { | |
| throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`); | |
| } | |
| const result = []; | |
| const errors = []; | |
| const skippedIndexesMap = /* @__PURE__ */ new Map(); | |
| let isRejected = false; | |
| let isResolved = false; | |
| let isIterableDone = false; | |
| let resolvingCount = 0; | |
| let currentIndex = 0; | |
| const iterator = iterable[Symbol.iterator] === void 0 ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator](); | |
| const signalListener = () => { | |
| reject(signal.reason); | |
| }; | |
| const cleanup = () => { | |
| signal?.removeEventListener("abort", signalListener); | |
| }; | |
| const resolve = (value) => { | |
| resolve_(value); | |
| cleanup(); | |
| }; | |
| const reject = (reason) => { | |
| isRejected = true; | |
| isResolved = true; | |
| reject_(reason); | |
| cleanup(); | |
| }; | |
| if (signal) { | |
| if (signal.aborted) { | |
| reject(signal.reason); | |
| } | |
| signal.addEventListener("abort", signalListener, { once: true }); | |
| } | |
| const next = async () => { | |
| if (isResolved) { | |
| return; | |
| } | |
| const nextItem = await iterator.next(); | |
| const index = currentIndex; | |
| currentIndex++; | |
| if (nextItem.done) { | |
| isIterableDone = true; | |
| if (resolvingCount === 0 && !isResolved) { | |
| if (!stopOnError && errors.length > 0) { | |
| reject(new AggregateError(errors)); | |
| return; | |
| } | |
| isResolved = true; | |
| if (skippedIndexesMap.size === 0) { | |
| resolve(result); | |
| return; | |
| } | |
| const pureResult = []; | |
| for (const [index2, value] of result.entries()) { | |
| if (skippedIndexesMap.get(index2) === pMapSkip) { | |
| continue; | |
| } | |
| pureResult.push(value); | |
| } | |
| resolve(pureResult); | |
| } | |
| return; | |
| } | |
| resolvingCount++; | |
| (async () => { | |
| try { | |
| const element = await nextItem.value; | |
| if (isResolved) { | |
| return; | |
| } | |
| const value = await mapper(element, index); | |
| if (value === pMapSkip) { | |
| skippedIndexesMap.set(index, value); | |
| } | |
| result[index] = value; | |
| resolvingCount--; | |
| await next(); | |
| } catch (error) { | |
| if (stopOnError) { | |
| reject(error); | |
| } else { | |
| errors.push(error); | |
| resolvingCount--; | |
| try { | |
| await next(); | |
| } catch (error2) { | |
| reject(error2); | |
| } | |
| } | |
| } | |
| })(); | |
| }; | |
| (async () => { | |
| for (let index = 0; index < concurrency; index++) { | |
| try { | |
| await next(); | |
| } catch (error) { | |
| reject(error); | |
| break; | |
| } | |
| if (isIterableDone || isRejected) { | |
| break; | |
| } | |
| } | |
| })(); | |
| }); | |
| } | |
| var pMapSkip = Symbol("skip"); | |
| async function pFilter(iterable, filterer, options) { | |
| const values = await pMap( | |
| iterable, | |
| (element, index) => Promise.all([filterer(element, index), element]), | |
| options | |
| ); | |
| return values.filter((value) => Boolean(value[0])).map((value) => value[1]); | |
| } | |
| var import_temp_dir = (0, import_chunk_QGM4M3NI.__toESM)((0, import_chunk_CY52DY2B.require_temp_dir)()); | |
| var { enginesOverride } = require_package(); | |
| var debug = (0, import_debug.default)("prisma:fetch-engine:download"); | |
| var exists = (0, import_node_util.promisify)(import_node_fs.default.exists); | |
| var channel = "master"; | |
| var vercelPkgPathRegex = /^((\w:[\\\/])|\/)snapshot[\/\\]/; | |
| async function download(options) { | |
| if (!options.binaries || Object.values(options.binaries).length === 0) { | |
| return {}; | |
| } | |
| if (enginesOverride?.["branch"] || enginesOverride?.["folder"]) { | |
| options.version = "_local_"; | |
| options.skipCacheIntegrityCheck = true; | |
| } | |
| const { binaryTarget, ...os2 } = await (0, import_get_platform.getPlatformInfo)(); | |
| if (os2.targetDistro && ["nixos"].includes(os2.targetDistro) && !(0, import_chunk_QFA3XBMW.allEngineEnvVarsSet)(Object.keys(options.binaries))) { | |
| console.error( | |
| `${(0, import_chunk_QFA3XBMW.yellow)("Warning")} Precompiled engine files are not available for ${os2.targetDistro}, please provide the paths via environment variables, see https://pris.ly/d/custom-engines` | |
| ); | |
| } else if (["freebsd11", "freebsd12", "freebsd13", "freebsd14", "freebsd15", "openbsd", "netbsd"].includes(binaryTarget)) { | |
| console.error( | |
| `${(0, import_chunk_QFA3XBMW.yellow)( | |
| "Warning" | |
| )} Precompiled engine files are not available for ${binaryTarget}. Read more about building your own engines at https://pris.ly/d/build-engines` | |
| ); | |
| } else if ("libquery-engine" in options.binaries) { | |
| (0, import_get_platform.assertNodeAPISupported)(); | |
| } | |
| const opts = { | |
| ...options, | |
| binaryTargets: options.binaryTargets ?? [binaryTarget], | |
| version: options.version ?? "latest", | |
| binaries: options.binaries | |
| }; | |
| const binaryJobs = Object.entries(opts.binaries).flatMap( | |
| ([binaryName, targetFolder]) => opts.binaryTargets.map((binaryTarget2) => { | |
| const fileName = getBinaryName(binaryName, binaryTarget2); | |
| const targetFilePath = import_node_path.default.join(targetFolder, fileName); | |
| return { | |
| binaryName, | |
| targetFolder, | |
| binaryTarget: binaryTarget2, | |
| fileName, | |
| targetFilePath, | |
| envVarPath: (0, import_chunk_QFA3XBMW.getBinaryEnvVarPath)(binaryName)?.path, | |
| skipCacheIntegrityCheck: !!opts.skipCacheIntegrityCheck | |
| }; | |
| }) | |
| ); | |
| if (process.env.BINARY_DOWNLOAD_VERSION) { | |
| debug(`process.env.BINARY_DOWNLOAD_VERSION is set to "${process.env.BINARY_DOWNLOAD_VERSION}"`); | |
| opts.version = process.env.BINARY_DOWNLOAD_VERSION; | |
| } | |
| if (opts.printVersion) { | |
| console.log(`version: ${opts.version}`); | |
| } | |
| const binariesToDownload = await pFilter(binaryJobs, async (job) => { | |
| const needsToBeDownloaded = await binaryNeedsToBeDownloaded(job, binaryTarget, opts.version); | |
| const isSupported = import_get_platform.binaryTargets.includes(job.binaryTarget); | |
| const shouldDownload = isSupported && !job.envVarPath && // this is for custom binaries | |
| needsToBeDownloaded; | |
| if (needsToBeDownloaded && !isSupported) { | |
| throw new Error(`Unknown binaryTarget ${job.binaryTarget} and no custom engine files were provided`); | |
| } | |
| return shouldDownload; | |
| }); | |
| if (binariesToDownload.length > 0) { | |
| const cleanupPromise = (0, import_chunk_3VVCXIQ5.cleanupCache)(); | |
| let finishBar; | |
| let setProgress; | |
| if (opts.showProgress) { | |
| const collectiveBar = getCollectiveBar(opts); | |
| finishBar = collectiveBar.finishBar; | |
| setProgress = collectiveBar.setProgress; | |
| } | |
| const promises = binariesToDownload.map((job) => { | |
| const downloadUrl = (0, import_chunk_LONQL55G.getDownloadUrl)({ | |
| channel: "all_commits", | |
| version: opts.version, | |
| binaryTarget: job.binaryTarget, | |
| binaryName: job.binaryName | |
| }); | |
| debug(`${downloadUrl} will be downloaded to ${job.targetFilePath}`); | |
| return downloadBinary({ | |
| ...job, | |
| downloadUrl, | |
| version: opts.version, | |
| failSilent: opts.failSilent, | |
| progressCb: setProgress ? setProgress(job.targetFilePath) : void 0 | |
| }); | |
| }); | |
| await Promise.all(promises); | |
| await cleanupPromise; | |
| if (finishBar) { | |
| finishBar(); | |
| } | |
| } | |
| const binaryPaths = binaryJobsToBinaryPaths(binaryJobs); | |
| if (__dirname.match(vercelPkgPathRegex)) { | |
| for (const engineType in binaryPaths) { | |
| const binaryTargets2 = binaryPaths[engineType]; | |
| for (const binaryTarget2 in binaryTargets2) { | |
| const binaryPath = binaryTargets2[binaryTarget2]; | |
| binaryTargets2[binaryTarget2] = await maybeCopyToTmp(binaryPath); | |
| } | |
| } | |
| } | |
| return binaryPaths; | |
| } | |
| function getCollectiveBar(options) { | |
| const hasNodeAPI = "libquery-engine" in options.binaries; | |
| const bar = (0, import_chunk_MWVY55RY.getBar)( | |
| `Downloading Prisma engines${hasNodeAPI ? " for Node-API" : ""} for ${options.binaryTargets?.map((p) => (0, import_chunk_QFA3XBMW.bold)(p)).join(" and ")}` | |
| ); | |
| const progressMap = {}; | |
| const numDownloads = Object.values(options.binaries).length * Object.values(options?.binaryTargets ?? []).length; | |
| const setProgress = (sourcePath) => (progress) => { | |
| progressMap[sourcePath] = progress; | |
| const progressValues = Object.values(progressMap); | |
| const totalProgress = progressValues.reduce((acc, curr) => { | |
| return acc + curr; | |
| }, 0) / numDownloads; | |
| if (options.progressCb) { | |
| options.progressCb(totalProgress); | |
| } | |
| if (bar) { | |
| bar.update(totalProgress); | |
| } | |
| }; | |
| return { | |
| setProgress, | |
| finishBar: () => { | |
| bar.update(1); | |
| bar.terminate(); | |
| } | |
| }; | |
| } | |
| function binaryJobsToBinaryPaths(jobs) { | |
| return jobs.reduce((acc, job) => { | |
| if (!acc[job.binaryName]) { | |
| acc[job.binaryName] = {}; | |
| } | |
| acc[job.binaryName][job.binaryTarget] = job.envVarPath || job.targetFilePath; | |
| return acc; | |
| }, {}); | |
| } | |
| async function binaryNeedsToBeDownloaded(job, nativePlatform, version) { | |
| if (job.envVarPath && import_node_fs.default.existsSync(job.envVarPath)) { | |
| return false; | |
| } | |
| const targetExists = await exists(job.targetFilePath); | |
| const cachedFile = await getCachedBinaryPath({ | |
| ...job, | |
| version | |
| }); | |
| if (cachedFile) { | |
| if (job.skipCacheIntegrityCheck === true) { | |
| await (0, import_chunk_LONQL55G.overwriteFile)(cachedFile, job.targetFilePath); | |
| return false; | |
| } | |
| const sha256FilePath = cachedFile + ".sha256"; | |
| if (await exists(sha256FilePath)) { | |
| const sha256File = await import_node_fs.default.promises.readFile(sha256FilePath, "utf-8"); | |
| const sha256Cache = await (0, import_chunk_FKGWOTGU.getHash)(cachedFile); | |
| if (sha256File === sha256Cache) { | |
| if (!targetExists) { | |
| debug(`copying ${cachedFile} to ${job.targetFilePath}`); | |
| await import_node_fs.default.promises.utimes(cachedFile, /* @__PURE__ */ new Date(), /* @__PURE__ */ new Date()); | |
| await (0, import_chunk_LONQL55G.overwriteFile)(cachedFile, job.targetFilePath); | |
| } | |
| const targetSha256 = await (0, import_chunk_FKGWOTGU.getHash)(job.targetFilePath); | |
| if (sha256File !== targetSha256) { | |
| debug(`overwriting ${job.targetFilePath} with ${cachedFile} as hashes do not match`); | |
| await (0, import_chunk_LONQL55G.overwriteFile)(cachedFile, job.targetFilePath); | |
| } | |
| return false; | |
| } else { | |
| return true; | |
| } | |
| } else if (process.env.PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING) { | |
| debug( | |
| `the checksum file ${sha256FilePath} is missing but this was ignored because the PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING environment variable is set` | |
| ); | |
| if (targetExists) { | |
| return false; | |
| } | |
| if (cachedFile) { | |
| debug(`copying ${cachedFile} to ${job.targetFilePath}`); | |
| await (0, import_chunk_LONQL55G.overwriteFile)(cachedFile, job.targetFilePath); | |
| return false; | |
| } | |
| return true; | |
| } else { | |
| return true; | |
| } | |
| } | |
| if (!targetExists) { | |
| debug(`file ${job.targetFilePath} does not exist and must be downloaded`); | |
| return true; | |
| } | |
| if (job.binaryTarget === nativePlatform) { | |
| const currentVersion = await getVersion(job.targetFilePath, job.binaryName); | |
| if (currentVersion?.includes(version) !== true) { | |
| debug(`file ${job.targetFilePath} exists but its version is ${currentVersion} and we expect ${version}`); | |
| return true; | |
| } | |
| } | |
| return false; | |
| } | |
| async function getVersion(enginePath, binaryName) { | |
| try { | |
| if (binaryName === "libquery-engine") { | |
| (0, import_get_platform.assertNodeAPISupported)(); | |
| const commitHash = (0, import_chunk_QGM4M3NI.__require)(enginePath).version().commit; | |
| return `${"libquery-engine"} ${commitHash}`; | |
| } else { | |
| const result = await execa(enginePath, ["--version"]); | |
| return result.stdout; | |
| } | |
| } catch { | |
| } | |
| return void 0; | |
| } | |
| function getBinaryName(binaryName, binaryTarget) { | |
| if (binaryName === "libquery-engine") { | |
| return `${(0, import_get_platform.getNodeAPIName)(binaryTarget, "fs")}`; | |
| } | |
| const extension = binaryTarget === "windows" ? ".exe" : ""; | |
| return `${binaryName}-${binaryTarget}${extension}`; | |
| } | |
| async function getCachedBinaryPath({ | |
| version, | |
| binaryTarget, | |
| binaryName | |
| }) { | |
| const cacheDir = await (0, import_chunk_LONQL55G.getCacheDir)(channel, version, binaryTarget); | |
| if (!cacheDir) { | |
| return null; | |
| } | |
| const cachedTargetPath = import_node_path.default.join(cacheDir, binaryName); | |
| if (!import_node_fs.default.existsSync(cachedTargetPath)) { | |
| return null; | |
| } | |
| if (version !== "latest") { | |
| return cachedTargetPath; | |
| } | |
| if (await exists(cachedTargetPath)) { | |
| return cachedTargetPath; | |
| } | |
| return null; | |
| } | |
| async function downloadBinary(options) { | |
| const { version, progressCb, targetFilePath, downloadUrl } = options; | |
| const targetDir = import_node_path.default.dirname(targetFilePath); | |
| try { | |
| import_node_fs.default.accessSync(targetDir, import_node_fs.default.constants.W_OK); | |
| await (0, import_fs_extra.ensureDir)(targetDir); | |
| } catch (e) { | |
| if (options.failSilent || e.code !== "EACCES") { | |
| return; | |
| } else { | |
| throw new Error(`Can't write to ${targetDir} please make sure you install "prisma" with the right permissions.`); | |
| } | |
| } | |
| debug(`Downloading ${downloadUrl} to ${targetFilePath} ...`); | |
| if (progressCb) { | |
| progressCb(0); | |
| } | |
| const { sha256, zippedSha256 } = await (0, import_chunk_CY52DY2B.downloadZip)(downloadUrl, targetFilePath, progressCb); | |
| if (progressCb) { | |
| progressCb(1); | |
| } | |
| (0, import_chunk_7JLQJWOR.chmodPlusX)(targetFilePath); | |
| await saveFileToCache(options, version, sha256, zippedSha256); | |
| } | |
| async function saveFileToCache(job, version, sha256, zippedSha256) { | |
| const cacheDir = await (0, import_chunk_LONQL55G.getCacheDir)(channel, version, job.binaryTarget); | |
| if (!cacheDir) { | |
| return; | |
| } | |
| const cachedTargetPath = import_node_path.default.join(cacheDir, job.binaryName); | |
| const cachedSha256Path = import_node_path.default.join(cacheDir, job.binaryName + ".sha256"); | |
| const cachedSha256ZippedPath = import_node_path.default.join(cacheDir, job.binaryName + ".gz.sha256"); | |
| try { | |
| await (0, import_chunk_LONQL55G.overwriteFile)(job.targetFilePath, cachedTargetPath); | |
| if (sha256 != null) { | |
| await import_node_fs.default.promises.writeFile(cachedSha256Path, sha256); | |
| } | |
| if (zippedSha256 != null) { | |
| await import_node_fs.default.promises.writeFile(cachedSha256ZippedPath, zippedSha256); | |
| } | |
| } catch (e) { | |
| debug(e); | |
| } | |
| } | |
| async function maybeCopyToTmp(file) { | |
| if (__dirname.match(vercelPkgPathRegex)) { | |
| const targetDir = import_node_path.default.join(import_temp_dir.default, "prisma-binaries"); | |
| await (0, import_fs_extra.ensureDir)(targetDir); | |
| const target = import_node_path.default.join(targetDir, import_node_path.default.basename(file)); | |
| const data = await import_node_fs.default.promises.readFile(file); | |
| await import_node_fs.default.promises.writeFile(target, data); | |
| plusX(target); | |
| return target; | |
| } | |
| return file; | |
| } | |
| function plusX(file) { | |
| const s = import_node_fs.default.statSync(file); | |
| const newMode = s.mode | 64 | 8 | 1; | |
| if (s.mode === newMode) { | |
| return; | |
| } | |
| const base8 = newMode.toString(8).slice(-3); | |
| import_node_fs.default.chmodSync(file, base8); | |
| } | |