@onyxsecurity/mcp-gateway 1.0.39 → 1.0.42

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-gateway.js","names":["_a","_b","inspect","_a","mixin","ansiRegex","regex","ansiRegex","stripAnsi","segmenter","defaultIgnorableCodePointRegex","stringWidth","stripAnsi","stringWidth","stripAnsi","code","ansiStyles","readdirSync","key","argv","args","value","val","config","env","defaults","aliases","guessType","require","readFileSync","argv","shim","y18n","y18n","_y18n","shim","getCallerFile","stack","escalade","y18n","cmd","global","argv","result","shim","usage","validation","module","command","argv","c","config","shim","logger","fail","command","ui","usage","maxWidth","_a","_b","_c","usage","command","shim","argv","desc","templates.completionZshTemplate","templates.completionShTemplate","shim","argv","_a","usage","key","distance","config","shim","global","argv","_a","config","type","key","value","_b","_c","k","Usage","Validation","Command","Completion","completion","validation","esmPlatformShim","config","config","command: string","args: string[]","command","resolveCallback: (result: CallbackServerResult) => void","rejectCallback: (error: Error) => void","timeoutRef: { id?: ReturnType<typeof setTimeout> }","resolve","boundPort: number","URL","attemptedPorts: number[]","lastError: Error | undefined","portToTry: number","writeFile","credentials: StoredCredentials","OAUTH_PROVIDERS: OAuthProviderConfig[]","hostname","resourceMetadata: OAuthProtectedResourceMetadata | undefined","authServerUrl: URL","clientInfo: OAuthClientInformationFull","clientMetadata: OAuthClientMetadata","headers: Record<string, string>","tokenData: Record<string, unknown>","codeVerifier: string | undefined","codeChallenge: string | undefined","codeChallengeMethod: string | undefined","resolve","message: JSONRPCMessage | null","yargs","proxyType: ProxyType","finalCommand: string | undefined","finalArgs: string[] | undefined","remoteUrl: string | undefined","remoteTransport: \"sse\" | \"stream\" | undefined","remoteHeaders: Record<string, string>","customEnv: Record<string, string>","accessControlClient: AccessControlClient | undefined","transport: SSEClientTransport | StreamableHTTPClientTransport","headers: Record<string, string>","err: unknown","client: Client | undefined","client","serverVersion","serverCapabilities","server"],"sources":["../../node_modules/eventsource/dist/index.js","../../node_modules/cliui/build/lib/index.js","../../node_modules/cliui/node_modules/ansi-regex/index.js","../../node_modules/cliui/node_modules/strip-ansi/index.js","../../node_modules/get-east-asian-width/lookup.js","../../node_modules/get-east-asian-width/index.js","../../node_modules/cliui/node_modules/emoji-regex/index.js","../../node_modules/cliui/node_modules/string-width/index.js","../../node_modules/cliui/node_modules/ansi-styles/index.js","../../node_modules/cliui/node_modules/wrap-ansi/index.js","../../node_modules/cliui/index.mjs","../../node_modules/escalade/sync/index.mjs","../../node_modules/yargs-parser/build/lib/string-utils.js","../../node_modules/yargs-parser/build/lib/tokenize-arg-string.js","../../node_modules/yargs-parser/build/lib/yargs-parser-types.js","../../node_modules/yargs-parser/build/lib/yargs-parser.js","../../node_modules/yargs-parser/build/lib/index.js","../../node_modules/yargs/build/lib/utils/process-argv.js","../../node_modules/yargs/node_modules/ansi-regex/index.js","../../node_modules/yargs/node_modules/strip-ansi/index.js","../../node_modules/yargs/node_modules/emoji-regex/index.js","../../node_modules/yargs/node_modules/string-width/index.js","../../node_modules/y18n/build/lib/platform-shims/node.js","../../node_modules/y18n/build/lib/index.js","../../node_modules/y18n/index.mjs","../../node_modules/get-caller-file/index.js","../../node_modules/yargs/lib/platform-shims/esm.mjs","../../node_modules/yargs/build/lib/typings/common-types.js","../../node_modules/yargs/build/lib/utils/is-promise.js","../../node_modules/yargs/build/lib/yerror.js","../../node_modules/yargs/build/lib/parse-command.js","../../node_modules/yargs/build/lib/argsert.js","../../node_modules/yargs/build/lib/middleware.js","../../node_modules/yargs/build/lib/utils/maybe-async-result.js","../../node_modules/yargs/build/lib/command.js","../../node_modules/yargs/build/lib/utils/obj-filter.js","../../node_modules/yargs/build/lib/utils/set-blocking.js","../../node_modules/yargs/build/lib/usage.js","../../node_modules/yargs/build/lib/completion-templates.js","../../node_modules/yargs/build/lib/completion.js","../../node_modules/yargs/build/lib/utils/levenshtein.js","../../node_modules/yargs/build/lib/validation.js","../../node_modules/yargs/build/lib/utils/apply-extends.js","../../node_modules/yargs/build/lib/yargs-factory.js","../../node_modules/yargs/index.mjs","../../src/accessControl/authorizer.ts","../../src/accessControl/client.ts","../../src/auth/browser.ts","../../src/auth/callbackServer.ts","../../src/auth/OAuthCredentialStore.ts","../../src/auth/providers.ts","../../src/auth/oauthFlow.ts","../../src/JSONFilterTransform.ts","../../src/StdioClientTransport.ts","../../src/bin/mcp-gateway.ts"],"sourcesContent":["import { createParser } from \"eventsource-parser\";\nclass ErrorEvent extends Event {\n /**\n * Constructs a new `ErrorEvent` instance. This is typically not called directly,\n * but rather emitted by the `EventSource` object when an error occurs.\n *\n * @param type - The type of the event (should be \"error\")\n * @param errorEventInitDict - Optional properties to include in the error event\n */\n constructor(type, errorEventInitDict) {\n var _a, _b;\n super(type), this.code = (_a = errorEventInitDict == null ? void 0 : errorEventInitDict.code) != null ? _a : void 0, this.message = (_b = errorEventInitDict == null ? void 0 : errorEventInitDict.message) != null ? _b : void 0;\n }\n /**\n * Node.js \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Node.js when you `console.log` an instance of this class.\n *\n * @param _depth - The current depth\n * @param options - The options passed to `util.inspect`\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @returns A string representation of the error\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")](_depth, options, inspect) {\n return inspect(inspectableError(this), options);\n }\n /**\n * Deno \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Deno when you `console.log` an instance of this class.\n *\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @param options - The options passed to `Deno.inspect`\n * @returns A string representation of the error\n */\n [Symbol.for(\"Deno.customInspect\")](inspect, options) {\n return inspect(inspectableError(this), options);\n }\n}\nfunction syntaxError(message) {\n const DomException = globalThis.DOMException;\n return typeof DomException == \"function\" ? new DomException(message, \"SyntaxError\") : new SyntaxError(message);\n}\nfunction flattenError(err) {\n return err instanceof Error ? \"errors\" in err && Array.isArray(err.errors) ? err.errors.map(flattenError).join(\", \") : \"cause\" in err && err.cause instanceof Error ? `${err}: ${flattenError(err.cause)}` : err.message : `${err}`;\n}\nfunction inspectableError(err) {\n return {\n type: err.type,\n message: err.message,\n code: err.code,\n defaultPrevented: err.defaultPrevented,\n cancelable: err.cancelable,\n timeStamp: err.timeStamp\n };\n}\nvar __typeError = (msg) => {\n throw TypeError(msg);\n}, __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg), __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj)), __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value), __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), member.set(obj, value), value), __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method), _readyState, _url, _redirectUrl, _withCredentials, _fetch, _reconnectInterval, _reconnectTimer, _lastEventId, _controller, _parser, _onError, _onMessage, _onOpen, _EventSource_instances, connect_fn, _onFetchResponse, _onFetchError, getRequestOptions_fn, _onEvent, _onRetryChange, failConnection_fn, scheduleReconnect_fn, _reconnect;\nclass EventSource extends EventTarget {\n constructor(url, eventSourceInitDict) {\n var _a, _b;\n super(), __privateAdd(this, _EventSource_instances), this.CONNECTING = 0, this.OPEN = 1, this.CLOSED = 2, __privateAdd(this, _readyState), __privateAdd(this, _url), __privateAdd(this, _redirectUrl), __privateAdd(this, _withCredentials), __privateAdd(this, _fetch), __privateAdd(this, _reconnectInterval), __privateAdd(this, _reconnectTimer), __privateAdd(this, _lastEventId, null), __privateAdd(this, _controller), __privateAdd(this, _parser), __privateAdd(this, _onError, null), __privateAdd(this, _onMessage, null), __privateAdd(this, _onOpen, null), __privateAdd(this, _onFetchResponse, async (response) => {\n var _a2;\n __privateGet(this, _parser).reset();\n const { body, redirected, status, headers } = response;\n if (status === 204) {\n __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, \"Server sent HTTP 204, not reconnecting\", 204), this.close();\n return;\n }\n if (redirected ? __privateSet(this, _redirectUrl, new URL(response.url)) : __privateSet(this, _redirectUrl, void 0), status !== 200) {\n __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, `Non-200 status code (${status})`, status);\n return;\n }\n if (!(headers.get(\"content-type\") || \"\").startsWith(\"text/event-stream\")) {\n __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, 'Invalid content type, expected \"text/event-stream\"', status);\n return;\n }\n if (__privateGet(this, _readyState) === this.CLOSED)\n return;\n __privateSet(this, _readyState, this.OPEN);\n const openEvent = new Event(\"open\");\n if ((_a2 = __privateGet(this, _onOpen)) == null || _a2.call(this, openEvent), this.dispatchEvent(openEvent), typeof body != \"object\" || !body || !(\"getReader\" in body)) {\n __privateMethod(this, _EventSource_instances, failConnection_fn).call(this, \"Invalid response body, expected a web ReadableStream\", status), this.close();\n return;\n }\n const decoder = new TextDecoder(), reader = body.getReader();\n let open = !0;\n do {\n const { done, value } = await reader.read();\n value && __privateGet(this, _parser).feed(decoder.decode(value, { stream: !done })), done && (open = !1, __privateGet(this, _parser).reset(), __privateMethod(this, _EventSource_instances, scheduleReconnect_fn).call(this));\n } while (open);\n }), __privateAdd(this, _onFetchError, (err) => {\n __privateSet(this, _controller, void 0), !(err.name === \"AbortError\" || err.type === \"aborted\") && __privateMethod(this, _EventSource_instances, scheduleReconnect_fn).call(this, flattenError(err));\n }), __privateAdd(this, _onEvent, (event) => {\n typeof event.id == \"string\" && __privateSet(this, _lastEventId, event.id);\n const messageEvent = new MessageEvent(event.event || \"message\", {\n data: event.data,\n origin: __privateGet(this, _redirectUrl) ? __privateGet(this, _redirectUrl).origin : __privateGet(this, _url).origin,\n lastEventId: event.id || \"\"\n });\n __privateGet(this, _onMessage) && (!event.event || event.event === \"message\") && __privateGet(this, _onMessage).call(this, messageEvent), this.dispatchEvent(messageEvent);\n }), __privateAdd(this, _onRetryChange, (value) => {\n __privateSet(this, _reconnectInterval, value);\n }), __privateAdd(this, _reconnect, () => {\n __privateSet(this, _reconnectTimer, void 0), __privateGet(this, _readyState) === this.CONNECTING && __privateMethod(this, _EventSource_instances, connect_fn).call(this);\n });\n try {\n if (url instanceof URL)\n __privateSet(this, _url, url);\n else if (typeof url == \"string\")\n __privateSet(this, _url, new URL(url, getBaseURL()));\n else\n throw new Error(\"Invalid URL\");\n } catch {\n throw syntaxError(\"An invalid or illegal string was specified\");\n }\n __privateSet(this, _parser, createParser({\n onEvent: __privateGet(this, _onEvent),\n onRetry: __privateGet(this, _onRetryChange)\n })), __privateSet(this, _readyState, this.CONNECTING), __privateSet(this, _reconnectInterval, 3e3), __privateSet(this, _fetch, (_a = eventSourceInitDict == null ? void 0 : eventSourceInitDict.fetch) != null ? _a : globalThis.fetch), __privateSet(this, _withCredentials, (_b = eventSourceInitDict == null ? void 0 : eventSourceInitDict.withCredentials) != null ? _b : !1), __privateMethod(this, _EventSource_instances, connect_fn).call(this);\n }\n /**\n * Returns the state of this EventSource object's connection. It can have the values described below.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState)\n *\n * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface,\n * defined in the TypeScript `dom` library.\n *\n * @public\n */\n get readyState() {\n return __privateGet(this, _readyState);\n }\n /**\n * Returns the URL providing the event stream.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url)\n *\n * @public\n */\n get url() {\n return __privateGet(this, _url).href;\n }\n /**\n * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials)\n */\n get withCredentials() {\n return __privateGet(this, _withCredentials);\n }\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */\n get onerror() {\n return __privateGet(this, _onError);\n }\n set onerror(value) {\n __privateSet(this, _onError, value);\n }\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */\n get onmessage() {\n return __privateGet(this, _onMessage);\n }\n set onmessage(value) {\n __privateSet(this, _onMessage, value);\n }\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */\n get onopen() {\n return __privateGet(this, _onOpen);\n }\n set onopen(value) {\n __privateSet(this, _onOpen, value);\n }\n addEventListener(type, listener, options) {\n const listen = listener;\n super.addEventListener(type, listen, options);\n }\n removeEventListener(type, listener, options) {\n const listen = listener;\n super.removeEventListener(type, listen, options);\n }\n /**\n * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close)\n *\n * @public\n */\n close() {\n __privateGet(this, _reconnectTimer) && clearTimeout(__privateGet(this, _reconnectTimer)), __privateGet(this, _readyState) !== this.CLOSED && (__privateGet(this, _controller) && __privateGet(this, _controller).abort(), __privateSet(this, _readyState, this.CLOSED), __privateSet(this, _controller, void 0));\n }\n}\n_readyState = /* @__PURE__ */ new WeakMap(), _url = /* @__PURE__ */ new WeakMap(), _redirectUrl = /* @__PURE__ */ new WeakMap(), _withCredentials = /* @__PURE__ */ new WeakMap(), _fetch = /* @__PURE__ */ new WeakMap(), _reconnectInterval = /* @__PURE__ */ new WeakMap(), _reconnectTimer = /* @__PURE__ */ new WeakMap(), _lastEventId = /* @__PURE__ */ new WeakMap(), _controller = /* @__PURE__ */ new WeakMap(), _parser = /* @__PURE__ */ new WeakMap(), _onError = /* @__PURE__ */ new WeakMap(), _onMessage = /* @__PURE__ */ new WeakMap(), _onOpen = /* @__PURE__ */ new WeakMap(), _EventSource_instances = /* @__PURE__ */ new WeakSet(), /**\n* Connect to the given URL and start receiving events\n*\n* @internal\n*/\nconnect_fn = function() {\n __privateSet(this, _readyState, this.CONNECTING), __privateSet(this, _controller, new AbortController()), __privateGet(this, _fetch)(__privateGet(this, _url), __privateMethod(this, _EventSource_instances, getRequestOptions_fn).call(this)).then(__privateGet(this, _onFetchResponse)).catch(__privateGet(this, _onFetchError));\n}, _onFetchResponse = /* @__PURE__ */ new WeakMap(), _onFetchError = /* @__PURE__ */ new WeakMap(), /**\n* Get request options for the `fetch()` request\n*\n* @returns The request options\n* @internal\n*/\ngetRequestOptions_fn = function() {\n var _a;\n const init = {\n // [spec] Let `corsAttributeState` be `Anonymous`…\n // [spec] …will have their mode set to \"cors\"…\n mode: \"cors\",\n redirect: \"follow\",\n headers: { Accept: \"text/event-stream\", ...__privateGet(this, _lastEventId) ? { \"Last-Event-ID\": __privateGet(this, _lastEventId) } : void 0 },\n cache: \"no-store\",\n signal: (_a = __privateGet(this, _controller)) == null ? void 0 : _a.signal\n };\n return \"window\" in globalThis && (init.credentials = this.withCredentials ? \"include\" : \"same-origin\"), init;\n}, _onEvent = /* @__PURE__ */ new WeakMap(), _onRetryChange = /* @__PURE__ */ new WeakMap(), /**\n* Handles the process referred to in the EventSource specification as \"failing a connection\".\n*\n* @param error - The error causing the connection to fail\n* @param code - The HTTP status code, if available\n* @internal\n*/\nfailConnection_fn = function(message, code) {\n var _a;\n __privateGet(this, _readyState) !== this.CLOSED && __privateSet(this, _readyState, this.CLOSED);\n const errorEvent = new ErrorEvent(\"error\", { code, message });\n (_a = __privateGet(this, _onError)) == null || _a.call(this, errorEvent), this.dispatchEvent(errorEvent);\n}, /**\n* Schedules a reconnection attempt against the EventSource endpoint.\n*\n* @param message - The error causing the connection to fail\n* @param code - The HTTP status code, if available\n* @internal\n*/\nscheduleReconnect_fn = function(message, code) {\n var _a;\n if (__privateGet(this, _readyState) === this.CLOSED)\n return;\n __privateSet(this, _readyState, this.CONNECTING);\n const errorEvent = new ErrorEvent(\"error\", { code, message });\n (_a = __privateGet(this, _onError)) == null || _a.call(this, errorEvent), this.dispatchEvent(errorEvent), __privateSet(this, _reconnectTimer, setTimeout(__privateGet(this, _reconnect), __privateGet(this, _reconnectInterval)));\n}, _reconnect = /* @__PURE__ */ new WeakMap(), /**\n* ReadyState representing an EventSource currently trying to connect\n*\n* @public\n*/\nEventSource.CONNECTING = 0, /**\n* ReadyState representing an EventSource connection that is open (eg connected)\n*\n* @public\n*/\nEventSource.OPEN = 1, /**\n* ReadyState representing an EventSource connection that is closed (eg disconnected)\n*\n* @public\n*/\nEventSource.CLOSED = 2;\nfunction getBaseURL() {\n const doc = \"document\" in globalThis ? globalThis.document : void 0;\n return doc && typeof doc == \"object\" && \"baseURI\" in doc && typeof doc.baseURI == \"string\" ? doc.baseURI : void 0;\n}\nexport {\n ErrorEvent,\n EventSource\n};\n//# sourceMappingURL=index.js.map\n","'use strict';\nconst align = {\n right: alignRight,\n center: alignCenter\n};\nconst top = 0;\nconst right = 1;\nconst bottom = 2;\nconst left = 3;\nexport class UI {\n constructor(opts) {\n var _a;\n this.width = opts.width;\n this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true;\n this.rows = [];\n }\n span(...args) {\n const cols = this.div(...args);\n cols.span = true;\n }\n resetOutput() {\n this.rows = [];\n }\n div(...args) {\n if (args.length === 0) {\n this.div('');\n }\n if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') {\n return this.applyLayoutDSL(args[0]);\n }\n const cols = args.map(arg => {\n if (typeof arg === 'string') {\n return this.colFromString(arg);\n }\n return arg;\n });\n this.rows.push(cols);\n return cols;\n }\n shouldApplyLayoutDSL(...args) {\n return args.length === 1 && typeof args[0] === 'string' &&\n /[\\t\\n]/.test(args[0]);\n }\n applyLayoutDSL(str) {\n const rows = str.split('\\n').map(row => row.split('\\t'));\n let leftColumnWidth = 0;\n // simple heuristic for layout, make sure the\n // second column lines up along the left-hand.\n // don't allow the first column to take up more\n // than 50% of the screen.\n rows.forEach(columns => {\n if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) {\n leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0]));\n }\n });\n // generate a table:\n // replacing ' ' with padding calculations.\n // using the algorithmically generated width.\n rows.forEach(columns => {\n this.div(...columns.map((r, i) => {\n return {\n text: r.trim(),\n padding: this.measurePadding(r),\n width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined\n };\n }));\n });\n return this.rows[this.rows.length - 1];\n }\n colFromString(text) {\n return {\n text,\n padding: this.measurePadding(text)\n };\n }\n measurePadding(str) {\n // measure padding without ansi escape codes\n const noAnsi = mixin.stripAnsi(str);\n return [0, noAnsi.match(/\\s*$/)[0].length, 0, noAnsi.match(/^\\s*/)[0].length];\n }\n toString() {\n const lines = [];\n this.rows.forEach(row => {\n this.rowToString(row, lines);\n });\n // don't display any lines with the\n // hidden flag set.\n return lines\n .filter(line => !line.hidden)\n .map(line => line.text)\n .join('\\n');\n }\n rowToString(row, lines) {\n this.rasterize(row).forEach((rrow, r) => {\n let str = '';\n rrow.forEach((col, c) => {\n const { width } = row[c]; // the width with padding.\n const wrapWidth = this.negatePadding(row[c]); // the width without padding.\n let ts = col; // temporary string used during alignment/padding.\n if (wrapWidth > mixin.stringWidth(col)) {\n ts += ' '.repeat(wrapWidth - mixin.stringWidth(col));\n }\n // align the string within its column.\n if (row[c].align && row[c].align !== 'left' && this.wrap) {\n const fn = align[row[c].align];\n ts = fn(ts, wrapWidth);\n if (mixin.stringWidth(ts) < wrapWidth) {\n ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1);\n }\n }\n // apply border and padding to string.\n const padding = row[c].padding || [0, 0, 0, 0];\n if (padding[left]) {\n str += ' '.repeat(padding[left]);\n }\n str += addBorder(row[c], ts, '| ');\n str += ts;\n str += addBorder(row[c], ts, ' |');\n if (padding[right]) {\n str += ' '.repeat(padding[right]);\n }\n // if prior row is span, try to render the\n // current row on the prior line.\n if (r === 0 && lines.length > 0) {\n str = this.renderInline(str, lines[lines.length - 1]);\n }\n });\n // remove trailing whitespace.\n lines.push({\n text: str.replace(/ +$/, ''),\n span: row.span\n });\n });\n return lines;\n }\n // if the full 'source' can render in\n // the target line, do so.\n renderInline(source, previousLine) {\n const match = source.match(/^ */);\n const leadingWhitespace = match ? match[0].length : 0;\n const target = previousLine.text;\n const targetTextWidth = mixin.stringWidth(target.trimRight());\n if (!previousLine.span) {\n return source;\n }\n // if we're not applying wrapping logic,\n // just always append to the span.\n if (!this.wrap) {\n previousLine.hidden = true;\n return target + source;\n }\n if (leadingWhitespace < targetTextWidth) {\n return source;\n }\n previousLine.hidden = true;\n return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft();\n }\n rasterize(row) {\n const rrows = [];\n const widths = this.columnWidths(row);\n let wrapped;\n // word wrap all columns, and create\n // a data-structure that is easy to rasterize.\n row.forEach((col, c) => {\n // leave room for left and right padding.\n col.width = widths[c];\n if (this.wrap) {\n wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\\n');\n }\n else {\n wrapped = col.text.split('\\n');\n }\n if (col.border) {\n wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.');\n wrapped.push(\"'\" + '-'.repeat(this.negatePadding(col) + 2) + \"'\");\n }\n // add top and bottom padding.\n if (col.padding) {\n wrapped.unshift(...new Array(col.padding[top] || 0).fill(''));\n wrapped.push(...new Array(col.padding[bottom] || 0).fill(''));\n }\n wrapped.forEach((str, r) => {\n if (!rrows[r]) {\n rrows.push([]);\n }\n const rrow = rrows[r];\n for (let i = 0; i < c; i++) {\n if (rrow[i] === undefined) {\n rrow.push('');\n }\n }\n rrow.push(str);\n });\n });\n return rrows;\n }\n negatePadding(col) {\n let wrapWidth = col.width || 0;\n if (col.padding) {\n wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0);\n }\n if (col.border) {\n wrapWidth -= 4;\n }\n return wrapWidth;\n }\n columnWidths(row) {\n if (!this.wrap) {\n return row.map(col => {\n return col.width || mixin.stringWidth(col.text);\n });\n }\n let unset = row.length;\n let remainingWidth = this.width;\n // column widths can be set in config.\n const widths = row.map(col => {\n if (col.width) {\n unset--;\n remainingWidth -= col.width;\n return col.width;\n }\n return undefined;\n });\n // any unset widths should be calculated.\n const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0;\n return widths.map((w, i) => {\n if (w === undefined) {\n return Math.max(unsetWidth, _minWidth(row[i]));\n }\n return w;\n });\n }\n}\nfunction addBorder(col, ts, style) {\n if (col.border) {\n if (/[.']-+[.']/.test(ts)) {\n return '';\n }\n if (ts.trim().length !== 0) {\n return style;\n }\n return ' ';\n }\n return '';\n}\n// calculates the minimum width of\n// a column, based on padding preferences.\nfunction _minWidth(col) {\n const padding = col.padding || [];\n const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0);\n if (col.border) {\n return minWidth + 4;\n }\n return minWidth;\n}\nfunction getWindowWidth() {\n /* c8 ignore next 5: depends on terminal */\n if (typeof process === 'object' && process.stdout && process.stdout.columns) {\n return process.stdout.columns;\n }\n return 80;\n}\nfunction alignRight(str, width) {\n str = str.trim();\n const strWidth = mixin.stringWidth(str);\n if (strWidth < width) {\n return ' '.repeat(width - strWidth) + str;\n }\n return str;\n}\nfunction alignCenter(str, width) {\n str = str.trim();\n const strWidth = mixin.stringWidth(str);\n /* c8 ignore next 3 */\n if (strWidth >= width) {\n return str;\n }\n return ' '.repeat((width - strWidth) >> 1) + str;\n}\nlet mixin;\nexport function cliui(opts, _mixin) {\n mixin = _mixin;\n return new UI({\n width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(),\n wrap: opts === null || opts === void 0 ? void 0 : opts.wrap\n });\n}\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x >= 0x16FF0 && x <= 0x16FF6\n\t\t|| x >= 0x17000 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D1E\n\t\t|| x >= 0x18D80 && x <= 0x18DF2\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D8\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA8A\n\t\t|| x >= 0x1FA8E && x <= 0x1FAC6\n\t\t|| x === 0x1FAC8\n\t\t|| x >= 0x1FACD && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAEA\n\t\t|| x >= 0x1FAEF && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","module.exports = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\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?|[\\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](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\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-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","// Bootstrap cliui with CommonJS dependencies:\nimport { cliui } from './build/lib/index.js'\nimport stringWidth from 'string-width'\nimport stripAnsi from 'strip-ansi'\nimport wrapAnsi from 'wrap-ansi'\n\nexport default function ui (opts) {\n return cliui(opts, {\n stringWidth,\n stripAnsi,\n wrap: wrapAnsi\n })\n}\n\nexport {ui as 'module.exports'};\n","import { dirname, resolve } from 'path';\nimport { readdirSync, statSync } from 'fs';\n\nexport default function (start, callback) {\n\tlet dir = resolve('.', start);\n\tlet tmp, stats = statSync(dir);\n\n\tif (!stats.isDirectory()) {\n\t\tdir = dirname(dir);\n\t}\n\n\twhile (true) {\n\t\ttmp = callback(dir, readdirSync(dir));\n\t\tif (tmp) return resolve(dir, tmp);\n\t\tdir = dirname(tmp = dir);\n\t\tif (tmp === dir) break;\n\t}\n}\n","/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nexport function camelCase(str) {\n // Handle the case where an argument is provided as camel case, e.g., fooBar.\n // by ensuring that the string isn't already mixed case:\n const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase();\n if (!isCamelCase) {\n str = str.toLowerCase();\n }\n if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {\n return str;\n }\n else {\n let camelcase = '';\n let nextChrUpper = false;\n const leadingHyphens = str.match(/^-+/);\n for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {\n let chr = str.charAt(i);\n if (nextChrUpper) {\n nextChrUpper = false;\n chr = chr.toUpperCase();\n }\n if (i !== 0 && (chr === '-' || chr === '_')) {\n nextChrUpper = true;\n }\n else if (chr !== '-' && chr !== '_') {\n camelcase += chr;\n }\n }\n return camelcase;\n }\n}\nexport function decamelize(str, joinString) {\n const lowercase = str.toLowerCase();\n joinString = joinString || '-';\n let notCamelcase = '';\n for (let i = 0; i < str.length; i++) {\n const chrLower = lowercase.charAt(i);\n const chrString = str.charAt(i);\n if (chrLower !== chrString && i > 0) {\n notCamelcase += `${joinString}${lowercase.charAt(i)}`;\n }\n else {\n notCamelcase += chrString;\n }\n }\n return notCamelcase;\n}\nexport function looksLikeNumber(x) {\n if (x === null || x === undefined)\n return false;\n // if loaded from config, may already be a number.\n if (typeof x === 'number')\n return true;\n // hexadecimal.\n if (/^0x[0-9a-f]+$/i.test(x))\n return true;\n // don't treat 0123 as a number; as it drops the leading '0'.\n if (/^0[^.]/.test(x))\n return false;\n return /^[-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n","/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\n// take an un-split argv string and tokenize it.\nexport function tokenizeArgString(argString) {\n if (Array.isArray(argString)) {\n return argString.map(e => typeof e !== 'string' ? e + '' : e);\n }\n argString = argString.trim();\n let i = 0;\n let prevC = null;\n let c = null;\n let opening = null;\n const args = [];\n for (let ii = 0; ii < argString.length; ii++) {\n prevC = c;\n c = argString.charAt(ii);\n // split on spaces unless we're in quotes.\n if (c === ' ' && !opening) {\n if (!(prevC === ' ')) {\n i++;\n }\n continue;\n }\n // don't split the string if we're in matching\n // opening or closing single and double quotes.\n if (c === opening) {\n opening = null;\n }\n else if ((c === \"'\" || c === '\"') && !opening) {\n opening = c;\n }\n if (!args[i])\n args[i] = '';\n args[i] += c;\n }\n return args;\n}\n","/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nexport var DefaultValuesForTypeKey;\n(function (DefaultValuesForTypeKey) {\n DefaultValuesForTypeKey[\"BOOLEAN\"] = \"boolean\";\n DefaultValuesForTypeKey[\"STRING\"] = \"string\";\n DefaultValuesForTypeKey[\"NUMBER\"] = \"number\";\n DefaultValuesForTypeKey[\"ARRAY\"] = \"array\";\n})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {}));\n","/**\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\n/* eslint-disable prefer-arrow-callback */\nimport { tokenizeArgString } from './tokenize-arg-string.js';\nimport { DefaultValuesForTypeKey } from './yargs-parser-types.js';\nimport { camelCase, decamelize, looksLikeNumber } from './string-utils.js';\nlet mixin;\nexport class YargsParser {\n constructor(_mixin) {\n mixin = _mixin;\n }\n parse(argsInput, options) {\n const opts = Object.assign({\n alias: undefined,\n array: undefined,\n boolean: undefined,\n config: undefined,\n configObjects: undefined,\n configuration: undefined,\n coerce: undefined,\n count: undefined,\n default: undefined,\n envPrefix: undefined,\n narg: undefined,\n normalize: undefined,\n string: undefined,\n number: undefined,\n __: undefined,\n key: undefined\n }, options);\n // allow a string argument to be passed in rather\n // than an argv array.\n const args = tokenizeArgString(argsInput);\n // tokenizeArgString adds extra quotes to args if argsInput is a string\n // only strip those extra quotes in processValue if argsInput is a string\n const inputIsString = typeof argsInput === 'string';\n // aliases might have transitive relationships, normalize this.\n const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));\n const configuration = Object.assign({\n 'boolean-negation': true,\n 'camel-case-expansion': true,\n 'combine-arrays': false,\n 'dot-notation': true,\n 'duplicate-arguments-array': true,\n 'flatten-duplicate-arrays': true,\n 'greedy-arrays': true,\n 'halt-at-non-option': false,\n 'nargs-eats-options': false,\n 'negation-prefix': 'no-',\n 'parse-numbers': true,\n 'parse-positional-numbers': true,\n 'populate--': false,\n 'set-placeholder-key': false,\n 'short-option-groups': true,\n 'strip-aliased': false,\n 'strip-dashed': false,\n 'unknown-options-as-args': false\n }, opts.configuration);\n const defaults = Object.assign(Object.create(null), opts.default);\n const configObjects = opts.configObjects || [];\n const envPrefix = opts.envPrefix;\n const notFlagsOption = configuration['populate--'];\n const notFlagsArgv = notFlagsOption ? '--' : '_';\n const newAliases = Object.create(null);\n const defaulted = Object.create(null);\n // allow a i18n handler to be passed in, default to a fake one (util.format).\n const __ = opts.__ || mixin.format;\n const flags = {\n aliases: Object.create(null),\n arrays: Object.create(null),\n bools: Object.create(null),\n strings: Object.create(null),\n numbers: Object.create(null),\n counts: Object.create(null),\n normalize: Object.create(null),\n configs: Object.create(null),\n nargs: Object.create(null),\n coercions: Object.create(null),\n keys: []\n };\n const negative = /^-([0-9]+(\\.[0-9]+)?|\\.[0-9]+)$/;\n const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)');\n [].concat(opts.array || []).filter(Boolean).forEach(function (opt) {\n const key = typeof opt === 'object' ? opt.key : opt;\n // assign to flags[bools|strings|numbers]\n const assignment = Object.keys(opt).map(function (key) {\n const arrayFlagKeys = {\n boolean: 'bools',\n string: 'strings',\n number: 'numbers'\n };\n return arrayFlagKeys[key];\n }).filter(Boolean).pop();\n // assign key to be coerced\n if (assignment) {\n flags[assignment][key] = true;\n }\n flags.arrays[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {\n flags.bools[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.string || []).filter(Boolean).forEach(function (key) {\n flags.strings[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.number || []).filter(Boolean).forEach(function (key) {\n flags.numbers[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.count || []).filter(Boolean).forEach(function (key) {\n flags.counts[key] = true;\n flags.keys.push(key);\n });\n [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) {\n flags.normalize[key] = true;\n flags.keys.push(key);\n });\n if (typeof opts.narg === 'object') {\n Object.entries(opts.narg).forEach(([key, value]) => {\n if (typeof value === 'number') {\n flags.nargs[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.coerce === 'object') {\n Object.entries(opts.coerce).forEach(([key, value]) => {\n if (typeof value === 'function') {\n flags.coercions[key] = value;\n flags.keys.push(key);\n }\n });\n }\n if (typeof opts.config !== 'undefined') {\n if (Array.isArray(opts.config) || typeof opts.config === 'string') {\n ;\n [].concat(opts.config).filter(Boolean).forEach(function (key) {\n flags.configs[key] = true;\n });\n }\n else if (typeof opts.config === 'object') {\n Object.entries(opts.config).forEach(([key, value]) => {\n if (typeof value === 'boolean' || typeof value === 'function') {\n flags.configs[key] = value;\n }\n });\n }\n }\n // create a lookup table that takes into account all\n // combinations of aliases: {f: ['foo'], foo: ['f']}\n extendAliases(opts.key, aliases, opts.default, flags.arrays);\n // apply default values to all aliases.\n Object.keys(defaults).forEach(function (key) {\n (flags.aliases[key] || []).forEach(function (alias) {\n defaults[alias] = defaults[key];\n });\n });\n let error = null;\n checkConfiguration();\n let notFlags = [];\n const argv = Object.assign(Object.create(null), { _: [] });\n // TODO(bcoe): for the first pass at removing object prototype we didn't\n // remove all prototypes from objects returned by this API, we might want\n // to gradually move towards doing so.\n const argvReturn = {};\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const truncatedArg = arg.replace(/^-{3,}/, '---');\n let broken;\n let key;\n let letters;\n let m;\n let next;\n let value;\n // any unknown option (except for end-of-options, \"--\")\n if (arg !== '--' && /^-/.test(arg) && isUnknownOptionAsArg(arg)) {\n pushPositional(arg);\n // ---, ---=, ----, etc,\n }\n else if (truncatedArg.match(/^---+(=|$)/)) {\n // options without key name are invalid.\n pushPositional(arg);\n continue;\n // -- separated by =\n }\n else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) {\n // Using [\\s\\S] instead of . because js doesn't support the\n // 'dotall' regex modifier. See:\n // http://stackoverflow.com/a/1068308/13216\n m = arg.match(/^--?([^=]+)=([\\s\\S]*)$/);\n // arrays format = '--f=a b c'\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n if (checkAllAliases(m[1], flags.arrays)) {\n i = eatArray(i, m[1], args, m[2]);\n }\n else if (checkAllAliases(m[1], flags.nargs) !== false) {\n // nargs format = '--f=monkey washing cat'\n i = eatNargs(i, m[1], args, m[2]);\n }\n else {\n setArg(m[1], m[2], true);\n }\n }\n }\n else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {\n m = arg.match(negatedBoolean);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);\n }\n // -- separated by space.\n }\n else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) {\n m = arg.match(/^--?(.+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (checkAllAliases(key, flags.arrays)) {\n // array format = '--foo a b c'\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n // nargs format = '--foo a b c'\n // should be truthy even if: flags.nargs[key] === 0\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!next.match(/^-/) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n // dot-notation flag separated by '='.\n }\n else if (arg.match(/^-.\\..+=/)) {\n m = arg.match(/^-([^=]+)=([\\s\\S]*)$/);\n if (m !== null && Array.isArray(m) && m.length >= 3) {\n setArg(m[1], m[2]);\n }\n // dot-notation flag separated by space.\n }\n else if (arg.match(/^-.\\..+/) && !arg.match(negative)) {\n next = args[i + 1];\n m = arg.match(/^-(.\\..+)/);\n if (m !== null && Array.isArray(m) && m.length >= 2) {\n key = m[1];\n if (next !== undefined && !next.match(/^-/) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {\n letters = arg.slice(1, -1).split('');\n broken = false;\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (letters[j + 1] && letters[j + 1] === '=') {\n value = arg.slice(j + 3);\n key = letters[j];\n if (checkAllAliases(key, flags.arrays)) {\n // array format = '-f=a b c'\n i = eatArray(i, key, args, value);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n // nargs format = '-f=monkey washing cat'\n i = eatNargs(i, key, args, value);\n }\n else {\n setArg(key, value);\n }\n broken = true;\n break;\n }\n if (next === '-') {\n setArg(letters[j], next);\n continue;\n }\n // current letter is an alphabetic character and next value is a number\n if (/[A-Za-z]/.test(letters[j]) &&\n /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next) &&\n checkAllAliases(next, flags.bools) === false) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n if (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n setArg(letters[j], next);\n broken = true;\n break;\n }\n else {\n setArg(letters[j], defaultValue(letters[j]));\n }\n }\n key = arg.slice(-1)[0];\n if (!broken && key !== '-') {\n if (checkAllAliases(key, flags.arrays)) {\n // array format = '-f a b c'\n i = eatArray(i, key, args);\n }\n else if (checkAllAliases(key, flags.nargs) !== false) {\n // nargs format = '-f a b c'\n // should be truthy even if: flags.nargs[key] === 0\n i = eatNargs(i, key, args);\n }\n else {\n next = args[i + 1];\n if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||\n next.match(negative)) &&\n !checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts)) {\n setArg(key, next);\n i++;\n }\n else if (/^(true|false)$/.test(next)) {\n setArg(key, next);\n i++;\n }\n else {\n setArg(key, defaultValue(key));\n }\n }\n }\n }\n else if (arg.match(/^-[0-9]$/) &&\n arg.match(negative) &&\n checkAllAliases(arg.slice(1), flags.bools)) {\n // single-digit boolean alias, e.g: xargs -0\n key = arg.slice(1);\n setArg(key, defaultValue(key));\n }\n else if (arg === '--') {\n notFlags = args.slice(i + 1);\n break;\n }\n else if (configuration['halt-at-non-option']) {\n notFlags = args.slice(i);\n break;\n }\n else {\n pushPositional(arg);\n }\n }\n // order of precedence:\n // 1. command line arg\n // 2. value from env var\n // 3. value from config file\n // 4. value from config objects\n // 5. configured default value\n applyEnvVars(argv, true); // special case: check env vars that point to config file\n applyEnvVars(argv, false);\n setConfig(argv);\n setConfigObjects();\n applyDefaultsAndAliases(argv, flags.aliases, defaults, true);\n applyCoercions(argv);\n if (configuration['set-placeholder-key'])\n setPlaceholderKeys(argv);\n // for any counts either not in args or without an explicit default, set to 0\n Object.keys(flags.counts).forEach(function (key) {\n if (!hasKey(argv, key.split('.')))\n setArg(key, 0);\n });\n // '--' defaults to undefined.\n if (notFlagsOption && notFlags.length)\n argv[notFlagsArgv] = [];\n notFlags.forEach(function (key) {\n argv[notFlagsArgv].push(key);\n });\n if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {\n Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {\n delete argv[key];\n });\n }\n if (configuration['strip-aliased']) {\n ;\n [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {\n if (configuration['camel-case-expansion'] && alias.includes('-')) {\n delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')];\n }\n delete argv[alias];\n });\n }\n // Push argument into positional array, applying numeric coercion:\n function pushPositional(arg) {\n const maybeCoercedNumber = maybeCoerceNumber('_', arg);\n if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') {\n argv._.push(maybeCoercedNumber);\n }\n }\n // how many arguments should we consume, based\n // on the nargs option?\n function eatNargs(i, key, args, argAfterEqualSign) {\n let ii;\n let toEat = checkAllAliases(key, flags.nargs);\n // NaN has a special meaning for the array type, indicating that one or\n // more values are expected.\n toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat;\n if (toEat === 0) {\n if (!isUndefined(argAfterEqualSign)) {\n error = Error(__('Argument unexpected for: %s', key));\n }\n setArg(key, defaultValue(key));\n return i;\n }\n let available = isUndefined(argAfterEqualSign) ? 0 : 1;\n if (configuration['nargs-eats-options']) {\n // classic behavior, yargs eats positional and dash arguments.\n if (args.length - (i + 1) + available < toEat) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n available = toEat;\n }\n else {\n // nargs will not consume flag arguments, e.g., -abc, --foo,\n // and terminates when one is observed.\n for (ii = i + 1; ii < args.length; ii++) {\n if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii]))\n available++;\n else\n break;\n }\n if (available < toEat)\n error = Error(__('Not enough arguments following: %s', key));\n }\n let consumed = Math.min(available, toEat);\n if (!isUndefined(argAfterEqualSign) && consumed > 0) {\n setArg(key, argAfterEqualSign);\n consumed--;\n }\n for (ii = i + 1; ii < (consumed + i + 1); ii++) {\n setArg(key, args[ii]);\n }\n return (i + consumed);\n }\n // if an option is an array, eat all non-hyphenated arguments\n // following it... YUM!\n // e.g., --foo apple banana cat becomes [\"apple\", \"banana\", \"cat\"]\n function eatArray(i, key, args, argAfterEqualSign) {\n let argsToSet = [];\n let next = argAfterEqualSign || args[i + 1];\n // If both array and nargs are configured, enforce the nargs count:\n const nargsCount = checkAllAliases(key, flags.nargs);\n if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {\n argsToSet.push(true);\n }\n else if (isUndefined(next) ||\n (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {\n // for keys without value ==> argsToSet remains an empty []\n // set user default value, if available\n if (defaults[key] !== undefined) {\n const defVal = defaults[key];\n argsToSet = Array.isArray(defVal) ? defVal : [defVal];\n }\n }\n else {\n // value in --option=value is eaten as is\n if (!isUndefined(argAfterEqualSign)) {\n argsToSet.push(processValue(key, argAfterEqualSign, true));\n }\n for (let ii = i + 1; ii < args.length; ii++) {\n if ((!configuration['greedy-arrays'] && argsToSet.length > 0) ||\n (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount))\n break;\n next = args[ii];\n if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))\n break;\n i = ii;\n argsToSet.push(processValue(key, next, inputIsString));\n }\n }\n // If both array and nargs are configured, create an error if less than\n // nargs positionals were found. NaN has special meaning, indicating\n // that at least one value is required (more are okay).\n if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) ||\n (isNaN(nargsCount) && argsToSet.length === 0))) {\n error = Error(__('Not enough arguments following: %s', key));\n }\n setArg(key, argsToSet);\n return i;\n }\n function setArg(key, val, shouldStripQuotes = inputIsString) {\n if (/-/.test(key) && configuration['camel-case-expansion']) {\n const alias = key.split('.').map(function (prop) {\n return camelCase(prop);\n }).join('.');\n addNewAlias(key, alias);\n }\n const value = processValue(key, val, shouldStripQuotes);\n const splitKey = key.split('.');\n setKey(argv, splitKey, value);\n // handle populating aliases of the full key\n if (flags.aliases[key]) {\n flags.aliases[key].forEach(function (x) {\n const keyProperties = x.split('.');\n setKey(argv, keyProperties, value);\n });\n }\n // handle populating aliases of the first element of the dot-notation key\n if (splitKey.length > 1 && configuration['dot-notation']) {\n ;\n (flags.aliases[splitKey[0]] || []).forEach(function (x) {\n let keyProperties = x.split('.');\n // expand alias with nested objects in key\n const a = [].concat(splitKey);\n a.shift(); // nuke the old key.\n keyProperties = keyProperties.concat(a);\n // populate alias only if is not already an alias of the full key\n // (already populated above)\n if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) {\n setKey(argv, keyProperties, value);\n }\n });\n }\n // Set normalize getter and setter when key is in 'normalize' but isn't an array\n if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {\n const keys = [key].concat(flags.aliases[key] || []);\n keys.forEach(function (key) {\n Object.defineProperty(argvReturn, key, {\n enumerable: true,\n get() {\n return val;\n },\n set(value) {\n val = typeof value === 'string' ? mixin.normalize(value) : value;\n }\n });\n });\n }\n }\n function addNewAlias(key, alias) {\n if (!(flags.aliases[key] && flags.aliases[key].length)) {\n flags.aliases[key] = [alias];\n newAliases[alias] = true;\n }\n if (!(flags.aliases[alias] && flags.aliases[alias].length)) {\n addNewAlias(alias, key);\n }\n }\n function processValue(key, val, shouldStripQuotes) {\n // strings may be quoted, clean this up as we assign values.\n if (shouldStripQuotes) {\n val = stripQuotes(val);\n }\n // handle parsing boolean arguments --foo=true --bar false.\n if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {\n if (typeof val === 'string')\n val = val === 'true';\n }\n let value = Array.isArray(val)\n ? val.map(function (v) { return maybeCoerceNumber(key, v); })\n : maybeCoerceNumber(key, val);\n // increment a count given as arg (either no value or value parsed as boolean)\n if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {\n value = increment();\n }\n // Set normalized value when key is in 'normalize' and in 'arrays'\n if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {\n if (Array.isArray(val))\n value = val.map((val) => { return mixin.normalize(val); });\n else\n value = mixin.normalize(val);\n }\n return value;\n }\n function maybeCoerceNumber(key, value) {\n if (!configuration['parse-positional-numbers'] && key === '_')\n return value;\n if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {\n const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`))));\n if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) {\n value = Number(value);\n }\n }\n return value;\n }\n // set args from config.json file, this should be\n // applied last so that defaults can be applied.\n function setConfig(argv) {\n const configLookup = Object.create(null);\n // expand defaults/aliases, in-case any happen to reference\n // the config.json file.\n applyDefaultsAndAliases(configLookup, flags.aliases, defaults);\n Object.keys(flags.configs).forEach(function (configKey) {\n const configPath = argv[configKey] || configLookup[configKey];\n if (configPath) {\n try {\n let config = null;\n const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);\n const resolveConfig = flags.configs[configKey];\n if (typeof resolveConfig === 'function') {\n try {\n config = resolveConfig(resolvedConfigPath);\n }\n catch (e) {\n config = e;\n }\n if (config instanceof Error) {\n error = config;\n return;\n }\n }\n else {\n config = mixin.require(resolvedConfigPath);\n }\n setConfigObject(config);\n }\n catch (ex) {\n // Deno will receive a PermissionDenied error if an attempt is\n // made to load config without the --allow-read flag:\n if (ex.name === 'PermissionDenied')\n error = ex;\n else if (argv[configKey])\n error = Error(__('Invalid JSON config file: %s', configPath));\n }\n }\n });\n }\n // set args from config object.\n // it recursively checks nested objects.\n function setConfigObject(config, prev) {\n Object.keys(config).forEach(function (key) {\n const value = config[key];\n const fullKey = prev ? prev + '.' + key : key;\n // if the value is an inner object and we have dot-notation\n // enabled, treat inner objects in config the same as\n // heavily nested dot notations (foo.bar.apple).\n if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {\n // if the value is an object but not an array, check nested object\n setConfigObject(value, fullKey);\n }\n else {\n // setting arguments via CLI takes precedence over\n // values within the config file.\n if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {\n setArg(fullKey, value);\n }\n }\n });\n }\n // set all config objects passed in opts\n function setConfigObjects() {\n if (typeof configObjects !== 'undefined') {\n configObjects.forEach(function (configObject) {\n setConfigObject(configObject);\n });\n }\n }\n function applyEnvVars(argv, configOnly) {\n if (typeof envPrefix === 'undefined')\n return;\n const prefix = typeof envPrefix === 'string' ? envPrefix : '';\n const env = mixin.env();\n Object.keys(env).forEach(function (envVar) {\n if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {\n // get array of nested keys and convert them to camel case\n const keys = envVar.split('__').map(function (key, i) {\n if (i === 0) {\n key = key.substring(prefix.length);\n }\n return camelCase(key);\n });\n if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {\n setArg(keys.join('.'), env[envVar]);\n }\n }\n });\n }\n function applyCoercions(argv) {\n let coerce;\n const applied = new Set();\n Object.keys(argv).forEach(function (key) {\n if (!applied.has(key)) { // If we haven't already coerced this option via one of its aliases\n coerce = checkAllAliases(key, flags.coercions);\n if (typeof coerce === 'function') {\n try {\n const value = maybeCoerceNumber(key, coerce(argv[key]));\n ([].concat(flags.aliases[key] || [], key)).forEach(ali => {\n applied.add(ali);\n argv[ali] = value;\n });\n }\n catch (err) {\n error = err;\n }\n }\n }\n });\n }\n function setPlaceholderKeys(argv) {\n flags.keys.forEach((key) => {\n // don't set placeholder keys for dot notation options 'foo.bar'.\n if (~key.indexOf('.'))\n return;\n if (typeof argv[key] === 'undefined')\n argv[key] = undefined;\n });\n return argv;\n }\n function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) {\n Object.keys(defaults).forEach(function (key) {\n if (!hasKey(obj, key.split('.'))) {\n setKey(obj, key.split('.'), defaults[key]);\n if (canLog)\n defaulted[key] = true;\n (aliases[key] || []).forEach(function (x) {\n if (hasKey(obj, x.split('.')))\n return;\n setKey(obj, x.split('.'), defaults[key]);\n });\n }\n });\n }\n function hasKey(obj, keys) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n o = (o[key] || {});\n });\n const key = keys[keys.length - 1];\n if (typeof o !== 'object')\n return false;\n else\n return key in o;\n }\n function setKey(obj, keys, value) {\n let o = obj;\n if (!configuration['dot-notation'])\n keys = [keys.join('.')];\n keys.slice(0, -1).forEach(function (key) {\n // TODO(bcoe): in the next major version of yargs, switch to\n // Object.create(null) for dot notation:\n key = sanitizeKey(key);\n if (typeof o === 'object' && o[key] === undefined) {\n o[key] = {};\n }\n if (typeof o[key] !== 'object' || Array.isArray(o[key])) {\n // ensure that o[key] is an array, and that the last item is an empty object.\n if (Array.isArray(o[key])) {\n o[key].push({});\n }\n else {\n o[key] = [o[key], {}];\n }\n // we want to update the empty object at the end of the o[key] array, so set o to that object\n o = o[key][o[key].length - 1];\n }\n else {\n o = o[key];\n }\n });\n // TODO(bcoe): in the next major version of yargs, switch to\n // Object.create(null) for dot notation:\n const key = sanitizeKey(keys[keys.length - 1]);\n const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays);\n const isValueArray = Array.isArray(value);\n let duplicate = configuration['duplicate-arguments-array'];\n // nargs has higher priority than duplicate\n if (!duplicate && checkAllAliases(key, flags.nargs)) {\n duplicate = true;\n if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {\n o[key] = undefined;\n }\n }\n if (value === increment()) {\n o[key] = increment(o[key]);\n }\n else if (Array.isArray(o[key])) {\n if (duplicate && isTypeArray && isValueArray) {\n o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);\n }\n else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {\n o[key] = value;\n }\n else {\n o[key] = o[key].concat([value]);\n }\n }\n else if (o[key] === undefined && isTypeArray) {\n o[key] = isValueArray ? value : [value];\n }\n else if (duplicate && !(o[key] === undefined ||\n checkAllAliases(key, flags.counts) ||\n checkAllAliases(key, flags.bools))) {\n o[key] = [o[key], value];\n }\n else {\n o[key] = value;\n }\n }\n // extend the aliases list with inferred aliases.\n function extendAliases(...args) {\n args.forEach(function (obj) {\n Object.keys(obj || {}).forEach(function (key) {\n // short-circuit if we've already added a key\n // to the aliases array, for example it might\n // exist in both 'opts.default' and 'opts.key'.\n if (flags.aliases[key])\n return;\n flags.aliases[key] = [].concat(aliases[key] || []);\n // For \"--option-name\", also set argv.optionName\n flags.aliases[key].concat(key).forEach(function (x) {\n if (/-/.test(x) && configuration['camel-case-expansion']) {\n const c = camelCase(x);\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n // For \"--optionName\", also set argv['option-name']\n flags.aliases[key].concat(key).forEach(function (x) {\n if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {\n const c = decamelize(x, '-');\n if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n flags.aliases[key].push(c);\n newAliases[c] = true;\n }\n }\n });\n flags.aliases[key].forEach(function (x) {\n flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {\n return x !== y;\n }));\n });\n });\n });\n }\n function checkAllAliases(key, flag) {\n const toCheck = [].concat(flags.aliases[key] || [], key);\n const keys = Object.keys(flag);\n const setAlias = toCheck.find(key => keys.includes(key));\n return setAlias ? flag[setAlias] : false;\n }\n function hasAnyFlag(key) {\n const flagsKeys = Object.keys(flags);\n const toCheck = [].concat(flagsKeys.map(k => flags[k]));\n return toCheck.some(function (flag) {\n return Array.isArray(flag) ? flag.includes(key) : flag[key];\n });\n }\n function hasFlagsMatching(arg, ...patterns) {\n const toCheck = [].concat(...patterns);\n return toCheck.some(function (pattern) {\n const match = arg.match(pattern);\n return match && hasAnyFlag(match[1]);\n });\n }\n // based on a simplified version of the short flag group parsing logic\n function hasAllShortFlags(arg) {\n // if this is a negative number, or doesn't start with a single hyphen, it's not a short flag group\n if (arg.match(negative) || !arg.match(/^-[^-]+/)) {\n return false;\n }\n let hasAllFlags = true;\n let next;\n const letters = arg.slice(1).split('');\n for (let j = 0; j < letters.length; j++) {\n next = arg.slice(j + 2);\n if (!hasAnyFlag(letters[j])) {\n hasAllFlags = false;\n break;\n }\n if ((letters[j + 1] && letters[j + 1] === '=') ||\n next === '-' ||\n (/[A-Za-z]/.test(letters[j]) && /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) ||\n (letters[j + 1] && letters[j + 1].match(/\\W/))) {\n break;\n }\n }\n return hasAllFlags;\n }\n function isUnknownOptionAsArg(arg) {\n return configuration['unknown-options-as-args'] && isUnknownOption(arg);\n }\n function isUnknownOption(arg) {\n arg = arg.replace(/^-{3,}/, '--');\n // ignore negative numbers\n if (arg.match(negative)) {\n return false;\n }\n // if this is a short option group and all of them are configured, it isn't unknown\n if (hasAllShortFlags(arg)) {\n return false;\n }\n // e.g. '--count=2'\n const flagWithEquals = /^-+([^=]+?)=[\\s\\S]*$/;\n // e.g. '-a' or '--arg'\n const normalFlag = /^-+([^=]+?)$/;\n // e.g. '-a-'\n const flagEndingInHyphen = /^-+([^=]+?)-$/;\n // e.g. '-abc123'\n const flagEndingInDigits = /^-+([^=]+?\\d+)$/;\n // e.g. '-a/usr/local'\n const flagEndingInNonWordCharacters = /^-+([^=]+?)\\W+.*$/;\n // check the different types of flag styles, including negatedBoolean, a pattern defined near the start of the parse method\n return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);\n }\n // make a best effort to pick a default value\n // for an option based on name and type.\n function defaultValue(key) {\n if (!checkAllAliases(key, flags.bools) &&\n !checkAllAliases(key, flags.counts) &&\n `${key}` in defaults) {\n return defaults[key];\n }\n else {\n return defaultForType(guessType(key));\n }\n }\n // return a default value, given the type of a flag.,\n function defaultForType(type) {\n const def = {\n [DefaultValuesForTypeKey.BOOLEAN]: true,\n [DefaultValuesForTypeKey.STRING]: '',\n [DefaultValuesForTypeKey.NUMBER]: undefined,\n [DefaultValuesForTypeKey.ARRAY]: []\n };\n return def[type];\n }\n // given a flag, enforce a default type.\n function guessType(key) {\n let type = DefaultValuesForTypeKey.BOOLEAN;\n if (checkAllAliases(key, flags.strings))\n type = DefaultValuesForTypeKey.STRING;\n else if (checkAllAliases(key, flags.numbers))\n type = DefaultValuesForTypeKey.NUMBER;\n else if (checkAllAliases(key, flags.bools))\n type = DefaultValuesForTypeKey.BOOLEAN;\n else if (checkAllAliases(key, flags.arrays))\n type = DefaultValuesForTypeKey.ARRAY;\n return type;\n }\n function isUndefined(num) {\n return num === undefined;\n }\n // check user configuration settings for inconsistencies\n function checkConfiguration() {\n // count keys should not be set as array/narg\n Object.keys(flags.counts).find(key => {\n if (checkAllAliases(key, flags.arrays)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key));\n return true;\n }\n else if (checkAllAliases(key, flags.nargs)) {\n error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key));\n return true;\n }\n return false;\n });\n }\n return {\n aliases: Object.assign({}, flags.aliases),\n argv: Object.assign(argvReturn, argv),\n configuration: configuration,\n defaulted: Object.assign({}, defaulted),\n error: error,\n newAliases: Object.assign({}, newAliases)\n };\n }\n}\n// if any aliases reference each other, we should\n// merge them together.\nfunction combineAliases(aliases) {\n const aliasArrays = [];\n const combined = Object.create(null);\n let change = true;\n // turn alias lookup hash {key: ['alias1', 'alias2']} into\n // a simple array ['key', 'alias1', 'alias2']\n Object.keys(aliases).forEach(function (key) {\n aliasArrays.push([].concat(aliases[key], key));\n });\n // combine arrays until zero changes are\n // made in an iteration.\n while (change) {\n change = false;\n for (let i = 0; i < aliasArrays.length; i++) {\n for (let ii = i + 1; ii < aliasArrays.length; ii++) {\n const intersect = aliasArrays[i].filter(function (v) {\n return aliasArrays[ii].indexOf(v) !== -1;\n });\n if (intersect.length) {\n aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);\n aliasArrays.splice(ii, 1);\n change = true;\n break;\n }\n }\n }\n }\n // map arrays back to the hash-lookup (de-dupe while\n // we're at it).\n aliasArrays.forEach(function (aliasArray) {\n aliasArray = aliasArray.filter(function (v, i, self) {\n return self.indexOf(v) === i;\n });\n const lastAlias = aliasArray.pop();\n if (lastAlias !== undefined && typeof lastAlias === 'string') {\n combined[lastAlias] = aliasArray;\n }\n });\n return combined;\n}\n// this function should only be called when a count is given as an arg\n// it is NOT called to set a default value\n// thus we can start the count at 1 instead of 0\nfunction increment(orig) {\n return orig !== undefined ? orig + 1 : 1;\n}\n// TODO(bcoe): in the next major version of yargs, switch to\n// Object.create(null) for dot notation:\nfunction sanitizeKey(key) {\n if (key === '__proto__')\n return '___proto___';\n return key;\n}\nfunction stripQuotes(val) {\n return (typeof val === 'string' &&\n (val[0] === \"'\" || val[0] === '\"') &&\n val[val.length - 1] === val[0])\n ? val.substring(1, val.length - 1)\n : val;\n}\n","/**\n * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js\n *\n * @license\n * Copyright (c) 2016, Contributors\n * SPDX-License-Identifier: ISC\n */\nvar _a, _b, _c;\n/* eslint-disable n/no-unpublished-import */\nimport { format } from 'util';\nimport { normalize, resolve } from 'path';\nimport { camelCase, decamelize, looksLikeNumber } from './string-utils.js';\nimport { YargsParser } from './yargs-parser.js';\nimport { readFileSync } from 'fs';\nimport { createRequire } from 'node:module';\n// See https://github.com/yargs/yargs-parser#supported-nodejs-versions for our\n// version support policy. The YARGS_MIN_NODE_VERSION is used for testing only.\nconst minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION)\n ? Number(process.env.YARGS_MIN_NODE_VERSION)\n : 20;\nconst nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1);\nif (nodeVersion) {\n const major = Number(nodeVersion.match(/^([^.]+)/)[1]);\n if (major < minNodeVersion) {\n throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);\n }\n}\n// Creates a yargs-parser instance using Node.js standard libraries:\nconst env = process ? process.env : {};\nconst require = createRequire ? createRequire(import.meta.url) : undefined;\nconst parser = new YargsParser({\n cwd: process.cwd,\n env: () => {\n return env;\n },\n format,\n normalize,\n resolve,\n require: (path) => {\n if (typeof require !== 'undefined') {\n return require(path);\n }\n else if (path.match(/\\.json$/)) {\n // Addresses: https://github.com/yargs/yargs/issues/2040\n return JSON.parse(readFileSync(path, 'utf8'));\n }\n else {\n throw Error('only .json config files are supported in ESM');\n }\n }\n});\nconst yargsParser = function Parser(args, opts) {\n const result = parser.parse(args.slice(), opts);\n return result.argv;\n};\nyargsParser.detailed = function (args, opts) {\n return parser.parse(args.slice(), opts);\n};\nyargsParser.camelCase = camelCase;\nyargsParser.decamelize = decamelize;\nyargsParser.looksLikeNumber = looksLikeNumber;\nexport default yargsParser;\n// special syntax to allow unqualified default export from CommonJS\nexport { yargsParser as 'module.exports' };\n","function getProcessArgvBinIndex() {\n if (isBundledElectronApp())\n return 0;\n return 1;\n}\nfunction isBundledElectronApp() {\n return isElectronApp() && !process.defaultApp;\n}\nfunction isElectronApp() {\n return !!process.versions.electron;\n}\nexport function hideBin(argv) {\n return argv.slice(getProcessArgvBinIndex() + 1);\n}\nexport function getProcessArgvBin() {\n return process.argv[getProcessArgvBinIndex()];\n}\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","module.exports = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\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?|[\\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](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\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-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","import { readFileSync, statSync, writeFile } from 'fs';\nimport { format } from 'util';\nimport { resolve } from 'path';\nexport default {\n fs: {\n readFileSync,\n writeFile\n },\n format,\n resolve,\n exists: (file) => {\n try {\n return statSync(file).isFile();\n }\n catch (err) {\n return false;\n }\n }\n};\n","let shim;\nclass Y18N {\n constructor(opts) {\n // configurable options.\n opts = opts || {};\n this.directory = opts.directory || './locales';\n this.updateFiles = typeof opts.updateFiles === 'boolean' ? opts.updateFiles : true;\n this.locale = opts.locale || 'en';\n this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true;\n // internal stuff.\n this.cache = Object.create(null);\n this.writeQueue = [];\n }\n __(...args) {\n if (typeof arguments[0] !== 'string') {\n return this._taggedLiteral(arguments[0], ...arguments);\n }\n const str = args.shift();\n let cb = function () { }; // start with noop.\n if (typeof args[args.length - 1] === 'function')\n cb = args.pop();\n cb = cb || function () { }; // noop.\n if (!this.cache[this.locale])\n this._readLocaleFile();\n // we've observed a new string, update the language file.\n if (!this.cache[this.locale][str] && this.updateFiles) {\n this.cache[this.locale][str] = str;\n // include the current directory and locale,\n // since these values could change before the\n // write is performed.\n this._enqueueWrite({\n directory: this.directory,\n locale: this.locale,\n cb\n });\n }\n else {\n cb();\n }\n return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args));\n }\n __n() {\n const args = Array.prototype.slice.call(arguments);\n const singular = args.shift();\n const plural = args.shift();\n const quantity = args.shift();\n let cb = function () { }; // start with noop.\n if (typeof args[args.length - 1] === 'function')\n cb = args.pop();\n if (!this.cache[this.locale])\n this._readLocaleFile();\n let str = quantity === 1 ? singular : plural;\n if (this.cache[this.locale][singular]) {\n const entry = this.cache[this.locale][singular];\n str = entry[quantity === 1 ? 'one' : 'other'];\n }\n // we've observed a new string, update the language file.\n if (!this.cache[this.locale][singular] && this.updateFiles) {\n this.cache[this.locale][singular] = {\n one: singular,\n other: plural\n };\n // include the current directory and locale,\n // since these values could change before the\n // write is performed.\n this._enqueueWrite({\n directory: this.directory,\n locale: this.locale,\n cb\n });\n }\n else {\n cb();\n }\n // if a %d placeholder is provided, add quantity\n // to the arguments expanded by util.format.\n const values = [str];\n if (~str.indexOf('%d'))\n values.push(quantity);\n return shim.format.apply(shim.format, values.concat(args));\n }\n setLocale(locale) {\n this.locale = locale;\n }\n getLocale() {\n return this.locale;\n }\n updateLocale(obj) {\n if (!this.cache[this.locale])\n this._readLocaleFile();\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n this.cache[this.locale][key] = obj[key];\n }\n }\n }\n _taggedLiteral(parts, ...args) {\n let str = '';\n parts.forEach(function (part, i) {\n const arg = args[i + 1];\n str += part;\n if (typeof arg !== 'undefined') {\n str += '%s';\n }\n });\n return this.__.apply(this, [str].concat([].slice.call(args, 1)));\n }\n _enqueueWrite(work) {\n this.writeQueue.push(work);\n if (this.writeQueue.length === 1)\n this._processWriteQueue();\n }\n _processWriteQueue() {\n const _this = this;\n const work = this.writeQueue[0];\n // destructure the enqueued work.\n const directory = work.directory;\n const locale = work.locale;\n const cb = work.cb;\n const languageFile = this._resolveLocaleFile(directory, locale);\n const serializedLocale = JSON.stringify(this.cache[locale], null, 2);\n shim.fs.writeFile(languageFile, serializedLocale, 'utf-8', function (err) {\n _this.writeQueue.shift();\n if (_this.writeQueue.length > 0)\n _this._processWriteQueue();\n cb(err);\n });\n }\n _readLocaleFile() {\n let localeLookup = {};\n const languageFile = this._resolveLocaleFile(this.directory, this.locale);\n try {\n // When using a bundler such as webpack, readFileSync may not be defined:\n if (shim.fs.readFileSync) {\n localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, 'utf-8'));\n }\n }\n catch (err) {\n if (err instanceof SyntaxError) {\n err.message = 'syntax error in ' + languageFile;\n }\n if (err.code === 'ENOENT')\n localeLookup = {};\n else\n throw err;\n }\n this.cache[this.locale] = localeLookup;\n }\n _resolveLocaleFile(directory, locale) {\n let file = shim.resolve(directory, './', locale + '.json');\n if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf('_')) {\n // attempt fallback to language only\n const languageFile = shim.resolve(directory, './', locale.split('_')[0] + '.json');\n if (this._fileExistsSync(languageFile))\n file = languageFile;\n }\n return file;\n }\n _fileExistsSync(file) {\n return shim.exists(file);\n }\n}\nexport function y18n(opts, _shim) {\n shim = _shim;\n const y18n = new Y18N(opts);\n return {\n __: y18n.__.bind(y18n),\n __n: y18n.__n.bind(y18n),\n setLocale: y18n.setLocale.bind(y18n),\n getLocale: y18n.getLocale.bind(y18n),\n updateLocale: y18n.updateLocale.bind(y18n),\n locale: y18n.locale\n };\n}\n","import shim from './build/lib/platform-shims/node.js'\nimport { y18n as _y18n } from './build/lib/index.js'\n\nconst y18n = (opts) => {\n return _y18n(opts, shim)\n}\n\nexport default y18n\n","\"use strict\";\n// Call this function in a another function to find out the file from\n// which that function was called from. (Inspects the v8 stack trace)\n//\n// Inspired by http://stackoverflow.com/questions/13227489\nmodule.exports = function getCallerFile(position) {\n if (position === void 0) { position = 2; }\n if (position >= Error.stackTraceLimit) {\n throw new TypeError('getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `' + position + '` and Error.stackTraceLimit was: `' + Error.stackTraceLimit + '`');\n }\n var oldPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = function (_, stack) { return stack; };\n var stack = new Error().stack;\n Error.prepareStackTrace = oldPrepareStackTrace;\n if (stack !== null && typeof stack === 'object') {\n // stack[0] holds this file\n // stack[1] holds where this function was called\n // stack[2] holds the file we're interested in\n return stack[position] ? stack[position].getFileName() : undefined;\n }\n};\n//# sourceMappingURL=index.js.map","'use strict'\n\nimport { notStrictEqual, strictEqual } from 'assert'\nimport cliui from 'cliui'\nimport escalade from 'escalade/sync'\nimport { inspect } from 'util'\nimport { fileURLToPath } from 'url';\nimport Parser from 'yargs-parser'\nimport { basename, dirname, extname, relative, resolve, join } from 'path'\nimport { getProcessArgvBin } from '../../build/lib/utils/process-argv.js'\nimport stringWidth from 'string-width';\nimport y18n from 'y18n'\nimport { createRequire } from 'node:module';\nimport getCallerFile from 'get-caller-file';\nimport { readFileSync, readdirSync } from 'node:fs'\n\nconst __dirname = fileURLToPath(import.meta.url);\nconst mainFilename = __dirname.substring(0, __dirname.lastIndexOf('node_modules'));\nconst require = createRequire(import.meta.url);\n\nexport default {\n assert: {\n notStrictEqual,\n strictEqual\n },\n cliui,\n findUp: escalade,\n getEnv: (key) => {\n return process.env[key]\n },\n inspect,\n getProcessArgvBin,\n mainFilename: mainFilename || process.cwd(),\n Parser,\n path: {\n basename,\n dirname,\n extname,\n relative,\n resolve,\n join\n },\n process: {\n argv: () => process.argv,\n cwd: process.cwd,\n emitWarning: (warning, type) => process.emitWarning(warning, type),\n execPath: () => process.execPath,\n exit: (code) => {\n // eslint-disable-next-line n/no-process-exit\n process.exit(code);\n },\n nextTick: process.nextTick,\n stdColumns: typeof process.stdout.columns !== 'undefined' ? process.stdout.columns : null\n },\n readFileSync,\n readdirSync,\n require,\n getCallerFile: () => {\n const callerFile = getCallerFile(3);\n return callerFile.match(/^file:\\/\\//) ? fileURLToPath(callerFile) : callerFile;\n },\n stringWidth,\n y18n: y18n({\n directory: resolve(__dirname, '../../../locales'),\n updateFiles: false\n })\n}\n","export function assertNotStrictEqual(actual, expected, shim, message) {\n shim.assert.notStrictEqual(actual, expected, message);\n}\nexport function assertSingleKey(actual, shim) {\n shim.assert.strictEqual(typeof actual, 'string');\n}\nexport function objectKeys(object) {\n return Object.keys(object);\n}\n","export function isPromise(maybePromise) {\n return (!!maybePromise &&\n !!maybePromise.then &&\n typeof maybePromise.then === 'function');\n}\n","export class YError extends Error {\n constructor(msg) {\n super(msg || 'yargs error');\n this.name = 'YError';\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, YError);\n }\n }\n}\n","export function parseCommand(cmd) {\n const extraSpacesStrippedCommand = cmd.replace(/\\s{2,}/g, ' ');\n const splitCommand = extraSpacesStrippedCommand.split(/\\s+(?![^[]*]|[^<]*>)/);\n const bregex = /\\.*[\\][<>]/g;\n const firstCommand = splitCommand.shift();\n if (!firstCommand)\n throw new Error(`No command found in: ${cmd}`);\n const parsedCommand = {\n cmd: firstCommand.replace(bregex, ''),\n demanded: [],\n optional: [],\n };\n splitCommand.forEach((cmd, i) => {\n let variadic = false;\n cmd = cmd.replace(/\\s/g, '');\n if (/\\.+[\\]>]/.test(cmd) && i === splitCommand.length - 1)\n variadic = true;\n if (/^\\[/.test(cmd)) {\n parsedCommand.optional.push({\n cmd: cmd.replace(bregex, '').split('|'),\n variadic,\n });\n }\n else {\n parsedCommand.demanded.push({\n cmd: cmd.replace(bregex, '').split('|'),\n variadic,\n });\n }\n });\n return parsedCommand;\n}\n","import { YError } from './yerror.js';\nimport { parseCommand } from './parse-command.js';\nconst positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth'];\nexport function argsert(arg1, arg2, arg3) {\n function parseArgs() {\n return typeof arg1 === 'object'\n ? [{ demanded: [], optional: [] }, arg1, arg2]\n : [\n parseCommand(`cmd ${arg1}`),\n arg2,\n arg3,\n ];\n }\n try {\n let position = 0;\n const [parsed, callerArguments, _length] = parseArgs();\n const args = [].slice.call(callerArguments);\n while (args.length && args[args.length - 1] === undefined)\n args.pop();\n const length = _length || args.length;\n if (length < parsed.demanded.length) {\n throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`);\n }\n const totalCommands = parsed.demanded.length + parsed.optional.length;\n if (length > totalCommands) {\n throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`);\n }\n parsed.demanded.forEach(demanded => {\n const arg = args.shift();\n const observedType = guessType(arg);\n const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*');\n if (matchingTypes.length === 0)\n argumentTypeError(observedType, demanded.cmd, position);\n position += 1;\n });\n parsed.optional.forEach(optional => {\n if (args.length === 0)\n return;\n const arg = args.shift();\n const observedType = guessType(arg);\n const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*');\n if (matchingTypes.length === 0)\n argumentTypeError(observedType, optional.cmd, position);\n position += 1;\n });\n }\n catch (err) {\n console.warn(err.stack);\n }\n}\nfunction guessType(arg) {\n if (Array.isArray(arg)) {\n return 'array';\n }\n else if (arg === null) {\n return 'null';\n }\n return typeof arg;\n}\nfunction argumentTypeError(observedType, allowedTypes, position) {\n throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`);\n}\n","import { argsert } from './argsert.js';\nimport { isPromise } from './utils/is-promise.js';\nexport class GlobalMiddleware {\n constructor(yargs) {\n this.globalMiddleware = [];\n this.frozens = [];\n this.yargs = yargs;\n }\n addMiddleware(callback, applyBeforeValidation, global = true, mutates = false) {\n argsert('<array|function> [boolean] [boolean] [boolean]', [callback, applyBeforeValidation, global], arguments.length);\n if (Array.isArray(callback)) {\n for (let i = 0; i < callback.length; i++) {\n if (typeof callback[i] !== 'function') {\n throw Error('middleware must be a function');\n }\n const m = callback[i];\n m.applyBeforeValidation = applyBeforeValidation;\n m.global = global;\n }\n Array.prototype.push.apply(this.globalMiddleware, callback);\n }\n else if (typeof callback === 'function') {\n const m = callback;\n m.applyBeforeValidation = applyBeforeValidation;\n m.global = global;\n m.mutates = mutates;\n this.globalMiddleware.push(callback);\n }\n return this.yargs;\n }\n addCoerceMiddleware(callback, option) {\n const aliases = this.yargs.getAliases();\n this.globalMiddleware = this.globalMiddleware.filter(m => {\n const toCheck = [...(aliases[option] || []), option];\n if (!m.option)\n return true;\n else\n return !toCheck.includes(m.option);\n });\n callback.option = option;\n return this.addMiddleware(callback, true, true, true);\n }\n getMiddleware() {\n return this.globalMiddleware;\n }\n freeze() {\n this.frozens.push([...this.globalMiddleware]);\n }\n unfreeze() {\n const frozen = this.frozens.pop();\n if (frozen !== undefined)\n this.globalMiddleware = frozen;\n }\n reset() {\n this.globalMiddleware = this.globalMiddleware.filter(m => m.global);\n }\n}\nexport function commandMiddlewareFactory(commandMiddleware) {\n if (!commandMiddleware)\n return [];\n return commandMiddleware.map(middleware => {\n middleware.applyBeforeValidation = false;\n return middleware;\n });\n}\nexport function applyMiddleware(argv, yargs, middlewares, beforeValidation) {\n return middlewares.reduce((acc, middleware) => {\n if (middleware.applyBeforeValidation !== beforeValidation) {\n return acc;\n }\n if (middleware.mutates) {\n if (middleware.applied)\n return acc;\n middleware.applied = true;\n }\n if (isPromise(acc)) {\n return acc\n .then(initialObj => Promise.all([initialObj, middleware(initialObj, yargs)]))\n .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj));\n }\n else {\n const result = middleware(acc, yargs);\n return isPromise(result)\n ? result.then(middlewareObj => Object.assign(acc, middlewareObj))\n : Object.assign(acc, result);\n }\n }, argv);\n}\n","import { isPromise } from './is-promise.js';\nexport function maybeAsyncResult(getResult, resultHandler, errorHandler = (err) => {\n throw err;\n}) {\n try {\n const result = isFunction(getResult) ? getResult() : getResult;\n return isPromise(result)\n ? result.then((result) => resultHandler(result))\n : resultHandler(result);\n }\n catch (err) {\n return errorHandler(err);\n }\n}\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n","import { assertNotStrictEqual, } from './typings/common-types.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { applyMiddleware, commandMiddlewareFactory, } from './middleware.js';\nimport { parseCommand } from './parse-command.js';\nimport { isYargsInstance, } from './yargs-factory.js';\nimport { maybeAsyncResult } from './utils/maybe-async-result.js';\nconst DEFAULT_MARKER = /(^\\*)|(^\\$0)/;\nexport class CommandInstance {\n constructor(usage, validation, globalMiddleware, shim) {\n this.requireCache = new Set();\n this.handlers = {};\n this.aliasMap = {};\n this.frozens = [];\n this.shim = shim;\n this.usage = usage;\n this.globalMiddleware = globalMiddleware;\n this.validation = validation;\n }\n addDirectory(dir, req, callerFile, opts) {\n opts = opts || {};\n this.requireCache.add(callerFile);\n const fullDirPath = this.shim.path.resolve(this.shim.path.dirname(callerFile), dir);\n const files = this.shim.readdirSync(fullDirPath, {\n recursive: opts.recurse ? true : false,\n });\n if (!Array.isArray(opts.extensions))\n opts.extensions = ['js'];\n const visit = typeof opts.visit === 'function' ? opts.visit : (o) => o;\n for (const fileb of files) {\n const file = fileb.toString();\n if (opts.exclude) {\n let exclude = false;\n if (typeof opts.exclude === 'function') {\n exclude = opts.exclude(file);\n }\n else {\n exclude = opts.exclude.test(file);\n }\n if (exclude)\n continue;\n }\n if (opts.include) {\n let include = false;\n if (typeof opts.include === 'function') {\n include = opts.include(file);\n }\n else {\n include = opts.include.test(file);\n }\n if (!include)\n continue;\n }\n let supportedExtension = false;\n for (const ext of opts.extensions) {\n if (file.endsWith(ext))\n supportedExtension = true;\n }\n if (supportedExtension) {\n const joined = this.shim.path.join(fullDirPath, file);\n const module = req(joined);\n const extendableModule = Object.create(null, Object.getOwnPropertyDescriptors({ ...module }));\n const visited = visit(extendableModule, joined, file);\n if (visited) {\n if (this.requireCache.has(joined))\n continue;\n else\n this.requireCache.add(joined);\n if (!extendableModule.command) {\n extendableModule.command = this.shim.path.basename(joined, this.shim.path.extname(joined));\n }\n this.addHandler(extendableModule);\n }\n }\n }\n }\n addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) {\n let aliases = [];\n const middlewares = commandMiddlewareFactory(commandMiddleware);\n handler = handler || (() => { });\n if (Array.isArray(cmd)) {\n if (isCommandAndAliases(cmd)) {\n [cmd, ...aliases] = cmd;\n }\n else {\n for (const command of cmd) {\n this.addHandler(command);\n }\n }\n }\n else if (isCommandHandlerDefinition(cmd)) {\n let command = Array.isArray(cmd.command) || typeof cmd.command === 'string'\n ? cmd.command\n : null;\n if (command === null) {\n throw new Error(`No command name given for module: ${this.shim.inspect(cmd)}`);\n }\n if (cmd.aliases)\n command = [].concat(command).concat(cmd.aliases);\n this.addHandler(command, this.extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated);\n return;\n }\n else if (isCommandBuilderDefinition(builder)) {\n this.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated);\n return;\n }\n if (typeof cmd === 'string') {\n const parsedCommand = parseCommand(cmd);\n aliases = aliases.map(alias => parseCommand(alias).cmd);\n let isDefault = false;\n const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => {\n if (DEFAULT_MARKER.test(c)) {\n isDefault = true;\n return false;\n }\n return true;\n });\n if (parsedAliases.length === 0 && isDefault)\n parsedAliases.push('$0');\n if (isDefault) {\n parsedCommand.cmd = parsedAliases[0];\n aliases = parsedAliases.slice(1);\n cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd);\n }\n aliases.forEach(alias => {\n this.aliasMap[alias] = parsedCommand.cmd;\n });\n if (description !== false) {\n this.usage.command(cmd, description, isDefault, aliases, deprecated);\n }\n this.handlers[parsedCommand.cmd] = {\n original: cmd,\n description,\n handler,\n builder: builder || {},\n middlewares,\n deprecated,\n demanded: parsedCommand.demanded,\n optional: parsedCommand.optional,\n };\n if (isDefault)\n this.defaultCommand = this.handlers[parsedCommand.cmd];\n }\n }\n getCommandHandlers() {\n return this.handlers;\n }\n getCommands() {\n return Object.keys(this.handlers).concat(Object.keys(this.aliasMap));\n }\n hasDefaultCommand() {\n return !!this.defaultCommand;\n }\n runCommand(command, yargs, parsed, commandIndex, helpOnly, helpOrVersionSet) {\n const commandHandler = this.handlers[command] ||\n this.handlers[this.aliasMap[command]] ||\n this.defaultCommand;\n const currentContext = yargs.getInternalMethods().getContext();\n const parentCommands = currentContext.commands.slice();\n const isDefaultCommand = !command;\n if (command) {\n currentContext.commands.push(command);\n currentContext.fullCommands.push(commandHandler.original);\n }\n const builderResult = this.applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, parsed.aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet);\n return isPromise(builderResult)\n ? builderResult.then(result => this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, result.innerArgv, currentContext, helpOnly, result.aliases, yargs))\n : this.applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, builderResult.innerArgv, currentContext, helpOnly, builderResult.aliases, yargs);\n }\n applyBuilderUpdateUsageAndParse(isDefaultCommand, commandHandler, yargs, aliases, parentCommands, commandIndex, helpOnly, helpOrVersionSet) {\n const builder = commandHandler.builder;\n let innerYargs = yargs;\n if (isCommandBuilderCallback(builder)) {\n yargs.getInternalMethods().getUsageInstance().freeze();\n const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet);\n if (isPromise(builderOutput)) {\n return builderOutput.then(output => {\n innerYargs = isYargsInstance(output) ? output : yargs;\n return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly);\n });\n }\n }\n else if (isCommandBuilderOptionDefinitions(builder)) {\n yargs.getInternalMethods().getUsageInstance().freeze();\n innerYargs = yargs.getInternalMethods().reset(aliases);\n Object.keys(commandHandler.builder).forEach(key => {\n innerYargs.option(key, builder[key]);\n });\n }\n return this.parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly);\n }\n parseAndUpdateUsage(isDefaultCommand, commandHandler, innerYargs, parentCommands, commandIndex, helpOnly) {\n if (isDefaultCommand)\n innerYargs.getInternalMethods().getUsageInstance().unfreeze(true);\n if (this.shouldUpdateUsage(innerYargs)) {\n innerYargs\n .getInternalMethods()\n .getUsageInstance()\n .usage(this.usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description);\n }\n const innerArgv = innerYargs\n .getInternalMethods()\n .runYargsParserAndExecuteCommands(null, undefined, true, commandIndex, helpOnly);\n return isPromise(innerArgv)\n ? innerArgv.then(argv => ({\n aliases: innerYargs.parsed.aliases,\n innerArgv: argv,\n }))\n : {\n aliases: innerYargs.parsed.aliases,\n innerArgv: innerArgv,\n };\n }\n shouldUpdateUsage(yargs) {\n return (!yargs.getInternalMethods().getUsageInstance().getUsageDisabled() &&\n yargs.getInternalMethods().getUsageInstance().getUsage().length === 0);\n }\n usageFromParentCommandsCommandHandler(parentCommands, commandHandler) {\n const c = DEFAULT_MARKER.test(commandHandler.original)\n ? commandHandler.original.replace(DEFAULT_MARKER, '').trim()\n : commandHandler.original;\n const pc = parentCommands.filter(c => {\n return !DEFAULT_MARKER.test(c);\n });\n pc.push(c);\n return `$0 ${pc.join(' ')}`;\n }\n handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) {\n if (!yargs.getInternalMethods().getHasOutput()) {\n const validation = yargs\n .getInternalMethods()\n .runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand);\n innerArgv = maybeAsyncResult(innerArgv, result => {\n validation(result);\n return result;\n });\n }\n if (commandHandler.handler && !yargs.getInternalMethods().getHasOutput()) {\n yargs.getInternalMethods().setHasOutput();\n const populateDoubleDash = !!yargs.getOptions().configuration['populate--'];\n yargs\n .getInternalMethods()\n .postProcess(innerArgv, populateDoubleDash, false, false);\n innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false);\n innerArgv = maybeAsyncResult(innerArgv, result => {\n const handlerResult = commandHandler.handler(result);\n return isPromise(handlerResult)\n ? handlerResult.then(() => result)\n : result;\n });\n if (!isDefaultCommand) {\n yargs.getInternalMethods().getUsageInstance().cacheHelpMessage();\n }\n if (isPromise(innerArgv) &&\n !yargs.getInternalMethods().hasParseCallback()) {\n innerArgv.catch(error => {\n try {\n yargs.getInternalMethods().getUsageInstance().fail(null, error);\n }\n catch (_err) {\n }\n });\n }\n }\n if (!isDefaultCommand) {\n currentContext.commands.pop();\n currentContext.fullCommands.pop();\n }\n return innerArgv;\n }\n applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) {\n let positionalMap = {};\n if (helpOnly)\n return innerArgv;\n if (!yargs.getInternalMethods().getHasOutput()) {\n positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs);\n }\n const middlewares = this.globalMiddleware\n .getMiddleware()\n .slice(0)\n .concat(commandHandler.middlewares);\n const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true);\n return isPromise(maybePromiseArgv)\n ? maybePromiseArgv.then(resolvedInnerArgv => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap))\n : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap);\n }\n populatePositionals(commandHandler, argv, context, yargs) {\n argv._ = argv._.slice(context.commands.length);\n const demanded = commandHandler.demanded.slice(0);\n const optional = commandHandler.optional.slice(0);\n const positionalMap = {};\n this.validation.positionalCount(demanded.length, argv._.length);\n while (demanded.length) {\n const demand = demanded.shift();\n this.populatePositional(demand, argv, positionalMap);\n }\n while (optional.length) {\n const maybe = optional.shift();\n this.populatePositional(maybe, argv, positionalMap);\n }\n argv._ = context.commands.concat(argv._.map(a => '' + a));\n this.postProcessPositionals(argv, positionalMap, this.cmdToParseOptions(commandHandler.original), yargs);\n return positionalMap;\n }\n populatePositional(positional, argv, positionalMap) {\n const cmd = positional.cmd[0];\n if (positional.variadic) {\n positionalMap[cmd] = argv._.splice(0).map(String);\n }\n else {\n if (argv._.length)\n positionalMap[cmd] = [String(argv._.shift())];\n }\n }\n cmdToParseOptions(cmdString) {\n const parseOptions = {\n array: [],\n default: {},\n alias: {},\n demand: {},\n };\n const parsed = parseCommand(cmdString);\n parsed.demanded.forEach(d => {\n const [cmd, ...aliases] = d.cmd;\n if (d.variadic) {\n parseOptions.array.push(cmd);\n parseOptions.default[cmd] = [];\n }\n parseOptions.alias[cmd] = aliases;\n parseOptions.demand[cmd] = true;\n });\n parsed.optional.forEach(o => {\n const [cmd, ...aliases] = o.cmd;\n if (o.variadic) {\n parseOptions.array.push(cmd);\n parseOptions.default[cmd] = [];\n }\n parseOptions.alias[cmd] = aliases;\n });\n return parseOptions;\n }\n postProcessPositionals(argv, positionalMap, parseOptions, yargs) {\n const options = Object.assign({}, yargs.getOptions());\n options.default = Object.assign(parseOptions.default, options.default);\n for (const key of Object.keys(parseOptions.alias)) {\n options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]);\n }\n options.array = options.array.concat(parseOptions.array);\n options.config = {};\n const unparsed = [];\n Object.keys(positionalMap).forEach(key => {\n positionalMap[key].map(value => {\n if (options.configuration['unknown-options-as-args'])\n options.key[key] = true;\n unparsed.push(`--${key}`);\n unparsed.push(value);\n });\n });\n if (!unparsed.length)\n return;\n const config = Object.assign({}, options.configuration, {\n 'populate--': false,\n });\n const parsed = this.shim.Parser.detailed(unparsed, Object.assign({}, options, {\n configuration: config,\n }));\n if (parsed.error) {\n yargs\n .getInternalMethods()\n .getUsageInstance()\n .fail(parsed.error.message, parsed.error);\n }\n else {\n const positionalKeys = Object.keys(positionalMap);\n Object.keys(positionalMap).forEach(key => {\n positionalKeys.push(...parsed.aliases[key]);\n });\n Object.keys(parsed.argv).forEach(key => {\n if (positionalKeys.includes(key)) {\n if (!positionalMap[key])\n positionalMap[key] = parsed.argv[key];\n if (!this.isInConfigs(yargs, key) &&\n !this.isDefaulted(yargs, key) &&\n Object.prototype.hasOwnProperty.call(argv, key) &&\n Object.prototype.hasOwnProperty.call(parsed.argv, key) &&\n (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) {\n argv[key] = [].concat(argv[key], parsed.argv[key]);\n }\n else {\n argv[key] = parsed.argv[key];\n }\n }\n });\n }\n }\n isDefaulted(yargs, key) {\n const { default: defaults } = yargs.getOptions();\n return (Object.prototype.hasOwnProperty.call(defaults, key) ||\n Object.prototype.hasOwnProperty.call(defaults, this.shim.Parser.camelCase(key)));\n }\n isInConfigs(yargs, key) {\n const { configObjects } = yargs.getOptions();\n return (configObjects.some(c => Object.prototype.hasOwnProperty.call(c, key)) ||\n configObjects.some(c => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key))));\n }\n runDefaultBuilderOn(yargs) {\n if (!this.defaultCommand)\n return;\n if (this.shouldUpdateUsage(yargs)) {\n const commandString = DEFAULT_MARKER.test(this.defaultCommand.original)\n ? this.defaultCommand.original\n : this.defaultCommand.original.replace(/^[^[\\]<>]*/, '$0 ');\n yargs\n .getInternalMethods()\n .getUsageInstance()\n .usage(commandString, this.defaultCommand.description);\n }\n const builder = this.defaultCommand.builder;\n if (isCommandBuilderCallback(builder)) {\n return builder(yargs, true);\n }\n else if (!isCommandBuilderDefinition(builder)) {\n Object.keys(builder).forEach(key => {\n yargs.option(key, builder[key]);\n });\n }\n return undefined;\n }\n extractDesc({ describe, description, desc }) {\n for (const test of [describe, description, desc]) {\n if (typeof test === 'string' || test === false)\n return test;\n assertNotStrictEqual(test, true, this.shim);\n }\n return false;\n }\n freeze() {\n this.frozens.push({\n handlers: this.handlers,\n aliasMap: this.aliasMap,\n defaultCommand: this.defaultCommand,\n });\n }\n unfreeze() {\n const frozen = this.frozens.pop();\n assertNotStrictEqual(frozen, undefined, this.shim);\n ({\n handlers: this.handlers,\n aliasMap: this.aliasMap,\n defaultCommand: this.defaultCommand,\n } = frozen);\n }\n reset() {\n this.handlers = {};\n this.aliasMap = {};\n this.defaultCommand = undefined;\n this.requireCache = new Set();\n return this;\n }\n}\nexport function command(usage, validation, globalMiddleware, shim) {\n return new CommandInstance(usage, validation, globalMiddleware, shim);\n}\nexport function isCommandBuilderDefinition(builder) {\n return (typeof builder === 'object' &&\n !!builder.builder &&\n typeof builder.handler === 'function');\n}\nfunction isCommandAndAliases(cmd) {\n return cmd.every(c => typeof c === 'string');\n}\nexport function isCommandBuilderCallback(builder) {\n return typeof builder === 'function';\n}\nfunction isCommandBuilderOptionDefinitions(builder) {\n return typeof builder === 'object';\n}\nexport function isCommandHandlerDefinition(cmd) {\n return typeof cmd === 'object' && !Array.isArray(cmd);\n}\n","import { objectKeys } from '../typings/common-types.js';\nexport function objFilter(original = {}, filter = () => true) {\n const obj = {};\n objectKeys(original).forEach(key => {\n if (filter(key, original[key])) {\n obj[key] = original[key];\n }\n });\n return obj;\n}\n","export default function setBlocking(blocking) {\n if (typeof process === 'undefined')\n return;\n [process.stdout, process.stderr].forEach(_stream => {\n const stream = _stream;\n if (stream._handle &&\n stream.isTTY &&\n typeof stream._handle.setBlocking === 'function') {\n stream._handle.setBlocking(blocking);\n }\n });\n}\n","import { objFilter } from './utils/obj-filter.js';\nimport { YError } from './yerror.js';\nimport setBlocking from './utils/set-blocking.js';\nfunction isBoolean(fail) {\n return typeof fail === 'boolean';\n}\nexport function usage(yargs, shim) {\n const __ = shim.y18n.__;\n const self = {};\n const fails = [];\n self.failFn = function failFn(f) {\n fails.push(f);\n };\n let failMessage = null;\n let globalFailMessage = null;\n let showHelpOnFail = true;\n self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) {\n const [enabled, message] = typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2];\n if (yargs.getInternalMethods().isGlobalContext()) {\n globalFailMessage = message;\n }\n failMessage = message;\n showHelpOnFail = enabled;\n return self;\n };\n let failureOutput = false;\n self.fail = function fail(msg, err) {\n const logger = yargs.getInternalMethods().getLoggerInstance();\n if (fails.length) {\n for (let i = fails.length - 1; i >= 0; --i) {\n const fail = fails[i];\n if (isBoolean(fail)) {\n if (err)\n throw err;\n else if (msg)\n throw Error(msg);\n }\n else {\n fail(msg, err, self);\n }\n }\n }\n else {\n if (yargs.getExitProcess())\n setBlocking(true);\n if (!failureOutput) {\n failureOutput = true;\n if (showHelpOnFail) {\n yargs.showHelp('error');\n logger.error();\n }\n if (msg || err)\n logger.error(msg || err);\n const globalOrCommandFailMessage = failMessage || globalFailMessage;\n if (globalOrCommandFailMessage) {\n if (msg || err)\n logger.error('');\n logger.error(globalOrCommandFailMessage);\n }\n }\n err = err || new YError(msg);\n if (yargs.getExitProcess()) {\n return yargs.exit(1);\n }\n else if (yargs.getInternalMethods().hasParseCallback()) {\n return yargs.exit(1, err);\n }\n else {\n throw err;\n }\n }\n };\n let usages = [];\n let usageDisabled = false;\n self.usage = (msg, description) => {\n if (msg === null) {\n usageDisabled = true;\n usages = [];\n return self;\n }\n usageDisabled = false;\n usages.push([msg, description || '']);\n return self;\n };\n self.getUsage = () => {\n return usages;\n };\n self.getUsageDisabled = () => {\n return usageDisabled;\n };\n self.getPositionalGroupName = () => {\n return __('Positionals:');\n };\n let examples = [];\n self.example = (cmd, description) => {\n examples.push([cmd, description || '']);\n };\n let commands = [];\n self.command = function command(cmd, description, isDefault, aliases, deprecated = false) {\n if (isDefault) {\n commands = commands.map(cmdArray => {\n cmdArray[2] = false;\n return cmdArray;\n });\n }\n commands.push([cmd, description || '', isDefault, aliases, deprecated]);\n };\n self.getCommands = () => commands;\n let descriptions = {};\n self.describe = function describe(keyOrKeys, desc) {\n if (Array.isArray(keyOrKeys)) {\n keyOrKeys.forEach(k => {\n self.describe(k, desc);\n });\n }\n else if (typeof keyOrKeys === 'object') {\n Object.keys(keyOrKeys).forEach(k => {\n self.describe(k, keyOrKeys[k]);\n });\n }\n else {\n descriptions[keyOrKeys] = desc;\n }\n };\n self.getDescriptions = () => descriptions;\n let epilogs = [];\n self.epilog = msg => {\n epilogs.push(msg);\n };\n let wrapSet = false;\n let wrap;\n self.wrap = cols => {\n wrapSet = true;\n wrap = cols;\n };\n self.getWrap = () => {\n if (shim.getEnv('YARGS_DISABLE_WRAP')) {\n return null;\n }\n if (!wrapSet) {\n wrap = windowWidth();\n wrapSet = true;\n }\n return wrap;\n };\n const deferY18nLookupPrefix = '__yargsString__:';\n self.deferY18nLookup = str => deferY18nLookupPrefix + str;\n self.help = function help() {\n if (cachedHelpMessage)\n return cachedHelpMessage;\n normalizeAliases();\n const base$0 = yargs.customScriptName\n ? yargs.$0\n : shim.path.basename(yargs.$0);\n const demandedOptions = yargs.getDemandedOptions();\n const demandedCommands = yargs.getDemandedCommands();\n const deprecatedOptions = yargs.getDeprecatedOptions();\n const groups = yargs.getGroups();\n const options = yargs.getOptions();\n let keys = [];\n keys = keys.concat(Object.keys(descriptions));\n keys = keys.concat(Object.keys(demandedOptions));\n keys = keys.concat(Object.keys(demandedCommands));\n keys = keys.concat(Object.keys(options.default));\n keys = keys.filter(filterHiddenOptions);\n keys = Object.keys(keys.reduce((acc, key) => {\n if (key !== '_')\n acc[key] = true;\n return acc;\n }, {}));\n const theWrap = self.getWrap();\n const ui = shim.cliui({\n width: theWrap,\n wrap: !!theWrap,\n });\n if (!usageDisabled) {\n if (usages.length) {\n usages.forEach(usage => {\n ui.div({ text: `${usage[0].replace(/\\$0/g, base$0)}` });\n if (usage[1]) {\n ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] });\n }\n });\n ui.div();\n }\n else if (commands.length) {\n let u = null;\n if (demandedCommands._) {\n u = `${base$0} <${__('command')}>\\n`;\n }\n else {\n u = `${base$0} [${__('command')}]\\n`;\n }\n ui.div(`${u}`);\n }\n }\n if (commands.length > 1 || (commands.length === 1 && !commands[0][2])) {\n ui.div(__('Commands:'));\n const context = yargs.getInternalMethods().getContext();\n const parentCommands = context.commands.length\n ? `${context.commands.join(' ')} `\n : '';\n if (yargs.getInternalMethods().getParserConfiguration()['sort-commands'] ===\n true) {\n commands = commands.sort((a, b) => a[0].localeCompare(b[0]));\n }\n const prefix = base$0 ? `${base$0} ` : '';\n commands.forEach(command => {\n const commandString = `${prefix}${parentCommands}${command[0].replace(/^\\$0 ?/, '')}`;\n ui.span({\n text: commandString,\n padding: [0, 2, 0, 2],\n width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4,\n }, { text: command[1] });\n const hints = [];\n if (command[2])\n hints.push(`[${__('default')}]`);\n if (command[3] && command[3].length) {\n hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`);\n }\n if (command[4]) {\n if (typeof command[4] === 'string') {\n hints.push(`[${__('deprecated: %s', command[4])}]`);\n }\n else {\n hints.push(`[${__('deprecated')}]`);\n }\n }\n if (hints.length) {\n ui.div({\n text: hints.join(' '),\n padding: [0, 0, 0, 2],\n align: 'right',\n });\n }\n else {\n ui.div();\n }\n });\n ui.div();\n }\n const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []);\n keys = keys.filter(key => !yargs.parsed.newAliases[key] &&\n aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1));\n const defaultGroup = __('Options:');\n if (!groups[defaultGroup])\n groups[defaultGroup] = [];\n addUngroupedKeys(keys, options.alias, groups, defaultGroup);\n const isLongSwitch = (sw) => /^--/.test(getText(sw));\n const displayedGroups = Object.keys(groups)\n .filter(groupName => groups[groupName].length > 0)\n .map(groupName => {\n const normalizedKeys = groups[groupName]\n .filter(filterHiddenOptions)\n .map(key => {\n if (aliasKeys.includes(key))\n return key;\n for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) {\n if ((options.alias[aliasKey] || []).includes(key))\n return aliasKey;\n }\n return key;\n });\n return { groupName, normalizedKeys };\n })\n .filter(({ normalizedKeys }) => normalizedKeys.length > 0)\n .map(({ groupName, normalizedKeys }) => {\n const switches = normalizedKeys.reduce((acc, key) => {\n acc[key] = [key]\n .concat(options.alias[key] || [])\n .map(sw => {\n if (groupName === self.getPositionalGroupName())\n return sw;\n else {\n return ((/^[0-9]$/.test(sw)\n ? options.boolean.includes(key)\n ? '-'\n : '--'\n : sw.length > 1\n ? '--'\n : '-') + sw);\n }\n })\n .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2)\n ? 0\n : isLongSwitch(sw1)\n ? 1\n : -1)\n .join(', ');\n return acc;\n }, {});\n return { groupName, normalizedKeys, switches };\n });\n const shortSwitchesUsed = displayedGroups\n .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key])));\n if (shortSwitchesUsed) {\n displayedGroups\n .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n .forEach(({ normalizedKeys, switches }) => {\n normalizedKeys.forEach(key => {\n if (isLongSwitch(switches[key])) {\n switches[key] = addIndentation(switches[key], '-x, '.length);\n }\n });\n });\n }\n displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => {\n ui.div(groupName);\n normalizedKeys.forEach(key => {\n const kswitch = switches[key];\n let desc = descriptions[key] || '';\n let type = null;\n if (desc.includes(deferY18nLookupPrefix))\n desc = __(desc.substring(deferY18nLookupPrefix.length));\n if (options.boolean.includes(key))\n type = `[${__('boolean')}]`;\n if (options.count.includes(key))\n type = `[${__('count')}]`;\n if (options.string.includes(key))\n type = `[${__('string')}]`;\n if (options.normalize.includes(key))\n type = `[${__('string')}]`;\n if (options.array.includes(key))\n type = `[${__('array')}]`;\n if (options.number.includes(key))\n type = `[${__('number')}]`;\n const deprecatedExtra = (deprecated) => typeof deprecated === 'string'\n ? `[${__('deprecated: %s', deprecated)}]`\n : `[${__('deprecated')}]`;\n const extra = [\n key in deprecatedOptions\n ? deprecatedExtra(deprecatedOptions[key])\n : null,\n type,\n key in demandedOptions ? `[${__('required')}]` : null,\n options.choices && options.choices[key]\n ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]`\n : null,\n defaultString(options.default[key], options.defaultDescription[key]),\n ]\n .filter(Boolean)\n .join(' ');\n ui.span({\n text: getText(kswitch),\n padding: [0, 2, 0, 2 + getIndentation(kswitch)],\n width: maxWidth(switches, theWrap) + 4,\n }, desc);\n const shouldHideOptionExtras = yargs.getInternalMethods().getUsageConfiguration()['hide-types'] ===\n true;\n if (extra && !shouldHideOptionExtras)\n ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' });\n else\n ui.div();\n });\n ui.div();\n });\n if (examples.length) {\n ui.div(__('Examples:'));\n examples.forEach(example => {\n example[0] = example[0].replace(/\\$0/g, base$0);\n });\n examples.forEach(example => {\n if (example[1] === '') {\n ui.div({\n text: example[0],\n padding: [0, 2, 0, 2],\n });\n }\n else {\n ui.div({\n text: example[0],\n padding: [0, 2, 0, 2],\n width: maxWidth(examples, theWrap) + 4,\n }, {\n text: example[1],\n });\n }\n });\n ui.div();\n }\n if (epilogs.length > 0) {\n const e = epilogs\n .map(epilog => epilog.replace(/\\$0/g, base$0))\n .join('\\n');\n ui.div(`${e}\\n`);\n }\n return ui.toString().replace(/\\s*$/, '');\n };\n function maxWidth(table, theWrap, modifier) {\n let width = 0;\n if (!Array.isArray(table)) {\n table = Object.values(table).map(v => [v]);\n }\n table.forEach(v => {\n width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width);\n });\n if (theWrap)\n width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10));\n return width;\n }\n function normalizeAliases() {\n const demandedOptions = yargs.getDemandedOptions();\n const options = yargs.getOptions();\n (Object.keys(options.alias) || []).forEach(key => {\n options.alias[key].forEach(alias => {\n if (descriptions[alias])\n self.describe(key, descriptions[alias]);\n if (alias in demandedOptions)\n yargs.demandOption(key, demandedOptions[alias]);\n if (options.boolean.includes(alias))\n yargs.boolean(key);\n if (options.count.includes(alias))\n yargs.count(key);\n if (options.string.includes(alias))\n yargs.string(key);\n if (options.normalize.includes(alias))\n yargs.normalize(key);\n if (options.array.includes(alias))\n yargs.array(key);\n if (options.number.includes(alias))\n yargs.number(key);\n });\n });\n }\n let cachedHelpMessage;\n self.cacheHelpMessage = function () {\n cachedHelpMessage = this.help();\n };\n self.clearCachedHelpMessage = function () {\n cachedHelpMessage = undefined;\n };\n self.hasCachedHelpMessage = function () {\n return !!cachedHelpMessage;\n };\n function addUngroupedKeys(keys, aliases, groups, defaultGroup) {\n let groupedKeys = [];\n let toCheck = null;\n Object.keys(groups).forEach(group => {\n groupedKeys = groupedKeys.concat(groups[group]);\n });\n keys.forEach(key => {\n toCheck = [key].concat(aliases[key]);\n if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) {\n groups[defaultGroup].push(key);\n }\n });\n return groupedKeys;\n }\n function filterHiddenOptions(key) {\n return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 ||\n yargs.parsed.argv[yargs.getOptions().showHiddenOpt]);\n }\n self.showHelp = (level) => {\n const logger = yargs.getInternalMethods().getLoggerInstance();\n if (!level)\n level = 'error';\n const emit = typeof level === 'function' ? level : logger[level];\n emit(self.help());\n };\n self.functionDescription = fn => {\n const description = fn.name\n ? shim.Parser.decamelize(fn.name, '-')\n : __('generated-value');\n return ['(', description, ')'].join('');\n };\n self.stringifiedValues = function stringifiedValues(values, separator) {\n let string = '';\n const sep = separator || ', ';\n const array = [].concat(values);\n if (!values || !array.length)\n return string;\n array.forEach(value => {\n if (string.length)\n string += sep;\n string += JSON.stringify(value);\n });\n return string;\n };\n function defaultString(value, defaultDescription) {\n let string = `[${__('default:')} `;\n if (value === undefined && !defaultDescription)\n return null;\n if (defaultDescription) {\n string += defaultDescription;\n }\n else {\n switch (typeof value) {\n case 'string':\n string += `\"${value}\"`;\n break;\n case 'object':\n string += JSON.stringify(value);\n break;\n default:\n string += value;\n }\n }\n return `${string}]`;\n }\n function windowWidth() {\n const maxWidth = 80;\n if (shim.process.stdColumns) {\n return Math.min(maxWidth, shim.process.stdColumns);\n }\n else {\n return maxWidth;\n }\n }\n let version = null;\n self.version = ver => {\n version = ver;\n };\n self.showVersion = level => {\n const logger = yargs.getInternalMethods().getLoggerInstance();\n if (!level)\n level = 'error';\n const emit = typeof level === 'function' ? level : logger[level];\n emit(version);\n };\n self.reset = function reset(localLookup) {\n failMessage = null;\n failureOutput = false;\n usages = [];\n usageDisabled = false;\n epilogs = [];\n examples = [];\n commands = [];\n descriptions = objFilter(descriptions, k => !localLookup[k]);\n return self;\n };\n const frozens = [];\n self.freeze = function freeze() {\n frozens.push({\n failMessage,\n failureOutput,\n usages,\n usageDisabled,\n epilogs,\n examples,\n commands,\n descriptions,\n });\n };\n self.unfreeze = function unfreeze(defaultCommand = false) {\n const frozen = frozens.pop();\n if (!frozen)\n return;\n if (defaultCommand) {\n descriptions = { ...frozen.descriptions, ...descriptions };\n commands = [...frozen.commands, ...commands];\n usages = [...frozen.usages, ...usages];\n examples = [...frozen.examples, ...examples];\n epilogs = [...frozen.epilogs, ...epilogs];\n }\n else {\n ({\n failMessage,\n failureOutput,\n usages,\n usageDisabled,\n epilogs,\n examples,\n commands,\n descriptions,\n } = frozen);\n }\n };\n return self;\n}\nfunction isIndentedText(text) {\n return typeof text === 'object';\n}\nfunction addIndentation(text, indent) {\n return isIndentedText(text)\n ? { text: text.text, indentation: text.indentation + indent }\n : { text, indentation: indent };\n}\nfunction getIndentation(text) {\n return isIndentedText(text) ? text.indentation : 0;\n}\nfunction getText(text) {\n return isIndentedText(text) ? text.text : text;\n}\n","export const completionShTemplate = `###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc\n# or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n local cur_word args type_list\n\n cur_word=\"\\${COMP_WORDS[COMP_CWORD]}\"\n args=(\"\\${COMP_WORDS[@]}\")\n\n # ask yargs to generate completions.\n # see https://stackoverflow.com/a/40944195/7080036 for the spaces-handling awk\n mapfile -t type_list < <({{app_path}} --get-yargs-completions \"\\${args[@]}\")\n mapfile -t COMPREPLY < <(compgen -W \"$( printf '%q ' \"\\${type_list[@]}\" )\" -- \"\\${cur_word}\" |\n awk '/ / { print \"\\\\\"\"$0\"\\\\\"\" } /^[^ ]+$/ { print $0 }')\n\n # if no match was found, fall back to filename completion\n if [ \\${#COMPREPLY[@]} -eq 0 ]; then\n COMPREPLY=()\n fi\n\n return 0\n}\ncomplete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;\nexport const completionZshTemplate = `#compdef {{app_name}}\n###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc\n# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n local reply\n local si=$IFS\n IFS=$'\\n' reply=($(COMP_CWORD=\"$((CURRENT-1))\" COMP_LINE=\"$BUFFER\" COMP_POINT=\"$CURSOR\" {{app_path}} --get-yargs-completions \"\\${words[@]}\"))\n IFS=$si\n if [[ \\${#reply} -gt 0 ]]; then\n _describe 'values' reply\n else\n _default\n fi\n}\nif [[ \"'\\${zsh_eval_context[-1]}\" == \"loadautofunc\" ]]; then\n _{{app_name}}_yargs_completions \"$@\"\nelse\n compdef _{{app_name}}_yargs_completions {{app_name}}\nfi\n###-end-{{app_name}}-completions-###\n`;\n","import { isCommandBuilderCallback } from './command.js';\nimport { assertNotStrictEqual } from './typings/common-types.js';\nimport * as templates from './completion-templates.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { parseCommand } from './parse-command.js';\nexport class Completion {\n constructor(yargs, usage, command, shim) {\n var _a, _b, _c;\n this.yargs = yargs;\n this.usage = usage;\n this.command = command;\n this.shim = shim;\n this.completionKey = 'get-yargs-completions';\n this.aliases = null;\n this.customCompletionFunction = null;\n this.indexAfterLastReset = 0;\n this.zshShell =\n (_c = (((_a = this.shim.getEnv('SHELL')) === null || _a === void 0 ? void 0 : _a.includes('zsh')) ||\n ((_b = this.shim.getEnv('ZSH_NAME')) === null || _b === void 0 ? void 0 : _b.includes('zsh')))) !== null && _c !== void 0 ? _c : false;\n }\n defaultCompletion(args, argv, current, done) {\n const handlers = this.command.getCommandHandlers();\n for (let i = 0, ii = args.length; i < ii; ++i) {\n if (handlers[args[i]] && handlers[args[i]].builder) {\n const builder = handlers[args[i]].builder;\n if (isCommandBuilderCallback(builder)) {\n this.indexAfterLastReset = i + 1;\n const y = this.yargs.getInternalMethods().reset();\n builder(y, true);\n return y.argv;\n }\n }\n }\n const completions = [];\n this.commandCompletions(completions, args, current);\n this.optionCompletions(completions, args, argv, current);\n this.choicesFromOptionsCompletions(completions, args, argv, current);\n this.choicesFromPositionalsCompletions(completions, args, argv, current);\n done(null, completions);\n }\n commandCompletions(completions, args, current) {\n const parentCommands = this.yargs\n .getInternalMethods()\n .getContext().commands;\n if (!current.match(/^-/) &&\n parentCommands[parentCommands.length - 1] !== current &&\n !this.previousArgHasChoices(args)) {\n this.usage.getCommands().forEach(usageCommand => {\n const commandName = parseCommand(usageCommand[0]).cmd;\n if (args.indexOf(commandName) === -1) {\n if (!this.zshShell) {\n completions.push(commandName);\n }\n else {\n const desc = usageCommand[1] || '';\n completions.push(commandName.replace(/:/g, '\\\\:') + ':' + desc);\n }\n }\n });\n }\n }\n optionCompletions(completions, args, argv, current) {\n if ((current.match(/^-/) || (current === '' && completions.length === 0)) &&\n !this.previousArgHasChoices(args)) {\n const options = this.yargs.getOptions();\n const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || [];\n Object.keys(options.key).forEach(key => {\n const negable = !!options.configuration['boolean-negation'] &&\n options.boolean.includes(key);\n const isPositionalKey = positionalKeys.includes(key);\n if (!isPositionalKey &&\n !options.hiddenOptions.includes(key) &&\n !this.argsContainKey(args, key, negable)) {\n this.completeOptionKey(key, completions, current, negable && !!options.default[key]);\n }\n });\n }\n }\n choicesFromOptionsCompletions(completions, args, argv, current) {\n if (this.previousArgHasChoices(args)) {\n const choices = this.getPreviousArgChoices(args);\n if (choices && choices.length > 0) {\n completions.push(...choices.map(c => c.replace(/:/g, '\\\\:')));\n }\n }\n }\n choicesFromPositionalsCompletions(completions, args, argv, current) {\n if (current === '' &&\n completions.length > 0 &&\n this.previousArgHasChoices(args)) {\n return;\n }\n const positionalKeys = this.yargs.getGroups()[this.usage.getPositionalGroupName()] || [];\n const offset = Math.max(this.indexAfterLastReset, this.yargs.getInternalMethods().getContext().commands.length +\n 1);\n const positionalKey = positionalKeys[argv._.length - offset - 1];\n if (!positionalKey) {\n return;\n }\n const choices = this.yargs.getOptions().choices[positionalKey] || [];\n for (const choice of choices) {\n if (choice.startsWith(current)) {\n completions.push(choice.replace(/:/g, '\\\\:'));\n }\n }\n }\n getPreviousArgChoices(args) {\n if (args.length < 1)\n return;\n let previousArg = args[args.length - 1];\n let filter = '';\n if (!previousArg.startsWith('-') && args.length > 1) {\n filter = previousArg;\n previousArg = args[args.length - 2];\n }\n if (!previousArg.startsWith('-'))\n return;\n const previousArgKey = previousArg.replace(/^-+/, '');\n const options = this.yargs.getOptions();\n const possibleAliases = [\n previousArgKey,\n ...(this.yargs.getAliases()[previousArgKey] || []),\n ];\n let choices;\n for (const possibleAlias of possibleAliases) {\n if (Object.prototype.hasOwnProperty.call(options.key, possibleAlias) &&\n Array.isArray(options.choices[possibleAlias])) {\n choices = options.choices[possibleAlias];\n break;\n }\n }\n if (choices) {\n return choices.filter(choice => !filter || choice.startsWith(filter));\n }\n }\n previousArgHasChoices(args) {\n const choices = this.getPreviousArgChoices(args);\n return choices !== undefined && choices.length > 0;\n }\n argsContainKey(args, key, negable) {\n const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? '-' : '--') + s) !== -1;\n if (argsContains(key))\n return true;\n if (negable && argsContains(`no-${key}`))\n return true;\n if (this.aliases) {\n for (const alias of this.aliases[key]) {\n if (argsContains(alias))\n return true;\n }\n }\n return false;\n }\n completeOptionKey(key, completions, current, negable) {\n var _a, _b, _c, _d;\n let keyWithDesc = key;\n if (this.zshShell) {\n const descs = this.usage.getDescriptions();\n const aliasKey = (_b = (_a = this === null || this === void 0 ? void 0 : this.aliases) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.find(alias => {\n const desc = descs[alias];\n return typeof desc === 'string' && desc.length > 0;\n });\n const descFromAlias = aliasKey ? descs[aliasKey] : undefined;\n const desc = (_d = (_c = descs[key]) !== null && _c !== void 0 ? _c : descFromAlias) !== null && _d !== void 0 ? _d : '';\n keyWithDesc = `${key.replace(/:/g, '\\\\:')}:${desc\n .replace('__yargsString__:', '')\n .replace(/(\\r\\n|\\n|\\r)/gm, ' ')}`;\n }\n const startsByTwoDashes = (s) => /^--/.test(s);\n const isShortOption = (s) => /^[^0-9]$/.test(s);\n const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--';\n completions.push(dashes + keyWithDesc);\n if (negable) {\n completions.push(dashes + 'no-' + keyWithDesc);\n }\n }\n customCompletion(args, argv, current, done) {\n assertNotStrictEqual(this.customCompletionFunction, null, this.shim);\n if (isSyncCompletionFunction(this.customCompletionFunction)) {\n const result = this.customCompletionFunction(current, argv);\n if (isPromise(result)) {\n return result\n .then(list => {\n this.shim.process.nextTick(() => {\n done(null, list);\n });\n })\n .catch(err => {\n this.shim.process.nextTick(() => {\n done(err, undefined);\n });\n });\n }\n return done(null, result);\n }\n else if (isFallbackCompletionFunction(this.customCompletionFunction)) {\n return this.customCompletionFunction(current, argv, (onCompleted = done) => this.defaultCompletion(args, argv, current, onCompleted), completions => {\n done(null, completions);\n });\n }\n else {\n return this.customCompletionFunction(current, argv, completions => {\n done(null, completions);\n });\n }\n }\n getCompletion(args, done) {\n const current = args.length ? args[args.length - 1] : '';\n const argv = this.yargs.parse(args, true);\n const completionFunction = this.customCompletionFunction\n ? (argv) => this.customCompletion(args, argv, current, done)\n : (argv) => this.defaultCompletion(args, argv, current, done);\n return isPromise(argv)\n ? argv.then(completionFunction)\n : completionFunction(argv);\n }\n generateCompletionScript($0, cmd) {\n let script = this.zshShell\n ? templates.completionZshTemplate\n : templates.completionShTemplate;\n const name = this.shim.path.basename($0);\n if ($0.match(/\\.js$/))\n $0 = `./${$0}`;\n script = script.replace(/{{app_name}}/g, name);\n script = script.replace(/{{completion_command}}/g, cmd);\n return script.replace(/{{app_path}}/g, $0);\n }\n registerFunction(fn) {\n this.customCompletionFunction = fn;\n }\n setParsed(parsed) {\n this.aliases = parsed.aliases;\n }\n}\nexport function completion(yargs, usage, command, shim) {\n return new Completion(yargs, usage, command, shim);\n}\nfunction isSyncCompletionFunction(completionFunction) {\n return completionFunction.length < 3;\n}\nfunction isFallbackCompletionFunction(completionFunction) {\n return completionFunction.length > 3;\n}\n","export function levenshtein(a, b) {\n if (a.length === 0)\n return b.length;\n if (b.length === 0)\n return a.length;\n const matrix = [];\n let i;\n for (i = 0; i <= b.length; i++) {\n matrix[i] = [i];\n }\n let j;\n for (j = 0; j <= a.length; j++) {\n matrix[0][j] = j;\n }\n for (i = 1; i <= b.length; i++) {\n for (j = 1; j <= a.length; j++) {\n if (b.charAt(i - 1) === a.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n }\n else {\n if (i > 1 &&\n j > 1 &&\n b.charAt(i - 2) === a.charAt(j - 1) &&\n b.charAt(i - 1) === a.charAt(j - 2)) {\n matrix[i][j] = matrix[i - 2][j - 2] + 1;\n }\n else {\n matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));\n }\n }\n }\n }\n return matrix[b.length][a.length];\n}\n","import { argsert } from './argsert.js';\nimport { assertNotStrictEqual, } from './typings/common-types.js';\nimport { levenshtein as distance } from './utils/levenshtein.js';\nimport { objFilter } from './utils/obj-filter.js';\nconst specialKeys = ['$0', '--', '_'];\nexport function validation(yargs, usage, shim) {\n const __ = shim.y18n.__;\n const __n = shim.y18n.__n;\n const self = {};\n self.nonOptionCount = function nonOptionCount(argv) {\n const demandedCommands = yargs.getDemandedCommands();\n const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0);\n const _s = positionalCount - yargs.getInternalMethods().getContext().commands.length;\n if (demandedCommands._ &&\n (_s < demandedCommands._.min || _s > demandedCommands._.max)) {\n if (_s < demandedCommands._.min) {\n if (demandedCommands._.minMsg !== undefined) {\n usage.fail(demandedCommands._.minMsg\n ? demandedCommands._.minMsg\n .replace(/\\$0/g, _s.toString())\n .replace(/\\$1/, demandedCommands._.min.toString())\n : null);\n }\n else {\n usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString()));\n }\n }\n else if (_s > demandedCommands._.max) {\n if (demandedCommands._.maxMsg !== undefined) {\n usage.fail(demandedCommands._.maxMsg\n ? demandedCommands._.maxMsg\n .replace(/\\$0/g, _s.toString())\n .replace(/\\$1/, demandedCommands._.max.toString())\n : null);\n }\n else {\n usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString()));\n }\n }\n }\n };\n self.positionalCount = function positionalCount(required, observed) {\n if (observed < required) {\n usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + ''));\n }\n };\n self.requiredArguments = function requiredArguments(argv, demandedOptions) {\n let missing = null;\n for (const key of Object.keys(demandedOptions)) {\n if (!Object.prototype.hasOwnProperty.call(argv, key) ||\n typeof argv[key] === 'undefined') {\n missing = missing || {};\n missing[key] = demandedOptions[key];\n }\n }\n if (missing) {\n const customMsgs = [];\n for (const key of Object.keys(missing)) {\n const msg = missing[key];\n if (msg && customMsgs.indexOf(msg) < 0) {\n customMsgs.push(msg);\n }\n }\n const customMsg = customMsgs.length ? `\\n${customMsgs.join('\\n')}` : '';\n usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg));\n }\n };\n self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) {\n var _a;\n const commandKeys = yargs\n .getInternalMethods()\n .getCommandInstance()\n .getCommands();\n const unknown = [];\n const currentContext = yargs.getInternalMethods().getContext();\n Object.keys(argv).forEach(key => {\n if (!specialKeys.includes(key) &&\n !Object.prototype.hasOwnProperty.call(positionalMap, key) &&\n !Object.prototype.hasOwnProperty.call(yargs.getInternalMethods().getParseContext(), key) &&\n !self.isValidAndSomeAliasIsNotNew(key, aliases)) {\n unknown.push(key);\n }\n });\n if (checkPositionals &&\n (currentContext.commands.length > 0 ||\n commandKeys.length > 0 ||\n isDefaultCommand)) {\n argv._.slice(currentContext.commands.length).forEach(key => {\n if (!commandKeys.includes('' + key)) {\n unknown.push('' + key);\n }\n });\n }\n if (checkPositionals) {\n const demandedCommands = yargs.getDemandedCommands();\n const maxNonOptDemanded = ((_a = demandedCommands._) === null || _a === void 0 ? void 0 : _a.max) || 0;\n const expected = currentContext.commands.length + maxNonOptDemanded;\n if (expected < argv._.length) {\n argv._.slice(expected).forEach(key => {\n key = String(key);\n if (!currentContext.commands.includes(key) &&\n !unknown.includes(key)) {\n unknown.push(key);\n }\n });\n }\n }\n if (unknown.length) {\n usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.map(s => (s.trim() ? s : `\"${s}\"`)).join(', ')));\n }\n };\n self.unknownCommands = function unknownCommands(argv) {\n const commandKeys = yargs\n .getInternalMethods()\n .getCommandInstance()\n .getCommands();\n const unknown = [];\n const currentContext = yargs.getInternalMethods().getContext();\n if (currentContext.commands.length > 0 || commandKeys.length > 0) {\n argv._.slice(currentContext.commands.length).forEach(key => {\n if (!commandKeys.includes('' + key)) {\n unknown.push('' + key);\n }\n });\n }\n if (unknown.length > 0) {\n usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', ')));\n return true;\n }\n else {\n return false;\n }\n };\n self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) {\n if (!Object.prototype.hasOwnProperty.call(aliases, key)) {\n return false;\n }\n const newAliases = yargs.parsed.newAliases;\n return [key, ...aliases[key]].some(a => !Object.prototype.hasOwnProperty.call(newAliases, a) || !newAliases[key]);\n };\n self.limitedChoices = function limitedChoices(argv) {\n const options = yargs.getOptions();\n const invalid = {};\n if (!Object.keys(options.choices).length)\n return;\n Object.keys(argv).forEach(key => {\n if (specialKeys.indexOf(key) === -1 &&\n Object.prototype.hasOwnProperty.call(options.choices, key)) {\n [].concat(argv[key]).forEach(value => {\n if (options.choices[key].indexOf(value) === -1 &&\n value !== undefined) {\n invalid[key] = (invalid[key] || []).concat(value);\n }\n });\n }\n });\n const invalidKeys = Object.keys(invalid);\n if (!invalidKeys.length)\n return;\n let msg = __('Invalid values:');\n invalidKeys.forEach(key => {\n msg += `\\n ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`;\n });\n usage.fail(msg);\n };\n let implied = {};\n self.implies = function implies(key, value) {\n argsert('<string|object> [array|number|string]', [key, value], arguments.length);\n if (typeof key === 'object') {\n Object.keys(key).forEach(k => {\n self.implies(k, key[k]);\n });\n }\n else {\n yargs.global(key);\n if (!implied[key]) {\n implied[key] = [];\n }\n if (Array.isArray(value)) {\n value.forEach(i => self.implies(key, i));\n }\n else {\n assertNotStrictEqual(value, undefined, shim);\n implied[key].push(value);\n }\n }\n };\n self.getImplied = function getImplied() {\n return implied;\n };\n function keyExists(argv, val) {\n const num = Number(val);\n val = isNaN(num) ? val : num;\n if (typeof val === 'number') {\n val = argv._.length >= val;\n }\n else if (val.match(/^--no-.+/)) {\n val = val.match(/^--no-(.+)/)[1];\n val = !Object.prototype.hasOwnProperty.call(argv, val);\n }\n else {\n val = Object.prototype.hasOwnProperty.call(argv, val);\n }\n return val;\n }\n self.implications = function implications(argv) {\n const implyFail = [];\n Object.keys(implied).forEach(key => {\n const origKey = key;\n (implied[key] || []).forEach(value => {\n let key = origKey;\n const origValue = value;\n key = keyExists(argv, key);\n value = keyExists(argv, value);\n if (key && !value) {\n implyFail.push(` ${origKey} -> ${origValue}`);\n }\n });\n });\n if (implyFail.length) {\n let msg = `${__('Implications failed:')}\\n`;\n implyFail.forEach(value => {\n msg += value;\n });\n usage.fail(msg);\n }\n };\n let conflicting = {};\n self.conflicts = function conflicts(key, value) {\n argsert('<string|object> [array|string]', [key, value], arguments.length);\n if (typeof key === 'object') {\n Object.keys(key).forEach(k => {\n self.conflicts(k, key[k]);\n });\n }\n else {\n yargs.global(key);\n if (!conflicting[key]) {\n conflicting[key] = [];\n }\n if (Array.isArray(value)) {\n value.forEach(i => self.conflicts(key, i));\n }\n else {\n conflicting[key].push(value);\n }\n }\n };\n self.getConflicting = () => conflicting;\n self.conflicting = function conflictingFn(argv) {\n Object.keys(argv).forEach(key => {\n if (conflicting[key]) {\n conflicting[key].forEach(value => {\n if (value && argv[key] !== undefined && argv[value] !== undefined) {\n usage.fail(__('Arguments %s and %s are mutually exclusive', key, value));\n }\n });\n }\n });\n if (yargs.getInternalMethods().getParserConfiguration()['strip-dashed']) {\n Object.keys(conflicting).forEach(key => {\n conflicting[key].forEach(value => {\n if (value &&\n argv[shim.Parser.camelCase(key)] !== undefined &&\n argv[shim.Parser.camelCase(value)] !== undefined) {\n usage.fail(__('Arguments %s and %s are mutually exclusive', key, value));\n }\n });\n });\n }\n };\n self.recommendCommands = function recommendCommands(cmd, potentialCommands) {\n const threshold = 3;\n potentialCommands = potentialCommands.sort((a, b) => b.length - a.length);\n let recommended = null;\n let bestDistance = Infinity;\n for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) {\n const d = distance(cmd, candidate);\n if (d <= threshold && d < bestDistance) {\n bestDistance = d;\n recommended = candidate;\n }\n }\n if (recommended)\n usage.fail(__('Did you mean %s?', recommended));\n };\n self.reset = function reset(localLookup) {\n implied = objFilter(implied, k => !localLookup[k]);\n conflicting = objFilter(conflicting, k => !localLookup[k]);\n return self;\n };\n const frozens = [];\n self.freeze = function freeze() {\n frozens.push({\n implied,\n conflicting,\n });\n };\n self.unfreeze = function unfreeze() {\n const frozen = frozens.pop();\n assertNotStrictEqual(frozen, undefined, shim);\n ({ implied, conflicting } = frozen);\n };\n return self;\n}\n","import { YError } from '../yerror.js';\nlet previouslyVisitedConfigs = [];\nlet shim;\nexport function applyExtends(config, cwd, mergeExtends, _shim) {\n shim = _shim;\n let defaultConfig = {};\n if (Object.prototype.hasOwnProperty.call(config, 'extends')) {\n if (typeof config.extends !== 'string')\n return defaultConfig;\n const isPath = /\\.json|\\..*rc$/.test(config.extends);\n let pathToDefault = null;\n if (!isPath) {\n try {\n pathToDefault = import.meta.resolve(config.extends);\n }\n catch (_err) {\n return config;\n }\n }\n else {\n pathToDefault = getPathToDefaultConfig(cwd, config.extends);\n }\n checkForCircularExtends(pathToDefault);\n previouslyVisitedConfigs.push(pathToDefault);\n defaultConfig = isPath\n ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8'))\n : _shim.require(config.extends);\n delete config.extends;\n defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim);\n }\n previouslyVisitedConfigs = [];\n return mergeExtends\n ? mergeDeep(defaultConfig, config)\n : Object.assign({}, defaultConfig, config);\n}\nfunction checkForCircularExtends(cfgPath) {\n if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) {\n throw new YError(`Circular extended configurations: '${cfgPath}'.`);\n }\n}\nfunction getPathToDefaultConfig(cwd, pathToExtend) {\n return shim.path.resolve(cwd, pathToExtend);\n}\nfunction mergeDeep(config1, config2) {\n const target = {};\n function isObject(obj) {\n return obj && typeof obj === 'object' && !Array.isArray(obj);\n }\n Object.assign(target, config1);\n for (const key of Object.keys(config2)) {\n if (isObject(config2[key]) && isObject(target[key])) {\n target[key] = mergeDeep(config1[key], config2[key]);\n }\n else {\n target[key] = config2[key];\n }\n }\n return target;\n}\n","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 _YargsInstance_command, _YargsInstance_cwd, _YargsInstance_context, _YargsInstance_completion, _YargsInstance_completionCommand, _YargsInstance_defaultShowHiddenOpt, _YargsInstance_exitError, _YargsInstance_detectLocale, _YargsInstance_emittedWarnings, _YargsInstance_exitProcess, _YargsInstance_frozens, _YargsInstance_globalMiddleware, _YargsInstance_groups, _YargsInstance_hasOutput, _YargsInstance_helpOpt, _YargsInstance_isGlobalContext, _YargsInstance_logger, _YargsInstance_output, _YargsInstance_options, _YargsInstance_parentRequire, _YargsInstance_parserConfig, _YargsInstance_parseFn, _YargsInstance_parseContext, _YargsInstance_pkgs, _YargsInstance_preservedGroups, _YargsInstance_processArgs, _YargsInstance_recommendCommands, _YargsInstance_shim, _YargsInstance_strict, _YargsInstance_strictCommands, _YargsInstance_strictOptions, _YargsInstance_usage, _YargsInstance_usageConfig, _YargsInstance_versionOpt, _YargsInstance_validation;\nimport { command as Command, } from './command.js';\nimport { assertNotStrictEqual, assertSingleKey, objectKeys, } from './typings/common-types.js';\nimport { YError } from './yerror.js';\nimport { usage as Usage } from './usage.js';\nimport { argsert } from './argsert.js';\nimport { completion as Completion, } from './completion.js';\nimport { validation as Validation, } from './validation.js';\nimport { objFilter } from './utils/obj-filter.js';\nimport { applyExtends } from './utils/apply-extends.js';\nimport { applyMiddleware, GlobalMiddleware, } from './middleware.js';\nimport { isPromise } from './utils/is-promise.js';\nimport { maybeAsyncResult } from './utils/maybe-async-result.js';\nimport setBlocking from './utils/set-blocking.js';\nexport function YargsFactory(_shim) {\n return (processArgs = [], cwd = _shim.process.cwd(), parentRequire) => {\n const yargs = new YargsInstance(processArgs, cwd, parentRequire, _shim);\n Object.defineProperty(yargs, 'argv', {\n get: () => {\n return yargs.parse();\n },\n enumerable: true,\n });\n yargs.help();\n yargs.version();\n return yargs;\n };\n}\nconst kCopyDoubleDash = Symbol('copyDoubleDash');\nconst kCreateLogger = Symbol('copyDoubleDash');\nconst kDeleteFromParserHintObject = Symbol('deleteFromParserHintObject');\nconst kEmitWarning = Symbol('emitWarning');\nconst kFreeze = Symbol('freeze');\nconst kGetDollarZero = Symbol('getDollarZero');\nconst kGetParserConfiguration = Symbol('getParserConfiguration');\nconst kGetUsageConfiguration = Symbol('getUsageConfiguration');\nconst kGuessLocale = Symbol('guessLocale');\nconst kGuessVersion = Symbol('guessVersion');\nconst kParsePositionalNumbers = Symbol('parsePositionalNumbers');\nconst kPkgUp = Symbol('pkgUp');\nconst kPopulateParserHintArray = Symbol('populateParserHintArray');\nconst kPopulateParserHintSingleValueDictionary = Symbol('populateParserHintSingleValueDictionary');\nconst kPopulateParserHintArrayDictionary = Symbol('populateParserHintArrayDictionary');\nconst kPopulateParserHintDictionary = Symbol('populateParserHintDictionary');\nconst kSanitizeKey = Symbol('sanitizeKey');\nconst kSetKey = Symbol('setKey');\nconst kUnfreeze = Symbol('unfreeze');\nconst kValidateAsync = Symbol('validateAsync');\nconst kGetCommandInstance = Symbol('getCommandInstance');\nconst kGetContext = Symbol('getContext');\nconst kGetHasOutput = Symbol('getHasOutput');\nconst kGetLoggerInstance = Symbol('getLoggerInstance');\nconst kGetParseContext = Symbol('getParseContext');\nconst kGetUsageInstance = Symbol('getUsageInstance');\nconst kGetValidationInstance = Symbol('getValidationInstance');\nconst kHasParseCallback = Symbol('hasParseCallback');\nconst kIsGlobalContext = Symbol('isGlobalContext');\nconst kPostProcess = Symbol('postProcess');\nconst kRebase = Symbol('rebase');\nconst kReset = Symbol('reset');\nconst kRunYargsParserAndExecuteCommands = Symbol('runYargsParserAndExecuteCommands');\nconst kRunValidation = Symbol('runValidation');\nconst kSetHasOutput = Symbol('setHasOutput');\nconst kTrackManuallySetKeys = Symbol('kTrackManuallySetKeys');\nconst DEFAULT_LOCALE = 'en_US';\nexport class YargsInstance {\n constructor(processArgs = [], cwd, parentRequire, shim) {\n this.customScriptName = false;\n this.parsed = false;\n _YargsInstance_command.set(this, void 0);\n _YargsInstance_cwd.set(this, void 0);\n _YargsInstance_context.set(this, { commands: [], fullCommands: [] });\n _YargsInstance_completion.set(this, null);\n _YargsInstance_completionCommand.set(this, null);\n _YargsInstance_defaultShowHiddenOpt.set(this, 'show-hidden');\n _YargsInstance_exitError.set(this, null);\n _YargsInstance_detectLocale.set(this, true);\n _YargsInstance_emittedWarnings.set(this, {});\n _YargsInstance_exitProcess.set(this, true);\n _YargsInstance_frozens.set(this, []);\n _YargsInstance_globalMiddleware.set(this, void 0);\n _YargsInstance_groups.set(this, {});\n _YargsInstance_hasOutput.set(this, false);\n _YargsInstance_helpOpt.set(this, null);\n _YargsInstance_isGlobalContext.set(this, true);\n _YargsInstance_logger.set(this, void 0);\n _YargsInstance_output.set(this, '');\n _YargsInstance_options.set(this, void 0);\n _YargsInstance_parentRequire.set(this, void 0);\n _YargsInstance_parserConfig.set(this, {});\n _YargsInstance_parseFn.set(this, null);\n _YargsInstance_parseContext.set(this, null);\n _YargsInstance_pkgs.set(this, {});\n _YargsInstance_preservedGroups.set(this, {});\n _YargsInstance_processArgs.set(this, void 0);\n _YargsInstance_recommendCommands.set(this, false);\n _YargsInstance_shim.set(this, void 0);\n _YargsInstance_strict.set(this, false);\n _YargsInstance_strictCommands.set(this, false);\n _YargsInstance_strictOptions.set(this, false);\n _YargsInstance_usage.set(this, void 0);\n _YargsInstance_usageConfig.set(this, {});\n _YargsInstance_versionOpt.set(this, null);\n _YargsInstance_validation.set(this, void 0);\n __classPrivateFieldSet(this, _YargsInstance_shim, shim, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_processArgs, processArgs, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_cwd, cwd, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_parentRequire, parentRequire, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_globalMiddleware, new GlobalMiddleware(this), \"f\");\n this.$0 = this[kGetDollarZero]();\n this[kReset]();\n __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, \"f\"), \"f\");\n __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), \"f\");\n __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, \"f\"), \"f\");\n __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, \"f\"), \"f\");\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").showHiddenOpt = __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_logger, this[kCreateLogger](), \"f\");\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.setLocale(DEFAULT_LOCALE);\n }\n addHelpOpt(opt, msg) {\n const defaultHelpOpt = 'help';\n argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")) {\n this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"));\n __classPrivateFieldSet(this, _YargsInstance_helpOpt, null, \"f\");\n }\n if (opt === false && msg === undefined)\n return this;\n __classPrivateFieldSet(this, _YargsInstance_helpOpt, typeof opt === 'string' ? opt : defaultHelpOpt, \"f\");\n this.boolean(__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"));\n this.describe(__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\"), msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show help'));\n return this;\n }\n help(opt, msg) {\n return this.addHelpOpt(opt, msg);\n }\n addShowHiddenOpt(opt, msg) {\n argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n if (opt === false && msg === undefined)\n return this;\n const showHiddenOpt = typeof opt === 'string' ? opt : __classPrivateFieldGet(this, _YargsInstance_defaultShowHiddenOpt, \"f\");\n this.boolean(showHiddenOpt);\n this.describe(showHiddenOpt, msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show hidden options'));\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").showHiddenOpt = showHiddenOpt;\n return this;\n }\n showHidden(opt, msg) {\n return this.addShowHiddenOpt(opt, msg);\n }\n alias(key, value) {\n argsert('<object|string|array> [string|array]', [key, value], arguments.length);\n this[kPopulateParserHintArrayDictionary](this.alias.bind(this), 'alias', key, value);\n return this;\n }\n array(keys) {\n argsert('<array|string>', [keys], arguments.length);\n this[kPopulateParserHintArray]('array', keys);\n this[kTrackManuallySetKeys](keys);\n return this;\n }\n boolean(keys) {\n argsert('<array|string>', [keys], arguments.length);\n this[kPopulateParserHintArray]('boolean', keys);\n this[kTrackManuallySetKeys](keys);\n return this;\n }\n check(f, global) {\n argsert('<function> [boolean]', [f, global], arguments.length);\n this.middleware((argv, _yargs) => {\n return maybeAsyncResult(() => {\n return f(argv, _yargs.getOptions());\n }, (result) => {\n if (!result) {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.__('Argument check failed: %s', f.toString()));\n }\n else if (typeof result === 'string' || result instanceof Error) {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(result.toString(), result);\n }\n return argv;\n }, (err) => {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(err.message ? err.message : err.toString(), err);\n return argv;\n });\n }, false, global);\n return this;\n }\n choices(key, value) {\n argsert('<object|string|array> [string|array]', [key, value], arguments.length);\n this[kPopulateParserHintArrayDictionary](this.choices.bind(this), 'choices', key, value);\n return this;\n }\n coerce(keys, value) {\n argsert('<object|string|array> [function]', [keys, value], arguments.length);\n if (Array.isArray(keys)) {\n if (!value) {\n throw new YError('coerce callback must be provided');\n }\n for (const key of keys) {\n this.coerce(key, value);\n }\n return this;\n }\n else if (typeof keys === 'object') {\n for (const key of Object.keys(keys)) {\n this.coerce(key, keys[key]);\n }\n return this;\n }\n if (!value) {\n throw new YError('coerce callback must be provided');\n }\n const coerceKey = keys;\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[coerceKey] = true;\n __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").addCoerceMiddleware((argv, yargs) => {\n var _a;\n const coerceKeyAliases = (_a = yargs.getAliases()[coerceKey]) !== null && _a !== void 0 ? _a : [];\n const argvKeys = [coerceKey, ...coerceKeyAliases].filter(key => Object.prototype.hasOwnProperty.call(argv, key));\n if (argvKeys.length === 0) {\n return argv;\n }\n return maybeAsyncResult(() => {\n return value(argv[argvKeys[0]]);\n }, (result) => {\n argvKeys.forEach(key => {\n argv[key] = result;\n });\n return argv;\n }, (err) => {\n throw new YError(err.message);\n });\n }, coerceKey);\n return this;\n }\n conflicts(key1, key2) {\n argsert('<string|object> [string|array]', [key1, key2], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").conflicts(key1, key2);\n return this;\n }\n config(key = 'config', msg, parseFn) {\n argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length);\n if (typeof key === 'object' && !Array.isArray(key)) {\n key = applyExtends(key, __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || []).concat(key);\n return this;\n }\n if (typeof msg === 'function') {\n parseFn = msg;\n msg = undefined;\n }\n this.describe(key, msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Path to JSON config file'));\n (Array.isArray(key) ? key : [key]).forEach(k => {\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").config[k] = parseFn || true;\n });\n return this;\n }\n completion(cmd, desc, fn) {\n argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length);\n if (typeof desc === 'function') {\n fn = desc;\n desc = undefined;\n }\n __classPrivateFieldSet(this, _YargsInstance_completionCommand, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") || 'completion', \"f\");\n if (!desc && desc !== false) {\n desc = 'generate completion script';\n }\n this.command(__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\"), desc);\n if (fn)\n __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").registerFunction(fn);\n return this;\n }\n command(cmd, description, builder, handler, middlewares, deprecated) {\n argsert('<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_command, \"f\").addHandler(cmd, description, builder, handler, middlewares, deprecated);\n return this;\n }\n commands(cmd, description, builder, handler, middlewares, deprecated) {\n return this.command(cmd, description, builder, handler, middlewares, deprecated);\n }\n commandDir(dir, opts) {\n argsert('<string> [object]', [dir, opts], arguments.length);\n const req = __classPrivateFieldGet(this, _YargsInstance_parentRequire, \"f\") || __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").require;\n __classPrivateFieldGet(this, _YargsInstance_command, \"f\").addDirectory(dir, req, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getCallerFile(), opts);\n return this;\n }\n count(keys) {\n argsert('<array|string>', [keys], arguments.length);\n this[kPopulateParserHintArray]('count', keys);\n this[kTrackManuallySetKeys](keys);\n return this;\n }\n default(key, value, defaultDescription) {\n argsert('<object|string|array> [*] [string]', [key, value, defaultDescription], arguments.length);\n if (defaultDescription) {\n assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] = defaultDescription;\n }\n if (typeof value === 'function') {\n assertSingleKey(key, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n if (!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key])\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] =\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").functionDescription(value);\n value = value.call();\n }\n this[kPopulateParserHintSingleValueDictionary](this.default.bind(this), 'default', key, value);\n return this;\n }\n defaults(key, value, defaultDescription) {\n return this.default(key, value, defaultDescription);\n }\n demandCommand(min = 1, max, minMsg, maxMsg) {\n argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length);\n if (typeof max !== 'number') {\n minMsg = max;\n max = Infinity;\n }\n this.global('_', false);\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedCommands._ = {\n min,\n max,\n minMsg,\n maxMsg,\n };\n return this;\n }\n demand(keys, max, msg) {\n if (Array.isArray(max)) {\n max.forEach(key => {\n assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n this.demandOption(key, msg);\n });\n max = Infinity;\n }\n else if (typeof max !== 'number') {\n msg = max;\n max = Infinity;\n }\n if (typeof keys === 'number') {\n assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n this.demandCommand(keys, max, msg, msg);\n }\n else if (Array.isArray(keys)) {\n keys.forEach(key => {\n assertNotStrictEqual(msg, true, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n this.demandOption(key, msg);\n });\n }\n else {\n if (typeof msg === 'string') {\n this.demandOption(keys, msg);\n }\n else if (msg === true || typeof msg === 'undefined') {\n this.demandOption(keys);\n }\n }\n return this;\n }\n demandOption(keys, msg) {\n argsert('<object|string|array> [string]', [keys, msg], arguments.length);\n this[kPopulateParserHintSingleValueDictionary](this.demandOption.bind(this), 'demandedOptions', keys, msg);\n return this;\n }\n deprecateOption(option, message) {\n argsert('<string> [string|boolean]', [option, message], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").deprecatedOptions[option] = message;\n return this;\n }\n describe(keys, description) {\n argsert('<object|string|array> [string]', [keys, description], arguments.length);\n this[kSetKey](keys, true);\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").describe(keys, description);\n return this;\n }\n detectLocale(detect) {\n argsert('<boolean>', [detect], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_detectLocale, detect, \"f\");\n return this;\n }\n env(prefix) {\n argsert('[string|boolean]', [prefix], arguments.length);\n if (prefix === false)\n delete __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix;\n else\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix = prefix || '';\n return this;\n }\n epilogue(msg) {\n argsert('<string>', [msg], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").epilog(msg);\n return this;\n }\n epilog(msg) {\n return this.epilogue(msg);\n }\n example(cmd, description) {\n argsert('<string|array> [string]', [cmd, description], arguments.length);\n if (Array.isArray(cmd)) {\n cmd.forEach(exampleParams => this.example(...exampleParams));\n }\n else {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").example(cmd, description);\n }\n return this;\n }\n exit(code, err) {\n __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_exitError, err, \"f\");\n if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.exit(code);\n }\n exitProcess(enabled = true) {\n argsert('[boolean]', [enabled], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_exitProcess, enabled, \"f\");\n return this;\n }\n fail(f) {\n argsert('<function|boolean>', [f], arguments.length);\n if (typeof f === 'boolean' && f !== false) {\n throw new YError(\"Invalid first argument. Expected function or boolean 'false'\");\n }\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").failFn(f);\n return this;\n }\n getAliases() {\n return this.parsed ? this.parsed.aliases : {};\n }\n async getCompletion(args, done) {\n argsert('<array> [function]', [args, done], arguments.length);\n if (!done) {\n return new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(args, (err, completions) => {\n if (err)\n reject(err);\n else\n resolve(completions);\n });\n });\n }\n else {\n return __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(args, done);\n }\n }\n getDemandedOptions() {\n argsert([], 0);\n return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedOptions;\n }\n getDemandedCommands() {\n argsert([], 0);\n return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").demandedCommands;\n }\n getDeprecatedOptions() {\n argsert([], 0);\n return __classPrivateFieldGet(this, _YargsInstance_options, \"f\").deprecatedOptions;\n }\n getDetectLocale() {\n return __classPrivateFieldGet(this, _YargsInstance_detectLocale, \"f\");\n }\n getExitProcess() {\n return __classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\");\n }\n getGroups() {\n return Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_groups, \"f\"), __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\"));\n }\n getHelp() {\n __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n if (!__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").hasCachedHelpMessage()) {\n if (!this.parsed) {\n const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\"), undefined, undefined, 0, true);\n if (isPromise(parse)) {\n return parse.then(() => {\n return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help();\n });\n }\n }\n const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runDefaultBuilderOn(this);\n if (isPromise(builderResponse)) {\n return builderResponse.then(() => {\n return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help();\n });\n }\n }\n return Promise.resolve(__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").help());\n }\n getOptions() {\n return __classPrivateFieldGet(this, _YargsInstance_options, \"f\");\n }\n getStrict() {\n return __classPrivateFieldGet(this, _YargsInstance_strict, \"f\");\n }\n getStrictCommands() {\n return __classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\");\n }\n getStrictOptions() {\n return __classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\");\n }\n global(globals, global) {\n argsert('<string|array> [boolean]', [globals, global], arguments.length);\n globals = [].concat(globals);\n if (global !== false) {\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.filter(l => globals.indexOf(l) === -1);\n }\n else {\n globals.forEach(g => {\n if (!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.includes(g))\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local.push(g);\n });\n }\n return this;\n }\n group(opts, groupName) {\n argsert('<string|array> <string>', [opts, groupName], arguments.length);\n const existing = __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName] || __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName];\n if (__classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName]) {\n delete __classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\")[groupName];\n }\n const seen = {};\n __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName] = (existing || []).concat(opts).filter(key => {\n if (seen[key])\n return false;\n return (seen[key] = true);\n });\n return this;\n }\n hide(key) {\n argsert('<string>', [key], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").hiddenOptions.push(key);\n return this;\n }\n implies(key, value) {\n argsert('<string|object> [number|string|array]', [key, value], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").implies(key, value);\n return this;\n }\n locale(locale) {\n argsert('[string]', [locale], arguments.length);\n if (locale === undefined) {\n this[kGuessLocale]();\n return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.getLocale();\n }\n __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, \"f\");\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.setLocale(locale);\n return this;\n }\n middleware(callback, applyBeforeValidation, global) {\n return __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").addMiddleware(callback, !!applyBeforeValidation, global);\n }\n nargs(key, value) {\n argsert('<string|object|array> [number]', [key, value], arguments.length);\n this[kPopulateParserHintSingleValueDictionary](this.nargs.bind(this), 'narg', key, value);\n return this;\n }\n normalize(keys) {\n argsert('<array|string>', [keys], arguments.length);\n this[kPopulateParserHintArray]('normalize', keys);\n return this;\n }\n number(keys) {\n argsert('<array|string>', [keys], arguments.length);\n this[kPopulateParserHintArray]('number', keys);\n this[kTrackManuallySetKeys](keys);\n return this;\n }\n option(key, opt) {\n argsert('<string|object> [object]', [key, opt], arguments.length);\n if (typeof key === 'object') {\n Object.keys(key).forEach(k => {\n this.options(k, key[k]);\n });\n }\n else {\n if (typeof opt !== 'object') {\n opt = {};\n }\n this[kTrackManuallySetKeys](key);\n if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\") && (key === 'version' || (opt === null || opt === void 0 ? void 0 : opt.alias) === 'version')) {\n this[kEmitWarning]([\n '\"version\" is a reserved word.',\n 'Please do one of the following:',\n '- Disable version with `yargs.version(false)` if using \"version\" as an option',\n '- Use the built-in `yargs.version` method instead (if applicable)',\n '- Use a different option key',\n 'https://yargs.js.org/docs/#api-reference-version',\n ].join('\\n'), undefined, 'versionWarning');\n }\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[key] = true;\n if (opt.alias)\n this.alias(key, opt.alias);\n const deprecate = opt.deprecate || opt.deprecated;\n if (deprecate) {\n this.deprecateOption(key, deprecate);\n }\n const demand = opt.demand || opt.required || opt.require;\n if (demand) {\n this.demand(key, demand);\n }\n if (opt.demandOption) {\n this.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined);\n }\n if (opt.conflicts) {\n this.conflicts(key, opt.conflicts);\n }\n if ('default' in opt) {\n this.default(key, opt.default);\n }\n if (opt.implies !== undefined) {\n this.implies(key, opt.implies);\n }\n if (opt.nargs !== undefined) {\n this.nargs(key, opt.nargs);\n }\n if (opt.config) {\n this.config(key, opt.configParser);\n }\n if (opt.normalize) {\n this.normalize(key);\n }\n if (opt.choices) {\n this.choices(key, opt.choices);\n }\n if (opt.coerce) {\n this.coerce(key, opt.coerce);\n }\n if (opt.group) {\n this.group(key, opt.group);\n }\n if (opt.boolean || opt.type === 'boolean') {\n this.boolean(key);\n if (opt.alias)\n this.boolean(opt.alias);\n }\n if (opt.array || opt.type === 'array') {\n this.array(key);\n if (opt.alias)\n this.array(opt.alias);\n }\n if (opt.number || opt.type === 'number') {\n this.number(key);\n if (opt.alias)\n this.number(opt.alias);\n }\n if (opt.string || opt.type === 'string') {\n this.string(key);\n if (opt.alias)\n this.string(opt.alias);\n }\n if (opt.count || opt.type === 'count') {\n this.count(key);\n }\n if (typeof opt.global === 'boolean') {\n this.global(key, opt.global);\n }\n if (opt.defaultDescription) {\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").defaultDescription[key] = opt.defaultDescription;\n }\n if (opt.skipValidation) {\n this.skipValidation(key);\n }\n const desc = opt.describe || opt.description || opt.desc;\n const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getDescriptions();\n if (!Object.prototype.hasOwnProperty.call(descriptions, key) ||\n typeof desc === 'string') {\n this.describe(key, desc);\n }\n if (opt.hidden) {\n this.hide(key);\n }\n if (opt.requiresArg) {\n this.requiresArg(key);\n }\n }\n return this;\n }\n options(key, opt) {\n return this.option(key, opt);\n }\n parse(args, shortCircuit, _parseFn) {\n argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length);\n this[kFreeze]();\n if (typeof args === 'undefined') {\n args = __classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\");\n }\n if (typeof shortCircuit === 'object') {\n __classPrivateFieldSet(this, _YargsInstance_parseContext, shortCircuit, \"f\");\n shortCircuit = _parseFn;\n }\n if (typeof shortCircuit === 'function') {\n __classPrivateFieldSet(this, _YargsInstance_parseFn, shortCircuit, \"f\");\n shortCircuit = false;\n }\n if (!shortCircuit)\n __classPrivateFieldSet(this, _YargsInstance_processArgs, args, \"f\");\n if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n __classPrivateFieldSet(this, _YargsInstance_exitProcess, false, \"f\");\n const parsed = this[kRunYargsParserAndExecuteCommands](args, !!shortCircuit);\n const tmpParsed = this.parsed;\n __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").setParsed(this.parsed);\n if (isPromise(parsed)) {\n return parsed\n .then(argv => {\n if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"), argv, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n return argv;\n })\n .catch(err => {\n if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\")) {\n __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\")(err, this.parsed.argv, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n }\n throw err;\n })\n .finally(() => {\n this[kUnfreeze]();\n this.parsed = tmpParsed;\n });\n }\n else {\n if (__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"))\n __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\").call(this, __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"), parsed, __classPrivateFieldGet(this, _YargsInstance_output, \"f\"));\n this[kUnfreeze]();\n this.parsed = tmpParsed;\n }\n return parsed;\n }\n parseAsync(args, shortCircuit, _parseFn) {\n const maybePromise = this.parse(args, shortCircuit, _parseFn);\n return !isPromise(maybePromise)\n ? Promise.resolve(maybePromise)\n : maybePromise;\n }\n parseSync(args, shortCircuit, _parseFn) {\n const maybePromise = this.parse(args, shortCircuit, _parseFn);\n if (isPromise(maybePromise)) {\n throw new YError('.parseSync() must not be used with asynchronous builders, handlers, or middleware');\n }\n return maybePromise;\n }\n parserConfiguration(config) {\n argsert('<object>', [config], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_parserConfig, config, \"f\");\n return this;\n }\n pkgConf(key, rootPath) {\n argsert('<string> [string]', [key, rootPath], arguments.length);\n let conf = null;\n const obj = this[kPkgUp](rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"));\n if (obj[key] && typeof obj[key] === 'object') {\n conf = applyExtends(obj[key], rootPath || __classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), this[kGetParserConfiguration]()['deep-merge-config'] || false, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || []).concat(conf);\n }\n return this;\n }\n positional(key, opts) {\n argsert('<string> <object>', [key, opts], arguments.length);\n const supportedOpts = [\n 'default',\n 'defaultDescription',\n 'implies',\n 'normalize',\n 'choices',\n 'conflicts',\n 'coerce',\n 'type',\n 'describe',\n 'desc',\n 'description',\n 'alias',\n ];\n opts = objFilter(opts, (k, v) => {\n if (k === 'type' && !['string', 'number', 'boolean'].includes(v))\n return false;\n return supportedOpts.includes(k);\n });\n const fullCommand = __classPrivateFieldGet(this, _YargsInstance_context, \"f\").fullCommands[__classPrivateFieldGet(this, _YargsInstance_context, \"f\").fullCommands.length - 1];\n const parseOptions = fullCommand\n ? __classPrivateFieldGet(this, _YargsInstance_command, \"f\").cmdToParseOptions(fullCommand)\n : {\n array: [],\n alias: {},\n default: {},\n demand: {},\n };\n objectKeys(parseOptions).forEach(pk => {\n const parseOption = parseOptions[pk];\n if (Array.isArray(parseOption)) {\n if (parseOption.indexOf(key) !== -1)\n opts[pk] = true;\n }\n else {\n if (parseOption[key] && !(pk in opts))\n opts[pk] = parseOption[key];\n }\n });\n this.group(key, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getPositionalGroupName());\n return this.option(key, opts);\n }\n recommendCommands(recommend = true) {\n argsert('[boolean]', [recommend], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_recommendCommands, recommend, \"f\");\n return this;\n }\n required(keys, max, msg) {\n return this.demand(keys, max, msg);\n }\n require(keys, max, msg) {\n return this.demand(keys, max, msg);\n }\n requiresArg(keys) {\n argsert('<array|string|object> [number]', [keys], arguments.length);\n if (typeof keys === 'string' && __classPrivateFieldGet(this, _YargsInstance_options, \"f\").narg[keys]) {\n return this;\n }\n else {\n this[kPopulateParserHintSingleValueDictionary](this.requiresArg.bind(this), 'narg', keys, NaN);\n }\n return this;\n }\n showCompletionScript($0, cmd) {\n argsert('[string] [string]', [$0, cmd], arguments.length);\n $0 = $0 || this.$0;\n __classPrivateFieldGet(this, _YargsInstance_logger, \"f\").log(__classPrivateFieldGet(this, _YargsInstance_completion, \"f\").generateCompletionScript($0, cmd || __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") || 'completion'));\n return this;\n }\n showHelp(level) {\n argsert('[string|function]', [level], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n if (!__classPrivateFieldGet(this, _YargsInstance_usage, \"f\").hasCachedHelpMessage()) {\n if (!this.parsed) {\n const parse = this[kRunYargsParserAndExecuteCommands](__classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\"), undefined, undefined, 0, true);\n if (isPromise(parse)) {\n parse.then(() => {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n });\n return this;\n }\n }\n const builderResponse = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runDefaultBuilderOn(this);\n if (isPromise(builderResponse)) {\n builderResponse.then(() => {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n });\n return this;\n }\n }\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelp(level);\n return this;\n }\n scriptName(scriptName) {\n this.customScriptName = true;\n this.$0 = scriptName;\n return this;\n }\n showHelpOnFail(enabled, message) {\n argsert('[boolean|string] [string]', [enabled, message], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showHelpOnFail(enabled, message);\n return this;\n }\n showVersion(level) {\n argsert('[string|function]', [level], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showVersion(level);\n return this;\n }\n skipValidation(keys) {\n argsert('<array|string>', [keys], arguments.length);\n this[kPopulateParserHintArray]('skipValidation', keys);\n return this;\n }\n strict(enabled) {\n argsert('[boolean]', [enabled], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_strict, enabled !== false, \"f\");\n return this;\n }\n strictCommands(enabled) {\n argsert('[boolean]', [enabled], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_strictCommands, enabled !== false, \"f\");\n return this;\n }\n strictOptions(enabled) {\n argsert('[boolean]', [enabled], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_strictOptions, enabled !== false, \"f\");\n return this;\n }\n string(keys) {\n argsert('<array|string>', [keys], arguments.length);\n this[kPopulateParserHintArray]('string', keys);\n this[kTrackManuallySetKeys](keys);\n return this;\n }\n terminalWidth() {\n argsert([], 0);\n return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.stdColumns;\n }\n updateLocale(obj) {\n return this.updateStrings(obj);\n }\n updateStrings(obj) {\n argsert('<object>', [obj], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_detectLocale, false, \"f\");\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.updateLocale(obj);\n return this;\n }\n usage(msg, description, builder, handler) {\n argsert('<string|null|undefined> [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length);\n if (description !== undefined) {\n assertNotStrictEqual(msg, null, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n if ((msg || '').match(/^\\$0( |$)/)) {\n return this.command(msg, description, builder, handler);\n }\n else {\n throw new YError('.usage() description must start with $0 if being used as alias for .command()');\n }\n }\n else {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").usage(msg);\n return this;\n }\n }\n usageConfiguration(config) {\n argsert('<object>', [config], arguments.length);\n __classPrivateFieldSet(this, _YargsInstance_usageConfig, config, \"f\");\n return this;\n }\n version(opt, msg, ver) {\n const defaultVersionOpt = 'version';\n argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length);\n if (__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\")) {\n this[kDeleteFromParserHintObject](__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"));\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").version(undefined);\n __classPrivateFieldSet(this, _YargsInstance_versionOpt, null, \"f\");\n }\n if (arguments.length === 0) {\n ver = this[kGuessVersion]();\n opt = defaultVersionOpt;\n }\n else if (arguments.length === 1) {\n if (opt === false) {\n return this;\n }\n ver = opt;\n opt = defaultVersionOpt;\n }\n else if (arguments.length === 2) {\n ver = msg;\n msg = undefined;\n }\n __classPrivateFieldSet(this, _YargsInstance_versionOpt, typeof opt === 'string' ? opt : defaultVersionOpt, \"f\");\n msg = msg || __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").deferY18nLookup('Show version number');\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").version(ver || undefined);\n this.boolean(__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"));\n this.describe(__classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\"), msg);\n return this;\n }\n wrap(cols) {\n argsert('<number|null|undefined>', [cols], arguments.length);\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").wrap(cols);\n return this;\n }\n [(_YargsInstance_command = new WeakMap(), _YargsInstance_cwd = new WeakMap(), _YargsInstance_context = new WeakMap(), _YargsInstance_completion = new WeakMap(), _YargsInstance_completionCommand = new WeakMap(), _YargsInstance_defaultShowHiddenOpt = new WeakMap(), _YargsInstance_exitError = new WeakMap(), _YargsInstance_detectLocale = new WeakMap(), _YargsInstance_emittedWarnings = new WeakMap(), _YargsInstance_exitProcess = new WeakMap(), _YargsInstance_frozens = new WeakMap(), _YargsInstance_globalMiddleware = new WeakMap(), _YargsInstance_groups = new WeakMap(), _YargsInstance_hasOutput = new WeakMap(), _YargsInstance_helpOpt = new WeakMap(), _YargsInstance_isGlobalContext = new WeakMap(), _YargsInstance_logger = new WeakMap(), _YargsInstance_output = new WeakMap(), _YargsInstance_options = new WeakMap(), _YargsInstance_parentRequire = new WeakMap(), _YargsInstance_parserConfig = new WeakMap(), _YargsInstance_parseFn = new WeakMap(), _YargsInstance_parseContext = new WeakMap(), _YargsInstance_pkgs = new WeakMap(), _YargsInstance_preservedGroups = new WeakMap(), _YargsInstance_processArgs = new WeakMap(), _YargsInstance_recommendCommands = new WeakMap(), _YargsInstance_shim = new WeakMap(), _YargsInstance_strict = new WeakMap(), _YargsInstance_strictCommands = new WeakMap(), _YargsInstance_strictOptions = new WeakMap(), _YargsInstance_usage = new WeakMap(), _YargsInstance_usageConfig = new WeakMap(), _YargsInstance_versionOpt = new WeakMap(), _YargsInstance_validation = new WeakMap(), kCopyDoubleDash)](argv) {\n if (!argv._ || !argv['--'])\n return argv;\n argv._.push.apply(argv._, argv['--']);\n try {\n delete argv['--'];\n }\n catch (_err) { }\n return argv;\n }\n [kCreateLogger]() {\n return {\n log: (...args) => {\n if (!this[kHasParseCallback]())\n console.log(...args);\n __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n if (__classPrivateFieldGet(this, _YargsInstance_output, \"f\").length)\n __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + '\\n', \"f\");\n __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + args.join(' '), \"f\");\n },\n error: (...args) => {\n if (!this[kHasParseCallback]())\n console.error(...args);\n __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n if (__classPrivateFieldGet(this, _YargsInstance_output, \"f\").length)\n __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + '\\n', \"f\");\n __classPrivateFieldSet(this, _YargsInstance_output, __classPrivateFieldGet(this, _YargsInstance_output, \"f\") + args.join(' '), \"f\");\n },\n };\n }\n [kDeleteFromParserHintObject](optionKey) {\n objectKeys(__classPrivateFieldGet(this, _YargsInstance_options, \"f\")).forEach((hintKey) => {\n if (((key) => key === 'configObjects')(hintKey))\n return;\n const hint = __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[hintKey];\n if (Array.isArray(hint)) {\n if (hint.includes(optionKey))\n hint.splice(hint.indexOf(optionKey), 1);\n }\n else if (typeof hint === 'object') {\n delete hint[optionKey];\n }\n });\n delete __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").getDescriptions()[optionKey];\n }\n [kEmitWarning](warning, type, deduplicationId) {\n if (!__classPrivateFieldGet(this, _YargsInstance_emittedWarnings, \"f\")[deduplicationId]) {\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.emitWarning(warning, type);\n __classPrivateFieldGet(this, _YargsInstance_emittedWarnings, \"f\")[deduplicationId] = true;\n }\n }\n [kFreeze]() {\n __classPrivateFieldGet(this, _YargsInstance_frozens, \"f\").push({\n options: __classPrivateFieldGet(this, _YargsInstance_options, \"f\"),\n configObjects: __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects.slice(0),\n exitProcess: __classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"),\n groups: __classPrivateFieldGet(this, _YargsInstance_groups, \"f\"),\n strict: __classPrivateFieldGet(this, _YargsInstance_strict, \"f\"),\n strictCommands: __classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\"),\n strictOptions: __classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\"),\n completionCommand: __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\"),\n output: __classPrivateFieldGet(this, _YargsInstance_output, \"f\"),\n exitError: __classPrivateFieldGet(this, _YargsInstance_exitError, \"f\"),\n hasOutput: __classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\"),\n parsed: this.parsed,\n parseFn: __classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\"),\n parseContext: __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\"),\n });\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").freeze();\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").freeze();\n __classPrivateFieldGet(this, _YargsInstance_command, \"f\").freeze();\n __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").freeze();\n }\n [kGetDollarZero]() {\n let $0 = '';\n let default$0;\n if (/\\b(node|iojs|electron)(\\.exe)?$/.test(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv()[0])) {\n default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv().slice(1, 2);\n }\n else {\n default$0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.argv().slice(0, 1);\n }\n $0 = default$0\n .map(x => {\n const b = this[kRebase](__classPrivateFieldGet(this, _YargsInstance_cwd, \"f\"), x);\n return x.match(/^(\\/|([a-zA-Z]:)?\\\\)/) && b.length < x.length ? b : x;\n })\n .join(' ')\n .trim();\n if (__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('_') &&\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getProcessArgvBin() === __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('_')) {\n $0 = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")\n .getEnv('_')\n .replace(`${__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.dirname(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").process.execPath())}/`, '');\n }\n return $0;\n }\n [kGetParserConfiguration]() {\n return __classPrivateFieldGet(this, _YargsInstance_parserConfig, \"f\");\n }\n [kGetUsageConfiguration]() {\n return __classPrivateFieldGet(this, _YargsInstance_usageConfig, \"f\");\n }\n [kGuessLocale]() {\n if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, \"f\"))\n return;\n const locale = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LC_ALL') ||\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LC_MESSAGES') ||\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LANG') ||\n __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").getEnv('LANGUAGE') ||\n 'en_US';\n this.locale(locale.replace(/[.:].*/, ''));\n }\n [kGuessVersion]() {\n const obj = this[kPkgUp]();\n return obj.version || 'unknown';\n }\n [kParsePositionalNumbers](argv) {\n const args = argv['--'] ? argv['--'] : argv._;\n for (let i = 0, arg; (arg = args[i]) !== undefined; i++) {\n if (__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").Parser.looksLikeNumber(arg) &&\n Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) {\n args[i] = Number(arg);\n }\n }\n return argv;\n }\n [kPkgUp](rootPath) {\n const npath = rootPath || '*';\n if (__classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath])\n return __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath];\n let obj = {};\n try {\n let startDir = rootPath || __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").mainFilename;\n if (__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.extname(startDir)) {\n startDir = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.dirname(startDir);\n }\n const pkgJsonPath = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").findUp(startDir, (dir, names) => {\n if (names.includes('package.json')) {\n return 'package.json';\n }\n else {\n return undefined;\n }\n });\n assertNotStrictEqual(pkgJsonPath, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n obj = JSON.parse(__classPrivateFieldGet(this, _YargsInstance_shim, \"f\").readFileSync(pkgJsonPath, 'utf8'));\n }\n catch (_noop) { }\n __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath] = obj || {};\n return __classPrivateFieldGet(this, _YargsInstance_pkgs, \"f\")[npath];\n }\n [kPopulateParserHintArray](type, keys) {\n keys = [].concat(keys);\n keys.forEach(key => {\n key = this[kSanitizeKey](key);\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type].push(key);\n });\n }\n [kPopulateParserHintSingleValueDictionary](builder, type, key, value) {\n this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] = value;\n });\n }\n [kPopulateParserHintArrayDictionary](builder, type, key, value) {\n this[kPopulateParserHintDictionary](builder, type, key, value, (type, key, value) => {\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[type][key] || []).concat(value);\n });\n }\n [kPopulateParserHintDictionary](builder, type, key, value, singleKeyHandler) {\n if (Array.isArray(key)) {\n key.forEach(k => {\n builder(k, value);\n });\n }\n else if (((key) => typeof key === 'object')(key)) {\n for (const k of objectKeys(key)) {\n builder(k, key[k]);\n }\n }\n else {\n singleKeyHandler(type, this[kSanitizeKey](key), value);\n }\n }\n [kSanitizeKey](key) {\n if (key === '__proto__')\n return '___proto___';\n return key;\n }\n [kSetKey](key, set) {\n this[kPopulateParserHintSingleValueDictionary](this[kSetKey].bind(this), 'key', key, set);\n return this;\n }\n [kUnfreeze]() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, \"f\").pop();\n assertNotStrictEqual(frozen, undefined, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\"));\n let configObjects;\n (_a = this, _b = this, _c = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, {\n options: ({ set value(_o) { __classPrivateFieldSet(_a, _YargsInstance_options, _o, \"f\"); } }).value,\n configObjects,\n exitProcess: ({ set value(_o) { __classPrivateFieldSet(_b, _YargsInstance_exitProcess, _o, \"f\"); } }).value,\n groups: ({ set value(_o) { __classPrivateFieldSet(_c, _YargsInstance_groups, _o, \"f\"); } }).value,\n output: ({ set value(_o) { __classPrivateFieldSet(_d, _YargsInstance_output, _o, \"f\"); } }).value,\n exitError: ({ set value(_o) { __classPrivateFieldSet(_e, _YargsInstance_exitError, _o, \"f\"); } }).value,\n hasOutput: ({ set value(_o) { __classPrivateFieldSet(_f, _YargsInstance_hasOutput, _o, \"f\"); } }).value,\n parsed: this.parsed,\n strict: ({ set value(_o) { __classPrivateFieldSet(_g, _YargsInstance_strict, _o, \"f\"); } }).value,\n strictCommands: ({ set value(_o) { __classPrivateFieldSet(_h, _YargsInstance_strictCommands, _o, \"f\"); } }).value,\n strictOptions: ({ set value(_o) { __classPrivateFieldSet(_j, _YargsInstance_strictOptions, _o, \"f\"); } }).value,\n completionCommand: ({ set value(_o) { __classPrivateFieldSet(_k, _YargsInstance_completionCommand, _o, \"f\"); } }).value,\n parseFn: ({ set value(_o) { __classPrivateFieldSet(_l, _YargsInstance_parseFn, _o, \"f\"); } }).value,\n parseContext: ({ set value(_o) { __classPrivateFieldSet(_m, _YargsInstance_parseContext, _o, \"f\"); } }).value,\n } = frozen);\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects = configObjects;\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").unfreeze();\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unfreeze();\n __classPrivateFieldGet(this, _YargsInstance_command, \"f\").unfreeze();\n __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").unfreeze();\n }\n [kValidateAsync](validation, argv) {\n return maybeAsyncResult(argv, result => {\n validation(result);\n return result;\n });\n }\n getInternalMethods() {\n return {\n getCommandInstance: this[kGetCommandInstance].bind(this),\n getContext: this[kGetContext].bind(this),\n getHasOutput: this[kGetHasOutput].bind(this),\n getLoggerInstance: this[kGetLoggerInstance].bind(this),\n getParseContext: this[kGetParseContext].bind(this),\n getParserConfiguration: this[kGetParserConfiguration].bind(this),\n getUsageConfiguration: this[kGetUsageConfiguration].bind(this),\n getUsageInstance: this[kGetUsageInstance].bind(this),\n getValidationInstance: this[kGetValidationInstance].bind(this),\n hasParseCallback: this[kHasParseCallback].bind(this),\n isGlobalContext: this[kIsGlobalContext].bind(this),\n postProcess: this[kPostProcess].bind(this),\n reset: this[kReset].bind(this),\n runValidation: this[kRunValidation].bind(this),\n runYargsParserAndExecuteCommands: this[kRunYargsParserAndExecuteCommands].bind(this),\n setHasOutput: this[kSetHasOutput].bind(this),\n };\n }\n [kGetCommandInstance]() {\n return __classPrivateFieldGet(this, _YargsInstance_command, \"f\");\n }\n [kGetContext]() {\n return __classPrivateFieldGet(this, _YargsInstance_context, \"f\");\n }\n [kGetHasOutput]() {\n return __classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\");\n }\n [kGetLoggerInstance]() {\n return __classPrivateFieldGet(this, _YargsInstance_logger, \"f\");\n }\n [kGetParseContext]() {\n return __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\") || {};\n }\n [kGetUsageInstance]() {\n return __classPrivateFieldGet(this, _YargsInstance_usage, \"f\");\n }\n [kGetValidationInstance]() {\n return __classPrivateFieldGet(this, _YargsInstance_validation, \"f\");\n }\n [kHasParseCallback]() {\n return !!__classPrivateFieldGet(this, _YargsInstance_parseFn, \"f\");\n }\n [kIsGlobalContext]() {\n return __classPrivateFieldGet(this, _YargsInstance_isGlobalContext, \"f\");\n }\n [kPostProcess](argv, populateDoubleDash, calledFromCommand, runGlobalMiddleware) {\n if (calledFromCommand)\n return argv;\n if (isPromise(argv))\n return argv;\n if (!populateDoubleDash) {\n argv = this[kCopyDoubleDash](argv);\n }\n const parsePositionalNumbers = this[kGetParserConfiguration]()['parse-positional-numbers'] ||\n this[kGetParserConfiguration]()['parse-positional-numbers'] === undefined;\n if (parsePositionalNumbers) {\n argv = this[kParsePositionalNumbers](argv);\n }\n if (runGlobalMiddleware) {\n argv = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), false);\n }\n return argv;\n }\n [kReset](aliases = {}) {\n __classPrivateFieldSet(this, _YargsInstance_options, __classPrivateFieldGet(this, _YargsInstance_options, \"f\") || {}, \"f\");\n const tmpOptions = {};\n tmpOptions.local = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").local || [];\n tmpOptions.configObjects = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configObjects || [];\n const localLookup = {};\n tmpOptions.local.forEach(l => {\n localLookup[l] = true;\n (aliases[l] || []).forEach(a => {\n localLookup[a] = true;\n });\n });\n Object.assign(__classPrivateFieldGet(this, _YargsInstance_preservedGroups, \"f\"), Object.keys(__classPrivateFieldGet(this, _YargsInstance_groups, \"f\")).reduce((acc, groupName) => {\n const keys = __classPrivateFieldGet(this, _YargsInstance_groups, \"f\")[groupName].filter(key => !(key in localLookup));\n if (keys.length > 0) {\n acc[groupName] = keys;\n }\n return acc;\n }, {}));\n __classPrivateFieldSet(this, _YargsInstance_groups, {}, \"f\");\n const arrayOptions = [\n 'array',\n 'boolean',\n 'string',\n 'skipValidation',\n 'count',\n 'normalize',\n 'number',\n 'hiddenOptions',\n ];\n const objectOptions = [\n 'narg',\n 'key',\n 'alias',\n 'default',\n 'defaultDescription',\n 'config',\n 'choices',\n 'demandedOptions',\n 'demandedCommands',\n 'deprecatedOptions',\n ];\n arrayOptions.forEach(k => {\n tmpOptions[k] = (__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[k] || []).filter((k) => !localLookup[k]);\n });\n objectOptions.forEach((k) => {\n tmpOptions[k] = objFilter(__classPrivateFieldGet(this, _YargsInstance_options, \"f\")[k], k => !localLookup[k]);\n });\n tmpOptions.envPrefix = __classPrivateFieldGet(this, _YargsInstance_options, \"f\").envPrefix;\n __classPrivateFieldSet(this, _YargsInstance_options, tmpOptions, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_usage, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\")\n ? __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").reset(localLookup)\n : Usage(this, __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n __classPrivateFieldSet(this, _YargsInstance_validation, __classPrivateFieldGet(this, _YargsInstance_validation, \"f\")\n ? __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").reset(localLookup)\n : Validation(this, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n __classPrivateFieldSet(this, _YargsInstance_command, __classPrivateFieldGet(this, _YargsInstance_command, \"f\")\n ? __classPrivateFieldGet(this, _YargsInstance_command, \"f\").reset()\n : Command(__classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_validation, \"f\"), __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n if (!__classPrivateFieldGet(this, _YargsInstance_completion, \"f\"))\n __classPrivateFieldSet(this, _YargsInstance_completion, Completion(this, __classPrivateFieldGet(this, _YargsInstance_usage, \"f\"), __classPrivateFieldGet(this, _YargsInstance_command, \"f\"), __classPrivateFieldGet(this, _YargsInstance_shim, \"f\")), \"f\");\n __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").reset();\n __classPrivateFieldSet(this, _YargsInstance_completionCommand, null, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_output, '', \"f\");\n __classPrivateFieldSet(this, _YargsInstance_exitError, null, \"f\");\n __classPrivateFieldSet(this, _YargsInstance_hasOutput, false, \"f\");\n this.parsed = false;\n return this;\n }\n [kRebase](base, dir) {\n return __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").path.relative(base, dir);\n }\n [kRunYargsParserAndExecuteCommands](args, shortCircuit, calledFromCommand, commandIndex = 0, helpOnly = false) {\n var _a, _b, _c, _d;\n let skipValidation = !!calledFromCommand || helpOnly;\n args = args || __classPrivateFieldGet(this, _YargsInstance_processArgs, \"f\");\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").__ = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").y18n.__;\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration = this[kGetParserConfiguration]();\n const populateDoubleDash = !!__classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration['populate--'];\n const config = Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, \"f\").configuration, {\n 'populate--': true,\n });\n const parsed = __classPrivateFieldGet(this, _YargsInstance_shim, \"f\").Parser.detailed(args, Object.assign({}, __classPrivateFieldGet(this, _YargsInstance_options, \"f\"), {\n configuration: { 'parse-positional-numbers': false, ...config },\n }));\n const argv = Object.assign(parsed.argv, __classPrivateFieldGet(this, _YargsInstance_parseContext, \"f\"));\n let argvPromise = undefined;\n const aliases = parsed.aliases;\n let helpOptSet = false;\n let versionOptSet = false;\n Object.keys(argv).forEach(key => {\n if (key === __classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\") && argv[key]) {\n helpOptSet = true;\n }\n else if (key === __classPrivateFieldGet(this, _YargsInstance_versionOpt, \"f\") && argv[key]) {\n versionOptSet = true;\n }\n });\n argv.$0 = this.$0;\n this.parsed = parsed;\n if (commandIndex === 0) {\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").clearCachedHelpMessage();\n }\n try {\n this[kGuessLocale]();\n if (shortCircuit) {\n return this[kPostProcess](argv, populateDoubleDash, !!calledFromCommand, false);\n }\n if (__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")) {\n const helpCmds = [__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")]\n .concat(aliases[__classPrivateFieldGet(this, _YargsInstance_helpOpt, \"f\")] || [])\n .filter(k => k.length > 1);\n if (helpCmds.includes('' + argv._[argv._.length - 1])) {\n argv._.pop();\n helpOptSet = true;\n }\n }\n __classPrivateFieldSet(this, _YargsInstance_isGlobalContext, false, \"f\");\n const handlerKeys = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").getCommands();\n const requestCompletions = ((_a = __classPrivateFieldGet(this, _YargsInstance_completion, \"f\")) === null || _a === void 0 ? void 0 : _a.completionKey)\n ? [\n (_b = __classPrivateFieldGet(this, _YargsInstance_completion, \"f\")) === null || _b === void 0 ? void 0 : _b.completionKey,\n ...((_d = this.getAliases()[(_c = __classPrivateFieldGet(this, _YargsInstance_completion, \"f\")) === null || _c === void 0 ? void 0 : _c.completionKey]) !== null && _d !== void 0 ? _d : []),\n ].some((key) => Object.prototype.hasOwnProperty.call(argv, key))\n : false;\n const skipRecommendation = helpOptSet || requestCompletions || helpOnly;\n if (argv._.length) {\n if (handlerKeys.length) {\n let firstUnknownCommand;\n for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) {\n cmd = String(argv._[i]);\n if (handlerKeys.includes(cmd) && cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) {\n const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runCommand(cmd, this, parsed, i + 1, helpOnly, helpOptSet || versionOptSet || helpOnly);\n return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);\n }\n else if (!firstUnknownCommand &&\n cmd !== __classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) {\n firstUnknownCommand = cmd;\n break;\n }\n }\n if (!__classPrivateFieldGet(this, _YargsInstance_command, \"f\").hasDefaultCommand() &&\n __classPrivateFieldGet(this, _YargsInstance_recommendCommands, \"f\") &&\n firstUnknownCommand &&\n !skipRecommendation) {\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").recommendCommands(firstUnknownCommand, handlerKeys);\n }\n }\n if (__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\") &&\n argv._.includes(__classPrivateFieldGet(this, _YargsInstance_completionCommand, \"f\")) &&\n !requestCompletions) {\n if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n setBlocking(true);\n this.showCompletionScript();\n this.exit(0);\n }\n }\n if (__classPrivateFieldGet(this, _YargsInstance_command, \"f\").hasDefaultCommand() && !skipRecommendation) {\n const innerArgv = __classPrivateFieldGet(this, _YargsInstance_command, \"f\").runCommand(null, this, parsed, 0, helpOnly, helpOptSet || versionOptSet || helpOnly);\n return this[kPostProcess](innerArgv, populateDoubleDash, !!calledFromCommand, false);\n }\n if (requestCompletions) {\n if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n setBlocking(true);\n args = [].concat(args);\n const completionArgs = args.slice(args.indexOf(`--${__classPrivateFieldGet(this, _YargsInstance_completion, \"f\").completionKey}`) + 1);\n __classPrivateFieldGet(this, _YargsInstance_completion, \"f\").getCompletion(completionArgs, (err, completions) => {\n if (err)\n throw new YError(err.message);\n (completions || []).forEach(completion => {\n __classPrivateFieldGet(this, _YargsInstance_logger, \"f\").log(completion);\n });\n this.exit(0);\n });\n return this[kPostProcess](argv, !populateDoubleDash, !!calledFromCommand, false);\n }\n if (!__classPrivateFieldGet(this, _YargsInstance_hasOutput, \"f\")) {\n if (helpOptSet) {\n if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n setBlocking(true);\n skipValidation = true;\n this.showHelp(message => {\n __classPrivateFieldGet(this, _YargsInstance_logger, \"f\").log(message);\n this.exit(0);\n });\n }\n else if (versionOptSet) {\n if (__classPrivateFieldGet(this, _YargsInstance_exitProcess, \"f\"))\n setBlocking(true);\n skipValidation = true;\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").showVersion('log');\n this.exit(0);\n }\n }\n if (!skipValidation && __classPrivateFieldGet(this, _YargsInstance_options, \"f\").skipValidation.length > 0) {\n skipValidation = Object.keys(argv).some(key => __classPrivateFieldGet(this, _YargsInstance_options, \"f\").skipValidation.indexOf(key) >= 0 && argv[key] === true);\n }\n if (!skipValidation) {\n if (parsed.error)\n throw new YError(parsed.error.message);\n if (!requestCompletions) {\n const validation = this[kRunValidation](aliases, {}, parsed.error);\n if (!calledFromCommand) {\n argvPromise = applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), true);\n }\n argvPromise = this[kValidateAsync](validation, argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv);\n if (isPromise(argvPromise) && !calledFromCommand) {\n argvPromise = argvPromise.then(() => {\n return applyMiddleware(argv, this, __classPrivateFieldGet(this, _YargsInstance_globalMiddleware, \"f\").getMiddleware(), false);\n });\n }\n }\n }\n }\n catch (err) {\n if (err instanceof YError)\n __classPrivateFieldGet(this, _YargsInstance_usage, \"f\").fail(err.message, err);\n else\n throw err;\n }\n return this[kPostProcess](argvPromise !== null && argvPromise !== void 0 ? argvPromise : argv, populateDoubleDash, !!calledFromCommand, true);\n }\n [kRunValidation](aliases, positionalMap, parseErrors, isDefaultCommand) {\n const demandedOptions = { ...this.getDemandedOptions() };\n return (argv) => {\n if (parseErrors)\n throw new YError(parseErrors.message);\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").nonOptionCount(argv);\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").requiredArguments(argv, demandedOptions);\n let failedStrictCommands = false;\n if (__classPrivateFieldGet(this, _YargsInstance_strictCommands, \"f\")) {\n failedStrictCommands = __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownCommands(argv);\n }\n if (__classPrivateFieldGet(this, _YargsInstance_strict, \"f\") && !failedStrictCommands) {\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownArguments(argv, aliases, positionalMap, !!isDefaultCommand);\n }\n else if (__classPrivateFieldGet(this, _YargsInstance_strictOptions, \"f\")) {\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").unknownArguments(argv, aliases, {}, false, false);\n }\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").limitedChoices(argv);\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").implications(argv);\n __classPrivateFieldGet(this, _YargsInstance_validation, \"f\").conflicting(argv);\n };\n }\n [kSetHasOutput]() {\n __classPrivateFieldSet(this, _YargsInstance_hasOutput, true, \"f\");\n }\n [kTrackManuallySetKeys](keys) {\n if (typeof keys === 'string') {\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[keys] = true;\n }\n else {\n for (const k of keys) {\n __classPrivateFieldGet(this, _YargsInstance_options, \"f\").key[k] = true;\n }\n }\n }\n}\nexport function isYargsInstance(y) {\n return !!y && typeof y.getInternalMethods === 'function';\n}\n","'use strict';\n\n// Bootstraps yargs for ESM:\nimport esmPlatformShim from './lib/platform-shims/esm.mjs';\nimport {YargsFactory} from './build/lib/yargs-factory.js';\n\nconst Yargs = YargsFactory(esmPlatformShim);\nexport default Yargs;\n\nexport {Yargs as 'module.exports'};\n","import type { AccessControlClient } from \"./client.js\";\n\nimport { logger } from \"../lib/logger.js\";\n\nexport interface AccessControlConfig {\n client?: AccessControlClient;\n enabled: boolean;\n serverName?: string;\n}\n\n/**\n * Authorizes MCP servers based on access control configuration.\n * Queries backend with full client info for authorization decisions.\n */\nexport class AccessControlAuthorizer {\n private client?: AccessControlClient;\n private enabled: boolean;\n private lastBlockReason?: string;\n private serverName?: string;\n\n constructor(config: AccessControlConfig) {\n this.enabled = config.enabled;\n this.client = config.client;\n this.serverName = config.serverName;\n\n logger.info(\"AccessControlAuthorizer initialized\", {\n enabled: this.enabled,\n hasClient: !!this.client,\n serverName: this.serverName,\n });\n }\n\n /**\n * Get human-readable reason for why a server was blocked.\n * Returns the reason from the last authorization check, or a default message.\n *\n * @returns Reason message\n */\n getBlockReason(): string {\n if (this.lastBlockReason) {\n return this.lastBlockReason;\n }\n // Default message with server name if available\n const serverPart = this.serverName ? ` '${this.serverName}'` : \"\";\n return `MCP server${serverPart} is not authorized for use in your organization and has been blocked by Onyx.`;\n }\n\n /**\n * Check if access is allowed by querying the backend.\n * Always fails open (allows) if backend is unavailable or not configured.\n * Stores the block reason from the backend for later retrieval.\n *\n * @returns Promise resolving to true if allowed, false if blocked\n */\n async isAllowed(): Promise<boolean> {\n // If access control not enabled, allow everything\n if (!this.enabled) {\n return true;\n }\n\n // Check with backend if client is available\n if (this.client) {\n try {\n const response = await this.client.authorize();\n if (response.action === \"block\") {\n // Store the reason from backend for user-facing error messages, or use default with server name\n if (response.reason) {\n this.lastBlockReason = response.reason;\n } else {\n const serverPart = this.serverName ? ` '${this.serverName}'` : \"\";\n this.lastBlockReason = `MCP server${serverPart} is not authorized for use in your organization and has been blocked by Onyx.`;\n }\n return false;\n }\n return true;\n } catch (error) {\n logger.error(\"Access control authorization failed with unexpected error\", {\n error: String(error),\n });\n // DEFENSIVE: client.authorize() handles all errors internally and always\n // returns an AccessControlResponse, so this catch is normally unreachable.\n // However, we keep it as defensive fail-open behavior for unexpected errors.\n return true;\n }\n }\n\n // No client configured - allow by default (shouldn't happen if enabled=true with URL)\n logger.warn(\"No access control client configured, allowing by default\");\n return true;\n }\n}\n","import type { SessionData } from \"../utils/getUserData.js\";\n\nimport { compressClientInfo } from \"../lib/compress-client-info.js\";\nimport { logger } from \"../lib/logger.js\";\n\nexport interface AccessControlClientConfig {\n apiKey: string;\n headers: Record<string, string>;\n sessionData: SessionData;\n timeoutMs: number;\n url: string;\n}\n\nexport interface AccessControlResponse {\n action: \"allow\" | \"block\";\n reason?: string;\n}\n\n/**\n * Client for checking MCP server access control with backend API.\n * Always fails open (allows) when backend is unreachable.\n */\nexport class AccessControlClient {\n private clientInfoBase64: string;\n private config: AccessControlClientConfig;\n\n constructor(config: AccessControlClientConfig) {\n this.config = config;\n this.clientInfoBase64 = this.getClientInfoBase64();\n logger.info(\"AccessControlClient initialized\", {\n timeoutMs: config.timeoutMs,\n url: config.url,\n });\n }\n\n /**\n * Authorize by querying the backend with full client info.\n * Always fails open (allows) on any error.\n *\n * @returns Access control response\n */\n async authorize(): Promise<AccessControlResponse> {\n try {\n // Try to get decision from backend\n const response = await this.sendAuthorizeRequest();\n\n logger.debug(\"Access control check successful\", {\n action: response.action,\n });\n\n return response;\n } catch (error) {\n logger.warn(\"Access control check failed, failing open (allowing by default)\", {\n error: String(error),\n });\n\n // Always fail open (allow by default for better UX)\n return { action: \"allow\" };\n }\n }\n\n /**\n * Compress and base64-encode client info for URL.\n * Matches scanner pattern.\n */\n private getClientInfoBase64(): string {\n return compressClientInfo(this.config.sessionData);\n }\n\n /**\n * Send authorization request to backend with compressed client info in URL.\n * Matches scanner URL pattern: ${url}/${apiKey}/mcp/${clientInfoBase64}\n *\n * @returns Access control response\n * @throws Error if request fails\n */\n private async sendAuthorizeRequest(): Promise<AccessControlResponse> {\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), this.config.timeoutMs);\n\n try {\n // Build URL with API key and compressed client info (matching scanner pattern)\n const checkUrl = `${this.config.url}/${this.config.apiKey}/mcp/${this.clientInfoBase64}`;\n\n const response = await fetch(checkUrl, {\n headers: {\n ...this.config.headers,\n },\n method: \"POST\",\n signal: controller.signal,\n });\n\n if (!response.ok) {\n throw new Error(`Access control service returned ${response.status}: ${response.statusText}`);\n }\n\n const result = (await response.json()) as AccessControlResponse;\n\n // Validate response format\n if (!result.action || ![\"allow\", \"block\"].includes(result.action)) {\n throw new Error(`Invalid access control response format: action=\"${result.action}\"`);\n }\n\n return result;\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new Error(`Access control check timed out after ${this.config.timeoutMs}ms`);\n }\n throw error;\n } finally {\n clearTimeout(timeout);\n }\n }\n\n}\n","import { execFile } from \"node:child_process\";\nimport { platform } from \"node:os\";\n\nimport { logger } from \"../lib/logger.js\";\nimport { captureExceptionSafe } from \"../lib/sentry.js\";\n\n/**\n * Opens the given URL in the user's default browser.\n *\n * Cross-platform support:\n * - macOS: uses `open`\n * - Windows: uses PowerShell Start-Process with Base64-encoded command (injection-safe)\n * - Linux: uses `xdg-open`\n *\n * @param url The URL to open\n * @returns A promise that resolves when the browser command is executed\n */\nexport async function openBrowser(url: string | URL): Promise<void> {\n const urlString = url.toString();\n const os = platform();\n const redactedUrl = redactUrlForLogging(urlString);\n\n return new Promise((resolve, reject) => {\n let command: string;\n let args: string[];\n\n if (os === \"win32\") {\n // Windows - use PowerShell with Base64-encoded command to prevent injection\n // This is the same approach used by the popular 'open' npm package.\n // The command is Base64-encoded (UTF-16LE) so no shell metacharacters can escape.\n const psCommand = `Start-Process ${escapePowerShellArgument(urlString)}`;\n const encodedCommand = encodePowerShellCommand(psCommand);\n\n command = getPowerShellPath();\n args = [\"-NoProfile\", \"-NonInteractive\", \"-ExecutionPolicy\", \"Bypass\", \"-EncodedCommand\", encodedCommand];\n } else if (os === \"darwin\") {\n // macOS\n command = \"open\";\n args = [urlString];\n } else {\n // Linux and others - use xdg-open\n command = \"xdg-open\";\n args = [urlString];\n }\n\n execFile(command, args, (error, _stdout, stderr) => {\n if (error) {\n const errorContext = {\n command,\n os,\n stderr,\n url: redactedUrl,\n };\n\n logger.warn(\"Failed to open browser automatically\", {\n ...errorContext,\n error: error.message,\n });\n\n captureExceptionSafe(error, errorContext, {\n feature: \"auth\",\n module: \"browser\",\n operation: \"openBrowser\",\n });\n\n const launchError = new Error(\n `Failed to open browser: ${error.message} (command: ${command}, os: ${os}, url: ${redactedUrl})`\n );\n launchError.cause = error;\n reject(launchError);\n } else {\n logger.debug(\"Browser opened successfully\", { url: redactedUrl });\n resolve();\n }\n });\n });\n}\n\n/**\n * Encodes a PowerShell command as Base64 UTF-16LE for use with -EncodedCommand.\n * This is the safest way to pass commands to PowerShell as it prevents any\n * shell metacharacter interpretation.\n */\nfunction encodePowerShellCommand(command: string): string {\n // PowerShell's -EncodedCommand expects UTF-16LE encoded Base64\n const buffer = Buffer.from(command, \"utf16le\");\n return buffer.toString(\"base64\");\n}\n\n/**\n * Escapes a string for use as a PowerShell single-quoted string argument.\n * Single quotes inside the string are escaped by doubling them.\n */\nfunction escapePowerShellArgument(value: string): string {\n return `'${value.replaceAll(\"'\", \"''\")}'`;\n}\n\n/**\n * Gets the path to Windows PowerShell.\n * PowerShell is included by default since Windows 7 SP1 and Windows Server 2008 R2.\n */\nfunction getPowerShellPath(): string {\n const systemRoot = process.env.SYSTEMROOT || process.env.windir || \"C:\\\\Windows\";\n return `${systemRoot}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe`;\n}\n\n/**\n * Redacts sensitive query parameters from a URL for safe logging.\n * Preserves the base URL structure while hiding potentially sensitive data.\n *\n * @param url The URL to redact\n * @returns A redacted version of the URL safe for logging\n */\nfunction redactUrlForLogging(url: string): string {\n try {\n const parsed = new URL(url);\n if (parsed.search) {\n return `${parsed.protocol}//${parsed.host}${parsed.pathname}?[REDACTED]`;\n }\n return `${parsed.protocol}//${parsed.host}${parsed.pathname}`;\n } catch {\n // If URL parsing fails, return a generic redacted string\n return \"[INVALID_URL]\";\n }\n}\n","import { createServer, type Server } from \"node:http\";\nimport { URL } from \"node:url\";\n\nimport { logger } from \"../lib/logger.js\";\n\n/**\n * Port range for OAuth callback server (IANA dynamic/private ports)\n */\nconst MIN_PORT = 49152;\nconst MAX_PORT = 65535;\nconst MAX_PORT_ATTEMPTS = 5;\n\nexport interface CallbackServerOptions {\n /**\n * Maximum number of port binding attempts before giving up.\n * Default: 5\n */\n maxAttempts?: number;\n /**\n * Preferred port to use. If unavailable, random ports will be tried.\n */\n preferredPort?: number;\n /**\n * Timeout in milliseconds to wait for the callback.\n * Default: 5 minutes (300000ms)\n */\n timeoutMs?: number;\n}\n\nexport interface CallbackServerResult {\n /**\n * The authorization code received from the OAuth server.\n */\n code: string;\n /**\n * The state parameter, if provided.\n */\n state?: string;\n}\n\n/**\n * Generates a random port number in the dynamic/private port range.\n */\nfunction getRandomPort(): number {\n return Math.floor(Math.random() * (MAX_PORT - MIN_PORT + 1)) + MIN_PORT;\n}\n\n/**\n * Attempts to start the HTTP server on the given port.\n * Returns a promise that resolves with the server if successful, or rejects if the port is in use.\n */\nfunction tryListenOnPort(server: Server, port: number): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const onError = (err: NodeJS.ErrnoException) => {\n server.removeListener(\"listening\", onListening);\n reject(err);\n };\n\n const onListening = () => {\n server.removeListener(\"error\", onError);\n resolve();\n };\n\n server.once(\"error\", onError);\n server.once(\"listening\", onListening);\n server.listen(port, \"127.0.0.1\");\n });\n}\n\nconst DEFAULT_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes\n\n/**\n * HTML page shown to the user after successful authorization.\n */\nconst SUCCESS_HTML = `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Authorization Successful</title>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 100vh;\n margin: 0;\n background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);\n color: #fff;\n }\n .container {\n text-align: center;\n padding: 2rem;\n }\n .checkmark {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: #10b981;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 1.5rem;\n animation: pop 0.3s ease-out;\n }\n .checkmark svg {\n width: 40px;\n height: 40px;\n stroke: white;\n stroke-width: 3;\n }\n h1 {\n margin: 0 0 0.5rem;\n font-size: 1.75rem;\n font-weight: 600;\n }\n p {\n margin: 0;\n color: #a0aec0;\n font-size: 1rem;\n }\n @keyframes pop {\n 0% { transform: scale(0); }\n 50% { transform: scale(1.1); }\n 100% { transform: scale(1); }\n }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"checkmark\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M5 13l4 4L19 7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <h1>Authorization Successful</h1>\n <p>You can close this window and return to the terminal.</p>\n </div>\n <script>setTimeout(() => window.close(), 3000);</script>\n</body>\n</html>`;\n\n/**\n * Starts a local HTTP server to receive the OAuth callback.\n * Uses random port selection with retry logic to handle port conflicts.\n *\n * @returns A promise that resolves with the port number and a function to wait for the callback.\n */\nexport async function startCallbackServer(options: CallbackServerOptions = {}): Promise<{\n callbackUrl: string;\n close: () => Promise<void>;\n port: number;\n waitForCallback: () => Promise<CallbackServerResult>;\n}> {\n const { maxAttempts = MAX_PORT_ATTEMPTS, preferredPort, timeoutMs = DEFAULT_TIMEOUT_MS } = options;\n\n let resolveCallback: (result: CallbackServerResult) => void;\n let rejectCallback: (error: Error) => void;\n // Using an object to hold the timeout ID so it can be set after server creation\n // but still referenced in the close() function\n const timeoutRef: { id?: ReturnType<typeof setTimeout> } = {};\n\n const callbackPromise = new Promise<CallbackServerResult>((resolve, reject) => {\n resolveCallback = resolve;\n rejectCallback = reject;\n });\n\n // Track the actual bound port for use in request handler\n let boundPort: number;\n\n const server = createServer((req, res) => {\n // Ignore favicon requests\n if (req.url === \"/favicon.ico\") {\n res.writeHead(404);\n res.end();\n return;\n }\n\n // Only handle the callback path\n if (!req.url?.startsWith(\"/callback\")) {\n res.writeHead(404);\n res.end(\"Not Found\");\n return;\n }\n\n try {\n const parsedUrl = new URL(req.url, `http://localhost:${boundPort}`);\n const code = parsedUrl.searchParams.get(\"code\");\n const error = parsedUrl.searchParams.get(\"error\");\n const errorDescription = parsedUrl.searchParams.get(\"error_description\");\n const state = parsedUrl.searchParams.get(\"state\");\n\n if (error) {\n logger.error(\"OAuth authorization error\", { error, errorDescription });\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(getErrorHtml(error, errorDescription || undefined));\n clearTimeout(timeoutRef.id);\n rejectCallback(\n new Error(`OAuth authorization failed: ${error}${errorDescription ? ` - ${errorDescription}` : \"\"}`)\n );\n return;\n }\n\n if (!code) {\n logger.error(\"OAuth callback missing authorization code\");\n res.writeHead(400, { \"Content-Type\": \"text/html\" });\n res.end(getErrorHtml(\"missing_code\", \"No authorization code was provided\"));\n clearTimeout(timeoutRef.id);\n rejectCallback(new Error(\"OAuth callback missing authorization code\"));\n return;\n }\n\n logger.info(\"OAuth authorization code received\", {\n codePrefix: `${code.substring(0, 10)}...`,\n hasState: !!state,\n });\n\n res.writeHead(200, { \"Content-Type\": \"text/html\" });\n res.end(SUCCESS_HTML);\n\n clearTimeout(timeoutRef.id);\n resolveCallback({ code, state: state || undefined });\n\n // Close server after a short delay to ensure response is sent\n setTimeout(() => server.close(), 1000);\n } catch (err) {\n logger.error(\"Error processing OAuth callback\", { error: String(err) });\n res.writeHead(500);\n res.end(\"Internal Server Error\");\n clearTimeout(timeoutRef.id);\n rejectCallback(err instanceof Error ? err : new Error(String(err)));\n }\n });\n\n // Set up timeout (now that server exists)\n timeoutRef.id = setTimeout(() => {\n rejectCallback(new Error(`OAuth callback timeout after ${timeoutMs}ms`));\n server.close();\n }, timeoutMs);\n\n // Try to bind to a port with retry logic\n const attemptedPorts: number[] = [];\n let lastError: Error | undefined;\n\n while (attemptedPorts.length < maxAttempts) {\n // First attempt uses preferred port if provided, otherwise random\n let portToTry: number;\n if (attemptedPorts.length === 0 && preferredPort !== undefined) {\n portToTry = preferredPort;\n } else {\n // Generate a random port that hasn't been tried yet\n portToTry = getRandomPort();\n while (attemptedPorts.includes(portToTry)) {\n portToTry = getRandomPort();\n }\n }\n attemptedPorts.push(portToTry);\n\n try {\n await tryListenOnPort(server, portToTry);\n boundPort = portToTry;\n const callbackUrl = `http://localhost:${boundPort}/callback`;\n logger.info(\"OAuth callback server started\", { attempt: attemptedPorts.length, callbackUrl, port: boundPort });\n\n return {\n callbackUrl,\n close: () =>\n new Promise<void>((resolve) => {\n clearTimeout(timeoutRef.id);\n server.close(() => resolve());\n }),\n port: boundPort,\n waitForCallback: () => callbackPromise,\n };\n } catch (err) {\n const nodeErr = err as NodeJS.ErrnoException;\n if (nodeErr.code === \"EADDRINUSE\") {\n logger.debug(\"Port in use, trying another port\", {\n attempt: attemptedPorts.length,\n maxAttempts,\n port: portToTry,\n });\n lastError = new Error(`Port ${portToTry} is already in use`);\n } else {\n // For non-EADDRINUSE errors, clean up and throw immediately\n clearTimeout(timeoutRef.id);\n server.close();\n throw err;\n }\n }\n }\n\n // All attempts failed\n clearTimeout(timeoutRef.id);\n server.close();\n throw new Error(\n `Failed to start OAuth callback server after ${maxAttempts} attempts. ` +\n `Tried ports: ${attemptedPorts.join(\", \")}. Last error: ${lastError?.message || \"unknown\"}`\n );\n}\n\nfunction escapeHtml(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n}\n\n/**\n * HTML page shown to the user when authorization fails.\n */\nfunction getErrorHtml(error: string, description?: string): string {\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Authorization Failed</title>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n display: flex;\n justify-content: center;\n align-items: center;\n min-height: 100vh;\n margin: 0;\n background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);\n color: #fff;\n }\n .container {\n text-align: center;\n padding: 2rem;\n max-width: 400px;\n }\n .error-icon {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: #ef4444;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 1.5rem;\n }\n .error-icon svg {\n width: 40px;\n height: 40px;\n stroke: white;\n stroke-width: 3;\n }\n h1 {\n margin: 0 0 0.5rem;\n font-size: 1.75rem;\n font-weight: 600;\n }\n .error-code {\n color: #f87171;\n font-family: monospace;\n margin-bottom: 0.5rem;\n }\n p {\n margin: 0;\n color: #a0aec0;\n font-size: 1rem;\n }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"error-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M6 18L18 6M6 6l12 12\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <h1>Authorization Failed</h1>\n <p class=\"error-code\">${escapeHtml(error)}</p>\n ${description ? `<p>${escapeHtml(description)}</p>` : \"\"}\n </div>\n</body>\n</html>`;\n}\n","import type { OAuthClientInformationFull, OAuthTokens } from \"@modelcontextprotocol/sdk/shared/auth.js\";\n\nimport { createHash } from \"node:crypto\";\nimport { chmod, mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport { logger } from \"../lib/logger.js\";\nimport { normalizeUrl } from \"../utils/normalizeUrl.js\";\n\nexport interface OAuthCredentialStoreOptions {\n /**\n * Directory to store OAuth credentials.\n * Defaults to ~/.onyx/mcp-gateway/oauth/\n */\n storageDir: string;\n}\n\n/**\n * Stored credentials structure persisted to disk.\n */\nexport interface StoredCredentials {\n /**\n * DCR client registration information.\n */\n clientInfo?: OAuthClientInformationFull;\n /**\n * Timestamp when the credentials were stored (ISO string).\n */\n createdAt: string;\n /**\n * The original server URL these credentials are for.\n */\n serverUrl: string;\n /**\n * OAuth tokens (access_token, refresh_token, etc.).\n */\n tokens?: OAuthTokens;\n /**\n * Timestamp when tokens were obtained (ISO string).\n * Used to calculate token expiration.\n */\n tokensObtainedAt?: string;\n /**\n * Last update timestamp (ISO string).\n */\n updatedAt: string;\n}\n\n/**\n * File-based credential store for OAuth credentials.\n * Stores credentials in JSON files keyed by server URL hash.\n */\nexport class OAuthCredentialStore {\n private readonly storageDir: string;\n\n constructor(options: OAuthCredentialStoreOptions) {\n this.storageDir = options.storageDir;\n }\n\n /**\n * Deletes stored credentials for a server URL.\n */\n async delete(serverUrl: string): Promise<void> {\n // Normalize URL to ensure consistent key generation\n const normalizedUrl = normalizeUrl(serverUrl);\n const filePath = this.getFilePath(normalizedUrl);\n\n try {\n await rm(filePath);\n logger.debug(\"Deleted stored credentials\", { filePath, serverUrl: normalizedUrl });\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n logger.warn(\"Failed to delete stored credentials\", {\n error: String(error),\n filePath,\n serverUrl: normalizedUrl,\n });\n }\n }\n }\n\n /**\n * Checks if stored credentials have a refresh token.\n */\n hasRefreshToken(credentials: StoredCredentials): boolean {\n return !!credentials.tokens?.refresh_token;\n }\n\n /**\n * Checks if stored credentials have a valid (non-expired) access token.\n */\n hasValidAccessToken(credentials: StoredCredentials): boolean {\n return !!credentials.tokens?.access_token && !this.isAccessTokenExpired(credentials);\n }\n\n /**\n * Checks if the stored access token is expired.\n * Returns true if expired or if expiration cannot be determined.\n */\n isAccessTokenExpired(credentials: StoredCredentials): boolean {\n if (!credentials.tokens || !credentials.tokensObtainedAt) {\n return true;\n }\n\n const { expires_in } = credentials.tokens;\n if (!expires_in) {\n // No expiration info - assume not expired\n return false;\n }\n\n const obtainedAt = new Date(credentials.tokensObtainedAt).getTime();\n const expiresAt = obtainedAt + expires_in * 1000;\n const now = Date.now();\n\n // Add 30 second buffer to avoid edge cases\n const isExpired = now >= expiresAt - 30000;\n\n logger.debug(\"Checked access token expiration\", {\n expiresAt: new Date(expiresAt).toISOString(),\n expiresIn: expires_in,\n isExpired,\n now: new Date(now).toISOString(),\n obtainedAt: credentials.tokensObtainedAt,\n });\n\n return isExpired;\n }\n\n /**\n * Loads stored credentials for a server URL.\n * Returns undefined if no credentials exist or if they're invalid.\n */\n async load(serverUrl: string): Promise<StoredCredentials | undefined> {\n // Normalize URL to ensure consistent key generation\n const normalizedUrl = normalizeUrl(serverUrl);\n const filePath = this.getFilePath(normalizedUrl);\n\n try {\n const content = await readFile(filePath, \"utf-8\");\n const credentials = JSON.parse(content) as StoredCredentials;\n\n // Validate the stored credentials match the requested server (using normalized URL)\n // Also accept credentials stored with the original URL format for backward compatibility\n const storedUrlNormalized = normalizeUrl(credentials.serverUrl);\n if (storedUrlNormalized !== normalizedUrl) {\n logger.warn(\"Credential file server URL mismatch\", {\n expected: normalizedUrl,\n filePath,\n found: credentials.serverUrl,\n });\n return undefined;\n }\n\n logger.debug(\"Loaded stored credentials\", {\n clientId: credentials.clientInfo?.client_id,\n hasRefreshToken: !!credentials.tokens?.refresh_token,\n hasTokens: !!credentials.tokens,\n serverUrl: normalizedUrl,\n });\n\n return credentials;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n // File doesn't exist - no stored credentials\n logger.debug(\"No stored credentials found\", { serverUrl: normalizedUrl });\n return undefined;\n }\n\n logger.warn(\"Failed to load stored credentials\", {\n error: String(error),\n filePath,\n serverUrl: normalizedUrl,\n });\n return undefined;\n }\n }\n\n /**\n * Saves credentials to disk.\n */\n async save(credentials: StoredCredentials): Promise<void> {\n await this.ensureStorageDir();\n\n const filePath = this.getFilePath(credentials.serverUrl);\n const content = JSON.stringify(credentials, null, 2);\n\n try {\n await writeFile(filePath, content, { encoding: \"utf-8\", mode: 0o600 });\n // Ensure permissions are correct even if file existed\n await chmod(filePath, 0o600);\n\n logger.debug(\"Saved credentials to disk\", {\n clientId: credentials.clientInfo?.client_id,\n filePath,\n hasTokens: !!credentials.tokens,\n serverUrl: credentials.serverUrl,\n });\n } catch (error) {\n logger.error(\"Failed to save credentials\", {\n error: String(error),\n filePath,\n serverUrl: credentials.serverUrl,\n });\n throw error;\n }\n }\n\n /**\n * Updates specific fields in stored credentials.\n * Creates new credentials if none exist.\n */\n async update(\n serverUrl: string,\n updates: Partial<Pick<StoredCredentials, \"clientInfo\" | \"tokens\" | \"tokensObtainedAt\">>\n ): Promise<StoredCredentials> {\n // Normalize URL to ensure consistent key generation and storage\n const normalizedUrl = normalizeUrl(serverUrl);\n const existing = await this.load(normalizedUrl);\n const now = new Date().toISOString();\n\n const credentials: StoredCredentials = existing\n ? {\n ...existing,\n ...updates,\n // Update serverUrl to normalized form for consistency\n serverUrl: normalizedUrl,\n updatedAt: now,\n }\n : {\n createdAt: now,\n serverUrl: normalizedUrl,\n updatedAt: now,\n ...updates,\n };\n\n await this.save(credentials);\n return credentials;\n }\n\n /**\n * Ensures the storage directory exists with proper permissions.\n */\n private async ensureStorageDir(): Promise<void> {\n try {\n await mkdir(this.storageDir, { mode: 0o700, recursive: true });\n } catch (error) {\n // Directory may already exist\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n }\n\n /**\n * Generates a URL-safe filename from a server URL.\n * Uses SHA-256 hash truncated to 16 chars for brevity.\n */\n private generateKey(serverUrl: string): string {\n const hash = createHash(\"sha256\").update(serverUrl).digest(\"hex\");\n return hash.substring(0, 16);\n }\n\n /**\n * Gets the file path for a server's credentials.\n */\n private getFilePath(serverUrl: string): string {\n const key = this.generateKey(serverUrl);\n return join(this.storageDir, `${key}.json`);\n }\n}\n\n","import type { OAuthProviderConfig } from \"../config/config.js\";\n\nimport { BUILD_TIME_CONFIG } from \"../config/config.generated.js\";\nimport { logger } from \"../lib/logger.js\";\n\n/**\n * Pre-configured OAuth providers loaded from build-time config.\n * These providers have their credentials embedded at build time.\n */\nexport const OAUTH_PROVIDERS: OAuthProviderConfig[] = BUILD_TIME_CONFIG.OAUTH_PROVIDERS;\n\n/**\n * Finds a pre-configured OAuth provider that matches the given server URL.\n *\n * @param serverUrl The MCP server URL to match against provider URL patterns\n * @returns The matching provider config, or undefined if no match found\n */\nexport function findProviderForUrl(serverUrl: string | URL): OAuthProviderConfig | undefined {\n const serverUrlObj = typeof serverUrl === \"string\" ? new URL(serverUrl) : serverUrl;\n const hostname = serverUrlObj.hostname.toLowerCase();\n\n for (const provider of OAUTH_PROVIDERS) {\n for (const pattern of provider.urlPatterns) {\n // Pattern can be a hostname or a hostname with path prefix\n const patternLower = pattern.toLowerCase();\n\n // Check if pattern matches hostname (with or without subdomains)\n if (matchesHostname(hostname, patternLower)) {\n logger.debug(\"Found matching OAuth provider for URL\", {\n hostname,\n pattern,\n providerId: provider.id,\n providerName: provider.name,\n });\n return provider;\n }\n }\n }\n\n logger.debug(\"No pre-configured OAuth provider found for URL\", {\n hostname,\n serverUrl: serverUrlObj.toString(),\n });\n return undefined;\n}\n\n/**\n * Gets a provider by its ID.\n *\n * @param providerId The provider ID (e.g., \"github\")\n * @returns The provider config, or undefined if not found\n */\nexport function getProviderById(providerId: string): OAuthProviderConfig | undefined {\n return OAUTH_PROVIDERS.find((p) => p.id === providerId);\n}\n\n/**\n * Lists all configured OAuth providers.\n * Useful for debugging and admin interfaces.\n *\n * @returns Array of provider summaries (without secrets)\n */\nexport function listProviders(): Array<{\n hasClientSecret: boolean;\n id: string;\n name: string;\n urlPatterns: string[];\n}> {\n return OAUTH_PROVIDERS.map((p) => ({\n hasClientSecret: !!p.clientSecret,\n id: p.id,\n name: p.name,\n urlPatterns: p.urlPatterns,\n }));\n}\n\n/**\n * Checks if a hostname matches a pattern.\n * Supports exact matches and subdomain matches.\n *\n * @param hostname The hostname to check (e.g., \"api.github.com\")\n * @param pattern The pattern to match against (e.g., \"github.com\")\n * @returns true if the hostname matches the pattern\n */\nfunction matchesHostname(hostname: string, pattern: string): boolean {\n // Exact match\n if (hostname === pattern) {\n return true;\n }\n\n // Subdomain match: hostname ends with \".pattern\"\n // e.g., \"api.github.com\" matches \"github.com\"\n if (hostname.endsWith(`.${pattern}`)) {\n return true;\n }\n\n return false;\n}\n","import {\n discoverAuthorizationServerMetadata,\n discoverOAuthProtectedResourceMetadata,\n exchangeAuthorization,\n extractResourceMetadataUrl,\n refreshAuthorization,\n registerClient,\n startAuthorization,\n} from \"@modelcontextprotocol/sdk/client/auth.js\";\nimport type {\n OAuthClientInformationFull,\n OAuthClientMetadata,\n OAuthProtectedResourceMetadata,\n OAuthTokens,\n} from \"@modelcontextprotocol/sdk/shared/auth.js\";\n\nimport type { OAuthProviderConfig } from \"../config/config.js\";\nimport { logger } from \"../lib/logger.js\";\nimport { normalizeUrl } from \"../utils/normalizeUrl.js\";\nimport { openBrowser } from \"./browser.js\";\nimport { startCallbackServer } from \"./callbackServer.js\";\nimport type { OAuthCredentialStore, StoredCredentials } from \"./OAuthCredentialStore.js\";\nimport { findProviderForUrl } from \"./providers.js\";\n\nexport interface OAuthFlowOptions {\n /**\n * Custom client metadata for DCR registration.\n * If not provided, default metadata will be used.\n */\n clientMetadata?: Partial<OAuthClientMetadata>;\n /**\n * Credential store for persisting OAuth credentials.\n * If provided, credentials will be loaded from and saved to disk.\n */\n credentialStore?: OAuthCredentialStore;\n /**\n * OAuth scope to request.\n */\n scope?: string;\n /**\n * Timeout in milliseconds for the OAuth callback.\n * Default: 5 minutes\n */\n timeoutMs?: number;\n}\n\nexport interface OAuthFlowResult {\n clientInfo: OAuthClientInformationFull;\n /**\n * Whether the result came from stored credentials (true) or a fresh OAuth flow (false).\n */\n fromCache?: boolean;\n tokens: OAuthTokens;\n}\n\n/**\n * Attempts to detect if a server requires OAuth by making a test request.\n * Returns the resource metadata URL from the WWW-Authenticate header if OAuth is required.\n *\n * @param serverUrl The MCP server URL to check\n * @returns The resource metadata URL if OAuth is required, undefined otherwise\n */\nexport async function detectOAuthRequirement(serverUrl: string | URL): Promise<undefined | URL> {\n // Normalize URL to avoid redirect issues on Windows\n const normalizedUrl = normalizeUrl(serverUrl);\n const serverUrlObj = new URL(normalizedUrl);\n\n try {\n const response = await fetch(serverUrlObj, {\n headers: {\n Accept: \"application/json\",\n },\n method: \"POST\",\n });\n\n if (response.status === 401) {\n // Check for resource metadata URL in response\n const resourceMetadataUrl = extractResourceMetadataUrl(response);\n if (resourceMetadataUrl) {\n logger.debug(\"OAuth required, found resource metadata URL\", {\n resourceMetadataUrl: resourceMetadataUrl.toString(),\n });\n return resourceMetadataUrl;\n }\n\n // Check WWW-Authenticate header for Bearer realm\n const wwwAuth = response.headers.get(\"WWW-Authenticate\");\n if (wwwAuth && wwwAuth.toLowerCase().includes(\"bearer\")) {\n logger.debug(\"OAuth required based on WWW-Authenticate header\", { wwwAuth });\n return undefined; // OAuth required but no metadata URL\n }\n }\n\n return undefined;\n } catch (err) {\n logger.debug(\"Error detecting OAuth requirement\", { error: String(err) });\n return undefined;\n }\n}\n\n/**\n * Performs the complete OAuth 2.0 Authorization Code flow with DCR.\n *\n * This function:\n * 1. Checks for existing valid credentials (if credentialStore provided)\n * 2. Attempts token refresh if access token expired (if credentialStore provided)\n * 3. Discovers OAuth protected resource metadata\n * 4. Discovers authorization server metadata\n * 5. Dynamically registers the client (DCR)\n * 6. Opens browser for user authorization\n * 7. Waits for the callback with authorization code\n * 8. Exchanges the code for tokens\n * 9. Persists credentials (if credentialStore provided)\n *\n * @param serverUrl The MCP server URL that requires OAuth\n * @param options Optional configuration\n * @returns The client info and tokens from successful authorization\n */\nexport async function performOAuthFlow(\n serverUrl: string | URL,\n options: OAuthFlowOptions = {}\n): Promise<OAuthFlowResult> {\n const { credentialStore, scope, timeoutMs } = options;\n // Normalize URL to avoid redirect issues on Windows (POST to GET conversion)\n const serverUrlString = normalizeUrl(serverUrl);\n const serverUrlObj = new URL(serverUrlString);\n\n logger.info(\"Starting OAuth flow\", { serverUrl: serverUrlString });\n\n // Step 0: Check for existing valid credentials\n if (credentialStore) {\n const existingCredentials = await tryLoadExistingCredentials(serverUrlObj, credentialStore);\n if (existingCredentials) {\n logger.info(\"Using existing OAuth credentials\", {\n clientId: existingCredentials.clientInfo.client_id,\n serverUrl: serverUrlString,\n });\n return existingCredentials;\n }\n }\n\n // Step 1: Start the callback server to get a dynamic port\n logger.debug(\"Starting OAuth callback server...\");\n const callbackServer = await startCallbackServer({ timeoutMs });\n const redirectUrl = callbackServer.callbackUrl;\n\n logger.info(\"OAuth callback server started\", {\n callbackUrl: redirectUrl,\n port: callbackServer.port,\n });\n\n try {\n // Step 2: Check for pre-configured OAuth provider (non-DCR servers)\n const preConfiguredProvider = findProviderForUrl(serverUrlObj);\n\n if (preConfiguredProvider) {\n logger.info(\"Using pre-configured OAuth provider\", {\n providerId: preConfiguredProvider.id,\n providerName: preConfiguredProvider.name,\n });\n\n // Use pre-configured provider flow - pass the callback server instance\n return await performPreConfiguredProviderFlow(\n serverUrlObj,\n preConfiguredProvider,\n callbackServer,\n credentialStore,\n scope\n );\n }\n\n // Step 3: Discover OAuth protected resource metadata (DCR flow)\n logger.debug(\"Discovering OAuth protected resource metadata...\");\n let resourceMetadata: OAuthProtectedResourceMetadata | undefined;\n\n try {\n resourceMetadata = await discoverOAuthProtectedResourceMetadata(serverUrlObj);\n logger.info(\"Discovered protected resource metadata\", {\n authorizationServers: resourceMetadata?.authorization_servers,\n resource: resourceMetadata?.resource,\n scopesSupported: resourceMetadata?.scopes_supported,\n });\n } catch (err) {\n logger.warn(\"Could not discover protected resource metadata, will try direct discovery\", {\n error: String(err),\n });\n }\n\n // Step 4: Determine authorization server URL\n let authServerUrl: URL;\n if (resourceMetadata?.authorization_servers?.length) {\n authServerUrl = new URL(resourceMetadata.authorization_servers[0]);\n logger.debug(\"Using authorization server from resource metadata\", {\n authServerUrl: authServerUrl.toString(),\n });\n } else {\n // Fall back to using the server URL itself\n authServerUrl = serverUrlObj;\n logger.debug(\"Using server URL as authorization server\", {\n authServerUrl: authServerUrl.toString(),\n });\n }\n\n // Step 5: Discover authorization server metadata\n logger.debug(\"Discovering authorization server metadata...\");\n const authMetadata = await discoverAuthorizationServerMetadata(authServerUrl);\n\n if (!authMetadata) {\n throw new Error(\n `Could not discover OAuth metadata from ${authServerUrl}. ` +\n `The server may not support OAuth 2.0 or the metadata endpoint is not accessible.`\n );\n }\n\n logger.info(\"Discovered authorization server metadata\", {\n authorizationEndpoint: authMetadata.authorization_endpoint,\n issuer: authMetadata.issuer,\n registrationEndpoint: authMetadata.registration_endpoint,\n tokenEndpoint: authMetadata.token_endpoint,\n });\n\n // Step 6: Check if we have existing client info that can be reused\n let clientInfo: OAuthClientInformationFull;\n const existingCredentials = credentialStore ? await credentialStore.load(serverUrlString) : undefined;\n\n // Check if existing client registration has a matching redirect_uri\n const existingRedirectUris = existingCredentials?.clientInfo?.redirect_uris || [];\n const canReuseClient = existingCredentials?.clientInfo && existingRedirectUris.includes(redirectUrl);\n\n if (canReuseClient && existingCredentials?.clientInfo) {\n // Reuse existing client registration - redirect_uri matches\n logger.info(\"Reusing existing DCR client registration\", {\n clientId: existingCredentials.clientInfo.client_id,\n clientName: existingCredentials.clientInfo.client_name,\n redirectUri: redirectUrl,\n });\n clientInfo = existingCredentials.clientInfo;\n } else {\n // Need to register new client (either no existing client, or redirect_uri doesn't match)\n if (existingCredentials?.clientInfo) {\n logger.info(\"Existing DCR client has different redirect_uri, re-registering\", {\n existingRedirectUris,\n newRedirectUri: redirectUrl,\n });\n }\n\n // Step 6b: Build client metadata for DCR\n const clientMetadata: OAuthClientMetadata = {\n client_name: options.clientMetadata?.client_name || \"MCP Gateway\",\n grant_types: options.clientMetadata?.grant_types || [\"authorization_code\", \"refresh_token\"],\n redirect_uris: [redirectUrl],\n response_types: options.clientMetadata?.response_types || [\"code\"],\n // Public client - no client secret\n token_endpoint_auth_method: options.clientMetadata?.token_endpoint_auth_method || \"none\",\n ...(scope && { scope }),\n };\n\n logger.debug(\"Client metadata for DCR\", { clientMetadata });\n\n // Step 7: Register client via DCR\n if (!authMetadata.registration_endpoint) {\n throw new Error(\n `Authorization server does not support Dynamic Client Registration. ` +\n `No registration_endpoint found in metadata.`\n );\n }\n\n logger.info(\"Registering client via DCR...\", {\n registrationEndpoint: authMetadata.registration_endpoint,\n });\n\n clientInfo = await registerClient(authServerUrl, {\n clientMetadata,\n metadata: authMetadata,\n });\n\n logger.info(\"Client registered successfully via DCR\", {\n clientId: clientInfo.client_id,\n clientName: clientInfo.client_name,\n clientSecretExpiresAt: clientInfo.client_secret_expires_at,\n });\n\n // Persist the client info immediately\n if (credentialStore) {\n await credentialStore.update(serverUrlString, { clientInfo });\n }\n }\n\n // Step 8: Determine resource URL for RFC 8707\n // Use the resource from the protected resource metadata if available\n const resourceUrl = resourceMetadata?.resource ? new URL(resourceMetadata.resource) : undefined;\n\n // Step 9: Start authorization flow (generates PKCE challenge)\n logger.debug(\"Starting authorization flow...\");\n const { authorizationUrl, codeVerifier } = await startAuthorization(authServerUrl, {\n clientInformation: clientInfo,\n metadata: authMetadata,\n redirectUrl,\n resource: resourceUrl,\n scope,\n });\n\n await openBrowser(authorizationUrl);\n\n // Step 11: Wait for callback with authorization code\n logger.debug(\"Waiting for OAuth callback...\");\n const callbackResult = await callbackServer.waitForCallback();\n\n logger.info(\"Authorization code received\", {\n codePrefix: `${callbackResult.code.substring(0, 10)}...`,\n hasState: !!callbackResult.state,\n });\n\n // Step 12: Exchange authorization code for tokens\n logger.debug(\"Exchanging authorization code for tokens...\");\n const tokens = await exchangeAuthorization(authServerUrl, {\n authorizationCode: callbackResult.code,\n clientInformation: clientInfo,\n codeVerifier,\n metadata: authMetadata,\n redirectUri: redirectUrl,\n resource: resourceUrl,\n });\n\n logger.info(\"OAuth tokens obtained successfully\", {\n expiresIn: tokens.expires_in,\n hasRefreshToken: !!tokens.refresh_token,\n tokenType: tokens.token_type,\n });\n\n // Step 13: Persist tokens\n if (credentialStore) {\n const tokensObtainedAt = new Date().toISOString();\n await credentialStore.update(serverUrlString, {\n tokens,\n tokensObtainedAt,\n });\n logger.info(\"OAuth credentials persisted to disk\", { serverUrl: serverUrlString });\n }\n\n return {\n clientInfo,\n fromCache: false,\n tokens,\n };\n } finally {\n // Always close the callback server\n await callbackServer.close();\n }\n}\n\n/**\n * Exchanges an authorization code for tokens using a pre-configured provider.\n * Handles different token endpoint authentication methods.\n */\nasync function exchangeCodeForTokens(\n provider: OAuthProviderConfig,\n code: string,\n redirectUri: string,\n codeVerifier?: string\n): Promise<OAuthTokens> {\n const tokenEndpoint = provider.tokenEndpoint;\n const authMethod = provider.tokenEndpointAuthMethod || (provider.clientSecret ? \"client_secret_post\" : \"none\");\n\n // Build token request body\n const body = new URLSearchParams();\n body.set(\"grant_type\", \"authorization_code\");\n body.set(\"code\", code);\n body.set(\"redirect_uri\", redirectUri);\n\n // Add PKCE verifier if present\n if (codeVerifier) {\n body.set(\"code_verifier\", codeVerifier);\n }\n\n // Build request headers\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n };\n\n // Add client authentication based on method\n if (authMethod === \"client_secret_basic\" && provider.clientSecret) {\n // HTTP Basic authentication\n const credentials = Buffer.from(`${provider.clientId}:${provider.clientSecret}`).toString(\"base64\");\n headers.Authorization = `Basic ${credentials}`;\n } else if (authMethod === \"client_secret_post\" && provider.clientSecret) {\n // Client credentials in POST body\n body.set(\"client_id\", provider.clientId);\n body.set(\"client_secret\", provider.clientSecret);\n } else {\n // Public client - just client_id\n body.set(\"client_id\", provider.clientId);\n }\n\n logger.debug(\"Sending token request\", {\n authMethod,\n providerId: provider.id,\n tokenEndpoint,\n });\n\n const response = await fetch(tokenEndpoint, {\n body: body.toString(),\n headers,\n method: \"POST\",\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n logger.error(\"Token exchange failed\", {\n error: errorText,\n providerId: provider.id,\n status: response.status,\n });\n throw new Error(`Token exchange failed: ${response.status} ${errorText}`);\n }\n\n // GitHub returns tokens as application/x-www-form-urlencoded by default\n // unless Accept: application/json is set\n const contentType = response.headers.get(\"content-type\") || \"\";\n let tokenData: Record<string, unknown>;\n\n if (contentType.includes(\"application/json\")) {\n tokenData = (await response.json()) as Record<string, unknown>;\n } else if (contentType.includes(\"application/x-www-form-urlencoded\") || contentType.includes(\"text/plain\")) {\n // Parse URL-encoded response (GitHub's default format)\n const text = await response.text();\n const params = new URLSearchParams(text);\n tokenData = Object.fromEntries(params.entries()) as Record<string, unknown>;\n } else {\n // Try JSON first, fall back to URL-encoded\n const text = await response.text();\n try {\n tokenData = JSON.parse(text) as Record<string, unknown>;\n } catch {\n const params = new URLSearchParams(text);\n tokenData = Object.fromEntries(params.entries()) as Record<string, unknown>;\n }\n }\n\n // Convert expires_in to number if it's a string\n if (typeof tokenData.expires_in === \"string\") {\n tokenData.expires_in = parseInt(tokenData.expires_in, 10);\n }\n\n return {\n access_token: tokenData.access_token as string,\n expires_in: tokenData.expires_in as number | undefined,\n refresh_token: tokenData.refresh_token as string | undefined,\n scope: tokenData.scope as string | undefined,\n token_type: (tokenData.token_type as string) || \"bearer\",\n };\n}\n\n/**\n * Performs OAuth flow using a pre-configured provider (non-DCR).\n * This is used for OAuth servers that don't support Dynamic Client Registration.\n */\nasync function performPreConfiguredProviderFlow(\n serverUrl: URL,\n provider: OAuthProviderConfig,\n callbackServerInstance: {\n callbackUrl: string;\n close: () => Promise<void>;\n waitForCallback: () => Promise<{ code: string; state?: string }>;\n },\n credentialStore: OAuthCredentialStore | undefined,\n scope: string | undefined\n): Promise<OAuthFlowResult> {\n const serverUrlString = serverUrl.toString();\n const redirectUrl = callbackServerInstance.callbackUrl;\n\n // Build client info from pre-configured provider\n const clientInfo: OAuthClientInformationFull = {\n client_id: provider.clientId,\n client_name: provider.name,\n client_secret: provider.clientSecret,\n redirect_uris: [redirectUrl],\n token_endpoint_auth_method:\n provider.tokenEndpointAuthMethod || (provider.clientSecret ? \"client_secret_post\" : \"none\"),\n };\n\n logger.info(\"Using pre-configured OAuth client\", {\n clientId: provider.clientId,\n hasClientSecret: !!provider.clientSecret,\n providerId: provider.id,\n tokenEndpointAuthMethod: clientInfo.token_endpoint_auth_method,\n });\n\n // Determine scope to use\n const effectiveScope = scope || provider.scopes?.join(\" \");\n\n // Generate PKCE challenge if enabled for this provider\n const usePkce = provider.usePkce !== false; // Default to true unless explicitly disabled\n let codeVerifier: string | undefined;\n let codeChallenge: string | undefined;\n let codeChallengeMethod: string | undefined;\n\n if (usePkce) {\n // Generate PKCE code verifier and challenge\n const { generateCodeChallenge, generateCodeVerifier } = await import(\"./pkce.js\");\n codeVerifier = generateCodeVerifier();\n codeChallenge = await generateCodeChallenge(codeVerifier);\n codeChallengeMethod = \"S256\";\n }\n\n // Build authorization URL manually\n const authUrl = new URL(provider.authorizationEndpoint);\n authUrl.searchParams.set(\"client_id\", provider.clientId);\n authUrl.searchParams.set(\"redirect_uri\", redirectUrl);\n authUrl.searchParams.set(\"response_type\", \"code\");\n\n if (effectiveScope) {\n authUrl.searchParams.set(\"scope\", effectiveScope);\n }\n\n // Add state for security\n const state = crypto.randomUUID();\n authUrl.searchParams.set(\"state\", state);\n\n // Add PKCE challenge if enabled\n if (codeChallenge && codeChallengeMethod) {\n authUrl.searchParams.set(\"code_challenge\", codeChallenge);\n authUrl.searchParams.set(\"code_challenge_method\", codeChallengeMethod);\n }\n\n await openBrowser(authUrl);\n\n // Wait for callback on the existing callback server\n logger.debug(\"Waiting for OAuth callback...\");\n const callbackResult = await callbackServerInstance.waitForCallback();\n\n // Verify state matches\n if (callbackResult.state !== state) {\n throw new Error(\"OAuth state mismatch - possible CSRF attack\");\n }\n\n logger.info(\"Authorization code received\", {\n codePrefix: `${callbackResult.code.substring(0, 10)}...`,\n providerId: provider.id,\n });\n\n // Exchange authorization code for tokens\n logger.debug(\"Exchanging authorization code for tokens...\");\n const tokens = await exchangeCodeForTokens(provider, callbackResult.code, redirectUrl, codeVerifier);\n\n logger.info(\"OAuth tokens obtained successfully\", {\n expiresIn: tokens.expires_in,\n hasRefreshToken: !!tokens.refresh_token,\n providerId: provider.id,\n tokenType: tokens.token_type,\n });\n\n // Persist credentials\n if (credentialStore) {\n const tokensObtainedAt = new Date().toISOString();\n await credentialStore.update(serverUrlString, {\n clientInfo,\n tokens,\n tokensObtainedAt,\n });\n logger.info(\"OAuth credentials persisted to disk\", {\n providerId: provider.id,\n serverUrl: serverUrlString,\n });\n }\n\n return {\n clientInfo,\n fromCache: false,\n tokens,\n };\n}\n\n/**\n * Checks for existing valid credentials and returns them if available.\n * Handles token refresh if the access token is expired but refresh token exists.\n */\nasync function tryLoadExistingCredentials(\n serverUrl: URL,\n credentialStore: OAuthCredentialStore\n): Promise<OAuthFlowResult | undefined> {\n const credentials = await credentialStore.load(serverUrl.toString());\n\n if (!credentials) {\n logger.debug(\"No stored credentials found\", { serverUrl: serverUrl.toString() });\n return undefined;\n }\n\n if (!credentials.clientInfo) {\n logger.debug(\"Stored credentials have no client info\", { serverUrl: serverUrl.toString() });\n return undefined;\n }\n\n // Check if we have a valid access token\n if (credentialStore.hasValidAccessToken(credentials) && credentials.tokens) {\n logger.info(\"Using cached OAuth credentials with valid access token\", {\n clientId: credentials.clientInfo.client_id,\n serverUrl: serverUrl.toString(),\n });\n\n return {\n clientInfo: credentials.clientInfo,\n fromCache: true,\n tokens: credentials.tokens,\n };\n }\n\n // Access token is expired or missing, try to refresh\n if (credentialStore.hasRefreshToken(credentials)) {\n const refreshResult = await tryRefreshToken(serverUrl, credentials, credentialStore);\n if (refreshResult) {\n return refreshResult;\n }\n }\n\n logger.debug(\"Stored credentials are expired and no valid refresh token\", {\n serverUrl: serverUrl.toString(),\n });\n\n return undefined;\n}\n\n/**\n * Attempts to refresh an expired access token using the refresh token.\n * Returns new tokens if successful, undefined if refresh fails.\n */\nasync function tryRefreshToken(\n serverUrl: URL,\n credentials: StoredCredentials,\n credentialStore: OAuthCredentialStore\n): Promise<OAuthFlowResult | undefined> {\n if (!credentials.clientInfo || !credentials.tokens?.refresh_token) {\n return undefined;\n }\n\n logger.info(\"Attempting to refresh expired access token\", {\n clientId: credentials.clientInfo.client_id,\n serverUrl: serverUrl.toString(),\n });\n\n try {\n // Discover authorization server metadata\n let resourceMetadata: OAuthProtectedResourceMetadata | undefined;\n try {\n resourceMetadata = await discoverOAuthProtectedResourceMetadata(serverUrl);\n } catch {\n // Continue without resource metadata\n }\n\n let authServerUrl: URL;\n if (resourceMetadata?.authorization_servers?.length) {\n authServerUrl = new URL(resourceMetadata.authorization_servers[0]);\n } else {\n authServerUrl = serverUrl;\n }\n\n const authMetadata = await discoverAuthorizationServerMetadata(authServerUrl);\n const resourceUrl = resourceMetadata?.resource ? new URL(resourceMetadata.resource) : undefined;\n\n // Attempt token refresh\n const newTokens = await refreshAuthorization(authServerUrl, {\n clientInformation: credentials.clientInfo,\n metadata: authMetadata,\n refreshToken: credentials.tokens.refresh_token,\n resource: resourceUrl,\n });\n\n logger.info(\"Successfully refreshed access token\", {\n clientId: credentials.clientInfo.client_id,\n expiresIn: newTokens.expires_in,\n hasNewRefreshToken: !!newTokens.refresh_token,\n });\n\n // Persist the new tokens\n const tokensObtainedAt = new Date().toISOString();\n await credentialStore.update(serverUrl.toString(), {\n tokens: newTokens,\n tokensObtainedAt,\n });\n\n return {\n clientInfo: credentials.clientInfo,\n fromCache: true,\n tokens: newTokens,\n };\n } catch (error) {\n logger.warn(\"Failed to refresh access token, will require re-authorization\", {\n error: String(error),\n serverUrl: serverUrl.toString(),\n });\n\n // Invalidate the tokens but keep the client info\n await credentialStore.update(serverUrl.toString(), {\n tokens: undefined,\n tokensObtainedAt: undefined,\n });\n\n return undefined;\n }\n}\n","import { Transform } from \"node:stream\";\n\n/**\n * Filters out lines that do not start with '{' from the input stream.\n * We use this to drop anything that is obviously not a JSON-RPC message.\n */\nexport class JSONFilterTransform extends Transform {\n private buffer = \"\";\n\n constructor() {\n super({ objectMode: false });\n }\n\n _flush(callback: (error: Error | null, chunk: Buffer | null) => void) {\n // Handle any remaining data in buffer\n if (this.buffer.trim().startsWith(\"{\")) {\n callback(null, Buffer.from(this.buffer));\n } else {\n callback(null, null);\n }\n }\n\n _transform(chunk: Buffer, _encoding: string, callback: (error: Error | null, chunk: Buffer | null) => void) {\n this.buffer += chunk.toString();\n const lines = this.buffer.split(\"\\n\");\n\n // Keep the last incomplete line in the buffer\n this.buffer = lines.pop() || \"\";\n\n // Filter lines that start with '{' - silently ignore non-JSON lines\n const jsonLines = lines.filter((line) => line.trim().startsWith(\"{\"));\n\n if (jsonLines.length > 0) {\n // Send filtered lines with newlines\n const output = `${jsonLines.join(\"\\n\")}\\n`;\n\n callback(null, Buffer.from(output));\n } else {\n callback(null, null);\n }\n }\n}\n","/**\n * Forked from https://github.com/modelcontextprotocol/typescript-sdk/blob/a1608a6513d18eb965266286904760f830de96fe/src/client/stdio.ts\n */\n\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport type { JSONRPCMessage } from \"@modelcontextprotocol/sdk/types.js\";\n\nimport {\n ReadBuffer,\n serializeMessage,\n} from \"@modelcontextprotocol/sdk/shared/stdio.js\";\nimport { type ChildProcess, type IOType, spawn } from \"node:child_process\";\nimport { PassThrough, type Stream } from \"node:stream\";\n\nimport { JSONFilterTransform } from \"./JSONFilterTransform.js\";\nimport { ProcessSpawnError, TransportError } from \"./lib/errors.js\";\nimport { addBreadcrumbSafe, captureExceptionSafe } from \"./lib/sentry.js\";\n\nexport type StdioServerParameters = {\n\t/**\n\t * Command line arguments to pass to the executable.\n\t */\n\targs?: string[];\n\n\t/**\n\t * The executable to run to start the server.\n\t */\n\tcommand: string;\n\n\t/**\n\t * The working directory to use when spawning the process.\n\t *\n\t * If not specified, the current working directory will be inherited.\n\t */\n\tcwd?: string;\n\n\t/**\n\t * The environment to use when spawning the process.\n\t *\n\t * If not specified, the result of getDefaultEnvironment() will be used.\n\t */\n\tenv: Record<string, string>;\n\n\t/**\n\t * A function to call when an event occurs.\n\t */\n\tonEvent?: (event: TransportEvent) => void;\n\n\t/**\n\t * When true, spawn the child process using the user's shell.\n\t */\n\tshell?: boolean;\n\n\t/**\n\t * How to handle stderr of the child process. This matches the semantics of Node's `child_process.spawn`.\n\t *\n\t * The default is \"inherit\", meaning messages to stderr will be printed to the parent process's stderr.\n\t */\n\tstderr?: IOType | number | Stream;\n};\n\ntype TransportEvent =\n\t| {\n\t\t\tchunk: string;\n\t\t\ttype: \"data\";\n\t }\n\t| {\n\t\t\terror: Error;\n\t\t\ttype: \"error\";\n\t }\n\t| {\n\t\t\tmessage: JSONRPCMessage;\n\t\t\ttype: \"message\";\n\t }\n\t| {\n\t\t\ttype: \"close\";\n\t };\n\n/**\n * Client transport for stdio: this will connect to a server by spawning a process and communicating with it over stdin/stdout.\n *\n * This transport is only available in Node.js environments.\n */\nexport class StdioClientTransport implements Transport {\n\tonclose?: () => void;\n\n\tonerror?: (error: Error) => void;\n\tonmessage?: (message: JSONRPCMessage) => void;\n\t/**\n\t * The child process pid spawned by this transport.\n\t *\n\t * This is only available after the transport has been started.\n\t */\n\tget pid(): null | number {\n\t\treturn this._process?.pid ?? null;\n\t}\n\t/**\n\t * The stderr stream of the child process, if `StdioServerParameters.stderr` was set to \"pipe\" or \"overlapped\".\n\t *\n\t * If stderr piping was requested, a PassThrough stream is returned _immediately_, allowing callers to\n\t * attach listeners before the start method is invoked. This prevents loss of any early\n\t * error output emitted by the child process.\n\t */\n\tget stderr(): null | Stream {\n\t\tif (this._stderrStream) {\n\t\t\treturn this._stderrStream;\n\t\t}\n\n\t\treturn this._process?.stderr ?? null;\n\t}\n\tprivate _abortController: AbortController = new AbortController();\n\tprivate _process?: ChildProcess;\n\tprivate _readBuffer: ReadBuffer = new ReadBuffer();\n\tprivate _serverParams: StdioServerParameters;\n\tprivate _stderrStream: null | PassThrough = null;\n\n\tprivate onEvent?: (event: TransportEvent) => void;\n\n\tconstructor(server: StdioServerParameters) {\n\t\tthis._serverParams = server;\n\t\tif (server.stderr === \"pipe\" || server.stderr === \"overlapped\") {\n\t\t\tthis._stderrStream = new PassThrough();\n\t\t}\n\t\tthis.onEvent = server.onEvent;\n\t}\n\n\tasync close(): Promise<void> {\n\t\tthis.onEvent?.({\n\t\t\ttype: \"close\",\n\t\t});\n\n\t\tthis._abortController.abort();\n\t\tthis._process = undefined;\n\t\tthis._readBuffer.clear();\n\t}\n\n\tsend(message: JSONRPCMessage): Promise<void> {\n\t\treturn new Promise((resolve) => {\n\t\t\tif (!this._process?.stdin) {\n\t\t\t\tthrow new Error(\"Not connected\");\n\t\t\t}\n\n\t\t\tconst json = serializeMessage(message);\n\t\t\tif (this._process.stdin.write(json)) {\n\t\t\t\tresolve();\n\t\t\t} else {\n\t\t\t\tthis._process.stdin.once(\"drain\", resolve);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Starts the server process and prepares to communicate with it.\n\t */\n\tasync start(): Promise<void> {\n\t\tif (this._process) {\n\t\t\tthrow new Error(\n\t\t\t\t\"StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.\",\n\t\t\t);\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._process = spawn(\n\t\t\t\tthis._serverParams.command,\n\t\t\t\tthis._serverParams.args ?? [],\n\t\t\t\t{\n\t\t\t\t\tcwd: this._serverParams.cwd,\n\t\t\t\t\tenv: this._serverParams.env,\n\t\t\t\t\tshell: this._serverParams.shell ?? false,\n\t\t\t\t\tsignal: this._abortController.signal,\n\t\t\t\t\tstdio: [\"pipe\", \"pipe\", this._serverParams.stderr ?? \"inherit\"],\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tthis._process.on(\"error\", (error) => {\n\t\t\t\tif (error.name === \"AbortError\") {\n\t\t\t\t\t// Expected when close() is called.\n\t\t\t\t\tthis.onclose?.();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Capture spawn errors with context\n\t\t\t\tconst spawnError = new ProcessSpawnError(\n\t\t\t\t\t`Process spawn error: ${error.message}`,\n\t\t\t\t\tthis._serverParams.command,\n\t\t\t\t\tthis._serverParams.args,\n\t\t\t\t\t{\n\t\t\t\t\t\tcwd: this._serverParams.cwd,\n\t\t\t\t\t\terrorCode: (error as NodeJS.ErrnoException).code,\n\t\t\t\t\t\terrorErrno: (error as NodeJS.ErrnoException).errno,\n\t\t\t\t\t\terrorSyscall: (error as NodeJS.ErrnoException).syscall,\n\t\t\t\t\t\tshell: this._serverParams.shell,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tcaptureExceptionSafe(spawnError);\n\n\t\t\t\treject(error);\n\t\t\t\tthis.onerror?.(error);\n\t\t\t});\n\n\t\t\tthis._process.on(\"spawn\", () => {\n\t\t\t\taddBreadcrumbSafe(\"Process spawned successfully\", \"transport\", \"info\", {\n\t\t\t\t\targCount: this._serverParams.args?.length,\n\t\t\t\t\tcommand: this._serverParams.command,\n\t\t\t\t\tpid: this._process?.pid,\n\t\t\t\t});\n\t\t\t\tresolve();\n\t\t\t});\n\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\tthis._process.on(\"close\", (_code) => {\n\t\t\t\tthis.onEvent?.({\n\t\t\t\t\ttype: \"close\",\n\t\t\t\t});\n\n\t\t\t\tthis._process = undefined;\n\t\t\t\tthis.onclose?.();\n\t\t\t});\n\n\t\t\tthis._process.stdin?.on(\"error\", (error) => {\n\t\t\t\tconst transportError = new TransportError(\n\t\t\t\t\t`Stdin error: ${error.message}`,\n\t\t\t\t\t\"stdio\",\n\t\t\t\t\t\"write\",\n\t\t\t\t\t{\n\t\t\t\t\t\tcommand: this._serverParams.command,\n\t\t\t\t\t\tpid: this._process?.pid,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tcaptureExceptionSafe(transportError);\n\n\t\t\t\tthis.onEvent?.({\n\t\t\t\t\terror,\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t});\n\n\t\t\t\tthis.onerror?.(error);\n\t\t\t});\n\n\t\t\tconst jsonFilterTransform = new JSONFilterTransform();\n\n\t\t\tthis._process.stdout?.pipe(jsonFilterTransform);\n\n\t\t\tjsonFilterTransform.on(\"data\", (chunk) => {\n\t\t\t\tthis.onEvent?.({\n\t\t\t\t\tchunk: chunk.toString(),\n\t\t\t\t\ttype: \"data\",\n\t\t\t\t});\n\n\t\t\t\tthis._readBuffer.append(chunk);\n\t\t\t\tthis.processReadBuffer();\n\t\t\t});\n\n\t\t\tjsonFilterTransform.on(\"error\", (error) => {\n\t\t\t\tconst transportError = new TransportError(\n\t\t\t\t\t`JSON filter error: ${error.message}`,\n\t\t\t\t\t\"stdio\",\n\t\t\t\t\t\"parse\",\n\t\t\t\t\t{\n\t\t\t\t\t\tcommand: this._serverParams.command,\n\t\t\t\t\t\tpid: this._process?.pid,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tcaptureExceptionSafe(transportError);\n\n\t\t\t\tthis.onEvent?.({\n\t\t\t\t\terror,\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t});\n\n\t\t\t\tthis.onerror?.(error);\n\t\t\t});\n\n\t\t\tif (this._stderrStream && this._process.stderr) {\n\t\t\t\tthis._process.stderr.pipe(this._stderrStream);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate processReadBuffer() {\n\t\twhile (true) {\n\t\t\ttry {\n\t\t\t\tconst message = this._readBuffer.readMessage();\n\n\t\t\t\tif (message === null) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis.onEvent?.({\n\t\t\t\t\tmessage,\n\t\t\t\t\ttype: \"message\",\n\t\t\t\t});\n\n\t\t\t\tthis.onmessage?.(message);\n\t\t\t} catch (error) {\n\t\t\t\tlet message: JSONRPCMessage | null = null;\n\t\t\t\ttry {\n\t\t\t\t\tmessage = this._readBuffer.readMessage();\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore error when trying to read message for context\n\t\t\t\t}\n\n\t\t\t\tconst transportError = new TransportError(\n\t\t\t\t\t`Message processing error: ${(error as Error).message}`,\n\t\t\t\t\t\"stdio\",\n\t\t\t\t\t\"process\",\n\t\t\t\t\t{\n\t\t\t\t\t\tcommand: this._serverParams.command,\n\t\t\t\t\t\tmessageType: message ? typeof message : \"unknown\",\n\t\t\t\t\t\tpid: this._process?.pid,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\tcaptureExceptionSafe(transportError);\n\n\t\t\t\tthis.onEvent?.({\n\t\t\t\t\terror: error as Error,\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t});\n\n\t\t\t\tthis.onerror?.(error as Error);\n\t\t\t}\n\t\t}\n\t}\n}\n","#!/usr/bin/env node\n\nimport { setTimeout } from \"node:timers\";\nimport util from \"node:util\";\nimport { UnauthorizedError } from \"@modelcontextprotocol/sdk/client/auth.js\";\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { EventSource } from \"eventsource\";\nimport yargs from \"yargs\";\nimport { hideBin } from \"yargs/helpers\";\n\nimport { AccessControlAuthorizer } from \"../accessControl/authorizer.js\";\nimport { AccessControlClient } from \"../accessControl/client.js\";\nimport { OAuthCredentialStore, performOAuthFlow } from \"../auth/index.js\";\nimport { config } from \"../config/env.js\";\nimport { AccessControlBlockError, ConfigurationError, ProxyConnectionError } from \"../lib/errors.js\";\nimport { logger } from \"../lib/logger.js\";\nimport { addBreadcrumbSafe, addGlobalTags, captureExceptionSafe, initSentrySafe } from \"../lib/sentry.js\";\nimport { initializeTrafficMirror } from \"../lib/trafficMirror.js\";\nimport { proxyServer } from \"../proxyServer.js\";\nimport { StdioClientTransport } from \"../StdioClientTransport.js\";\nimport { startHTTPServer } from \"../startHTTPServer.js\";\nimport { getSessionData, type RemoteSessionCliArgs, type StdioSessionCliArgs } from \"../utils/getUserData.js\";\nimport { normalizeUrl } from \"../utils/normalizeUrl.js\";\n\nutil.inspect.defaultOptions.depth = 8;\n\nif (!(\"EventSource\" in global)) {\n // @ts-expect-error - figure out how to use --experimental-eventsource with vitest\n global.EventSource = EventSource;\n}\n\nconst argv = await yargs(hideBin(process.argv))\n .scriptName(\"mcp-gateway\")\n .command(\"stdio [command] [args...]\", \"Run a local command with stdio transport (default)\", (yargs) => {\n return yargs\n .positional(\"command\", {\n describe: \"The command to run\",\n type: \"string\",\n })\n .positional(\"args\", {\n array: true,\n describe: \"The arguments to pass to the command\",\n type: \"string\",\n });\n })\n .command(\"remote\", \"Connect to a remote MCP server\", (yargs) => {\n return yargs.options({\n headers: {\n describe: \"Headers for remote authentication (format: key:value)\",\n string: true,\n type: \"array\",\n },\n \"remote-transport\": {\n choices: [\"sse\", \"stream\"],\n default: \"sse\",\n describe: \"The transport type for remote connection (sse or stream)\",\n type: \"string\",\n },\n url: {\n demandOption: true,\n describe: \"The URL of the remote MCP server\",\n type: \"string\",\n },\n });\n })\n .command(\"$0 [command] [args...]\", \"Run a command with MCP arguments (backward compatible)\", (yargs) => {\n return yargs\n .positional(\"command\", {\n describe: \"The command to run\",\n type: \"string\",\n })\n .positional(\"args\", {\n array: true,\n describe: \"The arguments to pass to the command\",\n type: \"string\",\n });\n })\n .env(\"MCP_GATEWAY\")\n .parserConfiguration({\n \"populate--\": true,\n })\n .options({\n debug: {\n default: false,\n describe: \"Enable debug logging\",\n type: \"boolean\",\n },\n env: {\n describe: \"Environment variables to pass to the command (format: KEY=value)\",\n string: true,\n type: \"array\",\n },\n gracefulShutdownTimeout: {\n default: 5000,\n describe: \"The timeout (in milliseconds) for graceful shutdown\",\n type: \"number\",\n },\n port: {\n describe: \"Run as HTTP server on the specified port instead of stdio\",\n type: \"number\",\n },\n shell: {\n default: false,\n describe: \"Spawn the server via the user's shell\",\n type: \"boolean\",\n },\n })\n .help()\n .parseAsync();\n\n// Determine the proxy type based on the command\nexport type ProxyType = \"remote\" | \"stdio\";\nlet proxyType: ProxyType;\nlet finalCommand: string | undefined;\nlet finalArgs: string[] | undefined;\nlet remoteUrl: string | undefined;\nlet remoteTransport: \"sse\" | \"stream\" | undefined;\nconst remoteHeaders: Record<string, string> = {};\n\n// Parse headers if provided\nif (argv.headers) {\n for (const header of argv.headers as string[]) {\n const [key, ...valueParts] = header.split(\":\");\n if (key && valueParts.length > 0) {\n remoteHeaders[key.trim()] = valueParts.join(\":\").trim();\n }\n }\n}\n\n// Initialize traffic scanner from config\nconst scannerHeaders = { ...config.scanner.headers };\n\nlogger.debug(\"Initializing traffic scanner\", {\n failOpen: config.scanner.failOpen,\n hasApiKey: !!config.scanner.apiKey,\n scannerEnabled: config.scanner.enabled,\n scannerUrl: config.scanner.url,\n timeoutMs: config.scanner.timeoutMs,\n});\n\n// Determine proxy type based on command\nif (argv._[0] === \"remote\") {\n proxyType = \"remote\";\n remoteTransport = (argv[\"remote-transport\"] as \"sse\" | \"stream\") || \"sse\";\n const rawUrl = argv.url as string;\n if (!rawUrl) {\n throw new ConfigurationError(\"Remote URL is required for remote proxy type\", \"url\", {\n transport: remoteTransport,\n });\n }\n // Normalize URL to avoid redirect issues on Windows\n // Windows may convert POST to GET on 301/302 redirects (e.g., trailing slash differences)\n remoteUrl = normalizeUrl(rawUrl);\n if (remoteUrl !== rawUrl) {\n logger.debug(\"Normalized remote URL\", { normalizedUrl: remoteUrl, originalUrl: rawUrl });\n }\n} else {\n // Default to stdio for backward compatibility\n proxyType = \"stdio\";\n\n // If -- separator was used, first item in argv[\"--\"] is the command\n if (argv[\"--\"] && (argv[\"--\"] as string[]).length > 0) {\n const dashDashArgs = argv[\"--\"] as string[];\n finalCommand = dashDashArgs[0];\n finalArgs = dashDashArgs.slice(1);\n } else {\n // Use positional arguments\n finalCommand = argv.command as string;\n finalArgs = (argv.args as string[]) || [];\n }\n\n if (!finalCommand) {\n throw new ConfigurationError(\"No command specified for stdio proxy\", \"command\");\n }\n}\n\n// Parse environment variables\nconst customEnv: Record<string, string> = {};\nif (argv.env) {\n for (const envVar of argv.env as string[]) {\n const [key, ...valueParts] = envVar.split(\"=\");\n if (key && valueParts.length > 0) {\n customEnv[key.trim()] = valueParts.join(\"=\").trim();\n }\n }\n}\n\n// Build session data and initialize access control client if configured\nlet accessControlClient: AccessControlClient | undefined;\nif (config.accessControl.url && config.scanner.apiKey) {\n const sessionDataBase = await getSessionData();\n\n const sessionData =\n proxyType === \"stdio\"\n ? {\n ...sessionDataBase,\n proxyType: \"stdio\" as const,\n stdioCliArgs: {\n args: finalArgs as string[],\n command: finalCommand as string,\n proxyType: \"stdio\" as const,\n },\n }\n : {\n ...sessionDataBase,\n proxyType: \"remote\" as const,\n remoteCliArgs: {\n proxyType: \"remote\" as const,\n url: remoteUrl as string,\n },\n };\n\n accessControlClient = new AccessControlClient({\n apiKey: config.scanner.apiKey,\n headers: config.accessControl.headers,\n sessionData,\n timeoutMs: config.accessControl.timeoutMs,\n url: config.accessControl.url,\n });\n}\n\n// Determine server name for error messages\nconst serverName = proxyType === \"remote\" ? remoteUrl : finalCommand;\n\n// Initialize access control authorizer\nconst accessControlAuthorizer = new AccessControlAuthorizer({\n client: accessControlClient,\n enabled: config.accessControl.enabled,\n serverName,\n});\n\n// Initialize OAuth credential store for remote connections\nconst oauthCredentialStore = new OAuthCredentialStore({\n storageDir: config.oauthDir,\n});\n\nconst connect = async (client: Client) => {\n // Check access control (async - may query backend)\n const isAllowed = await accessControlAuthorizer.isAllowed();\n if (!isAllowed) {\n const reason = accessControlAuthorizer.getBlockReason();\n logger.warn(\"MCP server blocked by access control\", {\n proxyType,\n reason,\n });\n\n throw new AccessControlBlockError(reason, \"policy_block\");\n }\n\n logger.info(\"MCP server allowed by access control\");\n\n if (proxyType === \"stdio\") {\n // Merge custom CLI environment variables with process.env for child processes\n // Note: This is for MCP server processes, not the proxy's internal configuration\n const mergedEnv = {\n ...process.env,\n ...customEnv,\n } as Record<string, string>;\n\n const transport = new StdioClientTransport({\n args: finalArgs,\n command: finalCommand as string,\n env: mergedEnv,\n onEvent: (event) => {\n if (argv.debug) {\n logger.debug(\"Transport event\", { event });\n }\n },\n shell: argv.shell,\n // We want to passthrough stderr from the MCP server to enable better debugging\n stderr: \"inherit\",\n });\n\n try {\n await client.connect(transport);\n } catch (error) {\n throw new ProxyConnectionError(`Failed to connect to stdio process: ${error}`, undefined, \"stdio\", {\n argCount: finalArgs?.length,\n command: finalCommand,\n });\n }\n } else if (proxyType === \"remote\") {\n // Connect to remote server using SSE or streamable HTTP transport\n let transport: SSEClientTransport | StreamableHTTPClientTransport;\n\n // Build request init with any provided headers\n const buildRequestInit = (authToken?: string): RequestInit | undefined => {\n const headers: Record<string, string> = { ...remoteHeaders };\n if (authToken) {\n headers.Authorization = `Bearer ${authToken}`;\n }\n return Object.keys(headers).length > 0 ? { headers } : undefined;\n };\n\n // Helper to create transport\n const createTransport = (requestInit?: RequestInit) => {\n if (remoteTransport === \"sse\") {\n return new SSEClientTransport(new URL(remoteUrl as string), { requestInit });\n }\n return new StreamableHTTPClientTransport(new URL(remoteUrl as string), { requestInit });\n };\n\n // Helper to check if error is a 401\n const is401Error = (err: unknown): boolean => {\n if (err instanceof UnauthorizedError) return true;\n if (err && typeof err === \"object\") {\n if ((err as { status?: number }).status === 401) return true;\n if ((err as { code?: number }).code === 401) return true;\n if (\n (err as { message?: string }).message &&\n /unauthorized|401/i.test(String((err as { message?: string }).message))\n )\n return true;\n }\n return false;\n };\n\n // Helper to perform OAuth flow with credential persistence\n const performOAuthWithPersistence = async (): Promise<string> => {\n const oauthResult = await performOAuthFlow(remoteUrl as string, {\n credentialStore: oauthCredentialStore,\n });\n\n if (oauthResult.fromCache) {\n logger.info(\"Using cached OAuth credentials\");\n } else {\n logger.info(\"OAuth flow completed successfully\");\n }\n\n return oauthResult.tokens.access_token;\n };\n\n try {\n // Check for cached OAuth credentials first\n const cachedCredentials = await oauthCredentialStore.load(remoteUrl as string);\n const cachedAccessToken =\n cachedCredentials && oauthCredentialStore.hasValidAccessToken(cachedCredentials)\n ? cachedCredentials.tokens?.access_token\n : undefined;\n\n if (cachedAccessToken) {\n // Try connecting with cached token first\n logger.info(\"Found cached OAuth credentials, attempting connection...\", {\n clientId: cachedCredentials?.clientInfo?.client_id,\n });\n\n transport = createTransport(buildRequestInit(cachedAccessToken));\n\n try {\n await client.connect(transport);\n logger.info(\"Connected to remote server with cached OAuth token\");\n return; // Success with cached token\n } catch (err: unknown) {\n // If 401, the cached token is invalid (revoked or expired) - invalidate and re-auth\n if (is401Error(err)) {\n logger.info(\"Cached token rejected (possibly revoked), invalidating and re-authorizing...\");\n\n // Invalidate the cached tokens so performOAuthFlow doesn't return them again\n await oauthCredentialStore.update(remoteUrl as string, {\n tokens: undefined,\n tokensObtainedAt: undefined,\n });\n\n const accessToken = await performOAuthWithPersistence();\n transport = createTransport(buildRequestInit(accessToken));\n await client.connect(transport);\n logger.info(\"Connected to remote server with new OAuth token\");\n return;\n }\n // Non-401 error, propagate\n throw err;\n }\n }\n\n // No cached credentials - try connecting without OAuth first\n transport = createTransport(buildRequestInit());\n\n try {\n await client.connect(transport);\n logger.info(\"Connected to remote server without OAuth\");\n } catch (err: unknown) {\n // Check if OAuth authorization is required (401 error)\n if (is401Error(err)) {\n logger.info(\"Server requires OAuth authorization, starting OAuth flow...\");\n\n try {\n const accessToken = await performOAuthWithPersistence();\n\n // Create a new transport with the OAuth token\n transport = createTransport(buildRequestInit(accessToken));\n\n // Connect with the authenticated transport\n await client.connect(transport);\n\n logger.info(\"Connected to remote server with OAuth token\");\n } catch (oauthError) {\n throw new ProxyConnectionError(\n `OAuth authorization failed: ${oauthError instanceof Error ? oauthError.message : String(oauthError)}`,\n remoteUrl,\n remoteTransport,\n { error: oauthError }\n );\n }\n } else {\n // Non-401 error, propagate it\n throw new ProxyConnectionError(`Failed to connect to remote server: ${err}`, remoteUrl, remoteTransport, {\n headerCount: Object.keys(remoteHeaders).length,\n });\n }\n }\n } catch (error) {\n // Only wrap if not already a ProxyConnectionError\n if (error instanceof ProxyConnectionError) {\n throw error;\n }\n throw new ProxyConnectionError(`Failed to connect to remote server: ${error}`, remoteUrl, remoteTransport, {\n headerCount: Object.keys(remoteHeaders).length,\n });\n }\n }\n};\n\nconst proxy = async () => {\n // If port is specified, start HTTP server mode\n if (argv.port) {\n const cliArgs =\n proxyType === \"stdio\"\n ? ({\n args: finalArgs as string[],\n command: finalCommand as string,\n proxyType,\n } as StdioSessionCliArgs)\n : ({\n proxyType,\n url: remoteUrl as string,\n } as RemoteSessionCliArgs);\n\n // Initialize traffic evaluator with scanner config once for HTTP server mode\n await initializeTrafficMirror({\n cliArgs,\n scanApiKey: config.scanner.apiKey,\n // Scanner config from env vars\n scanEnabled: config.scanner.enabled,\n scanFailOpen: config.scanner.failOpen,\n scanHeaders: scannerHeaders,\n scanTimeoutMs: config.scanner.timeoutMs,\n scanUrl: config.scanner.url || \"\",\n });\n\n let client: Client | undefined;\n const httpServer = await startHTTPServer({\n createServer: async () => {\n client = new Client(\n {\n name: \"mcp-gateway\",\n version: config.appVersion,\n },\n {\n capabilities: {},\n }\n );\n\n await connect(client);\n\n const serverVersion = client.getServerVersion() as {\n name: string;\n version: string;\n };\n\n const serverCapabilities = client.getServerCapabilities() as {\n capabilities: Record<string, unknown>;\n };\n\n const server = new Server(serverVersion, {\n capabilities: serverCapabilities,\n });\n\n proxyServer({\n authorizer: accessControlAuthorizer,\n client,\n server,\n serverCapabilities,\n });\n\n return server;\n },\n onClose: async (server) => {\n if (client) {\n await client.close();\n }\n await server.close();\n },\n port: argv.port,\n });\n\n logger.info(\"MCP gateway started as HTTP server\", { port: argv.port, proxyType });\n if (proxyType === \"stdio\") {\n logger.info(\"Running command\", { args: finalArgs?.join(\" \") || \"\", command: finalCommand });\n } else {\n logger.info(\"Connected to remote server\", { remoteTransport, remoteUrl });\n }\n\n return {\n close: () => {\n return httpServer.close();\n },\n };\n }\n\n // Original stdio mode\n const client = new Client(\n {\n name: \"mcp-gateway\",\n version: config.appVersion,\n },\n {\n capabilities: {},\n }\n );\n\n await connect(client);\n\n const serverVersion = client.getServerVersion() as {\n name: string;\n version: string;\n };\n\n const serverCapabilities = client.getServerCapabilities() as {\n capabilities: Record<string, unknown>;\n };\n\n // Always create a stdio server for client-facing interface\n const server = new Server(serverVersion, {\n capabilities: serverCapabilities,\n });\n\n proxyServer({\n authorizer: accessControlAuthorizer,\n client,\n server,\n serverCapabilities,\n });\n\n const stdioTransport = new StdioServerTransport();\n\n const cliArgs =\n proxyType === \"stdio\"\n ? ({\n args: finalArgs as string[],\n command: finalCommand as string,\n proxyType,\n } as StdioSessionCliArgs)\n : ({\n proxyType,\n url: remoteUrl as string,\n } as RemoteSessionCliArgs);\n\n // Initialize traffic evaluator with scanner config\n await initializeTrafficMirror({\n cliArgs,\n scanApiKey: config.scanner.apiKey,\n // Scanner config from env vars\n scanEnabled: config.scanner.enabled,\n scanFailOpen: config.scanner.failOpen,\n scanHeaders: scannerHeaders,\n scanTimeoutMs: config.scanner.timeoutMs,\n scanUrl: config.scanner.url || \"\",\n });\n\n await server.connect(stdioTransport);\n\n logger.info(\"MCP gateway started\", { proxyType });\n if (proxyType === \"stdio\") {\n logger.info(\"Running command\", { args: finalArgs?.join(\" \") || \"\", command: finalCommand });\n } else {\n logger.info(\"Connected to remote server\", { remoteTransport, remoteUrl });\n }\n\n return {\n close: () => {\n // Close the client connection\n return client.close();\n },\n };\n};\n\nconst createGracefulShutdown = ({\n server,\n timeout,\n}: {\n server: { close: () => Promise<void> | void };\n timeout: number;\n}) => {\n const gracefulShutdown = async () => {\n logger.info(\"Received shutdown signal; shutting down\");\n\n try {\n await server.close();\n process.exit(0);\n } catch (error) {\n const errorMessage = `Error during shutdown: ${error}`;\n logger.error(\"Error during shutdown\", { error: errorMessage });\n\n captureExceptionSafe(\n error instanceof Error ? error : new Error(errorMessage),\n {\n shutdownTimeout: timeout,\n },\n {\n feature: \"shutdown\",\n module: \"cli\",\n operation: \"close\",\n }\n );\n\n process.exit(1);\n }\n };\n\n const timeoutHandler = async () => {\n setTimeout(() => {\n logger.error(\"Graceful shutdown timeout exceeded, forcing exit\");\n process.exit(1);\n }, timeout).unref();\n\n await gracefulShutdown();\n };\n\n process.once(\"SIGTERM\", timeoutHandler);\n process.once(\"SIGINT\", timeoutHandler);\n\n return () => {\n return server.close();\n };\n};\n\nconst main = async () => {\n // Initialize Sentry before any other operations\n initSentrySafe();\n\n // Add global context for all Sentry events\n addGlobalTags({\n \"proxy.mode\": proxyType === \"stdio\" ? \"local\" : \"remote\",\n \"proxy.transport\": proxyType === \"remote\" ? remoteTransport || \"unknown\" : \"stdio\",\n \"proxy.type\": proxyType,\n });\n\n addBreadcrumbSafe(\"MCP Gateway starting\", \"lifecycle\", \"info\", {\n command: finalCommand,\n proxyType,\n transport: remoteTransport,\n url: remoteUrl,\n });\n\n try {\n const server = await proxy();\n\n createGracefulShutdown({\n server,\n timeout: argv.gracefulShutdownTimeout,\n });\n } catch (error) {\n // Handle access control blocks gracefully\n if (error instanceof AccessControlBlockError) {\n // Show user-visible error message\n console.error(\"\\n❌ ACCESS DENIED\");\n console.error(\"━\".repeat(60));\n console.error(\n \"\\nThis MCP server has been blocked by Onyx because it is not authorized by your organization's access control policy. Please contact your administrator if you believe this is an error.\\n\"\n );\n\n // Also log for debugging\n logger.error(\"MCP server blocked by access control policy\", {\n error: error.message,\n reason: error.reason,\n });\n\n // Give logs time to flush before exiting cleanly\n setTimeout(() => {\n process.exit(1);\n }, 1000);\n return;\n }\n\n // Handle unexpected errors\n const errorMessage = `Could not start the proxy: ${error}`;\n logger.error(\"Unhandled error occurred\", { error: errorMessage });\n\n // Capture the startup error with context\n if (error instanceof Error) {\n captureExceptionSafe(\n error,\n {\n args: finalArgs,\n command: finalCommand,\n proxyType,\n transport: remoteTransport,\n url: remoteUrl,\n },\n {\n feature: \"startup\",\n module: \"cli\",\n operation: \"initialize\",\n proxyType,\n transport: proxyType === \"remote\" ? remoteTransport || \"unknown\" : \"stdio\",\n }\n );\n } else {\n captureExceptionSafe(\n new Error(errorMessage),\n {\n command: finalCommand,\n originalError: String(error),\n proxyType,\n },\n {\n feature: \"startup\",\n module: \"cli\",\n operation: \"initialize\",\n }\n );\n }\n\n // We give an extra second for logs to flush\n setTimeout(() => {\n process.exit(1);\n }, 1000);\n }\n};\n\nawait main();\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"mappings":"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N,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,OACN,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,IAAM,OACN,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,SACrB,GAAK,SAAY,GAAK,QAG3B,SAAS,GAAY,EAAG,CACvB,OAAO,IAAM,OACT,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,MAGzB,SAAS,GAAO,EAAG,CAClB,OAAO,GAAK,MAAU,GAAK,MACvB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,GAAK,MAAU,GAAK,MACpB,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,MACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,GAAK,OAAU,GAAK,OACpB,IAAM,OACN,GAAK,OAAU,GAAK,OACpB,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,IAAM,OACN,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAU,GAAK,OACpB,GAAK,OAAW,GAAK,OACrB,GAAK,OAAW,GAAK,OACrB,GAAK,OAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,IAAM,QACN,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QACrB,IAAM,QACN,IAAM,QACN,IAAM,QACN,IAAM,QACN,GAAK,QAAW,GAAK,QACrB,GAAK,QAAW,GAAK,QAC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"}