mimo-cli 0.1.1
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/LICENSE +21 -0
- package/README.md +193 -0
- package/dist/mimo.mjs +204 -0
- package/dist/mimo.mjs.map +173 -0
- package/dist/sdk.mjs +822 -0
- package/dist/sdk.mjs.map +25 -0
- package/package.json +70 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["..\\node_modules\\sisteransi\\src\\index.js", "..\\node_modules\\picocolors\\picocolors.js", "..\\node_modules\\webidl-conversions\\lib\\index.js", "..\\node_modules\\whatwg-url\\lib\\utils.js", "..\\node_modules\\tr46\\index.js", "..\\node_modules\\whatwg-url\\lib\\url-state-machine.js", "..\\node_modules\\whatwg-url\\lib\\URL-impl.js", "..\\node_modules\\whatwg-url\\lib\\URL.js", "..\\node_modules\\whatwg-url\\lib\\public-api.js", "..\\node_modules\\node-fetch\\lib\\index.js", "..\\node_modules\\web-streams-polyfill\\dist\\ponyfill.mjs", "..\\node_modules\\formdata-node\\lib\\esm\\isFunction.js", "..\\node_modules\\formdata-node\\lib\\esm\\blobHelpers.js", "..\\node_modules\\formdata-node\\lib\\esm\\Blob.js", "..\\node_modules\\formdata-node\\lib\\esm\\File.js", "..\\node_modules\\formdata-node\\lib\\esm\\isFile.js", "..\\node_modules\\ms\\index.js", "..\\node_modules\\humanize-ms\\index.js", "..\\node_modules\\agentkeepalive\\lib\\constants.js", "..\\node_modules\\agentkeepalive\\lib\\agent.js", "..\\node_modules\\agentkeepalive\\lib\\https_agent.js", "..\\node_modules\\agentkeepalive\\index.js", "..\\node_modules\\event-target-shim\\dist\\event-target-shim.js", "..\\node_modules\\abort-controller\\dist\\abort-controller.js", "..\\node_modules\\node-domexception\\index.js", "..\\node_modules\\formdata-node\\lib\\esm\\isPlainObject.js", "..\\node_modules\\formdata-node\\lib\\esm\\fileFromPath.js", "..\\src\\args.ts", "..\\src\\command.ts", "..\\src\\i18n\\index.ts", "..\\src\\registry.ts", "..\\src\\errors\\codes.ts", "..\\src\\errors\\base.ts", "..\\src\\output\\text.ts", "..\\src\\output\\json.ts", "..\\src\\output\\formatter.ts", "..\\src\\utils\\sanitize.ts", "..\\src\\errors\\handler.ts", "..\\src\\config\\loader.ts", "..\\src\\config\\schema.ts", "..\\src\\config\\paths.ts", "..\\src\\auth\\resolver.ts", "..\\node_modules\\@clack\\core\\dist\\index.mjs", "..\\node_modules\\@clack\\prompts\\dist\\index.mjs", "..\\src\\utils\\env.ts", "..\\src\\utils\\prompt.ts", "..\\src\\auth\\setup.ts", "..\\src\\version.ts", "..\\src\\commands\\auth\\login.ts", "..\\src\\commands\\auth\\status.ts", "..\\src\\commands\\auth\\logout.ts", "..\\src\\commands\\config\\show.ts", "..\\src\\commands\\config\\set.ts", "..\\src\\commands\\update.ts", "..\\src\\commands\\help.ts", "..\\src\\commands\\language.ts", "..\\node_modules\\openai\\internal\\qs\\formats.mjs", "..\\node_modules\\openai\\internal\\qs\\utils.mjs", "..\\node_modules\\openai\\internal\\qs\\stringify.mjs", "..\\node_modules\\openai\\version.mjs", "..\\node_modules\\openai\\_shims\\registry.mjs", "..\\node_modules\\openai\\_shims\\node-runtime.mjs", "..\\node_modules\\formdata-node\\lib\\esm\\FormData.js", "..\\node_modules\\formdata-node\\lib\\esm\\isBlob.js", "..\\node_modules\\formdata-node\\lib\\esm\\deprecateConstructorEntries.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\util\\createBoundary.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\util\\isPlainObject.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\util\\normalizeValue.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\util\\escapeName.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\util\\isFunction.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\util\\isFileLike.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\util\\isFormData.js", "..\\node_modules\\form-data-encoder\\lib\\esm\\FormDataEncoder.js", "..\\node_modules\\openai\\_shims\\MultipartBody.mjs", "..\\node_modules\\openai\\_shims\\index.mjs", "..\\node_modules\\openai\\error.mjs", "..\\node_modules\\openai\\internal\\decoders\\line.mjs", "..\\node_modules\\openai\\internal\\stream-utils.mjs", "..\\node_modules\\openai\\streaming.mjs", "..\\node_modules\\openai\\uploads.mjs", "..\\node_modules\\openai\\core.mjs", "..\\node_modules\\openai\\pagination.mjs", "..\\node_modules\\openai\\resource.mjs", "..\\node_modules\\openai\\resources\\chat\\completions\\messages.mjs", "..\\node_modules\\openai\\resources\\chat\\completions\\completions.mjs", "..\\node_modules\\openai\\resources\\chat\\chat.mjs", "..\\node_modules\\openai\\resources\\audio\\speech.mjs", "..\\node_modules\\openai\\resources\\audio\\transcriptions.mjs", "..\\node_modules\\openai\\resources\\audio\\translations.mjs", "..\\node_modules\\openai\\resources\\audio\\audio.mjs", "..\\node_modules\\openai\\resources\\batches.mjs", "..\\node_modules\\openai\\lib\\EventStream.mjs", "..\\node_modules\\openai\\lib\\AssistantStream.mjs", "..\\node_modules\\openai\\resources\\beta\\assistants.mjs", "..\\node_modules\\openai\\lib\\RunnableFunction.mjs", "..\\node_modules\\openai\\lib\\chatCompletionUtils.mjs", "..\\node_modules\\openai\\lib\\parser.mjs", "..\\node_modules\\openai\\lib\\AbstractChatCompletionRunner.mjs", "..\\node_modules\\openai\\lib\\ChatCompletionRunner.mjs", "..\\node_modules\\openai\\_vendor\\partial-json-parser\\parser.mjs", "..\\node_modules\\openai\\lib\\ChatCompletionStream.mjs", "..\\node_modules\\openai\\lib\\ChatCompletionStreamingRunner.mjs", "..\\node_modules\\openai\\resources\\beta\\chat\\completions.mjs", "..\\node_modules\\openai\\resources\\beta\\chat\\chat.mjs", "..\\node_modules\\openai\\resources\\beta\\realtime\\sessions.mjs", "..\\node_modules\\openai\\resources\\beta\\realtime\\transcription-sessions.mjs", "..\\node_modules\\openai\\resources\\beta\\realtime\\realtime.mjs", "..\\node_modules\\openai\\resources\\beta\\threads\\messages.mjs", "..\\node_modules\\openai\\resources\\beta\\threads\\runs\\steps.mjs", "..\\node_modules\\openai\\resources\\beta\\threads\\runs\\runs.mjs", "..\\node_modules\\openai\\resources\\beta\\threads\\threads.mjs", "..\\node_modules\\openai\\resources\\beta\\beta.mjs", "..\\node_modules\\openai\\resources\\completions.mjs", "..\\node_modules\\openai\\resources\\containers\\files\\content.mjs", "..\\node_modules\\openai\\resources\\containers\\files\\files.mjs", "..\\node_modules\\openai\\resources\\containers\\containers.mjs", "..\\node_modules\\openai\\resources\\embeddings.mjs", "..\\node_modules\\openai\\resources\\evals\\runs\\output-items.mjs", "..\\node_modules\\openai\\resources\\evals\\runs\\runs.mjs", "..\\node_modules\\openai\\resources\\evals\\evals.mjs", "..\\node_modules\\openai\\resources\\files.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\methods.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\alpha\\graders.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\alpha\\alpha.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\checkpoints\\permissions.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\checkpoints\\checkpoints.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\jobs\\checkpoints.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\jobs\\jobs.mjs", "..\\node_modules\\openai\\resources\\fine-tuning\\fine-tuning.mjs", "..\\node_modules\\openai\\resources\\graders\\grader-models.mjs", "..\\node_modules\\openai\\resources\\graders\\graders.mjs", "..\\node_modules\\openai\\resources\\images.mjs", "..\\node_modules\\openai\\resources\\models.mjs", "..\\node_modules\\openai\\resources\\moderations.mjs", "..\\node_modules\\openai\\lib\\ResponsesParser.mjs", "..\\node_modules\\openai\\resources\\responses\\input-items.mjs", "..\\node_modules\\openai\\lib\\responses\\ResponseStream.mjs", "..\\node_modules\\openai\\resources\\responses\\responses.mjs", "..\\node_modules\\openai\\resources\\uploads\\parts.mjs", "..\\node_modules\\openai\\resources\\uploads\\uploads.mjs", "..\\node_modules\\openai\\lib\\Util.mjs", "..\\node_modules\\openai\\resources\\vector-stores\\files.mjs", "..\\node_modules\\openai\\resources\\vector-stores\\file-batches.mjs", "..\\node_modules\\openai\\resources\\vector-stores\\vector-stores.mjs", "..\\node_modules\\openai\\index.mjs", "..\\src\\errors\\api.ts", "..\\src\\types\\api.ts", "..\\src\\client\\errors.ts", "..\\src\\client\\index.ts", "..\\src\\output\\reasoning.ts", "..\\src\\output\\annotations.ts", "..\\src\\commands\\chat.ts", "..\\src\\commands\\repl.ts", "..\\src\\utils\\image.ts", "..\\src\\utils\\audio.ts", "..\\src\\utils\\video.ts", "..\\src\\commands\\vision.ts", "..\\src\\commands\\asr.ts", "..\\src\\commands\\tts\\synthesize.ts", "..\\src\\output\\progress.ts", "..\\src\\commands\\tts\\clone.ts", "..\\src\\commands\\tts\\design.ts", "..\\src\\commands\\tts\\voices.ts", "..\\src\\main.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n",
|
|
6
|
+
"let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n",
|
|
7
|
+
"\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n",
|
|
8
|
+
"\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n",
|
|
9
|
+
"\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n",
|
|
10
|
+
"\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n",
|
|
11
|
+
"\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n",
|
|
12
|
+
"\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n",
|
|
13
|
+
"\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n",
|
|
14
|
+
"'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\nexports.AbortError = AbortError;\n",
|
|
15
|
+
"/**\n * @license\n * web-streams-polyfill v4.0.0-beta.3\n * Copyright 2021 Mattias Buelens, Diwank Singh Tomer and other contributors.\n * This code is released under the MIT license.\n * SPDX-License-Identifier: MIT\n */\nconst e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?Symbol:e=>`Symbol(${e})`;function t(){}function r(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}const o=t;function n(e,t){try{Object.defineProperty(e,\"name\",{value:t,configurable:!0})}catch(e){}}const a=Promise,i=Promise.prototype.then,l=Promise.resolve.bind(a),s=Promise.reject.bind(a);function u(e){return new a(e)}function c(e){return l(e)}function d(e){return s(e)}function f(e,t,r){return i.call(e,t,r)}function b(e,t,r){f(f(e,t,r),void 0,o)}function h(e,t){b(e,t)}function _(e,t){b(e,void 0,t)}function p(e,t,r){return f(e,t,r)}function m(e){f(e,void 0,o)}let y=e=>{if(\"function\"==typeof queueMicrotask)y=queueMicrotask;else{const e=c(void 0);y=t=>f(e,t)}return y(e)};function g(e,t,r){if(\"function\"!=typeof e)throw new TypeError(\"Argument is not a function\");return Function.prototype.apply.call(e,t,r)}function w(e,t,r){try{return c(g(e,t,r))}catch(e){return d(e)}}class S{constructor(){this._cursor=0,this._size=0,this._front={_elements:[],_next:void 0},this._back=this._front,this._cursor=0,this._size=0}get length(){return this._size}push(e){const t=this._back;let r=t;16383===t._elements.length&&(r={_elements:[],_next:void 0}),t._elements.push(e),r!==t&&(this._back=r,t._next=r),++this._size}shift(){const e=this._front;let t=e;const r=this._cursor;let o=r+1;const n=e._elements,a=n[r];return 16384===o&&(t=e._next,o=0),--this._size,this._cursor=o,e!==t&&(this._front=t),n[r]=void 0,a}forEach(e){let t=this._cursor,r=this._front,o=r._elements;for(;!(t===o.length&&void 0===r._next||t===o.length&&(r=r._next,o=r._elements,t=0,0===o.length));)e(o[t]),++t}peek(){const e=this._front,t=this._cursor;return e._elements[t]}}const v=e(\"[[AbortSteps]]\"),R=e(\"[[ErrorSteps]]\"),T=e(\"[[CancelSteps]]\"),q=e(\"[[PullSteps]]\"),C=e(\"[[ReleaseSteps]]\");function E(e,t){e._ownerReadableStream=t,t._reader=e,\"readable\"===t._state?O(e):\"closed\"===t._state?function(e){O(e),j(e)}(e):B(e,t._storedError)}function P(e,t){return Gt(e._ownerReadableStream,t)}function W(e){const t=e._ownerReadableStream;\"readable\"===t._state?A(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")):function(e,t){B(e,t)}(e,new TypeError(\"Reader was released and can no longer be used to monitor the stream's closedness\")),t._readableStreamController[C](),t._reader=void 0,e._ownerReadableStream=void 0}function k(e){return new TypeError(\"Cannot \"+e+\" a stream using a released reader\")}function O(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r}))}function B(e,t){O(e),A(e,t)}function A(e,t){void 0!==e._closedPromise_reject&&(m(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}function j(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0)}const z=Number.isFinite||function(e){return\"number\"==typeof e&&isFinite(e)},L=Math.trunc||function(e){return e<0?Math.ceil(e):Math.floor(e)};function F(e,t){if(void 0!==e&&(\"object\"!=typeof(r=e)&&\"function\"!=typeof r))throw new TypeError(`${t} is not an object.`);var r}function I(e,t){if(\"function\"!=typeof e)throw new TypeError(`${t} is not a function.`)}function D(e,t){if(!function(e){return\"object\"==typeof e&&null!==e||\"function\"==typeof e}(e))throw new TypeError(`${t} is not an object.`)}function $(e,t,r){if(void 0===e)throw new TypeError(`Parameter ${t} is required in '${r}'.`)}function M(e,t,r){if(void 0===e)throw new TypeError(`${t} is required in '${r}'.`)}function Y(e){return Number(e)}function Q(e){return 0===e?0:e}function N(e,t){const r=Number.MAX_SAFE_INTEGER;let o=Number(e);if(o=Q(o),!z(o))throw new TypeError(`${t} is not a finite number`);if(o=function(e){return Q(L(e))}(o),o<0||o>r)throw new TypeError(`${t} is outside the accepted range of 0 to ${r}, inclusive`);return z(o)&&0!==o?o:0}function H(e){if(!r(e))return!1;if(\"function\"!=typeof e.getReader)return!1;try{return\"boolean\"==typeof e.locked}catch(e){return!1}}function x(e){if(!r(e))return!1;if(\"function\"!=typeof e.getWriter)return!1;try{return\"boolean\"==typeof e.locked}catch(e){return!1}}function V(e,t){if(!Vt(e))throw new TypeError(`${t} is not a ReadableStream.`)}function U(e,t){e._reader._readRequests.push(t)}function G(e,t,r){const o=e._reader._readRequests.shift();r?o._closeSteps():o._chunkSteps(t)}function X(e){return e._reader._readRequests.length}function J(e){const t=e._reader;return void 0!==t&&!!K(t)}class ReadableStreamDefaultReader{constructor(e){if($(e,1,\"ReadableStreamDefaultReader\"),V(e,\"First parameter\"),Ut(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");E(this,e),this._readRequests=new S}get closed(){return K(this)?this._closedPromise:d(ee(\"closed\"))}cancel(e){return K(this)?void 0===this._ownerReadableStream?d(k(\"cancel\")):P(this,e):d(ee(\"cancel\"))}read(){if(!K(this))return d(ee(\"read\"));if(void 0===this._ownerReadableStream)return d(k(\"read from\"));let e,t;const r=u(((r,o)=>{e=r,t=o}));return function(e,t){const r=e._ownerReadableStream;r._disturbed=!0,\"closed\"===r._state?t._closeSteps():\"errored\"===r._state?t._errorSteps(r._storedError):r._readableStreamController[q](t)}(this,{_chunkSteps:t=>e({value:t,done:!1}),_closeSteps:()=>e({value:void 0,done:!0}),_errorSteps:e=>t(e)}),r}releaseLock(){if(!K(this))throw ee(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError(\"Reader was released\");Z(e,t)}(this)}}function K(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readRequests\")&&e instanceof ReadableStreamDefaultReader)}function Z(e,t){const r=e._readRequests;e._readRequests=new S,r.forEach((e=>{e._errorSteps(t)}))}function ee(e){return new TypeError(`ReadableStreamDefaultReader.prototype.${e} can only be used on a ReadableStreamDefaultReader`)}Object.defineProperties(ReadableStreamDefaultReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),n(ReadableStreamDefaultReader.prototype.cancel,\"cancel\"),n(ReadableStreamDefaultReader.prototype.read,\"read\"),n(ReadableStreamDefaultReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamDefaultReader.prototype,e.toStringTag,{value:\"ReadableStreamDefaultReader\",configurable:!0});class te{constructor(e,t){this._ongoingPromise=void 0,this._isFinished=!1,this._reader=e,this._preventCancel=t}next(){const e=()=>this._nextSteps();return this._ongoingPromise=this._ongoingPromise?p(this._ongoingPromise,e,e):e(),this._ongoingPromise}return(e){const t=()=>this._returnSteps(e);return this._ongoingPromise?p(this._ongoingPromise,t,t):t()}_nextSteps(){if(this._isFinished)return Promise.resolve({value:void 0,done:!0});const e=this._reader;return void 0===e?d(k(\"iterate\")):f(e.read(),(e=>{var t;return this._ongoingPromise=void 0,e.done&&(this._isFinished=!0,null===(t=this._reader)||void 0===t||t.releaseLock(),this._reader=void 0),e}),(e=>{var t;throw this._ongoingPromise=void 0,this._isFinished=!0,null===(t=this._reader)||void 0===t||t.releaseLock(),this._reader=void 0,e}))}_returnSteps(e){if(this._isFinished)return Promise.resolve({value:e,done:!0});this._isFinished=!0;const t=this._reader;if(void 0===t)return d(k(\"finish iterating\"));if(this._reader=void 0,!this._preventCancel){const r=t.cancel(e);return t.releaseLock(),p(r,(()=>({value:e,done:!0})))}return t.releaseLock(),c({value:e,done:!0})}}const re={next(){return oe(this)?this._asyncIteratorImpl.next():d(ne(\"next\"))},return(e){return oe(this)?this._asyncIteratorImpl.return(e):d(ne(\"return\"))}};function oe(e){if(!r(e))return!1;if(!Object.prototype.hasOwnProperty.call(e,\"_asyncIteratorImpl\"))return!1;try{return e._asyncIteratorImpl instanceof te}catch(e){return!1}}function ne(e){return new TypeError(`ReadableStreamAsyncIterator.${e} can only be used on a ReadableSteamAsyncIterator`)}\"symbol\"==typeof e.asyncIterator&&Object.defineProperty(re,e.asyncIterator,{value(){return this},writable:!0,configurable:!0});const ae=Number.isNaN||function(e){return e!=e};function ie(e,t,r,o,n){new Uint8Array(e).set(new Uint8Array(r,o,n),t)}function le(e){const t=function(e,t,r){if(e.slice)return e.slice(t,r);const o=r-t,n=new ArrayBuffer(o);return ie(n,0,e,t,o),n}(e.buffer,e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}function se(e){const t=e._queue.shift();return e._queueTotalSize-=t.size,e._queueTotalSize<0&&(e._queueTotalSize=0),t.value}function ue(e,t,r){if(\"number\"!=typeof(o=r)||ae(o)||o<0||r===1/0)throw new RangeError(\"Size must be a finite, non-NaN, non-negative number.\");var o;e._queue.push({value:t,size:r}),e._queueTotalSize+=r}function ce(e){e._queue=new S,e._queueTotalSize=0}class ReadableStreamBYOBRequest{constructor(){throw new TypeError(\"Illegal constructor\")}get view(){if(!fe(this))throw Be(\"view\");return this._view}respond(e){if(!fe(this))throw Be(\"respond\");if($(e,1,\"respond\"),e=N(e,\"First parameter\"),void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");this._view.buffer,function(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t)throw new TypeError(\"bytesWritten must be 0 when calling respond() on a closed stream\")}else{if(0===t)throw new TypeError(\"bytesWritten must be greater than 0 when calling respond() on a readable stream\");if(r.bytesFilled+t>r.byteLength)throw new RangeError(\"bytesWritten out of range\")}r.buffer=r.buffer,qe(e,t)}(this._associatedReadableByteStreamController,e)}respondWithNewView(e){if(!fe(this))throw Be(\"respondWithNewView\");if($(e,1,\"respondWithNewView\"),!ArrayBuffer.isView(e))throw new TypeError(\"You can only respond with array buffer views\");if(void 0===this._associatedReadableByteStreamController)throw new TypeError(\"This BYOB request has been invalidated\");e.buffer,function(e,t){const r=e._pendingPullIntos.peek();if(\"closed\"===e._controlledReadableByteStream._state){if(0!==t.byteLength)throw new TypeError(\"The view's length must be 0 when calling respondWithNewView() on a closed stream\")}else if(0===t.byteLength)throw new TypeError(\"The view's length must be greater than 0 when calling respondWithNewView() on a readable stream\");if(r.byteOffset+r.bytesFilled!==t.byteOffset)throw new RangeError(\"The region specified by view does not match byobRequest\");if(r.bufferByteLength!==t.buffer.byteLength)throw new RangeError(\"The buffer of view has different capacity than byobRequest\");if(r.bytesFilled+t.byteLength>r.byteLength)throw new RangeError(\"The region specified by view is larger than byobRequest\");const o=t.byteLength;r.buffer=t.buffer,qe(e,o)}(this._associatedReadableByteStreamController,e)}}Object.defineProperties(ReadableStreamBYOBRequest.prototype,{respond:{enumerable:!0},respondWithNewView:{enumerable:!0},view:{enumerable:!0}}),n(ReadableStreamBYOBRequest.prototype.respond,\"respond\"),n(ReadableStreamBYOBRequest.prototype.respondWithNewView,\"respondWithNewView\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamBYOBRequest.prototype,e.toStringTag,{value:\"ReadableStreamBYOBRequest\",configurable:!0});class ReadableByteStreamController{constructor(){throw new TypeError(\"Illegal constructor\")}get byobRequest(){if(!de(this))throw Ae(\"byobRequest\");return function(e){if(null===e._byobRequest&&e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek(),r=new Uint8Array(t.buffer,t.byteOffset+t.bytesFilled,t.byteLength-t.bytesFilled),o=Object.create(ReadableStreamBYOBRequest.prototype);!function(e,t,r){e._associatedReadableByteStreamController=t,e._view=r}(o,e,r),e._byobRequest=o}return e._byobRequest}(this)}get desiredSize(){if(!de(this))throw Ae(\"desiredSize\");return ke(this)}close(){if(!de(this))throw Ae(\"close\");if(this._closeRequested)throw new TypeError(\"The stream has already been closed; do not close it again!\");const e=this._controlledReadableByteStream._state;if(\"readable\"!==e)throw new TypeError(`The stream (in ${e} state) is not in the readable state and cannot be closed`);!function(e){const t=e._controlledReadableByteStream;if(e._closeRequested||\"readable\"!==t._state)return;if(e._queueTotalSize>0)return void(e._closeRequested=!0);if(e._pendingPullIntos.length>0){if(e._pendingPullIntos.peek().bytesFilled>0){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");throw Pe(e,t),t}}Ee(e),Xt(t)}(this)}enqueue(e){if(!de(this))throw Ae(\"enqueue\");if($(e,1,\"enqueue\"),!ArrayBuffer.isView(e))throw new TypeError(\"chunk must be an array buffer view\");if(0===e.byteLength)throw new TypeError(\"chunk must have non-zero byteLength\");if(0===e.buffer.byteLength)throw new TypeError(\"chunk's buffer must have non-zero byteLength\");if(this._closeRequested)throw new TypeError(\"stream is closed or draining\");const t=this._controlledReadableByteStream._state;if(\"readable\"!==t)throw new TypeError(`The stream (in ${t} state) is not in the readable state and cannot be enqueued to`);!function(e,t){const r=e._controlledReadableByteStream;if(e._closeRequested||\"readable\"!==r._state)return;const o=t.buffer,n=t.byteOffset,a=t.byteLength,i=o;if(e._pendingPullIntos.length>0){const t=e._pendingPullIntos.peek();t.buffer,0,Re(e),t.buffer=t.buffer,\"none\"===t.readerType&&ge(e,t)}if(J(r))if(function(e){const t=e._controlledReadableByteStream._reader;for(;t._readRequests.length>0;){if(0===e._queueTotalSize)return;We(e,t._readRequests.shift())}}(e),0===X(r))me(e,i,n,a);else{e._pendingPullIntos.length>0&&Ce(e);G(r,new Uint8Array(i,n,a),!1)}else Le(r)?(me(e,i,n,a),Te(e)):me(e,i,n,a);be(e)}(this,e)}error(e){if(!de(this))throw Ae(\"error\");Pe(this,e)}[T](e){he(this),ce(this);const t=this._cancelAlgorithm(e);return Ee(this),t}[q](e){const t=this._controlledReadableByteStream;if(this._queueTotalSize>0)return void We(this,e);const r=this._autoAllocateChunkSize;if(void 0!==r){let t;try{t=new ArrayBuffer(r)}catch(t){return void e._errorSteps(t)}const o={buffer:t,bufferByteLength:r,byteOffset:0,byteLength:r,bytesFilled:0,elementSize:1,viewConstructor:Uint8Array,readerType:\"default\"};this._pendingPullIntos.push(o)}U(t,e),be(this)}[C](){if(this._pendingPullIntos.length>0){const e=this._pendingPullIntos.peek();e.readerType=\"none\",this._pendingPullIntos=new S,this._pendingPullIntos.push(e)}}}function de(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableByteStream\")&&e instanceof ReadableByteStreamController)}function fe(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_associatedReadableByteStreamController\")&&e instanceof ReadableStreamBYOBRequest)}function be(e){const t=function(e){const t=e._controlledReadableByteStream;if(\"readable\"!==t._state)return!1;if(e._closeRequested)return!1;if(!e._started)return!1;if(J(t)&&X(t)>0)return!0;if(Le(t)&&ze(t)>0)return!0;if(ke(e)>0)return!0;return!1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,be(e)),null)),(t=>(Pe(e,t),null)))}function he(e){Re(e),e._pendingPullIntos=new S}function _e(e,t){let r=!1;\"closed\"===e._state&&(r=!0);const o=pe(t);\"default\"===t.readerType?G(e,o,r):function(e,t,r){const o=e._reader._readIntoRequests.shift();r?o._closeSteps(t):o._chunkSteps(t)}(e,o,r)}function pe(e){const t=e.bytesFilled,r=e.elementSize;return new e.viewConstructor(e.buffer,e.byteOffset,t/r)}function me(e,t,r,o){e._queue.push({buffer:t,byteOffset:r,byteLength:o}),e._queueTotalSize+=o}function ye(e,t,r,o){let n;try{n=t.slice(r,r+o)}catch(t){throw Pe(e,t),t}me(e,n,0,o)}function ge(e,t){t.bytesFilled>0&&ye(e,t.buffer,t.byteOffset,t.bytesFilled),Ce(e)}function we(e,t){const r=t.elementSize,o=t.bytesFilled-t.bytesFilled%r,n=Math.min(e._queueTotalSize,t.byteLength-t.bytesFilled),a=t.bytesFilled+n,i=a-a%r;let l=n,s=!1;i>o&&(l=i-t.bytesFilled,s=!0);const u=e._queue;for(;l>0;){const r=u.peek(),o=Math.min(l,r.byteLength),n=t.byteOffset+t.bytesFilled;ie(t.buffer,n,r.buffer,r.byteOffset,o),r.byteLength===o?u.shift():(r.byteOffset+=o,r.byteLength-=o),e._queueTotalSize-=o,Se(e,o,t),l-=o}return s}function Se(e,t,r){r.bytesFilled+=t}function ve(e){0===e._queueTotalSize&&e._closeRequested?(Ee(e),Xt(e._controlledReadableByteStream)):be(e)}function Re(e){null!==e._byobRequest&&(e._byobRequest._associatedReadableByteStreamController=void 0,e._byobRequest._view=null,e._byobRequest=null)}function Te(e){for(;e._pendingPullIntos.length>0;){if(0===e._queueTotalSize)return;const t=e._pendingPullIntos.peek();we(e,t)&&(Ce(e),_e(e._controlledReadableByteStream,t))}}function qe(e,t){const r=e._pendingPullIntos.peek();Re(e);\"closed\"===e._controlledReadableByteStream._state?function(e,t){\"none\"===t.readerType&&Ce(e);const r=e._controlledReadableByteStream;if(Le(r))for(;ze(r)>0;)_e(r,Ce(e))}(e,r):function(e,t,r){if(Se(0,t,r),\"none\"===r.readerType)return ge(e,r),void Te(e);if(r.bytesFilled<r.elementSize)return;Ce(e);const o=r.bytesFilled%r.elementSize;if(o>0){const t=r.byteOffset+r.bytesFilled;ye(e,r.buffer,t-o,o)}r.bytesFilled-=o,_e(e._controlledReadableByteStream,r),Te(e)}(e,t,r),be(e)}function Ce(e){return e._pendingPullIntos.shift()}function Ee(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0}function Pe(e,t){const r=e._controlledReadableByteStream;\"readable\"===r._state&&(he(e),ce(e),Ee(e),Jt(r,t))}function We(e,t){const r=e._queue.shift();e._queueTotalSize-=r.byteLength,ve(e);const o=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);t._chunkSteps(o)}function ke(e){const t=e._controlledReadableByteStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function Oe(e,t,r){const o=Object.create(ReadableByteStreamController.prototype);let n,a,i;n=void 0!==t.start?()=>t.start(o):()=>{},a=void 0!==t.pull?()=>t.pull(o):()=>c(void 0),i=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0);const l=t.autoAllocateChunkSize;if(0===l)throw new TypeError(\"autoAllocateChunkSize must be greater than 0\");!function(e,t,r,o,n,a,i){t._controlledReadableByteStream=e,t._pullAgain=!1,t._pulling=!1,t._byobRequest=null,t._queue=t._queueTotalSize=void 0,ce(t),t._closeRequested=!1,t._started=!1,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,t._autoAllocateChunkSize=i,t._pendingPullIntos=new S,e._readableStreamController=t,b(c(r()),(()=>(t._started=!0,be(t),null)),(e=>(Pe(t,e),null)))}(e,o,n,a,i,r,l)}function Be(e){return new TypeError(`ReadableStreamBYOBRequest.prototype.${e} can only be used on a ReadableStreamBYOBRequest`)}function Ae(e){return new TypeError(`ReadableByteStreamController.prototype.${e} can only be used on a ReadableByteStreamController`)}function je(e,t){e._reader._readIntoRequests.push(t)}function ze(e){return e._reader._readIntoRequests.length}function Le(e){const t=e._reader;return void 0!==t&&!!Fe(t)}Object.defineProperties(ReadableByteStreamController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},byobRequest:{enumerable:!0},desiredSize:{enumerable:!0}}),n(ReadableByteStreamController.prototype.close,\"close\"),n(ReadableByteStreamController.prototype.enqueue,\"enqueue\"),n(ReadableByteStreamController.prototype.error,\"error\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(ReadableByteStreamController.prototype,e.toStringTag,{value:\"ReadableByteStreamController\",configurable:!0});class ReadableStreamBYOBReader{constructor(e){if($(e,1,\"ReadableStreamBYOBReader\"),V(e,\"First parameter\"),Ut(e))throw new TypeError(\"This stream has already been locked for exclusive reading by another reader\");if(!de(e._readableStreamController))throw new TypeError(\"Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte source\");E(this,e),this._readIntoRequests=new S}get closed(){return Fe(this)?this._closedPromise:d(De(\"closed\"))}cancel(e){return Fe(this)?void 0===this._ownerReadableStream?d(k(\"cancel\")):P(this,e):d(De(\"cancel\"))}read(e){if(!Fe(this))return d(De(\"read\"));if(!ArrayBuffer.isView(e))return d(new TypeError(\"view must be an array buffer view\"));if(0===e.byteLength)return d(new TypeError(\"view must have non-zero byteLength\"));if(0===e.buffer.byteLength)return d(new TypeError(\"view's buffer must have non-zero byteLength\"));if(e.buffer,void 0===this._ownerReadableStream)return d(k(\"read from\"));let t,r;const o=u(((e,o)=>{t=e,r=o}));return function(e,t,r){const o=e._ownerReadableStream;o._disturbed=!0,\"errored\"===o._state?r._errorSteps(o._storedError):function(e,t,r){const o=e._controlledReadableByteStream;let n=1;t.constructor!==DataView&&(n=t.constructor.BYTES_PER_ELEMENT);const a=t.constructor,i=t.buffer,l={buffer:i,bufferByteLength:i.byteLength,byteOffset:t.byteOffset,byteLength:t.byteLength,bytesFilled:0,elementSize:n,viewConstructor:a,readerType:\"byob\"};if(e._pendingPullIntos.length>0)return e._pendingPullIntos.push(l),void je(o,r);if(\"closed\"!==o._state){if(e._queueTotalSize>0){if(we(e,l)){const t=pe(l);return ve(e),void r._chunkSteps(t)}if(e._closeRequested){const t=new TypeError(\"Insufficient bytes to fill elements in the given buffer\");return Pe(e,t),void r._errorSteps(t)}}e._pendingPullIntos.push(l),je(o,r),be(e)}else{const e=new a(l.buffer,l.byteOffset,0);r._closeSteps(e)}}(o._readableStreamController,t,r)}(this,e,{_chunkSteps:e=>t({value:e,done:!1}),_closeSteps:e=>t({value:e,done:!0}),_errorSteps:e=>r(e)}),o}releaseLock(){if(!Fe(this))throw De(\"releaseLock\");void 0!==this._ownerReadableStream&&function(e){W(e);const t=new TypeError(\"Reader was released\");Ie(e,t)}(this)}}function Fe(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readIntoRequests\")&&e instanceof ReadableStreamBYOBReader)}function Ie(e,t){const r=e._readIntoRequests;e._readIntoRequests=new S,r.forEach((e=>{e._errorSteps(t)}))}function De(e){return new TypeError(`ReadableStreamBYOBReader.prototype.${e} can only be used on a ReadableStreamBYOBReader`)}function $e(e,t){const{highWaterMark:r}=e;if(void 0===r)return t;if(ae(r)||r<0)throw new RangeError(\"Invalid highWaterMark\");return r}function Me(e){const{size:t}=e;return t||(()=>1)}function Ye(e,t){F(e,t);const r=null==e?void 0:e.highWaterMark,o=null==e?void 0:e.size;return{highWaterMark:void 0===r?void 0:Y(r),size:void 0===o?void 0:Qe(o,`${t} has member 'size' that`)}}function Qe(e,t){return I(e,t),t=>Y(e(t))}function Ne(e,t,r){return I(e,r),r=>w(e,t,[r])}function He(e,t,r){return I(e,r),()=>w(e,t,[])}function xe(e,t,r){return I(e,r),r=>g(e,t,[r])}function Ve(e,t,r){return I(e,r),(r,o)=>w(e,t,[r,o])}Object.defineProperties(ReadableStreamBYOBReader.prototype,{cancel:{enumerable:!0},read:{enumerable:!0},releaseLock:{enumerable:!0},closed:{enumerable:!0}}),n(ReadableStreamBYOBReader.prototype.cancel,\"cancel\"),n(ReadableStreamBYOBReader.prototype.read,\"read\"),n(ReadableStreamBYOBReader.prototype.releaseLock,\"releaseLock\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamBYOBReader.prototype,e.toStringTag,{value:\"ReadableStreamBYOBReader\",configurable:!0});const Ue=\"function\"==typeof AbortController;class WritableStream{constructor(e={},t={}){void 0===e?e=null:D(e,\"First parameter\");const r=Ye(t,\"Second parameter\"),o=function(e,t){F(e,t);const r=null==e?void 0:e.abort,o=null==e?void 0:e.close,n=null==e?void 0:e.start,a=null==e?void 0:e.type,i=null==e?void 0:e.write;return{abort:void 0===r?void 0:Ne(r,e,`${t} has member 'abort' that`),close:void 0===o?void 0:He(o,e,`${t} has member 'close' that`),start:void 0===n?void 0:xe(n,e,`${t} has member 'start' that`),write:void 0===i?void 0:Ve(i,e,`${t} has member 'write' that`),type:a}}(e,\"First parameter\");var n;(n=this)._state=\"writable\",n._storedError=void 0,n._writer=void 0,n._writableStreamController=void 0,n._writeRequests=new S,n._inFlightWriteRequest=void 0,n._closeRequest=void 0,n._inFlightCloseRequest=void 0,n._pendingAbortRequest=void 0,n._backpressure=!1;if(void 0!==o.type)throw new RangeError(\"Invalid type is specified\");const a=Me(r);!function(e,t,r,o){const n=Object.create(WritableStreamDefaultController.prototype);let a,i,l,s;a=void 0!==t.start?()=>t.start(n):()=>{};i=void 0!==t.write?e=>t.write(e,n):()=>c(void 0);l=void 0!==t.close?()=>t.close():()=>c(void 0);s=void 0!==t.abort?e=>t.abort(e):()=>c(void 0);!function(e,t,r,o,n,a,i,l){t._controlledWritableStream=e,e._writableStreamController=t,t._queue=void 0,t._queueTotalSize=void 0,ce(t),t._abortReason=void 0,t._abortController=function(){if(Ue)return new AbortController}(),t._started=!1,t._strategySizeAlgorithm=l,t._strategyHWM=i,t._writeAlgorithm=o,t._closeAlgorithm=n,t._abortAlgorithm=a;const s=bt(t);nt(e,s);const u=r();b(c(u),(()=>(t._started=!0,dt(t),null)),(r=>(t._started=!0,Ze(e,r),null)))}(e,n,a,i,l,s,r,o)}(this,o,$e(r,1),a)}get locked(){if(!Ge(this))throw _t(\"locked\");return Xe(this)}abort(e){return Ge(this)?Xe(this)?d(new TypeError(\"Cannot abort a stream that already has a writer\")):Je(this,e):d(_t(\"abort\"))}close(){return Ge(this)?Xe(this)?d(new TypeError(\"Cannot close a stream that already has a writer\")):rt(this)?d(new TypeError(\"Cannot close an already-closing stream\")):Ke(this):d(_t(\"close\"))}getWriter(){if(!Ge(this))throw _t(\"getWriter\");return new WritableStreamDefaultWriter(this)}}function Ge(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_writableStreamController\")&&e instanceof WritableStream)}function Xe(e){return void 0!==e._writer}function Je(e,t){var r;if(\"closed\"===e._state||\"errored\"===e._state)return c(void 0);e._writableStreamController._abortReason=t,null===(r=e._writableStreamController._abortController)||void 0===r||r.abort(t);const o=e._state;if(\"closed\"===o||\"errored\"===o)return c(void 0);if(void 0!==e._pendingAbortRequest)return e._pendingAbortRequest._promise;let n=!1;\"erroring\"===o&&(n=!0,t=void 0);const a=u(((r,o)=>{e._pendingAbortRequest={_promise:void 0,_resolve:r,_reject:o,_reason:t,_wasAlreadyErroring:n}}));return e._pendingAbortRequest._promise=a,n||et(e,t),a}function Ke(e){const t=e._state;if(\"closed\"===t||\"errored\"===t)return d(new TypeError(`The stream (in ${t} state) is not in the writable state and cannot be closed`));const r=u(((t,r)=>{const o={_resolve:t,_reject:r};e._closeRequest=o})),o=e._writer;var n;return void 0!==o&&e._backpressure&&\"writable\"===t&&Et(o),ue(n=e._writableStreamController,lt,0),dt(n),r}function Ze(e,t){\"writable\"!==e._state?tt(e):et(e,t)}function et(e,t){const r=e._writableStreamController;e._state=\"erroring\",e._storedError=t;const o=e._writer;void 0!==o&&it(o,t),!function(e){if(void 0===e._inFlightWriteRequest&&void 0===e._inFlightCloseRequest)return!1;return!0}(e)&&r._started&&tt(e)}function tt(e){e._state=\"errored\",e._writableStreamController[R]();const t=e._storedError;if(e._writeRequests.forEach((e=>{e._reject(t)})),e._writeRequests=new S,void 0===e._pendingAbortRequest)return void ot(e);const r=e._pendingAbortRequest;if(e._pendingAbortRequest=void 0,r._wasAlreadyErroring)return r._reject(t),void ot(e);b(e._writableStreamController[v](r._reason),(()=>(r._resolve(),ot(e),null)),(t=>(r._reject(t),ot(e),null)))}function rt(e){return void 0!==e._closeRequest||void 0!==e._inFlightCloseRequest}function ot(e){void 0!==e._closeRequest&&(e._closeRequest._reject(e._storedError),e._closeRequest=void 0);const t=e._writer;void 0!==t&&St(t,e._storedError)}function nt(e,t){const r=e._writer;void 0!==r&&t!==e._backpressure&&(t?function(e){Rt(e)}(r):Et(r)),e._backpressure=t}Object.defineProperties(WritableStream.prototype,{abort:{enumerable:!0},close:{enumerable:!0},getWriter:{enumerable:!0},locked:{enumerable:!0}}),n(WritableStream.prototype.abort,\"abort\"),n(WritableStream.prototype.close,\"close\"),n(WritableStream.prototype.getWriter,\"getWriter\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(WritableStream.prototype,e.toStringTag,{value:\"WritableStream\",configurable:!0});class WritableStreamDefaultWriter{constructor(e){if($(e,1,\"WritableStreamDefaultWriter\"),function(e,t){if(!Ge(e))throw new TypeError(`${t} is not a WritableStream.`)}(e,\"First parameter\"),Xe(e))throw new TypeError(\"This stream has already been locked for exclusive writing by another writer\");this._ownerWritableStream=e,e._writer=this;const t=e._state;if(\"writable\"===t)!rt(e)&&e._backpressure?Rt(this):qt(this),gt(this);else if(\"erroring\"===t)Tt(this,e._storedError),gt(this);else if(\"closed\"===t)qt(this),gt(r=this),vt(r);else{const t=e._storedError;Tt(this,t),wt(this,t)}var r}get closed(){return at(this)?this._closedPromise:d(mt(\"closed\"))}get desiredSize(){if(!at(this))throw mt(\"desiredSize\");if(void 0===this._ownerWritableStream)throw yt(\"desiredSize\");return function(e){const t=e._ownerWritableStream,r=t._state;if(\"errored\"===r||\"erroring\"===r)return null;if(\"closed\"===r)return 0;return ct(t._writableStreamController)}(this)}get ready(){return at(this)?this._readyPromise:d(mt(\"ready\"))}abort(e){return at(this)?void 0===this._ownerWritableStream?d(yt(\"abort\")):function(e,t){return Je(e._ownerWritableStream,t)}(this,e):d(mt(\"abort\"))}close(){if(!at(this))return d(mt(\"close\"));const e=this._ownerWritableStream;return void 0===e?d(yt(\"close\")):rt(e)?d(new TypeError(\"Cannot close an already-closing stream\")):Ke(this._ownerWritableStream)}releaseLock(){if(!at(this))throw mt(\"releaseLock\");void 0!==this._ownerWritableStream&&function(e){const t=e._ownerWritableStream,r=new TypeError(\"Writer was released and can no longer be used to monitor the stream's closedness\");it(e,r),function(e,t){\"pending\"===e._closedPromiseState?St(e,t):function(e,t){wt(e,t)}(e,t)}(e,r),t._writer=void 0,e._ownerWritableStream=void 0}(this)}write(e){return at(this)?void 0===this._ownerWritableStream?d(yt(\"write to\")):function(e,t){const r=e._ownerWritableStream,o=r._writableStreamController,n=function(e,t){try{return e._strategySizeAlgorithm(t)}catch(t){return ft(e,t),1}}(o,t);if(r!==e._ownerWritableStream)return d(yt(\"write to\"));const a=r._state;if(\"errored\"===a)return d(r._storedError);if(rt(r)||\"closed\"===a)return d(new TypeError(\"The stream is closing or closed and cannot be written to\"));if(\"erroring\"===a)return d(r._storedError);const i=function(e){return u(((t,r)=>{const o={_resolve:t,_reject:r};e._writeRequests.push(o)}))}(r);return function(e,t,r){try{ue(e,t,r)}catch(t){return void ft(e,t)}const o=e._controlledWritableStream;if(!rt(o)&&\"writable\"===o._state){nt(o,bt(e))}dt(e)}(o,t,n),i}(this,e):d(mt(\"write\"))}}function at(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_ownerWritableStream\")&&e instanceof WritableStreamDefaultWriter)}function it(e,t){\"pending\"===e._readyPromiseState?Ct(e,t):function(e,t){Tt(e,t)}(e,t)}Object.defineProperties(WritableStreamDefaultWriter.prototype,{abort:{enumerable:!0},close:{enumerable:!0},releaseLock:{enumerable:!0},write:{enumerable:!0},closed:{enumerable:!0},desiredSize:{enumerable:!0},ready:{enumerable:!0}}),n(WritableStreamDefaultWriter.prototype.abort,\"abort\"),n(WritableStreamDefaultWriter.prototype.close,\"close\"),n(WritableStreamDefaultWriter.prototype.releaseLock,\"releaseLock\"),n(WritableStreamDefaultWriter.prototype.write,\"write\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(WritableStreamDefaultWriter.prototype,e.toStringTag,{value:\"WritableStreamDefaultWriter\",configurable:!0});const lt={};class WritableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get abortReason(){if(!st(this))throw pt(\"abortReason\");return this._abortReason}get signal(){if(!st(this))throw pt(\"signal\");if(void 0===this._abortController)throw new TypeError(\"WritableStreamDefaultController.prototype.signal is not supported\");return this._abortController.signal}error(e){if(!st(this))throw pt(\"error\");\"writable\"===this._controlledWritableStream._state&&ht(this,e)}[v](e){const t=this._abortAlgorithm(e);return ut(this),t}[R](){ce(this)}}function st(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledWritableStream\")&&e instanceof WritableStreamDefaultController)}function ut(e){e._writeAlgorithm=void 0,e._closeAlgorithm=void 0,e._abortAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function ct(e){return e._strategyHWM-e._queueTotalSize}function dt(e){const t=e._controlledWritableStream;if(!e._started)return;if(void 0!==t._inFlightWriteRequest)return;if(\"erroring\"===t._state)return void tt(t);if(0===e._queue.length)return;const r=e._queue.peek().value;r===lt?function(e){const t=e._controlledWritableStream;(function(e){e._inFlightCloseRequest=e._closeRequest,e._closeRequest=void 0})(t),se(e);const r=e._closeAlgorithm();ut(e),b(r,(()=>(function(e){e._inFlightCloseRequest._resolve(void 0),e._inFlightCloseRequest=void 0,\"erroring\"===e._state&&(e._storedError=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._resolve(),e._pendingAbortRequest=void 0)),e._state=\"closed\";const t=e._writer;void 0!==t&&vt(t)}(t),null)),(e=>(function(e,t){e._inFlightCloseRequest._reject(t),e._inFlightCloseRequest=void 0,void 0!==e._pendingAbortRequest&&(e._pendingAbortRequest._reject(t),e._pendingAbortRequest=void 0),Ze(e,t)}(t,e),null)))}(e):function(e,t){const r=e._controlledWritableStream;!function(e){e._inFlightWriteRequest=e._writeRequests.shift()}(r);b(e._writeAlgorithm(t),(()=>{!function(e){e._inFlightWriteRequest._resolve(void 0),e._inFlightWriteRequest=void 0}(r);const t=r._state;if(se(e),!rt(r)&&\"writable\"===t){const t=bt(e);nt(r,t)}return dt(e),null}),(t=>(\"writable\"===r._state&&ut(e),function(e,t){e._inFlightWriteRequest._reject(t),e._inFlightWriteRequest=void 0,Ze(e,t)}(r,t),null)))}(e,r)}function ft(e,t){\"writable\"===e._controlledWritableStream._state&&ht(e,t)}function bt(e){return ct(e)<=0}function ht(e,t){const r=e._controlledWritableStream;ut(e),et(r,t)}function _t(e){return new TypeError(`WritableStream.prototype.${e} can only be used on a WritableStream`)}function pt(e){return new TypeError(`WritableStreamDefaultController.prototype.${e} can only be used on a WritableStreamDefaultController`)}function mt(e){return new TypeError(`WritableStreamDefaultWriter.prototype.${e} can only be used on a WritableStreamDefaultWriter`)}function yt(e){return new TypeError(\"Cannot \"+e+\" a stream using a released writer\")}function gt(e){e._closedPromise=u(((t,r)=>{e._closedPromise_resolve=t,e._closedPromise_reject=r,e._closedPromiseState=\"pending\"}))}function wt(e,t){gt(e),St(e,t)}function St(e,t){void 0!==e._closedPromise_reject&&(m(e._closedPromise),e._closedPromise_reject(t),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"rejected\")}function vt(e){void 0!==e._closedPromise_resolve&&(e._closedPromise_resolve(void 0),e._closedPromise_resolve=void 0,e._closedPromise_reject=void 0,e._closedPromiseState=\"resolved\")}function Rt(e){e._readyPromise=u(((t,r)=>{e._readyPromise_resolve=t,e._readyPromise_reject=r})),e._readyPromiseState=\"pending\"}function Tt(e,t){Rt(e),Ct(e,t)}function qt(e){Rt(e),Et(e)}function Ct(e,t){void 0!==e._readyPromise_reject&&(m(e._readyPromise),e._readyPromise_reject(t),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"rejected\")}function Et(e){void 0!==e._readyPromise_resolve&&(e._readyPromise_resolve(void 0),e._readyPromise_resolve=void 0,e._readyPromise_reject=void 0,e._readyPromiseState=\"fulfilled\")}Object.defineProperties(WritableStreamDefaultController.prototype,{abortReason:{enumerable:!0},signal:{enumerable:!0},error:{enumerable:!0}}),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(WritableStreamDefaultController.prototype,e.toStringTag,{value:\"WritableStreamDefaultController\",configurable:!0});const Pt=\"undefined\"!=typeof DOMException?DOMException:void 0;const Wt=function(e){if(\"function\"!=typeof e&&\"object\"!=typeof e)return!1;try{return new e,!0}catch(e){return!1}}(Pt)?Pt:function(){const e=function(e,t){this.message=e||\"\",this.name=t||\"Error\",Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)};return e.prototype=Object.create(Error.prototype),Object.defineProperty(e.prototype,\"constructor\",{value:e,writable:!0,configurable:!0}),e}();function kt(e,t,r,o,n,a){const i=e.getReader(),l=t.getWriter();Vt(e)&&(e._disturbed=!0);let s,_,g,w=!1,S=!1,v=\"readable\",R=\"writable\",T=!1,q=!1;const C=u((e=>{g=e}));let E=Promise.resolve(void 0);return u(((P,W)=>{let k;function O(){if(w)return;const e=u(((e,t)=>{!function r(o){o?e():f(function(){if(w)return c(!0);return f(l.ready,(()=>f(i.read(),(e=>!!e.done||(E=l.write(e.value),m(E),!1)))))}(),r,t)}(!1)}));m(e)}function B(){return v=\"closed\",r?L():z((()=>(Ge(t)&&(T=rt(t),R=t._state),T||\"closed\"===R?c(void 0):\"erroring\"===R||\"errored\"===R?d(_):(T=!0,l.close()))),!1,void 0),null}function A(e){return w||(v=\"errored\",s=e,o?L(!0,e):z((()=>l.abort(e)),!0,e)),null}function j(e){return S||(R=\"errored\",_=e,n?L(!0,e):z((()=>i.cancel(e)),!0,e)),null}if(void 0!==a&&(k=()=>{const e=void 0!==a.reason?a.reason:new Wt(\"Aborted\",\"AbortError\"),t=[];o||t.push((()=>\"writable\"===R?l.abort(e):c(void 0))),n||t.push((()=>\"readable\"===v?i.cancel(e):c(void 0))),z((()=>Promise.all(t.map((e=>e())))),!0,e)},a.aborted?k():a.addEventListener(\"abort\",k)),Vt(e)&&(v=e._state,s=e._storedError),Ge(t)&&(R=t._state,_=t._storedError,T=rt(t)),Vt(e)&&Ge(t)&&(q=!0,g()),\"errored\"===v)A(s);else if(\"erroring\"===R||\"errored\"===R)j(_);else if(\"closed\"===v)B();else if(T||\"closed\"===R){const e=new TypeError(\"the destination writable stream closed before all data could be piped to it\");n?L(!0,e):z((()=>i.cancel(e)),!0,e)}function z(e,t,r){function o(){return\"writable\"!==R||T?n():h(function(){let e;return c(function t(){if(e!==E)return e=E,p(E,t,t)}())}(),n),null}function n(){return e?b(e(),(()=>F(t,r)),(e=>F(!0,e))):F(t,r),null}w||(w=!0,q?o():h(C,o))}function L(e,t){z(void 0,e,t)}function F(e,t){return S=!0,l.releaseLock(),i.releaseLock(),void 0!==a&&a.removeEventListener(\"abort\",k),e?W(t):P(void 0),null}w||(b(i.closed,B,A),b(l.closed,(function(){return S||(R=\"closed\"),null}),j)),q?O():y((()=>{q=!0,g(),O()}))}))}function Ot(e,t){return function(e){try{return e.getReader({mode:\"byob\"}).releaseLock(),!0}catch(e){return!1}}(e)?function(e){let t,r,o,n,a,i=e.getReader(),l=!1,s=!1,d=!1,f=!1,h=!1,p=!1;const m=u((e=>{a=e}));function y(e){_(e.closed,(t=>(e!==i||(o.error(t),n.error(t),h&&p||a(void 0)),null)))}function g(){l&&(i.releaseLock(),i=e.getReader(),y(i),l=!1),b(i.read(),(e=>{var t,r;if(d=!1,f=!1,e.done)return h||o.close(),p||n.close(),null===(t=o.byobRequest)||void 0===t||t.respond(0),null===(r=n.byobRequest)||void 0===r||r.respond(0),h&&p||a(void 0),null;const l=e.value,u=l;let c=l;if(!h&&!p)try{c=le(l)}catch(e){return o.error(e),n.error(e),a(i.cancel(e)),null}return h||o.enqueue(u),p||n.enqueue(c),s=!1,d?S():f&&v(),null}),(()=>(s=!1,null)))}function w(t,r){l||(i.releaseLock(),i=e.getReader({mode:\"byob\"}),y(i),l=!0);const u=r?n:o,c=r?o:n;b(i.read(t),(e=>{var t;d=!1,f=!1;const o=r?p:h,n=r?h:p;if(e.done){o||u.close(),n||c.close();const r=e.value;return void 0!==r&&(o||u.byobRequest.respondWithNewView(r),n||null===(t=c.byobRequest)||void 0===t||t.respond(0)),o&&n||a(void 0),null}const l=e.value;if(n)o||u.byobRequest.respondWithNewView(l);else{let e;try{e=le(l)}catch(e){return u.error(e),c.error(e),a(i.cancel(e)),null}o||u.byobRequest.respondWithNewView(l),c.enqueue(e)}return s=!1,d?S():f&&v(),null}),(()=>(s=!1,null)))}function S(){if(s)return d=!0,c(void 0);s=!0;const e=o.byobRequest;return null===e?g():w(e.view,!1),c(void 0)}function v(){if(s)return f=!0,c(void 0);s=!0;const e=n.byobRequest;return null===e?g():w(e.view,!0),c(void 0)}function R(e){if(h=!0,t=e,p){const e=[t,r],o=i.cancel(e);a(o)}return m}function T(e){if(p=!0,r=e,h){const e=[t,r],o=i.cancel(e);a(o)}return m}const q=new ReadableStream({type:\"bytes\",start(e){o=e},pull:S,cancel:R}),C=new ReadableStream({type:\"bytes\",start(e){n=e},pull:v,cancel:T});return y(i),[q,C]}(e):function(e,t){const r=e.getReader();let o,n,a,i,l,s=!1,d=!1,f=!1,h=!1;const p=u((e=>{l=e}));function m(){return s?(d=!0,c(void 0)):(s=!0,b(r.read(),(e=>{if(d=!1,e.done)return f||a.close(),h||i.close(),f&&h||l(void 0),null;const t=e.value,r=t,o=t;return f||a.enqueue(r),h||i.enqueue(o),s=!1,d&&m(),null}),(()=>(s=!1,null))),c(void 0))}function y(e){if(f=!0,o=e,h){const e=[o,n],t=r.cancel(e);l(t)}return p}function g(e){if(h=!0,n=e,f){const e=[o,n],t=r.cancel(e);l(t)}return p}const w=new ReadableStream({start(e){a=e},pull:m,cancel:y}),S=new ReadableStream({start(e){i=e},pull:m,cancel:g});return _(r.closed,(e=>(a.error(e),i.error(e),f&&h||l(void 0),null))),[w,S]}(e)}class ReadableStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!Bt(this))throw Dt(\"desiredSize\");return Lt(this)}close(){if(!Bt(this))throw Dt(\"close\");if(!Ft(this))throw new TypeError(\"The stream is not in a state that permits close\");!function(e){if(!Ft(e))return;const t=e._controlledReadableStream;e._closeRequested=!0,0===e._queue.length&&(jt(e),Xt(t))}(this)}enqueue(e){if(!Bt(this))throw Dt(\"enqueue\");if(!Ft(this))throw new TypeError(\"The stream is not in a state that permits enqueue\");return function(e,t){if(!Ft(e))return;const r=e._controlledReadableStream;if(Ut(r)&&X(r)>0)G(r,t,!1);else{let r;try{r=e._strategySizeAlgorithm(t)}catch(t){throw zt(e,t),t}try{ue(e,t,r)}catch(t){throw zt(e,t),t}}At(e)}(this,e)}error(e){if(!Bt(this))throw Dt(\"error\");zt(this,e)}[T](e){ce(this);const t=this._cancelAlgorithm(e);return jt(this),t}[q](e){const t=this._controlledReadableStream;if(this._queue.length>0){const r=se(this);this._closeRequested&&0===this._queue.length?(jt(this),Xt(t)):At(this),e._chunkSteps(r)}else U(t,e),At(this)}[C](){}}function Bt(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledReadableStream\")&&e instanceof ReadableStreamDefaultController)}function At(e){const t=function(e){const t=e._controlledReadableStream;if(!Ft(e))return!1;if(!e._started)return!1;if(Ut(t)&&X(t)>0)return!0;if(Lt(e)>0)return!0;return!1}(e);if(!t)return;if(e._pulling)return void(e._pullAgain=!0);e._pulling=!0;b(e._pullAlgorithm(),(()=>(e._pulling=!1,e._pullAgain&&(e._pullAgain=!1,At(e)),null)),(t=>(zt(e,t),null)))}function jt(e){e._pullAlgorithm=void 0,e._cancelAlgorithm=void 0,e._strategySizeAlgorithm=void 0}function zt(e,t){const r=e._controlledReadableStream;\"readable\"===r._state&&(ce(e),jt(e),Jt(r,t))}function Lt(e){const t=e._controlledReadableStream._state;return\"errored\"===t?null:\"closed\"===t?0:e._strategyHWM-e._queueTotalSize}function Ft(e){return!e._closeRequested&&\"readable\"===e._controlledReadableStream._state}function It(e,t,r,o){const n=Object.create(ReadableStreamDefaultController.prototype);let a,i,l;a=void 0!==t.start?()=>t.start(n):()=>{},i=void 0!==t.pull?()=>t.pull(n):()=>c(void 0),l=void 0!==t.cancel?e=>t.cancel(e):()=>c(void 0),function(e,t,r,o,n,a,i){t._controlledReadableStream=e,t._queue=void 0,t._queueTotalSize=void 0,ce(t),t._started=!1,t._closeRequested=!1,t._pullAgain=!1,t._pulling=!1,t._strategySizeAlgorithm=i,t._strategyHWM=a,t._pullAlgorithm=o,t._cancelAlgorithm=n,e._readableStreamController=t,b(c(r()),(()=>(t._started=!0,At(t),null)),(e=>(zt(t,e),null)))}(e,n,a,i,l,r,o)}function Dt(e){return new TypeError(`ReadableStreamDefaultController.prototype.${e} can only be used on a ReadableStreamDefaultController`)}function $t(e,t,r){return I(e,r),r=>w(e,t,[r])}function Mt(e,t,r){return I(e,r),r=>w(e,t,[r])}function Yt(e,t,r){return I(e,r),r=>g(e,t,[r])}function Qt(e,t){if(\"bytes\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamType`);return e}function Nt(e,t){if(\"byob\"!==(e=`${e}`))throw new TypeError(`${t} '${e}' is not a valid enumeration value for ReadableStreamReaderMode`);return e}function Ht(e,t){F(e,t);const r=null==e?void 0:e.preventAbort,o=null==e?void 0:e.preventCancel,n=null==e?void 0:e.preventClose,a=null==e?void 0:e.signal;return void 0!==a&&function(e,t){if(!function(e){if(\"object\"!=typeof e||null===e)return!1;try{return\"boolean\"==typeof e.aborted}catch(e){return!1}}(e))throw new TypeError(`${t} is not an AbortSignal.`)}(a,`${t} has member 'signal' that`),{preventAbort:Boolean(r),preventCancel:Boolean(o),preventClose:Boolean(n),signal:a}}function xt(e,t){F(e,t);const r=null==e?void 0:e.readable;M(r,\"readable\",\"ReadableWritablePair\"),function(e,t){if(!H(e))throw new TypeError(`${t} is not a ReadableStream.`)}(r,`${t} has member 'readable' that`);const o=null==e?void 0:e.writable;return M(o,\"writable\",\"ReadableWritablePair\"),function(e,t){if(!x(e))throw new TypeError(`${t} is not a WritableStream.`)}(o,`${t} has member 'writable' that`),{readable:r,writable:o}}Object.defineProperties(ReadableStreamDefaultController.prototype,{close:{enumerable:!0},enqueue:{enumerable:!0},error:{enumerable:!0},desiredSize:{enumerable:!0}}),n(ReadableStreamDefaultController.prototype.close,\"close\"),n(ReadableStreamDefaultController.prototype.enqueue,\"enqueue\"),n(ReadableStreamDefaultController.prototype.error,\"error\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(ReadableStreamDefaultController.prototype,e.toStringTag,{value:\"ReadableStreamDefaultController\",configurable:!0});class ReadableStream{constructor(e={},t={}){void 0===e?e=null:D(e,\"First parameter\");const r=Ye(t,\"Second parameter\"),o=function(e,t){F(e,t);const r=e,o=null==r?void 0:r.autoAllocateChunkSize,n=null==r?void 0:r.cancel,a=null==r?void 0:r.pull,i=null==r?void 0:r.start,l=null==r?void 0:r.type;return{autoAllocateChunkSize:void 0===o?void 0:N(o,`${t} has member 'autoAllocateChunkSize' that`),cancel:void 0===n?void 0:$t(n,r,`${t} has member 'cancel' that`),pull:void 0===a?void 0:Mt(a,r,`${t} has member 'pull' that`),start:void 0===i?void 0:Yt(i,r,`${t} has member 'start' that`),type:void 0===l?void 0:Qt(l,`${t} has member 'type' that`)}}(e,\"First parameter\");var n;if((n=this)._state=\"readable\",n._reader=void 0,n._storedError=void 0,n._disturbed=!1,\"bytes\"===o.type){if(void 0!==r.size)throw new RangeError(\"The strategy for a byte stream cannot have a size function\");Oe(this,o,$e(r,0))}else{const e=Me(r);It(this,o,$e(r,1),e)}}get locked(){if(!Vt(this))throw Kt(\"locked\");return Ut(this)}cancel(e){return Vt(this)?Ut(this)?d(new TypeError(\"Cannot cancel a stream that already has a reader\")):Gt(this,e):d(Kt(\"cancel\"))}getReader(e){if(!Vt(this))throw Kt(\"getReader\");return void 0===function(e,t){F(e,t);const r=null==e?void 0:e.mode;return{mode:void 0===r?void 0:Nt(r,`${t} has member 'mode' that`)}}(e,\"First parameter\").mode?new ReadableStreamDefaultReader(this):function(e){return new ReadableStreamBYOBReader(e)}(this)}pipeThrough(e,t={}){if(!H(this))throw Kt(\"pipeThrough\");$(e,1,\"pipeThrough\");const r=xt(e,\"First parameter\"),o=Ht(t,\"Second parameter\");if(this.locked)throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked ReadableStream\");if(r.writable.locked)throw new TypeError(\"ReadableStream.prototype.pipeThrough cannot be used on a locked WritableStream\");return m(kt(this,r.writable,o.preventClose,o.preventAbort,o.preventCancel,o.signal)),r.readable}pipeTo(e,t={}){if(!H(this))return d(Kt(\"pipeTo\"));if(void 0===e)return d(\"Parameter 1 is required in 'pipeTo'.\");if(!x(e))return d(new TypeError(\"ReadableStream.prototype.pipeTo's first argument must be a WritableStream\"));let r;try{r=Ht(t,\"Second parameter\")}catch(e){return d(e)}return this.locked?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream\")):e.locked?d(new TypeError(\"ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream\")):kt(this,e,r.preventClose,r.preventAbort,r.preventCancel,r.signal)}tee(){if(!H(this))throw Kt(\"tee\");if(this.locked)throw new TypeError(\"Cannot tee a stream that already has a reader\");return Ot(this)}values(e){if(!H(this))throw Kt(\"values\");return function(e,t){const r=e.getReader(),o=new te(r,t),n=Object.create(re);return n._asyncIteratorImpl=o,n}(this,function(e,t){F(e,t);const r=null==e?void 0:e.preventCancel;return{preventCancel:Boolean(r)}}(e,\"First parameter\").preventCancel)}}function Vt(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_readableStreamController\")&&e instanceof ReadableStream)}function Ut(e){return void 0!==e._reader}function Gt(e,r){if(e._disturbed=!0,\"closed\"===e._state)return c(void 0);if(\"errored\"===e._state)return d(e._storedError);Xt(e);const o=e._reader;if(void 0!==o&&Fe(o)){const e=o._readIntoRequests;o._readIntoRequests=new S,e.forEach((e=>{e._closeSteps(void 0)}))}return p(e._readableStreamController[T](r),t)}function Xt(e){e._state=\"closed\";const t=e._reader;if(void 0!==t&&(j(t),K(t))){const e=t._readRequests;t._readRequests=new S,e.forEach((e=>{e._closeSteps()}))}}function Jt(e,t){e._state=\"errored\",e._storedError=t;const r=e._reader;void 0!==r&&(A(r,t),K(r)?Z(r,t):Ie(r,t))}function Kt(e){return new TypeError(`ReadableStream.prototype.${e} can only be used on a ReadableStream`)}function Zt(e,t){F(e,t);const r=null==e?void 0:e.highWaterMark;return M(r,\"highWaterMark\",\"QueuingStrategyInit\"),{highWaterMark:Y(r)}}Object.defineProperties(ReadableStream.prototype,{cancel:{enumerable:!0},getReader:{enumerable:!0},pipeThrough:{enumerable:!0},pipeTo:{enumerable:!0},tee:{enumerable:!0},values:{enumerable:!0},locked:{enumerable:!0}}),n(ReadableStream.prototype.cancel,\"cancel\"),n(ReadableStream.prototype.getReader,\"getReader\"),n(ReadableStream.prototype.pipeThrough,\"pipeThrough\"),n(ReadableStream.prototype.pipeTo,\"pipeTo\"),n(ReadableStream.prototype.tee,\"tee\"),n(ReadableStream.prototype.values,\"values\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(ReadableStream.prototype,e.toStringTag,{value:\"ReadableStream\",configurable:!0}),\"symbol\"==typeof e.asyncIterator&&Object.defineProperty(ReadableStream.prototype,e.asyncIterator,{value:ReadableStream.prototype.values,writable:!0,configurable:!0});const er=e=>e.byteLength;n(er,\"size\");class ByteLengthQueuingStrategy{constructor(e){$(e,1,\"ByteLengthQueuingStrategy\"),e=Zt(e,\"First parameter\"),this._byteLengthQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!rr(this))throw tr(\"highWaterMark\");return this._byteLengthQueuingStrategyHighWaterMark}get size(){if(!rr(this))throw tr(\"size\");return er}}function tr(e){return new TypeError(`ByteLengthQueuingStrategy.prototype.${e} can only be used on a ByteLengthQueuingStrategy`)}function rr(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_byteLengthQueuingStrategyHighWaterMark\")&&e instanceof ByteLengthQueuingStrategy)}Object.defineProperties(ByteLengthQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(ByteLengthQueuingStrategy.prototype,e.toStringTag,{value:\"ByteLengthQueuingStrategy\",configurable:!0});const or=()=>1;n(or,\"size\");class CountQueuingStrategy{constructor(e){$(e,1,\"CountQueuingStrategy\"),e=Zt(e,\"First parameter\"),this._countQueuingStrategyHighWaterMark=e.highWaterMark}get highWaterMark(){if(!ar(this))throw nr(\"highWaterMark\");return this._countQueuingStrategyHighWaterMark}get size(){if(!ar(this))throw nr(\"size\");return or}}function nr(e){return new TypeError(`CountQueuingStrategy.prototype.${e} can only be used on a CountQueuingStrategy`)}function ar(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_countQueuingStrategyHighWaterMark\")&&e instanceof CountQueuingStrategy)}function ir(e,t,r){return I(e,r),r=>w(e,t,[r])}function lr(e,t,r){return I(e,r),r=>g(e,t,[r])}function sr(e,t,r){return I(e,r),(r,o)=>w(e,t,[r,o])}Object.defineProperties(CountQueuingStrategy.prototype,{highWaterMark:{enumerable:!0},size:{enumerable:!0}}),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(CountQueuingStrategy.prototype,e.toStringTag,{value:\"CountQueuingStrategy\",configurable:!0});class TransformStream{constructor(e={},t={},r={}){void 0===e&&(e=null);const o=Ye(t,\"Second parameter\"),n=Ye(r,\"Third parameter\"),a=function(e,t){F(e,t);const r=null==e?void 0:e.flush,o=null==e?void 0:e.readableType,n=null==e?void 0:e.start,a=null==e?void 0:e.transform,i=null==e?void 0:e.writableType;return{flush:void 0===r?void 0:ir(r,e,`${t} has member 'flush' that`),readableType:o,start:void 0===n?void 0:lr(n,e,`${t} has member 'start' that`),transform:void 0===a?void 0:sr(a,e,`${t} has member 'transform' that`),writableType:i}}(e,\"First parameter\");if(void 0!==a.readableType)throw new RangeError(\"Invalid readableType specified\");if(void 0!==a.writableType)throw new RangeError(\"Invalid writableType specified\");const i=$e(n,0),l=Me(n),s=$e(o,1),f=Me(o);let b;!function(e,t,r,o,n,a){function i(){return t}function l(t){return function(e,t){const r=e._transformStreamController;if(e._backpressure){return p(e._backpressureChangePromise,(()=>{if(\"erroring\"===(Ge(e._writable)?e._writable._state:e._writableState))throw Ge(e._writable)?e._writable._storedError:e._writableStoredError;return pr(r,t)}))}return pr(r,t)}(e,t)}function s(t){return function(e,t){return cr(e,t),c(void 0)}(e,t)}function u(){return function(e){const t=e._transformStreamController,r=t._flushAlgorithm();return hr(t),p(r,(()=>{if(\"errored\"===e._readableState)throw e._readableStoredError;gr(e)&&wr(e)}),(t=>{throw cr(e,t),e._readableStoredError}))}(e)}function d(){return function(e){return fr(e,!1),e._backpressureChangePromise}(e)}function f(t){return dr(e,t),c(void 0)}e._writableState=\"writable\",e._writableStoredError=void 0,e._writableHasInFlightOperation=!1,e._writableStarted=!1,e._writable=function(e,t,r,o,n,a,i){return new WritableStream({start(r){e._writableController=r;try{const t=r.signal;void 0!==t&&t.addEventListener(\"abort\",(()=>{\"writable\"===e._writableState&&(e._writableState=\"erroring\",t.reason&&(e._writableStoredError=t.reason))}))}catch(e){}return p(t(),(()=>(e._writableStarted=!0,Cr(e),null)),(t=>{throw e._writableStarted=!0,Rr(e,t),t}))},write:t=>(function(e){e._writableHasInFlightOperation=!0}(e),p(r(t),(()=>(function(e){e._writableHasInFlightOperation=!1}(e),Cr(e),null)),(t=>{throw function(e,t){e._writableHasInFlightOperation=!1,Rr(e,t)}(e,t),t}))),close:()=>(function(e){e._writableHasInFlightOperation=!0}(e),p(o(),(()=>(function(e){e._writableHasInFlightOperation=!1;\"erroring\"===e._writableState&&(e._writableStoredError=void 0);e._writableState=\"closed\"}(e),null)),(t=>{throw function(e,t){e._writableHasInFlightOperation=!1,e._writableState,Rr(e,t)}(e,t),t}))),abort:t=>(e._writableState=\"errored\",e._writableStoredError=t,n(t))},{highWaterMark:a,size:i})}(e,i,l,u,s,r,o),e._readableState=\"readable\",e._readableStoredError=void 0,e._readableCloseRequested=!1,e._readablePulling=!1,e._readable=function(e,t,r,o,n,a){return new ReadableStream({start:r=>(e._readableController=r,t().catch((t=>{Sr(e,t)}))),pull:()=>(e._readablePulling=!0,r().catch((t=>{Sr(e,t)}))),cancel:t=>(e._readableState=\"closed\",o(t))},{highWaterMark:n,size:a})}(e,i,d,f,n,a),e._backpressure=void 0,e._backpressureChangePromise=void 0,e._backpressureChangePromise_resolve=void 0,fr(e,!0),e._transformStreamController=void 0}(this,u((e=>{b=e})),s,f,i,l),function(e,t){const r=Object.create(TransformStreamDefaultController.prototype);let o,n;o=void 0!==t.transform?e=>t.transform(e,r):e=>{try{return _r(r,e),c(void 0)}catch(e){return d(e)}};n=void 0!==t.flush?()=>t.flush(r):()=>c(void 0);!function(e,t,r,o){t._controlledTransformStream=e,e._transformStreamController=t,t._transformAlgorithm=r,t._flushAlgorithm=o}(e,r,o,n)}(this,a),void 0!==a.start?b(a.start(this._transformStreamController)):b(void 0)}get readable(){if(!ur(this))throw yr(\"readable\");return this._readable}get writable(){if(!ur(this))throw yr(\"writable\");return this._writable}}function ur(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_transformStreamController\")&&e instanceof TransformStream)}function cr(e,t){Sr(e,t),dr(e,t)}function dr(e,t){hr(e._transformStreamController),function(e,t){e._writableController.error(t);\"writable\"===e._writableState&&Tr(e,t)}(e,t),e._backpressure&&fr(e,!1)}function fr(e,t){void 0!==e._backpressureChangePromise&&e._backpressureChangePromise_resolve(),e._backpressureChangePromise=u((t=>{e._backpressureChangePromise_resolve=t})),e._backpressure=t}Object.defineProperties(TransformStream.prototype,{readable:{enumerable:!0},writable:{enumerable:!0}}),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(TransformStream.prototype,e.toStringTag,{value:\"TransformStream\",configurable:!0});class TransformStreamDefaultController{constructor(){throw new TypeError(\"Illegal constructor\")}get desiredSize(){if(!br(this))throw mr(\"desiredSize\");return vr(this._controlledTransformStream)}enqueue(e){if(!br(this))throw mr(\"enqueue\");_r(this,e)}error(e){if(!br(this))throw mr(\"error\");var t;t=e,cr(this._controlledTransformStream,t)}terminate(){if(!br(this))throw mr(\"terminate\");!function(e){const t=e._controlledTransformStream;gr(t)&&wr(t);const r=new TypeError(\"TransformStream terminated\");dr(t,r)}(this)}}function br(e){return!!r(e)&&(!!Object.prototype.hasOwnProperty.call(e,\"_controlledTransformStream\")&&e instanceof TransformStreamDefaultController)}function hr(e){e._transformAlgorithm=void 0,e._flushAlgorithm=void 0}function _r(e,t){const r=e._controlledTransformStream;if(!gr(r))throw new TypeError(\"Readable side is not in a state that permits enqueue\");try{!function(e,t){e._readablePulling=!1;try{e._readableController.enqueue(t)}catch(t){throw Sr(e,t),t}}(r,t)}catch(e){throw dr(r,e),r._readableStoredError}const o=function(e){return!function(e){if(!gr(e))return!1;if(e._readablePulling)return!0;if(vr(e)>0)return!0;return!1}(e)}(r);o!==r._backpressure&&fr(r,!0)}function pr(e,t){return p(e._transformAlgorithm(t),void 0,(t=>{throw cr(e._controlledTransformStream,t),t}))}function mr(e){return new TypeError(`TransformStreamDefaultController.prototype.${e} can only be used on a TransformStreamDefaultController`)}function yr(e){return new TypeError(`TransformStream.prototype.${e} can only be used on a TransformStream`)}function gr(e){return!e._readableCloseRequested&&\"readable\"===e._readableState}function wr(e){e._readableState=\"closed\",e._readableCloseRequested=!0,e._readableController.close()}function Sr(e,t){\"readable\"===e._readableState&&(e._readableState=\"errored\",e._readableStoredError=t),e._readableController.error(t)}function vr(e){return e._readableController.desiredSize}function Rr(e,t){\"writable\"!==e._writableState?qr(e):Tr(e,t)}function Tr(e,t){e._writableState=\"erroring\",e._writableStoredError=t,!function(e){return e._writableHasInFlightOperation}(e)&&e._writableStarted&&qr(e)}function qr(e){e._writableState=\"errored\"}function Cr(e){\"erroring\"===e._writableState&&qr(e)}Object.defineProperties(TransformStreamDefaultController.prototype,{enqueue:{enumerable:!0},error:{enumerable:!0},terminate:{enumerable:!0},desiredSize:{enumerable:!0}}),n(TransformStreamDefaultController.prototype.enqueue,\"enqueue\"),n(TransformStreamDefaultController.prototype.error,\"error\"),n(TransformStreamDefaultController.prototype.terminate,\"terminate\"),\"symbol\"==typeof e.toStringTag&&Object.defineProperty(TransformStreamDefaultController.prototype,e.toStringTag,{value:\"TransformStreamDefaultController\",configurable:!0});export{ByteLengthQueuingStrategy,CountQueuingStrategy,ReadableByteStreamController,ReadableStream,ReadableStreamBYOBReader,ReadableStreamBYOBRequest,ReadableStreamDefaultController,ReadableStreamDefaultReader,TransformStream,TransformStreamDefaultController,WritableStream,WritableStreamDefaultController,WritableStreamDefaultWriter};\n",
|
|
16
|
+
"export const isFunction = (value) => (typeof value === \"function\");\n",
|
|
17
|
+
"/*! Based on fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> & David Frank */\nimport { isFunction } from \"./isFunction.js\";\nconst CHUNK_SIZE = 65536;\nasync function* clonePart(part) {\n const end = part.byteOffset + part.byteLength;\n let position = part.byteOffset;\n while (position !== end) {\n const size = Math.min(end - position, CHUNK_SIZE);\n const chunk = part.buffer.slice(position, position + size);\n position += chunk.byteLength;\n yield new Uint8Array(chunk);\n }\n}\nasync function* consumeNodeBlob(blob) {\n let position = 0;\n while (position !== blob.size) {\n const chunk = blob.slice(position, Math.min(blob.size, position + CHUNK_SIZE));\n const buffer = await chunk.arrayBuffer();\n position += buffer.byteLength;\n yield new Uint8Array(buffer);\n }\n}\nexport async function* consumeBlobParts(parts, clone = false) {\n for (const part of parts) {\n if (ArrayBuffer.isView(part)) {\n if (clone) {\n yield* clonePart(part);\n }\n else {\n yield part;\n }\n }\n else if (isFunction(part.stream)) {\n yield* part.stream();\n }\n else {\n yield* consumeNodeBlob(part);\n }\n }\n}\nexport function* sliceBlob(blobParts, blobSize, start = 0, end) {\n end !== null && end !== void 0 ? end : (end = blobSize);\n let relativeStart = start < 0\n ? Math.max(blobSize + start, 0)\n : Math.min(start, blobSize);\n let relativeEnd = end < 0\n ? Math.max(blobSize + end, 0)\n : Math.min(end, blobSize);\n const span = Math.max(relativeEnd - relativeStart, 0);\n let added = 0;\n for (const part of blobParts) {\n if (added >= span) {\n break;\n }\n const partSize = ArrayBuffer.isView(part) ? part.byteLength : part.size;\n if (relativeStart && partSize <= relativeStart) {\n relativeStart -= partSize;\n relativeEnd -= partSize;\n }\n else {\n let chunk;\n if (ArrayBuffer.isView(part)) {\n chunk = part.subarray(relativeStart, Math.min(partSize, relativeEnd));\n added += chunk.byteLength;\n }\n else {\n chunk = part.slice(relativeStart, Math.min(partSize, relativeEnd));\n added += chunk.size;\n }\n relativeEnd -= partSize;\n relativeStart = 0;\n yield chunk;\n }\n }\n}\n",
|
|
18
|
+
"/*! Based on fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> & David Frank */\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Blob_parts, _Blob_type, _Blob_size;\nimport { ReadableStream } from \"web-streams-polyfill\";\nimport { isFunction } from \"./isFunction.js\";\nimport { consumeBlobParts, sliceBlob } from \"./blobHelpers.js\";\nexport class Blob {\n constructor(blobParts = [], options = {}) {\n _Blob_parts.set(this, []);\n _Blob_type.set(this, \"\");\n _Blob_size.set(this, 0);\n options !== null && options !== void 0 ? options : (options = {});\n if (typeof blobParts !== \"object\" || blobParts === null) {\n throw new TypeError(\"Failed to construct 'Blob': \"\n + \"The provided value cannot be converted to a sequence.\");\n }\n if (!isFunction(blobParts[Symbol.iterator])) {\n throw new TypeError(\"Failed to construct 'Blob': \"\n + \"The object must have a callable @@iterator property.\");\n }\n if (typeof options !== \"object\" && !isFunction(options)) {\n throw new TypeError(\"Failed to construct 'Blob': parameter 2 cannot convert to dictionary.\");\n }\n const encoder = new TextEncoder();\n for (const raw of blobParts) {\n let part;\n if (ArrayBuffer.isView(raw)) {\n part = new Uint8Array(raw.buffer.slice(raw.byteOffset, raw.byteOffset + raw.byteLength));\n }\n else if (raw instanceof ArrayBuffer) {\n part = new Uint8Array(raw.slice(0));\n }\n else if (raw instanceof Blob) {\n part = raw;\n }\n else {\n part = encoder.encode(String(raw));\n }\n __classPrivateFieldSet(this, _Blob_size, __classPrivateFieldGet(this, _Blob_size, \"f\") + (ArrayBuffer.isView(part) ? part.byteLength : part.size), \"f\");\n __classPrivateFieldGet(this, _Blob_parts, \"f\").push(part);\n }\n const type = options.type === undefined ? \"\" : String(options.type);\n __classPrivateFieldSet(this, _Blob_type, /^[\\x20-\\x7E]*$/.test(type) ? type : \"\", \"f\");\n }\n static [(_Blob_parts = new WeakMap(), _Blob_type = new WeakMap(), _Blob_size = new WeakMap(), Symbol.hasInstance)](value) {\n return Boolean(value\n && typeof value === \"object\"\n && isFunction(value.constructor)\n && (isFunction(value.stream)\n || isFunction(value.arrayBuffer))\n && /^(Blob|File)$/.test(value[Symbol.toStringTag]));\n }\n get type() {\n return __classPrivateFieldGet(this, _Blob_type, \"f\");\n }\n get size() {\n return __classPrivateFieldGet(this, _Blob_size, \"f\");\n }\n slice(start, end, contentType) {\n return new Blob(sliceBlob(__classPrivateFieldGet(this, _Blob_parts, \"f\"), this.size, start, end), {\n type: contentType\n });\n }\n async text() {\n const decoder = new TextDecoder();\n let result = \"\";\n for await (const chunk of consumeBlobParts(__classPrivateFieldGet(this, _Blob_parts, \"f\"))) {\n result += decoder.decode(chunk, { stream: true });\n }\n result += decoder.decode();\n return result;\n }\n async arrayBuffer() {\n const view = new Uint8Array(this.size);\n let offset = 0;\n for await (const chunk of consumeBlobParts(__classPrivateFieldGet(this, _Blob_parts, \"f\"))) {\n view.set(chunk, offset);\n offset += chunk.length;\n }\n return view.buffer;\n }\n stream() {\n const iterator = consumeBlobParts(__classPrivateFieldGet(this, _Blob_parts, \"f\"), true);\n return new ReadableStream({\n async pull(controller) {\n const { value, done } = await iterator.next();\n if (done) {\n return queueMicrotask(() => controller.close());\n }\n controller.enqueue(value);\n },\n async cancel() {\n await iterator.return();\n }\n });\n }\n get [Symbol.toStringTag]() {\n return \"Blob\";\n }\n}\nObject.defineProperties(Blob.prototype, {\n type: { enumerable: true },\n size: { enumerable: true },\n slice: { enumerable: true },\n stream: { enumerable: true },\n text: { enumerable: true },\n arrayBuffer: { enumerable: true }\n});\n",
|
|
19
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _File_name, _File_lastModified;\nimport { Blob } from \"./Blob.js\";\nexport class File extends Blob {\n constructor(fileBits, name, options = {}) {\n super(fileBits, options);\n _File_name.set(this, void 0);\n _File_lastModified.set(this, 0);\n if (arguments.length < 2) {\n throw new TypeError(\"Failed to construct 'File': 2 arguments required, \"\n + `but only ${arguments.length} present.`);\n }\n __classPrivateFieldSet(this, _File_name, String(name), \"f\");\n const lastModified = options.lastModified === undefined\n ? Date.now()\n : Number(options.lastModified);\n if (!Number.isNaN(lastModified)) {\n __classPrivateFieldSet(this, _File_lastModified, lastModified, \"f\");\n }\n }\n static [(_File_name = new WeakMap(), _File_lastModified = new WeakMap(), Symbol.hasInstance)](value) {\n return value instanceof Blob\n && value[Symbol.toStringTag] === \"File\"\n && typeof value.name === \"string\";\n }\n get name() {\n return __classPrivateFieldGet(this, _File_name, \"f\");\n }\n get lastModified() {\n return __classPrivateFieldGet(this, _File_lastModified, \"f\");\n }\n get webkitRelativePath() {\n return \"\";\n }\n get [Symbol.toStringTag]() {\n return \"File\";\n }\n}\n",
|
|
20
|
+
"import { File } from \"./File.js\";\nexport const isFile = (value) => value instanceof File;\n",
|
|
21
|
+
"/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n",
|
|
22
|
+
"/*!\n * humanize-ms - index.js\n * Copyright(c) 2014 dead_horse <dead_horse@qq.com>\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar util = require('util');\nvar ms = require('ms');\n\nmodule.exports = function (t) {\n if (typeof t === 'number') return t;\n var r = ms(t);\n if (r === undefined) {\n var err = new Error(util.format('humanize-ms(%j) result undefined', t));\n console.warn(err.stack);\n }\n return r;\n};\n",
|
|
23
|
+
"'use strict';\n\nmodule.exports = {\n // agent\n CURRENT_ID: Symbol('agentkeepalive#currentId'),\n CREATE_ID: Symbol('agentkeepalive#createId'),\n INIT_SOCKET: Symbol('agentkeepalive#initSocket'),\n CREATE_HTTPS_CONNECTION: Symbol('agentkeepalive#createHttpsConnection'),\n // socket\n SOCKET_CREATED_TIME: Symbol('agentkeepalive#socketCreatedTime'),\n SOCKET_NAME: Symbol('agentkeepalive#socketName'),\n SOCKET_REQUEST_COUNT: Symbol('agentkeepalive#socketRequestCount'),\n SOCKET_REQUEST_FINISHED_COUNT: Symbol('agentkeepalive#socketRequestFinishedCount'),\n};\n",
|
|
24
|
+
"'use strict';\n\nconst OriginalAgent = require('http').Agent;\nconst ms = require('humanize-ms');\nconst debug = require('util').debuglog('agentkeepalive');\nconst {\n INIT_SOCKET,\n CURRENT_ID,\n CREATE_ID,\n SOCKET_CREATED_TIME,\n SOCKET_NAME,\n SOCKET_REQUEST_COUNT,\n SOCKET_REQUEST_FINISHED_COUNT,\n} = require('./constants');\n\n// OriginalAgent come from\n// - https://github.com/nodejs/node/blob/v8.12.0/lib/_http_agent.js\n// - https://github.com/nodejs/node/blob/v10.12.0/lib/_http_agent.js\n\n// node <= 10\nlet defaultTimeoutListenerCount = 1;\nconst majorVersion = parseInt(process.version.split('.', 1)[0].substring(1));\nif (majorVersion >= 11 && majorVersion <= 12) {\n defaultTimeoutListenerCount = 2;\n} else if (majorVersion >= 13) {\n defaultTimeoutListenerCount = 3;\n}\n\nfunction deprecate(message) {\n console.log('[agentkeepalive:deprecated] %s', message);\n}\n\nclass Agent extends OriginalAgent {\n constructor(options) {\n options = options || {};\n options.keepAlive = options.keepAlive !== false;\n // default is keep-alive and 4s free socket timeout\n // see https://medium.com/ssense-tech/reduce-networking-errors-in-nodejs-23b4eb9f2d83\n if (options.freeSocketTimeout === undefined) {\n options.freeSocketTimeout = 4000;\n }\n // Legacy API: keepAliveTimeout should be rename to `freeSocketTimeout`\n if (options.keepAliveTimeout) {\n deprecate('options.keepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n options.freeSocketTimeout = options.keepAliveTimeout;\n delete options.keepAliveTimeout;\n }\n // Legacy API: freeSocketKeepAliveTimeout should be rename to `freeSocketTimeout`\n if (options.freeSocketKeepAliveTimeout) {\n deprecate('options.freeSocketKeepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n options.freeSocketTimeout = options.freeSocketKeepAliveTimeout;\n delete options.freeSocketKeepAliveTimeout;\n }\n\n // Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n // By default is double free socket timeout.\n if (options.timeout === undefined) {\n // make sure socket default inactivity timeout >= 8s\n options.timeout = Math.max(options.freeSocketTimeout * 2, 8000);\n }\n\n // support humanize format\n options.timeout = ms(options.timeout);\n options.freeSocketTimeout = ms(options.freeSocketTimeout);\n options.socketActiveTTL = options.socketActiveTTL ? ms(options.socketActiveTTL) : 0;\n\n super(options);\n\n this[CURRENT_ID] = 0;\n\n // create socket success counter\n this.createSocketCount = 0;\n this.createSocketCountLastCheck = 0;\n\n this.createSocketErrorCount = 0;\n this.createSocketErrorCountLastCheck = 0;\n\n this.closeSocketCount = 0;\n this.closeSocketCountLastCheck = 0;\n\n // socket error event count\n this.errorSocketCount = 0;\n this.errorSocketCountLastCheck = 0;\n\n // request finished counter\n this.requestCount = 0;\n this.requestCountLastCheck = 0;\n\n // including free socket timeout counter\n this.timeoutSocketCount = 0;\n this.timeoutSocketCountLastCheck = 0;\n\n this.on('free', socket => {\n // https://github.com/nodejs/node/pull/32000\n // Node.js native agent will check socket timeout eqs agent.options.timeout.\n // Use the ttl or freeSocketTimeout to overwrite.\n const timeout = this.calcSocketTimeout(socket);\n if (timeout > 0 && socket.timeout !== timeout) {\n socket.setTimeout(timeout);\n }\n });\n }\n\n get freeSocketKeepAliveTimeout() {\n deprecate('agent.freeSocketKeepAliveTimeout is deprecated, please use agent.options.freeSocketTimeout instead');\n return this.options.freeSocketTimeout;\n }\n\n get timeout() {\n deprecate('agent.timeout is deprecated, please use agent.options.timeout instead');\n return this.options.timeout;\n }\n\n get socketActiveTTL() {\n deprecate('agent.socketActiveTTL is deprecated, please use agent.options.socketActiveTTL instead');\n return this.options.socketActiveTTL;\n }\n\n calcSocketTimeout(socket) {\n /**\n * return <= 0: should free socket\n * return > 0: should update socket timeout\n * return undefined: not find custom timeout\n */\n let freeSocketTimeout = this.options.freeSocketTimeout;\n const socketActiveTTL = this.options.socketActiveTTL;\n if (socketActiveTTL) {\n // check socketActiveTTL\n const aliveTime = Date.now() - socket[SOCKET_CREATED_TIME];\n const diff = socketActiveTTL - aliveTime;\n if (diff <= 0) {\n return diff;\n }\n if (freeSocketTimeout && diff < freeSocketTimeout) {\n freeSocketTimeout = diff;\n }\n }\n // set freeSocketTimeout\n if (freeSocketTimeout) {\n // set free keepalive timer\n // try to use socket custom freeSocketTimeout first, support headers['keep-alive']\n // https://github.com/node-modules/urllib/blob/b76053020923f4d99a1c93cf2e16e0c5ba10bacf/lib/urllib.js#L498\n const customFreeSocketTimeout = socket.freeSocketTimeout || socket.freeSocketKeepAliveTimeout;\n return customFreeSocketTimeout || freeSocketTimeout;\n }\n }\n\n keepSocketAlive(socket) {\n const result = super.keepSocketAlive(socket);\n // should not keepAlive, do nothing\n if (!result) return result;\n\n const customTimeout = this.calcSocketTimeout(socket);\n if (typeof customTimeout === 'undefined') {\n return true;\n }\n if (customTimeout <= 0) {\n debug('%s(requests: %s, finished: %s) free but need to destroy by TTL, request count %s, diff is %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], customTimeout);\n return false;\n }\n if (socket.timeout !== customTimeout) {\n socket.setTimeout(customTimeout);\n }\n return true;\n }\n\n // only call on addRequest\n reuseSocket(...args) {\n // reuseSocket(socket, req)\n super.reuseSocket(...args);\n const socket = args[0];\n const req = args[1];\n req.reusedSocket = true;\n const agentTimeout = this.options.timeout;\n if (getSocketTimeout(socket) !== agentTimeout) {\n // reset timeout before use\n socket.setTimeout(agentTimeout);\n debug('%s reset timeout to %sms', socket[SOCKET_NAME], agentTimeout);\n }\n socket[SOCKET_REQUEST_COUNT]++;\n debug('%s(requests: %s, finished: %s) reuse on addRequest, timeout %sms',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n getSocketTimeout(socket));\n }\n\n [CREATE_ID]() {\n const id = this[CURRENT_ID]++;\n if (this[CURRENT_ID] === Number.MAX_SAFE_INTEGER) this[CURRENT_ID] = 0;\n return id;\n }\n\n [INIT_SOCKET](socket, options) {\n // bugfix here.\n // https on node 8, 10 won't set agent.options.timeout by default\n // TODO: need to fix on node itself\n if (options.timeout) {\n const timeout = getSocketTimeout(socket);\n if (!timeout) {\n socket.setTimeout(options.timeout);\n }\n }\n\n if (this.options.keepAlive) {\n // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/\n // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html\n socket.setNoDelay(true);\n }\n this.createSocketCount++;\n if (this.options.socketActiveTTL) {\n socket[SOCKET_CREATED_TIME] = Date.now();\n }\n // don't show the hole '-----BEGIN CERTIFICATE----' key string\n socket[SOCKET_NAME] = `sock[${this[CREATE_ID]()}#${options._agentKey}]`.split('-----BEGIN', 1)[0];\n socket[SOCKET_REQUEST_COUNT] = 1;\n socket[SOCKET_REQUEST_FINISHED_COUNT] = 0;\n installListeners(this, socket, options);\n }\n\n createConnection(options, oncreate) {\n let called = false;\n const onNewCreate = (err, socket) => {\n if (called) return;\n called = true;\n\n if (err) {\n this.createSocketErrorCount++;\n return oncreate(err);\n }\n this[INIT_SOCKET](socket, options);\n oncreate(err, socket);\n };\n\n const newSocket = super.createConnection(options, onNewCreate);\n if (newSocket) onNewCreate(null, newSocket);\n return newSocket;\n }\n\n get statusChanged() {\n const changed = this.createSocketCount !== this.createSocketCountLastCheck ||\n this.createSocketErrorCount !== this.createSocketErrorCountLastCheck ||\n this.closeSocketCount !== this.closeSocketCountLastCheck ||\n this.errorSocketCount !== this.errorSocketCountLastCheck ||\n this.timeoutSocketCount !== this.timeoutSocketCountLastCheck ||\n this.requestCount !== this.requestCountLastCheck;\n if (changed) {\n this.createSocketCountLastCheck = this.createSocketCount;\n this.createSocketErrorCountLastCheck = this.createSocketErrorCount;\n this.closeSocketCountLastCheck = this.closeSocketCount;\n this.errorSocketCountLastCheck = this.errorSocketCount;\n this.timeoutSocketCountLastCheck = this.timeoutSocketCount;\n this.requestCountLastCheck = this.requestCount;\n }\n return changed;\n }\n\n getCurrentStatus() {\n return {\n createSocketCount: this.createSocketCount,\n createSocketErrorCount: this.createSocketErrorCount,\n closeSocketCount: this.closeSocketCount,\n errorSocketCount: this.errorSocketCount,\n timeoutSocketCount: this.timeoutSocketCount,\n requestCount: this.requestCount,\n freeSockets: inspect(this.freeSockets),\n sockets: inspect(this.sockets),\n requests: inspect(this.requests),\n };\n }\n}\n\n// node 8 don't has timeout attribute on socket\n// https://github.com/nodejs/node/pull/21204/files#diff-e6ef024c3775d787c38487a6309e491dR408\nfunction getSocketTimeout(socket) {\n return socket.timeout || socket._idleTimeout;\n}\n\nfunction installListeners(agent, socket, options) {\n debug('%s create, timeout %sms', socket[SOCKET_NAME], getSocketTimeout(socket));\n\n // listener socket events: close, timeout, error, free\n function onFree() {\n // create and socket.emit('free') logic\n // https://github.com/nodejs/node/blob/master/lib/_http_agent.js#L311\n // no req on the socket, it should be the new socket\n if (!socket._httpMessage && socket[SOCKET_REQUEST_COUNT] === 1) return;\n\n socket[SOCKET_REQUEST_FINISHED_COUNT]++;\n agent.requestCount++;\n debug('%s(requests: %s, finished: %s) free',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n\n // should reuse on pedding requests?\n const name = agent.getName(options);\n if (socket.writable && agent.requests[name] && agent.requests[name].length) {\n // will be reuse on agent free listener\n socket[SOCKET_REQUEST_COUNT]++;\n debug('%s(requests: %s, finished: %s) will be reuse on agent free event',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n }\n }\n socket.on('free', onFree);\n\n function onClose(isError) {\n debug('%s(requests: %s, finished: %s) close, isError: %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], isError);\n agent.closeSocketCount++;\n }\n socket.on('close', onClose);\n\n // start socket timeout handler\n function onTimeout() {\n // onTimeout and emitRequestTimeout(_http_client.js)\n // https://github.com/nodejs/node/blob/v12.x/lib/_http_client.js#L711\n const listenerCount = socket.listeners('timeout').length;\n // node <= 10, default listenerCount is 1, onTimeout\n // 11 < node <= 12, default listenerCount is 2, onTimeout and emitRequestTimeout\n // node >= 13, default listenerCount is 3, onTimeout,\n // onTimeout(https://github.com/nodejs/node/pull/32000/files#diff-5f7fb0850412c6be189faeddea6c5359R333)\n // and emitRequestTimeout\n const timeout = getSocketTimeout(socket);\n const req = socket._httpMessage;\n const reqTimeoutListenerCount = req && req.listeners('timeout').length || 0;\n debug('%s(requests: %s, finished: %s) timeout after %sms, listeners %s, defaultTimeoutListenerCount %s, hasHttpRequest %s, HttpRequest timeoutListenerCount %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n timeout, listenerCount, defaultTimeoutListenerCount, !!req, reqTimeoutListenerCount);\n if (debug.enabled) {\n debug('timeout listeners: %s', socket.listeners('timeout').map(f => f.name).join(', '));\n }\n agent.timeoutSocketCount++;\n const name = agent.getName(options);\n if (agent.freeSockets[name] && agent.freeSockets[name].indexOf(socket) !== -1) {\n // free socket timeout, destroy quietly\n socket.destroy();\n // Remove it from freeSockets list immediately to prevent new requests\n // from being sent through this socket.\n agent.removeSocket(socket, options);\n debug('%s is free, destroy quietly', socket[SOCKET_NAME]);\n } else {\n // if there is no any request socket timeout handler,\n // agent need to handle socket timeout itself.\n //\n // custom request socket timeout handle logic must follow these rules:\n // 1. Destroy socket first\n // 2. Must emit socket 'agentRemove' event tell agent remove socket\n // from freeSockets list immediately.\n // Otherise you may be get 'socket hang up' error when reuse\n // free socket and timeout happen in the same time.\n if (reqTimeoutListenerCount === 0) {\n const error = new Error('Socket timeout');\n error.code = 'ERR_SOCKET_TIMEOUT';\n error.timeout = timeout;\n // must manually call socket.end() or socket.destroy() to end the connection.\n // https://nodejs.org/dist/latest-v10.x/docs/api/net.html#net_socket_settimeout_timeout_callback\n socket.destroy(error);\n agent.removeSocket(socket, options);\n debug('%s destroy with timeout error', socket[SOCKET_NAME]);\n }\n }\n }\n socket.on('timeout', onTimeout);\n\n function onError(err) {\n const listenerCount = socket.listeners('error').length;\n debug('%s(requests: %s, finished: %s) error: %s, listenerCount: %s',\n socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n err, listenerCount);\n agent.errorSocketCount++;\n if (listenerCount === 1) {\n // if socket don't contain error event handler, don't catch it, emit it again\n debug('%s emit uncaught error event', socket[SOCKET_NAME]);\n socket.removeListener('error', onError);\n socket.emit('error', err);\n }\n }\n socket.on('error', onError);\n\n function onRemove() {\n debug('%s(requests: %s, finished: %s) agentRemove',\n socket[SOCKET_NAME],\n socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n // We need this function for cases like HTTP 'upgrade'\n // (defined by WebSockets) where we need to remove a socket from the\n // pool because it'll be locked up indefinitely\n socket.removeListener('close', onClose);\n socket.removeListener('error', onError);\n socket.removeListener('free', onFree);\n socket.removeListener('timeout', onTimeout);\n socket.removeListener('agentRemove', onRemove);\n }\n socket.on('agentRemove', onRemove);\n}\n\nmodule.exports = Agent;\n\nfunction inspect(obj) {\n const res = {};\n for (const key in obj) {\n res[key] = obj[key].length;\n }\n return res;\n}\n",
|
|
25
|
+
"'use strict';\n\nconst OriginalHttpsAgent = require('https').Agent;\nconst HttpAgent = require('./agent');\nconst {\n INIT_SOCKET,\n CREATE_HTTPS_CONNECTION,\n} = require('./constants');\n\nclass HttpsAgent extends HttpAgent {\n constructor(options) {\n super(options);\n\n this.defaultPort = 443;\n this.protocol = 'https:';\n this.maxCachedSessions = this.options.maxCachedSessions;\n /* istanbul ignore next */\n if (this.maxCachedSessions === undefined) {\n this.maxCachedSessions = 100;\n }\n\n this._sessionCache = {\n map: {},\n list: [],\n };\n }\n\n createConnection(options, oncreate) {\n const socket = this[CREATE_HTTPS_CONNECTION](options, oncreate);\n this[INIT_SOCKET](socket, options);\n return socket;\n }\n}\n\n// https://github.com/nodejs/node/blob/master/lib/https.js#L89\nHttpsAgent.prototype[CREATE_HTTPS_CONNECTION] = OriginalHttpsAgent.prototype.createConnection;\n\n[\n 'getName',\n '_getSession',\n '_cacheSession',\n // https://github.com/nodejs/node/pull/4982\n '_evictSession',\n].forEach(function(method) {\n /* istanbul ignore next */\n if (typeof OriginalHttpsAgent.prototype[method] === 'function') {\n HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];\n }\n});\n\nmodule.exports = HttpsAgent;\n",
|
|
26
|
+
"'use strict';\n\nconst HttpAgent = require('./lib/agent');\nmodule.exports = HttpAgent;\nmodule.exports.HttpAgent = HttpAgent;\nmodule.exports.HttpsAgent = require('./lib/https_agent');\nmodule.exports.constants = require('./lib/constants');\n",
|
|
27
|
+
"/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\nconst privateData = new WeakMap();\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\nconst wrappers = new WeakMap();\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n const retv = privateData.get(event);\n console.assert(\n retv != null,\n \"'this' is expected an Event object, but got\",\n event\n );\n return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(\n \"Unable to preventDefault inside passive event listener invocation.\",\n data.passiveListener\n );\n }\n return\n }\n if (!data.event.cancelable) {\n return\n }\n\n data.canceled = true;\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget,\n event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || Date.now(),\n });\n\n // https://heycam.github.io/webidl/#Unforgeable\n Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n // Define accessors\n const keys = Object.keys(event);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in this)) {\n Object.defineProperty(this, key, defineRedirectDescriptor(key));\n }\n }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n /**\n * The type of this event.\n * @type {string}\n */\n get type() {\n return pd(this).event.type\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get target() {\n return pd(this).eventTarget\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get currentTarget() {\n return pd(this).currentTarget\n },\n\n /**\n * @returns {EventTarget[]} The composed path of this event.\n */\n composedPath() {\n const currentTarget = pd(this).currentTarget;\n if (currentTarget == null) {\n return []\n }\n return [currentTarget]\n },\n\n /**\n * Constant of NONE.\n * @type {number}\n */\n get NONE() {\n return 0\n },\n\n /**\n * Constant of CAPTURING_PHASE.\n * @type {number}\n */\n get CAPTURING_PHASE() {\n return 1\n },\n\n /**\n * Constant of AT_TARGET.\n * @type {number}\n */\n get AT_TARGET() {\n return 2\n },\n\n /**\n * Constant of BUBBLING_PHASE.\n * @type {number}\n */\n get BUBBLING_PHASE() {\n return 3\n },\n\n /**\n * The target of this event.\n * @type {number}\n */\n get eventPhase() {\n return pd(this).eventPhase\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopPropagation() {\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopImmediatePropagation() {\n const data = pd(this);\n\n data.stopped = true;\n data.immediateStopped = true;\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n /**\n * The flag to be bubbling.\n * @type {boolean}\n */\n get bubbles() {\n return Boolean(pd(this).event.bubbles)\n },\n\n /**\n * The flag to be cancelable.\n * @type {boolean}\n */\n get cancelable() {\n return Boolean(pd(this).event.cancelable)\n },\n\n /**\n * Cancel this event.\n * @returns {void}\n */\n preventDefault() {\n setCancelFlag(pd(this));\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n */\n get defaultPrevented() {\n return pd(this).canceled\n },\n\n /**\n * The flag to be composed.\n * @type {boolean}\n */\n get composed() {\n return Boolean(pd(this).event.composed)\n },\n\n /**\n * The unix time of this event.\n * @type {number}\n */\n get timeStamp() {\n return pd(this).timeStamp\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n * @deprecated\n */\n get srcElement() {\n return pd(this).eventTarget\n },\n\n /**\n * The flag to stop event bubbling.\n * @type {boolean}\n * @deprecated\n */\n get cancelBubble() {\n return pd(this).stopped\n },\n set cancelBubble(value) {\n if (!value) {\n return\n }\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true;\n }\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n * @deprecated\n */\n get returnValue() {\n return !pd(this).canceled\n },\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this));\n }\n },\n\n /**\n * Initialize this event object. But do nothing under event dispatching.\n * @param {string} type The event type.\n * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n * @deprecated\n */\n initEvent() {\n // Do nothing.\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true,\n});\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n // Make association for wrappers.\n wrappers.set(window.Event.prototype, Event);\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n return {\n get() {\n return pd(this).event[key]\n },\n set(value) {\n pd(this).event[key] = value;\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n return {\n value() {\n const event = pd(this).event;\n return event[key].apply(event, arguments)\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n const keys = Object.keys(proto);\n if (keys.length === 0) {\n return BaseEvent\n }\n\n /** CustomEvent */\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n constructor: { value: CustomEvent, configurable: true, writable: true },\n });\n\n // Define accessors.\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in BaseEvent.prototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n const isFunc = typeof descriptor.value === \"function\";\n Object.defineProperty(\n CustomEvent.prototype,\n key,\n isFunc\n ? defineCallDescriptor(key)\n : defineRedirectDescriptor(key)\n );\n }\n }\n\n return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event\n }\n\n let wrapper = wrappers.get(proto);\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nfunction wrapEvent(eventTarget, event) {\n const Wrapper = getWrapper(Object.getPrototypeOf(event));\n return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nfunction isStopped(event) {\n return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nfunction setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nfunction setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nfunction setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n}\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\nconst listenersMap = new WeakMap();\n\n// Listener types\nconst CAPTURE = 1;\nconst BUBBLE = 2;\nconst ATTRIBUTE = 3;\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n const listeners = listenersMap.get(eventTarget);\n if (listeners == null) {\n throw new TypeError(\n \"'this' is expected an EventTarget object, but got another value.\"\n )\n }\n return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n return {\n get() {\n const listeners = getListeners(this);\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener\n }\n node = node.next;\n }\n return null\n },\n\n set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null; // eslint-disable-line no-param-reassign\n }\n const listeners = getListeners(this);\n\n // Traverse to the tail while removing old value.\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n // Remove old value.\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n }\n\n // Add new value.\n if (listener !== null) {\n const newNode = {\n listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null,\n };\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n Object.defineProperty(\n eventTargetPrototype,\n `on${eventName}`,\n defineEventAttributeDescriptor(eventName)\n );\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n /** CustomEventTarget */\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true,\n },\n });\n\n for (let i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n * class A extends EventTarget {}\n * class B extends EventTarget(\"message\") {}\n * class C extends EventTarget(\"message\", \"error\") {}\n * class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n /*eslint-disable consistent-return */\n if (this instanceof EventTarget) {\n listenersMap.set(this, new Map());\n return\n }\n if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(arguments[0])\n }\n if (arguments.length > 0) {\n const types = new Array(arguments.length);\n for (let i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n return defineCustomEventTarget(types)\n }\n throw new TypeError(\"Cannot call a class as a function\")\n /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n /**\n * Add a given listener to this event target.\n * @param {string} eventName The event name to add.\n * @param {Function} listener The listener to add.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n addEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\")\n }\n\n const listeners = getListeners(this);\n const optionsIsObj = isObject(options);\n const capture = optionsIsObj\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n const newNode = {\n listener,\n listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null,\n };\n\n // Set it as the first node if the first node is null.\n let node = listeners.get(eventName);\n if (node === undefined) {\n listeners.set(eventName, newNode);\n return\n }\n\n // Traverse to the tail while checking duplication..\n let prev = null;\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n // Should ignore duplication.\n return\n }\n prev = node;\n node = node.next;\n }\n\n // Add it.\n prev.next = newNode;\n },\n\n /**\n * Remove a given listener from this event target.\n * @param {string} eventName The event name to remove.\n * @param {Function} listener The listener to remove.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n\n const listeners = getListeners(this);\n const capture = isObject(options)\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n return\n }\n\n prev = node;\n node = node.next;\n }\n },\n\n /**\n * Dispatch a given event.\n * @param {Event|{type:string}} event The event to dispatch.\n * @returns {boolean} `false` if canceled.\n */\n dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.')\n }\n\n // If listeners aren't registered, terminate.\n const listeners = getListeners(this);\n const eventName = event.type;\n let node = listeners.get(eventName);\n if (node == null) {\n return true\n }\n\n // Since we cannot rewrite several properties, so wrap object.\n const wrappedEvent = wrapEvent(this, event);\n\n // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n let prev = null;\n while (node != null) {\n // Remove this listener if it's once\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n // Call this listener\n setPassiveListener(\n wrappedEvent,\n node.passive ? node.listener : null\n );\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent);\n } catch (err) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(err);\n }\n }\n } else if (\n node.listenerType !== ATTRIBUTE &&\n typeof node.listener.handleEvent === \"function\"\n ) {\n node.listener.handleEvent(wrappedEvent);\n }\n\n // Break if `event.stopImmediatePropagation` was called.\n if (isStopped(wrappedEvent)) {\n break\n }\n\n node = node.next;\n }\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n\n return !wrappedEvent.defaultPrevented\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true,\n});\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n typeof window !== \"undefined\" &&\n typeof window.EventTarget !== \"undefined\"\n) {\n Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nexports.defineEventAttribute = defineEventAttribute;\nexports.EventTarget = EventTarget;\nexports.default = EventTarget;\n\nmodule.exports = EventTarget\nmodule.exports.EventTarget = module.exports[\"default\"] = EventTarget\nmodule.exports.defineEventAttribute = defineEventAttribute\n//# sourceMappingURL=event-target-shim.js.map\n",
|
|
28
|
+
"/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar eventTargetShim = require('event-target-shim');\n\n/**\n * The signal class.\n * @see https://dom.spec.whatwg.org/#abortsignal\n */\nclass AbortSignal extends eventTargetShim.EventTarget {\n /**\n * AbortSignal cannot be constructed directly.\n */\n constructor() {\n super();\n throw new TypeError(\"AbortSignal cannot be constructed directly\");\n }\n /**\n * Returns `true` if this `AbortSignal`'s `AbortController` has signaled to abort, and `false` otherwise.\n */\n get aborted() {\n const aborted = abortedFlags.get(this);\n if (typeof aborted !== \"boolean\") {\n throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this === null ? \"null\" : typeof this}`);\n }\n return aborted;\n }\n}\neventTargetShim.defineEventAttribute(AbortSignal.prototype, \"abort\");\n/**\n * Create an AbortSignal object.\n */\nfunction createAbortSignal() {\n const signal = Object.create(AbortSignal.prototype);\n eventTargetShim.EventTarget.call(signal);\n abortedFlags.set(signal, false);\n return signal;\n}\n/**\n * Abort a given signal.\n */\nfunction abortSignal(signal) {\n if (abortedFlags.get(signal) !== false) {\n return;\n }\n abortedFlags.set(signal, true);\n signal.dispatchEvent({ type: \"abort\" });\n}\n/**\n * Aborted flag for each instances.\n */\nconst abortedFlags = new WeakMap();\n// Properties should be enumerable.\nObject.defineProperties(AbortSignal.prototype, {\n aborted: { enumerable: true },\n});\n// `toString()` should return `\"[object AbortSignal]\"`\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortSignal.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortSignal\",\n });\n}\n\n/**\n * The AbortController.\n * @see https://dom.spec.whatwg.org/#abortcontroller\n */\nclass AbortController {\n /**\n * Initialize this controller.\n */\n constructor() {\n signals.set(this, createAbortSignal());\n }\n /**\n * Returns the `AbortSignal` object associated with this object.\n */\n get signal() {\n return getSignal(this);\n }\n /**\n * Abort and signal to any observers that the associated activity is to be aborted.\n */\n abort() {\n abortSignal(getSignal(this));\n }\n}\n/**\n * Associated signals.\n */\nconst signals = new WeakMap();\n/**\n * Get the associated signal of a given controller.\n */\nfunction getSignal(controller) {\n const signal = signals.get(controller);\n if (signal == null) {\n throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller === null ? \"null\" : typeof controller}`);\n }\n return signal;\n}\n// Properties should be enumerable.\nObject.defineProperties(AbortController.prototype, {\n signal: { enumerable: true },\n abort: { enumerable: true },\n});\nif (typeof Symbol === \"function\" && typeof Symbol.toStringTag === \"symbol\") {\n Object.defineProperty(AbortController.prototype, Symbol.toStringTag, {\n configurable: true,\n value: \"AbortController\",\n });\n}\n\nexports.AbortController = AbortController;\nexports.AbortSignal = AbortSignal;\nexports.default = AbortController;\n\nmodule.exports = AbortController\nmodule.exports.AbortController = module.exports[\"default\"] = AbortController\nmodule.exports.AbortSignal = AbortSignal\n//# sourceMappingURL=abort-controller.js.map\n",
|
|
29
|
+
"/*! node-domexception. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */\n\nif (!globalThis.DOMException) {\n try {\n const { MessageChannel } = require('worker_threads'),\n port = new MessageChannel().port1,\n ab = new ArrayBuffer()\n port.postMessage(ab, [ab, ab])\n } catch (err) {\n err.constructor.name === 'DOMException' && (\n globalThis.DOMException = err.constructor\n )\n }\n}\n\nmodule.exports = globalThis.DOMException\n",
|
|
30
|
+
"const getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase());\nfunction isPlainObject(value) {\n if (getType(value) !== \"object\") {\n return false;\n }\n const pp = Object.getPrototypeOf(value);\n if (pp === null || pp === undefined) {\n return true;\n }\n const Ctor = pp.constructor && pp.constructor.toString();\n return Ctor === Object.toString();\n}\nexport default isPlainObject;\n",
|
|
31
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FileFromPath_path, _FileFromPath_start;\nimport { statSync, createReadStream, promises as fs } from \"fs\";\nimport { basename } from \"path\";\nimport DOMException from \"node-domexception\";\nimport { File } from \"./File.js\";\nimport isPlainObject from \"./isPlainObject.js\";\nexport * from \"./isFile.js\";\nconst MESSAGE = \"The requested file could not be read, \"\n + \"typically due to permission problems that have occurred after a reference \"\n + \"to a file was acquired.\";\nclass FileFromPath {\n constructor(input) {\n _FileFromPath_path.set(this, void 0);\n _FileFromPath_start.set(this, void 0);\n __classPrivateFieldSet(this, _FileFromPath_path, input.path, \"f\");\n __classPrivateFieldSet(this, _FileFromPath_start, input.start || 0, \"f\");\n this.name = basename(__classPrivateFieldGet(this, _FileFromPath_path, \"f\"));\n this.size = input.size;\n this.lastModified = input.lastModified;\n }\n slice(start, end) {\n return new FileFromPath({\n path: __classPrivateFieldGet(this, _FileFromPath_path, \"f\"),\n lastModified: this.lastModified,\n size: end - start,\n start\n });\n }\n async *stream() {\n const { mtimeMs } = await fs.stat(__classPrivateFieldGet(this, _FileFromPath_path, \"f\"));\n if (mtimeMs > this.lastModified) {\n throw new DOMException(MESSAGE, \"NotReadableError\");\n }\n if (this.size) {\n yield* createReadStream(__classPrivateFieldGet(this, _FileFromPath_path, \"f\"), {\n start: __classPrivateFieldGet(this, _FileFromPath_start, \"f\"),\n end: __classPrivateFieldGet(this, _FileFromPath_start, \"f\") + this.size - 1\n });\n }\n }\n get [(_FileFromPath_path = new WeakMap(), _FileFromPath_start = new WeakMap(), Symbol.toStringTag)]() {\n return \"File\";\n }\n}\nfunction createFileFromPath(path, { mtimeMs, size }, filenameOrOptions, options = {}) {\n let filename;\n if (isPlainObject(filenameOrOptions)) {\n [options, filename] = [filenameOrOptions, undefined];\n }\n else {\n filename = filenameOrOptions;\n }\n const file = new FileFromPath({ path, size, lastModified: mtimeMs });\n if (!filename) {\n filename = file.name;\n }\n return new File([file], filename, {\n ...options, lastModified: file.lastModified\n });\n}\nexport function fileFromPathSync(path, filenameOrOptions, options = {}) {\n const stats = statSync(path);\n return createFileFromPath(path, stats, filenameOrOptions, options);\n}\nexport async function fileFromPath(path, filenameOrOptions, options) {\n const stats = await fs.stat(path);\n return createFileFromPath(path, stats, filenameOrOptions, options);\n}\n",
|
|
32
|
+
"import type { OptionDef } from './command';\n\nfunction kebabToCamel(str: string): string {\n return str.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n}\n\n/** Extract camelCase flag name from an OptionDef.flag string, e.g. '--max-tokens <n>' → 'maxTokens' */\nfunction flagKey(def: OptionDef): string | null {\n const m = def.flag.match(/^--([a-z][a-z0-9-]*)/i);\n return m ? kebabToCamel(m[1]!) : null;\n}\n\n/** Boolean when no value placeholder and type is not number/array */\nfunction isBooleanDef(def: OptionDef): boolean {\n if (def.type === 'number' || def.type === 'array') return false;\n return !def.flag.includes('<') && !def.flag.includes('[');\n}\n\n/** Build short flag → long flag mapping from OptionDef array */\nfunction buildShortMap(options: OptionDef[]): Map<string, string> {\n const map = new Map<string, string>();\n for (const opt of options) {\n // Look for short flag pattern like \"-m\" in flag string\n // Convention: if flag starts with single dash and is one char, it's a short flag\n // We also support defining short flags as part of the flag string: \"-m, --model <value>\"\n const parts = opt.flag.split(',').map((s) => s.trim());\n if (parts.length >= 2) {\n const shortPart = parts[0]!.trim();\n const longPart = parts[1]!.trim();\n const shortMatch = shortPart.match(/^(-[a-zA-Z])$/);\n const longMatch = longPart.match(/^(--[a-z][a-z0-9-]*)/i);\n if (shortMatch && longMatch) {\n map.set(shortMatch[1], longMatch[1]);\n }\n }\n }\n return map;\n}\n\ninterface FlagSchema {\n booleans: Set<string>;\n numbers: Set<string>;\n arrays: Set<string>;\n}\n\nfunction buildSchema(options: OptionDef[]): FlagSchema {\n const booleans = new Set<string>();\n const numbers = new Set<string>();\n const arrays = new Set<string>();\n for (const opt of options) {\n const key = flagKey(opt);\n if (!key) continue;\n if (isBooleanDef(opt)) booleans.add(key);\n else if (opt.type === 'number') numbers.add(key);\n else if (opt.type === 'array') arrays.add(key);\n }\n return { booleans, numbers, arrays };\n}\n\n/**\n * Quick scan: collect positional (non-dash) args to determine the command path.\n * Skips global flags and their values so that e.g. `--output json chat`\n * correctly produces ['chat'] instead of ['json', 'chat'].\n */\nexport function scanCommandPath(argv: string[], globalOptions: OptionDef[] = []): string[] {\n const globalSchema = buildSchema(globalOptions);\n const shortMap = buildShortMap(globalOptions);\n const path: string[] = [];\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i]!;\n if (arg === '--') break;\n\n if (arg.startsWith('--')) {\n const eqIdx = arg.indexOf('=');\n const key = eqIdx !== -1 ? arg.slice(2, eqIdx) : arg.slice(2);\n const camelKey = kebabToCamel(key);\n\n if (!globalSchema.booleans.has(camelKey) && eqIdx === -1) {\n // This flag takes a value, skip the next arg too\n i += 2;\n } else {\n i += 1;\n }\n continue;\n }\n\n if (arg.startsWith('-') && arg.length >= 2 && arg[1] !== '-') {\n // Short flag: check if it maps to a known long flag\n const expandedLong = shortMap.get(arg);\n if (expandedLong) {\n const camelKey = kebabToCamel(expandedLong.slice(2));\n if (!globalSchema.booleans.has(camelKey)) {\n i += 2; // short flag with value\n } else {\n i += 1;\n }\n } else {\n i += 1; // unknown short flag, skip\n }\n continue;\n }\n\n path.push(arg);\n i++;\n }\n return path;\n}\n\n/**\n * Full flag parse. Types are derived entirely from the provided OptionDef schema:\n * - boolean: no <value> placeholder in flag string\n * - number: type: 'number'\n * - array: type: 'array' (repeatable via multiple --flag occurrences)\n * - default: string\n *\n * Supports:\n * - Short flags via \"-m, --model <value>\" syntax in OptionDef\n * - --flag=value syntax\n */\n// CLI 参数解析返回通用对象,值类型在命令层通过 flags 接口具体化\nexport function parseFlags(argv: string[], options: OptionDef[]): Record<string, unknown> {\n const schema = buildSchema(options);\n const shortMap = buildShortMap(options);\n const flags: Record<string, unknown> = {};\n\n // Apply defaults\n for (const opt of options) {\n if (opt.default !== undefined) {\n const key = flagKey(opt);\n if (key) flags[key] = opt.default;\n }\n }\n\n let i = 0;\n while (i < argv.length) {\n const arg = argv[i]!;\n\n if (arg === '--help' || arg === '-h') { flags.help = true; i++; continue; }\n if (arg === '--') { break; }\n\n if (arg.startsWith('--')) {\n const eqIdx = arg.indexOf('=');\n let key: string;\n let value: string | undefined;\n\n if (eqIdx !== -1) {\n key = arg.slice(2, eqIdx);\n value = arg.slice(eqIdx + 1);\n } else {\n key = arg.slice(2);\n }\n\n const camelKey = kebabToCamel(key);\n\n // 支持 --no-xxx 前缀来否定布尔 flag(如 --no-stream → noStream = true)\n if (key.startsWith('no-')) {\n const baseKey = kebabToCamel(key.slice(3));\n if (schema.booleans.has(baseKey)) {\n flags[baseKey] = false;\n flags[`no${baseKey.charAt(0).toUpperCase()}${baseKey.slice(1)}`] = true;\n i++;\n continue;\n }\n }\n\n if (schema.booleans.has(camelKey)) {\n flags[camelKey] = true;\n i++;\n continue;\n }\n\n if (value === undefined) {\n i++;\n value = argv[i];\n }\n\n if (value === undefined) throw new Error(`Flag --${key} requires a value.`);\n\n if (schema.arrays.has(camelKey)) {\n const existing = flags[camelKey];\n if (Array.isArray(existing)) { existing.push(value); }\n else flags[camelKey] = [value];\n } else if (schema.numbers.has(camelKey)) {\n const numericValue = Number(value);\n if (value.trim() === '' || !Number.isFinite(numericValue)) {\n throw new Error(`Flag --${key} requires a numeric value, got \"${value}\".`);\n }\n flags[camelKey] = numericValue;\n } else {\n flags[camelKey] = value;\n }\n\n i++;\n continue;\n }\n\n if (arg.startsWith('-') && arg.length >= 2 && arg[1] !== '-') {\n // Short flag\n const expandedLong = shortMap.get(arg);\n if (expandedLong) {\n const camelKey = kebabToCamel(expandedLong.slice(2));\n\n if (schema.booleans.has(camelKey)) {\n flags[camelKey] = true;\n i++;\n continue;\n }\n\n i++;\n const value = argv[i];\n if (value === undefined) throw new Error(`Flag ${arg} requires a value.`);\n\n if (schema.arrays.has(camelKey)) {\n const existing = flags[camelKey];\n if (Array.isArray(existing)) { existing.push(value); }\n else flags[camelKey] = [value];\n } else if (schema.numbers.has(camelKey)) {\n const numericValue = Number(value);\n if (value.trim() === '' || !Number.isFinite(numericValue)) {\n throw new Error(`Flag ${arg} requires a numeric value, got \"${value}\".`);\n }\n flags[camelKey] = numericValue;\n } else {\n flags[camelKey] = value;\n }\n }\n // Unknown short flags are silently skipped\n i++;\n continue;\n }\n\n // Positional arg — skip\n i++;\n }\n\n return flags;\n}\n",
|
|
33
|
+
"import type { Config } from './config/schema';\n\nexport interface OptionDef {\n flag: string; // e.g., \"--model <value>\", \"--stream\"\n description: string;\n default?: unknown;\n required?: boolean;\n type?: 'number' | 'array';\n}\n\n// 命令接口,使用 Config 和 Record<string, unknown> 替代 any\nexport interface Command {\n name: string;\n description: string;\n usage?: string;\n options?: OptionDef[];\n examples?: string[];\n apiDocs?: string;\n execute(config: Config, flags: Record<string, unknown>): Promise<void>;\n}\n\n// 命令规格接口,使用 Config 和 Record<string, unknown> 替代 any\nexport interface CommandSpec {\n name: string;\n description: string;\n usage?: string;\n options?: OptionDef[];\n examples?: string[];\n apiDocs?: string;\n run(config: Config, flags: Record<string, unknown>): Promise<void>;\n}\n\nexport function defineCommand(spec: CommandSpec): Command {\n return {\n name: spec.name,\n description: spec.description,\n usage: spec.usage,\n options: spec.options,\n examples: spec.examples,\n apiDocs: spec.apiDocs,\n execute: spec.run,\n };\n}\n\n/** Global flags shared by all commands — drives the parser's type resolution. */\nexport const GLOBAL_OPTIONS: OptionDef[] = [\n { flag: '--api-key <value>', description: 'Override API Key from config' },\n { flag: '--base-url <value>', description: 'Override API base URL' },\n { flag: '--output <value>', description: 'Output format (text/json)', default: 'text' },\n { flag: '--timeout <seconds>', description: 'Request timeout in seconds', default: 300, type: 'number' },\n { flag: '--quiet', description: 'Suppress non-essential output' },\n { flag: '--verbose', description: 'Show verbose logging' },\n { flag: '--no-color', description: 'Disable colored output' },\n { flag: '--dry-run', description: 'Print request body without executing' },\n { flag: '--non-interactive', description: 'Non-interactive mode' },\n { flag: '--help', description: 'Show help' },\n { flag: '--version', description: 'Show version' },\n];\n",
|
|
34
|
+
"// ============================================================\n// MiMo CLI 国际化 (i18n) 模块\n// ============================================================\n\nexport type Locale = 'zh' | 'en';\n\n// 当前语言,默认中文\nlet currentLocale: Locale = 'zh';\n\nexport function getLocale(): Locale {\n return currentLocale;\n}\n\nexport function setLocale(locale: Locale): void {\n if (locale !== 'zh' && locale !== 'en') {\n currentLocale = 'zh';\n } else {\n currentLocale = locale;\n }\n}\n\n// 从配置值初始化语言\nexport function initLocale(configLang?: string): void {\n if (!configLang) {\n // 尝试从环境变量检测\n const envLang = process.env.LANG || process.env.LC_ALL || process.env.LC_MESSAGES || '';\n if (envLang.startsWith('zh')) {\n currentLocale = 'zh';\n } else {\n currentLocale = 'zh'; // 默认中文\n }\n return;\n }\n if (configLang === 'en') {\n currentLocale = 'en';\n } else {\n currentLocale = 'zh';\n }\n}\n\n// ============================================================\n// 翻译字典\n// ============================================================\n\nconst translations: Record<string, Record<Locale, string>> = {\n // ---- 主界面 ----\n 'main.usage': {\n zh: '用法:mimo <资源> <命令> [参数]',\n en: 'Usage: mimo <resource> <command> [flags]',\n },\n 'main.resources': {\n zh: '可用命令:',\n en: 'Resources:',\n },\n 'main.globalFlags': {\n zh: '全局参数:',\n en: 'Global Flags:',\n },\n 'main.gettingHelp': {\n zh: '获取帮助:',\n en: 'Getting Help:',\n },\n 'main.helpHint1': {\n zh: '在任何命令后添加 --help 查看完整选项、默认值和示例。',\n en: 'Add --help after any command to see its full list of options, defaults,',\n },\n 'main.helpHint2': {\n zh: '例如:',\n en: 'and usage examples. For example:',\n },\n 'main.notLoggedIn': {\n zh: ' 尚未登录。',\n en: ' Not logged in.',\n },\n 'main.loginHint1': {\n zh: ' mimo auth login 使用 API Key 登录',\n en: ' mimo auth login Log in with an API key',\n },\n 'main.loginHint2': {\n zh: ' mimo auth login --api-key 直接保存 API Key',\n en: ' mimo auth login --api-key Save an API key directly',\n },\n 'main.interrupted': {\n zh: '\\n已中断,退出。',\n en: '\\nInterrupted. Exiting.',\n },\n 'main.fatalArgv': {\n zh: '致命错误:无法读取进程参数。\\n',\n en: 'Fatal: failed to read process arguments.\\n',\n },\n\n // ---- 命令帮助 ----\n 'help.usage': { zh: '用法:', en: 'Usage:' },\n 'help.options': { zh: '选项:', en: 'Options:' },\n 'help.examples': { zh: '示例:', en: 'Examples:' },\n 'help.apiRef': { zh: 'API 参考:', en: 'API Reference:' },\n 'help.commands': { zh: '子命令:', en: 'Commands:' },\n 'help.globalHint': {\n zh: '全局参数(--api-key、--output、--quiet 等)始终可用。',\n en: 'Global flags (--api-key, --output, --quiet, etc.) are always available.',\n },\n 'help.globalHintRun': {\n zh: '运行 mimo --help 查看完整列表。',\n en: 'Run mimo --help for the full list.',\n },\n\n // ---- 错误处理 ----\n 'error.prefix': { zh: '错误:', en: 'Error:' },\n 'error.exitCode': { zh: '(退出码 {code})', en: '(exit code {code})' },\n 'error.timeout': { zh: '请求超时。', en: 'Request timed out.' },\n 'error.timeoutHint': {\n zh: '尝试增大超时时间(如 --timeout 60)。\\n如果使用有效 API Key 仍然频繁超时,请检查网络和区域。\\n运行:mimo auth status — 检查认证状态。',\n en: 'Try increasing --timeout (e.g. --timeout 60).\\nIf this happens on every request with a valid API key, check your network and region.\\nRun: mimo auth status — to check your credentials.',\n },\n 'error.network': { zh: '网络请求失败。', en: 'Network request failed.' },\n 'error.networkHint': {\n zh: '请检查网络连接。\\n如需使用代理:设置 HTTPS_PROXY 环境变量,或运行:mimo config set proxy http://HOST:PORT',\n en: 'Check your network connection.\\nTo use a proxy: set HTTPS_PROXY env var, or run: mimo config set proxy http://HOST:PORT',\n },\n 'error.proxyHint': {\n zh: '代理连接失败 — 请检查代理 URL 和认证信息。\\n检查:HTTPS_PROXY / HTTP_PROXY 环境变量,或运行 mimo config show 查看已配置的代理。',\n en: 'Proxy connection failed — verify your proxy URL and authentication.\\nCheck: HTTPS_PROXY / HTTP_PROXY env vars, or mimo config show for configured proxy.',\n },\n 'error.fsEnoent': { zh: '文件或目录不存在。', en: 'File or directory not found.' },\n 'error.fsEacces': { zh: '权限不足 — 请检查文件或目录权限。', en: 'Permission denied — check file or directory permissions.' },\n 'error.fsEnospc': { zh: '磁盘空间不足 — 请释放空间后重试。', en: 'Disk full — free up space and try again.' },\n 'error.fsDefault': { zh: '请检查文件路径和权限。', en: 'Check the file path and permissions.' },\n 'error.fsPrefix': { zh: '文件系统错误:', en: 'File system error: ' },\n\n // ---- API 错误 ----\n 'api.400': { zh: '请求参数错误:', en: 'Bad request: ' },\n 'api.400Hint': { zh: '请检查请求格式和参数。', en: 'Check your request format and parameters.' },\n 'api.401': { zh: '认证失败(HTTP 401)。', en: 'Authentication failed (HTTP 401).' },\n 'api.401Hint': { zh: '请检查 API Key:mimo auth status\\n重新登录:mimo auth login', en: 'Check your API Key: mimo auth status\\nRe-authenticate: mimo auth login' },\n 'api.402': { zh: '余额不足:', en: 'Payment required: ' },\n 'api.402Hint': { zh: '账户余额不足,请充值。', en: 'Insufficient balance. Please top up your account.' },\n 'api.403': { zh: '访问被拒绝(HTTP 403)。', en: 'Access denied (HTTP 403).' },\n 'api.403Hint': { zh: '您的 API Key 可能无权访问此资源,或 Key 受限。\\n请检查 API Key 权限。', en: 'Your API Key may not have access to this resource, or the key is restricted.\\nCheck your API Key permissions.' },\n 'api.404': { zh: '未找到:', en: 'Not found: ' },\n 'api.404Hint': { zh: '请求的模型或功能可能不受支持,请检查模型名称和接口地址。', en: 'The requested model or feature may not be supported. Check the model name and endpoint.' },\n 'api.421': { zh: '内容被过滤:', en: 'Content filtered: ' },\n 'api.421Hint': { zh: '您的输入被内容安全过滤器标记,请修改后重试。', en: 'Your input was flagged by the content safety filter. Please modify your request and try again.' },\n 'api.429': { zh: '请求频率超限:', en: 'Rate limit exceeded: ' },\n 'api.429Hint': { zh: '请求过于频繁,请稍后重试或检查配额。', en: 'You are sending requests too quickly. Please wait and retry, or check your quota.' },\n 'api.500': { zh: '服务器内部错误(HTTP 500)。', en: 'Server error (HTTP 500).' },\n 'api.500Hint': { zh: '服务器遇到内部错误,请稍后重试。', en: 'The server encountered an internal error. Please retry later.' },\n 'api.503': { zh: '服务暂不可用(HTTP 503)。', en: 'Service unavailable (HTTP 503).' },\n 'api.503Hint': { zh: '服务器暂时过载或维护中,请稍后重试。', en: 'The server is temporarily overloaded or under maintenance. Please retry later.' },\n 'api.default': { zh: 'API 错误:', en: 'API error: ' },\n\n // ---- 认证 ----\n 'auth.noCreds': { zh: '未找到认证信息。', en: 'No credentials found.' },\n 'auth.noCredsHint': {\n zh: '登录: mimo auth login\\n直接传入: --api-key <key>\\n环境变量: MIMO_API_KEY=<key>',\n en: 'Log in: mimo auth login\\nPass directly: --api-key <key>\\nSet env var: MIMO_API_KEY=<key>',\n },\n 'auth.noKeyProvided': { zh: '未提供 API Key。', en: 'No API key provided.' },\n 'auth.noKeyHint': { zh: '使用:mimo auth login --api-key <key>', en: 'Use: mimo auth login --api-key <key>' },\n 'auth.keyEmpty': { zh: 'API Key 不能为空。', en: 'API key cannot be empty.' },\n 'auth.keyRequired': { zh: 'API Key 为必填项。', en: 'API key is required.' },\n 'auth.keySaved': { zh: 'API Key 已保存至', en: 'API key saved to' },\n 'auth.baseUrlAuto': { zh: '接口地址已自动配置:', en: 'Base URL auto-configured: ' },\n 'auth.promptTitle': { zh: '请输入您的 MiMo API Key:', en: 'Please enter your MiMo API key:' },\n 'auth.promptPayKey': { zh: '- 按量计费 Key:以 \"sk-\" 等非 \"tp-\" 前缀开头', en: '- Pay-as-you-go Key: starts with \"sk-\" or other non-\"tp-\" prefix' },\n 'auth.promptTpKey': { zh: '- TokenPlan Key:以 \"tp-\" 前缀开头', en: '- TokenPlan Key: starts with \"tp-\" prefix' },\n 'auth.promptLabel': { zh: '输入 MiMo API Key:', en: 'Enter your MiMo API key:' },\n 'auth.logoutNoKey': { zh: '配置文件中未找到 API Key,已处于登出状态。', en: 'No API key found in config file. Already logged out.' },\n 'auth.logoutDone': { zh: 'API Key 已移除,您已登出。', en: 'API key removed. You are now logged out.' },\n\n // ---- 命令描述 ----\n 'cmd.chat.desc': { zh: '发送对话请求', en: 'Send a chat completion request' },\n 'cmd.repl.desc': { zh: '交互式多轮对话', en: 'Interactive multi-turn REPL conversation' },\n 'cmd.vision.desc': { zh: '多模态理解(图片、音频、视频)', en: 'Multi-modal understanding (image, audio, video)' },\n 'cmd.asr.desc': { zh: '语音识别(ASR)', en: 'Speech recognition (ASR)' },\n 'cmd.ttsSynth.desc': { zh: '预设音色语音合成', en: 'Pre-set voice text-to-speech synthesis' },\n 'cmd.ttsClone.desc': { zh: '声音克隆语音合成', en: 'Voice clone text-to-speech synthesis' },\n 'cmd.ttsDesign.desc': { zh: '自定义音色语音合成', en: 'Voice design text-to-speech synthesis' },\n 'cmd.ttsVoices.desc': { zh: '列出可用的 TTS 音色', en: 'List available TTS voices' },\n 'cmd.authLogin.desc': { zh: '使用 MiMo API Key 登录(自动识别按量计费/TokenPlan)', en: 'Log in with a MiMo API key (auto-detects key type: Pay-as-you-go or TokenPlan)' },\n 'cmd.authStatus.desc': { zh: '查看当前认证状态', en: 'Show current authentication status' },\n 'cmd.authLogout.desc': { zh: '清除已保存的 API Key', en: 'Clear saved API key from config file' },\n 'cmd.configShow.desc': { zh: '显示当前配置', en: 'Display current configuration' },\n 'cmd.configSet.desc': { zh: '设置配置项', en: 'Set a configuration value' },\n 'cmd.update.desc': { zh: '更新 MiMo CLI', en: 'Self-update the MiMo CLI' },\n 'cmd.help.desc': { zh: '显示命令帮助', en: 'Show help for commands' },\n 'cmd.language.desc': { zh: '切换界面语言(zh/en)', en: 'Switch interface language (zh/en)' },\n\n // ---- 视频理解错误 ----\n 'vision.videoTooLarge': {\n zh: '视频文件过大:{size}MB(原始)。Base64 编码后将超过 {limit}MB 的 API 限制。',\n en: 'Video file too large: {size}MB (raw). After Base64 encoding it would exceed the {limit}MB API limit.',\n },\n 'vision.videoTooLargeHint': {\n zh: '请改用 URL 方式传入视频(URL 模式支持最大 300MB),或将视频压缩至 {max}MB 以下。',\n en: 'Please use a URL to pass the video instead (URL mode supports up to 300MB), or compress the video to under {max}MB.',\n },\n 'vision.videoBase64TooLarge': {\n zh: '视频 Base64 大小 {size}MB 超过 {limit}MB 的 API 限制。',\n en: 'Video Base64 size {size}MB exceeds the {limit}MB API limit.',\n },\n 'vision.videoBase64TooLargeHint': {\n zh: '请改用 URL 方式传入视频(URL 模式支持最大 300MB),或压缩视频。',\n en: 'Please use a URL to pass the video instead (URL mode supports up to 300MB), or compress the video.',\n },\n 'vision.noMedia': {\n zh: '至少需要提供 --image、--audio 或 --video 中的一项。',\n en: 'At least one of --image, --audio, or --video is required.',\n },\n 'vision.noPrompt': {\n zh: '缺少必填参数:--prompt',\n en: 'Missing required flag: --prompt',\n },\n 'vision.requestFailed': {\n zh: '多模态请求失败:',\n en: 'Vision request failed: ',\n },\n 'vision.requestFailedHint': {\n zh: '请检查网络连接和媒体文件格式。',\n en: 'Check your network connection and media file format.',\n },\n\n // ---- Chat 错误 ----\n 'chat.noMessage': { zh: '缺少必填参数:--message', en: 'Missing required flag: --message' },\n 'chat.emptyMessage': { zh: '消息不能为空或仅包含空白字符。', en: 'Message cannot be empty or whitespace only.' },\n 'chat.messageTooLong': { zh: '消息过长:{len} 字符(上限 {max})。', en: 'Message too long: {len} characters (max {max}).' },\n 'chat.messageTooLongHint': { zh: '请缩短消息或拆分为多次请求。', en: 'Shorten your message or split it into multiple requests.' },\n 'chat.streamFailed': { zh: '流式请求失败:', en: 'Stream request failed: ' },\n 'chat.streamFailedHint': { zh: '请检查网络连接和 API Key。', en: 'Check your network connection and API key.' },\n\n // ---- ASR 错误 ----\n 'asr.noFile': { zh: '需要提供音频文件路径。', en: 'Audio file path is required.' },\n 'asr.streamFailed': { zh: '语音识别流式请求失败:', en: 'ASR stream request failed: ' },\n 'asr.requestFailed': { zh: '语音识别请求失败:', en: 'ASR request failed: ' },\n 'asr.checkHint': { zh: '请检查网络连接和音频文件格式。', en: 'Check your network connection and audio file format.' },\n\n // ---- TTS 错误 ----\n 'tts.noText': { zh: '--text 为必填项。', en: '--text is required.' },\n 'tts.emptyText': { zh: '--text 不能为空或仅包含空白字符。', en: '--text cannot be empty or whitespace only.' },\n 'tts.textTooLong': { zh: '文本过长:{len} 字符(上限 {max})。', en: 'Text too long: {len} characters (max {max}).' },\n 'tts.textTooLongHint': { zh: '请缩短文本或拆分为多次合成请求。', en: 'Shorten your text or split into multiple synthesis requests.' },\n 'tts.noSample': { zh: '--sample 为必填项。', en: '--sample is required.' },\n 'tts.noPrompt': { zh: '--prompt 为必填项。', en: '--prompt is required.' },\n 'tts.noTextOrOptimize': { zh: '需要提供 --text 或启用 --optimize-text。', en: 'Either --text or --optimize-text is required.' },\n 'tts.noAudioData': { zh: 'API 响应中缺少音频数据。', en: 'API response missing audio data.' },\n 'tts.invalidVoice': { zh: '无效音色:', en: 'Invalid voice: ' },\n\n // ---- Config ----\n 'config.keyRequired': { zh: '--key 为必填项。', en: '--key is required.' },\n 'config.valueRequired': { zh: '--value 为必填项。', en: '--value is required.' },\n 'config.invalidKey': { zh: '无效的配置键:', en: 'Invalid config key: ' },\n 'config.invalidKeyChars': { zh: '配置键只能包含字母、数字和下划线。', en: 'Config key must only contain letters, numbers, and underscores.' },\n 'config.validKeys': { zh: '有效的键:', en: 'Valid keys: ' },\n 'config.setTimeout': { zh: 'timeout 必须为正数。', en: 'timeout must be a positive number.' },\n 'config.setOutput': { zh: 'output 必须为 \"text\" 或 \"json\"。', en: 'output must be \"text\" or \"json\".' },\n 'config.setDone': { zh: '已设置', en: 'Set' },\n 'config.corrupted': { zh: '警告:配置文件已损坏(', en: 'Warning: config file is corrupted (' },\n 'config.corruptedHint': { zh: ')。运行 \"mimo config set\" 重置。\\n', en: '). Run \\'mimo config set\\' to reset.\\n' },\n\n // ---- Update ----\n 'update.notImplemented': { zh: '自动更新尚未实现,请从 GitHub 重新安装。\\n', en: 'Self-update is not yet implemented. Please reinstall from GitHub.\\n' },\n\n // ---- REPL ----\n 'repl.intro': { zh: 'MiMo 交互对话 — 输入 /exit 退出,/clear 清空对话', en: 'MiMo REPL — type /exit to quit, /clear to reset' },\n 'repl.you': { zh: '你', en: 'You' },\n 'repl.placeholder': { zh: '输入你的消息...', en: 'Type your message...' },\n 'repl.goodbye': { zh: '再见!', en: 'Goodbye!' },\n 'repl.cleared': { zh: '对话已清空。', en: 'Conversation cleared.' },\n\n // ---- Spinner ----\n 'spinner.synthesizing': { zh: '正在合成语音...', en: 'Synthesizing speech...' },\n 'spinner.readingSample': { zh: '正在读取音频样本...', en: 'Reading audio sample...' },\n 'spinner.cloning': { zh: '正在合成克隆语音...', en: 'Synthesizing cloned speech...' },\n 'spinner.designing': { zh: '正在设计音色...', en: 'Designing voice...' },\n\n // ---- Language 命令 ----\n 'language.current': { zh: '当前界面语言:', en: 'Current interface language: ' },\n 'language.changed': { zh: '界面语言已切换为中文。', en: 'Interface language changed to English.' },\n 'language.invalid': { zh: '无效的语言代码,请使用 zh(中文)或 en(英文)。', en: 'Invalid language code. Use zh (Chinese) or en (English).' },\n 'language.hint': { zh: '使用:mimo language zh 或 mimo language en', en: 'Usage: mimo language zh or mimo language en' },\n\n // ---- 通用 ----\n 'general.notSet': { zh: '(未设置)', en: '(not set)' },\n 'general.or': { zh: '或', en: 'or' },\n};\n\n// ============================================================\n// 翻译函数\n// ============================================================\n\n/**\n * 获取翻译文本,支持模板变量替换\n * @param key 翻译键\n * @param vars 模板变量,如 { size: '120', limit: '50' }\n */\nexport function t(key: string, vars?: Record<string, string | number>): string {\n const entry = translations[key];\n if (!entry) return key;\n let text = entry[currentLocale] || entry['zh'] || key;\n if (vars) {\n for (const [k, v] of Object.entries(vars)) {\n text = text.replace(new RegExp(`\\\\{${k}\\\\}`, 'g'), String(v));\n }\n }\n return text;\n}\n",
|
|
35
|
+
"import type { Command } from './command';\nimport { GLOBAL_OPTIONS } from './command';\nimport { t } from './i18n';\n\nexport type { Command, OptionDef } from './command';\n\ninterface CommandNode {\n command?: Command;\n children: Map<string, CommandNode>;\n}\n\nclass CommandRegistry {\n private root: CommandNode = { children: new Map() };\n\n register(path: string, command: Command): void {\n const parts = path.split(' ');\n let node = this.root;\n for (const part of parts) {\n if (!node.children.has(part)) {\n node.children.set(part, { children: new Map() });\n }\n node = node.children.get(part)!;\n }\n node.command = command;\n }\n\n getAllCommands(): Command[] {\n const commands: Command[] = [];\n const traverse = (node: CommandNode) => {\n if (node.command) commands.push(node.command);\n for (const child of node.children.values()) {\n traverse(child);\n }\n };\n traverse(this.root);\n return commands;\n }\n\n resolve(commandPath: string[]): { command: Command; extra: string[] } {\n let node = this.root;\n const matched: string[] = [];\n\n for (const part of commandPath) {\n const child = node.children.get(part);\n if (!child) break;\n node = child;\n matched.push(part);\n }\n\n if (node.command) {\n return { command: node.command, extra: commandPath.slice(matched.length) };\n }\n\n // Single child: auto-forward (e.g. `mimo asr` → `mimo asr audio.wav`)\n if (matched.length > 0 && node.children.size === 1) {\n const [, child] = node.children.entries().next().value as [string, CommandNode];\n if (child.command) {\n return { command: child.command, extra: commandPath.slice(matched.length) };\n }\n }\n\n // Alias-only group: auto-forward when every child points to the same command.\n // Example: `mimo search \"query\"` should work even when both `search query`\n // and `search web` are registered as aliases for the same implementation.\n if (matched.length > 0 && node.children.size > 1) {\n const children = Array.from(node.children.values());\n const commands = children.map((child) => child.command);\n const first = commands[0];\n if (first && commands.every((command) => command === first)) {\n return { command: first, extra: commandPath.slice(matched.length) };\n }\n }\n\n // If we matched some path but no command, show help for that group\n if (matched.length > 0 && node.children.size > 0) {\n const subcommands = Array.from(node.children.entries())\n .map(([name, n]) => {\n if (n.command) return ` ${matched.join(' ')} ${name} ${t(n.command.description)}`;\n const subs = Array.from(n.children.keys()).join(', ');\n return ` ${matched.join(' ')} ${name} [${subs}]`;\n })\n .join('\\n');\n throw new Error(\n `Unknown command: mimo ${commandPath.join(' ')}\\n\\nAvailable commands:\\n${subcommands}\\n\\nRun mimo ${matched.join(' ')} --help for more information.`,\n );\n }\n\n throw new Error(\n `Unknown command: mimo ${commandPath.join(' ')}\\n\\nRun mimo --help for available commands.`,\n );\n }\n\n // Color helpers — no-ops when output is not a TTY\n private bold(s: string, out: NodeJS.WritableStream): string {\n if ('isTTY' in out && out.isTTY) return `\\x1b[1m${s}\\x1b[0m`;\n return s;\n }\n\n private accent(s: string, out: NodeJS.WritableStream): string {\n // MiMo orange: #FF6900 → rgb(255, 105, 0)\n if ('isTTY' in out && out.isTTY) return `\\x1b[38;2;255;105;0m${s}\\x1b[0m`;\n return s;\n }\n\n private dim(s: string, out: NodeJS.WritableStream): string {\n if ('isTTY' in out && out.isTTY) return `\\x1b[2m${s}\\x1b[0m`;\n return s;\n }\n\n printHelp(commandPath: string[], out: NodeJS.WritableStream = process.stdout): void {\n if (commandPath.length === 0) {\n this.printRootHelp(out);\n return;\n }\n\n let node = this.root;\n for (const part of commandPath) {\n const child = node.children.get(part);\n if (!child) {\n this.printRootHelp(out);\n return;\n }\n node = child;\n }\n\n if (node.command) {\n this.printCommandHelp(node.command, out);\n return;\n }\n\n // Group help (e.g. `mimo chat --help`)\n const prefix = commandPath.join(' ');\n out.write(`\\n${this.bold(t('help.usage'), out)} mimo ${prefix} <command> [flags]\\n\\n`);\n out.write(`${this.bold(t('help.commands'), out)}\\n`);\n this.printChildren(node, prefix, out);\n out.write('\\n');\n }\n\n private printRootHelp(out: NodeJS.WritableStream): void {\n // MMC brand logo\n const LOGO = [\n '███╗ ███╗███╗ ███╗███████╗',\n '████╗ ████║████╗ ████║██╔════╝',\n '██╔████╔██║██╔████╔██║██╔ ',\n '██║╚██╔╝██║██║╚██╔╝██║██╔ ',\n '██║ ╚═╝ ██║██║ ╚═╝ ██║███████╗',\n '╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝',\n ];\n // 小米品牌渐变:从活力橙到科技红,体现小米气质\n const GRADIENT: [number, number, number][] = [\n [255, 165, 0], // 亮橙 #FFA500\n [255, 140, 0], // 深橙 #FF8C00\n [255, 105, 0], // 小米橙 #FF6900\n [245, 85, 0], // 橙红 #F55500\n [230, 65, 0], // 深橙红 #E64100\n [210, 45, 0], // 科技红 #D22D00\n ];\n\n out.write('\\n');\n for (let i = 0; i < LOGO.length; i++) {\n if ('isTTY' in out && out.isTTY) {\n const [r, g, b] = GRADIENT[i]!;\n out.write(`\\x1b[1;38;2;${r};${g};${b}m${LOGO[i]}\\x1b[0m\\n`);\n } else {\n out.write(LOGO[i]! + '\\n');\n }\n }\n\n const b = (s: string) => this.bold(s, out);\n const a = (s: string) => this.accent(s, out);\n const d = (s: string) => this.dim(s, out);\n\n // Dynamically build the resources section from registered commands\n const topGroups = this.collectTopGroups();\n\n let resourcesSection = '';\n if (topGroups.length > 0) {\n const maxNameLen = Math.max(...topGroups.map((g) => g.name.length));\n resourcesSection = `${b(t('main.resources'))}\\n`;\n for (const group of topGroups) {\n resourcesSection += ` ${a(group.name.padEnd(maxNameLen + 2))} ${d(group.description)}\\n`;\n }\n resourcesSection += '\\n';\n }\n\n const maxFlagLen = Math.max(...GLOBAL_OPTIONS.map((o) => o.flag.length));\n let globalFlagsSection = `${b(t('main.globalFlags'))}\\n`;\n for (const opt of GLOBAL_OPTIONS) {\n globalFlagsSection += ` ${a(opt.flag.padEnd(maxFlagLen + 2))} ${d(opt.description)}\\n`;\n }\n\n out.write(`\n${b(t('main.usage'))}\n\n${resourcesSection}${globalFlagsSection}\n${b(t('main.gettingHelp'))}\n ${d(t('main.helpHint1'))}\n ${d(t('main.helpHint2'))} mimo chat --help\n`);\n }\n\n private printCommandHelp(cmd: Command, out: NodeJS.WritableStream): void {\n const b = (s: string) => this.bold(s, out);\n const a = (s: string) => this.accent(s, out);\n const d = (s: string) => this.dim(s, out);\n\n out.write(`\\n${t(cmd.description)}\\n`);\n if (cmd.usage) out.write(`${b(t('help.usage'))} ${cmd.usage}\\n`);\n if (cmd.options && cmd.options.length > 0) {\n const maxLen = Math.max(...cmd.options.map((o) => o.flag.length));\n out.write(`\\n${b(t('help.options'))}\\n`);\n for (const opt of cmd.options) {\n out.write(` ${a(opt.flag.padEnd(maxLen + 2))} ${d(opt.description)}\\n`);\n }\n }\n if (cmd.examples && cmd.examples.length > 0) {\n out.write(`\\n${b(t('help.examples'))}\\n`);\n for (const ex of cmd.examples) {\n out.write(` ${d(ex)}\\n`);\n }\n }\n if (cmd.apiDocs) {\n out.write(`\\n${b(t('help.apiRef'))} ${d(cmd.apiDocs)}\\n`);\n }\n out.write(`\\n${d(t('help.globalHint'))}\\n`);\n out.write(`${d(t('help.globalHintRun'))}\\n`);\n }\n\n private printChildren(node: CommandNode, prefix: string, out: NodeJS.WritableStream): void {\n const entries: Array<{ fullName: string; description: string }> = [];\n const collect = (n: CommandNode, p: string) => {\n for (const [name, child] of n.children) {\n if (child.command) entries.push({ fullName: `${p} ${name}`, description: t(child.command.description) });\n if (child.children.size > 0) collect(child, `${p} ${name}`);\n }\n };\n collect(node, prefix);\n const maxLen = Math.max(...entries.map((e) => e.fullName.length));\n for (const { fullName, description } of entries) {\n out.write(` ${this.accent(fullName.padEnd(maxLen), out)} ${this.dim(description, out)}\\n`);\n }\n }\n\n /** Collect top-level groups with their subcommand descriptions for root help. */\n private collectTopGroups(): Array<{ name: string; description: string }> {\n const groups: Array<{ name: string; description: string }> = [];\n for (const [name, node] of this.root.children) {\n if (node.command) {\n // Direct command at top level\n groups.push({ name, description: t(node.command.description) });\n } else if (node.children.size > 0) {\n // Group node — collect subcommand names\n const subNames = Array.from(node.children.keys());\n const firstChild = node.children.values().next().value as CommandNode | undefined;\n const desc = firstChild?.command?.description ? t(firstChild.command.description) : subNames.join(', ');\n groups.push({ name, description: desc });\n }\n }\n return groups;\n }\n}\n\n/** Singleton registry instance */\nexport const registry = new CommandRegistry();\n",
|
|
36
|
+
"export const ExitCode = {\n SUCCESS: 0,\n GENERAL: 1,\n USAGE: 2,\n AUTH: 3,\n QUOTA: 4,\n TIMEOUT: 5,\n NETWORK: 6,\n CONTENT_FILTER: 10,\n INVALID_INPUT: 11,\n} as const;\n\nexport type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];\n",
|
|
37
|
+
"import { ExitCode } from './codes';\n\nexport class CLIError extends Error {\n readonly exitCode: ExitCode;\n readonly hint?: string;\n\n constructor(message: string, exitCode: ExitCode = ExitCode.GENERAL, hint?: string) {\n super(message);\n this.name = 'CLIError';\n this.exitCode = exitCode;\n this.hint = hint;\n }\n\n toJSON() {\n return {\n error: {\n code: this.exitCode,\n message: this.message,\n ...(this.hint ? { hint: this.hint } : {}),\n },\n };\n }\n}\n",
|
|
38
|
+
"export function formatText(data: unknown, _config?: Record<string, unknown>): string {\n if (data === null || data === undefined) return '';\n if (typeof data === 'string') return data;\n if (typeof data === 'number' || typeof data === 'boolean') return String(data);\n\n if (Array.isArray(data)) {\n if (data.length === 0) return '(empty)';\n if (typeof data[0] === 'object' && data[0] !== null) {\n return formatTable(\n Object.keys(data[0] as Record<string, unknown>),\n data.map(row =>\n Object.values(row as Record<string, unknown>).map(v => String(v ?? '')),\n ),\n );\n }\n return data.map(String).join('\\n');\n }\n\n if (typeof data === 'object') {\n return formatKeyValue(data as Record<string, unknown>);\n }\n\n return String(data);\n}\n\nexport function formatKeyValue(obj: Record<string, unknown>, indent: number = 0): string {\n const prefix = ' '.repeat(indent);\n const lines: string[] = [];\n\n for (const [key, value] of Object.entries(obj)) {\n if (value === null || value === undefined) continue;\n if (Array.isArray(value)) {\n lines.push(`${prefix}${key}:`);\n for (const item of value) {\n if (typeof item === 'object' && item !== null) {\n lines.push(`${prefix} - ${formatKeyValue(item as Record<string, unknown>, indent + 4).trimStart()}`);\n } else {\n lines.push(`${prefix} - ${String(item)}`);\n }\n }\n } else if (typeof value === 'object') {\n lines.push(`${prefix}${key}:`);\n lines.push(formatKeyValue(value as Record<string, unknown>, indent + 2));\n } else {\n lines.push(`${prefix}${key}: ${String(value)}`);\n }\n }\n\n return lines.join('\\n');\n}\n\nexport function formatTable(headers: string[], rows: string[][]): string {\n if (rows.length === 0) return '(empty)';\n\n const widths = headers.map((h, i) =>\n Math.max(h.length, ...rows.map(r => (r[i] ?? '').length)),\n );\n\n const headerLine = headers.map((h, i) => h.toUpperCase().padEnd(widths[i]!)).join(' ');\n const separator = widths.map(w => '-'.repeat(w)).join(' ');\n const bodyLines = rows.map(r =>\n r.map((cell, i) => (cell ?? '').padEnd(widths[i]!)).join(' '),\n );\n\n return [headerLine, separator, ...bodyLines].join('\\n');\n}\n",
|
|
39
|
+
"import type { CLIError } from '../errors/base';\n\nexport function formatJson(data: unknown): string {\n return JSON.stringify(data, null, 2);\n}\n\nexport function formatErrorJson(error: CLIError): object {\n return {\n error: {\n code: error.exitCode,\n message: error.message,\n ...(error.hint ? { hint: error.hint } : {}),\n },\n };\n}\n",
|
|
40
|
+
"import { formatText } from './text';\nimport { formatJson } from './json';\n\nexport type OutputFormat = 'text' | 'json';\n\n/** formatOutput/detectOutputFormat 接受的配置类型:字符串、带 output 字段的对象、或 undefined */\nexport type OutputConfig = string | { output?: string } | undefined;\n\nexport function detectOutputFormat(config?: OutputConfig): OutputFormat {\n if (config === 'json' || config === 'text') {\n return config;\n }\n if (typeof config === 'object' && config !== null) {\n if (config.output === 'json' || config.output === 'text') {\n return config.output;\n }\n }\n if (!process.stdout.isTTY) {\n return 'json';\n }\n return 'text';\n}\n\nexport function formatOutput(data: unknown, config?: OutputConfig): string {\n const format = detectOutputFormat(config);\n switch (format) {\n case 'json':\n return formatJson(data);\n case 'text':\n return formatText(data);\n }\n}\n\nexport function dryRun(config: { dryRun?: boolean; output?: string }, body: unknown): boolean {\n if (!config.dryRun) return false;\n console.log(formatOutput({ request: body }, detectOutputFormat(config.output)));\n return true;\n}\n",
|
|
41
|
+
"import { resolve, normalize } from 'node:path';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\n\n/**\n * 规范化并验证用户输入的文件路径,防止路径遍历攻击。\n * 检查规范化后的路径是否在 baseDir 目录下,如果逃逸则抛出 CLIError。\n *\n * @param inputPath - 用户输入的文件路径\n * @param baseDir - 允许的基准目录,默认为 process.cwd()\n * @returns 规范化后的绝对路径\n * @throws CLIError 如果路径逃逸到 baseDir 之外\n */\nexport function sanitizePath(inputPath: string, baseDir?: string): string {\n const base = resolve(baseDir ?? process.cwd());\n const resolved = resolve(inputPath);\n\n // 规范化后检查路径是否以 baseDir 开头\n // 确保比较时 baseDir 以路径分隔符结尾,避免 /app 匹配 /application 的情况\n const baseWithSep = base.endsWith('/') || base.endsWith('\\\\') ? base : base + '/';\n if (resolved !== base && !resolved.startsWith(baseWithSep)) {\n throw new CLIError(\n `路径不允许逃逸到预期目录之外: ${inputPath}`,\n ExitCode.INVALID_INPUT,\n '请确保文件路径在当前工作目录内,不要使用绝对路径或 ../ 等相对路径逃逸。',\n );\n }\n\n return resolved;\n}\n\n/**\n * 对 API Key 做脱敏处理,只显示前4位和后4位,中间用 **** 替代。\n * 格式: sk-****xxxx\n *\n * @param key - 原始 API Key\n * @returns 脱敏后的 API Key\n */\nexport function maskApiKey(key: string): string {\n if (!key || typeof key !== 'string') return '****';\n\n // 对于很短的 key,全部脱敏\n if (key.length <= 8) {\n return key.slice(0, 2) + '****';\n }\n\n return key.slice(0, 4) + '****' + key.slice(-4);\n}\n\n/**\n * 在文本中扫描并替换可能泄露的 API Key。\n * 匹配 sk- 或 tp- 开头的长字符串(>=20字符),替换为脱敏格式。\n *\n * @param text - 可能包含 API Key 的文本\n * @returns 脱敏后的文本\n */\nexport function redactApiKeysInText(text: string): string {\n if (!text || typeof text !== 'string') return text;\n\n // 匹配 sk- 或 tp- 开头且长度 >= 20 的字符串(典型的 API Key 格式)\n return text.replace(/(?:sk|tp)-[A-Za-z0-9_-]{16,}/g, (match) => {\n return maskApiKey(match);\n });\n}\n",
|
|
42
|
+
"import { CLIError } from './base';\nimport { ExitCode } from './codes';\nimport { detectOutputFormat } from '../output/formatter';\nimport { redactApiKeysInText } from '../utils/sanitize';\nimport { t } from '../i18n';\n\nexport function handleError(err: unknown): never {\n if (err instanceof CLIError) {\n const format = detectOutputFormat(process.env.MIMO_OUTPUT);\n\n if (format === 'json') {\n // JSON 输出时也需要脱敏\n const safeJson = redactApiKeysInText(JSON.stringify(err.toJSON(), null, 2));\n process.stderr.write(safeJson + '\\n');\n } else {\n // 对错误信息中可能包含的 API Key 做脱敏处理\n process.stderr.write(`\\n${t('error.prefix')} ${redactApiKeysInText(err.message)}\\n`);\n if (err.hint) {\n process.stderr.write(`\\n ${redactApiKeysInText(err.hint).split('\\n').join('\\n ')}\\n`);\n }\n process.stderr.write(` ${t('error.exitCode', { code: String(err.exitCode) })}\\n`);\n }\n process.exit(err.exitCode);\n }\n\n if (err instanceof Error) {\n if (\n err.name === 'AbortError' ||\n err.name === 'TimeoutError' ||\n err.message.includes('timed out')\n ) {\n const timeout = new CLIError(\n t('error.timeout'),\n ExitCode.TIMEOUT,\n t('error.timeoutHint'),\n );\n return handleError(timeout);\n }\n\n if (err instanceof TypeError && err.message === 'fetch failed') {\n const networkErr = new CLIError(\n t('error.network'),\n ExitCode.NETWORK,\n t('error.networkHint'),\n );\n return handleError(networkErr);\n }\n\n const msg = err.message.toLowerCase();\n const isNetworkError =\n msg.includes('failed to fetch') ||\n msg.includes('connection refused') ||\n msg.includes('econnrefused') ||\n msg.includes('connection reset') ||\n msg.includes('econnreset') ||\n msg.includes('network error') ||\n msg.includes('enotfound') ||\n msg.includes('getaddrinfo') ||\n msg.includes('proxy') ||\n msg.includes('socket') ||\n msg.includes('etimedout') ||\n msg.includes('eai_again');\n\n if (isNetworkError) {\n let hint = t('error.networkHint');\n if (msg.includes('proxy')) {\n hint = t('error.proxyHint');\n }\n const networkErr = new CLIError(\n t('error.network'),\n ExitCode.NETWORK,\n hint,\n );\n return handleError(networkErr);\n }\n\n const ecode = (err as NodeJS.ErrnoException).code;\n if (\n ecode === 'ENOENT' ||\n ecode === 'EACCES' ||\n ecode === 'ENOSPC' ||\n ecode === 'ENOTDIR' ||\n ecode === 'EISDIR' ||\n ecode === 'EPERM' ||\n ecode === 'EBUSY'\n ) {\n let hint = t('error.fsDefault');\n if (ecode === 'ENOENT') hint = t('error.fsEnoent');\n if (ecode === 'EACCES' || ecode === 'EPERM')\n hint = t('error.fsEacces');\n if (ecode === 'ENOSPC') hint = t('error.fsEnospc');\n const fsErr = new CLIError(\n t('error.fsPrefix') + err.message,\n ExitCode.GENERAL,\n hint,\n );\n return handleError(fsErr);\n } else if (typeof ecode === 'string' && ecode.startsWith('E')) {\n const fsErr = new CLIError(\n t('error.fsPrefix') + err.message,\n ExitCode.GENERAL,\n t('error.fsDefault'),\n );\n return handleError(fsErr);\n }\n\n // 对通用错误信息做脱敏处理,防止 API Key 泄露\n process.stderr.write(`\\n${t('error.prefix')} ${redactApiKeysInText(err.message)}\\n`);\n if (process.env.MIMO_VERBOSE === '1') {\n process.stderr.write(`${redactApiKeysInText(err.stack ?? '')}\\n`);\n }\n } else {\n // 对非 Error 类型的输出也做脱敏\n process.stderr.write(`\\n${t('error.prefix')} ${redactApiKeysInText(String(err))}\\n`);\n }\n\n process.exit(ExitCode.GENERAL);\n}\n",
|
|
43
|
+
"import { readFileSync, writeFileSync, renameSync, existsSync } from 'fs';\nimport { parseConfigFile, type Config, type ConfigFile } from './schema';\nimport { ensureConfigDir, getConfigPath } from './paths';\nimport { detectOutputFormat, type OutputFormat } from '../output/formatter';\nimport { inferBaseUrlFromKey } from '../auth/resolver';\nimport type { GlobalFlags } from '../types/flags';\nimport { t } from '../i18n';\n\nconst DEFAULT_BASE_URL = 'https://api.xiaomimimo.com/v1';\n\nexport function readConfigFile(): ConfigFile {\n const path = getConfigPath();\n if (!existsSync(path)) return {};\n try {\n return parseConfigFile(JSON.parse(readFileSync(path, 'utf-8')));\n } catch (err) {\n // 配置文件解析失败,记录具体错误以便排查\n const detail = err instanceof Error ? err.message : String(err);\n process.stderr.write(t('config.corrupted') + detail + t('config.corruptedHint'));\n return {};\n }\n}\n\nexport async function writeConfigFile(data: Record<string, unknown>): Promise<void> {\n ensureConfigDir();\n const path = getConfigPath();\n const tmp = path + '.tmp';\n try {\n writeFileSync(tmp, JSON.stringify(data, null, 2) + '\\n', { mode: 0o600 });\n renameSync(tmp, path);\n } catch (err) {\n // 写入配置文件失败时给出明确提示\n const detail = err instanceof Error ? err.message : String(err);\n throw new Error(`Failed to write config file: ${detail}. Check file permissions for ${path}`);\n }\n}\n\nexport function loadConfig(flags: GlobalFlags): Config {\n const file = readConfigFile();\n\n const apiKey = flags.apiKey || undefined;\n const fileApiKey = file.api_key;\n\n // 当 --api-key flag 传入时,根据 key 前缀自动推断 base URL\n let baseUrl: string;\n if (flags.baseUrl) {\n baseUrl = flags.baseUrl;\n } else if (process.env.MIMO_BASE_URL) {\n baseUrl = process.env.MIMO_BASE_URL;\n } else if (apiKey) {\n // flag 传入的 key 优先推断\n const inferred = inferBaseUrlFromKey(apiKey);\n baseUrl = inferred || file.base_url || DEFAULT_BASE_URL;\n } else {\n baseUrl = file.base_url || DEFAULT_BASE_URL;\n }\n\n const output: OutputFormat = detectOutputFormat(\n flags.output || process.env.MIMO_OUTPUT || file.output,\n );\n\n const envTimeout = process.env.MIMO_TIMEOUT ? Number(process.env.MIMO_TIMEOUT) : undefined;\n const validEnvTimeout = envTimeout !== undefined && Number.isFinite(envTimeout) && envTimeout > 0\n ? envTimeout : undefined;\n const timeout = flags.timeout ?? validEnvTimeout ?? file.timeout ?? 300;\n\n return {\n apiKey,\n fileApiKey,\n configPath: getConfigPath(),\n baseUrl,\n output,\n timeout,\n defaultModel: file.default_model,\n language: (file.language as string | undefined) || undefined,\n verbose: flags.verbose || process.env.MIMO_VERBOSE === '1',\n quiet: flags.quiet || false,\n noColor: flags.noColor || process.env.NO_COLOR !== undefined || !process.stdout.isTTY,\n dryRun: flags.dryRun || false,\n nonInteractive: flags.nonInteractive || false,\n };\n}\n",
|
|
44
|
+
"export interface ConfigFile {\n api_key?: string;\n base_url?: string;\n output?: 'text' | 'json';\n timeout?: number;\n default_model?: string;\n language?: 'zh' | 'en';\n}\n\nconst VALID_OUTPUTS = new Set<string>(['text', 'json']);\n\nexport function parseConfigFile(raw: unknown): ConfigFile {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return {};\n const obj = raw as Record<string, unknown>;\n const out: ConfigFile = {};\n\n if (typeof obj.api_key === 'string') out.api_key = obj.api_key;\n if (typeof obj.base_url === 'string' && obj.base_url.startsWith('http')) out.base_url = obj.base_url;\n if (typeof obj.output === 'string' && VALID_OUTPUTS.has(obj.output)) out.output = obj.output as ConfigFile['output'];\n if (typeof obj.timeout === 'number' && obj.timeout > 0) out.timeout = obj.timeout;\n if (typeof obj.default_model === 'string' && obj.default_model.length > 0) out.default_model = obj.default_model;\n if (typeof obj.language === 'string' && (obj.language === 'zh' || obj.language === 'en')) out.language = obj.language as ConfigFile['language'];\n\n return out;\n}\n\nexport interface Config {\n apiKey?: string;\n fileApiKey?: string;\n configPath?: string;\n baseUrl: string;\n output: 'text' | 'json';\n timeout: number;\n defaultModel?: string;\n verbose: boolean;\n quiet: boolean;\n noColor: boolean;\n dryRun: boolean;\n nonInteractive: boolean;\n language?: string;\n}\n",
|
|
45
|
+
"import { homedir } from 'os';\nimport { join } from 'path';\nimport { mkdirSync } from 'fs';\n\nexport function getConfigDir(): string {\n return process.env.MIMO_CONFIG_DIR ?? join(homedir(), '.mimo');\n}\n\nexport function getConfigPath(): string {\n return join(getConfigDir(), 'config.json');\n}\n\nexport function ensureConfigDir(): void {\n const dir = getConfigDir();\n mkdirSync(dir, { recursive: true, mode: 0o700 });\n}\n",
|
|
46
|
+
"import type { Config } from '../config/schema';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\nimport { maskApiKey } from '../utils/sanitize';\n\nexport interface ResolvedCredential {\n token: string;\n method: 'api-key';\n source: 'flag' | 'config.json' | 'env';\n}\n\n/**\n * 根据 API Key 前缀推断 base URL:\n * - tp- 开头:TokenPlan Key → https://token-plan-cn.xiaomimimo.com/v1\n * - 其他:按量计费 Key → https://api.xiaomimimo.com/v1\n */\nexport function inferBaseUrlFromKey(apiKey: string): string | undefined {\n if (apiKey.startsWith('tp-')) {\n return 'https://token-plan-cn.xiaomimimo.com/v1';\n }\n // 按量计费 Key 不需要返回,使用默认 base URL 即可\n return undefined;\n}\n\nexport function resolveCredential(config: Config): ResolvedCredential {\n // 1. --api-key flag\n if (config.apiKey) {\n return { token: config.apiKey, method: 'api-key', source: 'flag' };\n }\n\n // 2. MIMO_API_KEY env var\n const envKey = process.env.MIMO_API_KEY;\n if (envKey) {\n return { token: envKey, method: 'api-key', source: 'env' };\n }\n\n // 3. API key from config file\n if (config.fileApiKey) {\n return { token: config.fileApiKey, method: 'api-key', source: 'config.json' };\n }\n\n // 错误提示中使用脱敏示例,不泄露真实 key\n throw new CLIError(\n 'No credentials found.',\n ExitCode.AUTH,\n 'Log in: mimo auth login\\nPass directly: --api-key <key>\\nSet env var: MIMO_API_KEY=<key>',\n );\n}\n",
|
|
47
|
+
"import{cursor as l,erase as m}from\"sisteransi\";import{stdin as $,stdout as k}from\"node:process\";import*as f from\"node:readline\";import _ from\"node:readline\";import{WriteStream as U}from\"node:tty\";import c from\"picocolors\";function q({onlyFirst:e=!1}={}){const F=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C))\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(F,e?void 0:\"g\")}const J=q();function S(e){if(typeof e!=\"string\")throw new TypeError(`Expected a \\`string\\`, got \\`${typeof e}\\``);return e.replace(J,\"\")}function T(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var j={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(t){var s=t.charCodeAt(0),C=t.length==2?t.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=C&&C<=57343&&(s&=1023,C&=1023,D=s<<10|C,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?\"F\":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?\"H\":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?\"W\":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?\"Na\":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?\"A\":\"N\"},u.characterLength=function(t){var s=this.eastAsianWidth(t);return s==\"F\"||s==\"W\"||s==\"A\"?2:1};function F(t){return t.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g)||[]}u.length=function(t){for(var s=F(t),C=0,D=0;D<s.length;D++)C=C+this.characterLength(s[D]);return C},u.slice=function(t,s,C){textLen=u.length(t),s=s||0,C=C||1,s<0&&(s=textLen+s),C<0&&(C=textLen+C);for(var D=\"\",i=0,n=F(t),E=0;E<n.length;E++){var h=n[E],o=u.length(h);if(i>=s-(o==2?1:0))if(i+o<=C)D+=h;else break;i+=o}return D}})(j);var Q=j.exports;const X=T(Q);var DD=function(){return/\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g};const uD=T(DD);function A(e,u={}){if(typeof e!=\"string\"||e.length===0||(u={ambiguousIsNarrow:!0,...u},e=S(e),e.length===0))return 0;e=e.replace(uD(),\" \");const F=u.ambiguousIsNarrow?1:2;let t=0;for(const s of e){const C=s.codePointAt(0);if(C<=31||C>=127&&C<=159||C>=768&&C<=879)continue;switch(X.eastAsianWidth(s)){case\"F\":case\"W\":t+=2;break;case\"A\":t+=F;break;default:t+=1}}return t}const d=10,M=(e=0)=>u=>`\\x1B[${u+e}m`,P=(e=0)=>u=>`\\x1B[${38+e};5;${u}m`,W=(e=0)=>(u,F,t)=>`\\x1B[${38+e};2;${u};${F};${t}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const FD=Object.keys(r.color),eD=Object.keys(r.bgColor);[...FD,...eD];function tD(){const e=new Map;for(const[u,F]of Object.entries(r)){for(const[t,s]of Object.entries(F))r[t]={open:`\\x1B[${s[0]}m`,close:`\\x1B[${s[1]}m`},F[t]=r[t],e.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:!1})}return Object.defineProperty(r,\"codes\",{value:e,enumerable:!1}),r.color.close=\"\\x1B[39m\",r.bgColor.close=\"\\x1B[49m\",r.color.ansi=M(),r.color.ansi256=P(),r.color.ansi16m=W(),r.bgColor.ansi=M(d),r.bgColor.ansi256=P(d),r.bgColor.ansi16m=W(d),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,t)=>u===F&&F===t?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(t/255*5),enumerable:!1},hexToRgb:{value:u=>{const F=/[a-f\\d]{6}|[a-f\\d]{3}/i.exec(u.toString(16));if(!F)return[0,0,0];let[t]=F;t.length===3&&(t=[...t].map(C=>C+C).join(\"\"));const s=Number.parseInt(t,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,t,s;if(u>=232)F=((u-232)*10+8)/255,t=F,s=F;else{u-=16;const i=u%36;F=Math.floor(u/36)/5,t=Math.floor(i/6)/5,s=i%6/5}const C=Math.max(F,t,s)*2;if(C===0)return 30;let D=30+(Math.round(s)<<2|Math.round(t)<<1|Math.round(F));return C===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,F,t)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,t)),enumerable:!1},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:!1}}),r}const sD=tD(),g=new Set([\"\\x1B\",\"\\x9B\"]),CD=39,b=\"\\x07\",O=\"[\",iD=\"]\",I=\"m\",w=`${iD}8;;`,N=e=>`${g.values().next().value}${O}${e}${I}`,L=e=>`${g.values().next().value}${w}${e}${b}`,rD=e=>e.split(\" \").map(u=>A(u)),y=(e,u,F)=>{const t=[...u];let s=!1,C=!1,D=A(S(e[e.length-1]));for(const[i,n]of t.entries()){const E=A(n);if(D+E<=F?e[e.length-1]+=n:(e.push(n),D=0),g.has(n)&&(s=!0,C=t.slice(i+1).join(\"\").startsWith(w)),s){C?n===b&&(s=!1,C=!1):n===I&&(s=!1);continue}D+=E,D===F&&i<t.length-1&&(e.push(\"\"),D=0)}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},ED=e=>{const u=e.split(\" \");let F=u.length;for(;F>0&&!(A(u[F-1])>0);)F--;return F===u.length?e:u.slice(0,F).join(\" \")+u.slice(F).join(\"\")},oD=(e,u,F={})=>{if(F.trim!==!1&&e.trim()===\"\")return\"\";let t=\"\",s,C;const D=rD(e);let i=[\"\"];for(const[E,h]of e.split(\" \").entries()){F.trim!==!1&&(i[i.length-1]=i[i.length-1].trimStart());let o=A(i[i.length-1]);if(E!==0&&(o>=u&&(F.wordWrap===!1||F.trim===!1)&&(i.push(\"\"),o=0),(o>0||F.trim===!1)&&(i[i.length-1]+=\" \",o++)),F.hard&&D[E]>u){const B=u-o,p=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<p&&i.push(\"\"),y(i,h,u);continue}if(o+D[E]>u&&o>0&&D[E]>0){if(F.wordWrap===!1&&o<u){y(i,h,u);continue}i.push(\"\")}if(o+D[E]>u&&F.wordWrap===!1){y(i,h,u);continue}i[i.length-1]+=h}F.trim!==!1&&(i=i.map(E=>ED(E)));const n=[...i.join(`\n`)];for(const[E,h]of n.entries()){if(t+=h,g.has(h)){const{groups:B}=new RegExp(`(?:\\\\${O}(?<code>\\\\d+)m|\\\\${w}(?<uri>.*)${b})`).exec(n.slice(E).join(\"\"))||{groups:{}};if(B.code!==void 0){const p=Number.parseFloat(B.code);s=p===CD?void 0:p}else B.uri!==void 0&&(C=B.uri.length===0?void 0:B.uri)}const o=sD.codes.get(Number(s));n[E+1]===`\n`?(C&&(t+=L(\"\")),s&&o&&(t+=N(o))):h===`\n`&&(s&&o&&(t+=N(s)),C&&(t+=L(C)))}return t};function R(e,u,F){return String(e).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(t=>oD(t,u,F)).join(`\n`)}var nD=Object.defineProperty,aD=(e,u,F)=>u in e?nD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):e[u]=F,a=(e,u,F)=>(aD(e,typeof u!=\"symbol\"?u+\"\":u,F),F);function hD(e,u){if(e===u)return;const F=e.split(`\n`),t=u.split(`\n`),s=[];for(let C=0;C<Math.max(F.length,t.length);C++)F[C]!==t[C]&&s.push(C);return s}const V=Symbol(\"clack:cancel\");function lD(e){return e===V}function v(e,u){e.isTTY&&e.setRawMode(u)}const z=new Map([[\"k\",\"up\"],[\"j\",\"down\"],[\"h\",\"left\"],[\"l\",\"right\"]]),xD=new Set([\"up\",\"down\",\"left\",\"right\",\"space\",\"enter\"]);class x{constructor({render:u,input:F=$,output:t=k,...s},C=!0){a(this,\"input\"),a(this,\"output\"),a(this,\"rl\"),a(this,\"opts\"),a(this,\"_track\",!1),a(this,\"_render\"),a(this,\"_cursor\",0),a(this,\"state\",\"initial\"),a(this,\"value\"),a(this,\"error\",\"\"),a(this,\"subscribers\",new Map),a(this,\"_prevFrame\",\"\"),this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=u.bind(this),this._track=C,this.input=F,this.output=t}prompt(){const u=new U(0);return u._write=(F,t,s)=>{this._track&&(this.value=this.rl.line.replace(/\\t/g,\"\"),this._cursor=this.rl.cursor,this.emit(\"value\",this.value)),s()},this.input.pipe(u),this.rl=_.createInterface({input:this.input,output:u,tabSize:2,prompt:\"\",escapeCodeTimeout:50}),_.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(\"keypress\",this.onKeypress),v(this.input,!0),this.output.on(\"resize\",this.render),this.render(),new Promise((F,t)=>{this.once(\"submit\",()=>{this.output.write(l.show),this.output.off(\"resize\",this.render),v(this.input,!1),F(this.value)}),this.once(\"cancel\",()=>{this.output.write(l.show),this.output.off(\"resize\",this.render),v(this.input,!1),F(V)})})}on(u,F){const t=this.subscribers.get(u)??[];t.push({cb:F}),this.subscribers.set(u,t)}once(u,F){const t=this.subscribers.get(u)??[];t.push({cb:F,once:!0}),this.subscribers.set(u,t)}emit(u,...F){const t=this.subscribers.get(u)??[],s=[];for(const C of t)C.cb(...F),C.once&&s.push(()=>t.splice(t.indexOf(C),1));for(const C of s)C()}unsubscribe(){this.subscribers.clear()}onKeypress(u,F){if(this.state===\"error\"&&(this.state=\"active\"),F?.name&&!this._track&&z.has(F.name)&&this.emit(\"cursor\",z.get(F.name)),F?.name&&xD.has(F.name)&&this.emit(\"cursor\",F.name),u&&(u.toLowerCase()===\"y\"||u.toLowerCase()===\"n\")&&this.emit(\"confirm\",u.toLowerCase()===\"y\"),u===\"\t\"&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit(\"value\",this.opts.placeholder))),u&&this.emit(\"key\",u.toLowerCase()),F?.name===\"return\"){if(this.opts.validate){const t=this.opts.validate(this.value);t&&(this.error=t,this.state=\"error\",this.rl.write(this.value))}this.state!==\"error\"&&(this.state=\"submit\")}u===\"\u0003\"&&(this.state=\"cancel\"),(this.state===\"submit\"||this.state===\"cancel\")&&this.emit(\"finalize\"),this.render(),(this.state===\"submit\"||this.state===\"cancel\")&&this.close()}close(){this.input.unpipe(),this.input.removeListener(\"keypress\",this.onKeypress),this.output.write(`\n`),v(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const u=R(this._prevFrame,process.stdout.columns,{hard:!0}).split(`\n`).length-1;this.output.write(l.move(-999,u*-1))}render(){const u=R(this._render(this)??\"\",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state===\"initial\")this.output.write(l.hide);else{const F=hD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const t=F[0];this.output.write(l.move(0,t)),this.output.write(m.lines(1));const s=u.split(`\n`);this.output.write(s[t]),this._prevFrame=u,this.output.write(l.move(0,s.length-t-1));return}else if(F&&F?.length>1){const t=F[0];this.output.write(l.move(0,t)),this.output.write(m.down());const s=u.split(`\n`).slice(t);this.output.write(s.join(`\n`)),this._prevFrame=u;return}this.output.write(m.down())}this.output.write(u),this.state===\"initial\"&&(this.state=\"active\"),this._prevFrame=u}}}class BD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on(\"value\",()=>{this.value=this._value}),this.on(\"confirm\",F=>{this.output.write(l.move(0,-1)),this.value=F,this.state=\"submit\",this.close()}),this.on(\"cursor\",()=>{this.value=!this.value})}}var cD=Object.defineProperty,AD=(e,u,F)=>u in e?cD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):e[u]=F,G=(e,u,F)=>(AD(e,typeof u!=\"symbol\"?u+\"\":u,F),F);class pD extends x{constructor(u){super(u,!1),G(this,\"options\"),G(this,\"cursor\",0);const{options:F}=u;this.options=Object.entries(F).flatMap(([t,s])=>[{value:t,group:!0,label:t},...s.map(C=>({...C,group:t}))]),this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:t})=>t===u.cursorAt),0),this.on(\"cursor\",t=>{switch(t){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case\"space\":this.toggleValue();break}})}getGroupItems(u){return this.options.filter(F=>F.group===u)}isGroupSelected(u){return this.getGroupItems(u).every(F=>this.value.includes(F.value))}toggleValue(){const u=this.options[this.cursor];if(u.group===!0){const F=u.value,t=this.getGroupItems(F);this.isGroupSelected(F)?this.value=this.value.filter(s=>t.findIndex(C=>C.value===s)===-1):this.value=[...this.value,...t.map(s=>s.value)],this.value=Array.from(new Set(this.value))}else{const F=this.value.includes(u.value);this.value=F?this.value.filter(t=>t!==u.value):[...this.value,u.value]}}}var fD=Object.defineProperty,gD=(e,u,F)=>u in e?fD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):e[u]=F,K=(e,u,F)=>(gD(e,typeof u!=\"symbol\"?u+\"\":u,F),F);let vD=class extends x{constructor(u){super(u,!1),K(this,\"options\"),K(this,\"cursor\",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on(\"key\",F=>{F===\"a\"&&this.toggleAll()}),this.on(\"cursor\",F=>{switch(F){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case\"space\":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value)}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value]}};var mD=Object.defineProperty,dD=(e,u,F)=>u in e?mD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):e[u]=F,Y=(e,u,F)=>(dD(e,typeof u!=\"symbol\"?u+\"\":u,F),F);class bD extends x{constructor({mask:u,...F}){super(F),Y(this,\"valueWithCursor\",\"\"),Y(this,\"_mask\",\"\\u2022\"),this._mask=u??\"\\u2022\",this.on(\"finalize\",()=>{this.valueWithCursor=this.masked}),this.on(\"value\",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.masked}${c.inverse(c.hidden(\"_\"))}`;else{const t=this.masked.slice(0,this.cursor),s=this.masked.slice(this.cursor);this.valueWithCursor=`${t}${c.inverse(s[0])}${s.slice(1)}`}})}get cursor(){return this._cursor}get masked(){return this.value.replaceAll(/./g,this._mask)}}var wD=Object.defineProperty,yD=(e,u,F)=>u in e?wD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):e[u]=F,Z=(e,u,F)=>(yD(e,typeof u!=\"symbol\"?u+\"\":u,F),F);let $D=class extends x{constructor(u){super(u,!1),Z(this,\"options\"),Z(this,\"cursor\",0),this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(\"cursor\",F=>{switch(F){case\"left\":case\"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case\"down\":case\"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var kD=Object.defineProperty,_D=(e,u,F)=>u in e?kD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):e[u]=F,H=(e,u,F)=>(_D(e,typeof u!=\"symbol\"?u+\"\":u,F),F);class SD extends x{constructor(u){super(u,!1),H(this,\"options\"),H(this,\"cursor\",0),this.options=u.options;const F=this.options.map(({value:[t]})=>t?.toLowerCase());this.cursor=Math.max(F.indexOf(u.initialValue),0),this.on(\"key\",t=>{if(!F.includes(t))return;const s=this.options.find(({value:[C]})=>C?.toLowerCase()===t);s&&(this.value=s.value,this.state=\"submit\",this.emit(\"submit\"))})}}var TD=Object.defineProperty,jD=(e,u,F)=>u in e?TD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:F}):e[u]=F,MD=(e,u,F)=>(jD(e,typeof u!=\"symbol\"?u+\"\":u,F),F);class PD extends x{constructor(u){super(u),MD(this,\"valueWithCursor\",\"\"),this.on(\"finalize\",()=>{this.value||(this.value=u.defaultValue),this.valueWithCursor=this.value}),this.on(\"value\",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${c.inverse(c.hidden(\"_\"))}`;else{const F=this.value.slice(0,this.cursor),t=this.value.slice(this.cursor);this.valueWithCursor=`${F}${c.inverse(t[0])}${t.slice(1)}`}})}get cursor(){return this._cursor}}const WD=globalThis.process.platform.startsWith(\"win\");function OD({input:e=$,output:u=k,overwrite:F=!0,hideCursor:t=!0}={}){const s=f.createInterface({input:e,output:u,prompt:\"\",tabSize:1});f.emitKeypressEvents(e,s),e.isTTY&&e.setRawMode(!0);const C=(D,{name:i})=>{if(String(D)===\"\u0003\"){t&&u.write(l.show),process.exit(0);return}if(!F)return;let n=i===\"return\"?0:-1,E=i===\"return\"?-1:0;f.moveCursor(u,n,E,()=>{f.clearLine(u,1,()=>{e.once(\"keypress\",C)})})};return t&&u.write(l.hide),e.once(\"keypress\",C),()=>{e.off(\"keypress\",C),t&&u.write(l.show),e.isTTY&&!WD&&e.setRawMode(!1),s.terminal=!1,s.close()}}export{BD as ConfirmPrompt,pD as GroupMultiSelectPrompt,vD as MultiSelectPrompt,bD as PasswordPrompt,x as Prompt,SD as SelectKeyPrompt,$D as SelectPrompt,PD as TextPrompt,OD as block,lD as isCancel};\n//# sourceMappingURL=index.mjs.map\n",
|
|
48
|
+
"import{TextPrompt as V,PasswordPrompt as j,ConfirmPrompt as N,SelectPrompt as k,SelectKeyPrompt as W,MultiSelectPrompt as D,GroupMultiSelectPrompt as L,isCancel as G,block as F}from\"@clack/core\";export{isCancel}from\"@clack/core\";import h from\"node:process\";import e from\"picocolors\";import{cursor as T,erase as A}from\"sisteransi\";function q(){return h.platform!==\"win32\"?h.env.TERM!==\"linux\":Boolean(h.env.CI)||Boolean(h.env.WT_SESSION)||Boolean(h.env.TERMINUS_SUBLIME)||h.env.ConEmuTask===\"{cmd::Cmder}\"||h.env.TERM_PROGRAM===\"Terminus-Sublime\"||h.env.TERM_PROGRAM===\"vscode\"||h.env.TERM===\"xterm-256color\"||h.env.TERM===\"alacritty\"||h.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const _=q(),o=(r,n)=>_?r:n,H=o(\"\\u25C6\",\"*\"),I=o(\"\\u25A0\",\"x\"),x=o(\"\\u25B2\",\"x\"),S=o(\"\\u25C7\",\"o\"),K=o(\"\\u250C\",\"T\"),a=o(\"\\u2502\",\"|\"),d=o(\"\\u2514\",\"\\u2014\"),b=o(\"\\u25CF\",\">\"),E=o(\"\\u25CB\",\" \"),C=o(\"\\u25FB\",\"[\\u2022]\"),w=o(\"\\u25FC\",\"[+]\"),M=o(\"\\u25FB\",\"[ ]\"),U=o(\"\\u25AA\",\"\\u2022\"),B=o(\"\\u2500\",\"-\"),Z=o(\"\\u256E\",\"+\"),z=o(\"\\u251C\",\"+\"),X=o(\"\\u256F\",\"+\"),J=o(\"\\u25CF\",\"\\u2022\"),Y=o(\"\\u25C6\",\"*\"),Q=o(\"\\u25B2\",\"!\"),ee=o(\"\\u25A0\",\"x\"),y=r=>{switch(r){case\"initial\":case\"active\":return e.cyan(H);case\"cancel\":return e.red(I);case\"error\":return e.yellow(x);case\"submit\":return e.green(S)}},te=r=>new V({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){const n=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,i=r.placeholder?e.inverse(r.placeholder[0])+e.dim(r.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),t=this.value?this.valueWithCursor:i;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${t}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(this.value||r.placeholder)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n`+e.gray(a):\"\"}`;default:return`${n}${e.cyan(a)} ${t}\n${e.cyan(d)}\n`}}}).prompt(),re=r=>new j({validate:r.validate,mask:r.mask??U,render(){const n=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,i=this.valueWithCursor,t=this.masked;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${t}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(t)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(t??\"\"))}${t?`\n`+e.gray(a):\"\"}`;default:return`${n}${e.cyan(a)} ${i}\n${e.cyan(d)}\n`}}}).prompt(),se=r=>{const n=r.active??\"Yes\",i=r.inactive??\"No\";return new N({active:n,inactive:i,initialValue:r.initialValue??!0,render(){const t=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,s=this.value?n:i;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${e.dim(s)}`;case\"cancel\":return`${t}${e.gray(a)} ${e.strikethrough(e.dim(s))}\n${e.gray(a)}`;default:return`${t}${e.cyan(a)} ${this.value?`${e.green(b)} ${n}`:`${e.dim(E)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(E)} ${e.dim(i)}`:`${e.green(b)} ${i}`}\n${e.cyan(d)}\n`}}}).prompt()},ie=r=>{const n=(t,s)=>{const c=t.label??String(t.value);return s===\"active\"?`${e.green(b)} ${c} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:s===\"selected\"?`${e.dim(c)}`:s===\"cancelled\"?`${e.strikethrough(e.dim(c))}`:`${e.dim(E)} ${e.dim(c)}`};let i=0;return new k({options:r.options,initialValue:r.initialValue,render(){const t=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"selected\")}`;case\"cancel\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(a)}`;default:{const s=r.maxItems===void 0?1/0:Math.max(r.maxItems,5);this.cursor>=i+s-3?i=Math.max(Math.min(this.cursor-s+3,this.options.length-s),0):this.cursor<i+2&&(i=Math.max(this.cursor-2,0));const c=s<this.options.length&&i>0,l=s<this.options.length&&i+s<this.options.length;return`${t}${e.cyan(a)} ${this.options.slice(i,i+s).map((u,m,$)=>m===0&&c?e.dim(\"...\"):m===$.length-1&&l?e.dim(\"...\"):n(u,m+i===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}}).prompt()},ne=r=>{const n=(i,t=\"inactive\")=>{const s=i.label??String(i.value);return t===\"selected\"?`${e.dim(s)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:t===\"active\"?`${e.bgCyan(e.gray(` ${i.value} `))} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:`${e.gray(e.bgWhite(e.inverse(` ${i.value} `)))} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`};return new W({options:r.options,initialValue:r.initialValue,render(){const i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${n(this.options.find(t=>t.value===this.value),\"selected\")}`;case\"cancel\":return`${i}${e.gray(a)} ${n(this.options[0],\"cancelled\")}\n${e.gray(a)}`;default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>n(t,s===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},ae=r=>{const n=(i,t)=>{const s=i.label??String(i.value);return t===\"active\"?`${e.cyan(C)} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"selected\"?`${e.green(w)} ${e.dim(s)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:t===\"active-selected\"?`${e.green(w)} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"submitted\"?`${e.dim(s)}`:`${e.dim(M)} ${e.dim(s)}`};return new D({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){let i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case\"cancel\":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,\"cancelled\")).join(e.dim(\", \"));return`${i}${e.gray(a)} ${t.trim()?`${t}\n${e.gray(a)}`:\"\"}`}case\"error\":{const t=this.error.split(`\n`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`\n`);return i+e.yellow(a)+\" \"+this.options.map((s,c)=>{const l=this.value.includes(s.value),u=c===this.cursor;return u&&l?n(s,\"active-selected\"):l?n(s,\"selected\"):n(s,u?\"active\":\"inactive\")}).join(`\n${e.yellow(a)} `)+`\n`+t+`\n`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>{const c=this.value.includes(t.value),l=s===this.cursor;return l&&c?n(t,\"active-selected\"):c?n(t,\"selected\"):n(t,l?\"active\":\"inactive\")}).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},ce=r=>{const n=(i,t,s=[])=>{const c=i.label??String(i.value),l=typeof i.group==\"string\",u=l&&(s[s.indexOf(i)+1]??{group:!0}),m=l&&u.group===!0,$=l?`${m?d:a} `:\"\";return t===\"active\"?`${e.dim($)}${e.cyan(C)} ${c} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"group-active\"?`${$}${e.cyan(C)} ${e.dim(c)}`:t===\"group-active-selected\"?`${$}${e.green(w)} ${e.dim(c)}`:t===\"selected\"?`${e.dim($)}${e.green(w)} ${e.dim(c)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(c))}`:t===\"active-selected\"?`${e.dim($)}${e.green(w)} ${c} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"submitted\"?`${e.dim(c)}`:`${e.dim($)}${e.dim(M)} ${e.dim(c)}`};return new L({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){let i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,\"submitted\")).join(e.dim(\", \"))}`;case\"cancel\":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,\"cancelled\")).join(e.dim(\", \"));return`${i}${e.gray(a)} ${t.trim()?`${t}\n${e.gray(a)}`:\"\"}`}case\"error\":{const t=this.error.split(`\n`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`\n`);return`${i}${e.yellow(a)} ${this.options.map((s,c,l)=>{const u=this.value.includes(s.value)||s.group===!0&&this.isGroupSelected(`${s.value}`),m=c===this.cursor;return!m&&typeof s.group==\"string\"&&this.options[this.cursor].value===s.group?n(s,u?\"group-active-selected\":\"group-active\",l):m&&u?n(s,\"active-selected\",l):u?n(s,\"selected\",l):n(s,m?\"active\":\"inactive\",l)}).join(`\n${e.yellow(a)} `)}\n${t}\n`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s,c)=>{const l=this.value.includes(t.value)||t.group===!0&&this.isGroupSelected(`${t.value}`),u=s===this.cursor;return!u&&typeof t.group==\"string\"&&this.options[this.cursor].value===t.group?n(t,l?\"group-active-selected\":\"group-active\",c):u&&l?n(t,\"active-selected\",c):l?n(t,\"selected\",c):n(t,u?\"active\":\"inactive\",c)}).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},R=r=>r.replace(me(),\"\"),le=(r=\"\",n=\"\")=>{const i=`\n${r}\n`.split(`\n`),t=R(n).length,s=Math.max(i.reduce((l,u)=>(u=R(u),u.length>l?u.length:l),0),t)+2,c=i.map(l=>`${e.gray(a)} ${e.dim(l)}${\" \".repeat(s-R(l).length)}${e.gray(a)}`).join(`\n`);process.stdout.write(`${e.gray(a)}\n${e.green(S)} ${e.reset(n)} ${e.gray(B.repeat(Math.max(s-t-1,1))+Z)}\n${c}\n${e.gray(z+B.repeat(s+2)+X)}\n`)},ue=(r=\"\")=>{process.stdout.write(`${e.gray(d)} ${e.red(r)}\n\n`)},oe=(r=\"\")=>{process.stdout.write(`${e.gray(K)} ${r}\n`)},$e=(r=\"\")=>{process.stdout.write(`${e.gray(a)}\n${e.gray(d)} ${r}\n\n`)},f={message:(r=\"\",{symbol:n=e.gray(a)}={})=>{const i=[`${e.gray(a)}`];if(r){const[t,...s]=r.split(`\n`);i.push(`${n} ${t}`,...s.map(c=>`${e.gray(a)} ${c}`))}process.stdout.write(`${i.join(`\n`)}\n`)},info:r=>{f.message(r,{symbol:e.blue(J)})},success:r=>{f.message(r,{symbol:e.green(Y)})},step:r=>{f.message(r,{symbol:e.green(S)})},warn:r=>{f.message(r,{symbol:e.yellow(Q)})},warning:r=>{f.warn(r)},error:r=>{f.message(r,{symbol:e.red(ee)})}},de=()=>{const r=_?[\"\\u25D2\",\"\\u25D0\",\"\\u25D3\",\"\\u25D1\"]:[\"\\u2022\",\"o\",\"O\",\"0\"],n=_?80:120;let i,t,s=!1,c=\"\";const l=(v=\"\")=>{s=!0,i=F(),c=v.replace(/\\.+$/,\"\"),process.stdout.write(`${e.gray(a)}\n`);let g=0,p=0;t=setInterval(()=>{const O=e.magenta(r[g]),P=\".\".repeat(Math.floor(p)).slice(0,3);process.stdout.write(T.move(-999,0)),process.stdout.write(A.down(1)),process.stdout.write(`${O} ${c}${P}`),g=g+1<r.length?g+1:0,p=p<r.length?p+.125:0},n)},u=(v=\"\",g=0)=>{c=v??c,s=!1,clearInterval(t);const p=g===0?e.green(S):g===1?e.red(I):e.red(x);process.stdout.write(T.move(-999,0)),process.stdout.write(A.down(1)),process.stdout.write(`${p} ${c}\n`),i()},m=(v=\"\")=>{c=v??c},$=v=>{const g=v>1?\"Something went wrong\":\"Canceled\";s&&u(g,v)};return process.on(\"uncaughtExceptionMonitor\",()=>$(2)),process.on(\"unhandledRejection\",()=>$(2)),process.on(\"SIGINT\",()=>$(1)),process.on(\"SIGTERM\",()=>$(1)),process.on(\"exit\",$),{start:l,stop:u,message:m}};function me(){const r=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(r,\"g\")}const he=async(r,n)=>{const i={},t=Object.keys(r);for(const s of t){const c=r[s],l=await c({results:i})?.catch(u=>{throw u});if(typeof n?.onCancel==\"function\"&&G(l)){i[s]=\"canceled\",n.onCancel({results:i});continue}i[s]=l}return i};export{ue as cancel,se as confirm,he as group,ce as groupMultiselect,oe as intro,f as log,ae as multiselect,le as note,$e as outro,re as password,ie as select,ne as selectKey,de as spinner,te as text};\n",
|
|
49
|
+
"const CI_ENV_VARS = [\n 'CI',\n 'CONTINUOUS_INTEGRATION',\n 'GITHUB_ACTIONS',\n 'GITLAB_CI',\n 'JENKINS_URL',\n 'TRAVIS',\n 'CIRCLECI',\n 'BUILDKITE',\n 'TF_BUILD',\n 'TEAMCITY_VERSION',\n 'APPVEYOR',\n 'NETLIFY',\n 'VERCEL',\n] as const;\n\nexport function isInteractive(): boolean {\n return process.stdout.isTTY === true;\n}\n\nexport function isCI(): boolean {\n return CI_ENV_VARS.some((key) => {\n const value = process.env[key];\n return value !== undefined && value !== '' && value !== '0' && value !== 'false';\n });\n}\n",
|
|
50
|
+
"import * as clack from '@clack/prompts';\nimport { isInteractive } from './env';\n\nexport async function promptText(\n message: string,\n options?: { placeholder?: string },\n): Promise<string> {\n const result = await clack.text({\n message,\n placeholder: options?.placeholder,\n });\n if (clack.isCancel(result)) {\n throw new Error('Operation cancelled');\n }\n // 边界条件:空输入检查\n const trimmed = (result as string).trim();\n if (!trimmed) {\n throw new Error('Input cannot be empty');\n }\n return trimmed;\n}\n\nexport async function promptConfirm(message: string): Promise<boolean> {\n const result = await clack.confirm({\n message,\n });\n if (clack.isCancel(result)) {\n throw new Error('Operation cancelled');\n }\n return result;\n}\n\nexport async function promptOrFail(message: string, _config: Record<string, unknown>): Promise<string> {\n if (!isInteractive()) {\n throw new Error(\n `Non-interactive mode: cannot prompt for \"${message}\". ` +\n 'Please provide the required value via command-line flags or environment variables.',\n );\n }\n return promptText(message);\n}\n",
|
|
51
|
+
"import type { Config } from '../config/schema';\nimport { readConfigFile, writeConfigFile } from '../config/loader';\nimport { promptText } from '../utils/prompt';\nimport { isInteractive } from '../utils/env';\nimport { maskApiKey } from '../utils/sanitize';\nimport { inferBaseUrlFromKey } from '../auth/resolver';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\nimport { t } from '../i18n';\n\nexport async function ensureAuth(config: Config): Promise<void> {\n if (config.apiKey || config.fileApiKey) return;\n\n const envKey = process.env.MIMO_API_KEY;\n if (envKey) return;\n\n if (!isInteractive()) {\n throw new CLIError(\n t('auth.noCreds'),\n ExitCode.AUTH,\n t('auth.noCredsHint'),\n );\n }\n\n process.stderr.write('\\n Not logged in.\\n');\n process.stderr.write(' mimo auth login Log in with an API key\\n');\n process.stderr.write(' mimo auth login --api-key Save an API key directly\\n\\n');\n process.exit(ExitCode.AUTH);\n}\n\nexport async function persistApiKey(config: Config, key: string): Promise<void> {\n const data: Record<string, unknown> = { ...(readConfigFile() as Record<string, unknown>), api_key: key };\n\n // 根据 API Key 前缀自动设置对应的 base URL(切换 Key 类型时始终更新)\n const inferredBaseUrl = inferBaseUrlFromKey(key);\n if (inferredBaseUrl) {\n // TokenPlan Key:自动设置对应的 base URL\n data.base_url = inferredBaseUrl;\n } else {\n // 按量计费 Key:始终设置为标准 API URL\n data.base_url = 'https://api.xiaomimimo.com/v1';\n }\n\n await writeConfigFile(data);\n config.fileApiKey = key;\n\n // 输出时使用脱敏格式,避免泄露完整 API Key\n const keyType = key.startsWith('tp-') ? 'TokenPlan' : '按量计费';\n process.stderr.write(`${t('auth.keySaved')} ${config.configPath ?? '~/.mimo/config.json'} (${maskApiKey(key)}, ${keyType})\\n`);\n if (inferredBaseUrl) {\n process.stderr.write(`${t('auth.baseUrlAuto')}${inferredBaseUrl}\\n`);\n }\n}\n\nexport async function promptApiKey(): Promise<string> {\n process.stderr.write('\\n ' + t('auth.promptTitle') + '\\n');\n process.stderr.write(' ' + t('auth.promptPayKey') + '\\n');\n process.stderr.write(' ' + t('auth.promptTpKey') + '\\n\\n');\n const input = await promptText(t('auth.promptLabel'));\n if (!input) throw new CLIError(t('auth.keyRequired'), ExitCode.AUTH);\n return input;\n}\n",
|
|
52
|
+
"export const VERSION = process.env.CLI_VERSION ?? '0.1.0';\n",
|
|
53
|
+
"import { defineCommand } from '../../command';\nimport type { Config } from '../../config/schema';\nimport { persistApiKey, promptApiKey } from '../../auth/setup';\nimport { isInteractive } from '../../utils/env';\nimport { maskApiKey } from '../../utils/sanitize';\nimport { CLIError } from '../../errors/base';\nimport { ExitCode } from '../../errors/codes';\nimport { t } from '../../i18n';\n\nexport const authLoginCommand = defineCommand({\n name: 'auth login',\n description: 'cmd.authLogin.desc',\n usage: 'mimo auth login [--api-key <key>]',\n options: [\n { flag: '--api-key <key>', description: 'API key to save (skips interactive prompt)' },\n ],\n examples: [\n 'mimo auth login',\n 'mimo auth login --api-key sk-xxxxx # 按量计费 Key',\n 'mimo auth login --api-key tp-xxxxx # TokenPlan Key',\n ],\n async run(config: Config, flags: Record<string, unknown>): Promise<void> {\n let apiKey = flags.apiKey as string | undefined;\n\n if (!apiKey) {\n if (!isInteractive()) {\n throw new CLIError(\n t('auth.noKeyProvided'),\n ExitCode.AUTH,\n t('auth.noKeyHint'),\n );\n }\n apiKey = await promptApiKey();\n }\n\n if (!apiKey || apiKey.trim().length === 0) {\n throw new CLIError(t('auth.keyEmpty'), ExitCode.AUTH);\n }\n\n await persistApiKey(config, apiKey.trim());\n },\n});\n",
|
|
54
|
+
"import { defineCommand } from '../../command';\nimport type { Config } from '../../config/schema';\nimport { resolveCredential, inferBaseUrlFromKey } from '../../auth/resolver';\nimport { maskApiKey } from '../../utils/sanitize';\nimport { formatOutput } from '../../output/formatter';\n\nexport const authStatusCommand = defineCommand({\n name: 'auth status',\n description: 'cmd.authStatus.desc',\n usage: 'mimo auth status',\n async run(config: Config, _flags: Record<string, unknown>): Promise<void> {\n try {\n const cred = resolveCredential(config);\n const keyType = cred.token.startsWith('tp-') ? 'TokenPlan' : '按量计费';\n const inferredBaseUrl = inferBaseUrlFromKey(cred.token);\n const data = {\n authenticated: true,\n method: cred.method,\n apiKey: maskApiKey(cred.token),\n keyType,\n baseUrl: config.baseUrl || inferredBaseUrl || 'https://api.xiaomimimo.com/v1',\n source: cred.source,\n configPath: config.configPath,\n };\n console.log(formatOutput(data, config));\n } catch (err) {\n // 凭证解析失败时记录原因,帮助用户排查认证问题\n if (config.verbose) {\n process.stderr.write(`Debug: credential resolution failed — ${err instanceof Error ? err.message : String(err)}\\n`);\n }\n const data = {\n authenticated: false,\n method: null,\n apiKey: null,\n keyType: null,\n baseUrl: config.baseUrl || 'https://api.xiaomimimo.com/v1',\n source: null,\n configPath: config.configPath,\n };\n console.log(formatOutput(data, config));\n }\n },\n});\n",
|
|
55
|
+
"import { defineCommand } from '../../command';\nimport type { Config } from '../../config/schema';\nimport { readConfigFile, writeConfigFile } from '../../config/loader';\nimport { t } from '../../i18n';\n\nexport const authLogoutCommand = defineCommand({\n name: 'auth logout',\n description: 'cmd.authLogout.desc',\n usage: 'mimo auth logout',\n async run(config: Config, _flags: Record<string, unknown>): Promise<void> {\n const data = readConfigFile() as Record<string, unknown>;\n\n if (!data.api_key) {\n process.stderr.write(t('auth.logoutNoKey') + '\\n');\n return;\n }\n\n delete data.api_key;\n await writeConfigFile(data);\n config.fileApiKey = undefined;\n process.stderr.write(t('auth.logoutDone') + '\\n');\n },\n});\n",
|
|
56
|
+
"import { defineCommand } from '../../command';\nimport type { Config } from '../../config/schema';\nimport { readConfigFile } from '../../config/loader';\nimport { maskApiKey } from '../../utils/sanitize';\nimport { formatOutput } from '../../output/formatter';\nimport { t } from '../../i18n';\n\n// 需要脱敏的敏感配置字段\nconst SENSITIVE_KEYS = new Set(['api_key', 'apiKey', 'api-key']);\n\nexport const configShowCommand = defineCommand({\n name: 'config show',\n description: 'cmd.configShow.desc',\n usage: 'mimo config show',\n async run(config: Config, _flags: Record<string, unknown>): Promise<void> {\n const file = readConfigFile();\n const data: Record<string, unknown> = {\n baseUrl: config.baseUrl,\n output: config.output,\n timeout: config.timeout,\n defaultModel: config.defaultModel ?? t('general.notSet'),\n configPath: config.configPath,\n };\n\n if (file.api_key) {\n data.apiKey = maskApiKey(file.api_key);\n } else {\n data.apiKey = t('general.notSet');\n }\n\n if (file.base_url) {\n data.fileBaseUrl = file.base_url;\n }\n\n // 对文件中的其他字段也做敏感信息脱敏\n for (const [k, v] of Object.entries(file)) {\n if (k !== 'api_key' && k !== 'base_url' && SENSITIVE_KEYS.has(k) && typeof v === 'string') {\n data[k] = maskApiKey(v);\n }\n }\n\n console.log(formatOutput(data, config));\n },\n});\n",
|
|
57
|
+
"import { defineCommand } from '../../command';\nimport type { Config } from '../../config/schema';\nimport { readConfigFile, writeConfigFile } from '../../config/loader';\nimport { maskApiKey } from '../../utils/sanitize';\nimport { CLIError } from '../../errors/base';\nimport { ExitCode } from '../../errors/codes';\nimport { t } from '../../i18n';\n\nconst ALLOWED_KEYS = new Set([\n 'api_key',\n 'base_url',\n 'output',\n 'timeout',\n 'default_model',\n 'language',\n]);\n\n// 允许的 key 格式:只包含字母、数字、下划线\nconst KEY_PATTERN = /^[a-zA-Z0-9_]+$/;\n\nexport const configSetCommand = defineCommand({\n name: 'config set',\n description: 'cmd.configSet.desc',\n usage: 'mimo config set --key <key> --value <value>',\n options: [\n { flag: '--key <key>', description: 'Config key to set', required: true },\n { flag: '--value <value>', description: 'Config value to set', required: true },\n ],\n examples: [\n 'mimo config set --key base_url --value https://api.xiaomimimo.com/v1',\n 'mimo config set --key output --value json',\n 'mimo config set --key timeout --value 60',\n 'mimo config set --key default_model --value MiMo-7B-RL',\n ],\n async run(_config: Config, flags: Record<string, unknown>): Promise<void> {\n const key = flags.key as string | undefined;\n const value = flags.value as string | undefined;\n\n if (!key) {\n throw new CLIError(t('config.keyRequired'), ExitCode.USAGE);\n }\n\n // 输入验证:拒绝包含特殊字符的 key\n if (!KEY_PATTERN.test(key)) {\n throw new CLIError(\n t('config.invalidKey') + '\"' + key + '\"',\n ExitCode.INVALID_INPUT,\n t('config.invalidKeyChars'),\n );\n }\n\n if (!ALLOWED_KEYS.has(key)) {\n throw new CLIError(\n t('config.invalidKey') + '\"' + key + '\"',\n ExitCode.USAGE,\n t('config.validKeys') + Array.from(ALLOWED_KEYS).join(', '),\n );\n }\n\n if (value === undefined || value === '') {\n throw new CLIError(t('config.valueRequired'), ExitCode.USAGE);\n }\n\n const data = readConfigFile() as Record<string, unknown>;\n\n // Type coercion for known keys\n if (key === 'timeout') {\n const num = Number(value);\n if (!Number.isFinite(num) || num <= 0) {\n throw new CLIError(t('config.setTimeout'), ExitCode.USAGE);\n }\n data[key] = num;\n } else if (key === 'output' && value !== 'text' && value !== 'json') {\n throw new CLIError(t('config.setOutput'), ExitCode.USAGE);\n } else {\n data[key] = value;\n }\n\n await writeConfigFile(data);\n // 输出时对敏感字段做脱敏处理\n const displayValue = key === 'api_key' ? maskApiKey(String(value)) : value;\n process.stderr.write(t('config.setDone') + ' ' + key + ' = ' + displayValue + '\\n');\n },\n});\n",
|
|
58
|
+
"import { defineCommand } from '../command';\nimport { t } from '../i18n';\n\nexport const updateCommand = defineCommand({\n name: 'update',\n description: 'cmd.update.desc',\n usage: 'mimo update',\n async run(): Promise<void> {\n process.stderr.write(t('update.notImplemented'));\n },\n});\n",
|
|
59
|
+
"import { defineCommand } from '../command';\nimport { registry } from '../registry';\n\nexport const helpCommand = defineCommand({\n name: 'help',\n description: 'cmd.help.desc',\n usage: 'mimo help [command]',\n options: [\n { flag: '--command <path>', description: 'Command path to get help for (e.g. \"auth login\")' },\n ],\n async run(_config: unknown, flags: Record<string, unknown>): Promise<void> {\n const commandPath = typeof flags.command === 'string'\n ? flags.command.split(' ')\n : [];\n registry.printHelp(commandPath);\n },\n});\n",
|
|
60
|
+
"import { defineCommand } from '../command';\nimport type { Config } from '../config/schema';\nimport { readConfigFile, writeConfigFile } from '../config/loader';\nimport { setLocale, getLocale, t } from '../i18n';\n\nexport const languageCommand = defineCommand({\n name: 'language',\n description: 'cmd.language.desc',\n usage: 'mimo language <zh|en>',\n options: [],\n examples: [\n 'mimo language zh',\n 'mimo language en',\n ],\n async run(config: Config, flags: Record<string, unknown>): Promise<void> {\n const positionalArgs = flags._positional as string[] | undefined;\n const lang = positionalArgs?.[0];\n\n if (!lang) {\n // 显示当前语言\n process.stderr.write(t('language.current') + getLocale() + '\\n');\n return;\n }\n\n if (lang !== 'zh' && lang !== 'en') {\n process.stderr.write(t('language.invalid') + '\\n');\n process.stderr.write(t('language.hint') + '\\n');\n process.exit(2);\n }\n\n // 保存到配置文件\n const data = readConfigFile() as Record<string, unknown>;\n data.language = lang;\n await writeConfigFile(data);\n\n // 立即切换当前会话语言\n setLocale(lang as 'zh' | 'en');\n\n process.stderr.write(t('language.changed') + '\\n');\n },\n});\n",
|
|
61
|
+
"export const default_format = 'RFC3986';\nexport const formatters = {\n RFC1738: (v) => String(v).replace(/%20/g, '+'),\n RFC3986: (v) => String(v),\n};\nexport const RFC1738 = 'RFC1738';\nexport const RFC3986 = 'RFC3986';\n//# sourceMappingURL=formats.mjs.map",
|
|
62
|
+
"import { RFC1738 } from \"./formats.mjs\";\nconst has = Object.prototype.hasOwnProperty;\nconst is_array = Array.isArray;\nconst hex_table = (() => {\n const array = [];\n for (let i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n return array;\n})();\nfunction compact_queue(queue) {\n while (queue.length > 1) {\n const item = queue.pop();\n if (!item)\n continue;\n const obj = item.obj[item.prop];\n if (is_array(obj)) {\n const compacted = [];\n for (let j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n // @ts-ignore\n item.obj[item.prop] = compacted;\n }\n }\n}\nfunction array_to_object(source, options) {\n const obj = options && options.plainObjects ? Object.create(null) : {};\n for (let i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n return obj;\n}\nexport function merge(target, source, options = {}) {\n if (!source) {\n return target;\n }\n if (typeof source !== 'object') {\n if (is_array(target)) {\n target.push(source);\n }\n else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) ||\n !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n }\n else {\n return [target, source];\n }\n return target;\n }\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n let mergeTarget = target;\n if (is_array(target) && !is_array(source)) {\n // @ts-ignore\n mergeTarget = array_to_object(target, options);\n }\n if (is_array(target) && is_array(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n const targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n }\n else {\n target.push(item);\n }\n }\n else {\n target[i] = item;\n }\n });\n return target;\n }\n return Object.keys(source).reduce(function (acc, key) {\n const value = source[key];\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n }\n else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n}\nexport function assign_single_source(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n}\nexport function decode(str, _, charset) {\n const strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n }\n catch (e) {\n return strWithoutPlus;\n }\n}\nconst limit = 1024;\nexport const encode = (str, _defaultEncoder, charset, _kind, format) => {\n // This code was originally written by Brian White for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n let string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n }\n else if (typeof str !== 'string') {\n string = String(str);\n }\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n let out = '';\n for (let j = 0; j < string.length; j += limit) {\n const segment = string.length >= limit ? string.slice(j, j + limit) : string;\n const arr = [];\n for (let i = 0; i < segment.length; ++i) {\n let c = segment.charCodeAt(i);\n if (c === 0x2d || // -\n c === 0x2e || // .\n c === 0x5f || // _\n c === 0x7e || // ~\n (c >= 0x30 && c <= 0x39) || // 0-9\n (c >= 0x41 && c <= 0x5a) || // a-z\n (c >= 0x61 && c <= 0x7a) || // A-Z\n (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n if (c < 0x80) {\n arr[arr.length] = hex_table[c];\n continue;\n }\n if (c < 0x800) {\n arr[arr.length] = hex_table[0xc0 | (c >> 6)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n if (c < 0xd800 || c >= 0xe000) {\n arr[arr.length] =\n hex_table[0xe0 | (c >> 12)] + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];\n continue;\n }\n i += 1;\n c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));\n arr[arr.length] =\n hex_table[0xf0 | (c >> 18)] +\n hex_table[0x80 | ((c >> 12) & 0x3f)] +\n hex_table[0x80 | ((c >> 6) & 0x3f)] +\n hex_table[0x80 | (c & 0x3f)];\n }\n out += arr.join('');\n }\n return out;\n};\nexport function compact(value) {\n const queue = [{ obj: { o: value }, prop: 'o' }];\n const refs = [];\n for (let i = 0; i < queue.length; ++i) {\n const item = queue[i];\n // @ts-ignore\n const obj = item.obj[item.prop];\n const keys = Object.keys(obj);\n for (let j = 0; j < keys.length; ++j) {\n const key = keys[j];\n const val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n compact_queue(queue);\n return value;\n}\nexport function is_regexp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nexport function is_buffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n}\nexport function combine(a, b) {\n return [].concat(a, b);\n}\nexport function maybe_map(val, fn) {\n if (is_array(val)) {\n const mapped = [];\n for (let i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n}\n//# sourceMappingURL=utils.mjs.map",
|
|
63
|
+
"import { encode, is_buffer, maybe_map } from \"./utils.mjs\";\nimport { default_format, formatters } from \"./formats.mjs\";\nconst has = Object.prototype.hasOwnProperty;\nconst array_prefix_generators = {\n brackets(prefix) {\n return String(prefix) + '[]';\n },\n comma: 'comma',\n indices(prefix, key) {\n return String(prefix) + '[' + key + ']';\n },\n repeat(prefix) {\n return String(prefix);\n },\n};\nconst is_array = Array.isArray;\nconst push = Array.prototype.push;\nconst push_to_array = function (arr, value_or_array) {\n push.apply(arr, is_array(value_or_array) ? value_or_array : [value_or_array]);\n};\nconst to_ISO = Date.prototype.toISOString;\nconst defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: encode,\n encodeValuesOnly: false,\n format: default_format,\n formatter: formatters[default_format],\n /** @deprecated */\n indices: false,\n serializeDate(date) {\n return to_ISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false,\n};\nfunction is_non_nullish_primitive(v) {\n return (typeof v === 'string' ||\n typeof v === 'number' ||\n typeof v === 'boolean' ||\n typeof v === 'symbol' ||\n typeof v === 'bigint');\n}\nconst sentinel = {};\nfunction inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) {\n let obj = object;\n let tmp_sc = sideChannel;\n let step = 0;\n let find_flag = false;\n while ((tmp_sc = tmp_sc.get(sentinel)) !== void undefined && !find_flag) {\n // Where object last appeared in the ref tree\n const pos = tmp_sc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n }\n else {\n find_flag = true; // Break while\n }\n }\n if (typeof tmp_sc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n }\n else if (obj instanceof Date) {\n obj = serializeDate?.(obj);\n }\n else if (generateArrayPrefix === 'comma' && is_array(obj)) {\n obj = maybe_map(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate?.(value);\n }\n return value;\n });\n }\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ?\n // @ts-expect-error\n encoder(prefix, defaults.encoder, charset, 'key', format)\n : prefix;\n }\n obj = '';\n }\n if (is_non_nullish_primitive(obj) || is_buffer(obj)) {\n if (encoder) {\n const key_value = encodeValuesOnly ? prefix\n // @ts-expect-error\n : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [\n formatter?.(key_value) +\n '=' +\n // @ts-expect-error\n formatter?.(encoder(obj, defaults.encoder, charset, 'value', format)),\n ];\n }\n return [formatter?.(prefix) + '=' + formatter?.(String(obj))];\n }\n const values = [];\n if (typeof obj === 'undefined') {\n return values;\n }\n let obj_keys;\n if (generateArrayPrefix === 'comma' && is_array(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n // @ts-expect-error values only\n obj = maybe_map(obj, encoder);\n }\n obj_keys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n }\n else if (is_array(filter)) {\n obj_keys = filter;\n }\n else {\n const keys = Object.keys(obj);\n obj_keys = sort ? keys.sort(sort) : keys;\n }\n const encoded_prefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n const adjusted_prefix = commaRoundTrip && is_array(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;\n if (allowEmptyArrays && is_array(obj) && obj.length === 0) {\n return adjusted_prefix + '[]';\n }\n for (let j = 0; j < obj_keys.length; ++j) {\n const key = obj_keys[j];\n const value = \n // @ts-ignore\n typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n if (skipNulls && value === null) {\n continue;\n }\n // @ts-ignore\n const encoded_key = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n const key_prefix = is_array(obj) ?\n typeof generateArrayPrefix === 'function' ?\n generateArrayPrefix(adjusted_prefix, encoded_key)\n : adjusted_prefix\n : adjusted_prefix + (allowDots ? '.' + encoded_key : '[' + encoded_key + ']');\n sideChannel.set(object, step);\n const valueSideChannel = new WeakMap();\n valueSideChannel.set(sentinel, sideChannel);\n push_to_array(values, inner_stringify(value, key_prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, \n // @ts-ignore\n generateArrayPrefix === 'comma' && encodeValuesOnly && is_array(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));\n }\n return values;\n}\nfunction normalize_stringify_options(opts = defaults) {\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n const charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n let format = default_format;\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n const formatter = formatters[format];\n let filter = defaults.filter;\n if (typeof opts.filter === 'function' || is_array(opts.filter)) {\n filter = opts.filter;\n }\n let arrayFormat;\n if (opts.arrayFormat && opts.arrayFormat in array_prefix_generators) {\n arrayFormat = opts.arrayFormat;\n }\n else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n }\n else {\n arrayFormat = defaults.arrayFormat;\n }\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n const allowDots = typeof opts.allowDots === 'undefined' ?\n !!opts.encodeDotInKeys === true ?\n true\n : defaults.allowDots\n : !!opts.allowDots;\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n // @ts-ignore\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: !!opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n // @ts-ignore\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n };\n}\nexport function stringify(object, opts = {}) {\n let obj = object;\n const options = normalize_stringify_options(opts);\n let obj_keys;\n let filter;\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n }\n else if (is_array(options.filter)) {\n filter = options.filter;\n obj_keys = filter;\n }\n const keys = [];\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n const generateArrayPrefix = array_prefix_generators[options.arrayFormat];\n const commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n if (!obj_keys) {\n obj_keys = Object.keys(obj);\n }\n if (options.sort) {\n obj_keys.sort(options.sort);\n }\n const sideChannel = new WeakMap();\n for (let i = 0; i < obj_keys.length; ++i) {\n const key = obj_keys[i];\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n push_to_array(keys, inner_stringify(obj[key], key, \n // @ts-expect-error\n generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel));\n }\n const joined = keys.join(options.delimiter);\n let prefix = options.addQueryPrefix === true ? '?' : '';\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n }\n else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n return joined.length > 0 ? prefix + joined : '';\n}\n//# sourceMappingURL=stringify.mjs.map",
|
|
64
|
+
"export const VERSION = '4.104.0'; // x-release-please-version\n//# sourceMappingURL=version.mjs.map",
|
|
65
|
+
"export let auto = false;\nexport let kind = undefined;\nexport let fetch = undefined;\nexport let Request = undefined;\nexport let Response = undefined;\nexport let Headers = undefined;\nexport let FormData = undefined;\nexport let Blob = undefined;\nexport let File = undefined;\nexport let ReadableStream = undefined;\nexport let getMultipartRequestOptions = undefined;\nexport let getDefaultAgent = undefined;\nexport let fileFromPath = undefined;\nexport let isFsReadStream = undefined;\nexport function setShims(shims, options = { auto: false }) {\n if (auto) {\n throw new Error(`you must \\`import 'openai/shims/${shims.kind}'\\` before importing anything else from openai`);\n }\n if (kind) {\n throw new Error(`can't \\`import 'openai/shims/${shims.kind}'\\` after \\`import 'openai/shims/${kind}'\\``);\n }\n auto = options.auto;\n kind = shims.kind;\n fetch = shims.fetch;\n Request = shims.Request;\n Response = shims.Response;\n Headers = shims.Headers;\n FormData = shims.FormData;\n Blob = shims.Blob;\n File = shims.File;\n ReadableStream = shims.ReadableStream;\n getMultipartRequestOptions = shims.getMultipartRequestOptions;\n getDefaultAgent = shims.getDefaultAgent;\n fileFromPath = shims.fileFromPath;\n isFsReadStream = shims.isFsReadStream;\n}\n//# sourceMappingURL=registry.mjs.map",
|
|
66
|
+
"import * as nf from 'node-fetch';\nimport * as fd from 'formdata-node';\nimport KeepAliveAgent from 'agentkeepalive';\nimport { AbortController as AbortControllerPolyfill } from 'abort-controller';\nimport { ReadStream as FsReadStream } from 'node:fs';\nimport { FormDataEncoder } from 'form-data-encoder';\nimport { Readable } from 'node:stream';\nimport { MultipartBody } from \"./MultipartBody.mjs\";\nimport { ReadableStream } from 'node:stream/web';\nlet fileFromPathWarned = false;\nasync function fileFromPath(path, ...args) {\n // this import fails in environments that don't handle export maps correctly, like old versions of Jest\n const { fileFromPath: _fileFromPath } = await import('formdata-node/file-from-path');\n if (!fileFromPathWarned) {\n console.warn(`fileFromPath is deprecated; use fs.createReadStream(${JSON.stringify(path)}) instead`);\n fileFromPathWarned = true;\n }\n // @ts-ignore\n return await _fileFromPath(path, ...args);\n}\nconst defaultHttpAgent = new KeepAliveAgent({ keepAlive: true, timeout: 5 * 60 * 1000 });\nconst defaultHttpsAgent = new KeepAliveAgent.HttpsAgent({ keepAlive: true, timeout: 5 * 60 * 1000 });\nasync function getMultipartRequestOptions(form, opts) {\n const encoder = new FormDataEncoder(form);\n const readable = Readable.from(encoder);\n const body = new MultipartBody(readable);\n const headers = {\n ...opts.headers,\n ...encoder.headers,\n 'Content-Length': encoder.contentLength,\n };\n return { ...opts, body: body, headers };\n}\nexport function getRuntime() {\n // Polyfill global object if needed.\n if (typeof AbortController === 'undefined') {\n // @ts-expect-error (the types are subtly different, but compatible in practice)\n globalThis.AbortController = AbortControllerPolyfill;\n }\n return {\n kind: 'node',\n fetch: nf.default,\n Request: nf.Request,\n Response: nf.Response,\n Headers: nf.Headers,\n FormData: fd.FormData,\n Blob: fd.Blob,\n File: fd.File,\n ReadableStream,\n getMultipartRequestOptions,\n getDefaultAgent: (url) => (url.startsWith('https') ? defaultHttpsAgent : defaultHttpAgent),\n fileFromPath,\n isFsReadStream: (value) => value instanceof FsReadStream,\n };\n}\n//# sourceMappingURL=node-runtime.mjs.map",
|
|
67
|
+
"var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FormData_instances, _FormData_entries, _FormData_setEntry;\nimport { inspect } from \"util\";\nimport { File } from \"./File.js\";\nimport { isFile } from \"./isFile.js\";\nimport { isBlob } from \"./isBlob.js\";\nimport { isFunction } from \"./isFunction.js\";\nimport { deprecateConstructorEntries } from \"./deprecateConstructorEntries.js\";\nexport class FormData {\n constructor(entries) {\n _FormData_instances.add(this);\n _FormData_entries.set(this, new Map());\n if (entries) {\n deprecateConstructorEntries();\n entries.forEach(({ name, value, fileName }) => this.append(name, value, fileName));\n }\n }\n static [(_FormData_entries = new WeakMap(), _FormData_instances = new WeakSet(), Symbol.hasInstance)](value) {\n return Boolean(value\n && isFunction(value.constructor)\n && value[Symbol.toStringTag] === \"FormData\"\n && isFunction(value.append)\n && isFunction(value.set)\n && isFunction(value.get)\n && isFunction(value.getAll)\n && isFunction(value.has)\n && isFunction(value.delete)\n && isFunction(value.entries)\n && isFunction(value.values)\n && isFunction(value.keys)\n && isFunction(value[Symbol.iterator])\n && isFunction(value.forEach));\n }\n append(name, value, fileName) {\n __classPrivateFieldGet(this, _FormData_instances, \"m\", _FormData_setEntry).call(this, {\n name,\n fileName,\n append: true,\n rawValue: value,\n argsLength: arguments.length\n });\n }\n set(name, value, fileName) {\n __classPrivateFieldGet(this, _FormData_instances, \"m\", _FormData_setEntry).call(this, {\n name,\n fileName,\n append: false,\n rawValue: value,\n argsLength: arguments.length\n });\n }\n get(name) {\n const field = __classPrivateFieldGet(this, _FormData_entries, \"f\").get(String(name));\n if (!field) {\n return null;\n }\n return field[0];\n }\n getAll(name) {\n const field = __classPrivateFieldGet(this, _FormData_entries, \"f\").get(String(name));\n if (!field) {\n return [];\n }\n return field.slice();\n }\n has(name) {\n return __classPrivateFieldGet(this, _FormData_entries, \"f\").has(String(name));\n }\n delete(name) {\n __classPrivateFieldGet(this, _FormData_entries, \"f\").delete(String(name));\n }\n *keys() {\n for (const key of __classPrivateFieldGet(this, _FormData_entries, \"f\").keys()) {\n yield key;\n }\n }\n *entries() {\n for (const name of this.keys()) {\n const values = this.getAll(name);\n for (const value of values) {\n yield [name, value];\n }\n }\n }\n *values() {\n for (const [, value] of this) {\n yield value;\n }\n }\n [(_FormData_setEntry = function _FormData_setEntry({ name, rawValue, append, fileName, argsLength }) {\n const methodName = append ? \"append\" : \"set\";\n if (argsLength < 2) {\n throw new TypeError(`Failed to execute '${methodName}' on 'FormData': `\n + `2 arguments required, but only ${argsLength} present.`);\n }\n name = String(name);\n let value;\n if (isFile(rawValue)) {\n value = fileName === undefined\n ? rawValue\n : new File([rawValue], fileName, {\n type: rawValue.type,\n lastModified: rawValue.lastModified\n });\n }\n else if (isBlob(rawValue)) {\n value = new File([rawValue], fileName === undefined ? \"blob\" : fileName, {\n type: rawValue.type\n });\n }\n else if (fileName) {\n throw new TypeError(`Failed to execute '${methodName}' on 'FormData': `\n + \"parameter 2 is not of type 'Blob'.\");\n }\n else {\n value = String(rawValue);\n }\n const values = __classPrivateFieldGet(this, _FormData_entries, \"f\").get(name);\n if (!values) {\n return void __classPrivateFieldGet(this, _FormData_entries, \"f\").set(name, [value]);\n }\n if (!append) {\n return void __classPrivateFieldGet(this, _FormData_entries, \"f\").set(name, [value]);\n }\n values.push(value);\n }, Symbol.iterator)]() {\n return this.entries();\n }\n forEach(callback, thisArg) {\n for (const [name, value] of this) {\n callback.call(thisArg, value, name, this);\n }\n }\n get [Symbol.toStringTag]() {\n return \"FormData\";\n }\n [inspect.custom]() {\n return this[Symbol.toStringTag];\n }\n}\n",
|
|
68
|
+
"import { Blob } from \"./Blob.js\";\nexport const isBlob = (value) => value instanceof Blob;\n",
|
|
69
|
+
"import { deprecate } from \"util\";\nexport const deprecateConstructorEntries = deprecate(() => { }, \"Constructor \\\"entries\\\" argument is not spec-compliant \"\n + \"and will be removed in next major release.\");\n",
|
|
70
|
+
"const alphabet = \"abcdefghijklmnopqrstuvwxyz0123456789\";\nfunction createBoundary() {\n let size = 16;\n let res = \"\";\n while (size--) {\n res += alphabet[(Math.random() * alphabet.length) << 0];\n }\n return res;\n}\nexport default createBoundary;\n",
|
|
71
|
+
"const getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase());\nfunction isPlainObject(value) {\n if (getType(value) !== \"object\") {\n return false;\n }\n const pp = Object.getPrototypeOf(value);\n if (pp === null || pp === undefined) {\n return true;\n }\n const Ctor = pp.constructor && pp.constructor.toString();\n return Ctor === Object.toString();\n}\nexport default isPlainObject;\n",
|
|
72
|
+
"const normalizeValue = (value) => String(value)\n .replace(/\\r|\\n/g, (match, i, str) => {\n if ((match === \"\\r\" && str[i + 1] !== \"\\n\")\n || (match === \"\\n\" && str[i - 1] !== \"\\r\")) {\n return \"\\r\\n\";\n }\n return match;\n});\nexport default normalizeValue;\n",
|
|
73
|
+
"const escapeName = (name) => String(name)\n .replace(/\\r/g, \"%0D\")\n .replace(/\\n/g, \"%0A\")\n .replace(/\"/g, \"%22\");\nexport default escapeName;\n",
|
|
74
|
+
"const isFunction = (value) => (typeof value === \"function\");\nexport default isFunction;\n",
|
|
75
|
+
"import isFunction from \"./isFunction.js\";\nexport const isFileLike = (value) => Boolean(value\n && typeof value === \"object\"\n && isFunction(value.constructor)\n && value[Symbol.toStringTag] === \"File\"\n && isFunction(value.stream)\n && value.name != null\n && value.size != null\n && value.lastModified != null);\n",
|
|
76
|
+
"import isFunction from \"./isFunction.js\";\nexport const isFormData = (value) => Boolean(value\n && isFunction(value.constructor)\n && value[Symbol.toStringTag] === \"FormData\"\n && isFunction(value.append)\n && isFunction(value.getAll)\n && isFunction(value.entries)\n && isFunction(value[Symbol.iterator]));\nexport const isFormDataLike = isFormData;\n",
|
|
77
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _FormDataEncoder_instances, _FormDataEncoder_CRLF, _FormDataEncoder_CRLF_BYTES, _FormDataEncoder_CRLF_BYTES_LENGTH, _FormDataEncoder_DASHES, _FormDataEncoder_encoder, _FormDataEncoder_footer, _FormDataEncoder_form, _FormDataEncoder_options, _FormDataEncoder_getFieldHeader;\nimport createBoundary from \"./util/createBoundary.js\";\nimport isPlainObject from \"./util/isPlainObject.js\";\nimport normalize from \"./util/normalizeValue.js\";\nimport escape from \"./util/escapeName.js\";\nimport { isFileLike } from \"./util/isFileLike.js\";\nimport { isFormData } from \"./util/isFormData.js\";\nconst defaultOptions = {\n enableAdditionalHeaders: false\n};\nexport class FormDataEncoder {\n constructor(form, boundaryOrOptions, options) {\n _FormDataEncoder_instances.add(this);\n _FormDataEncoder_CRLF.set(this, \"\\r\\n\");\n _FormDataEncoder_CRLF_BYTES.set(this, void 0);\n _FormDataEncoder_CRLF_BYTES_LENGTH.set(this, void 0);\n _FormDataEncoder_DASHES.set(this, \"-\".repeat(2));\n _FormDataEncoder_encoder.set(this, new TextEncoder());\n _FormDataEncoder_footer.set(this, void 0);\n _FormDataEncoder_form.set(this, void 0);\n _FormDataEncoder_options.set(this, void 0);\n if (!isFormData(form)) {\n throw new TypeError(\"Expected first argument to be a FormData instance.\");\n }\n let boundary;\n if (isPlainObject(boundaryOrOptions)) {\n options = boundaryOrOptions;\n }\n else {\n boundary = boundaryOrOptions;\n }\n if (!boundary) {\n boundary = createBoundary();\n }\n if (typeof boundary !== \"string\") {\n throw new TypeError(\"Expected boundary argument to be a string.\");\n }\n if (options && !isPlainObject(options)) {\n throw new TypeError(\"Expected options argument to be an object.\");\n }\n __classPrivateFieldSet(this, _FormDataEncoder_form, form, \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_options, { ...defaultOptions, ...options }, \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES, __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")), \"f\");\n __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, \"f\").byteLength, \"f\");\n this.boundary = `form-data-boundary-${boundary}`;\n this.contentType = `multipart/form-data; boundary=${this.boundary}`;\n __classPrivateFieldSet(this, _FormDataEncoder_footer, __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(`${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\").repeat(2)}`), \"f\");\n this.contentLength = String(this.getContentLength());\n this.headers = Object.freeze({\n \"Content-Type\": this.contentType,\n \"Content-Length\": this.contentLength\n });\n Object.defineProperties(this, {\n boundary: { writable: false, configurable: false },\n contentType: { writable: false, configurable: false },\n contentLength: { writable: false, configurable: false },\n headers: { writable: false, configurable: false }\n });\n }\n getContentLength() {\n let length = 0;\n for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, \"f\")) {\n const value = isFileLike(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(normalize(raw));\n length += __classPrivateFieldGet(this, _FormDataEncoder_instances, \"m\", _FormDataEncoder_getFieldHeader).call(this, name, value).byteLength;\n length += isFileLike(value) ? value.size : value.byteLength;\n length += __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, \"f\");\n }\n return length + __classPrivateFieldGet(this, _FormDataEncoder_footer, \"f\").byteLength;\n }\n *values() {\n for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, \"f\").entries()) {\n const value = isFileLike(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(normalize(raw));\n yield __classPrivateFieldGet(this, _FormDataEncoder_instances, \"m\", _FormDataEncoder_getFieldHeader).call(this, name, value);\n yield value;\n yield __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, \"f\");\n }\n yield __classPrivateFieldGet(this, _FormDataEncoder_footer, \"f\");\n }\n async *encode() {\n for (const part of this.values()) {\n if (isFileLike(part)) {\n yield* part.stream();\n }\n else {\n yield part;\n }\n }\n }\n [(_FormDataEncoder_CRLF = new WeakMap(), _FormDataEncoder_CRLF_BYTES = new WeakMap(), _FormDataEncoder_CRLF_BYTES_LENGTH = new WeakMap(), _FormDataEncoder_DASHES = new WeakMap(), _FormDataEncoder_encoder = new WeakMap(), _FormDataEncoder_footer = new WeakMap(), _FormDataEncoder_form = new WeakMap(), _FormDataEncoder_options = new WeakMap(), _FormDataEncoder_instances = new WeakSet(), _FormDataEncoder_getFieldHeader = function _FormDataEncoder_getFieldHeader(name, value) {\n let header = \"\";\n header += `${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, \"f\")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}`;\n header += `Content-Disposition: form-data; name=\"${escape(name)}\"`;\n if (isFileLike(value)) {\n header += `; filename=\"${escape(value.name)}\"${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}`;\n header += `Content-Type: ${value.type || \"application/octet-stream\"}`;\n }\n if (__classPrivateFieldGet(this, _FormDataEncoder_options, \"f\").enableAdditionalHeaders === true) {\n header += `${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\")}Content-Length: ${isFileLike(value) ? value.size : value.byteLength}`;\n }\n return __classPrivateFieldGet(this, _FormDataEncoder_encoder, \"f\").encode(`${header}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, \"f\").repeat(2)}`);\n }, Symbol.iterator)]() {\n return this.values();\n }\n [Symbol.asyncIterator]() {\n return this.encode();\n }\n}\nexport const Encoder = FormDataEncoder;\n",
|
|
78
|
+
"/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nexport class MultipartBody {\n constructor(body) {\n this.body = body;\n }\n get [Symbol.toStringTag]() {\n return 'MultipartBody';\n }\n}\n//# sourceMappingURL=MultipartBody.mjs.map",
|
|
79
|
+
"/**\n * Disclaimer: modules in _shims aren't intended to be imported by SDK users.\n */\nimport * as shims from './registry.mjs';\nimport * as auto from 'openai/_shims/auto/runtime';\nexport const init = () => {\n if (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });\n};\nexport * from './registry.mjs';\n\ninit();\n",
|
|
80
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { castToError } from \"./core.mjs\";\nexport class OpenAIError extends Error {\n}\nexport class APIError extends OpenAIError {\n constructor(status, error, message, headers) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n this.request_id = headers?.['x-request-id'];\n this.error = error;\n const data = error;\n this.code = data?.['code'];\n this.param = data?.['param'];\n this.type = data?.['type'];\n }\n static makeMessage(status, error, message) {\n const msg = error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n static generate(status, errorResponse, message, headers) {\n if (!status || !headers) {\n return new APIConnectionError({ message, cause: castToError(errorResponse) });\n }\n const error = errorResponse?.['error'];\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n return new APIError(status, error, message, headers);\n }\n}\nexport class APIUserAbortError extends APIError {\n constructor({ message } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\nexport class APIConnectionError extends APIError {\n constructor({ message, cause }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause)\n this.cause = cause;\n }\n}\nexport class APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\nexport class BadRequestError extends APIError {\n}\nexport class AuthenticationError extends APIError {\n}\nexport class PermissionDeniedError extends APIError {\n}\nexport class NotFoundError extends APIError {\n}\nexport class ConflictError extends APIError {\n}\nexport class UnprocessableEntityError extends APIError {\n}\nexport class RateLimitError extends APIError {\n}\nexport class InternalServerError extends APIError {\n}\nexport class LengthFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the length limit was reached`);\n }\n}\nexport class ContentFilterFinishReasonError extends OpenAIError {\n constructor() {\n super(`Could not parse response content as the request was rejected by the content filter`);\n }\n}\n//# sourceMappingURL=error.mjs.map",
|
|
81
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _LineDecoder_carriageReturnIndex;\nimport { OpenAIError } from \"../../error.mjs\";\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nexport class LineDecoder {\n constructor() {\n _LineDecoder_carriageReturnIndex.set(this, void 0);\n this.buffer = new Uint8Array();\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n decode(chunk) {\n if (chunk == null) {\n return [];\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? new TextEncoder().encode(chunk)\n : chunk;\n let newData = new Uint8Array(this.buffer.length + binaryChunk.length);\n newData.set(this.buffer);\n newData.set(binaryChunk, this.buffer.length);\n this.buffer = newData;\n const lines = [];\n let patternIndex;\n while ((patternIndex = findNewlineIndex(this.buffer, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"))) != null) {\n if (patternIndex.carriage && __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") == null) {\n // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, patternIndex.index, \"f\");\n continue;\n }\n // we got double \\r or \\rtext\\n\n if (__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") != null &&\n (patternIndex.index !== __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") + 1 || patternIndex.carriage)) {\n lines.push(this.decodeText(this.buffer.slice(0, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") - 1)));\n this.buffer = this.buffer.slice(__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"));\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n continue;\n }\n const endIndex = __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n const line = this.decodeText(this.buffer.slice(0, endIndex));\n lines.push(line);\n this.buffer = this.buffer.slice(patternIndex.index);\n __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n }\n return lines;\n }\n decodeText(bytes) {\n if (bytes == null)\n return '';\n if (typeof bytes === 'string')\n return bytes;\n // Node:\n if (typeof Buffer !== 'undefined') {\n if (bytes instanceof Buffer) {\n return bytes.toString();\n }\n if (bytes instanceof Uint8Array) {\n return Buffer.from(bytes).toString();\n }\n throw new OpenAIError(`Unexpected: received non-Uint8Array (${bytes.constructor.name}) stream chunk in an environment with a global \"Buffer\" defined, which this library assumes to be Node. Please report this error.`);\n }\n // Browser\n if (typeof TextDecoder !== 'undefined') {\n if (bytes instanceof Uint8Array || bytes instanceof ArrayBuffer) {\n this.textDecoder ?? (this.textDecoder = new TextDecoder('utf8'));\n return this.textDecoder.decode(bytes);\n }\n throw new OpenAIError(`Unexpected: received non-Uint8Array/ArrayBuffer (${bytes.constructor.name}) in a web platform. Please report this error.`);\n }\n throw new OpenAIError(`Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.`);\n }\n flush() {\n if (!this.buffer.length) {\n return [];\n }\n return this.decode('\\n');\n }\n}\n_LineDecoder_carriageReturnIndex = new WeakMap();\n// prettier-ignore\nLineDecoder.NEWLINE_CHARS = new Set(['\\n', '\\r']);\nLineDecoder.NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(buffer, startIndex) {\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = startIndex ?? 0; i < buffer.length; i++) {\n if (buffer[i] === newline) {\n return { preceding: i, index: i + 1, carriage: false };\n }\n if (buffer[i] === carriage) {\n return { preceding: i, index: i + 1, carriage: true };\n }\n }\n return null;\n}\nexport function findDoubleNewlineIndex(buffer) {\n // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n // and returns the index right after the first occurrence of any pattern,\n // or -1 if none of the patterns are found.\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n for (let i = 0; i < buffer.length - 1; i++) {\n if (buffer[i] === newline && buffer[i + 1] === newline) {\n // \\n\\n\n return i + 2;\n }\n if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n // \\r\\r\n return i + 2;\n }\n if (buffer[i] === carriage &&\n buffer[i + 1] === newline &&\n i + 3 < buffer.length &&\n buffer[i + 2] === carriage &&\n buffer[i + 3] === newline) {\n // \\r\\n\\r\\n\n return i + 4;\n }\n }\n return -1;\n}\n//# sourceMappingURL=line.mjs.map",
|
|
82
|
+
"/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function ReadableStreamToAsyncIterable(stream) {\n if (stream[Symbol.asyncIterator])\n return stream;\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done)\n reader.releaseLock(); // release lock when stream becomes closed\n return result;\n }\n catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n//# sourceMappingURL=stream-utils.mjs.map",
|
|
83
|
+
"import { ReadableStream } from \"./_shims/index.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { findDoubleNewlineIndex, LineDecoder } from \"./internal/decoders/line.mjs\";\nimport { ReadableStreamToAsyncIterable } from \"./internal/stream-utils.mjs\";\nimport { createResponseHeaders } from \"./core.mjs\";\nimport { APIError } from \"./error.mjs\";\nexport class Stream {\n constructor(iterator, controller) {\n this.iterator = iterator;\n this.controller = controller;\n }\n static fromSSEResponse(response, controller) {\n let consumed = false;\n async function* iterator() {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const sse of _iterSSEMessages(response, controller)) {\n if (done)\n continue;\n if (sse.data.startsWith('[DONE]')) {\n done = true;\n continue;\n }\n if (sse.event === null ||\n sse.event.startsWith('response.') ||\n sse.event.startsWith('transcript.')) {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n if (data && data.error) {\n throw new APIError(undefined, data.error, undefined, createResponseHeaders(response.headers));\n }\n yield data;\n }\n else {\n let data;\n try {\n data = JSON.parse(sse.data);\n }\n catch (e) {\n console.error(`Could not parse message into JSON:`, sse.data);\n console.error(`From chunk:`, sse.raw);\n throw e;\n }\n // TODO: Is this where the error should be thrown?\n if (sse.event == 'error') {\n throw new APIError(undefined, data.error, data.message, undefined);\n }\n yield { event: sse.event, data: data };\n }\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError')\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller);\n }\n /**\n * Generates a Stream from a newline-separated ReadableStream\n * where each item is a JSON value.\n */\n static fromReadableStream(readableStream, controller) {\n let consumed = false;\n async function* iterLines() {\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(readableStream);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n yield line;\n }\n }\n for (const line of lineDecoder.flush()) {\n yield line;\n }\n }\n async function* iterator() {\n if (consumed) {\n throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const line of iterLines()) {\n if (done)\n continue;\n if (line)\n yield JSON.parse(line);\n }\n done = true;\n }\n catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (e instanceof Error && e.name === 'AbortError')\n return;\n throw e;\n }\n finally {\n // If the user `break`s, abort the ongoing request.\n if (!done)\n controller.abort();\n }\n }\n return new Stream(iterator, controller);\n }\n [Symbol.asyncIterator]() {\n return this.iterator();\n }\n /**\n * Splits the stream into two streams which can be\n * independently read from at different speeds.\n */\n tee() {\n const left = [];\n const right = [];\n const iterator = this.iterator();\n const teeIterator = (queue) => {\n return {\n next: () => {\n if (queue.length === 0) {\n const result = iterator.next();\n left.push(result);\n right.push(result);\n }\n return queue.shift();\n },\n };\n };\n return [\n new Stream(() => teeIterator(left), this.controller),\n new Stream(() => teeIterator(right), this.controller),\n ];\n }\n /**\n * Converts this stream to a newline-separated ReadableStream of\n * JSON stringified values in the stream\n * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n */\n toReadableStream() {\n const self = this;\n let iter;\n const encoder = new TextEncoder();\n return new ReadableStream({\n async start() {\n iter = self[Symbol.asyncIterator]();\n },\n async pull(ctrl) {\n try {\n const { value, done } = await iter.next();\n if (done)\n return ctrl.close();\n const bytes = encoder.encode(JSON.stringify(value) + '\\n');\n ctrl.enqueue(bytes);\n }\n catch (err) {\n ctrl.error(err);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n }\n}\nexport async function* _iterSSEMessages(response, controller) {\n if (!response.body) {\n controller.abort();\n throw new OpenAIError(`Attempted to iterate over a response with no body`);\n }\n const sseDecoder = new SSEDecoder();\n const lineDecoder = new LineDecoder();\n const iter = ReadableStreamToAsyncIterable(response.body);\n for await (const sseChunk of iterSSEChunks(iter)) {\n for (const line of lineDecoder.decode(sseChunk)) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n }\n for (const line of lineDecoder.flush()) {\n const sse = sseDecoder.decode(line);\n if (sse)\n yield sse;\n }\n}\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator) {\n let data = new Uint8Array();\n for await (const chunk of iterator) {\n if (chunk == null) {\n continue;\n }\n const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? new TextEncoder().encode(chunk)\n : chunk;\n let newData = new Uint8Array(data.length + binaryChunk.length);\n newData.set(data);\n newData.set(binaryChunk, data.length);\n data = newData;\n let patternIndex;\n while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) {\n yield data.slice(0, patternIndex);\n data = data.slice(patternIndex);\n }\n }\n if (data.length > 0) {\n yield data;\n }\n}\nclass SSEDecoder {\n constructor() {\n this.event = null;\n this.data = [];\n this.chunks = [];\n }\n decode(line) {\n if (line.endsWith('\\r')) {\n line = line.substring(0, line.length - 1);\n }\n if (!line) {\n // empty line and we didn't previously encounter any messages\n if (!this.event && !this.data.length)\n return null;\n const sse = {\n event: this.event,\n data: this.data.join('\\n'),\n raw: this.chunks,\n };\n this.event = null;\n this.data = [];\n this.chunks = [];\n return sse;\n }\n this.chunks.push(line);\n if (line.startsWith(':')) {\n return null;\n }\n let [fieldname, _, value] = partition(line, ':');\n if (value.startsWith(' ')) {\n value = value.substring(1);\n }\n if (fieldname === 'event') {\n this.event = value;\n }\n else if (fieldname === 'data') {\n this.data.push(value);\n }\n return null;\n }\n}\nfunction partition(str, delimiter) {\n const index = str.indexOf(delimiter);\n if (index !== -1) {\n return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n }\n return [str, '', ''];\n}\n//# sourceMappingURL=streaming.mjs.map",
|
|
84
|
+
"import { FormData, File, getMultipartRequestOptions, isFsReadStream, } from \"./_shims/index.mjs\";\nexport { fileFromPath } from \"./_shims/index.mjs\";\nexport const isResponseLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\nexport const isFileLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n isBlobLike(value);\n/**\n * The BlobLike type omits arrayBuffer() because @types/node-fetch@^2.6.4 lacks it; but this check\n * adds the arrayBuffer() method type because it is available and used at runtime\n */\nexport const isBlobLike = (value) => value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\nexport const isUploadable = (value) => {\n return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);\n};\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(value, name, options) {\n // If it's a promise, resolve it.\n value = await value;\n // If we've been given a `File` we don't need to do anything\n if (isFileLike(value)) {\n return value;\n }\n if (isResponseLike(value)) {\n const blob = await value.blob();\n name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop() ?? 'unknown_file');\n // we need to convert the `Blob` into an array buffer because the `Blob` class\n // that `node-fetch` defines is incompatible with the web standard which results\n // in `new File` interpreting it as a string instead of binary data.\n const data = isBlobLike(blob) ? [(await blob.arrayBuffer())] : [blob];\n return new File(data, name, options);\n }\n const bits = await getBytes(value);\n name || (name = getName(value) ?? 'unknown_file');\n if (!options?.type) {\n const type = bits[0]?.type;\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n return new File(bits, name, options);\n}\nasync function getBytes(value) {\n let parts = [];\n if (typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer) {\n parts.push(value);\n }\n else if (isBlobLike(value)) {\n parts.push(await value.arrayBuffer());\n }\n else if (isAsyncIterableIterator(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(chunk); // TODO, consider validating?\n }\n }\n else {\n throw new Error(`Unexpected data type: ${typeof value}; constructor: ${value?.constructor\n ?.name}; props: ${propsForError(value)}`);\n }\n return parts;\n}\nfunction propsForError(value) {\n const props = Object.getOwnPropertyNames(value);\n return `[${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\nfunction getName(value) {\n return (getStringFromMaybeBuffer(value.name) ||\n getStringFromMaybeBuffer(value.filename) ||\n // For fs.ReadStream\n getStringFromMaybeBuffer(value.path)?.split(/[\\\\/]/).pop());\n}\nconst getStringFromMaybeBuffer = (x) => {\n if (typeof x === 'string')\n return x;\n if (typeof Buffer !== 'undefined' && x instanceof Buffer)\n return String(x);\n return undefined;\n};\nconst isAsyncIterableIterator = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\nexport const isMultipartBody = (body) => body && typeof body === 'object' && body.body && body[Symbol.toStringTag] === 'MultipartBody';\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (opts) => {\n if (!hasUploadableValue(opts.body))\n return opts;\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\nexport const multipartFormRequestOptions = async (opts) => {\n const form = await createForm(opts.body);\n return getMultipartRequestOptions(form, opts);\n};\nexport const createForm = async (body) => {\n const form = new FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\nconst hasUploadableValue = (value) => {\n if (isUploadable(value))\n return true;\n if (Array.isArray(value))\n return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue(value[k]))\n return true;\n }\n }\n return false;\n};\nconst addFormValue = async (form, key, value) => {\n if (value === undefined)\n return;\n if (value == null) {\n throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n }\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n }\n else if (isUploadable(value)) {\n const file = await toFile(value);\n form.append(key, file);\n }\n else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n }\n else if (typeof value === 'object') {\n await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n }\n else {\n throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n }\n};\n//# sourceMappingURL=uploads.mjs.map",
|
|
85
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractPage_client;\nimport { VERSION } from \"./version.mjs\";\nimport { Stream } from \"./streaming.mjs\";\nimport { OpenAIError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, } from \"./error.mjs\";\nimport { kind as shimsKind, getDefaultAgent, fetch, init, } from \"./_shims/index.mjs\";\n// try running side effects outside of _shims/index to workaround https://github.com/vercel/next.js/issues/76881\ninit();\nimport { isBlobLike, isMultipartBody } from \"./uploads.mjs\";\nexport { maybeMultipartFormRequestOptions, multipartFormRequestOptions, createForm, } from \"./uploads.mjs\";\nasync function defaultParseResponse(props) {\n const { response } = props;\n if (props.options.stream) {\n debug('response', response.status, response.url, response.headers, response.body);\n // Note: there is an invariant here that isn't represented in the type system\n // that if you set `stream: true` the response type must also be `Stream<T>`\n if (props.options.__streamClass) {\n return props.options.__streamClass.fromSSEResponse(response, props.controller);\n }\n return Stream.fromSSEResponse(response, props.controller);\n }\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null;\n }\n if (props.options.__binaryResponse) {\n return response;\n }\n const contentType = response.headers.get('content-type');\n const mediaType = contentType?.split(';')[0]?.trim();\n const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n if (isJSON) {\n const json = await response.json();\n debug('response', response.status, response.url, response.headers, json);\n return _addRequestID(json, response);\n }\n const text = await response.text();\n debug('response', response.status, response.url, response.headers, text);\n // TODO handle blob, arraybuffer, other content types, etc.\n return text;\n}\nfunction _addRequestID(value, response) {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return value;\n }\n return Object.defineProperty(value, '_request_id', {\n value: response.headers.get('x-request-id'),\n enumerable: false,\n });\n}\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise extends Promise {\n constructor(responsePromise, parseResponse = defaultParseResponse) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null);\n });\n this.responsePromise = responsePromise;\n this.parseResponse = parseResponse;\n }\n _thenUnwrap(transform) {\n return new APIPromise(this.responsePromise, async (props) => _addRequestID(transform(await this.parseResponse(props), props), props.response));\n }\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n asResponse() {\n return this.responsePromise.then((p) => p.response);\n }\n /**\n * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n * returned via the X-Request-ID header which is useful for debugging requests and reporting\n * issues to OpenAI.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` if you can,\n * or add one of these imports before your first `import … from 'openai'`:\n * - `import 'openai/shims/node'` (if you're running on Node)\n * - `import 'openai/shims/web'` (otherwise)\n */\n async withResponse() {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response, request_id: response.headers.get('x-request-id') };\n }\n parse() {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then(this.parseResponse);\n }\n return this.parsedPromise;\n }\n then(onfulfilled, onrejected) {\n return this.parse().then(onfulfilled, onrejected);\n }\n catch(onrejected) {\n return this.parse().catch(onrejected);\n }\n finally(onfinally) {\n return this.parse().finally(onfinally);\n }\n}\nexport class APIClient {\n constructor({ baseURL, maxRetries = 2, timeout = 600000, // 10 minutes\n httpAgent, fetch: overriddenFetch, }) {\n this.baseURL = baseURL;\n this.maxRetries = validatePositiveInteger('maxRetries', maxRetries);\n this.timeout = validatePositiveInteger('timeout', timeout);\n this.httpAgent = httpAgent;\n this.fetch = overriddenFetch ?? fetch;\n }\n authHeaders(opts) {\n return {};\n }\n /**\n * Override this to add your own default headers, for example:\n *\n * {\n * ...super.defaultHeaders(),\n * Authorization: 'Bearer 123',\n * }\n */\n defaultHeaders(opts) {\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'User-Agent': this.getUserAgent(),\n ...getPlatformHeaders(),\n ...this.authHeaders(opts),\n };\n }\n /**\n * Override this to add your own headers validation:\n */\n validateHeaders(headers, customHeaders) { }\n defaultIdempotencyKey() {\n return `stainless-node-retry-${uuid4()}`;\n }\n get(path, opts) {\n return this.methodRequest('get', path, opts);\n }\n post(path, opts) {\n return this.methodRequest('post', path, opts);\n }\n patch(path, opts) {\n return this.methodRequest('patch', path, opts);\n }\n put(path, opts) {\n return this.methodRequest('put', path, opts);\n }\n delete(path, opts) {\n return this.methodRequest('delete', path, opts);\n }\n methodRequest(method, path, opts) {\n return this.request(Promise.resolve(opts).then(async (opts) => {\n const body = opts && isBlobLike(opts?.body) ? new DataView(await opts.body.arrayBuffer())\n : opts?.body instanceof DataView ? opts.body\n : opts?.body instanceof ArrayBuffer ? new DataView(opts.body)\n : opts && ArrayBuffer.isView(opts?.body) ? new DataView(opts.body.buffer)\n : opts?.body;\n return { method, path, ...opts, body };\n }));\n }\n getAPIList(path, Page, opts) {\n return this.requestAPIList(Page, { method: 'get', path, ...opts });\n }\n calculateContentLength(body) {\n if (typeof body === 'string') {\n if (typeof Buffer !== 'undefined') {\n return Buffer.byteLength(body, 'utf8').toString();\n }\n if (typeof TextEncoder !== 'undefined') {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(body);\n return encoded.length.toString();\n }\n }\n else if (ArrayBuffer.isView(body)) {\n return body.byteLength.toString();\n }\n return null;\n }\n buildRequest(inputOptions, { retryCount = 0 } = {}) {\n const options = { ...inputOptions };\n const { method, path, query, headers: headers = {} } = options;\n const body = ArrayBuffer.isView(options.body) || (options.__binaryRequest && typeof options.body === 'string') ?\n options.body\n : isMultipartBody(options.body) ? options.body.body\n : options.body ? JSON.stringify(options.body, null, 2)\n : null;\n const contentLength = this.calculateContentLength(body);\n const url = this.buildURL(path, query);\n if ('timeout' in options)\n validatePositiveInteger('timeout', options.timeout);\n options.timeout = options.timeout ?? this.timeout;\n const httpAgent = options.httpAgent ?? this.httpAgent ?? getDefaultAgent(url);\n const minAgentTimeout = options.timeout + 1000;\n if (typeof httpAgent?.options?.timeout === 'number' &&\n minAgentTimeout > (httpAgent.options.timeout ?? 0)) {\n // Allow any given request to bump our agent active socket timeout.\n // This may seem strange, but leaking active sockets should be rare and not particularly problematic,\n // and without mutating agent we would need to create more of them.\n // This tradeoff optimizes for performance.\n httpAgent.options.timeout = minAgentTimeout;\n }\n if (this.idempotencyHeader && method !== 'get') {\n if (!inputOptions.idempotencyKey)\n inputOptions.idempotencyKey = this.defaultIdempotencyKey();\n headers[this.idempotencyHeader] = inputOptions.idempotencyKey;\n }\n const reqHeaders = this.buildHeaders({ options, headers, contentLength, retryCount });\n const req = {\n method,\n ...(body && { body: body }),\n headers: reqHeaders,\n ...(httpAgent && { agent: httpAgent }),\n // @ts-ignore node-fetch uses a custom AbortSignal type that is\n // not compatible with standard web types\n signal: options.signal ?? null,\n };\n return { req, url, timeout: options.timeout };\n }\n buildHeaders({ options, headers, contentLength, retryCount, }) {\n const reqHeaders = {};\n if (contentLength) {\n reqHeaders['content-length'] = contentLength;\n }\n const defaultHeaders = this.defaultHeaders(options);\n applyHeadersMut(reqHeaders, defaultHeaders);\n applyHeadersMut(reqHeaders, headers);\n // let builtin fetch set the Content-Type for multipart bodies\n if (isMultipartBody(options.body) && shimsKind !== 'node') {\n delete reqHeaders['content-type'];\n }\n // Don't set theses headers if they were already set or removed through default headers or by the caller.\n // We check `defaultHeaders` and `headers`, which can contain nulls, instead of `reqHeaders` to account\n // for the removal case.\n if (getHeader(defaultHeaders, 'x-stainless-retry-count') === undefined &&\n getHeader(headers, 'x-stainless-retry-count') === undefined) {\n reqHeaders['x-stainless-retry-count'] = String(retryCount);\n }\n if (getHeader(defaultHeaders, 'x-stainless-timeout') === undefined &&\n getHeader(headers, 'x-stainless-timeout') === undefined &&\n options.timeout) {\n reqHeaders['x-stainless-timeout'] = String(Math.trunc(options.timeout / 1000));\n }\n this.validateHeaders(reqHeaders, headers);\n return reqHeaders;\n }\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n async prepareOptions(options) { }\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n async prepareRequest(request, { url, options }) { }\n parseHeaders(headers) {\n return (!headers ? {}\n : Symbol.iterator in headers ?\n Object.fromEntries(Array.from(headers).map((header) => [...header]))\n : { ...headers });\n }\n makeStatusError(status, error, message, headers) {\n return APIError.generate(status, error, message, headers);\n }\n request(options, remainingRetries = null) {\n return new APIPromise(this.makeRequest(options, remainingRetries));\n }\n async makeRequest(optionsInput, retriesRemaining) {\n const options = await optionsInput;\n const maxRetries = options.maxRetries ?? this.maxRetries;\n if (retriesRemaining == null) {\n retriesRemaining = maxRetries;\n }\n await this.prepareOptions(options);\n const { req, url, timeout } = this.buildRequest(options, { retryCount: maxRetries - retriesRemaining });\n await this.prepareRequest(req, { url, options });\n debug('request', url, options, req.headers);\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n const controller = new AbortController();\n const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n if (response instanceof Error) {\n if (options.signal?.aborted) {\n throw new APIUserAbortError();\n }\n if (retriesRemaining) {\n return this.retryRequest(options, retriesRemaining);\n }\n if (response.name === 'AbortError') {\n throw new APIConnectionTimeoutError();\n }\n throw new APIConnectionError({ cause: response });\n }\n const responseHeaders = createResponseHeaders(response.headers);\n if (!response.ok) {\n if (retriesRemaining && this.shouldRetry(response)) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders);\n return this.retryRequest(options, retriesRemaining, responseHeaders);\n }\n const errText = await response.text().catch((e) => castToError(e).message);\n const errJSON = safeJSON(errText);\n const errMessage = errJSON ? undefined : errText;\n const retryMessage = retriesRemaining ? `(error; no more retries left)` : `(error; not retryable)`;\n debug(`response (error; ${retryMessage})`, response.status, url, responseHeaders, errMessage);\n const err = this.makeStatusError(response.status, errJSON, errMessage, responseHeaders);\n throw err;\n }\n return { response, options, controller };\n }\n requestAPIList(Page, options) {\n const request = this.makeRequest(options, null);\n return new PagePromise(this, request, Page);\n }\n buildURL(path, query) {\n const url = isAbsoluteURL(path) ?\n new URL(path)\n : new URL(this.baseURL + (this.baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n const defaultQuery = this.defaultQuery();\n if (!isEmptyObj(defaultQuery)) {\n query = { ...defaultQuery, ...query };\n }\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query);\n }\n return url.toString();\n }\n stringifyQuery(query) {\n return Object.entries(query)\n .filter(([_, value]) => typeof value !== 'undefined')\n .map(([key, value]) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n }\n if (value === null) {\n return `${encodeURIComponent(key)}=`;\n }\n throw new OpenAIError(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`);\n })\n .join('&');\n }\n async fetchWithTimeout(url, init, ms, controller) {\n const { signal, ...options } = init || {};\n if (signal)\n signal.addEventListener('abort', () => controller.abort());\n const timeout = setTimeout(() => controller.abort(), ms);\n const fetchOptions = {\n signal: controller.signal,\n ...options,\n };\n if (fetchOptions.method) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = fetchOptions.method.toUpperCase();\n }\n return (\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n this.fetch.call(undefined, url, fetchOptions).finally(() => {\n clearTimeout(timeout);\n }));\n }\n shouldRetry(response) {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true')\n return true;\n if (shouldRetryHeader === 'false')\n return false;\n // Retry on request timeouts.\n if (response.status === 408)\n return true;\n // Retry on lock timeouts.\n if (response.status === 409)\n return true;\n // Retry on rate limits.\n if (response.status === 429)\n return true;\n // Retry internal errors.\n if (response.status >= 500)\n return true;\n return false;\n }\n async retryRequest(options, retriesRemaining, responseHeaders) {\n let timeoutMillis;\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.['retry-after-ms'];\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.['retry-after'];\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n }\n else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n // just do what it says, but otherwise calculate a default\n if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await sleep(timeoutMillis);\n return this.makeRequest(options, retriesRemaining - 1);\n }\n calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n const numRetries = maxRetries - retriesRemaining;\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n return sleepSeconds * jitter * 1000;\n }\n getUserAgent() {\n return `${this.constructor.name}/JS ${VERSION}`;\n }\n}\nexport class AbstractPage {\n constructor(client, response, body, options) {\n _AbstractPage_client.set(this, void 0);\n __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n this.options = options;\n this.response = response;\n this.body = body;\n }\n hasNextPage() {\n const items = this.getPaginatedItems();\n if (!items.length)\n return false;\n return this.nextPageInfo() != null;\n }\n async getNextPage() {\n const nextInfo = this.nextPageInfo();\n if (!nextInfo) {\n throw new OpenAIError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n }\n const nextOptions = { ...this.options };\n if ('params' in nextInfo && typeof nextOptions.query === 'object') {\n nextOptions.query = { ...nextOptions.query, ...nextInfo.params };\n }\n else if ('url' in nextInfo) {\n const params = [...Object.entries(nextOptions.query || {}), ...nextInfo.url.searchParams.entries()];\n for (const [key, value] of params) {\n nextInfo.url.searchParams.set(key, value);\n }\n nextOptions.query = undefined;\n nextOptions.path = nextInfo.url.toString();\n }\n return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n }\n async *iterPages() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nexport class PagePromise extends APIPromise {\n constructor(client, request, Page) {\n super(request, async (props) => new Page(client, props.response, await defaultParseResponse(props), props.options));\n }\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator]() {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\nexport const createResponseHeaders = (headers) => {\n return new Proxy(Object.fromEntries(\n // @ts-ignore\n headers.entries()), {\n get(target, name) {\n const key = name.toString();\n return target[key.toLowerCase()] || target[key];\n },\n });\n};\n// This is required so that we can determine if a given object matches the RequestOptions\n// type at runtime. While this requires duplication, it is enforced by the TypeScript\n// compiler such that any missing / extraneous keys will cause an error.\nconst requestOptionsKeys = {\n method: true,\n path: true,\n query: true,\n body: true,\n headers: true,\n maxRetries: true,\n stream: true,\n timeout: true,\n httpAgent: true,\n signal: true,\n idempotencyKey: true,\n __metadata: true,\n __binaryRequest: true,\n __binaryResponse: true,\n __streamClass: true,\n};\nexport const isRequestOptions = (obj) => {\n return (typeof obj === 'object' &&\n obj !== null &&\n !isEmptyObj(obj) &&\n Object.keys(obj).every((k) => hasOwn(requestOptionsKeys, k)));\n};\nconst getPlatformProperties = () => {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version': typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n // Check if Node.js\n if (Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(process.platform),\n 'X-Stainless-Arch': normalizeArch(process.arch),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': process.version,\n };\n }\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n return null;\n}\nconst normalizeArch = (arch) => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32')\n return 'x32';\n if (arch === 'x86_64' || arch === 'x64')\n return 'x64';\n if (arch === 'arm')\n return 'arm';\n if (arch === 'aarch64' || arch === 'arm64')\n return 'arm64';\n if (arch)\n return `other:${arch}`;\n return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n platform = platform.toLowerCase();\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios'))\n return 'iOS';\n if (platform === 'android')\n return 'Android';\n if (platform === 'darwin')\n return 'MacOS';\n if (platform === 'win32')\n return 'Windows';\n if (platform === 'freebsd')\n return 'FreeBSD';\n if (platform === 'openbsd')\n return 'OpenBSD';\n if (platform === 'linux')\n return 'Linux';\n if (platform)\n return `Other:${platform}`;\n return 'Unknown';\n};\nlet _platformHeaders;\nconst getPlatformHeaders = () => {\n return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\nexport const safeJSON = (text) => {\n try {\n return JSON.parse(text);\n }\n catch (err) {\n return undefined;\n }\n};\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\nconst isAbsoluteURL = (url) => {\n return startsWithSchemeRegexp.test(url);\n};\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nconst validatePositiveInteger = (name, n) => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new OpenAIError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new OpenAIError(`${name} must be a positive integer`);\n }\n return n;\n};\nexport const castToError = (err) => {\n if (err instanceof Error)\n return err;\n if (typeof err === 'object' && err !== null) {\n try {\n return new Error(JSON.stringify(err));\n }\n catch { }\n }\n return new Error(err);\n};\nexport const ensurePresent = (value) => {\n if (value == null)\n throw new OpenAIError(`Expected a value to be given but received ${value} instead.`);\n return value;\n};\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env) => {\n if (typeof process !== 'undefined') {\n return process.env?.[env]?.trim() ?? undefined;\n }\n if (typeof Deno !== 'undefined') {\n return Deno.env?.get?.(env)?.trim();\n }\n return undefined;\n};\nexport const coerceInteger = (value) => {\n if (typeof value === 'number')\n return Math.round(value);\n if (typeof value === 'string')\n return parseInt(value, 10);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceFloat = (value) => {\n if (typeof value === 'number')\n return value;\n if (typeof value === 'string')\n return parseFloat(value);\n throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceBoolean = (value) => {\n if (typeof value === 'boolean')\n return value;\n if (typeof value === 'string')\n return value === 'true';\n return Boolean(value);\n};\nexport const maybeCoerceInteger = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceInteger(value);\n};\nexport const maybeCoerceFloat = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceFloat(value);\n};\nexport const maybeCoerceBoolean = (value) => {\n if (value === undefined) {\n return undefined;\n }\n return coerceBoolean(value);\n};\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj) {\n if (!obj)\n return true;\n for (const _k in obj)\n return false;\n return true;\n}\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n/**\n * Copies headers from \"newHeaders\" onto \"targetHeaders\",\n * using lower-case for all properties,\n * ignoring any keys with undefined values,\n * and deleting any keys with null values.\n */\nfunction applyHeadersMut(targetHeaders, newHeaders) {\n for (const k in newHeaders) {\n if (!hasOwn(newHeaders, k))\n continue;\n const lowerKey = k.toLowerCase();\n if (!lowerKey)\n continue;\n const val = newHeaders[k];\n if (val === null) {\n delete targetHeaders[lowerKey];\n }\n else if (val !== undefined) {\n targetHeaders[lowerKey] = val;\n }\n }\n}\nconst SENSITIVE_HEADERS = new Set(['authorization', 'api-key']);\nexport function debug(action, ...args) {\n if (typeof process !== 'undefined' && process?.env?.['DEBUG'] === 'true') {\n const modifiedArgs = args.map((arg) => {\n if (!arg) {\n return arg;\n }\n // Check for sensitive headers in request body 'headers' object\n if (arg['headers']) {\n // clone so we don't mutate\n const modifiedArg = { ...arg, headers: { ...arg['headers'] } };\n for (const header in arg['headers']) {\n if (SENSITIVE_HEADERS.has(header.toLowerCase())) {\n modifiedArg['headers'][header] = 'REDACTED';\n }\n }\n return modifiedArg;\n }\n let modifiedArg = null;\n // Check for sensitive headers in headers object\n for (const header in arg) {\n if (SENSITIVE_HEADERS.has(header.toLowerCase())) {\n // avoid making a copy until we need to\n modifiedArg ?? (modifiedArg = { ...arg });\n modifiedArg[header] = 'REDACTED';\n }\n }\n return modifiedArg ?? arg;\n });\n console.log(`OpenAI:DEBUG:${action}`, ...modifiedArgs);\n }\n}\n/**\n * https://stackoverflow.com/a/2117523\n */\nconst uuid4 = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\nexport const isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined');\n};\nexport const isHeadersProtocol = (headers) => {\n return typeof headers?.get === 'function';\n};\nexport const getRequiredHeader = (headers, header) => {\n const foundHeader = getHeader(headers, header);\n if (foundHeader === undefined) {\n throw new Error(`Could not find ${header} header`);\n }\n return foundHeader;\n};\nexport const getHeader = (headers, header) => {\n const lowerCasedHeader = header.toLowerCase();\n if (isHeadersProtocol(headers)) {\n // to deal with the case where the header looks like Stainless-Event-Id\n const intercapsHeader = header[0]?.toUpperCase() +\n header.substring(1).replace(/([^\\w])(\\w)/g, (_m, g1, g2) => g1 + g2.toUpperCase());\n for (const key of [header, lowerCasedHeader, header.toUpperCase(), intercapsHeader]) {\n const value = headers.get(key);\n if (value) {\n return value;\n }\n }\n }\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lowerCasedHeader) {\n if (Array.isArray(value)) {\n if (value.length <= 1)\n return value[0];\n console.warn(`Received ${value.length} entries for the ${header} header, using the first entry.`);\n return value[0];\n }\n return value;\n }\n }\n return undefined;\n};\n/**\n * Encodes a string to Base64 format.\n */\nexport const toBase64 = (str) => {\n if (!str)\n return '';\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(str).toString('base64');\n }\n if (typeof btoa !== 'undefined') {\n return btoa(str);\n }\n throw new OpenAIError('Cannot generate b64 string; Expected `Buffer` or `btoa` to be defined');\n};\n/**\n * Converts a Base64 encoded string to a Float32Array.\n * @param base64Str - The Base64 encoded string.\n * @returns An Array of numbers interpreted as Float32 values.\n */\nexport const toFloat32Array = (base64Str) => {\n if (typeof Buffer !== 'undefined') {\n // for Node.js environment\n const buf = Buffer.from(base64Str, 'base64');\n return Array.from(new Float32Array(buf.buffer, buf.byteOffset, buf.length / Float32Array.BYTES_PER_ELEMENT));\n }\n else {\n // for legacy web platform APIs\n const binaryStr = atob(base64Str);\n const len = binaryStr.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryStr.charCodeAt(i);\n }\n return Array.from(new Float32Array(bytes.buffer));\n }\n};\nexport function isObj(obj) {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\n//# sourceMappingURL=core.mjs.map",
|
|
86
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { AbstractPage } from \"./core.mjs\";\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class Page extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.object = body.object;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n // @deprecated Please use `nextPageInfo()` instead\n /**\n * This page represents a response that isn't actually paginated at the API level\n * so there will never be any next page params.\n */\n nextPageParams() {\n return null;\n }\n nextPageInfo() {\n return null;\n }\n}\nexport class CursorPage extends AbstractPage {\n constructor(client, response, body, options) {\n super(client, response, body, options);\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n }\n getPaginatedItems() {\n return this.data ?? [];\n }\n hasNextPage() {\n if (this.has_more === false) {\n return false;\n }\n return super.hasNextPage();\n }\n // @deprecated Please use `nextPageInfo()` instead\n nextPageParams() {\n const info = this.nextPageInfo();\n if (!info)\n return null;\n if ('params' in info)\n return info.params;\n const params = Object.fromEntries(info.url.searchParams);\n if (!Object.keys(params).length)\n return null;\n return params;\n }\n nextPageInfo() {\n const data = this.getPaginatedItems();\n if (!data.length) {\n return null;\n }\n const id = data[data.length - 1]?.id;\n if (!id) {\n return null;\n }\n return { params: { after: id } };\n }\n}\n//# sourceMappingURL=pagination.mjs.map",
|
|
87
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport class APIResource {\n constructor(client) {\n this._client = client;\n }\n}\n//# sourceMappingURL=resource.mjs.map",
|
|
88
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { ChatCompletionStoreMessagesPage } from \"./completions.mjs\";\nexport class Messages extends APIResource {\n list(completionId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(completionId, {}, query);\n }\n return this._client.getAPIList(`/chat/completions/${completionId}/messages`, ChatCompletionStoreMessagesPage, { query, ...options });\n }\n}\nexport { ChatCompletionStoreMessagesPage };\n//# sourceMappingURL=messages.mjs.map",
|
|
89
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages } from \"./messages.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Completions extends APIResource {\n constructor() {\n super(...arguments);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body, options) {\n return this._client.post('/chat/completions', { body, ...options, stream: body.stream ?? false });\n }\n /**\n * Get a stored chat completion. Only Chat Completions that have been created with\n * the `store` parameter set to `true` will be returned.\n *\n * @example\n * ```ts\n * const chatCompletion =\n * await client.chat.completions.retrieve('completion_id');\n * ```\n */\n retrieve(completionId, options) {\n return this._client.get(`/chat/completions/${completionId}`, options);\n }\n /**\n * Modify a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be modified. Currently, the only\n * supported modification is to update the `metadata` field.\n *\n * @example\n * ```ts\n * const chatCompletion = await client.chat.completions.update(\n * 'completion_id',\n * { metadata: { foo: 'string' } },\n * );\n * ```\n */\n update(completionId, body, options) {\n return this._client.post(`/chat/completions/${completionId}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/chat/completions', ChatCompletionsPage, { query, ...options });\n }\n /**\n * Delete a stored chat completion. Only Chat Completions that have been created\n * with the `store` parameter set to `true` can be deleted.\n *\n * @example\n * ```ts\n * const chatCompletionDeleted =\n * await client.chat.completions.del('completion_id');\n * ```\n */\n del(completionId, options) {\n return this._client.delete(`/chat/completions/${completionId}`, options);\n }\n}\nexport class ChatCompletionsPage extends CursorPage {\n}\nexport class ChatCompletionStoreMessagesPage extends CursorPage {\n}\nCompletions.ChatCompletionsPage = ChatCompletionsPage;\nCompletions.Messages = Messages;\n//# sourceMappingURL=completions.mjs.map",
|
|
90
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as CompletionsAPI from \"./completions/completions.mjs\";\nimport { ChatCompletionsPage, Completions, } from \"./completions/completions.mjs\";\nexport class Chat extends APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\nChat.Completions = Completions;\nChat.ChatCompletionsPage = ChatCompletionsPage;\n//# sourceMappingURL=chat.mjs.map",
|
|
91
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nexport class Speech extends APIResource {\n /**\n * Generates audio from the input text.\n *\n * @example\n * ```ts\n * const speech = await client.audio.speech.create({\n * input: 'input',\n * model: 'string',\n * voice: 'ash',\n * });\n *\n * const content = await speech.blob();\n * console.log(content);\n * ```\n */\n create(body, options) {\n return this._client.post('/audio/speech', {\n body,\n ...options,\n headers: { Accept: 'application/octet-stream', ...options?.headers },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=speech.mjs.map",
|
|
92
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as Core from \"../../core.mjs\";\nexport class Transcriptions extends APIResource {\n create(body, options) {\n return this._client.post('/audio/transcriptions', Core.multipartFormRequestOptions({\n body,\n ...options,\n stream: body.stream ?? false,\n __metadata: { model: body.model },\n }));\n }\n}\n//# sourceMappingURL=transcriptions.mjs.map",
|
|
93
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as Core from \"../../core.mjs\";\nexport class Translations extends APIResource {\n create(body, options) {\n return this._client.post('/audio/translations', Core.multipartFormRequestOptions({ body, ...options, __metadata: { model: body.model } }));\n }\n}\n//# sourceMappingURL=translations.mjs.map",
|
|
94
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as SpeechAPI from \"./speech.mjs\";\nimport { Speech } from \"./speech.mjs\";\nimport * as TranscriptionsAPI from \"./transcriptions.mjs\";\nimport { Transcriptions, } from \"./transcriptions.mjs\";\nimport * as TranslationsAPI from \"./translations.mjs\";\nimport { Translations, } from \"./translations.mjs\";\nexport class Audio extends APIResource {\n constructor() {\n super(...arguments);\n this.transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n this.translations = new TranslationsAPI.Translations(this._client);\n this.speech = new SpeechAPI.Speech(this._client);\n }\n}\nAudio.Transcriptions = Transcriptions;\nAudio.Translations = Translations;\nAudio.Speech = Speech;\n//# sourceMappingURL=audio.mjs.map",
|
|
95
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { CursorPage } from \"../pagination.mjs\";\nexport class Batches extends APIResource {\n /**\n * Creates and executes a batch from an uploaded file of requests\n */\n create(body, options) {\n return this._client.post('/batches', { body, ...options });\n }\n /**\n * Retrieves a batch.\n */\n retrieve(batchId, options) {\n return this._client.get(`/batches/${batchId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/batches', BatchesPage, { query, ...options });\n }\n /**\n * Cancels an in-progress batch. The batch will be in status `cancelling` for up to\n * 10 minutes, before changing to `cancelled`, where it will have partial results\n * (if any) available in the output file.\n */\n cancel(batchId, options) {\n return this._client.post(`/batches/${batchId}/cancel`, options);\n }\n}\nexport class BatchesPage extends CursorPage {\n}\nBatches.BatchesPage = BatchesPage;\n//# sourceMappingURL=batches.mjs.map",
|
|
96
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_handleError;\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nexport class EventStream {\n constructor() {\n _EventStream_instances.add(this);\n this.controller = new AbortController();\n _EventStream_connectedPromise.set(this, void 0);\n _EventStream_resolveConnectedPromise.set(this, () => { });\n _EventStream_rejectConnectedPromise.set(this, () => { });\n _EventStream_endPromise.set(this, void 0);\n _EventStream_resolveEndPromise.set(this, () => { });\n _EventStream_rejectEndPromise.set(this, () => { });\n _EventStream_listeners.set(this, {});\n _EventStream_ended.set(this, false);\n _EventStream_errored.set(this, false);\n _EventStream_aborted.set(this, false);\n _EventStream_catchingPromiseCreated.set(this, false);\n __classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, \"f\");\n }), \"f\");\n __classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve, \"f\");\n __classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, \"f\");\n }), \"f\");\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n __classPrivateFieldGet(this, _EventStream_connectedPromise, \"f\").catch(() => { });\n __classPrivateFieldGet(this, _EventStream_endPromise, \"f\").catch(() => { });\n }\n _run(executor) {\n // Unfortunately if we call `executor()` immediately we get runtime errors about\n // references to `this` before the `super()` constructor call returns.\n setTimeout(() => {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, __classPrivateFieldGet(this, _EventStream_instances, \"m\", _EventStream_handleError).bind(this));\n }, 0);\n }\n _connected() {\n if (this.ended)\n return;\n __classPrivateFieldGet(this, _EventStream_resolveConnectedPromise, \"f\").call(this);\n this._emit('connect');\n }\n get ended() {\n return __classPrivateFieldGet(this, _EventStream_ended, \"f\");\n }\n get errored() {\n return __classPrivateFieldGet(this, _EventStream_errored, \"f\");\n }\n get aborted() {\n return __classPrivateFieldGet(this, _EventStream_aborted, \"f\");\n }\n abort() {\n this.controller.abort();\n }\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n on(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener });\n return this;\n }\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n off(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (!listeners)\n return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0)\n listeners.splice(index, 1);\n return this;\n }\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this ChatCompletionStream, so that calls can be chained\n */\n once(event, listener) {\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted(event) {\n return new Promise((resolve, reject) => {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n if (event !== 'error')\n this.once('error', reject);\n this.once(event, resolve);\n });\n }\n async done() {\n __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n await __classPrivateFieldGet(this, _EventStream_endPromise, \"f\");\n }\n _emit(event, ...args) {\n // make sure we don't emit any events after end\n if (__classPrivateFieldGet(this, _EventStream_ended, \"f\")) {\n return;\n }\n if (event === 'end') {\n __classPrivateFieldSet(this, _EventStream_ended, true, \"f\");\n __classPrivateFieldGet(this, _EventStream_resolveEndPromise, \"f\").call(this);\n }\n const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n if (listeners) {\n __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = listeners.filter((l) => !l.once);\n listeners.forEach(({ listener }) => listener(...args));\n }\n if (event === 'abort') {\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n return;\n }\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n const error = args[0];\n if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.finalChatCompletion()\n // - etc.\n Promise.reject(error);\n }\n __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n this._emit('end');\n }\n }\n _emitFinal() { }\n}\n_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_handleError = function _EventStream_handleError(error) {\n __classPrivateFieldSet(this, _EventStream_errored, true, \"f\");\n if (error instanceof Error && error.name === 'AbortError') {\n error = new APIUserAbortError();\n }\n if (error instanceof APIUserAbortError) {\n __classPrivateFieldSet(this, _EventStream_aborted, true, \"f\");\n return this._emit('abort', error);\n }\n if (error instanceof OpenAIError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const openAIError = new OpenAIError(error.message);\n // @ts-ignore\n openAIError.cause = error;\n return this._emit('error', openAIError);\n }\n return this._emit('error', new OpenAIError(String(error)));\n};\n//# sourceMappingURL=EventStream.mjs.map",
|
|
97
|
+
"var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AssistantStream_instances, _AssistantStream_events, _AssistantStream_runStepSnapshots, _AssistantStream_messageSnapshots, _AssistantStream_messageSnapshot, _AssistantStream_finalRun, _AssistantStream_currentContentIndex, _AssistantStream_currentContent, _AssistantStream_currentToolCallIndex, _AssistantStream_currentToolCall, _AssistantStream_currentEvent, _AssistantStream_currentRunSnapshot, _AssistantStream_currentRunStepSnapshot, _AssistantStream_addEvent, _AssistantStream_endRequest, _AssistantStream_handleMessage, _AssistantStream_handleRunStep, _AssistantStream_handleEvent, _AssistantStream_accumulateRunStep, _AssistantStream_accumulateMessage, _AssistantStream_accumulateContent, _AssistantStream_handleRun;\nimport * as Core from \"../core.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nexport class AssistantStream extends EventStream {\n constructor() {\n super(...arguments);\n _AssistantStream_instances.add(this);\n //Track all events in a single list for reference\n _AssistantStream_events.set(this, []);\n //Used to accumulate deltas\n //We are accumulating many types so the value here is not strict\n _AssistantStream_runStepSnapshots.set(this, {});\n _AssistantStream_messageSnapshots.set(this, {});\n _AssistantStream_messageSnapshot.set(this, void 0);\n _AssistantStream_finalRun.set(this, void 0);\n _AssistantStream_currentContentIndex.set(this, void 0);\n _AssistantStream_currentContent.set(this, void 0);\n _AssistantStream_currentToolCallIndex.set(this, void 0);\n _AssistantStream_currentToolCall.set(this, void 0);\n //For current snapshot methods\n _AssistantStream_currentEvent.set(this, void 0);\n _AssistantStream_currentRunSnapshot.set(this, void 0);\n _AssistantStream_currentRunStepSnapshot.set(this, void 0);\n }\n [(_AssistantStream_events = new WeakMap(), _AssistantStream_runStepSnapshots = new WeakMap(), _AssistantStream_messageSnapshots = new WeakMap(), _AssistantStream_messageSnapshot = new WeakMap(), _AssistantStream_finalRun = new WeakMap(), _AssistantStream_currentContentIndex = new WeakMap(), _AssistantStream_currentContent = new WeakMap(), _AssistantStream_currentToolCallIndex = new WeakMap(), _AssistantStream_currentToolCall = new WeakMap(), _AssistantStream_currentEvent = new WeakMap(), _AssistantStream_currentRunSnapshot = new WeakMap(), _AssistantStream_currentRunStepSnapshot = new WeakMap(), _AssistantStream_instances = new WeakSet(), Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n //Catch all for passing along all events\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n static fromReadableStream(stream) {\n const runner = new AssistantStream();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n static createToolAssistantStream(threadId, runId, runs, params, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._runToolAssistantStream(threadId, runId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createToolAssistantStream(run, threadId, runId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.submitToolOutputs(threadId, runId, body, {\n ...options,\n signal: this.controller.signal,\n });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static createThreadAssistantStream(params, thread, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._threadAssistantStream(params, thread, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n static createAssistantStream(threadId, runs, params, options) {\n const runner = new AssistantStream();\n runner._run(() => runner._runAssistantStream(threadId, runs, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n currentEvent() {\n return __classPrivateFieldGet(this, _AssistantStream_currentEvent, \"f\");\n }\n currentRun() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunSnapshot, \"f\");\n }\n currentMessageSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\");\n }\n currentRunStepSnapshot() {\n return __classPrivateFieldGet(this, _AssistantStream_currentRunStepSnapshot, \"f\");\n }\n async finalRunSteps() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\"));\n }\n async finalMessages() {\n await this.done();\n return Object.values(__classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\"));\n }\n async finalRun() {\n await this.done();\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run was not received.');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n }\n async _createThreadAssistantStream(thread, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await thread.createAndRun(body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n async _createAssistantStream(run, threadId, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n const body = { ...params, stream: true };\n const stream = await run.create(threadId, body, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n }\n static accumulateDelta(acc, delta) {\n for (const [key, deltaValue] of Object.entries(delta)) {\n if (!acc.hasOwnProperty(key)) {\n acc[key] = deltaValue;\n continue;\n }\n let accValue = acc[key];\n if (accValue === null || accValue === undefined) {\n acc[key] = deltaValue;\n continue;\n }\n // We don't accumulate these special properties\n if (key === 'index' || key === 'type') {\n acc[key] = deltaValue;\n continue;\n }\n // Type-specific accumulation logic\n if (typeof accValue === 'string' && typeof deltaValue === 'string') {\n accValue += deltaValue;\n }\n else if (typeof accValue === 'number' && typeof deltaValue === 'number') {\n accValue += deltaValue;\n }\n else if (Core.isObj(accValue) && Core.isObj(deltaValue)) {\n accValue = this.accumulateDelta(accValue, deltaValue);\n }\n else if (Array.isArray(accValue) && Array.isArray(deltaValue)) {\n if (accValue.every((x) => typeof x === 'string' || typeof x === 'number')) {\n accValue.push(...deltaValue); // Use spread syntax for efficient addition\n continue;\n }\n for (const deltaEntry of deltaValue) {\n if (!Core.isObj(deltaEntry)) {\n throw new Error(`Expected array delta entry to be an object but got: ${deltaEntry}`);\n }\n const index = deltaEntry['index'];\n if (index == null) {\n console.error(deltaEntry);\n throw new Error('Expected array delta entry to have an `index` property');\n }\n if (typeof index !== 'number') {\n throw new Error(`Expected array delta entry \\`index\\` property to be a number but got ${index}`);\n }\n const accEntry = accValue[index];\n if (accEntry == null) {\n accValue.push(deltaEntry);\n }\n else {\n accValue[index] = this.accumulateDelta(accEntry, deltaEntry);\n }\n }\n continue;\n }\n else {\n throw Error(`Unhandled record type: ${key}, deltaValue: ${deltaValue}, accValue: ${accValue}`);\n }\n acc[key] = accValue;\n }\n return acc;\n }\n _addRun(run) {\n return run;\n }\n async _threadAssistantStream(params, thread, options) {\n return await this._createThreadAssistantStream(thread, params, options);\n }\n async _runAssistantStream(threadId, runs, params, options) {\n return await this._createAssistantStream(runs, threadId, params, options);\n }\n async _runToolAssistantStream(threadId, runId, runs, params, options) {\n return await this._createToolAssistantStream(runs, threadId, runId, params, options);\n }\n}\n_AssistantStream_addEvent = function _AssistantStream_addEvent(event) {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _AssistantStream_currentEvent, event, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleEvent).call(this, event);\n switch (event.event) {\n case 'thread.created':\n //No action on this event.\n break;\n case 'thread.run.created':\n case 'thread.run.queued':\n case 'thread.run.in_progress':\n case 'thread.run.requires_action':\n case 'thread.run.completed':\n case 'thread.run.incomplete':\n case 'thread.run.failed':\n case 'thread.run.cancelling':\n case 'thread.run.cancelled':\n case 'thread.run.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRun).call(this, event);\n break;\n case 'thread.run.step.created':\n case 'thread.run.step.in_progress':\n case 'thread.run.step.delta':\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRunStep).call(this, event);\n break;\n case 'thread.message.created':\n case 'thread.message.in_progress':\n case 'thread.message.delta':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleMessage).call(this, event);\n break;\n case 'error':\n //This is included for completeness, but errors are processed in the SSE event processing so this should not occur\n throw new Error('Encountered an error event in event processing - errors should be processed earlier');\n default:\n assertNever(event);\n }\n}, _AssistantStream_endRequest = function _AssistantStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n throw Error('Final run has not been received');\n return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n}, _AssistantStream_handleMessage = function _AssistantStream_handleMessage(event) {\n const [accumulatedMessage, newContent] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateMessage).call(this, event, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, accumulatedMessage, \"f\");\n __classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\")[accumulatedMessage.id] = accumulatedMessage;\n for (const content of newContent) {\n const snapshotContent = accumulatedMessage.content[content.index];\n if (snapshotContent?.type == 'text') {\n this._emit('textCreated', snapshotContent.text);\n }\n }\n switch (event.event) {\n case 'thread.message.created':\n this._emit('messageCreated', event.data);\n break;\n case 'thread.message.in_progress':\n break;\n case 'thread.message.delta':\n this._emit('messageDelta', event.data.delta, accumulatedMessage);\n if (event.data.delta.content) {\n for (const content of event.data.delta.content) {\n //If it is text delta, emit a text delta event\n if (content.type == 'text' && content.text) {\n let textDelta = content.text;\n let snapshot = accumulatedMessage.content[content.index];\n if (snapshot && snapshot.type == 'text') {\n this._emit('textDelta', textDelta, snapshot.text);\n }\n else {\n throw Error('The snapshot associated with this text delta is not text or missing');\n }\n }\n if (content.index != __classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")) {\n //See if we have in progress content\n if (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\")) {\n switch (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").type) {\n case 'text':\n this._emit('textDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'image_file':\n this._emit('imageFileDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContentIndex, content.index, \"f\");\n }\n __classPrivateFieldSet(this, _AssistantStream_currentContent, accumulatedMessage.content[content.index], \"f\");\n }\n }\n break;\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //We emit the latest content we were working on on completion (including incomplete)\n if (__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\") !== undefined) {\n const currentContent = event.data.content[__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")];\n if (currentContent) {\n switch (currentContent.type) {\n case 'image_file':\n this._emit('imageFileDone', currentContent.image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n case 'text':\n this._emit('textDone', currentContent.text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n break;\n }\n }\n }\n if (__classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\")) {\n this._emit('messageDone', event.data);\n }\n __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, undefined, \"f\");\n }\n}, _AssistantStream_handleRunStep = function _AssistantStream_handleRunStep(event) {\n const accumulatedRunStep = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateRunStep).call(this, event);\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, accumulatedRunStep, \"f\");\n switch (event.event) {\n case 'thread.run.step.created':\n this._emit('runStepCreated', event.data);\n break;\n case 'thread.run.step.delta':\n const delta = event.data.delta;\n if (delta.step_details &&\n delta.step_details.type == 'tool_calls' &&\n delta.step_details.tool_calls &&\n accumulatedRunStep.step_details.type == 'tool_calls') {\n for (const toolCall of delta.step_details.tool_calls) {\n if (toolCall.index == __classPrivateFieldGet(this, _AssistantStream_currentToolCallIndex, \"f\")) {\n this._emit('toolCallDelta', toolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index]);\n }\n else {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n __classPrivateFieldSet(this, _AssistantStream_currentToolCallIndex, toolCall.index, \"f\");\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index], \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"))\n this._emit('toolCallCreated', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n }\n }\n }\n this._emit('runStepDelta', event.data.delta, accumulatedRunStep);\n break;\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, undefined, \"f\");\n const details = event.data.step_details;\n if (details.type == 'tool_calls') {\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n }\n this._emit('runStepDone', event.data, accumulatedRunStep);\n break;\n case 'thread.run.step.in_progress':\n break;\n }\n}, _AssistantStream_handleEvent = function _AssistantStream_handleEvent(event) {\n __classPrivateFieldGet(this, _AssistantStream_events, \"f\").push(event);\n this._emit('event', event);\n}, _AssistantStream_accumulateRunStep = function _AssistantStream_accumulateRunStep(event) {\n switch (event.event) {\n case 'thread.run.step.created':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n return event.data;\n case 'thread.run.step.delta':\n let snapshot = __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n if (!snapshot) {\n throw Error('Received a RunStepDelta before creation of a snapshot');\n }\n let data = event.data;\n if (data.delta) {\n const accumulated = AssistantStream.accumulateDelta(snapshot, data.delta);\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = accumulated;\n }\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n case 'thread.run.step.completed':\n case 'thread.run.step.failed':\n case 'thread.run.step.cancelled':\n case 'thread.run.step.expired':\n case 'thread.run.step.in_progress':\n __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n break;\n }\n if (__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id])\n return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n throw new Error('No snapshot available');\n}, _AssistantStream_accumulateMessage = function _AssistantStream_accumulateMessage(event, snapshot) {\n let newContent = [];\n switch (event.event) {\n case 'thread.message.created':\n //On creation the snapshot is just the initial message\n return [event.data, newContent];\n case 'thread.message.delta':\n if (!snapshot) {\n throw Error('Received a delta with no existing snapshot (there should be one from message creation)');\n }\n let data = event.data;\n //If this delta does not have content, nothing to process\n if (data.delta.content) {\n for (const contentElement of data.delta.content) {\n if (contentElement.index in snapshot.content) {\n let currentContent = snapshot.content[contentElement.index];\n snapshot.content[contentElement.index] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateContent).call(this, contentElement, currentContent);\n }\n else {\n snapshot.content[contentElement.index] = contentElement;\n // This is a new element\n newContent.push(contentElement);\n }\n }\n }\n return [snapshot, newContent];\n case 'thread.message.in_progress':\n case 'thread.message.completed':\n case 'thread.message.incomplete':\n //No changes on other thread events\n if (snapshot) {\n return [snapshot, newContent];\n }\n else {\n throw Error('Received thread message event with no existing snapshot');\n }\n }\n throw Error('Tried to accumulate a non-message event');\n}, _AssistantStream_accumulateContent = function _AssistantStream_accumulateContent(contentElement, currentContent) {\n return AssistantStream.accumulateDelta(currentContent, contentElement);\n}, _AssistantStream_handleRun = function _AssistantStream_handleRun(event) {\n __classPrivateFieldSet(this, _AssistantStream_currentRunSnapshot, event.data, \"f\");\n switch (event.event) {\n case 'thread.run.created':\n break;\n case 'thread.run.queued':\n break;\n case 'thread.run.in_progress':\n break;\n case 'thread.run.requires_action':\n case 'thread.run.cancelled':\n case 'thread.run.failed':\n case 'thread.run.completed':\n case 'thread.run.expired':\n __classPrivateFieldSet(this, _AssistantStream_finalRun, event.data, \"f\");\n if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n }\n break;\n case 'thread.run.cancelling':\n break;\n }\n};\nfunction assertNever(_x) { }\n//# sourceMappingURL=AssistantStream.mjs.map",
|
|
98
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nimport { AssistantStream } from \"../../lib/AssistantStream.mjs\";\nexport class Assistants extends APIResource {\n /**\n * Create an assistant with a model and instructions.\n *\n * @example\n * ```ts\n * const assistant = await client.beta.assistants.create({\n * model: 'gpt-4o',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/assistants', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves an assistant.\n *\n * @example\n * ```ts\n * const assistant = await client.beta.assistants.retrieve(\n * 'assistant_id',\n * );\n * ```\n */\n retrieve(assistantId, options) {\n return this._client.get(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies an assistant.\n *\n * @example\n * ```ts\n * const assistant = await client.beta.assistants.update(\n * 'assistant_id',\n * );\n * ```\n */\n update(assistantId, body, options) {\n return this._client.post(`/assistants/${assistantId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/assistants', AssistantsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete an assistant.\n *\n * @example\n * ```ts\n * const assistantDeleted = await client.beta.assistants.del(\n * 'assistant_id',\n * );\n * ```\n */\n del(assistantId, options) {\n return this._client.delete(`/assistants/${assistantId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class AssistantsPage extends CursorPage {\n}\nAssistants.AssistantsPage = AssistantsPage;\n//# sourceMappingURL=assistants.mjs.map",
|
|
99
|
+
"export function isRunnableFunctionWithParse(fn) {\n return typeof fn.parse === 'function';\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n *\n * @deprecated - please use ParsingToolFunction instead.\n */\nexport class ParsingFunction {\n constructor(input) {\n this.function = input.function;\n this.parse = input.parse;\n this.parameters = input.parameters;\n this.description = input.description;\n this.name = input.name;\n }\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nexport class ParsingToolFunction {\n constructor(input) {\n this.type = 'function';\n this.function = input;\n }\n}\n//# sourceMappingURL=RunnableFunction.mjs.map",
|
|
100
|
+
"export const isAssistantMessage = (message) => {\n return message?.role === 'assistant';\n};\nexport const isFunctionMessage = (message) => {\n return message?.role === 'function';\n};\nexport const isToolMessage = (message) => {\n return message?.role === 'tool';\n};\nexport function isPresent(obj) {\n return obj != null;\n}\n//# sourceMappingURL=chatCompletionUtils.mjs.map",
|
|
101
|
+
"import { ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError } from \"../error.mjs\";\nexport function makeParseableResponseFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function makeParseableTextFormat(response_format, parser) {\n const obj = { ...response_format };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-response-format',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableResponseFormat(response_format) {\n return response_format?.['$brand'] === 'auto-parseable-response-format';\n}\nexport function makeParseableTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nexport function maybeParseChatCompletion(completion, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...completion,\n choices: completion.choices.map((choice) => ({\n ...choice,\n message: {\n ...choice.message,\n parsed: null,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls,\n }\n : undefined),\n },\n })),\n };\n }\n return parseChatCompletion(completion, params);\n}\nexport function parseChatCompletion(completion, params) {\n const choices = completion.choices.map((choice) => {\n if (choice.finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (choice.finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n return {\n ...choice,\n message: {\n ...choice.message,\n ...(choice.message.tool_calls ?\n {\n tool_calls: choice.message.tool_calls?.map((toolCall) => parseToolCall(params, toolCall)) ?? undefined,\n }\n : undefined),\n parsed: choice.message.content && !choice.message.refusal ?\n parseResponseFormat(params, choice.message.content)\n : null,\n },\n };\n });\n return { ...completion, choices };\n}\nfunction parseResponseFormat(params, content) {\n if (params.response_format?.type !== 'json_schema') {\n return null;\n }\n if (params.response_format?.type === 'json_schema') {\n if ('$parseRaw' in params.response_format) {\n const response_format = params.response_format;\n return response_format.$parseRaw(content);\n }\n return JSON.parse(content);\n }\n return null;\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = params.tools?.find((inputTool) => inputTool.function?.name === toolCall.function.name);\n return {\n ...toolCall,\n function: {\n ...toolCall.function,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCall.function.arguments)\n : null,\n },\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = params.tools?.find((inputTool) => inputTool.function?.name === toolCall.function.name);\n return isAutoParsableTool(inputTool) || inputTool?.function.strict || false;\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.response_format)) {\n return true;\n }\n return (params.tools?.some((t) => isAutoParsableTool(t) || (t.type === 'function' && t.function.strict === true)) ?? false);\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\n//# sourceMappingURL=parser.mjs.map",
|
|
102
|
+
"var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _AbstractChatCompletionRunner_instances, _AbstractChatCompletionRunner_getFinalContent, _AbstractChatCompletionRunner_getFinalMessage, _AbstractChatCompletionRunner_getFinalFunctionCall, _AbstractChatCompletionRunner_getFinalFunctionCallResult, _AbstractChatCompletionRunner_calculateTotalUsage, _AbstractChatCompletionRunner_validateParams, _AbstractChatCompletionRunner_stringifyFunctionCallResult;\nimport { OpenAIError } from \"../error.mjs\";\nimport { isRunnableFunctionWithParse, } from \"./RunnableFunction.mjs\";\nimport { isAssistantMessage, isFunctionMessage, isToolMessage } from \"./chatCompletionUtils.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isAutoParsableTool, parseChatCompletion } from \"../lib/parser.mjs\";\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nexport class AbstractChatCompletionRunner extends EventStream {\n constructor() {\n super(...arguments);\n _AbstractChatCompletionRunner_instances.add(this);\n this._chatCompletions = [];\n this.messages = [];\n }\n _addChatCompletion(chatCompletion) {\n this._chatCompletions.push(chatCompletion);\n this._emit('chatCompletion', chatCompletion);\n const message = chatCompletion.choices[0]?.message;\n if (message)\n this._addMessage(message);\n return chatCompletion;\n }\n _addMessage(message, emit = true) {\n if (!('content' in message))\n message.content = null;\n this.messages.push(message);\n if (emit) {\n this._emit('message', message);\n if ((isFunctionMessage(message) || isToolMessage(message)) && message.content) {\n // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n this._emit('functionCallResult', message.content);\n }\n else if (isAssistantMessage(message) && message.function_call) {\n this._emit('functionCall', message.function_call);\n }\n else if (isAssistantMessage(message) && message.tool_calls) {\n for (const tool_call of message.tool_calls) {\n if (tool_call.type === 'function') {\n this._emit('functionCall', tool_call.function);\n }\n }\n }\n }\n }\n /**\n * @returns a promise that resolves with the final ChatCompletion, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n */\n async finalChatCompletion() {\n await this.done();\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (!completion)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return completion;\n }\n /**\n * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalContent() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n }\n /**\n * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalMessage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n }\n /**\n * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n */\n async finalFunctionCall() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n }\n async finalFunctionCallResult() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n }\n async totalUsage() {\n await this.done();\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this);\n }\n allChatCompletions() {\n return [...this._chatCompletions];\n }\n _emitFinal() {\n const completion = this._chatCompletions[this._chatCompletions.length - 1];\n if (completion)\n this._emit('finalChatCompletion', completion);\n const finalMessage = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n if (finalMessage)\n this._emit('finalMessage', finalMessage);\n const finalContent = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n if (finalContent)\n this._emit('finalContent', finalContent);\n const finalFunctionCall = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCall).call(this);\n if (finalFunctionCall)\n this._emit('finalFunctionCall', finalFunctionCall);\n const finalFunctionCallResult = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionCallResult).call(this);\n if (finalFunctionCallResult != null)\n this._emit('finalFunctionCallResult', finalFunctionCallResult);\n if (this._chatCompletions.some((c) => c.usage)) {\n this._emit('totalUsage', __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this));\n }\n }\n async _createChatCompletion(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_validateParams).call(this, params);\n const chatCompletion = await client.chat.completions.create({ ...params, stream: false }, { ...options, signal: this.controller.signal });\n this._connected();\n return this._addChatCompletion(parseChatCompletion(chatCompletion, params));\n }\n async _runChatCompletion(client, params, options) {\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n return await this._createChatCompletion(client, params, options);\n }\n async _runFunctions(client, params, options) {\n const role = 'function';\n const { function_call = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof function_call !== 'string' && function_call?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n const functionsByName = {};\n for (const f of params.functions) {\n functionsByName[f.name || f.function.name] = f;\n }\n const functions = params.functions.map((f) => ({\n name: f.name || f.function.name,\n parameters: f.parameters,\n description: f.description,\n }));\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n function_call,\n functions,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.function_call)\n return;\n const { name, arguments: args } = message.function_call;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. Available options are: ${functions\n .map((f) => JSON.stringify(f.name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, name, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid function_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, name, content });\n continue;\n }\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n this._addMessage({\n role,\n name,\n content: error instanceof Error ? error.message : String(error),\n });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, name, content });\n if (singleFunctionToCall)\n return;\n }\n }\n async _runTools(client, params, options) {\n const role = 'tool';\n const { tool_choice = 'auto', stream, ...restParams } = params;\n const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice?.function?.name;\n const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n // TODO(someday): clean this logic up\n const inputTools = params.tools.map((tool) => {\n if (isAutoParsableTool(tool)) {\n if (!tool.$callback) {\n throw new OpenAIError('Tool given to `.runTools()` that does not have an associated function');\n }\n return {\n type: 'function',\n function: {\n function: tool.$callback,\n name: tool.function.name,\n description: tool.function.description || '',\n parameters: tool.function.parameters,\n parse: tool.$parseRaw,\n strict: true,\n },\n };\n }\n return tool;\n });\n const functionsByName = {};\n for (const f of inputTools) {\n if (f.type === 'function') {\n functionsByName[f.function.name || f.function.function.name] = f.function;\n }\n }\n const tools = 'tools' in params ?\n inputTools.map((t) => t.type === 'function' ?\n {\n type: 'function',\n function: {\n name: t.function.name || t.function.function.name,\n parameters: t.function.parameters,\n description: t.function.description,\n strict: t.function.strict,\n },\n }\n : t)\n : undefined;\n for (const message of params.messages) {\n this._addMessage(message, false);\n }\n for (let i = 0; i < maxChatCompletions; ++i) {\n const chatCompletion = await this._createChatCompletion(client, {\n ...restParams,\n tool_choice,\n tools,\n messages: [...this.messages],\n }, options);\n const message = chatCompletion.choices[0]?.message;\n if (!message) {\n throw new OpenAIError(`missing message in ChatCompletion response`);\n }\n if (!message.tool_calls?.length) {\n return;\n }\n for (const tool_call of message.tool_calls) {\n if (tool_call.type !== 'function')\n continue;\n const tool_call_id = tool_call.id;\n const { name, arguments: args } = tool_call.function;\n const fn = functionsByName[name];\n if (!fn) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(functionsByName)\n .map((name) => JSON.stringify(name))\n .join(', ')}. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n else if (singleFunctionToCall && singleFunctionToCall !== name) {\n const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n let parsed;\n try {\n parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n }\n catch (error) {\n const content = error instanceof Error ? error.message : String(error);\n this._addMessage({ role, tool_call_id, content });\n continue;\n }\n // @ts-expect-error it can't rule out `never` type.\n const rawContent = await fn.function(parsed, this);\n const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n this._addMessage({ role, tool_call_id, content });\n if (singleFunctionToCall) {\n return;\n }\n }\n }\n return;\n }\n}\n_AbstractChatCompletionRunner_instances = new WeakSet(), _AbstractChatCompletionRunner_getFinalContent = function _AbstractChatCompletionRunner_getFinalContent() {\n return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this).content ?? null;\n}, _AbstractChatCompletionRunner_getFinalMessage = function _AbstractChatCompletionRunner_getFinalMessage() {\n let i = this.messages.length;\n while (i-- > 0) {\n const message = this.messages[i];\n if (isAssistantMessage(message)) {\n const { function_call, ...rest } = message;\n // TODO: support audio here\n const ret = {\n ...rest,\n content: message.content ?? null,\n refusal: message.refusal ?? null,\n };\n if (function_call) {\n ret.function_call = function_call;\n }\n return ret;\n }\n }\n throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n}, _AbstractChatCompletionRunner_getFinalFunctionCall = function _AbstractChatCompletionRunner_getFinalFunctionCall() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isAssistantMessage(message) && message?.function_call) {\n return message.function_call;\n }\n if (isAssistantMessage(message) && message?.tool_calls?.length) {\n return message.tool_calls.at(-1)?.function;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_getFinalFunctionCallResult = function _AbstractChatCompletionRunner_getFinalFunctionCallResult() {\n for (let i = this.messages.length - 1; i >= 0; i--) {\n const message = this.messages[i];\n if (isFunctionMessage(message) && message.content != null) {\n return message.content;\n }\n if (isToolMessage(message) &&\n message.content != null &&\n typeof message.content === 'string' &&\n this.messages.some((x) => x.role === 'assistant' &&\n x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id))) {\n return message.content;\n }\n }\n return;\n}, _AbstractChatCompletionRunner_calculateTotalUsage = function _AbstractChatCompletionRunner_calculateTotalUsage() {\n const total = {\n completion_tokens: 0,\n prompt_tokens: 0,\n total_tokens: 0,\n };\n for (const { usage } of this._chatCompletions) {\n if (usage) {\n total.completion_tokens += usage.completion_tokens;\n total.prompt_tokens += usage.prompt_tokens;\n total.total_tokens += usage.total_tokens;\n }\n }\n return total;\n}, _AbstractChatCompletionRunner_validateParams = function _AbstractChatCompletionRunner_validateParams(params) {\n if (params.n != null && params.n > 1) {\n throw new OpenAIError('ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.');\n }\n}, _AbstractChatCompletionRunner_stringifyFunctionCallResult = function _AbstractChatCompletionRunner_stringifyFunctionCallResult(rawContent) {\n return (typeof rawContent === 'string' ? rawContent\n : rawContent === undefined ? 'undefined'\n : JSON.stringify(rawContent));\n};\n//# sourceMappingURL=AbstractChatCompletionRunner.mjs.map",
|
|
103
|
+
"import { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { isAssistantMessage } from \"./chatCompletionUtils.mjs\";\nexport class ChatCompletionRunner extends AbstractChatCompletionRunner {\n /** @deprecated - please use `runTools` instead. */\n static runFunctions(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(client, params, opts));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionRunner();\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n _addMessage(message, emit = true) {\n super._addMessage(message, emit);\n if (isAssistantMessage(message) && message.content) {\n this._emit('content', message.content);\n }\n }\n}\n//# sourceMappingURL=ChatCompletionRunner.mjs.map",
|
|
104
|
+
"const STR = 0b000000001;\nconst NUM = 0b000000010;\nconst ARR = 0b000000100;\nconst OBJ = 0b000001000;\nconst NULL = 0b000010000;\nconst BOOL = 0b000100000;\nconst NAN = 0b001000000;\nconst INFINITY = 0b010000000;\nconst MINUS_INFINITY = 0b100000000;\nconst INF = INFINITY | MINUS_INFINITY;\nconst SPECIAL = NULL | BOOL | INF | NAN;\nconst ATOM = STR | NUM | SPECIAL;\nconst COLLECTION = ARR | OBJ;\nconst ALL = ATOM | COLLECTION;\nconst Allow = {\n STR,\n NUM,\n ARR,\n OBJ,\n NULL,\n BOOL,\n NAN,\n INFINITY,\n MINUS_INFINITY,\n INF,\n SPECIAL,\n ATOM,\n COLLECTION,\n ALL,\n};\n// The JSON string segment was unable to be parsed completely\nclass PartialJSON extends Error {\n}\nclass MalformedJSON extends Error {\n}\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = Allow.ALL) {\n if (typeof jsonString !== 'string') {\n throw new TypeError(`expecting str, got ${typeof jsonString}`);\n }\n if (!jsonString.trim()) {\n throw new Error(`${jsonString} is empty`);\n }\n return _parseJSON(jsonString.trim(), allowPartial);\n}\nconst _parseJSON = (jsonString, allow) => {\n const length = jsonString.length;\n let index = 0;\n const markPartialJSON = (msg) => {\n throw new PartialJSON(`${msg} at position ${index}`);\n };\n const throwMalformedError = (msg) => {\n throw new MalformedJSON(`${msg} at position ${index}`);\n };\n const parseAny = () => {\n skipBlank();\n if (index >= length)\n markPartialJSON('Unexpected end of input');\n if (jsonString[index] === '\"')\n return parseStr();\n if (jsonString[index] === '{')\n return parseObj();\n if (jsonString[index] === '[')\n return parseArr();\n if (jsonString.substring(index, index + 4) === 'null' ||\n (Allow.NULL & allow && length - index < 4 && 'null'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return null;\n }\n if (jsonString.substring(index, index + 4) === 'true' ||\n (Allow.BOOL & allow && length - index < 4 && 'true'.startsWith(jsonString.substring(index)))) {\n index += 4;\n return true;\n }\n if (jsonString.substring(index, index + 5) === 'false' ||\n (Allow.BOOL & allow && length - index < 5 && 'false'.startsWith(jsonString.substring(index)))) {\n index += 5;\n return false;\n }\n if (jsonString.substring(index, index + 8) === 'Infinity' ||\n (Allow.INFINITY & allow && length - index < 8 && 'Infinity'.startsWith(jsonString.substring(index)))) {\n index += 8;\n return Infinity;\n }\n if (jsonString.substring(index, index + 9) === '-Infinity' ||\n (Allow.MINUS_INFINITY & allow &&\n 1 < length - index &&\n length - index < 9 &&\n '-Infinity'.startsWith(jsonString.substring(index)))) {\n index += 9;\n return -Infinity;\n }\n if (jsonString.substring(index, index + 3) === 'NaN' ||\n (Allow.NAN & allow && length - index < 3 && 'NaN'.startsWith(jsonString.substring(index)))) {\n index += 3;\n return NaN;\n }\n return parseNum();\n };\n const parseStr = () => {\n const start = index;\n let escape = false;\n index++; // skip initial quote\n while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === '\\\\'))) {\n escape = jsonString[index] === '\\\\' ? !escape : false;\n index++;\n }\n if (jsonString.charAt(index) == '\"') {\n try {\n return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n else if (Allow.STR & allow) {\n try {\n return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n }\n catch (e) {\n // SyntaxError: Invalid escape sequence\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('\\\\')) + '\"');\n }\n }\n markPartialJSON('Unterminated string literal');\n };\n const parseObj = () => {\n index++; // skip initial brace\n skipBlank();\n const obj = {};\n try {\n while (jsonString[index] !== '}') {\n skipBlank();\n if (index >= length && Allow.OBJ & allow)\n return obj;\n const key = parseStr();\n skipBlank();\n index++; // skip colon\n try {\n const value = parseAny();\n Object.defineProperty(obj, key, { value, writable: true, enumerable: true, configurable: true });\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n throw e;\n }\n skipBlank();\n if (jsonString[index] === ',')\n index++; // skip comma\n }\n }\n catch (e) {\n if (Allow.OBJ & allow)\n return obj;\n else\n markPartialJSON(\"Expected '}' at end of object\");\n }\n index++; // skip final brace\n return obj;\n };\n const parseArr = () => {\n index++; // skip initial bracket\n const arr = [];\n try {\n while (jsonString[index] !== ']') {\n arr.push(parseAny());\n skipBlank();\n if (jsonString[index] === ',') {\n index++; // skip comma\n }\n }\n }\n catch (e) {\n if (Allow.ARR & allow) {\n return arr;\n }\n markPartialJSON(\"Expected ']' at end of array\");\n }\n index++; // skip final bracket\n return arr;\n };\n const parseNum = () => {\n if (index === 0) {\n if (jsonString === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n if (Allow.NUM & allow) {\n try {\n if ('.' === jsonString[jsonString.length - 1])\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('.')));\n return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('e')));\n }\n catch (e) { }\n }\n throwMalformedError(String(e));\n }\n }\n const start = index;\n if (jsonString[index] === '-')\n index++;\n while (jsonString[index] && !',]}'.includes(jsonString[index]))\n index++;\n if (index == length && !(Allow.NUM & allow))\n markPartialJSON('Unterminated number literal');\n try {\n return JSON.parse(jsonString.substring(start, index));\n }\n catch (e) {\n if (jsonString.substring(start, index) === '-' && Allow.NUM & allow)\n markPartialJSON(\"Not sure what '-' is\");\n try {\n return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('e')));\n }\n catch (e) {\n throwMalformedError(String(e));\n }\n }\n };\n const skipBlank = () => {\n while (index < length && ' \\n\\r\\t'.includes(jsonString[index])) {\n index++;\n }\n };\n return parseAny();\n};\n// using this function with malformed JSON is undefined behavior\nconst partialParse = (input) => parseJSON(input, Allow.ALL ^ Allow.NUM);\nexport { partialParse, PartialJSON, MalformedJSON };\n//# sourceMappingURL=parser.mjs.map",
|
|
105
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ChatCompletionStream_instances, _ChatCompletionStream_params, _ChatCompletionStream_choiceEventStates, _ChatCompletionStream_currentChatCompletionSnapshot, _ChatCompletionStream_beginRequest, _ChatCompletionStream_getChoiceEventState, _ChatCompletionStream_addChunk, _ChatCompletionStream_emitToolCallDoneEvent, _ChatCompletionStream_emitContentDoneEvents, _ChatCompletionStream_endRequest, _ChatCompletionStream_getAutoParseableResponseFormat, _ChatCompletionStream_accumulateChatCompletion;\nimport { OpenAIError, APIUserAbortError, LengthFinishReasonError, ContentFilterFinishReasonError, } from \"../error.mjs\";\nimport { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { hasAutoParseableInput, isAutoParsableResponseFormat, isAutoParsableTool, maybeParseChatCompletion, shouldParseToolCall, } from \"../lib/parser.mjs\";\nimport { partialParse } from \"../_vendor/partial-json-parser/parser.mjs\";\nexport class ChatCompletionStream extends AbstractChatCompletionRunner {\n constructor(params) {\n super();\n _ChatCompletionStream_instances.add(this);\n _ChatCompletionStream_params.set(this, void 0);\n _ChatCompletionStream_choiceEventStates.set(this, void 0);\n _ChatCompletionStream_currentChatCompletionSnapshot.set(this, void 0);\n __classPrivateFieldSet(this, _ChatCompletionStream_params, params, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n }\n get currentChatCompletionSnapshot() {\n return __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n }\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStream(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n static createChatCompletion(client, params, options) {\n const runner = new ChatCompletionStream(params);\n runner._run(() => runner._runChatCompletion(client, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n return runner;\n }\n async _createChatCompletion(client, params, options) {\n super._createChatCompletion;\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n const stream = await client.chat.completions.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n this._connected();\n for await (const chunk of stream) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n async _fromReadableStream(readableStream, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n this._connected();\n const stream = Stream.fromReadableStream(readableStream, this.controller);\n let chatId;\n for await (const chunk of stream) {\n if (chatId && chatId !== chunk.id) {\n // A new request has been made.\n this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n chatId = chunk.id;\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n }\n [(_ChatCompletionStream_params = new WeakMap(), _ChatCompletionStream_choiceEventStates = new WeakMap(), _ChatCompletionStream_currentChatCompletionSnapshot = new WeakMap(), _ChatCompletionStream_instances = new WeakSet(), _ChatCompletionStream_beginRequest = function _ChatCompletionStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n }, _ChatCompletionStream_getChoiceEventState = function _ChatCompletionStream_getChoiceEventState(choice) {\n let state = __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index];\n if (state) {\n return state;\n }\n state = {\n content_done: false,\n refusal_done: false,\n logprobs_content_done: false,\n logprobs_refusal_done: false,\n done_tool_calls: new Set(),\n current_tool_call_index: null,\n };\n __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index] = state;\n return state;\n }, _ChatCompletionStream_addChunk = function _ChatCompletionStream_addChunk(chunk) {\n if (this.ended)\n return;\n const completion = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_accumulateChatCompletion).call(this, chunk);\n this._emit('chunk', chunk, completion);\n for (const choice of chunk.choices) {\n const choiceSnapshot = completion.choices[choice.index];\n if (choice.delta.content != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.content) {\n this._emit('content', choice.delta.content, choiceSnapshot.message.content);\n this._emit('content.delta', {\n delta: choice.delta.content,\n snapshot: choiceSnapshot.message.content,\n parsed: choiceSnapshot.message.parsed,\n });\n }\n if (choice.delta.refusal != null &&\n choiceSnapshot.message?.role === 'assistant' &&\n choiceSnapshot.message?.refusal) {\n this._emit('refusal.delta', {\n delta: choice.delta.refusal,\n snapshot: choiceSnapshot.message.refusal,\n });\n }\n if (choice.logprobs?.content != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.content.delta', {\n content: choice.logprobs?.content,\n snapshot: choiceSnapshot.logprobs?.content ?? [],\n });\n }\n if (choice.logprobs?.refusal != null && choiceSnapshot.message?.role === 'assistant') {\n this._emit('logprobs.refusal.delta', {\n refusal: choice.logprobs?.refusal,\n snapshot: choiceSnapshot.logprobs?.refusal ?? [],\n });\n }\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.finish_reason) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n for (const toolCall of choice.delta.tool_calls ?? []) {\n if (state.current_tool_call_index !== toolCall.index) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n // new tool call started, the previous one is done\n if (state.current_tool_call_index != null) {\n __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n }\n }\n state.current_tool_call_index = toolCall.index;\n }\n for (const toolCallDelta of choice.delta.tool_calls ?? []) {\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallDelta.index];\n if (!toolCallSnapshot?.type) {\n continue;\n }\n if (toolCallSnapshot?.type === 'function') {\n this._emit('tool_calls.function.arguments.delta', {\n name: toolCallSnapshot.function?.name,\n index: toolCallDelta.index,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: toolCallSnapshot.function.parsed_arguments,\n arguments_delta: toolCallDelta.function?.arguments ?? '',\n });\n }\n else {\n assertNever(toolCallSnapshot?.type);\n }\n }\n }\n }, _ChatCompletionStream_emitToolCallDoneEvent = function _ChatCompletionStream_emitToolCallDoneEvent(choiceSnapshot, toolCallIndex) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (state.done_tool_calls.has(toolCallIndex)) {\n // we've already fired the done event\n return;\n }\n const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallIndex];\n if (!toolCallSnapshot) {\n throw new Error('no tool call snapshot');\n }\n if (!toolCallSnapshot.type) {\n throw new Error('tool call snapshot missing `type`');\n }\n if (toolCallSnapshot.type === 'function') {\n const inputTool = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.tools?.find((tool) => tool.type === 'function' && tool.function.name === toolCallSnapshot.function.name);\n this._emit('tool_calls.function.arguments.done', {\n name: toolCallSnapshot.function.name,\n index: toolCallIndex,\n arguments: toolCallSnapshot.function.arguments,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCallSnapshot.function.arguments)\n : inputTool?.function.strict ? JSON.parse(toolCallSnapshot.function.arguments)\n : null,\n });\n }\n else {\n assertNever(toolCallSnapshot.type);\n }\n }, _ChatCompletionStream_emitContentDoneEvents = function _ChatCompletionStream_emitContentDoneEvents(choiceSnapshot) {\n const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n if (choiceSnapshot.message.content && !state.content_done) {\n state.content_done = true;\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this);\n this._emit('content.done', {\n content: choiceSnapshot.message.content,\n parsed: responseFormat ? responseFormat.$parseRaw(choiceSnapshot.message.content) : null,\n });\n }\n if (choiceSnapshot.message.refusal && !state.refusal_done) {\n state.refusal_done = true;\n this._emit('refusal.done', { refusal: choiceSnapshot.message.refusal });\n }\n if (choiceSnapshot.logprobs?.content && !state.logprobs_content_done) {\n state.logprobs_content_done = true;\n this._emit('logprobs.content.done', { content: choiceSnapshot.logprobs.content });\n }\n if (choiceSnapshot.logprobs?.refusal && !state.logprobs_refusal_done) {\n state.logprobs_refusal_done = true;\n this._emit('logprobs.refusal.done', { refusal: choiceSnapshot.logprobs.refusal });\n }\n }, _ChatCompletionStream_endRequest = function _ChatCompletionStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any chunks`);\n }\n __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n return finalizeChatCompletion(snapshot, __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"));\n }, _ChatCompletionStream_getAutoParseableResponseFormat = function _ChatCompletionStream_getAutoParseableResponseFormat() {\n const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.response_format;\n if (isAutoParsableResponseFormat(responseFormat)) {\n return responseFormat;\n }\n return null;\n }, _ChatCompletionStream_accumulateChatCompletion = function _ChatCompletionStream_accumulateChatCompletion(chunk) {\n var _a, _b, _c, _d;\n let snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n const { choices, ...rest } = chunk;\n if (!snapshot) {\n snapshot = __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, {\n ...rest,\n choices: [],\n }, \"f\");\n }\n else {\n Object.assign(snapshot, rest);\n }\n for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n let choice = snapshot.choices[index];\n if (!choice) {\n choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n }\n if (logprobs) {\n if (!choice.logprobs) {\n choice.logprobs = Object.assign({}, logprobs);\n }\n else {\n const { content, refusal, ...rest } = logprobs;\n assertIsEmpty(rest);\n Object.assign(choice.logprobs, rest);\n if (content) {\n (_a = choice.logprobs).content ?? (_a.content = []);\n choice.logprobs.content.push(...content);\n }\n if (refusal) {\n (_b = choice.logprobs).refusal ?? (_b.refusal = []);\n choice.logprobs.refusal.push(...refusal);\n }\n }\n }\n if (finish_reason) {\n choice.finish_reason = finish_reason;\n if (__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\") && hasAutoParseableInput(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"))) {\n if (finish_reason === 'length') {\n throw new LengthFinishReasonError();\n }\n if (finish_reason === 'content_filter') {\n throw new ContentFilterFinishReasonError();\n }\n }\n }\n Object.assign(choice, other);\n if (!delta)\n continue; // Shouldn't happen; just in case.\n const { content, refusal, function_call, role, tool_calls, ...rest } = delta;\n assertIsEmpty(rest);\n Object.assign(choice.message, rest);\n if (refusal) {\n choice.message.refusal = (choice.message.refusal || '') + refusal;\n }\n if (role)\n choice.message.role = role;\n if (function_call) {\n if (!choice.message.function_call) {\n choice.message.function_call = function_call;\n }\n else {\n if (function_call.name)\n choice.message.function_call.name = function_call.name;\n if (function_call.arguments) {\n (_c = choice.message.function_call).arguments ?? (_c.arguments = '');\n choice.message.function_call.arguments += function_call.arguments;\n }\n }\n }\n if (content) {\n choice.message.content = (choice.message.content || '') + content;\n if (!choice.message.refusal && __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this)) {\n choice.message.parsed = partialParse(choice.message.content);\n }\n }\n if (tool_calls) {\n if (!choice.message.tool_calls)\n choice.message.tool_calls = [];\n for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n const tool_call = ((_d = choice.message.tool_calls)[index] ?? (_d[index] = {}));\n Object.assign(tool_call, rest);\n if (id)\n tool_call.id = id;\n if (type)\n tool_call.type = type;\n if (fn)\n tool_call.function ?? (tool_call.function = { name: fn.name ?? '', arguments: '' });\n if (fn?.name)\n tool_call.function.name = fn.name;\n if (fn?.arguments) {\n tool_call.function.arguments += fn.arguments;\n if (shouldParseToolCall(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"), tool_call)) {\n tool_call.function.parsed_arguments = partialParse(tool_call.function.arguments);\n }\n }\n }\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('chunk', (chunk) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(chunk);\n }\n else {\n pushQueue.push(chunk);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift();\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n toReadableStream() {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\nfunction finalizeChatCompletion(snapshot, params) {\n const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n const completion = {\n ...rest,\n id,\n choices: choices.map(({ message, finish_reason, index, logprobs, ...choiceRest }) => {\n if (!finish_reason) {\n throw new OpenAIError(`missing finish_reason for choice ${index}`);\n }\n const { content = null, function_call, tool_calls, ...messageRest } = message;\n const role = message.role; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n if (!role) {\n throw new OpenAIError(`missing role for choice ${index}`);\n }\n if (function_call) {\n const { arguments: args, name } = function_call;\n if (args == null) {\n throw new OpenAIError(`missing function_call.arguments for choice ${index}`);\n }\n if (!name) {\n throw new OpenAIError(`missing function_call.name for choice ${index}`);\n }\n return {\n ...choiceRest,\n message: {\n content,\n function_call: { arguments: args, name },\n role,\n refusal: message.refusal ?? null,\n },\n finish_reason,\n index,\n logprobs,\n };\n }\n if (tool_calls) {\n return {\n ...choiceRest,\n index,\n finish_reason,\n logprobs,\n message: {\n ...messageRest,\n role,\n content,\n refusal: message.refusal ?? null,\n tool_calls: tool_calls.map((tool_call, i) => {\n const { function: fn, type, id, ...toolRest } = tool_call;\n const { arguments: args, name, ...fnRest } = fn || {};\n if (id == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n }\n if (type == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n }\n if (name == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`);\n }\n if (args == null) {\n throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`);\n }\n return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n }),\n },\n };\n }\n return {\n ...choiceRest,\n message: { ...messageRest, content, role, refusal: message.refusal ?? null },\n finish_reason,\n index,\n logprobs,\n };\n }),\n created,\n model,\n object: 'chat.completion',\n ...(system_fingerprint ? { system_fingerprint } : {}),\n };\n return maybeParseChatCompletion(completion, params);\n}\nfunction str(x) {\n return JSON.stringify(x);\n}\n/**\n * Ensures the given argument is an empty object, useful for\n * asserting that all known properties on an object have been\n * destructured.\n */\nfunction assertIsEmpty(obj) {\n return;\n}\nfunction assertNever(_x) { }\n//# sourceMappingURL=ChatCompletionStream.mjs.map",
|
|
106
|
+
"import { ChatCompletionStream } from \"./ChatCompletionStream.mjs\";\nexport class ChatCompletionStreamingRunner extends ChatCompletionStream {\n static fromReadableStream(stream) {\n const runner = new ChatCompletionStreamingRunner(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n /** @deprecated - please use `runTools` instead. */\n static runFunctions(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(null);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runFunctions' },\n };\n runner._run(() => runner._runFunctions(client, params, opts));\n return runner;\n }\n static runTools(client, params, options) {\n const runner = new ChatCompletionStreamingRunner(\n // @ts-expect-error TODO these types are incompatible\n params);\n const opts = {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n };\n runner._run(() => runner._runTools(client, params, opts));\n return runner;\n }\n}\n//# sourceMappingURL=ChatCompletionStreamingRunner.mjs.map",
|
|
107
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nimport { ChatCompletionStreamingRunner, } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nimport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nimport { parseChatCompletion, validateInputTools } from \"../../../lib/parser.mjs\";\nexport { ChatCompletionStreamingRunner, } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nexport { ParsingFunction, ParsingToolFunction, } from \"../../../lib/RunnableFunction.mjs\";\nexport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nexport { ChatCompletionRunner, } from \"../../../lib/ChatCompletionRunner.mjs\";\nexport class Completions extends APIResource {\n parse(body, options) {\n validateInputTools(body.tools);\n return this._client.chat.completions\n .create(body, {\n ...options,\n headers: {\n ...options?.headers,\n 'X-Stainless-Helper-Method': 'beta.chat.completions.parse',\n },\n })\n ._thenUnwrap((completion) => parseChatCompletion(completion, body));\n }\n runFunctions(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runFunctions(this._client, body, options);\n }\n return ChatCompletionRunner.runFunctions(this._client, body, options);\n }\n runTools(body, options) {\n if (body.stream) {\n return ChatCompletionStreamingRunner.runTools(this._client, body, options);\n }\n return ChatCompletionRunner.runTools(this._client, body, options);\n }\n /**\n * Creates a chat completion stream\n */\n stream(body, options) {\n return ChatCompletionStream.createChatCompletion(this._client, body, options);\n }\n}\n//# sourceMappingURL=completions.mjs.map",
|
|
108
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as CompletionsAPI from \"./completions.mjs\";\nexport class Chat extends APIResource {\n constructor() {\n super(...arguments);\n this.completions = new CompletionsAPI.Completions(this._client);\n }\n}\n(function (Chat) {\n Chat.Completions = CompletionsAPI.Completions;\n})(Chat || (Chat = {}));\n//# sourceMappingURL=chat.mjs.map",
|
|
109
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class Sessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API. Can be configured with the same session parameters as the\n * `session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const session =\n * await client.beta.realtime.sessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/sessions', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\n//# sourceMappingURL=sessions.mjs.map",
|
|
110
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class TranscriptionSessions extends APIResource {\n /**\n * Create an ephemeral API token for use in client-side applications with the\n * Realtime API specifically for realtime transcriptions. Can be configured with\n * the same session parameters as the `transcription_session.update` client event.\n *\n * It responds with a session object, plus a `client_secret` key which contains a\n * usable ephemeral API token that can be used to authenticate browser clients for\n * the Realtime API.\n *\n * @example\n * ```ts\n * const transcriptionSession =\n * await client.beta.realtime.transcriptionSessions.create();\n * ```\n */\n create(body, options) {\n return this._client.post('/realtime/transcription_sessions', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\n//# sourceMappingURL=transcription-sessions.mjs.map",
|
|
111
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as SessionsAPI from \"./sessions.mjs\";\nimport { Sessions, } from \"./sessions.mjs\";\nimport * as TranscriptionSessionsAPI from \"./transcription-sessions.mjs\";\nimport { TranscriptionSessions, } from \"./transcription-sessions.mjs\";\nexport class Realtime extends APIResource {\n constructor() {\n super(...arguments);\n this.sessions = new SessionsAPI.Sessions(this._client);\n this.transcriptionSessions = new TranscriptionSessionsAPI.TranscriptionSessions(this._client);\n }\n}\nRealtime.Sessions = Sessions;\nRealtime.TranscriptionSessions = TranscriptionSessions;\n//# sourceMappingURL=realtime.mjs.map",
|
|
112
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Messages extends APIResource {\n /**\n * Create a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n create(threadId, body, options) {\n return this._client.post(`/threads/${threadId}/messages`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieve a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadId, messageId, options) {\n return this._client.get(`/threads/${threadId}/messages/${messageId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadId, messageId, body, options) {\n return this._client.post(`/threads/${threadId}/messages/${messageId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/messages`, MessagesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Deletes a message.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n del(threadId, messageId, options) {\n return this._client.delete(`/threads/${threadId}/messages/${messageId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class MessagesPage extends CursorPage {\n}\nMessages.MessagesPage = MessagesPage;\n//# sourceMappingURL=messages.mjs.map",
|
|
113
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../../core.mjs\";\nimport { CursorPage } from \"../../../../pagination.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Steps extends APIResource {\n retrieve(threadId, runId, stepId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.retrieve(threadId, runId, stepId, {}, query);\n }\n return this._client.get(`/threads/${threadId}/runs/${runId}/steps/${stepId}`, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, runId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(threadId, runId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs/${runId}/steps`, RunStepsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class RunStepsPage extends CursorPage {\n}\nSteps.RunStepsPage = RunStepsPage;\n//# sourceMappingURL=steps.mjs.map",
|
|
114
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../../core.mjs\";\nimport { AssistantStream } from \"../../../../lib/AssistantStream.mjs\";\nimport { sleep } from \"../../../../core.mjs\";\nimport * as StepsAPI from \"./steps.mjs\";\nimport { RunStepsPage, Steps, } from \"./steps.mjs\";\nimport { CursorPage } from \"../../../../pagination.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.steps = new StepsAPI.Steps(this._client);\n }\n create(threadId, params, options) {\n const { include, ...body } = params;\n return this._client.post(`/threads/${threadId}/runs`, {\n query: { include },\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: params.stream ?? false,\n });\n }\n /**\n * Retrieves a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadId, runId, options) {\n return this._client.get(`/threads/${threadId}/runs/${runId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a run.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadId, runId, body, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(threadId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(threadId, {}, query);\n }\n return this._client.getAPIList(`/threads/${threadId}/runs`, RunsPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Cancels a run that is `in_progress`.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n cancel(threadId, runId, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}/cancel`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * A helper to create a run an poll for a terminal state. More information on Run\n * lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndPoll(threadId, body, options) {\n const run = await this.create(threadId, body, options);\n return await this.poll(threadId, run.id, options);\n }\n /**\n * Create a Run stream\n *\n * @deprecated use `stream` instead\n */\n createAndStream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n /**\n * A helper to poll a run status until it reaches a terminal state. More\n * information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async poll(threadId, runId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const { data: run, response } = await this.retrieve(threadId, runId, {\n ...options,\n headers: { ...options?.headers, ...headers },\n }).withResponse();\n switch (run.status) {\n //If we are in any sort of intermediate state we poll\n case 'queued':\n case 'in_progress':\n case 'cancelling':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n //We return the run in any terminal state.\n case 'requires_action':\n case 'incomplete':\n case 'cancelled':\n case 'completed':\n case 'failed':\n case 'expired':\n return run;\n }\n }\n }\n /**\n * Create a Run stream\n */\n stream(threadId, body, options) {\n return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n }\n submitToolOutputs(threadId, runId, body, options) {\n return this._client.post(`/threads/${threadId}/runs/${runId}/submit_tool_outputs`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: body.stream ?? false,\n });\n }\n /**\n * A helper to submit a tool output to a run and poll for a terminal run state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async submitToolOutputsAndPoll(threadId, runId, body, options) {\n const run = await this.submitToolOutputs(threadId, runId, body, options);\n return await this.poll(threadId, run.id, options);\n }\n /**\n * Submit the tool outputs from a previous run and stream the run to a terminal\n * state. More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n submitToolOutputsStream(threadId, runId, body, options) {\n return AssistantStream.createToolAssistantStream(threadId, runId, this._client.beta.threads.runs, body, options);\n }\n}\nexport class RunsPage extends CursorPage {\n}\nRuns.RunsPage = RunsPage;\nRuns.Steps = Steps;\nRuns.RunStepsPage = RunStepsPage;\n//# sourceMappingURL=runs.mjs.map",
|
|
115
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { AssistantStream } from \"../../../lib/AssistantStream.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages, MessagesPage, } from \"./messages.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, RunsPage, } from \"./runs/runs.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Threads extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n this.messages = new MessagesAPI.Messages(this._client);\n }\n create(body = {}, options) {\n if (isRequestOptions(body)) {\n return this.create({}, body);\n }\n return this._client.post('/threads', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n retrieve(threadId, options) {\n return this._client.get(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n update(threadId, body, options) {\n return this._client.post(`/threads/${threadId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a thread.\n *\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\n del(threadId, options) {\n return this._client.delete(`/threads/${threadId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n createAndRun(body, options) {\n return this._client.post('/threads/runs', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n stream: body.stream ?? false,\n });\n }\n /**\n * A helper to create a thread, start a run and then poll for a terminal state.\n * More information on Run lifecycles can be found here:\n * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n */\n async createAndRunPoll(body, options) {\n const run = await this.createAndRun(body, options);\n return await this.runs.poll(run.thread_id, run.id, options);\n }\n /**\n * Create a thread and stream the run back\n */\n createAndRunStream(body, options) {\n return AssistantStream.createThreadAssistantStream(body, this._client.beta.threads, options);\n }\n}\nThreads.Runs = Runs;\nThreads.RunsPage = RunsPage;\nThreads.Messages = Messages;\nThreads.MessagesPage = MessagesPage;\n//# sourceMappingURL=threads.mjs.map",
|
|
116
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as AssistantsAPI from \"./assistants.mjs\";\nimport * as ChatAPI from \"./chat/chat.mjs\";\nimport { Assistants, AssistantsPage, } from \"./assistants.mjs\";\nimport * as RealtimeAPI from \"./realtime/realtime.mjs\";\nimport { Realtime, } from \"./realtime/realtime.mjs\";\nimport * as ThreadsAPI from \"./threads/threads.mjs\";\nimport { Threads, } from \"./threads/threads.mjs\";\nimport { Chat } from \"./chat/chat.mjs\";\nexport class Beta extends APIResource {\n constructor() {\n super(...arguments);\n this.realtime = new RealtimeAPI.Realtime(this._client);\n this.chat = new ChatAPI.Chat(this._client);\n this.assistants = new AssistantsAPI.Assistants(this._client);\n this.threads = new ThreadsAPI.Threads(this._client);\n }\n}\nBeta.Realtime = Realtime;\nBeta.Assistants = Assistants;\nBeta.AssistantsPage = AssistantsPage;\nBeta.Threads = Threads;\n//# sourceMappingURL=beta.mjs.map",
|
|
117
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nexport class Completions extends APIResource {\n create(body, options) {\n return this._client.post('/completions', { body, ...options, stream: body.stream ?? false });\n }\n}\n//# sourceMappingURL=completions.mjs.map",
|
|
118
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class Content extends APIResource {\n /**\n * Retrieve Container File Content\n */\n retrieve(containerId, fileId, options) {\n return this._client.get(`/containers/${containerId}/files/${fileId}/content`, {\n ...options,\n headers: { Accept: 'application/binary', ...options?.headers },\n __binaryResponse: true,\n });\n }\n}\n//# sourceMappingURL=content.mjs.map",
|
|
119
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as Core from \"../../../core.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Files extends APIResource {\n constructor() {\n super(...arguments);\n this.content = new ContentAPI.Content(this._client);\n }\n /**\n * Create a Container File\n *\n * You can send either a multipart/form-data request with the raw file content, or\n * a JSON request with a file ID.\n */\n create(containerId, body, options) {\n return this._client.post(`/containers/${containerId}/files`, Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Retrieve Container File\n */\n retrieve(containerId, fileId, options) {\n return this._client.get(`/containers/${containerId}/files/${fileId}`, options);\n }\n list(containerId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(containerId, {}, query);\n }\n return this._client.getAPIList(`/containers/${containerId}/files`, FileListResponsesPage, {\n query,\n ...options,\n });\n }\n /**\n * Delete Container File\n */\n del(containerId, fileId, options) {\n return this._client.delete(`/containers/${containerId}/files/${fileId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n}\nexport class FileListResponsesPage extends CursorPage {\n}\nFiles.FileListResponsesPage = FileListResponsesPage;\nFiles.Content = Content;\n//# sourceMappingURL=files.mjs.map",
|
|
120
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as FilesAPI from \"./files/files.mjs\";\nimport { FileListResponsesPage, Files, } from \"./files/files.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nexport class Containers extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n }\n /**\n * Create Container\n */\n create(body, options) {\n return this._client.post('/containers', { body, ...options });\n }\n /**\n * Retrieve Container\n */\n retrieve(containerId, options) {\n return this._client.get(`/containers/${containerId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/containers', ContainerListResponsesPage, { query, ...options });\n }\n /**\n * Delete Container\n */\n del(containerId, options) {\n return this._client.delete(`/containers/${containerId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n}\nexport class ContainerListResponsesPage extends CursorPage {\n}\nContainers.ContainerListResponsesPage = ContainerListResponsesPage;\nContainers.Files = Files;\nContainers.FileListResponsesPage = FileListResponsesPage;\n//# sourceMappingURL=containers.mjs.map",
|
|
121
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport * as Core from \"../core.mjs\";\nexport class Embeddings extends APIResource {\n /**\n * Creates an embedding vector representing the input text.\n *\n * @example\n * ```ts\n * const createEmbeddingResponse =\n * await client.embeddings.create({\n * input: 'The quick brown fox jumped over the lazy dog',\n * model: 'text-embedding-3-small',\n * });\n * ```\n */\n create(body, options) {\n const hasUserProvidedEncodingFormat = !!body.encoding_format;\n // No encoding_format specified, defaulting to base64 for performance reasons\n // See https://github.com/openai/openai-node/pull/1312\n let encoding_format = hasUserProvidedEncodingFormat ? body.encoding_format : 'base64';\n if (hasUserProvidedEncodingFormat) {\n Core.debug('Request', 'User defined encoding_format:', body.encoding_format);\n }\n const response = this._client.post('/embeddings', {\n body: {\n ...body,\n encoding_format: encoding_format,\n },\n ...options,\n });\n // if the user specified an encoding_format, return the response as-is\n if (hasUserProvidedEncodingFormat) {\n return response;\n }\n // in this stage, we are sure the user did not specify an encoding_format\n // and we defaulted to base64 for performance reasons\n // we are sure then that the response is base64 encoded, let's decode it\n // the returned result will be a float32 array since this is OpenAI API's default encoding\n Core.debug('response', 'Decoding base64 embeddings to float32 array');\n return response._thenUnwrap((response) => {\n if (response && response.data) {\n response.data.forEach((embeddingBase64Obj) => {\n const embeddingBase64Str = embeddingBase64Obj.embedding;\n embeddingBase64Obj.embedding = Core.toFloat32Array(embeddingBase64Str);\n });\n }\n return response;\n });\n }\n}\n//# sourceMappingURL=embeddings.mjs.map",
|
|
122
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class OutputItems extends APIResource {\n /**\n * Get an evaluation run output item by ID.\n */\n retrieve(evalId, runId, outputItemId, options) {\n return this._client.get(`/evals/${evalId}/runs/${runId}/output_items/${outputItemId}`, options);\n }\n list(evalId, runId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(evalId, runId, {}, query);\n }\n return this._client.getAPIList(`/evals/${evalId}/runs/${runId}/output_items`, OutputItemListResponsesPage, { query, ...options });\n }\n}\nexport class OutputItemListResponsesPage extends CursorPage {\n}\nOutputItems.OutputItemListResponsesPage = OutputItemListResponsesPage;\n//# sourceMappingURL=output-items.mjs.map",
|
|
123
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as OutputItemsAPI from \"./output-items.mjs\";\nimport { OutputItemListResponsesPage, OutputItems, } from \"./output-items.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Runs extends APIResource {\n constructor() {\n super(...arguments);\n this.outputItems = new OutputItemsAPI.OutputItems(this._client);\n }\n /**\n * Kicks off a new run for a given evaluation, specifying the data source, and what\n * model configuration to use to test. The datasource will be validated against the\n * schema specified in the config of the evaluation.\n */\n create(evalId, body, options) {\n return this._client.post(`/evals/${evalId}/runs`, { body, ...options });\n }\n /**\n * Get an evaluation run by ID.\n */\n retrieve(evalId, runId, options) {\n return this._client.get(`/evals/${evalId}/runs/${runId}`, options);\n }\n list(evalId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(evalId, {}, query);\n }\n return this._client.getAPIList(`/evals/${evalId}/runs`, RunListResponsesPage, { query, ...options });\n }\n /**\n * Delete an eval run.\n */\n del(evalId, runId, options) {\n return this._client.delete(`/evals/${evalId}/runs/${runId}`, options);\n }\n /**\n * Cancel an ongoing evaluation run.\n */\n cancel(evalId, runId, options) {\n return this._client.post(`/evals/${evalId}/runs/${runId}`, options);\n }\n}\nexport class RunListResponsesPage extends CursorPage {\n}\nRuns.RunListResponsesPage = RunListResponsesPage;\nRuns.OutputItems = OutputItems;\nRuns.OutputItemListResponsesPage = OutputItemListResponsesPage;\n//# sourceMappingURL=runs.mjs.map",
|
|
124
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { RunListResponsesPage, Runs, } from \"./runs/runs.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nexport class Evals extends APIResource {\n constructor() {\n super(...arguments);\n this.runs = new RunsAPI.Runs(this._client);\n }\n /**\n * Create the structure of an evaluation that can be used to test a model's\n * performance. An evaluation is a set of testing criteria and the config for a\n * data source, which dictates the schema of the data used in the evaluation. After\n * creating an evaluation, you can run it on different models and model parameters.\n * We support several types of graders and datasources. For more information, see\n * the [Evals guide](https://platform.openai.com/docs/guides/evals).\n */\n create(body, options) {\n return this._client.post('/evals', { body, ...options });\n }\n /**\n * Get an evaluation by ID.\n */\n retrieve(evalId, options) {\n return this._client.get(`/evals/${evalId}`, options);\n }\n /**\n * Update certain properties of an evaluation.\n */\n update(evalId, body, options) {\n return this._client.post(`/evals/${evalId}`, { body, ...options });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/evals', EvalListResponsesPage, { query, ...options });\n }\n /**\n * Delete an evaluation.\n */\n del(evalId, options) {\n return this._client.delete(`/evals/${evalId}`, options);\n }\n}\nexport class EvalListResponsesPage extends CursorPage {\n}\nEvals.EvalListResponsesPage = EvalListResponsesPage;\nEvals.Runs = Runs;\nEvals.RunListResponsesPage = RunListResponsesPage;\n//# sourceMappingURL=evals.mjs.map",
|
|
125
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { isRequestOptions } from \"../core.mjs\";\nimport { sleep } from \"../core.mjs\";\nimport { APIConnectionTimeoutError } from \"../error.mjs\";\nimport * as Core from \"../core.mjs\";\nimport { CursorPage } from \"../pagination.mjs\";\nexport class Files extends APIResource {\n /**\n * Upload a file that can be used across various endpoints. Individual files can be\n * up to 512 MB, and the size of all files uploaded by one organization can be up\n * to 100 GB.\n *\n * The Assistants API supports files up to 2 million tokens and of specific file\n * types. See the\n * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools) for\n * details.\n *\n * The Fine-tuning API only supports `.jsonl` files. The input also has certain\n * required formats for fine-tuning\n * [chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input) or\n * [completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)\n * models.\n *\n * The Batch API only supports `.jsonl` files up to 200 MB in size. The input also\n * has a specific required\n * [format](https://platform.openai.com/docs/api-reference/batch/request-input).\n *\n * Please [contact us](https://help.openai.com/) if you need to increase these\n * storage limits.\n */\n create(body, options) {\n return this._client.post('/files', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Returns information about a specific file.\n */\n retrieve(fileId, options) {\n return this._client.get(`/files/${fileId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/files', FileObjectsPage, { query, ...options });\n }\n /**\n * Delete a file.\n */\n del(fileId, options) {\n return this._client.delete(`/files/${fileId}`, options);\n }\n /**\n * Returns the contents of the specified file.\n */\n content(fileId, options) {\n return this._client.get(`/files/${fileId}/content`, {\n ...options,\n headers: { Accept: 'application/binary', ...options?.headers },\n __binaryResponse: true,\n });\n }\n /**\n * Returns the contents of the specified file.\n *\n * @deprecated The `.content()` method should be used instead\n */\n retrieveContent(fileId, options) {\n return this._client.get(`/files/${fileId}/content`, options);\n }\n /**\n * Waits for the given file to be processed, default timeout is 30 mins.\n */\n async waitForProcessing(id, { pollInterval = 5000, maxWait = 30 * 60 * 1000 } = {}) {\n const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n const start = Date.now();\n let file = await this.retrieve(id);\n while (!file.status || !TERMINAL_STATES.has(file.status)) {\n await sleep(pollInterval);\n file = await this.retrieve(id);\n if (Date.now() - start > maxWait) {\n throw new APIConnectionTimeoutError({\n message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n });\n }\n }\n return file;\n }\n}\nexport class FileObjectsPage extends CursorPage {\n}\nFiles.FileObjectsPage = FileObjectsPage;\n//# sourceMappingURL=files.mjs.map",
|
|
126
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nexport class Methods extends APIResource {\n}\n//# sourceMappingURL=methods.mjs.map",
|
|
127
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nexport class Graders extends APIResource {\n /**\n * Run a grader.\n *\n * @example\n * ```ts\n * const response = await client.fineTuning.alpha.graders.run({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * model_sample: 'model_sample',\n * reference_answer: 'string',\n * });\n * ```\n */\n run(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/run', { body, ...options });\n }\n /**\n * Validate a grader.\n *\n * @example\n * ```ts\n * const response =\n * await client.fineTuning.alpha.graders.validate({\n * grader: {\n * input: 'input',\n * name: 'name',\n * operation: 'eq',\n * reference: 'reference',\n * type: 'string_check',\n * },\n * });\n * ```\n */\n validate(body, options) {\n return this._client.post('/fine_tuning/alpha/graders/validate', { body, ...options });\n }\n}\n//# sourceMappingURL=graders.mjs.map",
|
|
128
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as GradersAPI from \"./graders.mjs\";\nimport { Graders, } from \"./graders.mjs\";\nexport class Alpha extends APIResource {\n constructor() {\n super(...arguments);\n this.graders = new GradersAPI.Graders(this._client);\n }\n}\nAlpha.Graders = Graders;\n//# sourceMappingURL=alpha.mjs.map",
|
|
129
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { Page } from \"../../../pagination.mjs\";\nexport class Permissions extends APIResource {\n /**\n * **NOTE:** Calling this endpoint requires an [admin API key](../admin-api-keys).\n *\n * This enables organization owners to share fine-tuned models with other projects\n * in their organization.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const permissionCreateResponse of client.fineTuning.checkpoints.permissions.create(\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * { project_ids: ['string'] },\n * )) {\n * // ...\n * }\n * ```\n */\n create(fineTunedModelCheckpoint, body, options) {\n return this._client.getAPIList(`/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, PermissionCreateResponsesPage, { body, method: 'post', ...options });\n }\n retrieve(fineTunedModelCheckpoint, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.retrieve(fineTunedModelCheckpoint, {}, query);\n }\n return this._client.get(`/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, {\n query,\n ...options,\n });\n }\n /**\n * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n *\n * Organization owners can use this endpoint to delete a permission for a\n * fine-tuned model checkpoint.\n *\n * @example\n * ```ts\n * const permission =\n * await client.fineTuning.checkpoints.permissions.del(\n * 'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n * 'cp_zc4Q7MP6XxulcVzj4MZdwsAB',\n * );\n * ```\n */\n del(fineTunedModelCheckpoint, permissionId, options) {\n return this._client.delete(`/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions/${permissionId}`, options);\n }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class PermissionCreateResponsesPage extends Page {\n}\nPermissions.PermissionCreateResponsesPage = PermissionCreateResponsesPage;\n//# sourceMappingURL=permissions.mjs.map",
|
|
130
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport * as PermissionsAPI from \"./permissions.mjs\";\nimport { PermissionCreateResponsesPage, Permissions, } from \"./permissions.mjs\";\nexport class Checkpoints extends APIResource {\n constructor() {\n super(...arguments);\n this.permissions = new PermissionsAPI.Permissions(this._client);\n }\n}\nCheckpoints.Permissions = Permissions;\nCheckpoints.PermissionCreateResponsesPage = PermissionCreateResponsesPage;\n//# sourceMappingURL=checkpoints.mjs.map",
|
|
131
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Checkpoints extends APIResource {\n list(fineTuningJobId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(fineTuningJobId, {}, query);\n }\n return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/checkpoints`, FineTuningJobCheckpointsPage, { query, ...options });\n }\n}\nexport class FineTuningJobCheckpointsPage extends CursorPage {\n}\nCheckpoints.FineTuningJobCheckpointsPage = FineTuningJobCheckpointsPage;\n//# sourceMappingURL=checkpoints.mjs.map",
|
|
132
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../resource.mjs\";\nimport { isRequestOptions } from \"../../../core.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints.mjs\";\nimport { Checkpoints, FineTuningJobCheckpointsPage, } from \"./checkpoints.mjs\";\nimport { CursorPage } from \"../../../pagination.mjs\";\nexport class Jobs extends APIResource {\n constructor() {\n super(...arguments);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n }\n /**\n * Creates a fine-tuning job which begins the process of creating a new model from\n * a given dataset.\n *\n * Response includes details of the enqueued job including job status and the name\n * of the fine-tuned models once complete.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.create({\n * model: 'gpt-4o-mini',\n * training_file: 'file-abc123',\n * });\n * ```\n */\n create(body, options) {\n return this._client.post('/fine_tuning/jobs', { body, ...options });\n }\n /**\n * Get info about a fine-tuning job.\n *\n * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.retrieve(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n retrieve(fineTuningJobId, options) {\n return this._client.get(`/fine_tuning/jobs/${fineTuningJobId}`, options);\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/fine_tuning/jobs', FineTuningJobsPage, { query, ...options });\n }\n /**\n * Immediately cancel a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.cancel(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n cancel(fineTuningJobId, options) {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/cancel`, options);\n }\n listEvents(fineTuningJobId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.listEvents(fineTuningJobId, {}, query);\n }\n return this._client.getAPIList(`/fine_tuning/jobs/${fineTuningJobId}/events`, FineTuningJobEventsPage, {\n query,\n ...options,\n });\n }\n /**\n * Pause a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.pause(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n pause(fineTuningJobId, options) {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/pause`, options);\n }\n /**\n * Resume a fine-tune job.\n *\n * @example\n * ```ts\n * const fineTuningJob = await client.fineTuning.jobs.resume(\n * 'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n * );\n * ```\n */\n resume(fineTuningJobId, options) {\n return this._client.post(`/fine_tuning/jobs/${fineTuningJobId}/resume`, options);\n }\n}\nexport class FineTuningJobsPage extends CursorPage {\n}\nexport class FineTuningJobEventsPage extends CursorPage {\n}\nJobs.FineTuningJobsPage = FineTuningJobsPage;\nJobs.FineTuningJobEventsPage = FineTuningJobEventsPage;\nJobs.Checkpoints = Checkpoints;\nJobs.FineTuningJobCheckpointsPage = FineTuningJobCheckpointsPage;\n//# sourceMappingURL=jobs.mjs.map",
|
|
133
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as MethodsAPI from \"./methods.mjs\";\nimport { Methods, } from \"./methods.mjs\";\nimport * as AlphaAPI from \"./alpha/alpha.mjs\";\nimport { Alpha } from \"./alpha/alpha.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints/checkpoints.mjs\";\nimport { Checkpoints } from \"./checkpoints/checkpoints.mjs\";\nimport * as JobsAPI from \"./jobs/jobs.mjs\";\nimport { FineTuningJobEventsPage, FineTuningJobsPage, Jobs, } from \"./jobs/jobs.mjs\";\nexport class FineTuning extends APIResource {\n constructor() {\n super(...arguments);\n this.methods = new MethodsAPI.Methods(this._client);\n this.jobs = new JobsAPI.Jobs(this._client);\n this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n this.alpha = new AlphaAPI.Alpha(this._client);\n }\n}\nFineTuning.Methods = Methods;\nFineTuning.Jobs = Jobs;\nFineTuning.FineTuningJobsPage = FineTuningJobsPage;\nFineTuning.FineTuningJobEventsPage = FineTuningJobEventsPage;\nFineTuning.Checkpoints = Checkpoints;\nFineTuning.Alpha = Alpha;\n//# sourceMappingURL=fine-tuning.mjs.map",
|
|
134
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nexport class GraderModels extends APIResource {\n}\n//# sourceMappingURL=grader-models.mjs.map",
|
|
135
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as GraderModelsAPI from \"./grader-models.mjs\";\nimport { GraderModels, } from \"./grader-models.mjs\";\nexport class Graders extends APIResource {\n constructor() {\n super(...arguments);\n this.graderModels = new GraderModelsAPI.GraderModels(this._client);\n }\n}\nGraders.GraderModels = GraderModels;\n//# sourceMappingURL=graders.mjs.map",
|
|
136
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport * as Core from \"../core.mjs\";\nexport class Images extends APIResource {\n /**\n * Creates a variation of a given image. This endpoint only supports `dall-e-2`.\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.createVariation({\n * image: fs.createReadStream('otter.png'),\n * });\n * ```\n */\n createVariation(body, options) {\n return this._client.post('/images/variations', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Creates an edited or extended image given one or more source images and a\n * prompt. This endpoint only supports `gpt-image-1` and `dall-e-2`.\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.edit({\n * image: fs.createReadStream('path/to/file'),\n * prompt: 'A cute baby sea otter wearing a beret',\n * });\n * ```\n */\n edit(body, options) {\n return this._client.post('/images/edits', Core.multipartFormRequestOptions({ body, ...options }));\n }\n /**\n * Creates an image given a prompt.\n * [Learn more](https://platform.openai.com/docs/guides/images).\n *\n * @example\n * ```ts\n * const imagesResponse = await client.images.generate({\n * prompt: 'A cute baby sea otter',\n * });\n * ```\n */\n generate(body, options) {\n return this._client.post('/images/generations', { body, ...options });\n }\n}\n//# sourceMappingURL=images.mjs.map",
|
|
137
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nimport { Page } from \"../pagination.mjs\";\nexport class Models extends APIResource {\n /**\n * Retrieves a model instance, providing basic information about the model such as\n * the owner and permissioning.\n */\n retrieve(model, options) {\n return this._client.get(`/models/${model}`, options);\n }\n /**\n * Lists the currently available models, and provides basic information about each\n * one such as the owner and availability.\n */\n list(options) {\n return this._client.getAPIList('/models', ModelsPage, options);\n }\n /**\n * Delete a fine-tuned model. You must have the Owner role in your organization to\n * delete a model.\n */\n del(model, options) {\n return this._client.delete(`/models/${model}`, options);\n }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class ModelsPage extends Page {\n}\nModels.ModelsPage = ModelsPage;\n//# sourceMappingURL=models.mjs.map",
|
|
138
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../resource.mjs\";\nexport class Moderations extends APIResource {\n /**\n * Classifies if text and/or image inputs are potentially harmful. Learn more in\n * the [moderation guide](https://platform.openai.com/docs/guides/moderation).\n */\n create(body, options) {\n return this._client.post('/moderations', { body, ...options });\n }\n}\n//# sourceMappingURL=moderations.mjs.map",
|
|
139
|
+
"import { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableResponseFormat } from \"../lib/parser.mjs\";\nexport function maybeParseResponse(response, params) {\n if (!params || !hasAutoParseableInput(params)) {\n return {\n ...response,\n output_parsed: null,\n output: response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: null,\n };\n }\n if (item.type === 'message') {\n return {\n ...item,\n content: item.content.map((content) => ({\n ...content,\n parsed: null,\n })),\n };\n }\n else {\n return item;\n }\n }),\n };\n }\n return parseResponse(response, params);\n}\nexport function parseResponse(response, params) {\n const output = response.output.map((item) => {\n if (item.type === 'function_call') {\n return {\n ...item,\n parsed_arguments: parseToolCall(params, item),\n };\n }\n if (item.type === 'message') {\n const content = item.content.map((content) => {\n if (content.type === 'output_text') {\n return {\n ...content,\n parsed: parseTextFormat(params, content.text),\n };\n }\n return content;\n });\n return {\n ...item,\n content,\n };\n }\n return item;\n });\n const parsed = Object.assign({}, response, { output });\n if (!Object.getOwnPropertyDescriptor(response, 'output_text')) {\n addOutputText(parsed);\n }\n Object.defineProperty(parsed, 'output_parsed', {\n enumerable: true,\n get() {\n for (const output of parsed.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text' && content.parsed !== null) {\n return content.parsed;\n }\n }\n }\n return null;\n },\n });\n return parsed;\n}\nfunction parseTextFormat(params, content) {\n if (params.text?.format?.type !== 'json_schema') {\n return null;\n }\n if ('$parseRaw' in params.text?.format) {\n const text_format = params.text?.format;\n return text_format.$parseRaw(content);\n }\n return JSON.parse(content);\n}\nexport function hasAutoParseableInput(params) {\n if (isAutoParsableResponseFormat(params.text?.format)) {\n return true;\n }\n return false;\n}\nexport function makeParseableResponseTool(tool, { parser, callback, }) {\n const obj = { ...tool };\n Object.defineProperties(obj, {\n $brand: {\n value: 'auto-parseable-tool',\n enumerable: false,\n },\n $parseRaw: {\n value: parser,\n enumerable: false,\n },\n $callback: {\n value: callback,\n enumerable: false,\n },\n });\n return obj;\n}\nexport function isAutoParsableTool(tool) {\n return tool?.['$brand'] === 'auto-parseable-tool';\n}\nfunction getInputToolByName(input_tools, name) {\n return input_tools.find((tool) => tool.type === 'function' && tool.name === name);\n}\nfunction parseToolCall(params, toolCall) {\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return {\n ...toolCall,\n ...toolCall,\n parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.arguments)\n : inputTool?.strict ? JSON.parse(toolCall.arguments)\n : null,\n };\n}\nexport function shouldParseToolCall(params, toolCall) {\n if (!params) {\n return false;\n }\n const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n return isAutoParsableTool(inputTool) || inputTool?.strict || false;\n}\nexport function validateInputTools(tools) {\n for (const tool of tools ?? []) {\n if (tool.type !== 'function') {\n throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n }\n if (tool.function.strict !== true) {\n throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n }\n }\n}\nexport function addOutputText(rsp) {\n const texts = [];\n for (const output of rsp.output) {\n if (output.type !== 'message') {\n continue;\n }\n for (const content of output.content) {\n if (content.type === 'output_text') {\n texts.push(content.text);\n }\n }\n }\n rsp.output_text = texts.join('');\n}\n//# sourceMappingURL=ResponsesParser.mjs.map",
|
|
140
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport { ResponseItemsPage } from \"./responses.mjs\";\nexport class InputItems extends APIResource {\n list(responseId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(responseId, {}, query);\n }\n return this._client.getAPIList(`/responses/${responseId}/input_items`, ResponseItemsPage, {\n query,\n ...options,\n });\n }\n}\nexport { ResponseItemsPage };\n//# sourceMappingURL=input-items.mjs.map",
|
|
141
|
+
"var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _ResponseStream_instances, _ResponseStream_params, _ResponseStream_currentResponseSnapshot, _ResponseStream_finalResponse, _ResponseStream_beginRequest, _ResponseStream_addEvent, _ResponseStream_endRequest, _ResponseStream_accumulateResponse;\nimport { APIUserAbortError, OpenAIError } from \"../../error.mjs\";\nimport { EventStream } from \"../EventStream.mjs\";\nimport { maybeParseResponse } from \"../ResponsesParser.mjs\";\nexport class ResponseStream extends EventStream {\n constructor(params) {\n super();\n _ResponseStream_instances.add(this);\n _ResponseStream_params.set(this, void 0);\n _ResponseStream_currentResponseSnapshot.set(this, void 0);\n _ResponseStream_finalResponse.set(this, void 0);\n __classPrivateFieldSet(this, _ResponseStream_params, params, \"f\");\n }\n static createResponse(client, params, options) {\n const runner = new ResponseStream(params);\n runner._run(() => runner._createOrRetrieveResponse(client, params, {\n ...options,\n headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n }));\n return runner;\n }\n async _createOrRetrieveResponse(client, params, options) {\n const signal = options?.signal;\n if (signal) {\n if (signal.aborted)\n this.controller.abort();\n signal.addEventListener('abort', () => this.controller.abort());\n }\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_beginRequest).call(this);\n let stream;\n let starting_after = null;\n if ('response_id' in params) {\n stream = await client.responses.retrieve(params.response_id, { stream: true }, { ...options, signal: this.controller.signal, stream: true });\n starting_after = params.starting_after ?? null;\n }\n else {\n stream = await client.responses.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n }\n this._connected();\n for await (const event of stream) {\n __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_addEvent).call(this, event, starting_after);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n return __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_endRequest).call(this);\n }\n [(_ResponseStream_params = new WeakMap(), _ResponseStream_currentResponseSnapshot = new WeakMap(), _ResponseStream_finalResponse = new WeakMap(), _ResponseStream_instances = new WeakSet(), _ResponseStream_beginRequest = function _ResponseStream_beginRequest() {\n if (this.ended)\n return;\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n }, _ResponseStream_addEvent = function _ResponseStream_addEvent(event, starting_after) {\n if (this.ended)\n return;\n const maybeEmit = (name, event) => {\n if (starting_after == null || event.sequence_number > starting_after) {\n this._emit(name, event);\n }\n };\n const response = __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_accumulateResponse).call(this, event);\n maybeEmit('event', event);\n switch (event.type) {\n case 'response.output_text.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n maybeEmit('response.output_text.delta', {\n ...event,\n snapshot: content.text,\n });\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = response.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n maybeEmit('response.function_call_arguments.delta', {\n ...event,\n snapshot: output.arguments,\n });\n }\n break;\n }\n default:\n maybeEmit(event.type, event);\n break;\n }\n }, _ResponseStream_endRequest = function _ResponseStream_endRequest() {\n if (this.ended) {\n throw new OpenAIError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n throw new OpenAIError(`request ended without sending any events`);\n }\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n const parsedResponse = finalizeResponse(snapshot, __classPrivateFieldGet(this, _ResponseStream_params, \"f\"));\n __classPrivateFieldSet(this, _ResponseStream_finalResponse, parsedResponse, \"f\");\n return parsedResponse;\n }, _ResponseStream_accumulateResponse = function _ResponseStream_accumulateResponse(event) {\n let snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n if (!snapshot) {\n if (event.type !== 'response.created') {\n throw new OpenAIError(`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`);\n }\n snapshot = __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n return snapshot;\n }\n switch (event.type) {\n case 'response.output_item.added': {\n snapshot.output.push(event.item);\n break;\n }\n case 'response.content_part.added': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n output.content.push(event.part);\n }\n break;\n }\n case 'response.output_text.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'message') {\n const content = output.content[event.content_index];\n if (!content) {\n throw new OpenAIError(`missing content at index ${event.content_index}`);\n }\n if (content.type !== 'output_text') {\n throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n }\n content.text += event.delta;\n }\n break;\n }\n case 'response.function_call_arguments.delta': {\n const output = snapshot.output[event.output_index];\n if (!output) {\n throw new OpenAIError(`missing output at index ${event.output_index}`);\n }\n if (output.type === 'function_call') {\n output.arguments += event.delta;\n }\n break;\n }\n case 'response.completed': {\n __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n break;\n }\n }\n return snapshot;\n }, Symbol.asyncIterator)]() {\n const pushQueue = [];\n const readQueue = [];\n let done = false;\n this.on('event', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n }\n else {\n pushQueue.push(event);\n }\n });\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n return {\n next: async () => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((event) => (event ? { value: event, done: false } : { value: undefined, done: true }));\n }\n const event = pushQueue.shift();\n return { value: event, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n /**\n * @returns a promise that resolves with the final Response, or rejects\n * if an error occurred or the stream ended prematurely without producing a REsponse.\n */\n async finalResponse() {\n await this.done();\n const response = __classPrivateFieldGet(this, _ResponseStream_finalResponse, \"f\");\n if (!response)\n throw new OpenAIError('stream ended without producing a ChatCompletion');\n return response;\n }\n}\nfunction finalizeResponse(snapshot, params) {\n return maybeParseResponse(snapshot, params);\n}\n//# sourceMappingURL=ResponseStream.mjs.map",
|
|
142
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { parseResponse, addOutputText, } from \"../../lib/ResponsesParser.mjs\";\nimport { APIResource } from \"../../resource.mjs\";\nimport * as InputItemsAPI from \"./input-items.mjs\";\nimport { InputItems } from \"./input-items.mjs\";\nimport { ResponseStream } from \"../../lib/responses/ResponseStream.mjs\";\nimport { CursorPage } from \"../../pagination.mjs\";\nexport class Responses extends APIResource {\n constructor() {\n super(...arguments);\n this.inputItems = new InputItemsAPI.InputItems(this._client);\n }\n create(body, options) {\n return this._client.post('/responses', { body, ...options, stream: body.stream ?? false })._thenUnwrap((rsp) => {\n if ('object' in rsp && rsp.object === 'response') {\n addOutputText(rsp);\n }\n return rsp;\n });\n }\n retrieve(responseId, query = {}, options) {\n return this._client.get(`/responses/${responseId}`, {\n query,\n ...options,\n stream: query?.stream ?? false,\n });\n }\n /**\n * Deletes a model response with the given ID.\n *\n * @example\n * ```ts\n * await client.responses.del(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n del(responseId, options) {\n return this._client.delete(`/responses/${responseId}`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n parse(body, options) {\n return this._client.responses\n .create(body, options)\n ._thenUnwrap((response) => parseResponse(response, body));\n }\n /**\n * Creates a model response stream\n */\n stream(body, options) {\n return ResponseStream.createResponse(this._client, body, options);\n }\n /**\n * Cancels a model response with the given ID. Only responses created with the\n * `background` parameter set to `true` can be cancelled.\n * [Learn more](https://platform.openai.com/docs/guides/background).\n *\n * @example\n * ```ts\n * await client.responses.cancel(\n * 'resp_677efb5139a88190b512bc3fef8e535d',\n * );\n * ```\n */\n cancel(responseId, options) {\n return this._client.post(`/responses/${responseId}/cancel`, {\n ...options,\n headers: { Accept: '*/*', ...options?.headers },\n });\n }\n}\nexport class ResponseItemsPage extends CursorPage {\n}\nResponses.InputItems = InputItems;\n//# sourceMappingURL=responses.mjs.map",
|
|
143
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as Core from \"../../core.mjs\";\nexport class Parts extends APIResource {\n /**\n * Adds a\n * [Part](https://platform.openai.com/docs/api-reference/uploads/part-object) to an\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object.\n * A Part represents a chunk of bytes from the file you are trying to upload.\n *\n * Each Part can be at most 64 MB, and you can add Parts until you hit the Upload\n * maximum of 8 GB.\n *\n * It is possible to add multiple Parts in parallel. You can decide the intended\n * order of the Parts when you\n * [complete the Upload](https://platform.openai.com/docs/api-reference/uploads/complete).\n */\n create(uploadId, body, options) {\n return this._client.post(`/uploads/${uploadId}/parts`, Core.multipartFormRequestOptions({ body, ...options }));\n }\n}\n//# sourceMappingURL=parts.mjs.map",
|
|
144
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport * as PartsAPI from \"./parts.mjs\";\nimport { Parts } from \"./parts.mjs\";\nexport class Uploads extends APIResource {\n constructor() {\n super(...arguments);\n this.parts = new PartsAPI.Parts(this._client);\n }\n /**\n * Creates an intermediate\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object\n * that you can add\n * [Parts](https://platform.openai.com/docs/api-reference/uploads/part-object) to.\n * Currently, an Upload can accept at most 8 GB in total and expires after an hour\n * after you create it.\n *\n * Once you complete the Upload, we will create a\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * contains all the parts you uploaded. This File is usable in the rest of our\n * platform as a regular File object.\n *\n * For certain `purpose` values, the correct `mime_type` must be specified. Please\n * refer to documentation for the\n * [supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files).\n *\n * For guidance on the proper filename extensions for each purpose, please follow\n * the documentation on\n * [creating a File](https://platform.openai.com/docs/api-reference/files/create).\n */\n create(body, options) {\n return this._client.post('/uploads', { body, ...options });\n }\n /**\n * Cancels the Upload. No Parts may be added after an Upload is cancelled.\n */\n cancel(uploadId, options) {\n return this._client.post(`/uploads/${uploadId}/cancel`, options);\n }\n /**\n * Completes the\n * [Upload](https://platform.openai.com/docs/api-reference/uploads/object).\n *\n * Within the returned Upload object, there is a nested\n * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n * is ready to use in the rest of the platform.\n *\n * You can specify the order of the Parts by passing in an ordered list of the Part\n * IDs.\n *\n * The number of bytes uploaded upon completion must match the number of bytes\n * initially specified when creating the Upload object. No Parts may be added after\n * an Upload is completed.\n */\n complete(uploadId, body, options) {\n return this._client.post(`/uploads/${uploadId}/complete`, { body, ...options });\n }\n}\nUploads.Parts = Parts;\n//# sourceMappingURL=uploads.mjs.map",
|
|
145
|
+
"/**\n * Like `Promise.allSettled()` but throws an error if any promises are rejected.\n */\nexport const allSettledWithThrow = async (promises) => {\n const results = await Promise.allSettled(promises);\n const rejected = results.filter((result) => result.status === 'rejected');\n if (rejected.length) {\n for (const result of rejected) {\n console.error(result.reason);\n }\n throw new Error(`${rejected.length} promise(s) failed - see the above errors`);\n }\n // Note: TS was complaining about using `.filter().map()` here for some reason\n const values = [];\n for (const result of results) {\n if (result.status === 'fulfilled') {\n values.push(result.value);\n }\n }\n return values;\n};\n//# sourceMappingURL=Util.mjs.map",
|
|
146
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { sleep, isRequestOptions } from \"../../core.mjs\";\nimport { CursorPage, Page } from \"../../pagination.mjs\";\nexport class Files extends APIResource {\n /**\n * Create a vector store file by attaching a\n * [File](https://platform.openai.com/docs/api-reference/files) to a\n * [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object).\n */\n create(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/files`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store file.\n */\n retrieve(vectorStoreId, fileId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Update attributes on a vector store file.\n */\n update(vectorStoreId, fileId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(vectorStoreId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list(vectorStoreId, {}, query);\n }\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/files`, VectorStoreFilesPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a vector store file. This will remove the file from the vector store but\n * the file itself will not be deleted. To delete the file, use the\n * [delete file](https://platform.openai.com/docs/api-reference/files/delete)\n * endpoint.\n */\n del(vectorStoreId, fileId, options) {\n return this._client.delete(`/vector_stores/${vectorStoreId}/files/${fileId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Attach a file to the given vector store and wait for it to be processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const file = await this.create(vectorStoreId, body, options);\n return await this.poll(vectorStoreId, file.id, options);\n }\n /**\n * Wait for the vector store file to finish processing.\n *\n * Note: this will return even if the file failed to process, you need to check\n * file.last_error and file.status to handle these cases\n */\n async poll(vectorStoreId, fileId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const fileResponse = await this.retrieve(vectorStoreId, fileId, {\n ...options,\n headers,\n }).withResponse();\n const file = fileResponse.data;\n switch (file.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = fileResponse.response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'completed':\n return file;\n }\n }\n }\n /**\n * Upload a file to the `files` API and then attach it to the given vector store.\n *\n * Note the file will be asynchronously processed (you can use the alternative\n * polling helper method to wait for processing to complete).\n */\n async upload(vectorStoreId, file, options) {\n const fileInfo = await this._client.files.create({ file: file, purpose: 'assistants' }, options);\n return this.create(vectorStoreId, { file_id: fileInfo.id }, options);\n }\n /**\n * Add a file to a vector store and poll until processing is complete.\n */\n async uploadAndPoll(vectorStoreId, file, options) {\n const fileInfo = await this.upload(vectorStoreId, file, options);\n return await this.poll(vectorStoreId, fileInfo.id, options);\n }\n /**\n * Retrieve the parsed contents of a vector store file.\n */\n content(vectorStoreId, fileId, options) {\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/files/${fileId}/content`, FileContentResponsesPage, { ...options, headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers } });\n }\n}\nexport class VectorStoreFilesPage extends CursorPage {\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class FileContentResponsesPage extends Page {\n}\nFiles.VectorStoreFilesPage = VectorStoreFilesPage;\nFiles.FileContentResponsesPage = FileContentResponsesPage;\n//# sourceMappingURL=files.mjs.map",
|
|
147
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport { sleep } from \"../../core.mjs\";\nimport { allSettledWithThrow } from \"../../lib/Util.mjs\";\nimport { VectorStoreFilesPage } from \"./files.mjs\";\nexport class FileBatches extends APIResource {\n /**\n * Create a vector store file batch.\n */\n create(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/file_batches`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store file batch.\n */\n retrieve(vectorStoreId, batchId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}/file_batches/${batchId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Cancel a vector store file batch. This attempts to cancel the processing of\n * files in this batch as soon as possible.\n */\n cancel(vectorStoreId, batchId, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}/file_batches/${batchId}/cancel`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Create a vector store batch and poll until all files have been processed.\n */\n async createAndPoll(vectorStoreId, body, options) {\n const batch = await this.create(vectorStoreId, body);\n return await this.poll(vectorStoreId, batch.id, options);\n }\n listFiles(vectorStoreId, batchId, query = {}, options) {\n if (isRequestOptions(query)) {\n return this.listFiles(vectorStoreId, batchId, {}, query);\n }\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/file_batches/${batchId}/files`, VectorStoreFilesPage, { query, ...options, headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers } });\n }\n /**\n * Wait for the given file batch to be processed.\n *\n * Note: this will return even if one of the files failed to process, you need to\n * check batch.file_counts.failed_count to handle this case.\n */\n async poll(vectorStoreId, batchId, options) {\n const headers = { ...options?.headers, 'X-Stainless-Poll-Helper': 'true' };\n if (options?.pollIntervalMs) {\n headers['X-Stainless-Custom-Poll-Interval'] = options.pollIntervalMs.toString();\n }\n while (true) {\n const { data: batch, response } = await this.retrieve(vectorStoreId, batchId, {\n ...options,\n headers,\n }).withResponse();\n switch (batch.status) {\n case 'in_progress':\n let sleepInterval = 5000;\n if (options?.pollIntervalMs) {\n sleepInterval = options.pollIntervalMs;\n }\n else {\n const headerInterval = response.headers.get('openai-poll-after-ms');\n if (headerInterval) {\n const headerIntervalMs = parseInt(headerInterval);\n if (!isNaN(headerIntervalMs)) {\n sleepInterval = headerIntervalMs;\n }\n }\n }\n await sleep(sleepInterval);\n break;\n case 'failed':\n case 'cancelled':\n case 'completed':\n return batch;\n }\n }\n }\n /**\n * Uploads the given files concurrently and then creates a vector store file batch.\n *\n * The concurrency limit is configurable using the `maxConcurrency` parameter.\n */\n async uploadAndPoll(vectorStoreId, { files, fileIds = [] }, options) {\n if (files == null || files.length == 0) {\n throw new Error(`No \\`files\\` provided to process. If you've already uploaded files you should use \\`.createAndPoll()\\` instead`);\n }\n const configuredConcurrency = options?.maxConcurrency ?? 5;\n // We cap the number of workers at the number of files (so we don't start any unnecessary workers)\n const concurrencyLimit = Math.min(configuredConcurrency, files.length);\n const client = this._client;\n const fileIterator = files.values();\n const allFileIds = [...fileIds];\n // This code is based on this design. The libraries don't accommodate our environment limits.\n // https://stackoverflow.com/questions/40639432/what-is-the-best-way-to-limit-concurrency-when-using-es6s-promise-all\n async function processFiles(iterator) {\n for (let item of iterator) {\n const fileObj = await client.files.create({ file: item, purpose: 'assistants' }, options);\n allFileIds.push(fileObj.id);\n }\n }\n // Start workers to process results\n const workers = Array(concurrencyLimit).fill(fileIterator).map(processFiles);\n // Wait for all processing to complete.\n await allSettledWithThrow(workers);\n return await this.createAndPoll(vectorStoreId, {\n file_ids: allFileIds,\n });\n }\n}\nexport { VectorStoreFilesPage };\n//# sourceMappingURL=file-batches.mjs.map",
|
|
148
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../resource.mjs\";\nimport { isRequestOptions } from \"../../core.mjs\";\nimport * as FileBatchesAPI from \"./file-batches.mjs\";\nimport { FileBatches, } from \"./file-batches.mjs\";\nimport * as FilesAPI from \"./files.mjs\";\nimport { FileContentResponsesPage, Files, VectorStoreFilesPage, } from \"./files.mjs\";\nimport { CursorPage, Page } from \"../../pagination.mjs\";\nexport class VectorStores extends APIResource {\n constructor() {\n super(...arguments);\n this.files = new FilesAPI.Files(this._client);\n this.fileBatches = new FileBatchesAPI.FileBatches(this._client);\n }\n /**\n * Create a vector store.\n */\n create(body, options) {\n return this._client.post('/vector_stores', {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Retrieves a vector store.\n */\n retrieve(vectorStoreId, options) {\n return this._client.get(`/vector_stores/${vectorStoreId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Modifies a vector store.\n */\n update(vectorStoreId, body, options) {\n return this._client.post(`/vector_stores/${vectorStoreId}`, {\n body,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n list(query = {}, options) {\n if (isRequestOptions(query)) {\n return this.list({}, query);\n }\n return this._client.getAPIList('/vector_stores', VectorStoresPage, {\n query,\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Delete a vector store.\n */\n del(vectorStoreId, options) {\n return this._client.delete(`/vector_stores/${vectorStoreId}`, {\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n /**\n * Search a vector store for relevant chunks based on a query and file attributes\n * filter.\n */\n search(vectorStoreId, body, options) {\n return this._client.getAPIList(`/vector_stores/${vectorStoreId}/search`, VectorStoreSearchResponsesPage, {\n body,\n method: 'post',\n ...options,\n headers: { 'OpenAI-Beta': 'assistants=v2', ...options?.headers },\n });\n }\n}\nexport class VectorStoresPage extends CursorPage {\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class VectorStoreSearchResponsesPage extends Page {\n}\nVectorStores.VectorStoresPage = VectorStoresPage;\nVectorStores.VectorStoreSearchResponsesPage = VectorStoreSearchResponsesPage;\nVectorStores.Files = Files;\nVectorStores.VectorStoreFilesPage = VectorStoreFilesPage;\nVectorStores.FileContentResponsesPage = FileContentResponsesPage;\nVectorStores.FileBatches = FileBatches;\n//# sourceMappingURL=vector-stores.mjs.map",
|
|
149
|
+
"// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _a;\nimport * as qs from \"./internal/qs/index.mjs\";\nimport * as Core from \"./core.mjs\";\nimport * as Errors from \"./error.mjs\";\nimport * as Pagination from \"./pagination.mjs\";\nimport * as Uploads from \"./uploads.mjs\";\nimport * as API from \"./resources/index.mjs\";\nimport { Batches, BatchesPage, } from \"./resources/batches.mjs\";\nimport { Completions, } from \"./resources/completions.mjs\";\nimport { Embeddings, } from \"./resources/embeddings.mjs\";\nimport { FileObjectsPage, Files, } from \"./resources/files.mjs\";\nimport { Images, } from \"./resources/images.mjs\";\nimport { Models, ModelsPage } from \"./resources/models.mjs\";\nimport { Moderations, } from \"./resources/moderations.mjs\";\nimport { Audio } from \"./resources/audio/audio.mjs\";\nimport { Beta } from \"./resources/beta/beta.mjs\";\nimport { Chat } from \"./resources/chat/chat.mjs\";\nimport { ContainerListResponsesPage, Containers, } from \"./resources/containers/containers.mjs\";\nimport { EvalListResponsesPage, Evals, } from \"./resources/evals/evals.mjs\";\nimport { FineTuning } from \"./resources/fine-tuning/fine-tuning.mjs\";\nimport { Graders } from \"./resources/graders/graders.mjs\";\nimport { Responses } from \"./resources/responses/responses.mjs\";\nimport { Uploads as UploadsAPIUploads, } from \"./resources/uploads/uploads.mjs\";\nimport { VectorStoreSearchResponsesPage, VectorStores, VectorStoresPage, } from \"./resources/vector-stores/vector-stores.mjs\";\nimport { ChatCompletionsPage, } from \"./resources/chat/completions/completions.mjs\";\n/**\n * API Client for interfacing with the OpenAI API.\n */\nexport class OpenAI extends Core.APIClient {\n /**\n * API Client for interfacing with the OpenAI API.\n *\n * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string | null | undefined} [opts.project=process.env['OPENAI_PROJECT_ID'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = Core.readEnv('OPENAI_BASE_URL'), apiKey = Core.readEnv('OPENAI_API_KEY'), organization = Core.readEnv('OPENAI_ORG_ID') ?? null, project = Core.readEnv('OPENAI_PROJECT_ID') ?? null, ...opts } = {}) {\n if (apiKey === undefined) {\n throw new Errors.OpenAIError(\"The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).\");\n }\n const options = {\n apiKey,\n organization,\n project,\n ...opts,\n baseURL: baseURL || `https://api.openai.com/v1`,\n };\n if (!options.dangerouslyAllowBrowser && Core.isRunningInBrowser()) {\n throw new Errors.OpenAIError(\"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\");\n }\n super({\n baseURL: options.baseURL,\n timeout: options.timeout ?? 600000 /* 10 minutes */,\n httpAgent: options.httpAgent,\n maxRetries: options.maxRetries,\n fetch: options.fetch,\n });\n this.completions = new API.Completions(this);\n this.chat = new API.Chat(this);\n this.embeddings = new API.Embeddings(this);\n this.files = new API.Files(this);\n this.images = new API.Images(this);\n this.audio = new API.Audio(this);\n this.moderations = new API.Moderations(this);\n this.models = new API.Models(this);\n this.fineTuning = new API.FineTuning(this);\n this.graders = new API.Graders(this);\n this.vectorStores = new API.VectorStores(this);\n this.beta = new API.Beta(this);\n this.batches = new API.Batches(this);\n this.uploads = new API.Uploads(this);\n this.responses = new API.Responses(this);\n this.evals = new API.Evals(this);\n this.containers = new API.Containers(this);\n this._options = options;\n this.apiKey = apiKey;\n this.organization = organization;\n this.project = project;\n }\n defaultQuery() {\n return this._options.defaultQuery;\n }\n defaultHeaders(opts) {\n return {\n ...super.defaultHeaders(opts),\n 'OpenAI-Organization': this.organization,\n 'OpenAI-Project': this.project,\n ...this._options.defaultHeaders,\n };\n }\n authHeaders(opts) {\n return { Authorization: `Bearer ${this.apiKey}` };\n }\n stringifyQuery(query) {\n return qs.stringify(query, { arrayFormat: 'brackets' });\n }\n}\n_a = OpenAI;\nOpenAI.OpenAI = _a;\nOpenAI.DEFAULT_TIMEOUT = 600000; // 10 minutes\nOpenAI.OpenAIError = Errors.OpenAIError;\nOpenAI.APIError = Errors.APIError;\nOpenAI.APIConnectionError = Errors.APIConnectionError;\nOpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nOpenAI.APIUserAbortError = Errors.APIUserAbortError;\nOpenAI.NotFoundError = Errors.NotFoundError;\nOpenAI.ConflictError = Errors.ConflictError;\nOpenAI.RateLimitError = Errors.RateLimitError;\nOpenAI.BadRequestError = Errors.BadRequestError;\nOpenAI.AuthenticationError = Errors.AuthenticationError;\nOpenAI.InternalServerError = Errors.InternalServerError;\nOpenAI.PermissionDeniedError = Errors.PermissionDeniedError;\nOpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;\nOpenAI.toFile = Uploads.toFile;\nOpenAI.fileFromPath = Uploads.fileFromPath;\nOpenAI.Completions = Completions;\nOpenAI.Chat = Chat;\nOpenAI.ChatCompletionsPage = ChatCompletionsPage;\nOpenAI.Embeddings = Embeddings;\nOpenAI.Files = Files;\nOpenAI.FileObjectsPage = FileObjectsPage;\nOpenAI.Images = Images;\nOpenAI.Audio = Audio;\nOpenAI.Moderations = Moderations;\nOpenAI.Models = Models;\nOpenAI.ModelsPage = ModelsPage;\nOpenAI.FineTuning = FineTuning;\nOpenAI.Graders = Graders;\nOpenAI.VectorStores = VectorStores;\nOpenAI.VectorStoresPage = VectorStoresPage;\nOpenAI.VectorStoreSearchResponsesPage = VectorStoreSearchResponsesPage;\nOpenAI.Beta = Beta;\nOpenAI.Batches = Batches;\nOpenAI.BatchesPage = BatchesPage;\nOpenAI.Uploads = UploadsAPIUploads;\nOpenAI.Responses = Responses;\nOpenAI.Evals = Evals;\nOpenAI.EvalListResponsesPage = EvalListResponsesPage;\nOpenAI.Containers = Containers;\nOpenAI.ContainerListResponsesPage = ContainerListResponsesPage;\n/** API Client for interfacing with the Azure OpenAI API. */\nexport class AzureOpenAI extends OpenAI {\n /**\n * API Client for interfacing with the Azure OpenAI API.\n *\n * @param {string | undefined} [opts.apiVersion=process.env['OPENAI_API_VERSION'] ?? undefined]\n * @param {string | undefined} [opts.endpoint=process.env['AZURE_OPENAI_ENDPOINT'] ?? undefined] - Your Azure endpoint, including the resource, e.g. `https://example-resource.azure.openai.com/`\n * @param {string | undefined} [opts.apiKey=process.env['AZURE_OPENAI_API_KEY'] ?? undefined]\n * @param {string | undefined} opts.deployment - A model deployment, if given, sets the base client URL to include `/deployments/{deployment}`.\n * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL']] - Sets the base URL for the API, e.g. `https://example-resource.azure.openai.com/openai/`.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.\n * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({ baseURL = Core.readEnv('OPENAI_BASE_URL'), apiKey = Core.readEnv('AZURE_OPENAI_API_KEY'), apiVersion = Core.readEnv('OPENAI_API_VERSION'), endpoint, deployment, azureADTokenProvider, dangerouslyAllowBrowser, ...opts } = {}) {\n if (!apiVersion) {\n throw new Errors.OpenAIError(\"The OPENAI_API_VERSION environment variable is missing or empty; either provide it, or instantiate the AzureOpenAI client with an apiVersion option, like new AzureOpenAI({ apiVersion: 'My API Version' }).\");\n }\n if (typeof azureADTokenProvider === 'function') {\n dangerouslyAllowBrowser = true;\n }\n if (!azureADTokenProvider && !apiKey) {\n throw new Errors.OpenAIError('Missing credentials. Please pass one of `apiKey` and `azureADTokenProvider`, or set the `AZURE_OPENAI_API_KEY` environment variable.');\n }\n if (azureADTokenProvider && apiKey) {\n throw new Errors.OpenAIError('The `apiKey` and `azureADTokenProvider` arguments are mutually exclusive; only one can be passed at a time.');\n }\n // define a sentinel value to avoid any typing issues\n apiKey ?? (apiKey = API_KEY_SENTINEL);\n opts.defaultQuery = { ...opts.defaultQuery, 'api-version': apiVersion };\n if (!baseURL) {\n if (!endpoint) {\n endpoint = process.env['AZURE_OPENAI_ENDPOINT'];\n }\n if (!endpoint) {\n throw new Errors.OpenAIError('Must provide one of the `baseURL` or `endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable');\n }\n baseURL = `${endpoint}/openai`;\n }\n else {\n if (endpoint) {\n throw new Errors.OpenAIError('baseURL and endpoint are mutually exclusive');\n }\n }\n super({\n apiKey,\n baseURL,\n ...opts,\n ...(dangerouslyAllowBrowser !== undefined ? { dangerouslyAllowBrowser } : {}),\n });\n this.apiVersion = '';\n this._azureADTokenProvider = azureADTokenProvider;\n this.apiVersion = apiVersion;\n this.deploymentName = deployment;\n }\n buildRequest(options, props = {}) {\n if (_deployments_endpoints.has(options.path) && options.method === 'post' && options.body !== undefined) {\n if (!Core.isObj(options.body)) {\n throw new Error('Expected request body to be an object');\n }\n const model = this.deploymentName || options.body['model'] || options.__metadata?.['model'];\n if (model !== undefined && !this.baseURL.includes('/deployments')) {\n options.path = `/deployments/${model}${options.path}`;\n }\n }\n return super.buildRequest(options, props);\n }\n async _getAzureADToken() {\n if (typeof this._azureADTokenProvider === 'function') {\n const token = await this._azureADTokenProvider();\n if (!token || typeof token !== 'string') {\n throw new Errors.OpenAIError(`Expected 'azureADTokenProvider' argument to return a string but it returned ${token}`);\n }\n return token;\n }\n return undefined;\n }\n authHeaders(opts) {\n return {};\n }\n async prepareOptions(opts) {\n /**\n * The user should provide a bearer token provider if they want\n * to use Azure AD authentication. The user shouldn't set the\n * Authorization header manually because the header is overwritten\n * with the Azure AD token if a bearer token provider is provided.\n */\n if (opts.headers?.['api-key']) {\n return super.prepareOptions(opts);\n }\n const token = await this._getAzureADToken();\n opts.headers ?? (opts.headers = {});\n if (token) {\n opts.headers['Authorization'] = `Bearer ${token}`;\n }\n else if (this.apiKey !== API_KEY_SENTINEL) {\n opts.headers['api-key'] = this.apiKey;\n }\n else {\n throw new Errors.OpenAIError('Unable to handle auth');\n }\n return super.prepareOptions(opts);\n }\n}\nconst _deployments_endpoints = new Set([\n '/completions',\n '/chat/completions',\n '/embeddings',\n '/audio/transcriptions',\n '/audio/translations',\n '/audio/speech',\n '/images/generations',\n '/images/edits',\n]);\nconst API_KEY_SENTINEL = '<Missing Key>';\nexport { toFile, fileFromPath } from \"./uploads.mjs\";\nexport { OpenAIError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from \"./error.mjs\";\nexport default OpenAI;\n//# sourceMappingURL=index.mjs.map",
|
|
150
|
+
"import { CLIError } from './base';\nimport { ExitCode } from './codes';\nimport { redactApiKeysInText } from '../utils/sanitize';\nimport { t } from '../i18n';\n\nexport interface ApiErrorBody {\n error?: {\n message?: string;\n type?: string;\n code?: string | number;\n };\n message?: string;\n msg?: string;\n}\n\nexport function mapApiError(status: number, body: ApiErrorBody, url: string): CLIError {\n // 对 API 错误消息做脱敏处理,防止泄露认证信息\n const apiMsg =\n redactApiKeysInText(\n body.error?.message ||\n body.message ||\n body.msg ||\n `HTTP ${status}`\n );\n\n switch (status) {\n case 400:\n return new CLIError(\n t('api.400') + apiMsg,\n ExitCode.USAGE,\n t('api.400Hint'),\n );\n\n case 401:\n return new CLIError(\n t('api.401'),\n ExitCode.AUTH,\n t('api.401Hint'),\n );\n\n case 402:\n return new CLIError(\n t('api.402') + apiMsg,\n ExitCode.QUOTA,\n t('api.402Hint'),\n );\n\n case 403:\n return new CLIError(\n t('api.403'),\n ExitCode.AUTH,\n t('api.403Hint'),\n );\n\n case 404:\n return new CLIError(\n t('api.404') + apiMsg,\n ExitCode.USAGE,\n t('api.404Hint'),\n );\n\n case 421:\n return new CLIError(\n t('api.421') + apiMsg,\n ExitCode.CONTENT_FILTER,\n t('api.421Hint'),\n );\n\n case 429:\n return new CLIError(\n t('api.429') + apiMsg,\n ExitCode.QUOTA,\n t('api.429Hint'),\n );\n\n case 500:\n return new CLIError(\n t('api.500'),\n ExitCode.NETWORK,\n t('api.500Hint'),\n );\n\n case 503:\n return new CLIError(\n t('api.503'),\n ExitCode.NETWORK,\n t('api.503Hint'),\n );\n\n default:\n return new CLIError(\n t('api.default') + apiMsg + ' (HTTP ' + status + ')',\n ExitCode.GENERAL,\n );\n }\n}\n",
|
|
151
|
+
"// ============================================================\n// MiMo 扩展类型定义\n// ============================================================\n\n// Chat\nexport interface ChatMessage {\n role: 'system' | 'user' | 'assistant' | 'tool';\n content: string | ContentPart[];\n reasoning_content?: string;\n tool_calls?: ToolCall[];\n tool_call_id?: string;\n}\n\nexport type ContentPart = TextPart | ImageUrlPart | InputAudioPart | VideoUrlPart;\n\nexport interface TextPart {\n type: 'text';\n text: string;\n}\n\nexport interface ImageUrlPart {\n type: 'image_url';\n image_url: { url: string };\n}\n\nexport interface InputAudioPart {\n type: 'input_audio';\n input_audio: { data: string };\n}\n\nexport interface VideoUrlPart {\n type: 'video_url';\n video_url: { url: string };\n fps?: number;\n media_resolution?: 'default' | 'max';\n}\n\nexport interface ToolCall {\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n}\n\nexport interface ChatRequest {\n model: string;\n messages: ChatMessage[];\n max_completion_tokens?: number;\n temperature?: number;\n top_p?: number;\n stream?: boolean;\n stop?: string | string[];\n frequency_penalty?: number;\n presence_penalty?: number;\n thinking?: { type: 'enabled' | 'disabled' };\n tools?: ToolDef[];\n tool_choice?: string;\n response_format?: { type: 'text' | 'json_object' };\n audio?: AudioOutputConfig;\n asr_options?: { language: 'auto' | 'zh' | 'en' };\n}\n\nexport interface ToolDef {\n type: 'function' | 'web_search';\n // 使用 Record<string, unknown> 替代 any,表示任意 JSON Schema 对象\n function?: { name: string; description?: string; parameters?: Record<string, unknown>; strict?: boolean };\n max_keyword?: number;\n force_search?: boolean;\n limit?: number;\n user_location?: { type: string; country?: string; region?: string; city?: string };\n}\n\nexport interface AudioOutputConfig {\n format?: 'wav' | 'mp3' | 'pcm' | 'pcm16';\n voice?: string;\n optimize_text_preview?: boolean;\n}\n\nexport interface ChatResponse {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: ChatChoice[];\n usage?: Usage;\n}\n\nexport interface ChatChoice {\n index: number;\n message: ChatMessage & { audio?: AudioData; annotations?: Annotation[] };\n finish_reason: string;\n}\n\n// 流式响应 delta 类型,替代原来的 any\nexport interface ChatStreamDelta {\n role?: string;\n content?: string;\n reasoning_content?: string;\n annotations?: Annotation[];\n}\n\nexport interface ChatStreamChunk {\n id: string;\n object: 'chat.completion.chunk';\n created: number;\n model: string;\n choices: { index: number; delta: ChatStreamDelta; finish_reason: string | null }[];\n usage?: Usage;\n}\n\nexport interface AudioData {\n id: string;\n data: string;\n expires_at: number | null;\n transcript: string | null;\n}\n\nexport interface Annotation {\n type: string;\n url: string;\n title: string;\n summary: string;\n site_name: string;\n publish_time: string;\n logo_url: string;\n}\n\nexport interface Usage {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n completion_tokens_details?: { reasoning_tokens: number };\n prompt_tokens_details?: {\n cached_tokens: number;\n audio_tokens: number;\n image_tokens: number;\n video_tokens: number;\n };\n web_search_usage?: { tool_usage: number; page_usage: number };\n seconds?: number;\n}\n\n// TTS voices\nexport interface TTSVoice {\n name: string;\n voiceId: string;\n language: string;\n gender: string;\n}\n\n// ============================================================\n// MiMo 扩展的 ChatCompletion 消息类型\n// ============================================================\n\nexport interface MiMoChatMessage {\n role: 'system' | 'user' | 'assistant';\n content: string | MiMoContentPart[];\n reasoning_content?: string; // MiMo 推理过程\n}\n\nexport interface MiMoContentPart {\n type: 'text' | 'image_url' | 'input_audio' | 'video_url';\n text?: string;\n image_url?: { url: string };\n input_audio?: { data: string; format?: string };\n video_url?: { url: string };\n}\n\n// MiMo 扩展的 ChatCompletion 参数\nexport interface MiMoChatCompletionParams {\n model: string;\n messages: MiMoChatMessage[];\n stream?: boolean;\n temperature?: number;\n max_tokens?: number;\n top_p?: number;\n // MiMo 特有参数\n search?: boolean;\n reasoning_effort?: 'low' | 'medium' | 'high';\n}\n\n// MiMo TTS 参数\nexport interface MiMoTTSParams {\n model: string;\n input: string;\n voice: string;\n response_format?: string;\n speed?: number;\n // 声音克隆参数\n reference_audio?: string;\n reference_text?: string;\n // 音色设计参数\n voice_design_prompt?: string;\n}\n\n// MiMo ASR 参数\nexport interface MiMoASRParams {\n model: string;\n file: string; // base64 encoded audio\n response_format?: 'json' | 'text' | 'srt' | 'verbose_json' | 'vtt';\n language?: string;\n}\n\n// MiMo ChatCompletion 响应扩展\nexport interface MiMoChatCompletion {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n index: number;\n message: {\n role: string;\n content: string | null;\n reasoning_content?: string;\n audio?: AudioData;\n annotations?: Annotation[];\n };\n finish_reason: string;\n }>;\n usage?: Usage;\n}\n\n// MiMo 流式响应 chunk 扩展\nexport interface MiMoChatCompletionChunk {\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n index: number;\n delta: ChatStreamDelta;\n finish_reason: string | null;\n }>;\n}\n\n// ============================================================\n// 类型安全辅助函数 — 替代 as unknown as 模式\n// ============================================================\n\n/**\n * 从 OpenAI SDK 的 delta 对象中安全提取 MiMo 扩展字段。\n * OpenAI SDK 的 Delta 类型不包含 reasoning_content 和 annotations,\n * 但 MiMo API 会在运行时返回这些字段。\n */\nexport function extractDelta(delta: Record<string, unknown>): ChatStreamDelta {\n return {\n role: typeof delta.role === 'string' ? delta.role : undefined,\n content: typeof delta.content === 'string' ? delta.content : undefined,\n reasoning_content: typeof delta.reasoning_content === 'string' ? delta.reasoning_content : undefined,\n annotations: Array.isArray(delta.annotations) ? delta.annotations as Annotation[] : undefined,\n };\n}\n\n/**\n * 从 OpenAI SDK 的 chunk 对象中安全提取 usage 字段。\n * OpenAI SDK 的 ChatCompletionChunk.usage 类型与 MiMo 的 Usage 不完全一致。\n */\nexport function extractChunkUsage(chunk: Record<string, unknown>): Usage | undefined {\n const usage = chunk.usage;\n if (typeof usage === 'object' && usage !== null) {\n return usage as Usage;\n }\n return undefined;\n}\n\n/**\n * 安全中止 OpenAI SDK 的 Stream 对象。\n * Stream 内部有 controller 属性但不在公开类型定义中。\n */\nexport function abortStream(stream: object): void {\n if ('controller' in stream) {\n const ctrl = (stream as Record<string, unknown>).controller;\n if (ctrl && typeof ctrl === 'object' && ctrl !== null && 'abort' in ctrl) {\n (ctrl as { abort(): void }).abort();\n }\n }\n}\n\n/**\n * 从 OpenAI APIError 中安全提取 url 字段。\n * url 属性在运行时存在但不在 OpenAI SDK 类型定义中。\n */\nexport function extractErrorUrl(err: object): string {\n if ('url' in err) {\n const url = (err as Record<string, unknown>).url;\n return typeof url === 'string' ? url : '';\n }\n return '';\n}\n",
|
|
152
|
+
"import OpenAI from 'openai';\nimport type { APIError } from 'openai';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\nimport { mapApiError, type ApiErrorBody } from '../errors/api';\nimport { MiMoClient } from './index';\nimport { extractErrorUrl } from '../types/api';\nimport { resolveCredential, inferBaseUrlFromKey } from '../auth/resolver';\nimport type { Config } from '../config/schema';\n\n/**\n * Extract the URL from an OpenAI APIError.\n * 使用 extractErrorUrl 辅助函数安全访问运行时属性。\n */\nfunction getErrorUrl(err: APIError): string {\n return extractErrorUrl(err);\n}\n\n/**\n * Wrap an unknown error (typically from the OpenAI SDK) into a CLIError.\n */\nexport function wrapApiError(err: unknown): CLIError {\n if (err instanceof CLIError) {\n return err;\n }\n\n if (err instanceof OpenAI.APIConnectionError) {\n return new CLIError(\n 'Network request failed.',\n ExitCode.NETWORK,\n 'Check your network connection.\\n' +\n 'To use a proxy: set HTTPS_PROXY env var, or run: mimo config set proxy http://HOST:PORT',\n );\n }\n\n if (err instanceof OpenAI.RateLimitError) {\n const body = (err.error as ApiErrorBody) ?? {};\n return mapApiError(err.status ?? 429, body, getErrorUrl(err));\n }\n\n if (err instanceof OpenAI.AuthenticationError) {\n const body = (err.error as ApiErrorBody) ?? {};\n return mapApiError(err.status ?? 401, body, getErrorUrl(err));\n }\n\n if (err instanceof OpenAI.BadRequestError) {\n const body = (err.error as ApiErrorBody) ?? {};\n return mapApiError(err.status ?? 400, body, getErrorUrl(err));\n }\n\n if (err instanceof OpenAI.APIError) {\n const body = (err.error as ApiErrorBody) ?? {};\n return mapApiError(err.status ?? 0, body, getErrorUrl(err));\n }\n\n // Generic error fallback\n if (err instanceof Error) {\n if (\n err.name === 'AbortError' ||\n err.name === 'TimeoutError' ||\n err.message.includes('timed out')\n ) {\n return new CLIError(\n 'Request timed out.',\n ExitCode.TIMEOUT,\n 'Try increasing --timeout (e.g. --timeout 60).',\n );\n }\n\n return new CLIError(err.message, ExitCode.GENERAL);\n }\n\n return new CLIError(String(err), ExitCode.GENERAL);\n}\n\nexport interface ClientConfig {\n apiKey?: string;\n fileApiKey?: string;\n baseURL?: string;\n baseUrl?: string; // Config 类型使用 baseUrl(小写 u)\n timeout?: number;\n}\n\n/**\n * Resolve the API key from config, env, or credential store.\n * 使用统一的 resolveCredential 函数,支持 flag / env / config.json 三种来源。\n */\nfunction resolveApiKey(config?: Partial<ClientConfig>): string {\n if (config) {\n // 构造一个最小 Config 对象传给 resolveCredential\n const partialConfig: Partial<Config> = {\n apiKey: config.apiKey,\n fileApiKey: config.fileApiKey,\n };\n try {\n return resolveCredential(partialConfig as Config).token;\n } catch {\n // resolveCredential 抛出异常,继续尝试下面的方式\n }\n }\n\n // 环境变量兜底\n const envKey = process.env.MIMO_API_KEY ?? process.env.MIMO_API_TOKEN;\n if (envKey) {\n return envKey;\n }\n\n throw new CLIError(\n 'No API key provided.',\n ExitCode.AUTH,\n 'Set your API key:\\n' +\n ' mimo auth login — interactive login\\n' +\n ' export MIMO_API_KEY=... — via environment variable\\n' +\n ' mimo chat --api-key ... — via flag',\n );\n}\n\n/**\n * Resolve the base URL from config or env.\n * 同时支持 baseURL(ClientConfig)和 baseUrl(Config)两种命名。\n * 如果没有显式配置 base URL,则根据 API Key 前缀自动推断。\n */\nfunction resolveBaseURL(config?: Partial<ClientConfig>): string | undefined {\n if (config?.baseURL) {\n return config.baseURL;\n }\n if (config?.baseUrl) {\n return config.baseUrl;\n }\n if (process.env.MIMO_BASE_URL) {\n return process.env.MIMO_BASE_URL;\n }\n\n // 根据 API Key 前缀自动推断 base URL\n const apiKey = config?.apiKey || config?.fileApiKey;\n if (apiKey) {\n const inferred = inferBaseUrlFromKey(apiKey);\n if (inferred) {\n return inferred;\n }\n }\n\n return undefined;\n}\n\n/**\n * Factory: create a MiMoClient from partial config.\n * Resolves API key and base URL from environment if not provided.\n */\nexport function createClient(config?: Partial<ClientConfig>): MiMoClient {\n const apiKey = resolveApiKey(config);\n const baseURL = resolveBaseURL(config);\n\n return new MiMoClient({\n apiKey,\n baseURL,\n timeout: config?.timeout,\n });\n}\n",
|
|
153
|
+
"import OpenAI from 'openai';\nimport type {\n ChatCompletion,\n ChatCompletionChunk,\n} from 'openai/resources/chat/completions';\nimport type { Stream } from 'openai/streaming';\nimport type { ChatRequest, MiMoChatCompletion, MiMoChatCompletionChunk, ToolDef } from '../types/api';\nimport { VERSION } from '../version';\nimport { wrapApiError } from './errors';\n\nconst DEFAULT_BASE_URL = 'https://api.xiaomimimo.com/v1';\nconst DEFAULT_TIMEOUT_SEC = 300;\n\nexport interface MiMoClientConfig {\n apiKey: string;\n baseURL?: string;\n timeout?: number;\n}\n\n/**\n * MiMo API client that wraps the OpenAI SDK.\n * MiMo API is OpenAI-compatible, so we reuse the SDK's chat.completions endpoint.\n */\nexport class MiMoClient {\n private openai: OpenAI;\n\n constructor(config: MiMoClientConfig) {\n this.openai = new OpenAI({\n apiKey: config.apiKey,\n baseURL: config.baseURL || DEFAULT_BASE_URL,\n timeout: (config.timeout ?? DEFAULT_TIMEOUT_SEC) * 1000,\n defaultHeaders: {\n 'User-Agent': `mimo-cli/${VERSION}`,\n },\n });\n }\n\n /**\n * 构建 OpenAI SDK 兼容的请求参数,将 MiMo 特有字段提取到 extraBody 中。\n * OpenAI SDK 会将 extraBody 中的字段透传到请求体,无需 as any。\n *\n * 注意:OpenAI SDK 的 tools 参数只接受 type: 'function' 的工具定义,\n * MiMo 的 web_search 工具需要通过额外请求体透传。\n */\n private buildRequestParams(params: ChatRequest, stream: boolean): Record<string, unknown> {\n const { thinking, asr_options, audio, tools, ...openaiParams } = params;\n\n const result: Record<string, unknown> = {\n ...openaiParams,\n stream,\n thinking,\n asr_options,\n audio,\n };\n\n // MiMo API 的 tools 参数同时支持 function 和 web_search 类型,\n // 但 OpenAI SDK 只接受 function 类型,因此需要直接透传原始 tools 数组\n if (tools && tools.length > 0) {\n result.tools = tools;\n }\n\n return result;\n }\n\n /**\n * Non-streaming chat completion.\n * 返回 MiMoChatCompletion 类型。由于 OpenAI SDK 的 ChatCompletion 类型\n * 不包含 MiMo 扩展字段(reasoning_content 等),需要类型转换。\n * 运行时 MiMo API 返回的数据结构是兼容的,因此此转换是安全的。\n */\n async chatCompletion(\n params: ChatRequest,\n ): Promise<MiMoChatCompletion> {\n try {\n const requestParams = this.buildRequestParams(params, false);\n // 请求参数类型转换:MiMo 特有字段通过 OpenAI SDK 透传\n const response = await this.openai.chat.completions.create(\n requestParams as unknown as Parameters<typeof this.openai.chat.completions.create>[0],\n );\n // 响应类型转换:OpenAI ChatCompletion → MiMoChatCompletion(运行时结构兼容)\n return response as unknown as MiMoChatCompletion;\n } catch (err) {\n throw wrapApiError(err);\n }\n }\n\n /**\n * Streaming chat completion.\n * 返回 Stream<ChatCompletionChunk>,MiMo 扩展字段在 delta 中通过运行时透传。\n * 使用 extractDelta() 辅助函数可安全提取 MiMo 扩展字段。\n */\n async chatCompletionStream(\n params: ChatRequest,\n ): Promise<Stream<ChatCompletionChunk>> {\n try {\n const requestParams = this.buildRequestParams(params, true);\n // 请求参数类型转换同 chatCompletion\n return await this.openai.chat.completions.create(\n requestParams as unknown as Parameters<typeof this.openai.chat.completions.create>[0],\n ) as Stream<ChatCompletionChunk>;\n } catch (err) {\n throw wrapApiError(err);\n }\n }\n\n /**\n * Convenience method: detect the `stream` parameter and call the\n * appropriate method. MiMo-specific fields (thinking, asr_options, audio)\n * are passed through the request body.\n *\n * Returns either a MiMoChatCompletion (non-streaming) or a Stream<ChatCompletionChunk> (streaming).\n */\n async chat(\n params: ChatRequest,\n ): Promise<MiMoChatCompletion | Stream<ChatCompletionChunk>> {\n const isStreaming = params.stream === true;\n\n if (isStreaming) {\n return this.chatCompletionStream(params);\n }\n\n return this.chatCompletion(params);\n }\n\n /**\n * Access the underlying OpenAI instance for advanced usage.\n */\n get raw(): OpenAI {\n return this.openai;\n }\n}\n\nexport { wrapApiError } from './errors';\nexport { createClient } from './errors';\n",
|
|
154
|
+
"const DIM = '\\x1b[2m';\nconst RESET_DIM = '\\x1b[22m';\nconst GRAY = '\\x1b[90m';\nconst RESET_COLOR = '\\x1b[39m';\n\nexport function formatReasoning(reasoning: string, content: string): string {\n const parts: string[] = [];\n\n if (reasoning) {\n parts.push(`${DIM}${GRAY}${reasoning}${RESET_COLOR}${RESET_DIM}`);\n }\n\n if (content) {\n parts.push(content);\n }\n\n return parts.join('\\n\\n');\n}\n",
|
|
155
|
+
"const CYAN = '\\x1b[36m';\nconst RESET = '\\x1b[39m';\n\nexport interface Annotation {\n title?: string;\n url?: string;\n summary?: string;\n}\n\nexport function formatAnnotations(annotations: Annotation[]): string {\n if (!annotations || annotations.length === 0) return '';\n\n const lines: string[] = [];\n\n for (let i = 0; i < annotations.length; i++) {\n const ann = annotations[i]!;\n const num = `[${i + 1}]`;\n const parts: string[] = [num];\n\n if (ann.title) {\n parts.push(ann.title);\n }\n\n if (ann.url) {\n parts.push(`${CYAN}${ann.url}${RESET}`);\n }\n\n if (ann.summary) {\n parts.push(`— ${ann.summary}`);\n }\n\n lines.push(parts.join(' '));\n }\n\n return lines.join('\\n');\n}\n",
|
|
156
|
+
"import { defineCommand } from '../command';\nimport { createClient } from '../client/index';\nimport { formatReasoning } from '../output/reasoning';\nimport { formatAnnotations, type Annotation } from '../output/annotations';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\nimport { t } from '../i18n';\nimport type { ChatMessage, ChatRequest, ToolDef, MiMoChatCompletion, ChatStreamDelta, Usage } from '../types/api';\nimport { extractDelta, extractChunkUsage, abortStream } from '../types/api';\nimport type { ChatFlags, GlobalFlags } from '../types/flags';\nimport type { Config } from '../config/schema';\n\nexport default defineCommand({\n name: 'chat',\n description: 'cmd.chat.desc',\n usage: 'mimo chat --message <text> [flags]',\n options: [\n { flag: '-m, --message <text>', description: 'Message text', required: true },\n { flag: '--model <model>', description: 'Model name (default: mimo-v2.5-pro)' },\n { flag: '-s, --system <text>', description: 'System prompt' },\n { flag: '--thinking', description: 'Enable thinking mode' },\n { flag: '--search', description: 'Enable web search' },\n { flag: '--force-search', description: 'Force web search' },\n { flag: '--max-keyword <n>', description: '一轮搜索最大关键词数量', type: 'number' },\n { flag: '--search-limit <n>', description: '搜索结果数量限制', type: 'number' },\n { flag: '--user-country <country>', description: '用户位置:国家' },\n { flag: '--user-region <region>', description: '用户位置:地区' },\n { flag: '--user-city <city>', description: '用户位置:城市' },\n { flag: '--stream', description: 'Streaming output (default: on, use --no-stream to disable)', default: true },\n { flag: '--no-stream', description: 'Disable streaming output' },\n { flag: '--json', description: 'Structured JSON output' },\n { flag: '--max-tokens <n>', description: 'Max completion tokens', type: 'number' },\n { flag: '--temperature <n>', description: 'Sampling temperature', type: 'number' },\n ],\n examples: [\n 'mimo chat --message \"What is MiMo?\"',\n 'mimo chat -m \"Hello\" --model mimo-v2.5-pro --thinking',\n 'mimo chat -m \"Latest news\" --search',\n 'mimo chat -m \"武汉明天天气\" --search --user-city 武汉',\n 'mimo chat -m \"Return JSON\" --json --no-stream',\n ],\n async run(config: Config, rawFlags: Record<string, unknown>) {\n const flags = rawFlags as GlobalFlags & ChatFlags;\n const client = createClient(config);\n\n const message = flags.message;\n if (!message) {\n throw new CLIError(t('chat.noMessage'), ExitCode.USAGE, 'Usage: mimo chat --message <text>');\n }\n\n // 边界条件:空消息(仅空白字符)\n if (message.trim().length === 0) {\n throw new CLIError(t('chat.emptyMessage'), ExitCode.USAGE, 'Provide a non-empty message with --message <text>');\n }\n\n // 边界条件:超长消息(超过 100000 字符)\n const MAX_MESSAGE_LENGTH = 100000;\n if (message.length > MAX_MESSAGE_LENGTH) {\n throw new CLIError(\n t('chat.messageTooLong', { len: String(message.length), max: String(MAX_MESSAGE_LENGTH) }),\n ExitCode.USAGE,\n t('chat.messageTooLongHint'),\n );\n }\n\n const model = flags.model ?? 'mimo-v2.5-pro';\n const shouldStream = flags.noStream ? false : (flags.stream !== false);\n\n // Build messages\n const messages: ChatMessage[] = [];\n if (flags.system) {\n messages.push({ role: 'system', content: flags.system });\n }\n messages.push({ role: 'user', content: message });\n\n // Build request\n const params: ChatRequest = {\n model,\n messages,\n stream: shouldStream,\n };\n\n if (flags.thinking) {\n params.thinking = { type: 'enabled' };\n }\n\n if (flags.search) {\n const tool: ToolDef = { type: 'web_search' };\n if (flags.forceSearch) {\n tool.force_search = true;\n }\n // 最大关键词数量\n if (flags.maxKeyword !== undefined) {\n tool.max_keyword = flags.maxKeyword;\n }\n // 搜索结果数量限制\n if (flags.searchLimit !== undefined) {\n tool.limit = flags.searchLimit;\n }\n // 用户位置信息\n if (flags.userCountry || flags.userRegion || flags.userCity) {\n tool.user_location = {\n type: 'approximate',\n ...(flags.userCountry && { country: flags.userCountry }),\n ...(flags.userRegion && { region: flags.userRegion }),\n ...(flags.userCity && { city: flags.userCity }),\n };\n }\n params.tools = [tool];\n }\n\n if (flags.json) {\n params.response_format = { type: 'json_object' };\n }\n\n if (flags.maxTokens !== undefined) {\n params.max_completion_tokens = flags.maxTokens;\n }\n\n if (flags.temperature !== undefined) {\n params.temperature = flags.temperature;\n }\n\n // Dry-run\n if (config.dryRun) {\n console.log(JSON.stringify({ request: params }, null, 2));\n return;\n }\n\n if (shouldStream) {\n let fullContent = '';\n let fullReasoning = '';\n const collectedAnnotations: Annotation[] = [];\n\n const DIM = '\\x1b[2m';\n const GRAY = '\\x1b[90m';\n const RESET = '\\x1b[0m';\n\n const stream = await client.chatCompletionStream(params);\n try {\n for await (const chunk of stream) {\n for (const choice of chunk.choices) {\n // 使用 extractDelta 安全提取 MiMo 扩展字段\n const delta = extractDelta(choice.delta as Record<string, unknown>);\n\n if (delta?.reasoning_content) {\n fullReasoning += delta.reasoning_content;\n process.stdout.write(`${DIM}${GRAY}${delta.reasoning_content}${RESET}`);\n }\n\n if (delta?.content) {\n fullContent += delta.content;\n process.stdout.write(delta.content);\n }\n\n if (delta?.annotations) {\n collectedAnnotations.push(...delta.annotations);\n }\n }\n\n // Stream usage may come in the final chunk\n const chunkUsage = extractChunkUsage(chunk as unknown as Record<string, unknown>);\n if (chunkUsage && config.verbose) {\n process.stderr.write(`\\n\\nTokens: prompt=${chunkUsage.prompt_tokens}, completion=${chunkUsage.completion_tokens}, total=${chunkUsage.total_tokens}\\n`);\n }\n }\n } catch (err) {\n // 流式请求失败时给出明确错误提示\n throw new CLIError(\n t('chat.streamFailed') + (err instanceof Error ? err.message : String(err)),\n ExitCode.NETWORK,\n t('chat.streamFailedHint'),\n );\n } finally {\n // 确保流式连接被正确关闭,释放网络资源\n abortStream(stream);\n }\n\n process.stdout.write('\\n');\n\n if (collectedAnnotations.length > 0) {\n process.stdout.write('\\n' + formatAnnotations(collectedAnnotations) + '\\n');\n }\n } else {\n const response: MiMoChatCompletion = await client.chatCompletion(params);\n\n for (const choice of response.choices) {\n const msg = choice.message;\n let output = '';\n\n if (msg?.reasoning_content && msg?.content) {\n output = formatReasoning(msg.reasoning_content, msg.content);\n } else if (msg?.content) {\n output = msg.content;\n } else if (msg?.reasoning_content) {\n output = formatReasoning(msg.reasoning_content, '');\n }\n\n if (output) {\n console.log(output);\n }\n\n if (msg?.annotations && msg.annotations.length > 0) {\n console.log('\\n' + formatAnnotations(msg.annotations));\n }\n }\n\n if (response.usage && config.verbose) {\n process.stderr.write(`\\nTokens: prompt=${response.usage.prompt_tokens}, completion=${response.usage.completion_tokens}, total=${response.usage.total_tokens}\\n`);\n }\n }\n },\n});\n",
|
|
157
|
+
"import { defineCommand } from '../command';\nimport { createClient } from '../client/index';\nimport { formatReasoning } from '../output/reasoning';\nimport { formatAnnotations, type Annotation } from '../output/annotations';\nimport * as clack from '@clack/prompts';\nimport { t } from '../i18n';\nimport type { ChatMessage, ChatRequest, ChatStreamDelta } from '../types/api';\nimport { extractDelta, abortStream } from '../types/api';\nimport type { ReplFlags, GlobalFlags } from '../types/flags';\nimport type { Config } from '../config/schema';\n\nexport default defineCommand({\n name: 'repl',\n description: 'cmd.repl.desc',\n usage: 'mimo repl [flags]',\n options: [\n { flag: '--model <model>', description: 'Model name (default: mimo-v2.5-pro)' },\n { flag: '--thinking', description: 'Enable thinking mode' },\n { flag: '--search', description: 'Enable web search' },\n { flag: '-s, --system <text>', description: 'System prompt' },\n ],\n examples: [\n 'mimo repl',\n 'mimo repl --thinking --system \"You are a helpful coding assistant\"',\n 'mimo repl --search',\n ],\n async run(config: Config, rawFlags: Record<string, unknown>) {\n const flags = rawFlags as GlobalFlags & ReplFlags;\n const client = createClient(config);\n const model = flags.model ?? 'mimo-v2.5-pro';\n\n // Initialize conversation history\n const messages: ChatMessage[] = [];\n if (flags.system) {\n messages.push({ role: 'system', content: flags.system });\n }\n\n clack.intro(t('repl.intro'));\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const input = await clack.text({\n message: t('repl.you'),\n placeholder: t('repl.placeholder'),\n });\n\n if (clack.isCancel(input)) {\n clack.outro(t('repl.goodbye'));\n break;\n }\n\n const text = (input as string).trim();\n\n if (!text) continue;\n\n if (text === '/exit' || text === '/quit') {\n clack.outro(t('repl.goodbye'));\n break;\n }\n\n if (text === '/clear') {\n messages.length = 0;\n if (flags.system) {\n messages.push({ role: 'system', content: flags.system });\n }\n clack.note(t('repl.cleared'));\n continue;\n }\n\n // Add user message\n messages.push({ role: 'user', content: text });\n\n // Build request params\n const params: ChatRequest = {\n model,\n messages,\n stream: true,\n };\n\n if (flags.thinking) {\n params.thinking = { type: 'enabled' };\n }\n\n if (flags.search) {\n params.tools = [{ type: 'web_search' }];\n }\n\n // Stream the response\n let assistantContent = '';\n let assistantReasoning = '';\n const collectedAnnotations: Annotation[] = [];\n\n const DIM = '\\x1b[2m';\n const GRAY = '\\x1b[90m';\n const RESET = '\\x1b[0m';\n\n process.stdout.write('\\n');\n\n try {\n const stream = await client.chatCompletionStream(params);\n try {\n for await (const chunk of stream) {\n for (const choice of chunk.choices) {\n // 使用 extractDelta 安全提取 MiMo 扩展字段\n const delta = extractDelta(choice.delta as Record<string, unknown>);\n\n if (delta?.reasoning_content) {\n assistantReasoning += delta.reasoning_content;\n process.stdout.write(`${DIM}${GRAY}${delta.reasoning_content}${RESET}`);\n }\n\n if (delta?.content) {\n assistantContent += delta.content;\n process.stdout.write(delta.content);\n }\n\n if (delta?.annotations) {\n collectedAnnotations.push(...delta.annotations);\n }\n }\n }\n } finally {\n // 确保流式连接被正确关闭,释放网络资源\n abortStream(stream);\n }\n } catch (err) {\n process.stdout.write(`\\n\\nError: ${err instanceof Error ? err.message : String(err)}\\n`);\n // Remove the failed user message so the conversation can continue\n messages.pop();\n continue;\n }\n\n process.stdout.write('\\n');\n\n if (collectedAnnotations.length > 0) {\n process.stdout.write('\\n' + formatAnnotations(collectedAnnotations) + '\\n');\n }\n\n // Add assistant response to history — include reasoning_content to avoid 400 errors\n const assistantMsg: ChatMessage = {\n role: 'assistant',\n content: assistantContent,\n };\n if (assistantReasoning) {\n assistantMsg.reasoning_content = assistantReasoning;\n }\n messages.push(assistantMsg);\n }\n },\n});\n",
|
|
158
|
+
"import { readFile, stat } from 'node:fs/promises';\nimport { extname } from 'node:path';\n\nconst IMAGE_MIME_MAP: Record<string, string> = {\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.png': 'image/png',\n '.gif': 'image/gif',\n '.webp': 'image/webp',\n '.bmp': 'image/bmp',\n};\n\nexport async function localFileToDataUri(filePath: string): Promise<string> {\n const ext = extname(filePath).toLowerCase();\n const mime = IMAGE_MIME_MAP[ext];\n if (!mime) {\n throw new Error(\n `Unsupported image format: \"${ext}\". Supported formats: ${Object.keys(IMAGE_MIME_MAP).join(', ')}`,\n );\n }\n\n // 边界条件:空文件检查\n const fileStat = await stat(filePath);\n if (fileStat.size === 0) {\n throw new Error(`Image file is empty: \"${filePath}\"`);\n }\n\n const buffer = await readFile(filePath);\n const base64 = buffer.toString('base64');\n return `data:${mime};base64,${base64}`;\n}\n\nexport async function resolveImageInput(input: string): Promise<string> {\n if (input.startsWith('http://') || input.startsWith('https://')) {\n return input;\n }\n if (input.startsWith('data:')) {\n return input;\n }\n return localFileToDataUri(input);\n}\n",
|
|
159
|
+
"import { readFile, stat } from 'node:fs/promises';\nimport { extname } from 'node:path';\n\nconst AUDIO_MIME_MAP: Record<string, string> = {\n '.wav': 'audio/wav',\n '.mp3': 'audio/mpeg',\n};\n\nconst SUPPORTED_AUDIO_EXTS = Object.keys(AUDIO_MIME_MAP);\n\nexport async function audioFileToBase64DataUri(filePath: string): Promise<string> {\n const ext = extname(filePath).toLowerCase();\n const mime = AUDIO_MIME_MAP[ext];\n if (!mime) {\n throw new Error(\n `Unsupported audio format: \"${ext}\". Supported formats: ${SUPPORTED_AUDIO_EXTS.join(', ')}`,\n );\n }\n const buffer = await readFile(filePath);\n const base64 = buffer.toString('base64');\n return `data:${mime};base64,${base64}`;\n}\n\nexport async function validateAudioFile(filePath: string, maxSizeMB: number = 10): Promise<void> {\n const ext = extname(filePath).toLowerCase();\n if (!AUDIO_MIME_MAP[ext]) {\n throw new Error(\n `Unsupported audio format: \"${ext}\". Supported formats: ${SUPPORTED_AUDIO_EXTS.join(', ')}`,\n );\n }\n\n const stats = await stat(filePath);\n\n // 边界条件:空文件检查\n if (stats.size === 0) {\n throw new Error(`Audio file is empty: \"${filePath}\"`);\n }\n\n const sizeMB = stats.size / (1024 * 1024);\n if (sizeMB > maxSizeMB) {\n throw new Error(\n `Audio file too large: ${sizeMB.toFixed(2)}MB exceeds the ${maxSizeMB}MB limit.`,\n );\n }\n}\n",
|
|
160
|
+
"import { readFile, stat } from 'node:fs/promises';\nimport { extname } from 'node:path';\nimport { t } from '../i18n';\n\nconst VIDEO_MIME_MAP: Record<string, string> = {\n '.mp4': 'video/mp4',\n '.mov': 'video/quicktime',\n '.avi': 'video/x-msvideo',\n '.wmv': 'video/x-ms-wmv',\n};\n\nconst SUPPORTED_VIDEO_EXTS = Object.keys(VIDEO_MIME_MAP);\n\n// Base64 编码后大小约为原始文件的 4/3,API 限制 Base64 字符串 ≤ 50 MB\nconst BASE64_MAX_SIZE_MB = 50;\nconst RAW_FILE_MAX_SIZE_MB = BASE64_MAX_SIZE_MB * 0.75; // ≈ 37.5 MB\n\nexport async function videoFileToBase64DataUri(filePath: string): Promise<string> {\n const ext = extname(filePath).toLowerCase();\n const mime = VIDEO_MIME_MAP[ext];\n if (!mime) {\n throw new Error(\n `Unsupported video format: \"${ext}\". Supported formats: ${SUPPORTED_VIDEO_EXTS.join(', ')}`,\n );\n }\n\n // 先检查原始文件大小,避免读取超大文件浪费内存\n const stats = await stat(filePath);\n if (stats.size === 0) {\n throw new Error(`Video file is empty: \"${filePath}\"`);\n }\n const rawSizeMB = stats.size / (1024 * 1024);\n if (rawSizeMB > RAW_FILE_MAX_SIZE_MB) {\n throw new Error(\n t('vision.videoTooLarge', { size: rawSizeMB.toFixed(2), limit: String(BASE64_MAX_SIZE_MB) }) + ' ' +\n t('vision.videoTooLargeHint', { max: RAW_FILE_MAX_SIZE_MB.toFixed(1) }),\n );\n }\n\n const buffer = await readFile(filePath);\n const base64 = buffer.toString('base64');\n\n // 二次校验:Base64 编码后实际大小\n const base64SizeMB = Buffer.byteLength(base64, 'utf-8') / (1024 * 1024);\n if (base64SizeMB > BASE64_MAX_SIZE_MB) {\n throw new Error(\n t('vision.videoBase64TooLarge', { size: base64SizeMB.toFixed(2), limit: String(BASE64_MAX_SIZE_MB) }) + ' ' +\n t('vision.videoBase64TooLargeHint'),\n );\n }\n\n return `data:${mime};base64,${base64}`;\n}\n\nexport async function validateVideoFile(filePath: string, maxSizeMB: number = RAW_FILE_MAX_SIZE_MB): Promise<void> {\n const ext = extname(filePath).toLowerCase();\n if (!VIDEO_MIME_MAP[ext]) {\n throw new Error(\n `Unsupported video format: \"${ext}\". Supported formats: ${SUPPORTED_VIDEO_EXTS.join(', ')}`,\n );\n }\n\n const stats = await stat(filePath);\n\n // 边界条件:空文件检查\n if (stats.size === 0) {\n throw new Error(`Video file is empty: \"${filePath}\"`);\n }\n\n const sizeMB = stats.size / (1024 * 1024);\n if (sizeMB > maxSizeMB) {\n throw new Error(\n `Video file too large: ${sizeMB.toFixed(2)}MB exceeds the ${maxSizeMB}MB limit.`,\n );\n }\n}\n",
|
|
161
|
+
"import { defineCommand } from '../command';\nimport { createClient } from '../client/index';\nimport { resolveImageInput } from '../utils/image';\nimport { audioFileToBase64DataUri } from '../utils/audio';\nimport { videoFileToBase64DataUri } from '../utils/video';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\nimport { t } from '../i18n';\nimport type { ChatMessage, ChatRequest, ContentPart, VideoUrlPart, ChatStreamDelta } from '../types/api';\nimport { extractDelta, abortStream } from '../types/api';\nimport type { VisionFlags, GlobalFlags } from '../types/flags';\nimport type { Config } from '../config/schema';\n\nfunction isUrl(input: string): boolean {\n return input.startsWith('http://') || input.startsWith('https://');\n}\n\nexport default defineCommand({\n name: 'vision',\n description: 'cmd.vision.desc',\n usage: 'mimo vision --image <path|url> --prompt <text> [flags]',\n options: [\n { flag: '--image <path|url>', description: 'Image file path or URL' },\n { flag: '--audio <path|url>', description: 'Audio file path or URL' },\n { flag: '--video <path|url>', description: 'Video file path or URL' },\n { flag: '-p, --prompt <text>', description: 'Question about the content', required: true },\n { flag: '--model <model>', description: 'Model name (default: mimo-v2.5)' },\n { flag: '--stream', description: 'Streaming output (default: on, use --no-stream to disable)', default: true },\n { flag: '--no-stream', description: 'Disable streaming output' },\n { flag: '--fps <n>', description: 'Video frame rate (default: 2)', type: 'number' },\n { flag: '--media-resolution <value>', description: 'Video resolution: default | max' },\n ],\n examples: [\n 'mimo vision --image photo.jpg -p \"Describe this image\"',\n 'mimo vision --image https://example.com/img.png -p \"What is in this picture?\"',\n 'mimo vision --audio recording.mp3 -p \"Transcribe this audio\"',\n 'mimo vision --video clip.mp4 -p \"Summarize this video\" --fps 1',\n 'mimo vision --image a.jpg --audio b.mp3 -p \"Compare the image and audio\"',\n ],\n async run(config: Config, rawFlags: Record<string, unknown>) {\n const flags = rawFlags as GlobalFlags & VisionFlags;\n const client = createClient(config);\n\n // Validate at least one media input\n if (!flags.image && !flags.audio && !flags.video) {\n throw new CLIError(\n t('vision.noMedia'),\n ExitCode.USAGE,\n 'mimo vision --image <路径|URL> --prompt <文本>',\n );\n }\n\n if (!flags.prompt) {\n throw new CLIError(\n t('vision.noPrompt'),\n ExitCode.USAGE,\n 'mimo vision --image <路径|URL> -p <文本>',\n );\n }\n\n const model = flags.model ?? 'mimo-v2.5';\n const shouldStream = flags.noStream ? false : (flags.stream !== false);\n\n // Build content parts\n const content: ContentPart[] = [];\n\n if (flags.image) {\n const imageUrl = await resolveImageInput(flags.image);\n content.push({ type: 'image_url', image_url: { url: imageUrl } });\n }\n\n if (flags.audio) {\n if (isUrl(flags.audio)) {\n content.push({ type: 'input_audio', input_audio: { data: flags.audio } });\n } else {\n const dataUri = await audioFileToBase64DataUri(flags.audio);\n content.push({ type: 'input_audio', input_audio: { data: dataUri } });\n }\n }\n\n if (flags.video) {\n let videoUrl: string;\n if (isUrl(flags.video)) {\n // URL 模式:直接传入,API 侧限制 300 MB\n videoUrl = flags.video;\n } else {\n // 本地文件模式:Base64 编码,限制原始文件 ≤ 37.5 MB(编码后 ≤ 50 MB)\n videoUrl = await videoFileToBase64DataUri(flags.video);\n }\n const videoPart: VideoUrlPart = {\n type: 'video_url',\n video_url: { url: videoUrl },\n };\n if (flags.fps !== undefined) {\n videoPart.fps = flags.fps;\n }\n if (flags.mediaResolution) {\n videoPart.media_resolution = flags.mediaResolution;\n }\n content.push(videoPart);\n }\n\n // Add the text prompt\n content.push({ type: 'text', text: flags.prompt });\n\n const messages: ChatMessage[] = [\n { role: 'user', content },\n ];\n\n const params: ChatRequest = {\n model,\n messages,\n stream: shouldStream,\n };\n\n // Dry-run\n if (config.dryRun) {\n console.log(JSON.stringify({ request: params }, null, 2));\n return;\n }\n\n if (shouldStream) {\n // Stream response\n let fullContent = '';\n let fullReasoning = '';\n\n const DIM = '\\x1b[2m';\n const GRAY = '\\x1b[90m';\n const RESET = '\\x1b[0m';\n\n const stream = await client.chatCompletionStream(params);\n try {\n for await (const chunk of stream) {\n for (const choice of chunk.choices) {\n const delta = extractDelta(choice.delta as Record<string, unknown>);\n\n if (delta?.reasoning_content) {\n fullReasoning += delta.reasoning_content;\n process.stdout.write(`${DIM}${GRAY}${delta.reasoning_content}${RESET}`);\n }\n\n if (delta?.content) {\n fullContent += delta.content;\n process.stdout.write(delta.content);\n }\n }\n }\n } catch (err) {\n throw new CLIError(\n t('vision.requestFailed') + (err instanceof Error ? err.message : String(err)),\n ExitCode.NETWORK,\n t('vision.requestFailedHint'),\n );\n } finally {\n abortStream(stream);\n }\n\n process.stdout.write('\\n');\n } else {\n // Non-stream response\n const response = await client.chatCompletion(params);\n for (const choice of response.choices) {\n const msg = choice.message;\n if (msg?.reasoning_content && msg?.content) {\n console.log(`[Thinking] ${msg.reasoning_content}\\n\\n${msg.content}`);\n } else if (msg?.content) {\n console.log(msg.content);\n } else if (msg?.reasoning_content) {\n console.log(`[Thinking] ${msg.reasoning_content}`);\n }\n }\n }\n },\n});\n",
|
|
162
|
+
"import { defineCommand } from '../command';\nimport { createClient } from '../client/index';\nimport { validateAudioFile, audioFileToBase64DataUri } from '../utils/audio';\nimport { CLIError } from '../errors/base';\nimport { ExitCode } from '../errors/codes';\nimport { t } from '../i18n';\nimport type { ChatMessage, ChatRequest, InputAudioPart, MiMoChatCompletion, ChatStreamDelta } from '../types/api';\nimport { extractDelta, abortStream } from '../types/api';\nimport type { ASRFlags, GlobalFlags } from '../types/flags';\nimport type { Config } from '../config/schema';\n\nexport default defineCommand({\n name: 'asr',\n description: 'cmd.asr.desc',\n usage: 'mimo asr <audio-file> [flags]',\n options: [\n { flag: '--language <lang>', description: 'Language: auto | zh | en (default: auto)' },\n { flag: '--stream', description: 'Enable streaming output' },\n { flag: '--file <path>', description: 'Audio file path (alternative to positional arg)' },\n ],\n examples: [\n 'mimo asr recording.wav',\n 'mimo asr audio.mp3 --language zh',\n 'mimo asr --file recording.wav --language en',\n ],\n async run(config: Config, rawFlags: Record<string, unknown>) {\n const flags = rawFlags as GlobalFlags & ASRFlags;\n const client = createClient(config);\n\n // Get audio file path from positional args or --file flag\n const positionalArgs = rawFlags._positional as string[] | undefined;\n const filePath = positionalArgs?.[0] ?? flags.file;\n\n if (!filePath) {\n throw new CLIError(\n t('asr.noFile'),\n ExitCode.USAGE,\n 'Usage: mimo asr <audio-file> [flags]',\n );\n }\n\n // Validate file format and size\n await validateAudioFile(filePath, 10);\n\n // Convert to Base64 data URI\n const dataUri = await audioFileToBase64DataUri(filePath);\n\n const language = flags.language ?? 'auto';\n\n // Build messages with audio content\n const audioPart: InputAudioPart = {\n type: 'input_audio',\n input_audio: { data: dataUri },\n };\n\n const messages: ChatMessage[] = [\n {\n role: 'user',\n content: [audioPart],\n },\n ];\n\n const params: ChatRequest = {\n model: 'mimo-v2.5-asr',\n messages,\n stream: flags.stream ?? false,\n asr_options: { language },\n };\n\n // Dry-run\n if (config.dryRun) {\n console.log(JSON.stringify({ request: { ...params, messages: [{ role: 'user', content: '[audio data]' }] } }, null, 2));\n return;\n }\n\n if (flags.stream) {\n const stream = await client.chatCompletionStream(params);\n try {\n for await (const chunk of stream) {\n for (const choice of chunk.choices) {\n // 使用 extractDelta 安全提取 MiMo 扩展字段\n const delta = extractDelta(choice.delta as Record<string, unknown>);\n if (delta?.content) {\n process.stdout.write(delta.content);\n }\n }\n }\n } catch (err) {\n // ASR 流式请求失败时给出明确错误提示\n throw new CLIError(\n t('asr.streamFailed') + (err instanceof Error ? err.message : String(err)),\n ExitCode.NETWORK,\n t('asr.checkHint'),\n );\n } finally {\n // 确保流式连接被正确关闭,释放网络资源\n abortStream(stream);\n }\n process.stdout.write('\\n');\n } else {\n let response: MiMoChatCompletion;\n try {\n response = await client.chatCompletion(params);\n } catch (err) {\n // ASR 请求失败时给出明确错误提示\n throw new CLIError(\n t('asr.requestFailed') + (err instanceof Error ? err.message : String(err)),\n ExitCode.NETWORK,\n t('asr.checkHint'),\n );\n }\n\n for (const choice of response.choices) {\n const content = choice.message?.content;\n if (content) {\n console.log(typeof content === 'string' ? content : JSON.stringify(content));\n }\n }\n }\n },\n});\n",
|
|
163
|
+
"import { writeFileSync, mkdirSync, existsSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\nimport { defineCommand } from '../../command';\nimport { CLIError } from '../../errors/base';\nimport { ExitCode } from '../../errors/codes';\nimport { createClient } from '../../client/index';\nimport { dryRun, detectOutputFormat, formatOutput } from '../../output/formatter';\nimport { createSpinner } from '../../output/progress';\nimport { t } from '../../i18n';\nimport type { ChatRequest, AudioData, MiMoChatCompletion } from '../../types/api';\nimport type { TTSSynthesizeFlags } from '../../types/flags';\nimport type { GlobalFlags } from '../../types/flags';\nimport type { Config } from '../../config/schema';\n\nconst VALID_VOICES = [\n 'mimo_default', '冰糖', '茉莉', '苏打', '白桦',\n 'Mia', 'Chloe', 'Milo', 'Dean',\n] as const;\n\nexport function defaultOutPath(prefix: string, ext: string): string {\n const ts = new Date().toISOString().slice(0, 19).replace(/[T:]/g, '-');\n return `${prefix}_${ts}.${ext}`;\n}\n\nexport function saveAudioData(audioData: string, outPath: string): string {\n const dest = resolve(outPath);\n const dir = dirname(dest);\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n const buffer = Buffer.from(audioData, 'base64');\n writeFileSync(dest, buffer);\n return dest;\n}\n\nexport default defineCommand({\n name: 'tts synthesize',\n description: 'cmd.ttsSynth.desc',\n apiDocs: '/docs/api-reference/tts',\n usage: 'mimo tts synthesize --text <text> [flags]',\n options: [\n { flag: '-t, --text <text>', description: 'Text to synthesize', required: true },\n { flag: '--voice <id>', description: `Voice ID (default: mimo_default). Valid: ${VALID_VOICES.join(', ')}`, default: 'mimo_default' },\n { flag: '--style <desc>', description: 'Natural language style instruction' },\n { flag: '--format <fmt>', description: 'Audio format: wav/mp3/pcm (default: wav)', default: 'wav' },\n { flag: '-o, --out <path>', description: 'Output file path' },\n ],\n examples: [\n 'mimo tts synthesize --text \"你好,世界!\"',\n 'mimo tts synthesize -t \"Hello world\" --voice Mia --format mp3',\n 'mimo tts synthesize -t \"温柔地说\" --style \"温柔、缓慢\" --voice 茉莉',\n ],\n async run(config: Config, rawFlags: Record<string, unknown>) {\n const flags = rawFlags as GlobalFlags & TTSSynthesizeFlags;\n const text = flags.text;\n if (!text) {\n throw new CLIError(\n t('tts.noText'),\n ExitCode.USAGE,\n 'mimo tts synthesize --text \"你好,世界!\"',\n );\n }\n\n // 边界条件:空文本(仅空白字符)\n if (text.trim().length === 0) {\n throw new CLIError(\n t('tts.emptyText'),\n ExitCode.USAGE,\n 'Provide non-empty text to synthesize.',\n );\n }\n\n // 边界条件:超长文本(超过 5000 字符)\n const MAX_TTS_TEXT_LENGTH = 5000;\n if (text.length > MAX_TTS_TEXT_LENGTH) {\n throw new CLIError(\n t('tts.textTooLong', { len: String(text.length), max: String(MAX_TTS_TEXT_LENGTH) }),\n ExitCode.USAGE,\n t('tts.textTooLongHint'),\n );\n }\n\n const voice = flags.voice ?? 'mimo_default';\n if (!(VALID_VOICES as readonly string[]).includes(voice)) {\n throw new CLIError(\n t('tts.invalidVoice') + '\"' + voice + '\". ' + VALID_VOICES.join(', '),\n ExitCode.USAGE,\n );\n }\n\n const format = flags.format ?? 'wav';\n const outPath = flags.out ?? defaultOutPath('tts_output', format);\n\n const messages: ChatRequest['messages'] = [];\n if (flags.style) {\n messages.push({ role: 'user', content: flags.style });\n messages.push({ role: 'assistant', content: text });\n } else {\n messages.push({ role: 'assistant', content: text });\n }\n\n const body: ChatRequest = {\n model: 'mimo-v2.5-tts',\n messages,\n stream: false,\n audio: {\n format: format as 'wav' | 'mp3' | 'pcm',\n voice,\n },\n };\n\n if (dryRun(config, body)) return;\n\n const spinner = createSpinner(t('spinner.synthesizing'));\n spinner.start();\n\n try {\n const client = createClient(config);\n const response: MiMoChatCompletion = await client.chatCompletion(body);\n\n const audio = response.choices?.[0]?.message?.audio as AudioData | undefined;\n if (!audio?.data) {\n throw new CLIError(t('tts.noAudioData'), ExitCode.GENERAL);\n }\n\n const savedPath = saveAudioData(audio.data, outPath);\n spinner.stop('');\n\n const outputFormat = detectOutputFormat(config.output);\n if (!config.quiet) {\n console.log(formatOutput({ output: savedPath, voice, format }, outputFormat));\n } else {\n console.log(savedPath);\n }\n } catch (err) {\n spinner.stop('');\n throw err;\n }\n },\n});\n",
|
|
164
|
+
"import * as clack from '@clack/prompts';\n\nexport interface Spinner {\n start(): void;\n stop(message?: string): void;\n update(message: string): void;\n}\n\nexport function createSpinner(message: string): Spinner {\n const s = clack.spinner();\n\n return {\n start() {\n s.start(message);\n },\n stop(message?: string) {\n s.stop(message ?? '', 0);\n },\n update(message: string) {\n s.message(message);\n },\n };\n}\n\nexport interface ProgressBar {\n update(current: number): void;\n done(): void;\n}\n\nexport function createProgressBar(total: number, message: string): ProgressBar {\n const isTTY = process.stderr.isTTY;\n const width = 30;\n\n return {\n update(current: number) {\n if (!isTTY) return;\n const pct = Math.min(1, current / total);\n const filled = Math.round(width * pct);\n const empty = width - filled;\n const bar = '█'.repeat(filled) + '░'.repeat(empty);\n const pctStr = `${Math.round(pct * 100)}%`;\n process.stderr.write(`\\r${message} ${bar} ${pctStr}`);\n },\n done() {\n if (isTTY) {\n process.stderr.write('\\n');\n }\n },\n };\n}\n",
|
|
165
|
+
"import { defineCommand } from '../../command';\nimport { CLIError } from '../../errors/base';\nimport { ExitCode } from '../../errors/codes';\nimport { createClient } from '../../client/index';\nimport { dryRun, detectOutputFormat, formatOutput } from '../../output/formatter';\nimport { createSpinner } from '../../output/progress';\nimport { audioFileToBase64DataUri, validateAudioFile } from '../../utils/audio';\nimport { saveAudioData, defaultOutPath } from './synthesize';\nimport { t } from '../../i18n';\nimport type { ChatRequest, AudioData, MiMoChatCompletion } from '../../types/api';\nimport type { TTSCloneFlags } from '../../types/flags';\nimport type { GlobalFlags } from '../../types/flags';\nimport type { Config } from '../../config/schema';\n\nexport default defineCommand({\n name: 'tts clone',\n description: 'cmd.ttsClone.desc',\n apiDocs: '/docs/api-reference/tts-voiceclone',\n usage: 'mimo tts clone --sample <audio> --text <text> [flags]',\n options: [\n { flag: '--sample <path>', description: 'Audio sample file path (mp3/wav)', required: true },\n { flag: '-t, --text <text>', description: 'Text to synthesize', required: true },\n { flag: '--format <fmt>', description: 'Audio format: wav/mp3/pcm (default: wav)', default: 'wav' },\n { flag: '-o, --out <path>', description: 'Output file path' },\n ],\n examples: [\n 'mimo tts clone --sample voice.mp3 --text \"你好,世界!\"',\n 'mimo tts clone --sample my_voice.wav -t \"Hello world\" --format mp3',\n ],\n async run(config: Config, rawFlags: Record<string, unknown>) {\n const flags = rawFlags as GlobalFlags & TTSCloneFlags;\n const samplePath = flags.sample;\n const text = flags.text;\n\n if (!samplePath) {\n throw new CLIError(\n t('tts.noSample'),\n ExitCode.USAGE,\n 'mimo tts clone --sample voice.mp3 --text \"你好,世界!\"',\n );\n }\n if (!text) {\n throw new CLIError(\n t('tts.noText'),\n ExitCode.USAGE,\n 'mimo tts clone --sample voice.mp3 --text \"你好,世界!\"',\n );\n }\n\n await validateAudioFile(samplePath, 10);\n\n const format = flags.format ?? 'wav';\n const outPath = flags.out ?? defaultOutPath('clone_output', format);\n\n const spinner = createSpinner(t('spinner.readingSample'));\n spinner.start();\n\n try {\n const voiceDataUri = await audioFileToBase64DataUri(samplePath);\n\n spinner.update(t('spinner.cloning'));\n\n const messages: ChatRequest['messages'] = [\n { role: 'user', content: '' },\n { role: 'assistant', content: text },\n ];\n\n const body: ChatRequest = {\n model: 'mimo-v2.5-tts-voiceclone',\n messages,\n stream: false,\n audio: {\n format: format as 'wav' | 'mp3' | 'pcm',\n voice: voiceDataUri,\n },\n };\n\n if (dryRun(config, body)) {\n spinner.stop('');\n return;\n }\n\n const client = createClient(config);\n const response: MiMoChatCompletion = await client.chatCompletion(body);\n\n const audio = response.choices?.[0]?.message?.audio as AudioData | undefined;\n if (!audio?.data) {\n throw new CLIError(t('tts.noAudioData'), ExitCode.GENERAL);\n }\n\n const savedPath = saveAudioData(audio.data, outPath);\n spinner.stop('');\n\n const outputFormat = detectOutputFormat(config.output);\n if (!config.quiet) {\n console.log(formatOutput({ output: savedPath, format }, outputFormat));\n } else {\n console.log(savedPath);\n }\n } catch (err) {\n spinner.stop('');\n throw err;\n }\n },\n});\n",
|
|
166
|
+
"import { defineCommand } from '../../command';\nimport { CLIError } from '../../errors/base';\nimport { ExitCode } from '../../errors/codes';\nimport { createClient } from '../../client/index';\nimport { dryRun, detectOutputFormat, formatOutput } from '../../output/formatter';\nimport { createSpinner } from '../../output/progress';\nimport { saveAudioData, defaultOutPath } from './synthesize';\nimport { t } from '../../i18n';\nimport type { ChatRequest, AudioData, MiMoChatCompletion } from '../../types/api';\nimport type { TTSDesignFlags } from '../../types/flags';\nimport type { GlobalFlags } from '../../types/flags';\nimport type { Config } from '../../config/schema';\n\nexport default defineCommand({\n name: 'tts design',\n description: 'cmd.ttsDesign.desc',\n apiDocs: '/docs/api-reference/tts-voicedesign',\n usage: 'mimo tts design --prompt <description> [flags]',\n options: [\n { flag: '-p, --prompt <desc>', description: 'Voice description text', required: true },\n { flag: '-t, --text <text>', description: 'Text to synthesize (optional if --optimize-text)' },\n { flag: '--optimize-text', description: 'Enable smart text preview optimization' },\n { flag: '--format <fmt>', description: 'Audio format: wav/mp3/pcm (default: wav)', default: 'wav' },\n { flag: '-o, --out <path>', description: 'Output file path' },\n ],\n examples: [\n 'mimo tts design --prompt \"温柔的女声,语速较慢\" --text \"你好,世界!\"',\n 'mimo tts design -p \"低沉男声,播音腔\" --optimize-text',\n 'mimo tts design --prompt \"活泼的少女音\" -t \"今天天气真好\" --format mp3',\n ],\n async run(config: Config, rawFlags: Record<string, unknown>) {\n const flags = rawFlags as GlobalFlags & TTSDesignFlags;\n const prompt = flags.prompt;\n if (!prompt) {\n throw new CLIError(\n t('tts.noPrompt'),\n ExitCode.USAGE,\n 'mimo tts design --prompt \"温柔的女声\" --text \"你好\"',\n );\n }\n\n const text = flags.text;\n const optimizeText = flags.optimizeText ?? false;\n\n if (!text && !optimizeText) {\n throw new CLIError(\n t('tts.noTextOrOptimize'),\n ExitCode.USAGE,\n 'mimo tts design --prompt \"温柔的女声\" --text \"你好\" 或 --optimize-text',\n );\n }\n\n const format = flags.format ?? 'wav';\n const outPath = flags.out ?? defaultOutPath('design_output', format);\n\n const messages: ChatRequest['messages'] = [\n { role: 'user', content: prompt },\n ];\n if (text) {\n messages.push({ role: 'assistant', content: text });\n }\n\n const audioConfig: ChatRequest['audio'] = {\n format: format as 'wav' | 'mp3' | 'pcm',\n };\n if (optimizeText && !text) {\n audioConfig.optimize_text_preview = true;\n }\n\n const body: ChatRequest = {\n model: 'mimo-v2.5-tts-voicedesign',\n messages,\n stream: false,\n audio: audioConfig,\n };\n\n if (dryRun(config, body)) return;\n\n const spinner = createSpinner(t('spinner.designing'));\n spinner.start();\n\n try {\n const client = createClient(config);\n const response: MiMoChatCompletion = await client.chatCompletion(body);\n\n const audio = response.choices?.[0]?.message?.audio as AudioData | undefined;\n if (!audio?.data) {\n throw new CLIError(t('tts.noAudioData'), ExitCode.GENERAL);\n }\n\n const savedPath = saveAudioData(audio.data, outPath);\n spinner.stop('');\n\n const outputFormat = detectOutputFormat(config.output);\n if (!config.quiet) {\n console.log(formatOutput({ output: savedPath, format }, outputFormat));\n } else {\n console.log(savedPath);\n }\n } catch (err) {\n spinner.stop('');\n throw err;\n }\n },\n});\n",
|
|
167
|
+
"import { defineCommand } from '../../command';\nimport { formatTable } from '../../output/text';\nimport { detectOutputFormat, formatOutput } from '../../output/formatter';\nimport type { TTSVoice } from '../../types/api';\nimport type { GlobalFlags, TTSVoicesFlags } from '../../types/flags';\nimport type { Config } from '../../config/schema';\n\nconst VOICES: TTSVoice[] = [\n { name: 'MiMo默认', voiceId: 'mimo_default', language: '中/英', gender: '-' },\n { name: '冰糖', voiceId: '冰糖', language: '中文', gender: '女' },\n { name: '茉莉', voiceId: '茉莉', language: '中文', gender: '女' },\n { name: '苏打', voiceId: '苏打', language: '中文', gender: '男' },\n { name: '白桦', voiceId: '白桦', language: '中文', gender: '男' },\n { name: 'Mia', voiceId: 'Mia', language: '英文', gender: '女' },\n { name: 'Chloe', voiceId: 'Chloe', language: '英文', gender: '女' },\n { name: 'Milo', voiceId: 'Milo', language: '英文', gender: '男' },\n { name: 'Dean', voiceId: 'Dean', language: '英文', gender: '男' },\n];\n\nexport default defineCommand({\n name: 'tts voices',\n description: 'cmd.ttsVoices.desc',\n usage: 'mimo tts voices',\n options: [],\n examples: [\n 'mimo tts voices',\n 'mimo tts voices --output json',\n ],\n async run(config: Config, _rawFlags: Record<string, unknown>) {\n const format = detectOutputFormat(config.output);\n\n if (format === 'json') {\n console.log(formatOutput(VOICES, format));\n return;\n }\n\n const headers = ['name', 'voiceId', 'language', 'gender'];\n const rows = VOICES.map(v => [v.name, v.voiceId, v.language, v.gender]);\n console.log(formatTable(headers, rows));\n },\n});\n",
|
|
168
|
+
"import { scanCommandPath, parseFlags } from './args';\nimport { registry } from './registry';\nimport { GLOBAL_OPTIONS } from './command';\nimport { handleError } from './errors/handler';\nimport { loadConfig } from './config/loader';\nimport type { Config } from './config/schema';\nimport { ensureAuth } from './auth/setup';\nimport { VERSION } from './version';\nimport { initLocale, t } from './i18n';\n\n// Command imports — management commands (created in this agent)\nimport { authLoginCommand } from './commands/auth/login';\nimport { authStatusCommand } from './commands/auth/status';\nimport { authLogoutCommand } from './commands/auth/logout';\nimport { configShowCommand } from './commands/config/show';\nimport { configSetCommand } from './commands/config/set';\nimport { updateCommand } from './commands/update';\nimport { helpCommand } from './commands/help';\nimport { languageCommand } from './commands/language';\n\n// Command imports — API commands (created by another agent in parallel, using default exports)\nimport chatCommand from './commands/chat';\nimport replCommand from './commands/repl';\nimport visionCommand from './commands/vision';\nimport asrCommand from './commands/asr';\nimport ttsSynthesizeCommand from './commands/tts/synthesize';\nimport ttsCloneCommand from './commands/tts/clone';\nimport ttsDesignCommand from './commands/tts/design';\nimport ttsVoicesCommand from './commands/tts/voices';\n\n// Register all commands\nregistry.register('chat', chatCommand);\nregistry.register('repl', replCommand);\nregistry.register('vision', visionCommand);\nregistry.register('asr', asrCommand);\nregistry.register('tts synthesize', ttsSynthesizeCommand);\nregistry.register('tts generate', ttsSynthesizeCommand); // alias\nregistry.register('tts clone', ttsCloneCommand);\nregistry.register('tts design', ttsDesignCommand);\nregistry.register('tts voices', ttsVoicesCommand);\nregistry.register('auth login', authLoginCommand);\nregistry.register('auth status', authStatusCommand);\nregistry.register('auth logout', authLogoutCommand);\nregistry.register('config show', configShowCommand);\nregistry.register('config set', configSetCommand);\nregistry.register('update', updateCommand);\nregistry.register('help', helpCommand);\nregistry.register('language', languageCommand);\n\n// Commands that don't require authentication\nconst NO_AUTH_COMMANDS = [\n ['auth', 'login'],\n ['auth', 'status'],\n ['auth', 'logout'],\n ['config', 'show'],\n ['config', 'set'],\n ['update'],\n ['help'],\n ['language'],\n];\n\n// Handle Ctrl+C gracefully\nprocess.on('SIGINT', () => {\n process.stderr.write(t('main.interrupted') + '\\n');\n process.exit(130);\n});\n\n// Handle stdout EPIPE gracefully (e.g., piped to `head` that exits early)\nprocess.stdout.on('error', (e: NodeJS.ErrnoException) => {\n if (e.code === 'EPIPE') process.exit(0);\n else throw e;\n});\n\n// Handle uncaught exceptions and unhandled rejections\nprocess.on('uncaughtException', (err: unknown) => {\n handleError(err);\n});\n\nprocess.on('unhandledRejection', (err: unknown) => {\n handleError(err);\n});\n\nexport async function main(): Promise<void> {\n let argv: string[];\n try {\n argv = process.argv.slice(2);\n } catch (err) {\n // 极端情况:process.argv 不可用\n process.stderr.write(t('main.fatalArgv'));\n process.exit(1);\n }\n\n // 1. --version / -v → print version and exit\n if (argv.includes('--version') || argv.includes('-v')) {\n console.log(`mimo ${VERSION}`);\n process.exit(0);\n }\n\n // 2. scanCommandPath to extract command path\n const commandPath = scanCommandPath(argv, GLOBAL_OPTIONS);\n\n // 3. --help / -h → print help and exit (before needing config)\n if (argv.includes('--help') || argv.includes('-h')) {\n const config = loadConfig({});\n initLocale((config as any).language);\n registry.printHelp(commandPath);\n process.exit(0);\n }\n\n // 4. No command → print help + show login prompt if not authenticated\n if (commandPath.length === 0) {\n const config = loadConfig({});\n initLocale((config as any).language);\n registry.printHelp([]);\n\n const hasKey = !!(config.apiKey || config.fileApiKey || process.env.MIMO_API_KEY);\n if (!hasKey) {\n process.stderr.write(t('main.notLoggedIn') + '\\n');\n process.stderr.write(t('main.loginHint1') + '\\n');\n process.stderr.write(t('main.loginHint2') + '\\n\\n');\n }\n process.exit(0);\n }\n\n // 5. registry.resolve(commandPath) → get command\n const { command, extra } = registry.resolve(commandPath);\n\n // 6. parseFlags with global + command options\n const flags = parseFlags(argv, [...GLOBAL_OPTIONS, ...(command.options ?? [])]);\n\n // Pass positional args\n if (extra.length > 0) {\n (flags as Record<string, unknown>)._positional = extra;\n }\n\n // 7. loadConfig — 在 parseFlags 之后调用,这样 --api-key 等 flag 能传入 config\n let config: Config;\n try {\n config = loadConfig(flags as any);\n } catch (err) {\n // 配置加载失败时给出明确提示\n handleError(err);\n process.exit(1);\n }\n\n // 初始化界面语言\n initLocale((config as any).language);\n\n // 8. ensureAuth — skip for auth/config/update/help commands\n const needsAuth = !NO_AUTH_COMMANDS.some(\n (cmd) => cmd.every((c, i) => commandPath[i] === c),\n );\n if (needsAuth) {\n await ensureAuth(config);\n }\n\n // 9. Execute the command\n await command.execute(config, flags);\n}\n\nif (import.meta.main) {\n main().catch(handleError);\n}\n"
|
|
169
|
+
],
|
|
170
|
+
"mappings": "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,QAAQ,GAAG,GAAG,QAAQ,QAAQ,GAAG,GAAG,QAAQ,QAAQ,GAAG,GAAG,QAAQ,QAAQ,GAAG,GAAG,QAAQ,QAAQ,GAAG,GAAG,QAAQ,QAAQ,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,OAAO,GAAG,GAAG,OAAO,OAAO,GAAG,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM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",
|
|
171
|
+
"debugId": "FEBD86EBE97CED9864756E2164756E21",
|
|
172
|
+
"names": []
|
|
173
|
+
}
|