@dreamboard-games/cli 0.1.30-alpha.12 → 0.1.30-alpha.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -6
- package/dist/agent-verifier/agent-workspace-verifier.mjs +18 -17
- package/dist/agent-verifier/agent-workspace-verifier.mjs.map +1 -1
- package/dist/agent-verifier/{chunk-VLOIZDR6.mjs → chunk-4BECKTAF.mjs} +199 -190
- package/dist/agent-verifier/chunk-4BECKTAF.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-TLYGTHXU.mjs → chunk-5GCZZ6NW.mjs} +3 -3
- package/dist/agent-verifier/{chunk-YR664DJX.mjs → chunk-A67WUYN2.mjs} +42 -68
- package/dist/agent-verifier/chunk-A67WUYN2.mjs.map +1 -0
- package/dist/agent-verifier/chunk-AXXUGU7Q.mjs +255 -0
- package/dist/agent-verifier/chunk-AXXUGU7Q.mjs.map +1 -0
- package/dist/agent-verifier/chunk-CO3BRUD6.mjs +342 -0
- package/dist/agent-verifier/chunk-CO3BRUD6.mjs.map +1 -0
- package/dist/agent-verifier/chunk-DPYC2NDB.mjs +59 -0
- package/dist/agent-verifier/chunk-DPYC2NDB.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-4GU3PCHV.mjs → chunk-DWLTCUUX.mjs} +576 -393
- package/dist/agent-verifier/chunk-DWLTCUUX.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-COB56ESI.mjs → chunk-G2ECODRB.mjs} +2 -2
- package/dist/agent-verifier/{chunk-6XRC5PWB.mjs → chunk-H3XNWKJU.mjs} +217 -232
- package/dist/agent-verifier/chunk-H3XNWKJU.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-Z6OZWUIZ.mjs → chunk-HLHT57AW.mjs} +64 -16
- package/dist/agent-verifier/chunk-HLHT57AW.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-YDIOW2BO.mjs → chunk-INIK6LHK.mjs} +2 -2
- package/dist/agent-verifier/{chunk-UWJIZML3.mjs → chunk-LKQ557TJ.mjs} +30 -23
- package/dist/agent-verifier/chunk-LKQ557TJ.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-NAK77WXW.mjs → chunk-MYMVXTZT.mjs} +4 -5
- package/dist/agent-verifier/chunk-MYMVXTZT.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-UIJ2NDG6.mjs → chunk-NFL3Z4Z7.mjs} +31 -238
- package/dist/agent-verifier/chunk-NFL3Z4Z7.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-XKCJBIRY.mjs → chunk-QD4SQNUP.mjs} +2 -2
- package/dist/agent-verifier/{chunk-IAYRNVUC.mjs → chunk-RDYXWXXC.mjs} +1 -3
- package/dist/agent-verifier/{chunk-QBAF7EYR.mjs → chunk-TTB7AIHZ.mjs} +4 -4
- package/dist/agent-verifier/{chunk-QBAF7EYR.mjs.map → chunk-TTB7AIHZ.mjs.map} +1 -1
- package/dist/agent-verifier/chunk-V6AQDR7W.mjs +89 -0
- package/dist/agent-verifier/chunk-V6AQDR7W.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-RHI6S4SU.mjs → chunk-V7ABTZXW.mjs} +1 -3
- package/dist/agent-verifier/{chunk-RHI6S4SU.mjs.map → chunk-V7ABTZXW.mjs.map} +1 -1
- package/dist/agent-verifier/chunk-WAFBU5U7.mjs +467 -0
- package/dist/agent-verifier/chunk-WAFBU5U7.mjs.map +1 -0
- package/dist/agent-verifier/{chunk-3IJBOLGT.mjs → chunk-WSIYUUSD.mjs} +2 -2
- package/dist/agent-verifier/{compile-WZ7X6I2A.mjs → compile-6G6GENLP.mjs} +22 -18
- package/dist/agent-verifier/compile-6G6GENLP.mjs.map +1 -0
- package/dist/agent-verifier/{global-config-XHL7BCKN.mjs → global-config-6UGFPLDA.mjs} +4 -3
- package/dist/agent-verifier/{keychain-backend-A3MRWLPF.mjs → keychain-backend-BQLW5VEC.mjs} +11 -6
- package/dist/agent-verifier/keychain-backend-BQLW5VEC.mjs.map +1 -0
- package/dist/agent-verifier/{local-files-ZW52HSVT.mjs → local-files-WPHUV6GU.mjs} +6 -6
- package/dist/agent-verifier/{materialize-workspace-BKZLLFI4.mjs → materialize-workspace-S24JA46C.mjs} +17 -17
- package/dist/agent-verifier/materialize-workspace-S24JA46C.mjs.map +1 -0
- package/dist/agent-verifier/{reducer-bundle-preflight-7NYZF5ZT.mjs → reducer-bundle-preflight-3DSXIELT.mjs} +4 -4
- package/dist/agent-verifier/reducer-contract-preflight-FQB7M4PU.mjs +11 -0
- package/dist/agent-verifier/{reducer-native-test-harness-D4VWPIAC.mjs → reducer-native-test-harness-GY2CCQWN.mjs} +12 -9
- package/dist/agent-verifier/{static-scaffold-JCRBDKEH.mjs → static-scaffold-5YD6QHIS.mjs} +7 -9
- package/dist/agent-verifier/{sync-ELLJEWMB.mjs → sync-3OZBFABA.mjs} +24 -22
- package/dist/agent-verifier/{sync-ELLJEWMB.mjs.map → sync-3OZBFABA.mjs.map} +1 -1
- package/dist/agent-verifier/{test-OSXBPLSP.mjs → test-LQAGEQLY.mjs} +19 -17
- package/dist/agent-verifier/test-LQAGEQLY.mjs.map +1 -0
- package/dist/agent-verifier/{workspace-codegen-WPZHMATU.mjs → workspace-codegen-4IWICKLB.mjs} +3 -3
- package/dist/agent-verifier/{workspace-dependencies-ULZZZPNX.mjs → workspace-dependencies-ZMHPHVQV.mjs} +2 -2
- package/dist/authoring-compatibility-internal.js +12 -0
- package/dist/{agent-verifier/chunk-W2MDP5ZN.mjs → chunk-AVOAT522.js} +118 -21
- package/dist/chunk-AVOAT522.js.map +1 -0
- package/dist/chunk-FFO2IJL3.js +204 -0
- package/dist/chunk-FFO2IJL3.js.map +1 -0
- package/dist/chunk-JMV5ZFMK.js +4298 -0
- package/dist/chunk-JMV5ZFMK.js.map +1 -0
- package/dist/{chunk-P5TITCD3.js → chunk-JSF7PMIF.js} +2240 -4554
- package/dist/chunk-JSF7PMIF.js.map +1 -0
- package/dist/{global-config-WPJRXVDO.js → global-config-NLGAFSRU.js} +3 -2
- package/dist/global-config-NLGAFSRU.js.map +1 -0
- package/dist/index.js +1371 -3545
- package/dist/index.js.map +1 -1
- package/dist/internal.js +14 -8
- package/dist/{keychain-backend-JHTXAKWC.js → keychain-backend-47LZ5IX5.js} +11 -6
- package/dist/keychain-backend-47LZ5IX5.js.map +1 -0
- package/package.json +9 -19
- package/release/authoring-release-set.json +38 -0
- package/skills/dreamboard/references/manifest-authoring.md +11 -3
- package/dist/agent-verifier/chunk-4GU3PCHV.mjs.map +0 -1
- package/dist/agent-verifier/chunk-6XRC5PWB.mjs.map +0 -1
- package/dist/agent-verifier/chunk-G42BGGG2.mjs +0 -70
- package/dist/agent-verifier/chunk-G42BGGG2.mjs.map +0 -1
- package/dist/agent-verifier/chunk-KK47X7RV.mjs +0 -14
- package/dist/agent-verifier/chunk-KK47X7RV.mjs.map +0 -1
- package/dist/agent-verifier/chunk-NAK77WXW.mjs.map +0 -1
- package/dist/agent-verifier/chunk-UIJ2NDG6.mjs.map +0 -1
- package/dist/agent-verifier/chunk-UWJIZML3.mjs.map +0 -1
- package/dist/agent-verifier/chunk-VLOIZDR6.mjs.map +0 -1
- package/dist/agent-verifier/chunk-W2MDP5ZN.mjs.map +0 -1
- package/dist/agent-verifier/chunk-YR664DJX.mjs.map +0 -1
- package/dist/agent-verifier/chunk-Z6OZWUIZ.mjs.map +0 -1
- package/dist/agent-verifier/compile-WZ7X6I2A.mjs.map +0 -1
- package/dist/agent-verifier/keychain-backend-A3MRWLPF.mjs.map +0 -1
- package/dist/agent-verifier/materialize-workspace-BKZLLFI4.mjs.map +0 -1
- package/dist/agent-verifier/reducer-contract-preflight-COD2CO22.mjs +0 -11
- package/dist/agent-verifier/test-OSXBPLSP.mjs.map +0 -1
- package/dist/chunk-GXM7RRZJ.js +0 -433
- package/dist/chunk-GXM7RRZJ.js.map +0 -1
- package/dist/chunk-P5TITCD3.js.map +0 -1
- package/dist/dev-host/components/drawer.tsx +0 -132
- package/dist/dev-host/components/input.tsx +0 -21
- package/dist/dev-host/dev-api-proxy-plugin.ts +0 -328
- package/dist/dev-host/dev-author-dom-warnings.ts +0 -100
- package/dist/dev-host/dev-diagnostics.ts +0 -62
- package/dist/dev-host/dev-fallback-stylesheet.ts +0 -53
- package/dist/dev-host/dev-hmr-guard-plugin.ts +0 -47
- package/dist/dev-host/dev-host-controller.ts +0 -674
- package/dist/dev-host/dev-host-player-query.ts +0 -17
- package/dist/dev-host/dev-host-session-transport.ts +0 -52
- package/dist/dev-host/dev-host-storage.ts +0 -56
- package/dist/dev-host/dev-log-relay-plugin.ts +0 -510
- package/dist/dev-host/dev-runtime-config.ts +0 -14
- package/dist/dev-host/dev-runtime-platform.ts +0 -335
- package/dist/dev-host/dev-virtual-modules-plugin.ts +0 -64
- package/dist/dev-host/host-main.css +0 -224
- package/dist/dev-host/host-main.tsx +0 -954
- package/dist/dev-host/index.html +0 -56
- package/dist/dev-host/lib/utils.ts +0 -6
- package/dist/dev-host/plugin-main.ts +0 -61
- package/dist/dev-host/plugin.html +0 -24
- package/dist/dev-host/shared-styles.css +0 -144
- package/dist/dev-host/start-dev-server.ts +0 -140
- package/dist/dev-host/virtual-modules.d.ts +0 -27
- package/dist/keychain-backend-JHTXAKWC.js.map +0 -1
- /package/dist/agent-verifier/{chunk-TLYGTHXU.mjs.map → chunk-5GCZZ6NW.mjs.map} +0 -0
- /package/dist/agent-verifier/{chunk-COB56ESI.mjs.map → chunk-G2ECODRB.mjs.map} +0 -0
- /package/dist/agent-verifier/{chunk-YDIOW2BO.mjs.map → chunk-INIK6LHK.mjs.map} +0 -0
- /package/dist/agent-verifier/{chunk-XKCJBIRY.mjs.map → chunk-QD4SQNUP.mjs.map} +0 -0
- /package/dist/agent-verifier/{chunk-IAYRNVUC.mjs.map → chunk-RDYXWXXC.mjs.map} +0 -0
- /package/dist/agent-verifier/{chunk-3IJBOLGT.mjs.map → chunk-WSIYUUSD.mjs.map} +0 -0
- /package/dist/agent-verifier/{global-config-XHL7BCKN.mjs.map → global-config-6UGFPLDA.mjs.map} +0 -0
- /package/dist/agent-verifier/{local-files-ZW52HSVT.mjs.map → local-files-WPHUV6GU.mjs.map} +0 -0
- /package/dist/agent-verifier/{reducer-bundle-preflight-7NYZF5ZT.mjs.map → reducer-bundle-preflight-3DSXIELT.mjs.map} +0 -0
- /package/dist/agent-verifier/{reducer-contract-preflight-COD2CO22.mjs.map → reducer-contract-preflight-FQB7M4PU.mjs.map} +0 -0
- /package/dist/agent-verifier/{reducer-native-test-harness-D4VWPIAC.mjs.map → reducer-native-test-harness-GY2CCQWN.mjs.map} +0 -0
- /package/dist/agent-verifier/{static-scaffold-JCRBDKEH.mjs.map → static-scaffold-5YD6QHIS.mjs.map} +0 -0
- /package/dist/agent-verifier/{workspace-codegen-WPZHMATU.mjs.map → workspace-codegen-4IWICKLB.mjs.map} +0 -0
- /package/dist/agent-verifier/{workspace-dependencies-ULZZZPNX.mjs.map → workspace-dependencies-ZMHPHVQV.mjs.map} +0 -0
- /package/dist/{global-config-WPJRXVDO.js.map → authoring-compatibility-internal.js.map} +0 -0
- /package/{dist/scaffold → scaffold}/assets/static/app/tsconfig.framework.json +0 -0
- /package/{dist/scaffold → scaffold}/assets/static/app/tsconfig.json +0 -0
- /package/{dist/scaffold → scaffold}/assets/static/ui/index.tsx +0 -0
- /package/{dist/scaffold → scaffold}/assets/static/ui/style.css +0 -0
- /package/{dist/scaffold → scaffold}/assets/static/ui/tsconfig.framework.json +0 -0
- /package/{dist/scaffold → scaffold}/assets/static/ui/tsconfig.json +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/build-target.ts"],"sourcesContent":["declare const __DREAMBOARD_BUILD_CHANNEL__: string | undefined;\n\nconst injectedBuildChannel =\n typeof __DREAMBOARD_BUILD_CHANNEL__ === \"string\"\n ? __DREAMBOARD_BUILD_CHANNEL__\n : undefined;\n\nexport const BUILD_CHANNEL =\n injectedBuildChannel === \"published\" ? \"published\" : \"development\";\n\nexport const IS_PUBLISHED_BUILD = BUILD_CHANNEL === \"published\";\nexport const PUBLISHED_ENVIRONMENT = \"prod\" as const;\n"],"mappings":";;;AAEA,IAAM,uBACJ,OACI,gBACA;AAEC,IAAM,gBACX,yBAAyB,cAAc,cAAc;AAEhD,IAAM,qBAAqB,kBAAkB;AAC7C,IAAM,wBAAwB;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../packages/api-client/dist/core/bodySerializer.gen.js","../../../../packages/api-client/dist/core/params.gen.js","../../../../packages/api-client/dist/core/serverSentEvents.gen.js","../../../../packages/api-client/dist/core/pathSerializer.gen.js","../../../../packages/api-client/dist/core/utils.gen.js","../../../../packages/api-client/dist/core/auth.gen.js","../../../../packages/api-client/dist/client/utils.gen.js","../../../../packages/api-client/dist/client/client.gen.js","../../../../packages/api-client/dist/client.gen.js"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\nconst serializeFormDataPair = (data, key, value) => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n }\n else if (value instanceof Date) {\n data.append(key, value.toISOString());\n }\n else {\n data.append(key, JSON.stringify(value));\n }\n};\nconst serializeUrlSearchParamsPair = (data, key, value) => {\n if (typeof value === 'string') {\n data.append(key, value);\n }\n else {\n data.append(key, JSON.stringify(value));\n }\n};\nexport const formDataBodySerializer = {\n bodySerializer: (body) => {\n const data = new FormData();\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n }\n else {\n serializeFormDataPair(data, key, value);\n }\n });\n return data;\n },\n};\nexport const jsonBodySerializer = {\n bodySerializer: (body) => JSON.stringify(body, (_key, value) => typeof value === 'bigint' ? value.toString() : value),\n};\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body) => {\n const data = new URLSearchParams();\n Object.entries(body).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n }\n else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nconst extraPrefixesMap = {\n $body_: 'body',\n $headers_: 'headers',\n $path_: 'path',\n $query_: 'query',\n};\nconst extraPrefixes = Object.entries(extraPrefixesMap);\nconst buildKeyMap = (fields, map) => {\n if (!map) {\n map = new Map();\n }\n for (const config of fields) {\n if ('in' in config) {\n if (config.key) {\n map.set(config.key, {\n in: config.in,\n map: config.map,\n });\n }\n }\n else if ('key' in config) {\n map.set(config.key, {\n map: config.map,\n });\n }\n else if (config.args) {\n buildKeyMap(config.args, map);\n }\n }\n return map;\n};\nconst stripEmptySlots = (params) => {\n for (const [slot, value] of Object.entries(params)) {\n if (value && typeof value === 'object' && !Object.keys(value).length) {\n delete params[slot];\n }\n }\n};\nexport const buildClientParams = (args, fields) => {\n const params = {\n body: {},\n headers: {},\n path: {},\n query: {},\n };\n const map = buildKeyMap(fields);\n let config;\n for (const [index, arg] of args.entries()) {\n if (fields[index]) {\n config = fields[index];\n }\n if (!config) {\n continue;\n }\n if ('in' in config) {\n if (config.key) {\n const field = map.get(config.key);\n const name = field.map || config.key;\n if (field.in) {\n params[field.in][name] = arg;\n }\n }\n else {\n params.body = arg;\n }\n }\n else {\n for (const [key, value] of Object.entries(arg ?? {})) {\n const field = map.get(key);\n if (field) {\n if (field.in) {\n const name = field.map || key;\n params[field.in][name] = value;\n }\n else {\n params[field.map] = value;\n }\n }\n else {\n const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix));\n if (extra) {\n const [prefix, slot] = extra;\n params[slot][key.slice(prefix.length)] = value;\n }\n else if ('allowExtra' in config && config.allowExtra) {\n for (const [slot, allowed] of Object.entries(config.allowExtra)) {\n if (allowed) {\n params[slot][key] = value;\n break;\n }\n }\n }\n }\n }\n }\n }\n stripEmptySlots(params);\n return params;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nexport const createSseClient = ({ onRequest, onSseError, onSseEvent, responseTransformer, responseValidator, sseDefaultRetryDelay, sseMaxRetryAttempts, sseMaxRetryDelay, sseSleepFn, url, ...options }) => {\n let lastEventId;\n const sleep = sseSleepFn ??\n ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));\n const createStream = async function* () {\n let retryDelay = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n while (true) {\n if (signal.aborted)\n break;\n attempt++;\n const headers = options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers);\n if (lastEventId !== undefined) {\n headers.set(\"Last-Event-ID\", lastEventId);\n }\n try {\n const requestInit = {\n redirect: \"follow\",\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n if (!response.ok)\n throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n if (!response.body)\n throw new Error(\"No body in SSE response\");\n const reader = response.body\n .pipeThrough(new TextDecoderStream())\n .getReader();\n let buffer = \"\";\n const abortHandler = () => {\n try {\n reader.cancel();\n }\n catch {\n // noop\n }\n };\n signal.addEventListener(\"abort\", abortHandler);\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n const chunks = buffer.split(\"\\n\\n\");\n buffer = chunks.pop() ?? \"\";\n for (const chunk of chunks) {\n const lines = chunk.split(\"\\n\");\n const dataLines = [];\n let eventName;\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n dataLines.push(line.replace(/^data:\\s*/, \"\"));\n }\n else if (line.startsWith(\"event:\")) {\n eventName = line.replace(/^event:\\s*/, \"\");\n }\n else if (line.startsWith(\"id:\")) {\n lastEventId = line.replace(/^id:\\s*/, \"\");\n }\n else if (line.startsWith(\"retry:\")) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, \"\"), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n let data;\n let parsedJson = false;\n if (dataLines.length) {\n const rawData = dataLines.join(\"\\n\");\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n }\n catch {\n data = rawData;\n }\n }\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n if (dataLines.length && data !== \"\") {\n yield data;\n }\n }\n }\n }\n finally {\n signal.removeEventListener(\"abort\", abortHandler);\n reader.releaseLock();\n }\n break; // exit loop on normal completion\n }\n catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n if (sseMaxRetryAttempts !== undefined &&\n attempt >= sseMaxRetryAttempts) {\n throw error;\n }\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n const stream = createStream();\n return { stream };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nexport const separatorArrayExplode = (style) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\nexport const separatorArrayNoExplode = (style) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\nexport const separatorObjectExplode = (style) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\nexport const serializeArrayParam = ({ allowReserved, explode, name, style, value, }) => {\n if (!explode) {\n const joinedValues = (allowReserved ? value : value.map((v) => encodeURIComponent(v))).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v);\n }\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix'\n ? separator + joinedValues\n : joinedValues;\n};\nexport const serializePrimitiveParam = ({ allowReserved, name, value, }) => {\n if (value === undefined || value === null) {\n return '';\n }\n if (typeof value === 'object') {\n throw new Error('Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.');\n }\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\nexport const serializeObjectParam = ({ allowReserved, explode, name, style, value, valueOnly, }) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n if (style !== 'deepObject' && !explode) {\n let values = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [\n ...values,\n key,\n allowReserved ? v : encodeURIComponent(v),\n ];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) => serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v,\n }))\n .join(separator);\n return style === 'label' || style === 'matrix'\n ? separator + joinedValues\n : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { serializeArrayParam, serializeObjectParam, serializePrimitiveParam, } from './pathSerializer.gen.js';\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\nexport const defaultPathSerializer = ({ path, url: _url }) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style = 'simple';\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n }\n else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n const value = path[name];\n if (value === undefined || value === null) {\n continue;\n }\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n if (typeof value === 'object') {\n url = url.replace(match, serializeObjectParam({\n explode,\n name,\n style,\n value: value,\n valueOnly: true,\n }));\n continue;\n }\n if (style === 'matrix') {\n url = url.replace(match, `;${serializePrimitiveParam({\n name,\n value: value,\n })}`);\n continue;\n }\n const replaceValue = encodeURIComponent(style === 'label' ? `.${value}` : value);\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\nexport const getUrl = ({ baseUrl, path, query, querySerializer, url: _url, }) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\nexport function getValidRequestBody(options) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody = options.serializedBody !== undefined && options.serializedBody !== '';\n return hasSerializedBody ? options.serializedBody : null;\n }\n // not all clients implement a serializedBody property (i.e. client-axios)\n return options.body !== '' ? options.body : null;\n }\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\nexport const getAuthToken = async (auth, callback) => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n if (!token) {\n return;\n }\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { getAuthToken } from '../core/auth.gen.js';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen.js';\nimport { serializeArrayParam, serializeObjectParam, serializePrimitiveParam, } from '../core/pathSerializer.gen.js';\nimport { getUrl } from '../core/utils.gen.js';\nexport const createQuerySerializer = ({ parameters = {}, ...args } = {}) => {\n const querySerializer = (queryParams) => {\n const search = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n if (value === undefined || value === null) {\n continue;\n }\n const options = parameters[name] || args;\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray)\n search.push(serializedArray);\n }\n else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value,\n ...options.object,\n });\n if (serializedObject)\n search.push(serializedObject);\n }\n else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value,\n });\n if (serializedPrimitive)\n search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType) => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n const cleanContent = contentType.split(';')[0]?.trim();\n if (!cleanContent) {\n return;\n }\n if (cleanContent.startsWith('application/json') ||\n cleanContent.endsWith('+json')) {\n return 'json';\n }\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n if (['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))) {\n return 'blob';\n }\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n return;\n};\nconst checkForExistence = (options, name) => {\n if (!name) {\n return false;\n }\n if (options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)) {\n return true;\n }\n return false;\n};\nexport const setAuthParams = async ({ security, ...options }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n const token = await getAuthToken(auth, options.auth);\n if (!token) {\n continue;\n }\n const name = auth.name ?? 'Authorization';\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\nexport const buildUrl = (options) => getUrl({\n baseUrl: options.baseUrl,\n path: options.path,\n query: options.query,\n querySerializer: typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n});\nexport const mergeConfigs = (a, b) => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\nconst headersEntries = (headers) => {\n const entries = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\nexport const mergeHeaders = (...headers) => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n const iterator = header instanceof Headers\n ? headersEntries(header)\n : Object.entries(header);\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n }\n else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v);\n }\n }\n else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(key, typeof value === 'object' ? JSON.stringify(value) : value);\n }\n }\n }\n return mergedHeaders;\n};\nclass Interceptors {\n constructor() {\n this.fns = [];\n }\n clear() {\n this.fns = [];\n }\n eject(id) {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n exists(id) {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n getInterceptorIndex(id) {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n update(id, fn) {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n use(fn) {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\nexport const createInterceptors = () => ({\n error: new Interceptors(),\n request: new Interceptors(),\n response: new Interceptors(),\n});\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\nexport const createConfig = (override = {}) => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { createSseClient } from '../core/serverSentEvents.gen.js';\nimport { getValidRequestBody } from '../core/utils.gen.js';\nimport { buildUrl, createConfig, createInterceptors, getParseAs, mergeConfigs, mergeHeaders, setAuthParams, } from './utils.gen.js';\nexport const createClient = (config = {}) => {\n let _config = mergeConfigs(createConfig(), config);\n const getConfig = () => ({ ..._config });\n const setConfig = (config) => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n const interceptors = createInterceptors();\n const beforeRequest = async (options) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined,\n };\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body);\n }\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n const url = buildUrl(opts);\n return { opts, url };\n };\n const request = async (options) => {\n // @ts-expect-error\n const { opts, url } = await beforeRequest(options);\n const requestInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n let request = new Request(url, requestInit);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch;\n let response;\n try {\n response = await _fetch(request);\n }\n catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, undefined, request, opts));\n }\n }\n finalError = finalError || {};\n if (opts.throwOnError) {\n throw finalError;\n }\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined,\n };\n }\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n const result = {\n request,\n response,\n };\n if (response.ok) {\n const parseAs = (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n if (response.status === 204 ||\n response.headers.get('Content-Length') === '0') {\n let emptyData;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n let data;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n const textError = await response.text();\n let jsonError;\n try {\n jsonError = JSON.parse(textError);\n }\n catch {\n // noop\n }\n const error = jsonError ?? textError;\n let finalError = error;\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts));\n }\n }\n finalError = finalError || {};\n if (opts.throwOnError) {\n throw finalError;\n }\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n const makeMethodFn = (method) => (options) => request({ ...options, method });\n const makeSseFn = (method) => async (options) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body,\n headers: opts.headers,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts),\n url,\n });\n };\n return {\n buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n };\n};\n","// This file is auto-generated by @hey-api/openapi-ts\nimport { createClient, createConfig } from './client/index.js';\nexport const client = createClient(createConfig({ baseUrl: 'https://dreamboard.games' }));\n"],"mappings":"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","names":["joinedValues","config","request","error","finalError","url"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/core.mjs","../../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs","../../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/index.mjs","../../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs","../../src/auth/clerk-oauth.ts","../../src/config/local-harness-auth.ts","../../src/config/resolve.ts","../../src/services/project/dependency-portability.ts"],"sourcesContent":["const LogLevels = {\n silent: Number.NEGATIVE_INFINITY,\n fatal: 0,\n error: 0,\n warn: 1,\n log: 2,\n info: 3,\n success: 3,\n fail: 3,\n ready: 3,\n start: 3,\n box: 3,\n debug: 4,\n trace: 5,\n verbose: Number.POSITIVE_INFINITY\n};\nconst LogTypes = {\n // Silent\n silent: {\n level: -1\n },\n // Level 0\n fatal: {\n level: LogLevels.fatal\n },\n error: {\n level: LogLevels.error\n },\n // Level 1\n warn: {\n level: LogLevels.warn\n },\n // Level 2\n log: {\n level: LogLevels.log\n },\n // Level 3\n info: {\n level: LogLevels.info\n },\n success: {\n level: LogLevels.success\n },\n fail: {\n level: LogLevels.fail\n },\n ready: {\n level: LogLevels.info\n },\n start: {\n level: LogLevels.info\n },\n box: {\n level: LogLevels.info\n },\n // Level 4\n debug: {\n level: LogLevels.debug\n },\n // Level 5\n trace: {\n level: LogLevels.trace\n },\n // Verbose\n verbose: {\n level: LogLevels.verbose\n }\n};\n\nfunction isPlainObject$1(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject$1(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject$1(value) && isPlainObject$1(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isLogObj(arg) {\n if (!isPlainObject(arg)) {\n return false;\n }\n if (!arg.message && !arg.args) {\n return false;\n }\n if (arg.stack) {\n return false;\n }\n return true;\n}\n\nlet paused = false;\nconst queue = [];\nclass Consola {\n options;\n _lastLog;\n _mockFn;\n /**\n * Creates an instance of Consola with specified options or defaults.\n *\n * @param {Partial<ConsolaOptions>} [options={}] - Configuration options for the Consola instance.\n */\n constructor(options = {}) {\n const types = options.types || LogTypes;\n this.options = defu(\n {\n ...options,\n defaults: { ...options.defaults },\n level: _normalizeLogLevel(options.level, types),\n reporters: [...options.reporters || []]\n },\n {\n types: LogTypes,\n throttle: 1e3,\n throttleMin: 5,\n formatOptions: {\n date: true,\n colors: false,\n compact: true\n }\n }\n );\n for (const type in types) {\n const defaults = {\n type,\n ...this.options.defaults,\n ...types[type]\n };\n this[type] = this._wrapLogFn(defaults);\n this[type].raw = this._wrapLogFn(\n defaults,\n true\n );\n }\n if (this.options.mockFn) {\n this.mockTypes();\n }\n this._lastLog = {};\n }\n /**\n * Gets the current log level of the Consola instance.\n *\n * @returns {number} The current log level.\n */\n get level() {\n return this.options.level;\n }\n /**\n * Sets the minimum log level that will be output by the instance.\n *\n * @param {number} level - The new log level to set.\n */\n set level(level) {\n this.options.level = _normalizeLogLevel(\n level,\n this.options.types,\n this.options.level\n );\n }\n /**\n * Displays a prompt to the user and returns the response.\n * Throw an error if `prompt` is not supported by the current configuration.\n *\n * @template T\n * @param {string} message - The message to display in the prompt.\n * @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.\n * @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.\n */\n prompt(message, opts) {\n if (!this.options.prompt) {\n throw new Error(\"prompt is not supported!\");\n }\n return this.options.prompt(message, opts);\n }\n /**\n * Creates a new instance of Consola, inheriting options from the current instance, with possible overrides.\n *\n * @param {Partial<ConsolaOptions>} options - Optional overrides for the new instance. See {@link ConsolaOptions}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n create(options) {\n const instance = new Consola({\n ...this.options,\n ...options\n });\n if (this._mockFn) {\n instance.mockTypes(this._mockFn);\n }\n return instance;\n }\n /**\n * Creates a new Consola instance with the specified default log object properties.\n *\n * @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withDefaults(defaults) {\n return this.create({\n ...this.options,\n defaults: {\n ...this.options.defaults,\n ...defaults\n }\n });\n }\n /**\n * Creates a new Consola instance with a specified tag, which will be included in every log.\n *\n * @param {string} tag - The tag to include in each log of the new instance.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withTag(tag) {\n return this.withDefaults({\n tag: this.options.defaults.tag ? this.options.defaults.tag + \":\" + tag : tag\n });\n }\n /**\n * Adds a custom reporter to the Consola instance.\n * Reporters will be called for each log message, depending on their implementation and log level.\n *\n * @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n addReporter(reporter) {\n this.options.reporters.push(reporter);\n return this;\n }\n /**\n * Removes a custom reporter from the Consola instance.\n * If no reporter is specified, all reporters will be removed.\n *\n * @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n removeReporter(reporter) {\n if (reporter) {\n const i = this.options.reporters.indexOf(reporter);\n if (i !== -1) {\n return this.options.reporters.splice(i, 1);\n }\n } else {\n this.options.reporters.splice(0);\n }\n return this;\n }\n /**\n * Replaces all reporters of the Consola instance with the specified array of reporters.\n *\n * @param {ConsolaReporter[]} reporters - The new reporters to set. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n setReporters(reporters) {\n this.options.reporters = Array.isArray(reporters) ? reporters : [reporters];\n return this;\n }\n wrapAll() {\n this.wrapConsole();\n this.wrapStd();\n }\n restoreAll() {\n this.restoreConsole();\n this.restoreStd();\n }\n /**\n * Overrides console methods with Consola logging methods for consistent logging.\n */\n wrapConsole() {\n for (const type in this.options.types) {\n if (!console[\"__\" + type]) {\n console[\"__\" + type] = console[type];\n }\n console[type] = this[type].raw;\n }\n }\n /**\n * Restores the original console methods, removing Consola overrides.\n */\n restoreConsole() {\n for (const type in this.options.types) {\n if (console[\"__\" + type]) {\n console[type] = console[\"__\" + type];\n delete console[\"__\" + type];\n }\n }\n }\n /**\n * Overrides standard output and error streams to redirect them through Consola.\n */\n wrapStd() {\n this._wrapStream(this.options.stdout, \"log\");\n this._wrapStream(this.options.stderr, \"log\");\n }\n _wrapStream(stream, type) {\n if (!stream) {\n return;\n }\n if (!stream.__write) {\n stream.__write = stream.write;\n }\n stream.write = (data) => {\n this[type].raw(String(data).trim());\n };\n }\n /**\n * Restores the original standard output and error streams, removing the Consola redirection.\n */\n restoreStd() {\n this._restoreStream(this.options.stdout);\n this._restoreStream(this.options.stderr);\n }\n _restoreStream(stream) {\n if (!stream) {\n return;\n }\n if (stream.__write) {\n stream.write = stream.__write;\n delete stream.__write;\n }\n }\n /**\n * Pauses logging, queues incoming logs until resumed.\n */\n pauseLogs() {\n paused = true;\n }\n /**\n * Resumes logging, processing any queued logs.\n */\n resumeLogs() {\n paused = false;\n const _queue = queue.splice(0);\n for (const item of _queue) {\n item[0]._logFn(item[1], item[2]);\n }\n }\n /**\n * Replaces logging methods with mocks if a mock function is provided.\n *\n * @param {ConsolaOptions[\"mockFn\"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions[\"mockFn\"]}.\n */\n mockTypes(mockFn) {\n const _mockFn = mockFn || this.options.mockFn;\n this._mockFn = _mockFn;\n if (typeof _mockFn !== \"function\") {\n return;\n }\n for (const type in this.options.types) {\n this[type] = _mockFn(type, this.options.types[type]) || this[type];\n this[type].raw = this[type];\n }\n }\n _wrapLogFn(defaults, isRaw) {\n return (...args) => {\n if (paused) {\n queue.push([this, defaults, args, isRaw]);\n return;\n }\n return this._logFn(defaults, args, isRaw);\n };\n }\n _logFn(defaults, args, isRaw) {\n if ((defaults.level || 0) > this.level) {\n return false;\n }\n const logObj = {\n date: /* @__PURE__ */ new Date(),\n args: [],\n ...defaults,\n level: _normalizeLogLevel(defaults.level, this.options.types)\n };\n if (!isRaw && args.length === 1 && isLogObj(args[0])) {\n Object.assign(logObj, args[0]);\n } else {\n logObj.args = [...args];\n }\n if (logObj.message) {\n logObj.args.unshift(logObj.message);\n delete logObj.message;\n }\n if (logObj.additional) {\n if (!Array.isArray(logObj.additional)) {\n logObj.additional = logObj.additional.split(\"\\n\");\n }\n logObj.args.push(\"\\n\" + logObj.additional.join(\"\\n\"));\n delete logObj.additional;\n }\n logObj.type = typeof logObj.type === \"string\" ? logObj.type.toLowerCase() : \"log\";\n logObj.tag = typeof logObj.tag === \"string\" ? logObj.tag : \"\";\n const resolveLog = (newLog = false) => {\n const repeated = (this._lastLog.count || 0) - this.options.throttleMin;\n if (this._lastLog.object && repeated > 0) {\n const args2 = [...this._lastLog.object.args];\n if (repeated > 1) {\n args2.push(`(repeated ${repeated} times)`);\n }\n this._log({ ...this._lastLog.object, args: args2 });\n this._lastLog.count = 1;\n }\n if (newLog) {\n this._lastLog.object = logObj;\n this._log(logObj);\n }\n };\n clearTimeout(this._lastLog.timeout);\n const diffTime = this._lastLog.time && logObj.date ? logObj.date.getTime() - this._lastLog.time.getTime() : 0;\n this._lastLog.time = logObj.date;\n if (diffTime < this.options.throttle) {\n try {\n const serializedLog = JSON.stringify([\n logObj.type,\n logObj.tag,\n logObj.args\n ]);\n const isSameLog = this._lastLog.serialized === serializedLog;\n this._lastLog.serialized = serializedLog;\n if (isSameLog) {\n this._lastLog.count = (this._lastLog.count || 0) + 1;\n if (this._lastLog.count > this.options.throttleMin) {\n this._lastLog.timeout = setTimeout(\n resolveLog,\n this.options.throttle\n );\n return;\n }\n }\n } catch {\n }\n }\n resolveLog(true);\n }\n _log(logObj) {\n for (const reporter of this.options.reporters) {\n reporter.log(logObj, {\n options: this.options\n });\n }\n }\n}\nfunction _normalizeLogLevel(input, types = {}, defaultLevel = 3) {\n if (input === void 0) {\n return defaultLevel;\n }\n if (typeof input === \"number\") {\n return input;\n }\n if (types[input] && types[input].level !== void 0) {\n return types[input].level;\n }\n return defaultLevel;\n}\nConsola.prototype.add = Consola.prototype.addReporter;\nConsola.prototype.remove = Consola.prototype.removeReporter;\nConsola.prototype.clear = Consola.prototype.removeReporter;\nConsola.prototype.withScope = Consola.prototype.withTag;\nConsola.prototype.mock = Consola.prototype.mockTypes;\nConsola.prototype.pause = Consola.prototype.pauseLogs;\nConsola.prototype.resume = Consola.prototype.resumeLogs;\nfunction createConsola(options = {}) {\n return new Consola(options);\n}\n\nexport { Consola, LogLevels, LogTypes, createConsola };\n","import { formatWithOptions } from 'node:util';\nimport { sep } from 'node:path';\n\nfunction parseStack(stack, message) {\n const cwd = process.cwd() + sep;\n const lines = stack.split(\"\\n\").splice(message.split(\"\\n\").length).map((l) => l.trim().replace(\"file://\", \"\").replace(cwd, \"\"));\n return lines;\n}\n\nfunction writeStream(data, stream) {\n const write = stream.__write || stream.write;\n return write.call(stream, data);\n}\n\nconst bracket = (x) => x ? `[${x}]` : \"\";\nclass BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return indent + parseStack(stack, message).join(`\n${indent}`);\n }\n formatError(err, opts) {\n const message = err.message ?? formatWithOptions(opts, err);\n const stack = err.stack ? this.formatStack(err.stack, message, opts) : \"\";\n const level = opts?.errorLevel || 0;\n const causedPrefix = level > 0 ? `${\" \".repeat(level)}[cause]: ` : \"\";\n const causedError = err.cause ? \"\\n\\n\" + this.formatError(err.cause, { ...opts, errorLevel: level + 1 }) : \"\";\n return causedPrefix + message + \"\\n\" + stack + causedError;\n }\n formatArgs(args, opts) {\n const _args = args.map((arg) => {\n if (arg && typeof arg.stack === \"string\") {\n return this.formatError(arg, opts);\n }\n return arg;\n });\n return formatWithOptions(opts, ..._args);\n }\n formatDate(date, opts) {\n return opts.date ? date.toLocaleTimeString() : \"\";\n }\n filterAndJoin(arr) {\n return arr.filter(Boolean).join(\" \");\n }\n formatLogObj(logObj, opts) {\n const message = this.formatArgs(logObj.args, opts);\n if (logObj.type === \"box\") {\n return \"\\n\" + [\n bracket(logObj.tag),\n logObj.title && logObj.title,\n ...message.split(\"\\n\")\n ].filter(Boolean).map((l) => \" > \" + l).join(\"\\n\") + \"\\n\";\n }\n return this.filterAndJoin([\n bracket(logObj.type),\n bracket(logObj.tag),\n message\n ]);\n }\n log(logObj, ctx) {\n const line = this.formatLogObj(logObj, {\n columns: ctx.options.stdout.columns || 0,\n ...ctx.options.formatOptions\n });\n return writeStream(\n line + \"\\n\",\n logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout\n );\n }\n}\n\nexport { BasicReporter as B, parseStack as p };\n","import { createConsola as createConsola$1, LogLevels } from './core.mjs';\nexport { Consola, LogTypes } from './core.mjs';\nimport { B as BasicReporter, p as parseStack } from './shared/consola.DRwqZj3T.mjs';\nimport g$1 from 'node:process';\nimport { e as colors, d as box, s as stripAnsi$1 } from './shared/consola.DXBYu-KD.mjs';\nimport 'node:util';\nimport 'node:path';\nimport 'node:tty';\n\nconst r=Object.create(null),i=e=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?r:globalThis),o=new Proxy(r,{get(e,s){return i()[s]??r[s]},has(e,s){const E=i();return s in E||s in r},set(e,s,E){const B=i(true);return B[s]=E,true},deleteProperty(e,s){if(!s)return false;const E=i(true);return delete E[s],true},ownKeys(){const e=i(true);return Object.keys(e)}}),t=typeof process<\"u\"&&process.env&&process.env.NODE_ENV||\"\",f=[[\"APPVEYOR\"],[\"AWS_AMPLIFY\",\"AWS_APP_ID\",{ci:true}],[\"AZURE_PIPELINES\",\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"],[\"AZURE_STATIC\",\"INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN\"],[\"APPCIRCLE\",\"AC_APPCIRCLE\"],[\"BAMBOO\",\"bamboo_planKey\"],[\"BITBUCKET\",\"BITBUCKET_COMMIT\"],[\"BITRISE\",\"BITRISE_IO\"],[\"BUDDY\",\"BUDDY_WORKSPACE_ID\"],[\"BUILDKITE\"],[\"CIRCLE\",\"CIRCLECI\"],[\"CIRRUS\",\"CIRRUS_CI\"],[\"CLOUDFLARE_PAGES\",\"CF_PAGES\",{ci:true}],[\"CODEBUILD\",\"CODEBUILD_BUILD_ARN\"],[\"CODEFRESH\",\"CF_BUILD_ID\"],[\"DRONE\"],[\"DRONE\",\"DRONE_BUILD_EVENT\"],[\"DSARI\"],[\"GITHUB_ACTIONS\"],[\"GITLAB\",\"GITLAB_CI\"],[\"GITLAB\",\"CI_MERGE_REQUEST_ID\"],[\"GOCD\",\"GO_PIPELINE_LABEL\"],[\"LAYERCI\"],[\"HUDSON\",\"HUDSON_URL\"],[\"JENKINS\",\"JENKINS_URL\"],[\"MAGNUM\"],[\"NETLIFY\"],[\"NETLIFY\",\"NETLIFY_LOCAL\",{ci:false}],[\"NEVERCODE\"],[\"RENDER\"],[\"SAIL\",\"SAILCI\"],[\"SEMAPHORE\"],[\"SCREWDRIVER\"],[\"SHIPPABLE\"],[\"SOLANO\",\"TDDIUM\"],[\"STRIDER\"],[\"TEAMCITY\",\"TEAMCITY_VERSION\"],[\"TRAVIS\"],[\"VERCEL\",\"NOW_BUILDER\"],[\"VERCEL\",\"VERCEL\",{ci:false}],[\"VERCEL\",\"VERCEL_ENV\",{ci:false}],[\"APPCENTER\",\"APPCENTER_BUILD_ID\"],[\"CODESANDBOX\",\"CODESANDBOX_SSE\",{ci:false}],[\"CODESANDBOX\",\"CODESANDBOX_HOST\",{ci:false}],[\"STACKBLITZ\"],[\"STORMKIT\"],[\"CLEAVR\"],[\"ZEABUR\"],[\"CODESPHERE\",\"CODESPHERE_APP_ID\",{ci:true}],[\"RAILWAY\",\"RAILWAY_PROJECT_ID\"],[\"RAILWAY\",\"RAILWAY_SERVICE_ID\"],[\"DENO-DEPLOY\",\"DENO_DEPLOYMENT_ID\"],[\"FIREBASE_APP_HOSTING\",\"FIREBASE_APP_HOSTING\",{ci:true}]];function b(){if(globalThis.process?.env)for(const e of f){const s=e[1]||e[0];if(globalThis.process?.env[s])return {name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL===\"/bin/jsh\"&&globalThis.process?.versions?.webcontainer?{name:\"stackblitz\",ci:false}:{name:\"\",ci:false}}const l=b();l.name;function n(e){return e?e!==\"false\":false}const I=globalThis.process?.platform||\"\",T=n(o.CI)||l.ci!==false,a=n(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),g=n(o.DEBUG),R=t===\"test\"||n(o.TEST);n(o.MINIMAL)||T||R||!a;const A=/^win/i.test(I);!n(o.NO_COLOR)&&(n(o.FORCE_COLOR)||(a||A)&&o.TERM!==\"dumb\"||T);const C=(globalThis.process?.versions?.node||\"\").replace(/^v/,\"\")||null;Number(C?.split(\".\")[0])||null;const y=globalThis.process||Object.create(null),_={versions:{}};new Proxy(y,{get(e,s){if(s===\"env\")return o;if(s in e)return e[s];if(s in _)return _[s]}});const c=globalThis.process?.release?.name===\"node\",O=!!globalThis.Bun||!!globalThis.process?.versions?.bun,D=!!globalThis.Deno,L=!!globalThis.fastly,S=!!globalThis.Netlify,u=!!globalThis.EdgeRuntime,N=globalThis.navigator?.userAgent===\"Cloudflare-Workers\",F=[[S,\"netlify\"],[u,\"edge-light\"],[N,\"workerd\"],[L,\"fastly\"],[D,\"deno\"],[O,\"bun\"],[c,\"node\"]];function G(){const e=F.find(s=>s[0]);if(e)return {name:e[1]}}const P=G();P?.name||\"\";\n\nfunction ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n\nconst regex = ansiRegex();\n\nfunction 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\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\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D08\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 <= 0x1F6D7\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 <= 0x1FA89\n\t\t|| x >= 0x1FA8F && x <= 0x1FAC6\n\t\t|| x >= 0x1FACE && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAE9\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\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\nfunction 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\nconst emojiRegex = () => {\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\\uDC70\\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-\\uDED7\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\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\\uDD3D\\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-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\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]|\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\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]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\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\nconst segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split('') };\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nfunction stringWidth$1(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\nfunction isUnicodeSupported() {\n\tconst {env} = g$1;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (g$1.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst TYPE_COLOR_MAP = {\n info: \"cyan\",\n fail: \"red\",\n success: \"green\",\n ready: \"green\",\n start: \"magenta\"\n};\nconst LEVEL_COLOR_MAP = {\n 0: \"red\",\n 1: \"yellow\"\n};\nconst unicode = isUnicodeSupported();\nconst s = (c, fallback) => unicode ? c : fallback;\nconst TYPE_ICONS = {\n error: s(\"\\u2716\", \"\\xD7\"),\n fatal: s(\"\\u2716\", \"\\xD7\"),\n ready: s(\"\\u2714\", \"\\u221A\"),\n warn: s(\"\\u26A0\", \"\\u203C\"),\n info: s(\"\\u2139\", \"i\"),\n success: s(\"\\u2714\", \"\\u221A\"),\n debug: s(\"\\u2699\", \"D\"),\n trace: s(\"\\u2192\", \"\\u2192\"),\n fail: s(\"\\u2716\", \"\\xD7\"),\n start: s(\"\\u25D0\", \"o\"),\n log: \"\"\n};\nfunction stringWidth(str) {\n const hasICU = typeof Intl === \"object\";\n if (!hasICU || !Intl.Segmenter) {\n return stripAnsi$1(str).length;\n }\n return stringWidth$1(str);\n}\nclass FancyReporter extends BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return `\n${indent}` + parseStack(stack, message).map(\n (line) => \" \" + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\\((.+)\\)/, (_, m) => `(${colors.cyan(m)})`)\n ).join(`\n${indent}`);\n }\n formatType(logObj, isBadge, opts) {\n const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || \"gray\";\n if (isBadge) {\n return getBgColor(typeColor)(\n colors.black(` ${logObj.type.toUpperCase()} `)\n );\n }\n const _type = typeof TYPE_ICONS[logObj.type] === \"string\" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;\n return _type ? getColor(typeColor)(_type) : \"\";\n }\n formatLogObj(logObj, opts) {\n const [message, ...additional] = this.formatArgs(logObj.args, opts).split(\n \"\\n\"\n );\n if (logObj.type === \"box\") {\n return box(\n characterFormat(\n message + (additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\")\n ),\n {\n title: logObj.title ? characterFormat(logObj.title) : void 0,\n style: logObj.style\n }\n );\n }\n const date = this.formatDate(logObj.date, opts);\n const coloredDate = date && colors.gray(date);\n const isBadge = logObj.badge ?? logObj.level < 2;\n const type = this.formatType(logObj, isBadge, opts);\n const tag = logObj.tag ? colors.gray(logObj.tag) : \"\";\n let line;\n const left = this.filterAndJoin([type, characterFormat(message)]);\n const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);\n const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;\n line = space > 0 && (opts.columns || 0) >= 80 ? left + \" \".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : \"\") + left;\n line += characterFormat(\n additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\"\n );\n if (logObj.type === \"trace\") {\n const _err = new Error(\"Trace: \" + logObj.message);\n line += this.formatStack(_err.stack || \"\", _err.message);\n }\n return isBadge ? \"\\n\" + line + \"\\n\" : line;\n }\n}\nfunction characterFormat(str) {\n return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${colors.underline(m)} `);\n}\nfunction getColor(color = \"white\") {\n return colors[color] || colors.white;\n}\nfunction getBgColor(color = \"bgWhite\") {\n return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;\n}\n\nfunction createConsola(options = {}) {\n let level = _getDefaultLogLevel();\n if (process.env.CONSOLA_LEVEL) {\n level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;\n }\n const consola2 = createConsola$1({\n level,\n defaults: { level },\n stdout: process.stdout,\n stderr: process.stderr,\n prompt: (...args) => import('./chunks/prompt.mjs').then((m) => m.prompt(...args)),\n reporters: options.reporters || [\n options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()\n ],\n ...options\n });\n return consola2;\n}\nfunction _getDefaultLogLevel() {\n if (g) {\n return LogLevels.debug;\n }\n if (R) {\n return LogLevels.warn;\n }\n return LogLevels.info;\n}\nconst consola = createConsola();\n\nexport { LogLevels, consola, createConsola, consola as default };\n","import * as tty from 'node:tty';\n\nconst {\n env = {},\n argv = [],\n platform = \"\"\n} = typeof process === \"undefined\" ? {} : process;\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\");\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\");\nconst isWindows = platform === \"win32\";\nconst isDumbTerminal = env.TERM === \"dumb\";\nconst isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;\nconst isCI = \"CI\" in env && (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env);\nconst isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);\nfunction replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {\n return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n}\nfunction clearBleed(index, string, open, close, replace) {\n return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;\n}\nfunction filterEmpty(open, close, replace = open, at = open.length + 1) {\n return (string) => string || !(string === \"\" || string === void 0) ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n ) : \"\";\n}\nfunction init(open, close, replace) {\n return filterEmpty(`\\x1B[${open}m`, `\\x1B[${close}m`, replace);\n}\nconst colorDefs = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1B[22m\\x1B[1m\"),\n dim: init(2, 22, \"\\x1B[22m\\x1B[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49)\n};\nfunction createColors(useColor = isColorSupported) {\n return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));\n}\nconst colors = createColors();\nfunction getColor(color, fallback = \"reset\") {\n return colors[color] || colors[fallback];\n}\nfunction colorize(color, text) {\n return getColor(color)(text);\n}\n\nconst ansiRegex = [\n String.raw`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)`,\n String.raw`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`\n].join(\"|\");\nfunction stripAnsi(text) {\n return text.replace(new RegExp(ansiRegex, \"g\"), \"\");\n}\nfunction centerAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n const freeLeft = Math.floor(free / 2);\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < freeLeft || i >= freeLeft + str.length ? space : str[i - freeLeft];\n }\n return _str;\n}\nfunction rightAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < free ? space : str[i - free];\n }\n return _str;\n}\nfunction leftAlign(str, len, space = \" \") {\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < str.length ? str[i] : space;\n }\n return _str;\n}\nfunction align(alignment, str, len, space = \" \") {\n switch (alignment) {\n case \"left\": {\n return leftAlign(str, len, space);\n }\n case \"right\": {\n return rightAlign(str, len, space);\n }\n case \"center\": {\n return centerAlign(str, len, space);\n }\n default: {\n return str;\n }\n }\n}\n\nconst boxStylePresets = {\n solid: {\n tl: \"\\u250C\",\n tr: \"\\u2510\",\n bl: \"\\u2514\",\n br: \"\\u2518\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n },\n double: {\n tl: \"\\u2554\",\n tr: \"\\u2557\",\n bl: \"\\u255A\",\n br: \"\\u255D\",\n h: \"\\u2550\",\n v: \"\\u2551\"\n },\n doubleSingle: {\n tl: \"\\u2553\",\n tr: \"\\u2556\",\n bl: \"\\u2559\",\n br: \"\\u255C\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n doubleSingleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n singleThick: {\n tl: \"\\u250F\",\n tr: \"\\u2513\",\n bl: \"\\u2517\",\n br: \"\\u251B\",\n h: \"\\u2501\",\n v: \"\\u2503\"\n },\n singleDouble: {\n tl: \"\\u2552\",\n tr: \"\\u2555\",\n bl: \"\\u2558\",\n br: \"\\u255B\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n singleDoubleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n rounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n }\n};\nconst defaultStyle = {\n borderColor: \"white\",\n borderStyle: \"rounded\",\n valign: \"center\",\n padding: 2,\n marginLeft: 1,\n marginTop: 1,\n marginBottom: 1\n};\nfunction box(text, _opts = {}) {\n const opts = {\n ..._opts,\n style: {\n ...defaultStyle,\n ..._opts.style\n }\n };\n const textLines = text.split(\"\\n\");\n const boxLines = [];\n const _color = getColor(opts.style.borderColor);\n const borderStyle = {\n ...typeof opts.style.borderStyle === \"string\" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle\n };\n if (_color) {\n for (const key in borderStyle) {\n borderStyle[key] = _color(\n borderStyle[key]\n );\n }\n }\n const paddingOffset = opts.style.padding % 2 === 0 ? opts.style.padding : opts.style.padding + 1;\n const height = textLines.length + paddingOffset;\n const width = Math.max(\n ...textLines.map((line) => stripAnsi(line).length),\n opts.title ? stripAnsi(opts.title).length : 0\n ) + paddingOffset;\n const widthOffset = width + paddingOffset;\n const leftSpace = opts.style.marginLeft > 0 ? \" \".repeat(opts.style.marginLeft) : \"\";\n if (opts.style.marginTop > 0) {\n boxLines.push(\"\".repeat(opts.style.marginTop));\n }\n if (opts.title) {\n const title = _color ? _color(opts.title) : opts.title;\n const left = borderStyle.h.repeat(\n Math.floor((width - stripAnsi(opts.title).length) / 2)\n );\n const right = borderStyle.h.repeat(\n width - stripAnsi(opts.title).length - stripAnsi(left).length + paddingOffset\n );\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${left}${title}${right}${borderStyle.tr}`\n );\n } else {\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`\n );\n }\n const valignOffset = opts.style.valign === \"center\" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === \"top\" ? height - textLines.length - paddingOffset : height - textLines.length;\n for (let i = 0; i < height; i++) {\n if (i < valignOffset || i >= valignOffset + textLines.length) {\n boxLines.push(\n `${leftSpace}${borderStyle.v}${\" \".repeat(widthOffset)}${borderStyle.v}`\n );\n } else {\n const line = textLines[i - valignOffset];\n const left = \" \".repeat(paddingOffset);\n const right = \" \".repeat(width - stripAnsi(line).length);\n boxLines.push(\n `${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`\n );\n }\n }\n boxLines.push(\n `${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`\n );\n if (opts.style.marginBottom > 0) {\n boxLines.push(\"\".repeat(opts.style.marginBottom));\n }\n return boxLines.join(\"\\n\");\n}\n\nexport { centerAlign as a, align as b, colorize as c, box as d, colors as e, getColor as g, leftAlign as l, rightAlign as r, stripAnsi as s };\n","import crypto from \"node:crypto\";\n\nexport type ClerkOAuthConfig = {\n issuer?: string;\n clientId?: string;\n tokenUrl?: string;\n scope?: string;\n};\n\nexport type ClerkOAuthTokenResponse = {\n accessToken: string;\n refreshToken: string;\n expiresAt?: string;\n tokenUrl: string;\n};\n\nexport function createPkcePair(): { verifier: string; challenge: string } {\n const verifier = base64Url(crypto.randomBytes(32));\n const challenge = base64Url(\n crypto.createHash(\"sha256\").update(verifier).digest(),\n );\n return { verifier, challenge };\n}\n\nexport function buildClerkAuthorizationUrl(input: {\n config: ClerkOAuthConfig;\n redirectUri: string;\n state: string;\n codeChallenge: string;\n}): URL {\n const { issuer, clientId, scope } = assertConfigured(input.config);\n const url = new URL(\"/oauth/authorize\", issuer);\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"client_id\", clientId);\n url.searchParams.set(\"redirect_uri\", input.redirectUri);\n url.searchParams.set(\"state\", input.state);\n url.searchParams.set(\"code_challenge\", input.codeChallenge);\n url.searchParams.set(\"code_challenge_method\", \"S256\");\n url.searchParams.set(\"scope\", scope ?? \"openid profile email offline_access\");\n return url;\n}\n\nexport async function exchangeClerkOAuthCode(input: {\n config: ClerkOAuthConfig;\n code: string;\n redirectUri: string;\n codeVerifier: string;\n}): Promise<ClerkOAuthTokenResponse> {\n const { clientId, tokenUrl } = assertConfigured(input.config);\n const body = new URLSearchParams({\n grant_type: \"authorization_code\",\n client_id: clientId,\n code: input.code,\n redirect_uri: input.redirectUri,\n code_verifier: input.codeVerifier,\n });\n return requestClerkToken(tokenUrl, body);\n}\n\nexport async function refreshClerkOAuthToken(input: {\n config: ClerkOAuthConfig;\n refreshToken: string;\n}): Promise<ClerkOAuthTokenResponse> {\n const { clientId, tokenUrl } = assertConfigured(input.config);\n const body = new URLSearchParams({\n grant_type: \"refresh_token\",\n client_id: clientId,\n refresh_token: input.refreshToken,\n });\n return requestClerkToken(tokenUrl, body);\n}\n\nfunction assertConfigured(config: ClerkOAuthConfig): {\n issuer: string;\n clientId: string;\n tokenUrl: string;\n scope?: string;\n} {\n const issuer = config.issuer?.trim().replace(/\\/$/, \"\");\n const clientId = config.clientId?.trim();\n if (!issuer || !clientId) {\n throw new Error(\n [\n \"Clerk OAuth CLI is not configured for this environment.\",\n \"The CLI expects first-party environments to be configured in its built-in registry.\",\n \"If this environment has no registered public Clerk OAuth client, create one and release a CLI with its client id.\",\n \"For emergency overrides, set the environment-specific DREAMBOARD_<ENV>_CLERK_OAUTH_* variables or DREAMBOARD_CLERK_OAUTH_*.\",\n \"For local harness auth, use `pnpm auth:local` or the auto-bootstrapped local harness flows instead.\",\n ].join(\" \"),\n );\n }\n return {\n issuer,\n clientId,\n tokenUrl:\n config.tokenUrl?.trim() || new URL(\"/oauth/token\", issuer).toString(),\n scope: config.scope?.trim() || undefined,\n };\n}\n\nasync function requestClerkToken(\n tokenUrl: string,\n body: URLSearchParams,\n): Promise<ClerkOAuthTokenResponse> {\n const response = await fetch(tokenUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body,\n });\n if (!response.ok) {\n const detail = await response.text();\n throw new Error(\n `Clerk OAuth token request failed (${response.status}): ${detail}`,\n );\n }\n const payload = (await response.json()) as {\n access_token?: unknown;\n refresh_token?: unknown;\n expires_in?: unknown;\n };\n if (typeof payload.access_token !== \"string\") {\n throw new Error(\"Clerk OAuth token response did not include access_token.\");\n }\n if (typeof payload.refresh_token !== \"string\") {\n throw new Error(\n \"Clerk OAuth token response did not include refresh_token.\",\n );\n }\n const expiresAt =\n typeof payload.expires_in === \"number\"\n ? new Date(Date.now() + payload.expires_in * 1000).toISOString()\n : undefined;\n return {\n accessToken: payload.access_token,\n refreshToken: payload.refresh_token,\n expiresAt,\n tokenUrl,\n };\n}\n\nfunction base64Url(bytes: Buffer): string {\n return bytes\n .toString(\"base64\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/g, \"\");\n}\n","import { createHmac, randomUUID } from \"node:crypto\";\nimport type { ResolvedConfig } from \"../types.js\";\nimport { IS_PUBLISHED_BUILD } from \"../build-target.js\";\n\ntype LocalHarnessProfile = \"local\" | \"local-aws\";\n\nconst DEFAULT_SUBJECT = \"harness-smoke-local@dreamboard.local\";\nconst DEFAULT_ISSUER = \"dreamboard-local-harness\";\nconst DEFAULT_SECRET = \"dreamboard-local-harness-token-secret\";\nconst LOCAL_AWS_ISSUER = \"dreamboard-local-aws-harness\";\nconst LOCAL_AWS_SECRET = \"dreamboard-local-aws-harness-token-secret\";\nconst DEFAULT_TTL_SECONDS = 8 * 60 * 60;\n\nconst mintedTokens = new Map<string, string>();\n\nexport function resolveLocalHarnessAccessToken(\n config: ResolvedConfig,\n): string | undefined {\n if (IS_PUBLISHED_BUILD || config.environment !== \"local\") {\n return undefined;\n }\n\n const profile = inferLocalHarnessProfile(config);\n if (\n config.authToken &&\n (profile !== \"local-aws\" || isExplicitTokenSource(config.authTokenSource))\n ) {\n return undefined;\n }\n\n const cacheKey = [\n profile,\n process.env.LOCAL_HARNESS_TOKEN_ISSUER ?? \"\",\n process.env.LOCAL_HARNESS_TOKEN_SECRET ?? \"\",\n process.env.LOCAL_HARNESS_SUBJECT ?? \"\",\n process.env.HARNESS_USER_EMAIL ?? \"\",\n process.env.LOCAL_HARNESS_EMAIL ?? \"\",\n process.env.LOCAL_HARNESS_TOKEN_TTL_SECONDS ?? \"\",\n ].join(\"\\0\");\n const cached = mintedTokens.get(cacheKey);\n if (cached) return cached;\n\n const token = mintLocalHarnessToken(profile);\n mintedTokens.set(cacheKey, token);\n return token;\n}\n\nfunction isExplicitTokenSource(\n source: ResolvedConfig[\"authTokenSource\"],\n): boolean {\n return source === \"flag\" || source === \"env\" || source === \"agent-env\";\n}\n\nexport function inferLocalHarnessProfile(\n config: Pick<ResolvedConfig, \"apiBaseUrl\" | \"webBaseUrl\">,\n): LocalHarnessProfile {\n return isLocalAwsUrl(config.apiBaseUrl) || isLocalAwsUrl(config.webBaseUrl)\n ? \"local-aws\"\n : \"local\";\n}\n\nfunction mintLocalHarnessToken(profile: LocalHarnessProfile): string {\n const subject =\n envValue(process.env.LOCAL_HARNESS_SUBJECT) ??\n envValue(process.env.HARNESS_USER_EMAIL) ??\n DEFAULT_SUBJECT;\n const email =\n envValue(process.env.LOCAL_HARNESS_EMAIL) ??\n (subject.includes(\"@\") ? subject : undefined);\n const issuer =\n envValue(process.env.LOCAL_HARNESS_TOKEN_ISSUER) ??\n (profile === \"local-aws\" ? LOCAL_AWS_ISSUER : DEFAULT_ISSUER);\n const secret =\n envValue(process.env.LOCAL_HARNESS_TOKEN_SECRET) ??\n (profile === \"local-aws\" ? LOCAL_AWS_SECRET : DEFAULT_SECRET);\n const ttlSeconds = Number(\n envValue(process.env.LOCAL_HARNESS_TOKEN_TTL_SECONDS) ??\n String(DEFAULT_TTL_SECONDS),\n );\n if (!Number.isFinite(ttlSeconds) || ttlSeconds <= 0) {\n throw new Error(\n \"LOCAL_HARNESS_TOKEN_TTL_SECONDS must be a positive number.\",\n );\n }\n\n const now = Math.floor(Date.now() / 1000);\n const payload = {\n typ: \"local_harness_access\",\n dreamboard_provider: \"local-harness\",\n dreamboard_provider_subject: subject,\n ...(email ? { email } : {}),\n iss: issuer,\n sub: subject,\n iat: now,\n exp: now + Math.floor(ttlSeconds),\n jti: randomUUID(),\n };\n\n const headerPart = base64UrlJson({ alg: \"HS256\", typ: \"JWT\" });\n const payloadPart = base64UrlJson(payload);\n const signature = createHmac(\"sha256\", secret)\n .update(`${headerPart}.${payloadPart}`)\n .digest(\"base64url\");\n return `${headerPart}.${payloadPart}.${signature}`;\n}\n\nfunction base64UrlJson(value: unknown): string {\n return Buffer.from(JSON.stringify(value), \"utf8\").toString(\"base64url\");\n}\n\nfunction envValue(raw: string | undefined): string | undefined {\n return typeof raw === \"string\" && raw.trim().length > 0\n ? raw.trim()\n : undefined;\n}\n\nfunction isLocalAwsUrl(rawUrl: string | undefined): boolean {\n if (!rawUrl) return false;\n try {\n const url = new URL(rawUrl);\n return (\n (url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\") &&\n (url.port === \"18080\" || url.port === \"8088\")\n );\n } catch {\n return false;\n }\n}\n","import { client } from \"@dreamboard-games/api-client/client.gen\";\nimport type {\n Environment,\n EnvironmentConfig,\n GlobalConfig,\n ProjectConfig,\n ResolvedConfig,\n} from \"../types.js\";\nimport type { ConfigFlags } from \"../flags.js\";\nimport { IS_PUBLISHED_BUILD, PUBLISHED_ENVIRONMENT } from \"../build-target.js\";\nimport {\n DEFAULT_API_BASE_URL,\n DEFAULT_WEB_BASE_URL,\n ENVIRONMENT_CONFIGS,\n} from \"../constants.js\";\nimport { loadGlobalConfig } from \"./global-config.js\";\nimport { findProjectRoot, loadProjectConfig } from \"./project-config.js\";\nimport {\n type Credentials,\n type StoredSessionSnapshot,\n getStoredSession,\n setCredentials,\n} from \"./credential-store.js\";\nimport { classifyRefreshError } from \"../auth/refresh-error.js\";\nimport { refreshClerkOAuthToken } from \"../auth/clerk-oauth.js\";\nimport { resolveLocalHarnessAccessToken } from \"./local-harness-auth.js\";\n\nconst LOGIN_HINT = \"Run `dreamboard login` to authenticate again.\";\nconst DEFAULT_REFRESH_WINDOW_MS = 5 * 60 * 1000;\nconst TRANSIENT_READ_RETRY_DELAYS_MS = [100, 300];\n\nexport type CredentialSnapshot = {\n accessToken?: string;\n refreshToken?: string;\n tokenExpiresAt?: string;\n clerkOAuthIssuer?: string;\n clerkOAuthClientId?: string;\n clerkOAuthTokenUrl?: string;\n environment?: string;\n authTokenSource: ResolvedConfig[\"authTokenSource\"];\n refreshTokenSource: ResolvedConfig[\"refreshTokenSource\"];\n};\n\n/**\n * Resolve the effective CLI config for this invocation.\n *\n * `resolveConfig` is pure and synchronous: it takes pre-loaded inputs\n * (global config, flags, optional project config, optional credential\n * snapshot) and assembles a read-only `ResolvedConfig`. It intentionally\n * does not touch disk or the network - refreshing/persisting credentials\n * is the job of `configureClient` + `RefreshCoordinator`.\n *\n * Passing `credentials = undefined` is equivalent to \"no stored session\n * for this call\", used by contexts that should never inherit the local\n * session (e.g. `dreamboard login` before the browser flow).\n */\nexport function resolveConfig(\n globalConfig: GlobalConfig,\n flags: ConfigFlags,\n project?: ProjectConfig,\n credentials?: StoredSessionSnapshot | null,\n): ResolvedConfig {\n if (IS_PUBLISHED_BUILD) {\n assertPublicRuntimeFlags(flags);\n }\n\n const envEnvironment = IS_PUBLISHED_BUILD\n ? undefined\n : environmentFromProcess();\n const projectEnvironment = IS_PUBLISHED_BUILD\n ? undefined\n : project?.environment;\n const environment = IS_PUBLISHED_BUILD\n ? PUBLISHED_ENVIRONMENT\n : flags.env ||\n envEnvironment ||\n projectEnvironment ||\n globalConfig.environment ||\n \"staging\";\n const envConfig = ENVIRONMENT_CONFIGS[environment];\n const publishedEnvConfig = ENVIRONMENT_CONFIGS[PUBLISHED_ENVIRONMENT];\n const hasExplicitEnvironmentOverride =\n !IS_PUBLISHED_BUILD &&\n Boolean(flags.env || envEnvironment || projectEnvironment);\n\n const resolvedApiBaseUrl = IS_PUBLISHED_BUILD\n ? (publishedEnvConfig?.apiBaseUrl ?? DEFAULT_API_BASE_URL)\n : hasExplicitEnvironmentOverride\n ? projectLocalBaseUrl(project?.apiBaseUrl, environment) ||\n envConfig?.apiBaseUrl ||\n DEFAULT_API_BASE_URL\n : project?.apiBaseUrl || envConfig?.apiBaseUrl || DEFAULT_API_BASE_URL;\n const apiBaseUrl =\n valueOrUndefined(process.env.DREAMBOARD_API_BASE_URL) ?? resolvedApiBaseUrl;\n\n const resolvedWebBaseUrl = IS_PUBLISHED_BUILD\n ? (publishedEnvConfig?.webBaseUrl ?? DEFAULT_WEB_BASE_URL)\n : hasExplicitEnvironmentOverride\n ? projectLocalBaseUrl(project?.webBaseUrl, environment) ||\n envConfig?.webBaseUrl ||\n DEFAULT_WEB_BASE_URL\n : project?.webBaseUrl || envConfig?.webBaseUrl || DEFAULT_WEB_BASE_URL;\n const webBaseUrl =\n valueOrUndefined(process.env.DREAMBOARD_WEB_BASE_URL) ?? resolvedWebBaseUrl;\n\n const snapshot = buildCredentialSnapshot(flags, credentials, environment);\n const oauthConfig = resolveEnvironmentOAuthConfig(environment, envConfig);\n\n return {\n environment,\n apiBaseUrl,\n webBaseUrl,\n authToken: snapshot.accessToken,\n refreshToken: snapshot.refreshToken,\n tokenExpiresAt: snapshot.tokenExpiresAt,\n clerkOAuthIssuer: snapshot.clerkOAuthIssuer ?? oauthConfig.issuer,\n clerkOAuthClientId:\n snapshot.clerkOAuthClientId ?? oauthConfig.clientId,\n clerkOAuthTokenUrl: snapshot.clerkOAuthTokenUrl ?? oauthConfig.tokenUrl,\n clerkOAuthScope: oauthConfig.scope,\n authTokenSource: snapshot.authTokenSource,\n refreshTokenSource: snapshot.refreshTokenSource,\n };\n}\n\nfunction resolveEnvironmentOAuthConfig(\n environment: Environment,\n envConfig?: EnvironmentConfig,\n): {\n issuer?: string;\n clientId?: string;\n tokenUrl?: string;\n scope?: string;\n} {\n const prefix = environment.toUpperCase();\n return {\n issuer:\n valueOrUndefined(\n process.env[`DREAMBOARD_${prefix}_CLERK_OAUTH_ISSUER`],\n ) ??\n valueOrUndefined(process.env.DREAMBOARD_CLERK_OAUTH_ISSUER) ??\n envConfig?.clerkOAuthIssuer,\n clientId:\n valueOrUndefined(\n process.env[`DREAMBOARD_${prefix}_CLERK_OAUTH_CLIENT_ID`],\n ) ??\n valueOrUndefined(process.env.DREAMBOARD_CLERK_OAUTH_CLIENT_ID) ??\n envConfig?.clerkOAuthClientId,\n tokenUrl:\n valueOrUndefined(\n process.env[`DREAMBOARD_${prefix}_CLERK_OAUTH_TOKEN_URL`],\n ) ??\n valueOrUndefined(process.env.DREAMBOARD_CLERK_OAUTH_TOKEN_URL) ??\n envConfig?.clerkOAuthTokenUrl,\n scope:\n valueOrUndefined(\n process.env[`DREAMBOARD_${prefix}_CLERK_OAUTH_SCOPE`],\n ) ??\n valueOrUndefined(process.env.DREAMBOARD_CLERK_OAUTH_SCOPE) ??\n envConfig?.clerkOAuthScope,\n };\n}\n\nfunction buildCredentialSnapshot(\n flags: ConfigFlags,\n storedCredentials?: StoredSessionSnapshot | null,\n environment?: Environment,\n): CredentialSnapshot {\n const flagToken = valueOrUndefined(flags.token);\n const agentEnvToken = valueOrUndefined(process.env.DREAMBOARD_AGENT_TOKEN);\n const envToken = valueOrUndefined(process.env.DREAMBOARD_TOKEN);\n const environmentScopedStoredCredentials =\n storedCredentials?.environment &&\n environment &&\n storedCredentials.environment !== environment\n ? null\n : (storedCredentials ?? null);\n\n if (IS_PUBLISHED_BUILD) {\n const stored = environmentScopedStoredCredentials;\n if (agentEnvToken) {\n return {\n accessToken: agentEnvToken,\n refreshToken: undefined,\n tokenExpiresAt: undefined,\n authTokenSource: \"agent-env\",\n refreshTokenSource: \"none\",\n };\n }\n return {\n accessToken: stored?.accessToken,\n refreshToken: stored?.refreshToken,\n tokenExpiresAt: stored?.tokenExpiresAt,\n clerkOAuthIssuer: stored?.clerkOAuthIssuer,\n clerkOAuthClientId: stored?.clerkOAuthClientId,\n clerkOAuthTokenUrl: stored?.clerkOAuthTokenUrl,\n environment: stored?.environment,\n authTokenSource: stored?.accessToken ? \"global\" : \"none\",\n refreshTokenSource: stored?.refreshToken ? \"global\" : \"none\",\n };\n }\n\n const accessToken =\n flagToken ||\n agentEnvToken ||\n envToken ||\n environmentScopedStoredCredentials?.accessToken;\n const refreshToken = environmentScopedStoredCredentials?.refreshToken;\n\n const authTokenSource: ResolvedConfig[\"authTokenSource\"] = flagToken\n ? \"flag\"\n : agentEnvToken\n ? \"agent-env\"\n : envToken\n ? \"env\"\n : environmentScopedStoredCredentials?.accessToken\n ? \"global\"\n : \"none\";\n\n const refreshTokenSource: ResolvedConfig[\"refreshTokenSource\"] =\n environmentScopedStoredCredentials?.refreshToken ? \"global\" : \"none\";\n\n return {\n accessToken,\n refreshToken,\n tokenExpiresAt: environmentScopedStoredCredentials?.tokenExpiresAt,\n clerkOAuthIssuer: environmentScopedStoredCredentials?.clerkOAuthIssuer,\n clerkOAuthClientId: environmentScopedStoredCredentials?.clerkOAuthClientId,\n clerkOAuthTokenUrl: environmentScopedStoredCredentials?.clerkOAuthTokenUrl,\n environment: environmentScopedStoredCredentials?.environment,\n authTokenSource,\n refreshTokenSource,\n };\n}\n\nfunction environmentFromProcess(): Environment | undefined {\n const value = valueOrUndefined(process.env.DREAMBOARD_ENV);\n if (!value) return undefined;\n if (value === \"local\" || value === \"staging\" || value === \"prod\") {\n return value;\n }\n throw new Error(\n `Invalid DREAMBOARD_ENV '${value}'. Valid options: local, staging, prod`,\n );\n}\n\nfunction projectLocalBaseUrl(\n rawUrl: string | undefined,\n environment: Environment,\n): string | undefined {\n if (environment !== \"local\" || !rawUrl) return undefined;\n try {\n const url = new URL(rawUrl);\n return url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\"\n ? rawUrl\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction assertPublicRuntimeFlags(flags: ConfigFlags): void {\n const argv = process.argv.slice(2);\n\n if (flags.env || argv.includes(\"--env\")) {\n throw new Error(\n \"The published Dreamboard CLI is production-only and does not accept `--env`.\",\n );\n }\n\n if (valueOrUndefined(flags.token) || argv.includes(\"--token\")) {\n throw new Error(\n \"Direct JWT injection is not supported in the published Dreamboard CLI. Use `dreamboard login` so the CLI can store and refresh your session.\",\n );\n }\n\n if (process.env.DREAMBOARD_TOKEN) {\n throw new Error(\n \"The published Dreamboard CLI ignores direct token environment variables. Use `dreamboard login` so the CLI can manage refreshable credentials.\",\n );\n }\n}\n\n/**\n * Configure the API client for the resolved environment, refreshing the\n * stored CLI session first if it is close to expiry.\n *\n * The refresh path never mutates `config`. It goes through\n * Clerk OAuth directly and the CredentialStore writes. After a successful\n * rotation the HTTP client\n * is configured with the rotated access token; on transient failures we\n * fall back to the `config.authToken` snapshot (which is why commands\n * still see a bearer header and can surface the original error).\n */\nexport async function configureClient(config: ResolvedConfig): Promise<void> {\n const effectiveAccessToken = await ensureEffectiveAccessToken(config);\n\n client.setConfig({\n baseUrl: config.apiBaseUrl,\n fetch: createRetryingReadFetch(globalThis.fetch.bind(globalThis)),\n headers: effectiveAccessToken\n ? { Authorization: `Bearer ${effectiveAccessToken}` }\n : {},\n });\n}\n\nfunction createRetryingReadFetch(fetchImpl: typeof fetch): typeof fetch {\n return (async (input: RequestInfo | URL, init?: RequestInit) => {\n const method = resolveFetchMethod(input, init);\n if (method !== \"GET\" && method !== \"HEAD\") {\n return fetchImpl(input, init);\n }\n\n let lastError: unknown;\n for (\n let attempt = 0;\n attempt <= TRANSIENT_READ_RETRY_DELAYS_MS.length;\n attempt += 1\n ) {\n try {\n return await fetchImpl(input, init);\n } catch (error) {\n lastError = error;\n if (\n attempt >= TRANSIENT_READ_RETRY_DELAYS_MS.length ||\n !isTransientFetchError(error)\n ) {\n throw error;\n }\n await sleep(TRANSIENT_READ_RETRY_DELAYS_MS[attempt]!);\n }\n }\n\n throw lastError;\n }) as typeof fetch;\n}\n\nfunction resolveFetchMethod(\n input: RequestInfo | URL,\n init?: RequestInit,\n): string {\n const method =\n init?.method ??\n (typeof Request !== \"undefined\" && input instanceof Request\n ? input.method\n : undefined);\n return (method ?? \"GET\").toUpperCase();\n}\n\nfunction isTransientFetchError(error: unknown): boolean {\n const message =\n error instanceof Error\n ? error.message\n : typeof error === \"object\" && error !== null && \"message\" in error\n ? String((error as { message?: unknown }).message)\n : String(error);\n const normalized = message.toLowerCase();\n return (\n normalized.includes(\"fetch failed\") ||\n normalized.includes(\"network\") ||\n normalized.includes(\"timeout\") ||\n normalized.includes(\"econnreset\") ||\n normalized.includes(\"econnrefused\") ||\n normalized.includes(\"socket\")\n );\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function ensureEffectiveAccessToken(\n config: ResolvedConfig,\n): Promise<string | undefined> {\n const localHarnessToken = resolveLocalHarnessAccessToken(config);\n if (localHarnessToken) return localHarnessToken;\n\n if (!usesStoredSession(config)) {\n // Env/flag-provided tokens are not owned by CredentialStore and must\n // not be written back. Use them as-is.\n return config.authToken;\n }\n\n if (config.refreshToken) {\n const credentials = await refreshClerkOAuthSessionIfNeeded(config);\n return credentials?.accessToken ?? config.authToken;\n }\n\n return config.authToken;\n}\n\n/**\n * Explicit \"force a refresh attempt right now\" entrypoint used by\n * `dreamboard auth status`. Returns the resulting credentials or throws\n * a classified error.\n */\nexport async function refreshResolvedAuthSession(\n config: ResolvedConfig,\n): Promise<Credentials | null> {\n if (!usesStoredSession(config)) return null;\n if (config.refreshToken) {\n return refreshClerkOAuthSession(config);\n }\n return null;\n}\n\nasync function refreshClerkOAuthSessionIfNeeded(\n config: ResolvedConfig,\n): Promise<Credentials | null> {\n const expiry = config.tokenExpiresAt\n ? new Date(config.tokenExpiresAt)\n : getAuthTokenExpiry(config.authToken);\n if (expiry && expiry.getTime() > Date.now() + DEFAULT_REFRESH_WINDOW_MS) {\n if (!config.authToken || !config.refreshToken) return null;\n return {\n accessToken: config.authToken,\n refreshToken: config.refreshToken,\n tokenExpiresAt: config.tokenExpiresAt,\n clerkOAuthIssuer: config.clerkOAuthIssuer,\n clerkOAuthClientId: config.clerkOAuthClientId,\n clerkOAuthTokenUrl: config.clerkOAuthTokenUrl,\n environment: config.environment,\n };\n }\n return refreshClerkOAuthSession(config);\n}\n\nasync function refreshClerkOAuthSession(\n config: ResolvedConfig,\n): Promise<Credentials | null> {\n if (!config.refreshToken) return null;\n const payload = await refreshClerkOAuthToken({\n config: {\n issuer: config.clerkOAuthIssuer,\n clientId: config.clerkOAuthClientId,\n tokenUrl: config.clerkOAuthTokenUrl,\n },\n refreshToken: config.refreshToken,\n });\n const credentials = {\n accessToken: payload.accessToken,\n refreshToken: payload.refreshToken,\n tokenExpiresAt: payload.expiresAt,\n clerkOAuthIssuer: config.clerkOAuthIssuer,\n clerkOAuthClientId: config.clerkOAuthClientId,\n clerkOAuthTokenUrl: payload.tokenUrl,\n environment: config.environment,\n };\n await setCredentials(credentials);\n return credentials;\n}\n\nexport function requireAuth(config: ResolvedConfig): void {\n if (!config.authToken && !resolveLocalHarnessAccessToken(config)) {\n throw new Error(\n \"Missing Dreamboard session. Run `dreamboard login` to authenticate.\",\n );\n }\n}\n\nexport function valueOrUndefined(\n value: string | boolean | undefined,\n): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nexport function getAuthTokenExpiry(\n accessToken: string | undefined,\n): Date | null {\n if (!accessToken) return null;\n const parts = accessToken.split(\".\");\n if (parts.length !== 3) return null;\n try {\n const payload = JSON.parse(\n Buffer.from(parts[1]!, \"base64url\").toString(\"utf8\"),\n ) as { exp?: unknown };\n if (typeof payload.exp !== \"number\" || !Number.isFinite(payload.exp)) {\n return null;\n }\n return new Date(payload.exp * 1000);\n } catch {\n return null;\n }\n}\n\n/**\n * Compatibility helper retained for `dreamboard auth status` / tests.\n * Returns true iff the error looks like a permanent refresh-token\n * invalidation. Prefer `classifyRefreshError` for new call sites.\n */\nexport function isInvalidRefreshTokenMessage(\n message: string | undefined,\n): boolean {\n if (!message) return false;\n return classifyRefreshError({ message }).kind === \"permanent_invalid\";\n}\n\nexport function formatStoredSessionInvalidMessage(reason?: string): string {\n const detail = reason ? ` (${reason})` : \"\";\n return `Stored Dreamboard session is expired or invalid${detail}. ${LOGIN_HINT}`;\n}\n\nfunction usesStoredSession(config: ResolvedConfig): boolean {\n return (\n config.authTokenSource === \"global\" &&\n config.refreshTokenSource === \"global\"\n );\n}\n\n/**\n * Common init pattern used by pull, push, status, update, run commands:\n * find project root, load config, resolve config, require auth,\n * configure client.\n */\nexport async function resolveProjectContext(\n flags: ConfigFlags,\n opts?: { requireAuth?: boolean },\n): Promise<{\n projectRoot: string;\n projectConfig: ProjectConfig;\n config: ResolvedConfig;\n}> {\n const projectRoot = await findProjectRoot(process.cwd());\n if (!projectRoot) {\n throw new Error(\n \"Not inside a dreamboard project (missing .dreamboard/project.json).\",\n );\n }\n\n const projectConfig = await loadProjectConfig(projectRoot);\n const [globalConfig, credentials] = await Promise.all([\n loadGlobalConfig(),\n getStoredSession(),\n ]);\n const config = resolveConfig(globalConfig, flags, projectConfig, credentials);\n\n if (opts?.requireAuth !== false) {\n requireAuth(config);\n await configureClient(config);\n }\n\n return { projectRoot, projectConfig, config };\n}\n","import path from \"node:path\";\nimport type { ProjectConfig } from \"../../types.js\";\nimport { readJsonFile, readTextFileIfExists } from \"../../utils/fs.js\";\n\ntype PackageJsonWithDeps = {\n packageManager?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n optionalDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n pnpm?: {\n overrides?: Record<string, unknown>;\n [key: string]: unknown;\n };\n};\n\nexport type SourceDependencyProfile = {\n kind: \"npm-registry\";\n packageManager?: string;\n dreamboardRegistryUrl?: string;\n localSnapshotId?: string;\n packages: Record<string, string>;\n};\n\ntype DependencyProblem = {\n location: string;\n packageName: string;\n specifier: string;\n};\n\ntype LegacyDependencyProblem = {\n location: string;\n packageName: string;\n};\n\nconst DEPENDENCY_FIELDS = [\n \"dependencies\",\n \"devDependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n] as const;\n\nconst UNPORTABLE_SPECIFIER_PATTERN = /^(file|link|portal|workspace):/;\n\nexport async function buildSourceDependencyProfile(options: {\n projectRoot: string;\n projectConfig?: ProjectConfig;\n}): Promise<SourceDependencyProfile> {\n const packageJson = await readProjectPackageJson(options.projectRoot);\n const packages = collectDreamboardPackageSpecifiers(packageJson);\n const hasLocalSnapshotPackage = Object.values(packages).some((value) =>\n value.includes(\"-local.\"),\n );\n const localMaintainerRegistry = hasLocalSnapshotPackage\n ? options.projectConfig?.localMaintainerRegistry\n : undefined;\n return {\n kind: \"npm-registry\",\n packageManager: packageJson.packageManager,\n dreamboardRegistryUrl:\n (await readDreamboardRegistryFromNpmrc(options.projectRoot)) ??\n localMaintainerRegistry?.registryUrl,\n localSnapshotId: localMaintainerRegistry?.snapshotId,\n packages,\n };\n}\n\nexport async function assertCompilerPortableDependencies(options: {\n projectRoot: string;\n projectConfig?: ProjectConfig;\n}): Promise<SourceDependencyProfile> {\n const packageJson = await readProjectPackageJson(options.projectRoot);\n const legacyProblems = collectLegacyDreamboardSpecifiers(packageJson);\n if (legacyProblems.length > 0) {\n throwLegacyDreamboardPackageError(legacyProblems);\n }\n\n const problems = collectUnportableDreamboardSpecifiers(packageJson);\n if (problems.length > 0) {\n const details = problems\n .map(\n (problem) =>\n `${problem.location} ${problem.packageName} -> ${problem.specifier}`,\n )\n .join(\"; \");\n throw new Error(\n [\n \"Compiler-bound workspaces must install Dreamboard packages from a registry.\",\n `Found unportable Dreamboard dependency specifier(s): ${details}.`,\n \"Run `dreamboard sync` from a workspace that uses registry-pinned @dreamboard-games/* and dreamboard versions before compiling.\",\n ].join(\" \"),\n );\n }\n\n const profile = await buildSourceDependencyProfile(options);\n const hasLocalSnapshotPackage = Object.values(profile.packages).some(\n (value) => value.includes(\"-local.\"),\n );\n if (hasLocalSnapshotPackage && !profile.dreamboardRegistryUrl) {\n throw new Error(\n \"This workspace references local Dreamboard snapshot versions but has no @dreamboard registry configured. Run `dreamboard sync --env local` to refresh .npmrc before compiling.\",\n );\n }\n\n return profile;\n}\n\nexport async function assertReleaseEnvironmentPortableDependencies(options: {\n projectRoot: string;\n projectConfig?: ProjectConfig;\n environment: string;\n}): Promise<SourceDependencyProfile> {\n const packageJson = await readProjectPackageJson(options.projectRoot);\n const legacyProblems = collectLegacyDreamboardSpecifiers(packageJson);\n if (legacyProblems.length > 0) {\n throwLegacyDreamboardPackageError(legacyProblems);\n }\n\n const profile = await buildSourceDependencyProfile(options);\n if (!isReleaseEnvironment(options.environment)) {\n return profile;\n }\n\n const localPackages = Object.entries(profile.packages).filter(([, version]) =>\n version.includes(\"-local.\"),\n );\n const localRegistryUrl = isLocalRegistryUrl(profile.dreamboardRegistryUrl)\n ? profile.dreamboardRegistryUrl\n : undefined;\n\n if (localPackages.length === 0 && !localRegistryUrl) {\n return profile;\n }\n\n const packageDetails = localPackages\n .map(([name, version]) => `${name}@${version}`)\n .join(\", \");\n const registryDetails = localRegistryUrl\n ? `local registry ${localRegistryUrl}`\n : null;\n const details = [packageDetails || null, registryDetails]\n .filter(Boolean)\n .join(\"; \");\n\n throw new Error(\n [\n `The ${options.environment} environment does not support local Dreamboard package snapshots.`,\n `Found ${details}.`,\n \"Publish a public alpha package, repin the workspace to that exact version, and rerun the command.\",\n ].join(\" \"),\n );\n}\n\nasync function readProjectPackageJson(\n projectRoot: string,\n): Promise<PackageJsonWithDeps> {\n return readJsonFile<PackageJsonWithDeps>(\n path.join(projectRoot, \"package.json\"),\n );\n}\n\nfunction collectDreamboardPackageSpecifiers(\n packageJson: PackageJsonWithDeps,\n): Record<string, string> {\n const packages: Record<string, string> = {};\n for (const field of DEPENDENCY_FIELDS) {\n const dependencies = packageJson[field];\n if (!dependencies) continue;\n for (const [packageName, specifier] of Object.entries(dependencies)) {\n if (isPortableDreamboardPackage(packageName)) {\n packages[packageName] = specifier;\n }\n }\n }\n\n const overrides = packageJson.pnpm?.overrides;\n if (overrides) {\n for (const [packageName, specifier] of Object.entries(overrides)) {\n if (\n isPortableDreamboardPackage(packageName) &&\n typeof specifier === \"string\" &&\n packages[packageName] === undefined\n ) {\n packages[packageName] = specifier;\n }\n }\n }\n return packages;\n}\n\nfunction collectUnportableDreamboardSpecifiers(\n packageJson: PackageJsonWithDeps,\n): DependencyProblem[] {\n const problems: DependencyProblem[] = [];\n for (const field of DEPENDENCY_FIELDS) {\n const dependencies = packageJson[field];\n if (!dependencies) continue;\n for (const [packageName, specifier] of Object.entries(dependencies)) {\n if (\n isPortableDreamboardPackage(packageName) &&\n UNPORTABLE_SPECIFIER_PATTERN.test(specifier)\n ) {\n problems.push({ location: field, packageName, specifier });\n }\n }\n }\n\n const overrides = packageJson.pnpm?.overrides;\n if (overrides) {\n for (const [packageName, specifier] of Object.entries(overrides)) {\n if (\n isPortableDreamboardPackage(packageName) &&\n typeof specifier === \"string\" &&\n UNPORTABLE_SPECIFIER_PATTERN.test(specifier)\n ) {\n problems.push({\n location: \"pnpm.overrides\",\n packageName,\n specifier,\n });\n }\n }\n }\n return problems;\n}\n\nfunction collectLegacyDreamboardSpecifiers(\n packageJson: PackageJsonWithDeps,\n): LegacyDependencyProblem[] {\n const problems: LegacyDependencyProblem[] = [];\n for (const field of DEPENDENCY_FIELDS) {\n const dependencies = packageJson[field];\n if (!dependencies) continue;\n for (const packageName of Object.keys(dependencies)) {\n if (isLegacyDreamboardPackage(packageName)) {\n problems.push({ location: field, packageName });\n }\n }\n }\n\n const overrides = packageJson.pnpm?.overrides;\n if (overrides) {\n for (const packageName of Object.keys(overrides)) {\n if (isLegacyDreamboardPackage(packageName)) {\n problems.push({ location: \"pnpm.overrides\", packageName });\n }\n }\n }\n return problems;\n}\n\nfunction throwLegacyDreamboardPackageError(\n problems: LegacyDependencyProblem[],\n): never {\n const details = problems\n .map((problem) => `${problem.location} ${problem.packageName}`)\n .join(\"; \");\n throw new Error(\n [\n \"Legacy @dreamboard/* package dependencies are no longer supported in compiler-bound workspaces.\",\n `Found ${details}.`,\n \"Repin to the public @dreamboard-games/* packages and rerun the command.\",\n ].join(\" \"),\n );\n}\n\nfunction isPortableDreamboardPackage(packageName: string): boolean {\n return (\n packageName === \"dreamboard\" ||\n packageName.startsWith(\"@dreamboard-games/\")\n );\n}\n\nfunction isLegacyDreamboardPackage(packageName: string): boolean {\n return packageName.startsWith(\"@dreamboard/\");\n}\n\nfunction isReleaseEnvironment(environment: string): boolean {\n return environment === \"staging\" || environment === \"prod\";\n}\n\nfunction isLocalRegistryUrl(rawUrl: string | undefined): boolean {\n if (!rawUrl) return false;\n try {\n const url = new URL(rawUrl);\n return (\n url.hostname === \"localhost\" ||\n url.hostname === \"127.0.0.1\" ||\n url.hostname === \"::1\" ||\n url.hostname.endsWith(\".local\")\n );\n } catch {\n return /localhost|127\\.0\\.0\\.1|\\.local\\b/.test(rawUrl);\n }\n}\n\nasync function readDreamboardRegistryFromNpmrc(\n projectRoot: string,\n): Promise<string | undefined> {\n const npmrc = await readTextFileIfExists(path.join(projectRoot, \".npmrc\"));\n if (!npmrc) return undefined;\n for (const line of npmrc.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (!trimmed.startsWith(\"@dreamboard-games:registry=\")) continue;\n return (\n trimmed.slice(\"@dreamboard-games:registry=\".length).trim() || undefined\n );\n }\n return undefined;\n}\n"],"mappings":"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MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,K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","names":["c","i","l","i","s","ansiRegex","stripAnsi","env","c","_","getColor","createConsola","argv","init"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/services/project/local-files.ts"],"sourcesContent":["import { readdir, unlink } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { GameTopologyManifest } from \"@dreamboard-games/sdk/types\";\nimport {\n PROJECT_DIR_NAME,\n MANIFEST_FILE,\n RULE_FILE,\n SNAPSHOT_FILE,\n LOCAL_IGNORE_DIRS,\n} from \"../../constants.js\";\nimport type { Snapshot } from \"../../types.js\";\nimport {\n readJsonFile,\n readTextFile,\n readTextFileIfExists,\n writeTextFile,\n} from \"../../utils/fs.js\";\nimport { atomicWriteFile } from \"../../utils/atomic-file.js\";\nimport { hashContent } from \"../../utils/crypto.js\";\nimport {\n computeManifestHash,\n materializeManifest,\n writeManifestSource,\n} from \"./manifest-authoring.js\";\nimport {\n isAllowedGamePath as isAllowedPathFromOwnership,\n isDynamicGeneratedPath,\n isLibraryPath as isLibraryPathFromOwnership,\n} from \"./scaffold-ownership.js\";\n\n/**\n * Returns true when a path is inside the canonical game project structure.\n * Anything outside app/, ui/, shared/, or the known root files is rejected.\n */\nexport function isAllowedGamePath(filePath: string): boolean {\n return isAllowedPathFromOwnership(filePath);\n}\n\nexport function isLibraryPath(filePath: string): boolean {\n return isLibraryPathFromOwnership(filePath);\n}\n\ntype WriteDecision = \"write\" | \"skip\";\n\n/**\n * Decide whether a file from the scaffold response should be written to disk.\n *\n * - Library files → always overwrite (they are fully generated).\n * - Everything else → only write if the file does not yet exist or is empty\n * locally (first-time seeding; preserves user edits).\n */\nfunction shouldWriteScaffoldFile(\n filePath: string,\n existingContent: string | null,\n): WriteDecision {\n if (isLibraryPath(filePath)) return \"write\";\n const hasContent =\n existingContent !== null && existingContent.trim().length > 0;\n return hasContent ? \"skip\" : \"write\";\n}\n\nexport async function writeSourceFiles(\n rootDir: string,\n files: Record<string, string | null>,\n): Promise<void> {\n for (const [relativePath, content] of Object.entries(files)) {\n if (content === null || content === undefined) continue;\n const filePath = path.join(rootDir, relativePath);\n await writeTextFile(filePath, content);\n }\n}\n\nexport interface ScaffoldWriteResult {\n written: string[];\n skipped: string[];\n}\n\n/**\n * Write scaffold files using local-merge logic.\n *\n * - Library files are always overwritten.\n * - User-owned files (phases, components, etc.) are only written when the\n * local file does not exist or is empty. Files with content are skipped\n * so user edits are never lost.\n *\n * Returns lists of files that were written (and actually changed) and files\n * that were skipped because a non-empty local copy already exists.\n */\nexport async function writeScaffoldFiles(\n rootDir: string,\n files: Record<string, string | null>,\n): Promise<ScaffoldWriteResult> {\n const written: string[] = [];\n const skipped: string[] = [];\n\n for (const [relativePath, content] of Object.entries(files)) {\n if (content === null || content === undefined) continue;\n\n const fullPath = path.join(rootDir, relativePath);\n const existingContent = await readTextFileIfExists(fullPath);\n\n const decision = shouldWriteScaffoldFile(relativePath, existingContent);\n\n if (decision === \"skip\") {\n skipped.push(relativePath);\n continue;\n }\n\n await writeTextFile(fullPath, content);\n\n if (existingContent !== content) {\n written.push(relativePath);\n }\n }\n\n written.sort();\n skipped.sort();\n return { written, skipped };\n}\n\nexport async function removeExtraneousFiles(\n rootDir: string,\n keep: Set<string>,\n): Promise<void> {\n const localFiles = await collectLocalFiles(rootDir);\n for (const filePath of Object.keys(localFiles)) {\n if (filePath === MANIFEST_FILE || filePath === RULE_FILE) continue;\n if (!keep.has(filePath)) {\n await unlink(path.join(rootDir, filePath));\n }\n }\n}\n\nexport async function collectLocalFiles(\n rootDir: string,\n): Promise<Record<string, string>> {\n const result: Record<string, string> = {};\n await walkDir(rootDir, rootDir, result);\n return result;\n}\n\nexport async function walkDir(\n rootDir: string,\n currentDir: string,\n result: Record<string, string>,\n): Promise<void> {\n const entries = await readdir(currentDir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory()) {\n if (LOCAL_IGNORE_DIRS.has(entry.name)) continue;\n await walkDir(rootDir, path.join(currentDir, entry.name), result);\n } else if (entry.isFile()) {\n const filePath = path.join(currentDir, entry.name);\n const relativePath = path.relative(rootDir, filePath);\n result[relativePath] = await readTextFile(filePath);\n }\n }\n}\n\nexport async function writeManifest(\n rootDir: string,\n manifest: GameTopologyManifest,\n): Promise<void> {\n await writeManifestSource(rootDir, manifest);\n}\n\nexport async function writeRule(\n rootDir: string,\n ruleText: string,\n): Promise<void> {\n const filePath = path.join(rootDir, RULE_FILE);\n await writeTextFile(filePath, ruleText);\n}\n\nexport async function loadManifest(\n rootDir: string,\n): Promise<GameTopologyManifest> {\n return materializeManifest(rootDir);\n}\n\nexport { computeManifestHash };\n\nexport async function loadRule(rootDir: string): Promise<string> {\n const filePath = path.join(rootDir, RULE_FILE);\n return readTextFile(filePath);\n}\n\nexport async function writeSnapshot(rootDir: string): Promise<void> {\n const files = await collectLocalFiles(rootDir);\n await writeSnapshotFromFiles(rootDir, files);\n}\n\nexport async function writeSnapshotFromFiles(\n rootDir: string,\n files: Record<string, string>,\n): Promise<void> {\n const snapshot: Snapshot = {\n files: {},\n };\n\n for (const [filePath, content] of Object.entries(files)) {\n if (filePath.startsWith(`${PROJECT_DIR_NAME}/`)) continue;\n if (isDynamicGeneratedPath(filePath)) continue;\n snapshot.files[filePath] = hashContent(content);\n }\n\n const snapshotPath = path.join(rootDir, PROJECT_DIR_NAME, SNAPSHOT_FILE);\n // Atomic write: a crash mid-snapshot (e.g. user kills a long `dreamboard\n // sync`) must not leave `.dreamboard/snapshot.json` truncated, or\n // `getLocalDiff` will silently report everything as \"added\" on the\n // next run and force a full re-sync.\n await atomicWriteFile(\n snapshotPath,\n `${JSON.stringify(snapshot, null, 2)}\\n`,\n { mode: 0o644 },\n );\n}\n\nfunction isIgnorableLocalDiffPath(filePath: string): boolean {\n return (\n filePath.startsWith(\"test/generated/\") ||\n filePath.startsWith(\".playwright-cli/\")\n );\n}\n\nexport async function getLocalDiff(rootDir: string): Promise<{\n modified: string[];\n added: string[];\n deleted: string[];\n}> {\n const snapshotPath = path.join(rootDir, PROJECT_DIR_NAME, SNAPSHOT_FILE);\n const snapshot = await readJsonFile<Snapshot>(snapshotPath).catch(() => null);\n if (!snapshot) {\n return { modified: [], added: [], deleted: [] };\n }\n\n const files = await collectLocalFiles(rootDir);\n const currentHashes: Record<string, string> = {};\n\n for (const [filePath, content] of Object.entries(files)) {\n if (filePath.startsWith(`${PROJECT_DIR_NAME}/`)) continue;\n if (isIgnorableLocalDiffPath(filePath)) continue;\n if (isDynamicGeneratedPath(filePath)) continue;\n currentHashes[filePath] = hashContent(content);\n }\n\n const modified: string[] = [];\n const added: string[] = [];\n const deleted: string[] = [];\n\n for (const [filePath, hash] of Object.entries(currentHashes)) {\n const prevHash = snapshot.files[filePath];\n if (!prevHash) {\n added.push(filePath);\n } else if (prevHash !== hash) {\n modified.push(filePath);\n }\n }\n\n for (const filePath of Object.keys(snapshot.files)) {\n if (isIgnorableLocalDiffPath(filePath)) continue;\n if (isDynamicGeneratedPath(filePath)) continue;\n if (!currentHashes[filePath]) {\n deleted.push(filePath);\n }\n }\n\n return { modified, added, deleted };\n}\n"],"mappings":"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","names":["isAllowedGamePath","isLibraryPath"]}
|