@gadgetinc/ggt 2.2.0 → 2.3.0
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 +26 -1
- package/dist/{add-TWLGKL2T.js → add-7MLI3TCY.js} +8 -8
- package/dist/add-7MLI3TCY.js.map +7 -0
- package/dist/agent-plugin-543K6WBH.js +11 -0
- package/dist/agent-plugin-543K6WBH.js.map +7 -0
- package/dist/chunk-2HJS3KFB.js +2 -0
- package/dist/{chunk-T6UHSWMT.js.map → chunk-2HJS3KFB.js.map} +2 -2
- package/dist/{chunk-3OM5WM7E.js → chunk-3WKH3DJL.js} +2 -2
- package/dist/chunk-577KP32Z.js +8 -0
- package/dist/chunk-577KP32Z.js.map +7 -0
- package/dist/{chunk-R6KJLEKY.js → chunk-6FVHOLT7.js} +2 -2
- package/dist/chunk-6FVHOLT7.js.map +7 -0
- package/dist/{chunk-HCULGPBH.js → chunk-72J7X5LR.js} +2 -2
- package/dist/{chunk-HCULGPBH.js.map → chunk-72J7X5LR.js.map} +2 -2
- package/dist/{chunk-JG2QCDK2.js → chunk-ALSXPCRD.js} +5 -5
- package/dist/{chunk-JG2QCDK2.js.map → chunk-ALSXPCRD.js.map} +4 -4
- package/dist/{chunk-SIR6HLN3.js → chunk-CNNOPE5K.js} +22 -22
- package/dist/chunk-CNNOPE5K.js.map +7 -0
- package/dist/chunk-ETKWDO4V.js +2 -0
- package/dist/chunk-ETKWDO4V.js.map +7 -0
- package/dist/{chunk-DR4CXBD6.js → chunk-F6BGQ4LG.js} +2 -2
- package/dist/{chunk-DR4CXBD6.js.map → chunk-F6BGQ4LG.js.map} +2 -2
- package/dist/{chunk-SVWK2NXG.js → chunk-FE5O5VX4.js} +2 -2
- package/dist/chunk-FE5O5VX4.js.map +7 -0
- package/dist/{chunk-F255O64V.js → chunk-GZTHIOXS.js} +2 -2
- package/dist/chunk-GZTHIOXS.js.map +7 -0
- package/dist/chunk-IQSZEOYY.js +283 -0
- package/dist/{chunk-442CSROP.js.map → chunk-IQSZEOYY.js.map} +4 -4
- package/dist/chunk-N5FFICAP.js +9 -0
- package/dist/chunk-N5FFICAP.js.map +7 -0
- package/dist/chunk-TGCJ6TMW.js +10 -0
- package/dist/chunk-TGCJ6TMW.js.map +7 -0
- package/dist/{chunk-XC4F2TLW.js → chunk-ULJYEUQG.js} +19 -19
- package/dist/chunk-ULJYEUQG.js.map +7 -0
- package/dist/{chunk-2742UPMB.js → chunk-UVVKKUYG.js} +2 -2
- package/dist/chunk-UVVKKUYG.js.map +7 -0
- package/dist/{chunk-WB6O2V5D.js → chunk-WZ2PO6H2.js} +2 -2
- package/dist/{chunk-OUIZQC4D.js → chunk-X4XSYLCE.js} +2 -2
- package/dist/{chunk-OUIZQC4D.js.map → chunk-X4XSYLCE.js.map} +2 -2
- package/dist/{configure-UJS7V2JX.js → configure-PYRXYNGZ.js} +2 -2
- package/dist/configure-PYRXYNGZ.js.map +7 -0
- package/dist/{debugger-QN2MCLBL.js → debugger-VKLUEWIN.js} +2 -2
- package/dist/debugger-VKLUEWIN.js.map +7 -0
- package/dist/{deploy-J74PHPQA.js → deploy-JCREEGBA.js} +3 -3
- package/dist/deploy-JCREEGBA.js.map +7 -0
- package/dist/{dev-GGUSOOYP.js → dev-Y2GLI7EH.js} +3 -3
- package/dist/{dev-GGUSOOYP.js.map → dev-Y2GLI7EH.js.map} +3 -3
- package/dist/env-5OPHX3MC.js +135 -0
- package/dist/env-5OPHX3MC.js.map +7 -0
- package/dist/esm-3JVXH7DT.js +37 -0
- package/dist/esm-3JVXH7DT.js.map +7 -0
- package/dist/{eval-L6WHUFLU.js → eval-LZPZ6PBQ.js} +3 -3
- package/dist/{eval-L6WHUFLU.js.map → eval-LZPZ6PBQ.js.map} +2 -2
- package/dist/ggt-KUAF6WUA.js +45 -0
- package/dist/ggt-KUAF6WUA.js.map +7 -0
- package/dist/{list-756D46N5.js → list-IANT7SNF.js} +2 -2
- package/dist/list-IANT7SNF.js.map +7 -0
- package/dist/login-TYRZLN5S.js +2 -0
- package/dist/{logout-LQABTJFD.js → logout-P75XYYZ6.js} +2 -2
- package/dist/logout-P75XYYZ6.js.map +7 -0
- package/dist/{logs-AQZB272X.js → logs-SBMD6JSR.js} +2 -2
- package/dist/logs-SBMD6JSR.js.map +7 -0
- package/dist/main.js +1 -1
- package/dist/{open-OMZWPQ66.js → open-JPAMII4K.js} +2 -2
- package/dist/open-JPAMII4K.js.map +7 -0
- package/dist/problems-EZRSHLZT.js +14 -0
- package/dist/problems-EZRSHLZT.js.map +7 -0
- package/dist/{pull-XYCYN7QN.js → pull-R3PMBVOT.js} +2 -2
- package/dist/pull-R3PMBVOT.js.map +7 -0
- package/dist/push-5XEEESQQ.js +2 -0
- package/dist/{status-PWAXNK5G.js → status-RJN5ES6S.js} +2 -2
- package/dist/status-RJN5ES6S.js.map +7 -0
- package/dist/update-X7YS3MNH.js +2 -0
- package/dist/{var-N4WGGJXZ.js → var-PC6KQUPF.js} +4 -4
- package/dist/var-PC6KQUPF.js.map +7 -0
- package/dist/{version-AJKSJJDC.js → version-GZJOU2CV.js} +2 -2
- package/dist/version-GZJOU2CV.js.map +7 -0
- package/dist/{whoami-KJYDSQSD.js → whoami-GKPGPZ3B.js} +2 -2
- package/dist/whoami-GKPGPZ3B.js.map +7 -0
- package/package.json +6 -6
- package/dist/add-TWLGKL2T.js.map +0 -7
- package/dist/agent-plugin-TN24O7FB.js +0 -10
- package/dist/agent-plugin-TN24O7FB.js.map +0 -7
- package/dist/chunk-2742UPMB.js.map +0 -7
- package/dist/chunk-442CSROP.js +0 -66
- package/dist/chunk-F255O64V.js.map +0 -7
- package/dist/chunk-JKZNSRLU.js +0 -8
- package/dist/chunk-JKZNSRLU.js.map +0 -7
- package/dist/chunk-JYE5LLIF.js +0 -9
- package/dist/chunk-JYE5LLIF.js.map +0 -7
- package/dist/chunk-MW6MXMSN.js +0 -2
- package/dist/chunk-MW6MXMSN.js.map +0 -7
- package/dist/chunk-R6KJLEKY.js.map +0 -7
- package/dist/chunk-SIR6HLN3.js.map +0 -7
- package/dist/chunk-SVWK2NXG.js.map +0 -7
- package/dist/chunk-T6UHSWMT.js +0 -2
- package/dist/chunk-XC4F2TLW.js.map +0 -7
- package/dist/chunk-YFUOXDPK.js +0 -10
- package/dist/chunk-YFUOXDPK.js.map +0 -7
- package/dist/chunk-ZSREFZXV.js +0 -211
- package/dist/chunk-ZSREFZXV.js.map +0 -7
- package/dist/configure-UJS7V2JX.js.map +0 -7
- package/dist/debugger-QN2MCLBL.js.map +0 -7
- package/dist/deploy-J74PHPQA.js.map +0 -7
- package/dist/esm-D77XRR65.js +0 -38
- package/dist/esm-D77XRR65.js.map +0 -7
- package/dist/ggt-5XNRJZSW.js +0 -44
- package/dist/ggt-5XNRJZSW.js.map +0 -7
- package/dist/list-756D46N5.js.map +0 -7
- package/dist/login-GMWQRH7V.js +0 -2
- package/dist/logout-LQABTJFD.js.map +0 -7
- package/dist/logs-AQZB272X.js.map +0 -7
- package/dist/open-OMZWPQ66.js.map +0 -7
- package/dist/problems-FZJKH52E.js +0 -14
- package/dist/problems-FZJKH52E.js.map +0 -7
- package/dist/pull-XYCYN7QN.js.map +0 -7
- package/dist/push-3QM7ZFTC.js +0 -2
- package/dist/status-PWAXNK5G.js.map +0 -7
- package/dist/update-QIQFJFRQ.js +0 -2
- package/dist/var-N4WGGJXZ.js.map +0 -7
- package/dist/version-AJKSJJDC.js.map +0 -7
- package/dist/whoami-KJYDSQSD.js.map +0 -7
- /package/dist/{chunk-3OM5WM7E.js.map → chunk-3WKH3DJL.js.map} +0 -0
- /package/dist/{chunk-WB6O2V5D.js.map → chunk-WZ2PO6H2.js.map} +0 -0
- /package/dist/{login-GMWQRH7V.js.map → login-TYRZLN5S.js.map} +0 -0
- /package/dist/{push-3QM7ZFTC.js.map → push-5XEEESQQ.js.map} +0 -0
- /package/dist/{update-QIQFJFRQ.js.map → update-X7YS3MNH.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{S as s}from"./chunk-IQSZEOYY.js";import"./chunk-GZTHIOXS.js";import"./chunk-72J7X5LR.js";import"./chunk-X4XSYLCE.js";import{ra as n,ta as o}from"./chunk-ALSXPCRD.js";import"./chunk-GFQYFEEH.js";import{a as r,h as a}from"./chunk-7DYQUG5M.js";a();var u=r(()=>n`
|
|
2
2
|
Show the name and email address of the currently logged in user.
|
|
3
3
|
|
|
4
4
|
{gray Usage}
|
|
5
5
|
ggt whoami
|
|
6
6
|
`,"usage"),l=r(async t=>{let e=await s(t);if(!e){o("You are not logged in");return}e.name?o(`You are logged in as ${e.name} (${e.email})`):o(`You are logged in as ${e.email}`)},"run");export{l as run,u as usage};
|
|
7
|
-
//# sourceMappingURL=whoami-
|
|
7
|
+
//# sourceMappingURL=whoami-GKPGPZ3B.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/commands/whoami.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Run, Usage } from \"../services/command/command.js\";\nimport { println } from \"../services/output/print.js\";\nimport { sprint } from \"../services/output/sprint.js\";\nimport { getUser } from \"../services/user/user.js\";\n\nexport const usage: Usage = () => sprint`\n Show the name and email address of the currently logged in user.\n\n {gray Usage}\n ggt whoami\n`;\n\nexport const run: Run = async (ctx) => {\n const user = await getUser(ctx);\n if (!user) {\n println(\"You are not logged in\");\n return;\n }\n\n if (user.name) {\n println(`You are logged in as ${user.name} (${user.email})`);\n } else {\n println(`You are logged in as ${user.email}`);\n }\n};\n"],
|
|
5
|
+
"mappings": "wPAAAA,IAKO,IAAMC,EAAeC,EAAA,IAAMC;AAAA;AAAA;AAAA;AAAA;AAAA,EAAN,SAOfC,EAAWF,EAAA,MAAOG,GAAQ,CACrC,IAAMC,EAAO,MAAMC,EAAQF,CAAG,EAC9B,GAAI,CAACC,EAAM,CACTE,EAAQ,uBAAuB,EAC/B,MACF,CAEIF,EAAK,KACPE,EAAQ,wBAAwBF,EAAK,IAAI,KAAKA,EAAK,KAAK,GAAG,EAE3DE,EAAQ,wBAAwBF,EAAK,KAAK,EAAE,CAEhD,EAZwB",
|
|
6
|
+
"names": ["init_cjs", "usage", "__name", "sprint", "run", "ctx", "user", "getUser", "println"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gadgetinc/ggt",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "The command-line interface for Gadget",
|
|
5
5
|
"homepage": "https://github.com/gadget-inc/ggt",
|
|
6
6
|
"bugs": {
|
|
@@ -81,9 +81,9 @@
|
|
|
81
81
|
"normalize-path": "^3.0.0",
|
|
82
82
|
"npm-run-all": "^4.1.5",
|
|
83
83
|
"open": "^11.0.0",
|
|
84
|
-
"oxfmt": "^0.
|
|
84
|
+
"oxfmt": "^0.36.0",
|
|
85
85
|
"oxlint": "^1.49.0",
|
|
86
|
-
"oxlint-tsgolint": "^0.
|
|
86
|
+
"oxlint-tsgolint": "^0.15.0",
|
|
87
87
|
"p-map": "^7.0.3",
|
|
88
88
|
"p-queue": "^9.0.0",
|
|
89
89
|
"p-retry": "^7.1.0",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"semver": "^7.7.3",
|
|
97
97
|
"serialize-error": "^13.0.1",
|
|
98
98
|
"set-cookie-parser": "^3.0.1",
|
|
99
|
-
"simple-git": "^3.32.
|
|
99
|
+
"simple-git": "^3.32.3",
|
|
100
100
|
"string-width": "^8.2.0",
|
|
101
101
|
"strip-ansi": "^7.1.2",
|
|
102
102
|
"tcp-port-used": "^1.0.2",
|
|
@@ -123,9 +123,9 @@
|
|
|
123
123
|
"generate:graphql": "graphql-codegen --config=graphql-codegen.yml",
|
|
124
124
|
"lint": "pnpm run --aggregate-output '/^lint:(?!fix).*/'",
|
|
125
125
|
"lint:cspell": "cspell . --no-progress --show-suggestions --show-context",
|
|
126
|
-
"lint:fix": "oxfmt && oxlint --type-aware --fix",
|
|
126
|
+
"lint:fix": "oxfmt && oxlint --type-aware --type-check --fix",
|
|
127
127
|
"lint:oxfmt": "oxfmt --check",
|
|
128
|
-
"lint:oxlint": "oxlint --type-aware --deny-warnings",
|
|
128
|
+
"lint:oxlint": "oxlint --type-aware --type-check --deny-warnings",
|
|
129
129
|
"release": "pnpm run build && changeset publish",
|
|
130
130
|
"test": "vitest",
|
|
131
131
|
"test:integration": "vitest --config spec/integration/vitest.integration.config.ts",
|
package/dist/add-TWLGKL2T.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/commands/add.ts"],
|
|
4
|
-
"sourcesContent": ["import chalk from \"chalk\";\nimport terminalLink from \"terminal-link\";\n\nimport type { Run, Usage } from \"../services/command/command.js\";\nimport type { Context } from \"../services/command/context.js\";\n\nimport { getGlobalActions, getModels } from \"../services/app/app.js\";\nimport {\n CREATE_ACTION_MUTATION,\n CREATE_ENVIRONMENT_MUTATION,\n CREATE_MODEL_FIELDS_MUTATION,\n CREATE_MODEL_MUTATION,\n CREATE_ROUTE_MUTATION,\n} from \"../services/app/edit/operation.js\";\nimport { ClientError } from \"../services/app/error.js\";\nimport { ArgError, type ArgsDefinitionResult } from \"../services/command/arg.js\";\nimport { UnknownDirectoryError } from \"../services/filesync/error.js\";\nimport { FileSync } from \"../services/filesync/filesync.js\";\nimport { SyncJson, SyncJsonArgs, loadSyncJsonDirectory } from \"../services/filesync/sync-json.js\";\nimport { println } from \"../services/output/print.js\";\nimport { GGTError, IsBug } from \"../services/output/report.js\";\nimport { select } from \"../services/output/select.js\";\nimport { sprint } from \"../services/output/sprint.js\";\nimport { symbol } from \"../services/output/symbols.js\";\nimport { ts } from \"../services/output/timestamp.js\";\nimport { uniq } from \"../services/util/collection.js\";\nimport { isGraphQLErrors } from \"../services/util/is.js\";\n\nexport class AddClientError extends GGTError {\n isBug = IsBug.NO;\n\n constructor(error: ClientError) {\n let template = \"\";\n\n if (isGraphQLErrors(error.cause)) {\n const errors = uniq(error.cause.map((x) => x.message));\n\n template = sprint` \u2022 ${errors.map((e) => e.split(\"\\n\").join(\"\\n\u200E \u2022 \")).join(\"\\n\")}`; // Why in gods name do I have to put an empty character for the tab to work?\n } else {\n template = sprint`${error.cause}`;\n }\n\n super(template);\n }\n\n protected override render(): string {\n return `${chalk.redBright(symbol.cross)} Failed to add:\\n ` + this.message;\n }\n}\n\nexport type AddArgs = typeof args;\nexport type AddArgsResult = ArgsDefinitionResult<AddArgs>;\n\nexport const args = { ...SyncJsonArgs };\n\nexport const usage: Usage = () => {\n return sprint`\n Adds models, fields, actions and routes to your app.\n\n This command first performs a sync to ensure that your local and environment directories match, changes are tracked since last sync.\n If any conflicts are detected, they must be resolved before adding models, fields, actions or routes.\n\n {gray Usage}\n ggt add model <model_name> [field_name:field_type ...]\n\n ggt add action [CONTEXT]/<action_name>\n CONTEXT:Specifies the kind of action. Use \"model\" for model actions otherwise use \"action\".\n\n ggt add route <HTTP_METHOD> <route_path>\n\n ggt add field <model_path>/<field_name>:<field_type>\n\n {gray Options}\n -a, --app <app_name> Selects the app to add to. Defaults to the app synced to the current directory, if there is one.\n -e, --env <env_name> Selects the environment to add to. Defaults to the environment synced to the current directory, if there is one.\n\n {gray Examples}\n Add a new model 'post' with out fields:\n {cyanBright $ ggt add model modelA}\n\n Add a new model 'post' with 2 new 'string' type fields 'title' and 'body':\n {cyanBright $ ggt add model post title:string body:string}\n\n Add a new 'boolean' type field 'published' to an existing model\n {cyanBright ggt add field post/published:boolean}\n\n Add new action 'publish' to the 'post' model:\n {cyanBright ggt add action model/post/publish}\n\n Add a new action 'audit'\n {cyanBright ggt add action action/audit}\n\n Add a new route 'howdy'\n {cyanBright ggt add route GET howdy}\n\n Clone the \\`development\\` environment into a new \\`staging\\` environment\n {cyanBright ggt add environment staging --environment development}\n `;\n};\n\nexport const run: Run<AddArgs> = async (ctx, args) => {\n const directory = await loadSyncJsonDirectory(process.cwd());\n const syncJson = await SyncJson.load(ctx, { command: \"add\", args, directory });\n if (!syncJson) {\n throw new UnknownDirectoryError({ command: \"add\", args, directory });\n }\n\n const filesync = new FileSync(syncJson);\n const hashes = await filesync.hashes(ctx, { silent: true });\n\n if (!hashes.inSync) {\n await filesync.merge(ctx, {\n hashes,\n printEnvironmentChangesOptions: { limit: 5 },\n printLocalChangesOptions: { limit: 5 },\n silent: true,\n });\n }\n\n println({ ensureEmptyLineAbove: true, content: `${chalk.greenBright(symbol.tick)} Sync completed ${ts()}` });\n\n switch (args._[0]) {\n case \"model\":\n await modelSubCommand(ctx, { args, filesync });\n break;\n case \"action\":\n await actionSubCommand(ctx, { args, filesync });\n break;\n case \"route\":\n await routeSubCommand(ctx, { args, filesync });\n break;\n case \"field\":\n await fieldSubCommand(ctx, { args, filesync });\n break;\n case \"environment\":\n case \"env\":\n await envSubCommand(ctx, { args, filesync });\n break;\n default:\n println(usage(ctx));\n return;\n }\n};\n\nconst parseFieldValues = (fields: string[]): [{ name: string; fieldType: string }[], problems: string[]] => {\n const problems: string[] = [];\n const modelFields: { name: string; fieldType: string }[] = [];\n\n fields.forEach((field) => {\n const matches = /^(.*):+(.*)$/.exec(field);\n if (!matches || matches.length !== 3 || !matches[1] || !matches[2]) {\n problems.push(sprint`${field} is not a valid field definition`);\n } else {\n modelFields.push({ name: matches[1].replace(/:+/g, \"\"), fieldType: matches[2] });\n }\n });\n\n return [modelFields, problems];\n};\n\nconst modelSubCommand = async (ctx: Context, { args, filesync }: { args: AddArgsResult; filesync: FileSync }): Promise<void> => {\n const syncJson = filesync.syncJson;\n const modelApiIdentifier = args._[1];\n\n if (!modelApiIdentifier) {\n throw new ArgError(sprint`Failed to add model, missing model path\n\n {gray Usage}\n {cyanBright ggt add model <model_name> [field_name:field_type ...]}`);\n }\n\n const modelFieldsList: { name: string; fieldType: string }[] = [];\n if (args._.length > 2) {\n const [modelFields, problems] = parseFieldValues(args._.slice(2));\n\n if (problems.length > 0) {\n throw new ArgError(sprint`\n Failed to add model:\n \u2022 ${problems.join(\"\\n \u2022 \")}\n\n {gray Usage}\n {cyanBright ggt add model ${modelApiIdentifier} [field_name:field_type ...]}`);\n }\n\n modelFieldsList.push(...modelFields);\n }\n\n let result;\n\n try {\n result = (\n await syncJson.edit.mutate({\n mutation: CREATE_MODEL_MUTATION,\n variables: {\n path: modelApiIdentifier,\n fields: modelFieldsList.map((fields) => ({ name: fields.name, fieldType: fields.fieldType })),\n },\n })\n ).createModel;\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({ ensureEmptyLineAbove: true, content: chalk.gray(\"New model created in environment.\") });\n\n await filesync.writeToLocalFilesystem(ctx, { filesVersion: result.remoteFilesVersion, files: result.changed, delete: [] });\n\n const modelPrintout = terminalLink.isSupported\n ? terminalLink(\n modelApiIdentifier,\n `https://${syncJson.environment.application.primaryDomain}/edit/${syncJson.environment.name}/model/${modelApiIdentifier}/schema`,\n )\n : modelApiIdentifier;\n\n println({\n ensureEmptyLineAbove: true,\n content: `${chalk.greenBright(symbol.tick)} Model ${chalk.cyanBright(modelPrintout)} added successfully.`,\n });\n};\n\nconst actionSubCommand = async (ctx: Context, { args, filesync }: { args: AddArgsResult; filesync: FileSync }): Promise<void> => {\n const syncJson = filesync.syncJson;\n const path = args._[1];\n\n if (!path) {\n throw new ArgError(sprint`Failed to add action, missing action path\n\n {gray Usage}\n {cyanBright ggt add action [CONTEXT]/<action_name>\n CONTEXT:Specifies the kind of action. Use \"model\" for model actions otherwise use \"action\".}`);\n }\n\n const models = await getModels(ctx, syncJson.environment);\n const globalActions = await getGlobalActions(ctx, syncJson.environment);\n const splitPath = path.split(\"/\");\n\n let overrideContextAction: \"models\" | \"actions\" | undefined;\n\n const parsedPaths = splitPath.length > 1 ? splitPath.slice(0, splitPath.length - 1) : splitPath;\n const parsedAction = splitPath[splitPath.length - 1];\n\n const conflictingModel = models.find((model) => {\n const modelName = parsedPaths[parsedPaths.length - 1];\n\n return (\n model.apiIdentifier.toUpperCase() === modelName.toUpperCase() &&\n model.namespace?.join(\"/\") === parsedPaths.slice(0, parsedPaths.length - 1).join(\"/\")\n );\n });\n\n const conflictingActionNamespace = globalActions.find((action) => {\n return action.namespace?.join(\"/\") === parsedPaths.join(\"/\");\n });\n\n if (conflictingModel && conflictingActionNamespace) {\n const joinedParsedPaths = parsedPaths.join(\"/\");\n overrideContextAction = await select({\n choices: [\"models\", \"actions\"] as const,\n content: sprint`\n {bold Namespace Conflict:} The action '${parsedAction}.js' cannot be automatically added due to a namespace conflict.\n\n How would you like to proceed?:\n `,\n formatChoice: (choice) => {\n switch (choice) {\n case \"models\": {\n return `As a Model action in ${chalk.gray(`models/${joinedParsedPaths}/${parsedAction}.js`)}`;\n }\n case \"actions\": {\n return `As an Action in ${chalk.gray(`actions/${joinedParsedPaths}/${parsedAction}.js`)}`;\n }\n }\n },\n });\n\n println({\n ensureEmptyLineAbove: true,\n content: sprint`${chalk.yellowBright(symbol.info)} You can override the context of the action by specifying the context in the path. For example: {gray ggt add action ${overrideContextAction}/${path}}`,\n });\n }\n\n try {\n const result = (\n await syncJson.edit.mutate({\n mutation: CREATE_ACTION_MUTATION,\n variables: { path: overrideContextAction ? `${overrideContextAction}/` + path : path },\n })\n ).createAction;\n\n await filesync.writeToLocalFilesystem(ctx, { filesVersion: result.remoteFilesVersion, files: result.changed, delete: [] });\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({ ensureEmptyLineAbove: true, content: `Action ${chalk.cyanBright(path)} added successfully.` });\n};\n\nconst routeSubCommand = async (ctx: Context, { args, filesync }: { args: AddArgsResult; filesync: FileSync }): Promise<void> => {\n const syncJson = filesync.syncJson;\n const routeMethod = args._[1];\n const routePath = args._[2];\n\n if (!routeMethod) {\n throw new ArgError(sprint`Failed to add route, missing route method\n\n {gray Usage}\n {cyanBright ggt add route <HTTP_METHOD> <route_path>}`);\n }\n\n if (!routePath) {\n throw new ArgError(sprint`Failed to add route, missing route path\n\n {gray Usage}\n {cyanBright ggt add route ${routeMethod} <route_path>}`);\n }\n\n try {\n const result = (await syncJson.edit.mutate({ mutation: CREATE_ROUTE_MUTATION, variables: { method: routeMethod, path: routePath } }))\n .createRoute;\n\n await filesync.writeToLocalFilesystem(ctx, { filesVersion: result.remoteFilesVersion, files: result.changed, delete: [] });\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({ ensureEmptyLineAbove: true, content: `Route ${chalk.cyanBright(routePath)} added successfully.` });\n};\n\nconst fieldSubCommand = async (ctx: Context, { args, filesync }: { args: AddArgsResult; filesync: FileSync }): Promise<void> => {\n const syncJson = filesync.syncJson;\n\n const splitPathAndField = args._.at(1)?.split(\"/\");\n\n if (!splitPathAndField) {\n throw new ArgError(sprint`Failed to add field, invalid field path definition\n\n {gray Usage}\n {cyanBright ggt add field <model_path>/<field_name>:<field_type>}`);\n }\n\n const modelFieldsList: { name: string; fieldType: string }[] = [];\n\n if (splitPathAndField[1]) {\n const [modelFields, problems] = parseFieldValues([splitPathAndField[1]]);\n\n if (problems.length > 0) {\n throw new ArgError(sprint`\n Failed to add field:\n \u2022 ${problems.join(\"\\n \u2022\")}\n\n {gray Usage}\n {cyanBright ggt add field ${splitPathAndField[0]}/<field_name>:<field_type>}`);\n }\n\n modelFieldsList.push(...modelFields);\n } else {\n throw new ArgError(sprint`Failed to add field, invalid field definition\n\n {gray Usage}\n {cyanBright ggt add field ${splitPathAndField[0]}/<field_name>:<field_type>}`);\n }\n\n try {\n const result = (\n await syncJson.edit.mutate({\n mutation: CREATE_MODEL_FIELDS_MUTATION,\n variables: {\n // oxlint-disable-next-line no-non-null-assertion\n path: splitPathAndField[0]!,\n fields: modelFieldsList.map((field) => ({ name: field.name, fieldType: field.fieldType })),\n },\n })\n ).createModelFields;\n\n await filesync.writeToLocalFilesystem(ctx, { filesVersion: result.remoteFilesVersion, files: result.changed, delete: [] });\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({ ensureEmptyLineAbove: true, content: `Field ${chalk.cyanBright(modelFieldsList[0]?.name)} added successfully.` });\n};\n\nconst envSubCommand = async (ctx: Context, { args, filesync }: { args: AddArgsResult; filesync: FileSync }): Promise<void> => {\n const syncJson = filesync.syncJson;\n const newEnvName = args._[1] ?? makeDefaultEnvName();\n\n try {\n await syncJson.edit.mutate({\n mutation: CREATE_ENVIRONMENT_MUTATION,\n variables: { environment: { slug: newEnvName, sourceSlug: syncJson.environment.name } },\n });\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({ ensureEmptyLineAbove: true, content: `Environment ${chalk.cyanBright(newEnvName)} added successfully.` });\n\n // Try to switch to newly made env\n const pullFromNewEnvSyncJson = await SyncJson.load(ctx, {\n command: \"pull\",\n args: { _: [], \"--app\": undefined, \"--allow-unknown-directory\": undefined, \"--allow-different-app\": undefined, \"--env\": newEnvName },\n directory: await loadSyncJsonDirectory(process.cwd()),\n });\n if (pullFromNewEnvSyncJson) {\n const filesync = new FileSync(syncJson);\n const hashes = await filesync.hashes(ctx);\n if (hashes.environmentChangesToPull.size === 0) {\n println({ ensureEmptyLineAbove: true, content: \"Nothing to pull.\" });\n return;\n }\n if (hashes.localChangesToPush.size > 0) {\n // show them the local changes they will discard\n await filesync.print(ctx, { hashes });\n }\n await filesync.pull(ctx, { hashes, force: true });\n }\n};\n\n/**\n * Creates a default environment name based on the current date and time.\n */\nconst makeDefaultEnvName = (): string => {\n const currentDate = new Date();\n return `env-${currentDate.toISOString().slice(0, 10).replace(/-/g, \"\")}-${currentDate.toLocaleTimeString(\"en-US\", { hour12: false }).replace(/:/g, \"\")}`;\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["init_cjs", "AddClientError", "GGTError", "__name", "IsBug", "error", "template", "isGraphQLErrors", "errors", "uniq", "x", "sprint", "source_default", "symbol", "args", "SyncJsonArgs", "usage", "run", "ctx", "directory", "loadSyncJsonDirectory", "syncJson", "SyncJson", "UnknownDirectoryError", "filesync", "FileSync", "hashes", "println", "ts", "modelSubCommand", "actionSubCommand", "routeSubCommand", "fieldSubCommand", "envSubCommand", "parseFieldValues", "fields", "problems", "modelFields", "field", "matches", "modelApiIdentifier", "ArgError", "modelFieldsList", "result", "CREATE_MODEL_MUTATION", "ClientError", "modelPrintout", "terminalLink", "path", "models", "getModels", "globalActions", "getGlobalActions", "splitPath", "overrideContextAction", "parsedPaths", "parsedAction", "conflictingModel", "model", "modelName", "conflictingActionNamespace", "action", "joinedParsedPaths", "select", "choice", "CREATE_ACTION_MUTATION", "routeMethod", "routePath", "CREATE_ROUTE_MUTATION", "splitPathAndField", "CREATE_MODEL_FIELDS_MUTATION", "newEnvName", "makeDefaultEnvName", "CREATE_ENVIRONMENT_MUTATION", "currentDate"]
|
|
7
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{a as f,c as g}from"./chunk-YFUOXDPK.js";import"./chunk-L2XBSR7G.js";import"./chunk-442CSROP.js";import"./chunk-F255O64V.js";import"./chunk-HCULGPBH.js";import{a as m}from"./chunk-OUIZQC4D.js";import{J as c,ra as p,ta as l}from"./chunk-JG2QCDK2.js";import"./chunk-GFQYFEEH.js";import{a as o,h as a}from"./chunk-7DYQUG5M.js";a();import y from"node:path";var D={"--force":{type:Boolean}},u=o(()=>p`
|
|
2
|
-
Install Gadget agent plugins (AGENTS.md + skills) into the current project.
|
|
3
|
-
|
|
4
|
-
{gray Usage}
|
|
5
|
-
ggt agent-plugin install [--force]
|
|
6
|
-
|
|
7
|
-
{gray Flags}
|
|
8
|
-
--force Overwrite/reinstall even if already present
|
|
9
|
-
`,"usage"),G=o(async(t,r)=>{if(r._[0]!=="install"){l(u(t));return}let e=process.cwd(),n=await c(".gadget/sync.json",{cwd:e}),d=n?y.join(n,"../.."):e,s=await m.init(d),i=r["--force"]??!1;await f({ctx:t,directory:s,force:i}),await g({ctx:t,directory:s,force:i})},"run");export{D as args,G as run,u as usage};
|
|
10
|
-
//# sourceMappingURL=agent-plugin-TN24O7FB.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/commands/agent-plugin.ts"],
|
|
4
|
-
"sourcesContent": ["import { findUp } from \"find-up\";\nimport path from \"node:path\";\n\nimport type { ArgsDefinition } from \"../services/command/arg.js\";\nimport type { Run, Usage } from \"../services/command/command.js\";\n\nimport { Directory } from \"../services/filesync/directory.js\";\nimport { installAgentsMdScaffold, installGadgetSkillsIntoProject } from \"../services/output/agent-plugin.js\";\nimport { println } from \"../services/output/print.js\";\nimport { sprint } from \"../services/output/sprint.js\";\n\nexport const args = {\n \"--force\": { type: Boolean },\n} satisfies ArgsDefinition;\n\nexport const usage: Usage = () => {\n return sprint`\n Install Gadget agent plugins (AGENTS.md + skills) into the current project.\n\n {gray Usage}\n ggt agent-plugin install [--force]\n\n {gray Flags}\n --force Overwrite/reinstall even if already present\n `;\n};\n\nexport const run: Run<typeof args> = async (ctx, args): Promise<void> => {\n if (args._[0] !== \"install\") {\n println(usage(ctx));\n return;\n }\n\n const cwd = process.cwd();\n const syncJsonPath = await findUp(\".gadget/sync.json\", { cwd });\n const projectRoot = syncJsonPath ? path.join(syncJsonPath, \"../..\") : cwd;\n const directory = await Directory.init(projectRoot);\n const force = args[\"--force\"] ?? false;\n\n await installAgentsMdScaffold({ ctx, directory, force });\n await installGadgetSkillsIntoProject({ ctx, directory, force });\n};\n"],
|
|
5
|
-
"mappings": "0UAAAA,IACA,OAAOC,MAAU,YAUV,IAAMC,EAAO,CAClB,UAAW,CAAE,KAAM,OAAQ,CAC7B,EAEaC,EAAeC,EAAA,IACnBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADmB,SAYfC,EAAwBF,EAAA,MAAOG,EAAKL,IAAwB,CACvE,GAAIA,EAAK,EAAE,CAAC,IAAM,UAAW,CAC3BM,EAAQL,EAAMI,CAAG,CAAC,EAClB,MACF,CAEA,IAAME,EAAM,QAAQ,IAAI,EAClBC,EAAe,MAAMC,EAAO,oBAAqB,CAAE,IAAAF,CAAI,CAAC,EACxDG,EAAcF,EAAeG,EAAK,KAAKH,EAAc,OAAO,EAAID,EAChEK,EAAY,MAAMC,EAAU,KAAKH,CAAW,EAC5CI,EAAQd,EAAK,SAAS,GAAK,GAEjC,MAAMe,EAAwB,CAAE,IAAAV,EAAK,UAAAO,EAAW,MAAAE,CAAM,CAAC,EACvD,MAAME,EAA+B,CAAE,IAAAX,EAAK,UAAAO,EAAW,MAAAE,CAAM,CAAC,CAChE,EAdqC",
|
|
6
|
-
"names": ["init_cjs", "path", "args", "usage", "__name", "sprint", "run", "ctx", "println", "cwd", "syncJsonPath", "findUp", "projectRoot", "path", "directory", "Directory", "force", "installAgentsMdScaffold", "installGadgetSkillsIntoProject"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/services/filesync/dev-lock.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from \"fs-extra\";\nimport { z } from \"zod\";\n\nimport type { Directory } from \"./directory.js\";\n\nimport { GGTError, IsBug } from \"../output/report.js\";\nimport { sprint } from \"../output/sprint.js\";\n\n/**\n * The data stored in the dev lock file.\n */\nexport const DevLockData = z.object({\n pid: z.number(),\n startedAt: z.string(),\n});\n\nexport type DevLockData = z.infer<typeof DevLockData>;\n\n/**\n * Error thrown when another `ggt dev` process is already running in the same directory.\n */\nexport class DevAlreadyRunningError extends GGTError {\n isBug = IsBug.NO;\n\n constructor(readonly details: { pid: number; directory: string }) {\n super(`Another ggt dev process is already running (PID ${details.pid})`);\n }\n\n protected render(): string {\n return sprint`\n Another \"ggt dev\" process is already running in this directory:\n\n ${this.details.directory}\n\n The existing process has PID ${String(this.details.pid)}.\n\n Stop the other process first, or use a different directory.\n `;\n }\n}\n\n/**\n * Returns the path to the dev lock file for the given directory.\n */\nexport const devLockPath = (directory: Directory): string => {\n return directory.absolute(\".gadget/dev-lock.json\");\n};\n\n/**\n * Checks whether a process with the given PID is alive.\n */\nexport const isProcessAlive = (pid: number): boolean => {\n try {\n process.kill(pid, 0);\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * Reads and parses the dev lock file. Returns undefined if missing or malformed.\n */\nexport const readDevLock = async (directory: Directory): Promise<DevLockData | undefined> => {\n try {\n const data: unknown = await fs.readJSON(devLockPath(directory));\n const result = DevLockData.safeParse(data);\n return result.success ? result.data : undefined;\n } catch {\n return undefined;\n }\n};\n\n/**\n * Atomically acquires the dev lock for the given directory.\n *\n * Uses `wx` flag for exclusive creation to prevent race conditions.\n * If a stale lock (dead PID) is found, it is removed and re-acquired.\n *\n * @throws {DevAlreadyRunningError} if another live process holds the lock.\n */\nexport const acquireDevLock = async (directory: Directory): Promise<void> => {\n const lockPath = devLockPath(directory);\n const lockData: DevLockData = {\n pid: process.pid,\n startedAt: new Date().toISOString(),\n };\n const content = JSON.stringify(lockData, null, 2);\n\n await fs.ensureDir(directory.absolute(\".gadget\"));\n\n try {\n await fs.writeFile(lockPath, content, { flag: \"wx\" });\n } catch (error: unknown) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n\n // Lock file already exists - check if the holding process is still alive\n const existing = await readDevLock(directory);\n if (existing && isProcessAlive(existing.pid)) {\n throw new DevAlreadyRunningError({ pid: existing.pid, directory: directory.path });\n }\n\n // Stale or malformed lock - remove and retry\n await fs.remove(lockPath);\n await fs.writeFile(lockPath, content, { flag: \"wx\" });\n }\n};\n\n/**\n * Releases the dev lock for the given directory. Ignores errors.\n */\nexport const releaseDevLock = async (directory: Directory): Promise<void> => {\n try {\n await fs.remove(devLockPath(directory));\n } catch {\n // ignore errors during cleanup\n }\n};\n\n/**\n * Returns the current dev status for the given directory.\n * Cleans up stale locks as a side effect.\n */\nexport const getDevStatus = async (\n directory: Directory,\n): Promise<{ running: false } | { running: true; pid: number; startedAt: string }> => {\n const lock = await readDevLock(directory);\n if (!lock) {\n return { running: false };\n }\n\n if (!isProcessAlive(lock.pid)) {\n // Stale lock - clean it up\n await releaseDevLock(directory);\n return { running: false };\n }\n\n return { running: true, pid: lock.pid, startedAt: lock.startedAt };\n};\n"],
|
|
5
|
-
"mappings": "uJAAAA,IAAA,IAAAC,EAAe,SAWR,IAAMC,EAAcC,EAAE,OAAO,CAClC,IAAKA,EAAE,OAAO,EACd,UAAWA,EAAE,OAAO,CACtB,CAAC,EAOYC,EAAN,cAAqCC,CAAS,CAGnD,YAAqBC,EAA6C,CAChE,MAAM,mDAAmDA,EAAQ,GAAG,GAAG,EADpD,aAAAA,CAErB,CA1BF,MAqBqD,CAAAC,EAAA,+BACnD,MAAQC,EAAM,GAMJ,QAAiB,CACzB,OAAOC;AAAA;AAAA;AAAA,UAGD,KAAK,QAAQ,SAAS;AAAA;AAAA,qCAEK,OAAO,KAAK,QAAQ,GAAG,CAAC;AAAA;AAAA;AAAA,KAI3D,CACF,EAKaC,EAAcH,EAACI,GACnBA,EAAU,SAAS,uBAAuB,EADxB,eAOdC,EAAiBL,EAACM,GAAyB,CACtD,GAAI,CACF,eAAQ,KAAKA,EAAK,CAAC,EACZ,EACT,MAAQ,CACN,MAAO,EACT,CACF,EAP8B,kBAYjBC,EAAcP,EAAA,MAAOI,GAA2D,CAC3F,GAAI,CACF,IAAMI,EAAgB,MAAM,EAAAC,QAAG,SAASN,EAAYC,CAAS,CAAC,EACxDM,EAASf,EAAY,UAAUa,CAAI,EACzC,OAAOE,EAAO,QAAUA,EAAO,KAAO,MACxC,MAAQ,CACN,MACF,CACF,EAR2B,eAkBdC,EAAiBX,EAAA,MAAOI,GAAwC,CAC3E,IAAMQ,EAAWT,EAAYC,CAAS,EAChCS,EAAwB,CAC5B,IAAK,QAAQ,IACb,UAAW,IAAI,KAAK,EAAE,YAAY,CACpC,EACMC,EAAU,KAAK,UAAUD,EAAU,KAAM,CAAC,EAEhD,MAAM,EAAAJ,QAAG,UAAUL,EAAU,SAAS,SAAS,CAAC,EAEhD,GAAI,CACF,MAAM,EAAAK,QAAG,UAAUG,EAAUE,EAAS,CAAE,KAAM,IAAK,CAAC,CACtD,OAASC,EAAgB,CACvB,GAAKA,EAAgC,OAAS,SAC5C,MAAMA,EAIR,IAAMC,EAAW,MAAMT,EAAYH,CAAS,EAC5C,GAAIY,GAAYX,EAAeW,EAAS,GAAG,EACzC,MAAM,IAAInB,EAAuB,CAAE,IAAKmB,EAAS,IAAK,UAAWZ,EAAU,IAAK,CAAC,EAInF,MAAM,EAAAK,QAAG,OAAOG,CAAQ,EACxB,MAAM,EAAAH,QAAG,UAAUG,EAAUE,EAAS,CAAE,KAAM,IAAK,CAAC,CACtD,CACF,EA3B8B,kBAgCjBG,EAAiBjB,EAAA,MAAOI,GAAwC,CAC3E,GAAI,CACF,MAAM,EAAAK,QAAG,OAAON,EAAYC,CAAS,CAAC,CACxC,MAAQ,CAER,CACF,EAN8B,kBAYjBc,EAAelB,EAAA,MAC1BI,GACoF,CACpF,IAAMe,EAAO,MAAMZ,EAAYH,CAAS,EACxC,OAAKe,EAIAd,EAAec,EAAK,GAAG,EAMrB,CAAE,QAAS,GAAM,IAAKA,EAAK,IAAK,UAAWA,EAAK,SAAU,GAJ/D,MAAMF,EAAeb,CAAS,EACvB,CAAE,QAAS,EAAM,GANjB,CAAE,QAAS,EAAM,CAU5B,EAf4B",
|
|
6
|
-
"names": ["init_cjs", "import_fs_extra", "DevLockData", "external_exports", "DevAlreadyRunningError", "GGTError", "details", "__name", "IsBug", "sprint", "devLockPath", "directory", "isProcessAlive", "pid", "readDevLock", "data", "fs", "result", "acquireDevLock", "lockPath", "lockData", "content", "error", "existing", "releaseDevLock", "getDevStatus", "lock"]
|
|
7
|
-
}
|
package/dist/chunk-442CSROP.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import{a as Vn,b as Ze,c as Yn}from"./chunk-F255O64V.js";import{a as Bn,c as Hn,d as Qn}from"./chunk-HCULGPBH.js";import{G as Gn,U as Xe,V as Wn,X as _r,Y as ce,Z as jn,_ as Ee,a as In,b as Fe,c as Nn,ca as re,d as xe,da as qn,e as R,ea as G,f as Mn,fa as zn,g as qt,h as Pe,ha as M,i as Dn,j as yt,k as bt,l as _t,la as wr,m as wt,ma as Ge,o as vt,r as Un,ra as ne,sa as We,ta as de,x as Fn}from"./chunk-JG2QCDK2.js";import{a as jt}from"./chunk-GFQYFEEH.js";import{a as o,b as Y,d as H,f as se,h}from"./chunk-7DYQUG5M.js";var Ti=H((Br,Mr)=>{h();(function(e,t){typeof Br=="object"&&typeof Mr<"u"?Mr.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Br,(function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",i="second",s="minute",a="hour",l="day",c="week",u="month",f="quarter",d="year",m="date",p="Invalid Date",b=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,T={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(L){var x=["th","st","nd","rd"],g=L%100;return"["+L+(x[(g-20)%10]||x[g]||x[0])+"]"},"ordinal")},k=o(function(L,x,g){var _=String(L);return!_||_.length>=x?L:""+Array(x+1-_.length).join(g)+L},"m"),B={s:k,z:o(function(L){var x=-L.utcOffset(),g=Math.abs(x),_=Math.floor(g/60),y=g%60;return(x<=0?"+":"-")+k(_,2,"0")+":"+k(y,2,"0")},"z"),m:o(function L(x,g){if(x.date()<g.date())return-L(g,x);var _=12*(g.year()-x.year())+(g.month()-x.month()),y=x.clone().add(_,u),w=g-y<0,E=x.clone().add(_+(w?-1:1),u);return+(-(_+(g-y)/(w?y-E:E-y))||0)},"t"),a:o(function(L){return L<0?Math.ceil(L)||0:Math.floor(L)},"a"),p:o(function(L){return{M:u,y:d,w:c,d:l,D:m,h:a,m:s,s:i,ms:n,Q:f}[L]||String(L||"").toLowerCase().replace(/s$/,"")},"p"),u:o(function(L){return L===void 0},"u")},$="en",I={};I[$]=T;var N="$isDayjsObject",q=o(function(L){return L instanceof K||!(!L||!L[N])},"S"),Q=o(function L(x,g,_){var y;if(!x)return $;if(typeof x=="string"){var w=x.toLowerCase();I[w]&&(y=w),g&&(I[w]=g,y=w);var E=x.split("-");if(!y&&E.length>1)return L(E[0])}else{var A=x.name;I[A]=x,y=A}return!_&&y&&($=y),y||!_&&$},"t"),S=o(function(L,x){if(q(L))return L.clone();var g=typeof x=="object"?x:{};return g.date=L,g.args=arguments,new K(g)},"O"),C=B;C.l=Q,C.i=q,C.w=function(L,x){return S(L,{locale:x.$L,utc:x.$u,x:x.$x,$offset:x.$offset})};var K=(function(){function L(g){this.$L=Q(g.locale,null,!0),this.parse(g),this.$x=this.$x||g.x||{},this[N]=!0}o(L,"M");var x=L.prototype;return x.parse=function(g){this.$d=(function(_){var y=_.date,w=_.utc;if(y===null)return new Date(NaN);if(C.u(y))return new Date;if(y instanceof Date)return new Date(y);if(typeof y=="string"&&!/Z$/i.test(y)){var E=y.match(b);if(E){var A=E[2]-1||0,O=(E[7]||"0").substring(0,3);return w?new Date(Date.UTC(E[1],A,E[3]||1,E[4]||0,E[5]||0,E[6]||0,O)):new Date(E[1],A,E[3]||1,E[4]||0,E[5]||0,E[6]||0,O)}}return new Date(y)})(g),this.init()},x.init=function(){var g=this.$d;this.$y=g.getFullYear(),this.$M=g.getMonth(),this.$D=g.getDate(),this.$W=g.getDay(),this.$H=g.getHours(),this.$m=g.getMinutes(),this.$s=g.getSeconds(),this.$ms=g.getMilliseconds()},x.$utils=function(){return C},x.isValid=function(){return this.$d.toString()!==p},x.isSame=function(g,_){var y=S(g);return this.startOf(_)<=y&&y<=this.endOf(_)},x.isAfter=function(g,_){return S(g)<this.startOf(_)},x.isBefore=function(g,_){return this.endOf(_)<S(g)},x.$g=function(g,_,y){return C.u(g)?this[_]:this.set(y,g)},x.unix=function(){return Math.floor(this.valueOf()/1e3)},x.valueOf=function(){return this.$d.getTime()},x.startOf=function(g,_){var y=this,w=!!C.u(_)||_,E=C.p(g),A=o(function(Ae,Z){var Re=C.w(y.$u?Date.UTC(y.$y,Z,Ae):new Date(y.$y,Z,Ae),y);return w?Re:Re.endOf(l)},"l"),O=o(function(Ae,Z){return C.w(y.toDate()[Ae].apply(y.toDate("s"),(w?[0,0,0,0]:[23,59,59,999]).slice(Z)),y)},"$"),U=this.$W,V=this.$M,X=this.$D,ae="set"+(this.$u?"UTC":"");switch(E){case d:return w?A(1,0):A(31,11);case u:return w?A(1,V):A(0,V+1);case c:var F=this.$locale().weekStart||0,z=(U<F?U+7:U)-F;return A(w?X-z:X+(6-z),V);case l:case m:return O(ae+"Hours",0);case a:return O(ae+"Minutes",1);case s:return O(ae+"Seconds",2);case i:return O(ae+"Milliseconds",3);default:return this.clone()}},x.endOf=function(g){return this.startOf(g,!1)},x.$set=function(g,_){var y,w=C.p(g),E="set"+(this.$u?"UTC":""),A=(y={},y[l]=E+"Date",y[m]=E+"Date",y[u]=E+"Month",y[d]=E+"FullYear",y[a]=E+"Hours",y[s]=E+"Minutes",y[i]=E+"Seconds",y[n]=E+"Milliseconds",y)[w],O=w===l?this.$D+(_-this.$W):_;if(w===u||w===d){var U=this.clone().set(m,1);U.$d[A](O),U.init(),this.$d=U.set(m,Math.min(this.$D,U.daysInMonth())).$d}else A&&this.$d[A](O);return this.init(),this},x.set=function(g,_){return this.clone().$set(g,_)},x.get=function(g){return this[C.p(g)]()},x.add=function(g,_){var y,w=this;g=Number(g);var E=C.p(_),A=o(function(V){var X=S(w);return C.w(X.date(X.date()+Math.round(V*g)),w)},"y");if(E===u)return this.set(u,this.$M+g);if(E===d)return this.set(d,this.$y+g);if(E===l)return A(1);if(E===c)return A(7);var O=(y={},y[s]=t,y[a]=r,y[i]=e,y)[E]||1,U=this.$d.getTime()+g*O;return C.w(U,this)},x.subtract=function(g,_){return this.add(-1*g,_)},x.format=function(g){var _=this,y=this.$locale();if(!this.isValid())return y.invalidDate||p;var w=g||"YYYY-MM-DDTHH:mm:ssZ",E=C.z(this),A=this.$H,O=this.$m,U=this.$M,V=y.weekdays,X=y.months,ae=y.meridiem,F=o(function(Z,Re,gt,Wt){return Z&&(Z[Re]||Z(_,w))||gt[Re].slice(0,Wt)},"h"),z=o(function(Z){return C.s(A%12||12,Z,"0")},"d"),Ae=ae||function(Z,Re,gt){var Wt=Z<12?"AM":"PM";return gt?Wt.toLowerCase():Wt};return w.replace(v,(function(Z,Re){return Re||(function(gt){switch(gt){case"YY":return String(_.$y).slice(-2);case"YYYY":return C.s(_.$y,4,"0");case"M":return U+1;case"MM":return C.s(U+1,2,"0");case"MMM":return F(y.monthsShort,U,X,3);case"MMMM":return F(X,U);case"D":return _.$D;case"DD":return C.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return F(y.weekdaysMin,_.$W,V,2);case"ddd":return F(y.weekdaysShort,_.$W,V,3);case"dddd":return V[_.$W];case"H":return String(A);case"HH":return C.s(A,2,"0");case"h":return z(1);case"hh":return z(2);case"a":return Ae(A,O,!0);case"A":return Ae(A,O,!1);case"m":return String(O);case"mm":return C.s(O,2,"0");case"s":return String(_.$s);case"ss":return C.s(_.$s,2,"0");case"SSS":return C.s(_.$ms,3,"0");case"Z":return E}return null})(Z)||E.replace(":","")}))},x.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},x.diff=function(g,_,y){var w,E=this,A=C.p(_),O=S(g),U=(O.utcOffset()-this.utcOffset())*t,V=this-O,X=o(function(){return C.m(E,O)},"D");switch(A){case d:w=X()/12;break;case u:w=X();break;case f:w=X()/3;break;case c:w=(V-U)/6048e5;break;case l:w=(V-U)/864e5;break;case a:w=V/r;break;case s:w=V/t;break;case i:w=V/e;break;default:w=V}return y?w:C.a(w)},x.daysInMonth=function(){return this.endOf(u).$D},x.$locale=function(){return I[this.$L]},x.locale=function(g,_){if(!g)return this.$L;var y=this.clone(),w=Q(g,_,!0);return w&&(y.$L=w),y},x.clone=function(){return C.w(this.$d,this)},x.toDate=function(){return new Date(this.valueOf())},x.toJSON=function(){return this.isValid()?this.toISOString():null},x.toISOString=function(){return this.$d.toISOString()},x.toString=function(){return this.$d.toUTCString()},L})(),mt=K.prototype;return S.prototype=mt,[["$ms",n],["$s",i],["$m",s],["$H",a],["$W",l],["$M",u],["$y",d],["$D",m]].forEach((function(L){mt[L[1]]=function(x){return this.$g(x,L[0],L[1])}})),S.extend=function(L,x){return L.$i||(L(x,K,S),L.$i=!0),S},S.locale=Q,S.isDayjs=q,S.unix=function(L){return S(1e3*L)},S.en=I[$],S.Ls=I,S.p={},S}))});var $i=H((oh,Wr)=>{"use strict";h();var Ta=Object.prototype.hasOwnProperty,ie="~";function Ot(){}o(Ot,"Events");Object.create&&(Ot.prototype=Object.create(null),new Ot().__proto__||(ie=!1));function Ca(e,t,r){this.fn=e,this.context=t,this.once=r||!1}o(Ca,"EE");function Pi(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var s=new Ca(r,n||e,i),a=ie?ie+t:t;return e._events[a]?e._events[a].fn?e._events[a]=[e._events[a],s]:e._events[a].push(s):(e._events[a]=s,e._eventsCount++),e}o(Pi,"addListener");function er(e,t){--e._eventsCount===0?e._events=new Ot:delete e._events[t]}o(er,"clearEvent");function ee(){this._events=new Ot,this._eventsCount=0}o(ee,"EventEmitter");ee.prototype.eventNames=o(function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Ta.call(r,n)&&t.push(ie?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t},"eventNames");ee.prototype.listeners=o(function(t){var r=ie?ie+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,a=new Array(s);i<s;i++)a[i]=n[i].fn;return a},"listeners");ee.prototype.listenerCount=o(function(t){var r=ie?ie+t:t,n=this._events[r];return n?n.fn?1:n.length:0},"listenerCount");ee.prototype.emit=o(function(t,r,n,i,s,a){var l=ie?ie+t:t;if(!this._events[l])return!1;var c=this._events[l],u=arguments.length,f,d;if(c.fn){switch(c.once&&this.removeListener(t,c.fn,void 0,!0),u){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,r),!0;case 3:return c.fn.call(c.context,r,n),!0;case 4:return c.fn.call(c.context,r,n,i),!0;case 5:return c.fn.call(c.context,r,n,i,s),!0;case 6:return c.fn.call(c.context,r,n,i,s,a),!0}for(d=1,f=new Array(u-1);d<u;d++)f[d-1]=arguments[d];c.fn.apply(c.context,f)}else{var m=c.length,p;for(d=0;d<m;d++)switch(c[d].once&&this.removeListener(t,c[d].fn,void 0,!0),u){case 1:c[d].fn.call(c[d].context);break;case 2:c[d].fn.call(c[d].context,r);break;case 3:c[d].fn.call(c[d].context,r,n);break;case 4:c[d].fn.call(c[d].context,r,n,i);break;default:if(!f)for(p=1,f=new Array(u-1);p<u;p++)f[p-1]=arguments[p];c[d].fn.apply(c[d].context,f)}}return!0},"emit");ee.prototype.on=o(function(t,r,n){return Pi(this,t,r,n,!1)},"on");ee.prototype.once=o(function(t,r,n){return Pi(this,t,r,n,!0)},"once");ee.prototype.removeListener=o(function(t,r,n,i){var s=ie?ie+t:t;if(!this._events[s])return this;if(!r)return er(this,s),this;var a=this._events[s];if(a.fn)a.fn===r&&(!i||a.once)&&(!n||a.context===n)&&er(this,s);else{for(var l=0,c=[],u=a.length;l<u;l++)(a[l].fn!==r||i&&!a[l].once||n&&a[l].context!==n)&&c.push(a[l]);c.length?this._events[s]=c.length===1?c[0]:c:er(this,s)}return this},"removeListener");ee.prototype.removeAllListeners=o(function(t){var r;return t?(r=ie?ie+t:t,this._events[r]&&er(this,r)):(this._events=new Ot,this._eventsCount=0),this},"removeAllListeners");ee.prototype.off=ee.prototype.removeListener;ee.prototype.addListener=ee.prototype.on;ee.prefixed=ie;ee.EventEmitter=ee;typeof Wr<"u"&&(Wr.exports=ee)});var Se=H((Oh,Mi)=>{"use strict";h();var Ni=["nodebuffer","arraybuffer","fragments"],Bi=typeof Blob<"u";Bi&&Ni.push("blob");Mi.exports={BINARY_TYPES:Ni,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Bi,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:o(()=>{},"NOOP")}});var At=H((Ah,tr)=>{"use strict";h();var{EMPTY_BUFFER:Oa}=Se(),Vr=Buffer[Symbol.species];function La(e,t){if(e.length===0)return Oa;if(e.length===1)return e[0];let r=Buffer.allocUnsafe(t),n=0;for(let i=0;i<e.length;i++){let s=e[i];r.set(s,n),n+=s.length}return n<t?new Vr(r.buffer,r.byteOffset,n):r}o(La,"concat");function Di(e,t,r,n,i){for(let s=0;s<i;s++)r[n+s]=e[s]^t[s&3]}o(Di,"_mask");function Ui(e,t){for(let r=0;r<e.length;r++)e[r]^=t[r&3]}o(Ui,"_unmask");function ka(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}o(ka,"toArrayBuffer");function Yr(e){if(Yr.readOnly=!0,Buffer.isBuffer(e))return e;let t;return e instanceof ArrayBuffer?t=new Vr(e):ArrayBuffer.isView(e)?t=new Vr(e.buffer,e.byteOffset,e.byteLength):(t=Buffer.from(e),Yr.readOnly=!1),t}o(Yr,"toBuffer");tr.exports={concat:La,mask:Di,toArrayBuffer:ka,toBuffer:Yr,unmask:Ui};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=Y("bufferutil");tr.exports.mask=function(t,r,n,i,s){s<48?Di(t,r,n,i,s):e.mask(t,r,n,i,s)},tr.exports.unmask=function(t,r){t.length<32?Ui(t,r):e.unmask(t,r)}}catch{}});var Wi=H(($h,Gi)=>{"use strict";h();var Fi=Symbol("kDone"),Qr=Symbol("kRun"),Kr=class{static{o(this,"Limiter")}constructor(t){this[Fi]=()=>{this.pending--,this[Qr]()},this.concurrency=t||1/0,this.jobs=[],this.pending=0}add(t){this.jobs.push(t),this[Qr]()}[Qr](){if(this.pending!==this.concurrency&&this.jobs.length){let t=this.jobs.shift();this.pending++,t(this[Fi])}}};Gi.exports=Kr});var Pt=H((Bh,Hi)=>{"use strict";h();var Rt=Y("zlib"),ji=At(),Aa=Wi(),{kStatusCode:qi}=Se(),Ra=Buffer[Symbol.species],Pa=Buffer.from([0,0,255,255]),nr=Symbol("permessage-deflate"),Te=Symbol("total-length"),st=Symbol("callback"),Ne=Symbol("buffers"),ot=Symbol("error"),rr,Jr=class{static{o(this,"PerMessageDeflate")}constructor(t,r,n){if(this._maxPayload=n|0,this._options=t||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!r,this._deflate=null,this._inflate=null,this.params=null,!rr){let i=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;rr=new Aa(i)}}static get extensionName(){return"permessage-deflate"}offer(){let t={};return this._options.serverNoContextTakeover&&(t.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(t.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(t.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?t.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(t.client_max_window_bits=!0),t}accept(t){return t=this.normalizeParams(t),this.params=this._isServer?this.acceptAsServer(t):this.acceptAsClient(t),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let t=this._deflate[st];this._deflate.close(),this._deflate=null,t&&t(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(t){let r=this._options,n=t.find(i=>!(r.serverNoContextTakeover===!1&&i.server_no_context_takeover||i.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>i.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!i.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(t){let r=t[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(t){return t.forEach(r=>{Object.keys(r).forEach(n=>{let i=r[n];if(i.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(i=i[0],n==="client_max_window_bits"){if(i!==!0){let s=+i;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${i}`);i=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${i}`)}else if(n==="server_max_window_bits"){let s=+i;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${i}`);i=s}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(i!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${i}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=i})}),t}decompress(t,r,n){rr.add(i=>{this._decompress(t,r,(s,a)=>{i(),n(s,a)})})}compress(t,r,n){rr.add(i=>{this._compress(t,r,(s,a)=>{i(),n(s,a)})})}_decompress(t,r,n){let i=this._isServer?"client":"server";if(!this._inflate){let s=`${i}_max_window_bits`,a=typeof this.params[s]!="number"?Rt.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Rt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:a}),this._inflate[nr]=this,this._inflate[Te]=0,this._inflate[Ne]=[],this._inflate.on("error",Ia),this._inflate.on("data",zi)}this._inflate[st]=n,this._inflate.write(t),r&&this._inflate.write(Pa),this._inflate.flush(()=>{let s=this._inflate[ot];if(s){this._inflate.close(),this._inflate=null,n(s);return}let a=ji.concat(this._inflate[Ne],this._inflate[Te]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Te]=0,this._inflate[Ne]=[],r&&this.params[`${i}_no_context_takeover`]&&this._inflate.reset()),n(null,a)})}_compress(t,r,n){let i=this._isServer?"server":"client";if(!this._deflate){let s=`${i}_max_window_bits`,a=typeof this.params[s]!="number"?Rt.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Rt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:a}),this._deflate[Te]=0,this._deflate[Ne]=[],this._deflate.on("data",$a)}this._deflate[st]=n,this._deflate.write(t),this._deflate.flush(Rt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=ji.concat(this._deflate[Ne],this._deflate[Te]);r&&(s=new Ra(s.buffer,s.byteOffset,s.length-4)),this._deflate[st]=null,this._deflate[Te]=0,this._deflate[Ne]=[],r&&this.params[`${i}_no_context_takeover`]&&this._deflate.reset(),n(null,s)})}};Hi.exports=Jr;function $a(e){this[Ne].push(e),this[Te]+=e.length}o($a,"deflateOnData");function zi(e){if(this[Te]+=e.length,this[nr]._maxPayload<1||this[Te]<=this[nr]._maxPayload){this[Ne].push(e);return}this[ot]=new RangeError("Max payload size exceeded"),this[ot].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[ot][qi]=1009,this.removeListener("data",zi),this.reset()}o(zi,"inflateOnData");function Ia(e){if(this[nr]._inflate=null,this[ot]){this[st](this[ot]);return}e[qi]=1007,this[st](e)}o(Ia,"inflateOnError")});var at=H((Uh,ir)=>{"use strict";h();var{isUtf8:Vi}=Y("buffer"),{hasBlob:Na}=Se(),Ba=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function Ma(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}o(Ma,"isValidStatusCode");function Xr(e){let t=e.length,r=0;for(;r<t;)if((e[r]&128)===0)r++;else if((e[r]&224)===192){if(r+1===t||(e[r+1]&192)!==128||(e[r]&254)===192)return!1;r+=2}else if((e[r]&240)===224){if(r+2>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||e[r]===224&&(e[r+1]&224)===128||e[r]===237&&(e[r+1]&224)===160)return!1;r+=3}else if((e[r]&248)===240){if(r+3>=t||(e[r+1]&192)!==128||(e[r+2]&192)!==128||(e[r+3]&192)!==128||e[r]===240&&(e[r+1]&240)===128||e[r]===244&&e[r+1]>143||e[r]>244)return!1;r+=4}else return!1;return!0}o(Xr,"_isValidUTF8");function Da(e){return Na&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}o(Da,"isBlob");ir.exports={isBlob:Da,isValidStatusCode:Ma,isValidUTF8:Xr,tokenChars:Ba};if(Vi)ir.exports.isValidUTF8=function(e){return e.length<24?Xr(e):Vi(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=Y("utf-8-validate");ir.exports.isValidUTF8=function(t){return t.length<32?Xr(t):e(t)}}catch{}});var nn=H((Wh,es)=>{"use strict";h();var{Writable:Ua}=Y("stream"),Yi=Pt(),{BINARY_TYPES:Fa,EMPTY_BUFFER:Qi,kStatusCode:Ga,kWebSocket:Wa}=Se(),{concat:Zr,toArrayBuffer:ja,unmask:qa}=At(),{isValidStatusCode:za,isValidUTF8:Ki}=at(),sr=Buffer[Symbol.species],me=0,Ji=1,Xi=2,Zi=3,en=4,tn=5,or=6,rn=class extends Ua{static{o(this,"Receiver")}constructor(t={}){super(),this._allowSynchronousEvents=t.allowSynchronousEvents!==void 0?t.allowSynchronousEvents:!0,this._binaryType=t.binaryType||Fa[0],this._extensions=t.extensions||{},this._isServer=!!t.isServer,this._maxPayload=t.maxPayload|0,this._skipUTF8Validation=!!t.skipUTF8Validation,this[Wa]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=me}_write(t,r,n){if(this._opcode===8&&this._state==me)return n();this._bufferedBytes+=t.length,this._buffers.push(t),this.startLoop(n)}consume(t){if(this._bufferedBytes-=t,t===this._buffers[0].length)return this._buffers.shift();if(t<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new sr(n.buffer,n.byteOffset+t,n.length-t),new sr(n.buffer,n.byteOffset,t)}let r=Buffer.allocUnsafe(t);do{let n=this._buffers[0],i=r.length-t;t>=n.length?r.set(this._buffers.shift(),i):(r.set(new Uint8Array(n.buffer,n.byteOffset,t),i),this._buffers[0]=new sr(n.buffer,n.byteOffset+t,n.length-t)),t-=n.length}while(t>0);return r}startLoop(t){this._loop=!0;do switch(this._state){case me:this.getInfo(t);break;case Ji:this.getPayloadLength16(t);break;case Xi:this.getPayloadLength64(t);break;case Zi:this.getMask();break;case en:this.getData(t);break;case tn:case or:this._loop=!1;return}while(this._loop);this._errored||t()}getInfo(t){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let i=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");t(i);return}let n=(r[0]&64)===64;if(n&&!this._extensions[Yi.extensionName]){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(i);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(n){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(i);return}if(!this._fragmented){let i=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");t(i);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(i);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let i=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");t(i);return}if(n){let i=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");t(i);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let i=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");t(i);return}}else{let i=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");t(i);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let i=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");t(i);return}}else if(this._masked){let i=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");t(i);return}this._payloadLength===126?this._state=Ji:this._payloadLength===127?this._state=Xi:this.haveLength(t)}getPayloadLength16(t){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(t)}getPayloadLength64(t){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),n=r.readUInt32BE(0);if(n>Math.pow(2,21)-1){let i=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");t(i);return}this._payloadLength=n*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(t)}haveLength(t){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(r);return}this._masked?this._state=Zi:this._state=en}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=en}getData(t){let r=Qi;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&qa(r,this._mask)}if(this._opcode>7){this.controlMessage(r,t);return}if(this._compressed){this._state=tn,this.decompress(r,t);return}r.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(r)),this.dataMessage(t)}decompress(t,r){this._extensions[Yi.extensionName].decompress(t,this._fin,(i,s)=>{if(i)return r(i);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let a=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(a);return}this._fragments.push(s)}this.dataMessage(r),this._state===me&&this.startLoop(r)})}dataMessage(t){if(!this._fin){this._state=me;return}let r=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let i;this._binaryType==="nodebuffer"?i=Zr(n,r):this._binaryType==="arraybuffer"?i=ja(Zr(n,r)):this._binaryType==="blob"?i=new Blob(n):i=n,this._allowSynchronousEvents?(this.emit("message",i,!0),this._state=me):(this._state=or,setImmediate(()=>{this.emit("message",i,!0),this._state=me,this.startLoop(t)}))}else{let i=Zr(n,r);if(!this._skipUTF8Validation&&!Ki(i)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(s);return}this._state===tn||this._allowSynchronousEvents?(this.emit("message",i,!1),this._state=me):(this._state=or,setImmediate(()=>{this.emit("message",i,!1),this._state=me,this.startLoop(t)}))}}controlMessage(t,r){if(this._opcode===8){if(t.length===0)this._loop=!1,this.emit("conclude",1005,Qi),this.end();else{let n=t.readUInt16BE(0);if(!za(n)){let s=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(s);return}let i=new sr(t.buffer,t.byteOffset+2,t.length-2);if(!this._skipUTF8Validation&&!Ki(i)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(s);return}this._loop=!1,this.emit("conclude",n,i),this.end()}this._state=me;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",t),this._state=me):(this._state=or,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",t),this._state=me,this.startLoop(r)}))}createError(t,r,n,i,s){this._loop=!1,this._errored=!0;let a=new t(n?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(a,this.createError),a.code=s,a[Ga]=i,a}};es.exports=rn});var an=H((Hh,ns)=>{"use strict";h();var{Duplex:zh}=Y("stream"),{randomFillSync:Ha}=Y("crypto"),ts=Pt(),{EMPTY_BUFFER:Va,kWebSocket:Ya,NOOP:Qa}=Se(),{isBlob:ct,isValidStatusCode:Ka}=at(),{mask:rs,toBuffer:ze}=At(),ge=Symbol("kByteLength"),Ja=Buffer.alloc(4),ar=8*1024,He,lt=ar,_e=0,Xa=1,Za=2,sn=class e{static{o(this,"Sender")}constructor(t,r,n){this._extensions=r||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=t,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=_e,this.onerror=Qa,this[Ya]=void 0}static frame(t,r){let n,i=!1,s=2,a=!1;r.mask&&(n=r.maskBuffer||Ja,r.generateMask?r.generateMask(n):(lt===ar&&(He===void 0&&(He=Buffer.alloc(ar)),Ha(He,0,ar),lt=0),n[0]=He[lt++],n[1]=He[lt++],n[2]=He[lt++],n[3]=He[lt++]),a=(n[0]|n[1]|n[2]|n[3])===0,s=6);let l;typeof t=="string"?(!r.mask||a)&&r[ge]!==void 0?l=r[ge]:(t=Buffer.from(t),l=t.length):(l=t.length,i=r.mask&&r.readOnly&&!a);let c=l;l>=65536?(s+=8,c=127):l>125&&(s+=2,c=126);let u=Buffer.allocUnsafe(i?l+s:s);return u[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(u[0]|=64),u[1]=c,c===126?u.writeUInt16BE(l,2):c===127&&(u[2]=u[3]=0,u.writeUIntBE(l,4,6)),r.mask?(u[1]|=128,u[s-4]=n[0],u[s-3]=n[1],u[s-2]=n[2],u[s-1]=n[3],a?[u,t]:i?(rs(t,n,u,s,l),[u]):(rs(t,n,t,0,l),[u,t])):[u,t]}close(t,r,n,i){let s;if(t===void 0)s=Va;else{if(typeof t!="number"||!Ka(t))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(t,0);else{let l=Buffer.byteLength(r);if(l>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+l),s.writeUInt16BE(t,0),typeof r=="string"?s.write(r,2):s.set(r,2)}}let a={[ge]:s.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==_e?this.enqueue([this.dispatch,s,!1,a,i]):this.sendFrame(e.frame(s,a),i)}ping(t,r,n){let i,s;if(typeof t=="string"?(i=Buffer.byteLength(t),s=!1):ct(t)?(i=t.size,s=!1):(t=ze(t),i=t.length,s=ze.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ge]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};ct(t)?this._state!==_e?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==_e?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}pong(t,r,n){let i,s;if(typeof t=="string"?(i=Buffer.byteLength(t),s=!1):ct(t)?(i=t.size,s=!1):(t=ze(t),i=t.length,s=ze.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");let a={[ge]:i,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};ct(t)?this._state!==_e?this.enqueue([this.getBlobData,t,!1,a,n]):this.getBlobData(t,!1,a,n):this._state!==_e?this.enqueue([this.dispatch,t,!1,a,n]):this.sendFrame(e.frame(t,a),n)}send(t,r,n){let i=this._extensions[ts.extensionName],s=r.binary?2:1,a=r.compress,l,c;typeof t=="string"?(l=Buffer.byteLength(t),c=!1):ct(t)?(l=t.size,c=!1):(t=ze(t),l=t.length,c=ze.readOnly),this._firstFragment?(this._firstFragment=!1,a&&i&&i.params[i._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=l>=i._threshold),this._compress=a):(a=!1,s=0),r.fin&&(this._firstFragment=!0);let u={[ge]:l,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:a};ct(t)?this._state!==_e?this.enqueue([this.getBlobData,t,this._compress,u,n]):this.getBlobData(t,this._compress,u,n):this._state!==_e?this.enqueue([this.dispatch,t,this._compress,u,n]):this.dispatch(t,this._compress,u,n)}getBlobData(t,r,n,i){this._bufferedBytes+=n[ge],this._state=Za,t.arrayBuffer().then(s=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(on,this,l,i);return}this._bufferedBytes-=n[ge];let a=ze(s);r?this.dispatch(a,r,n,i):(this._state=_e,this.sendFrame(e.frame(a,n),i),this.dequeue())}).catch(s=>{process.nextTick(ec,this,s,i)})}dispatch(t,r,n,i){if(!r){this.sendFrame(e.frame(t,n),i);return}let s=this._extensions[ts.extensionName];this._bufferedBytes+=n[ge],this._state=Xa,s.compress(t,n.fin,(a,l)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");on(this,c,i);return}this._bufferedBytes-=n[ge],this._state=_e,n.readOnly=!1,this.sendFrame(e.frame(l,n),i),this.dequeue()})}dequeue(){for(;this._state===_e&&this._queue.length;){let t=this._queue.shift();this._bufferedBytes-=t[3][ge],Reflect.apply(t[0],this,t.slice(1))}}enqueue(t){this._bufferedBytes+=t[3][ge],this._queue.push(t)}sendFrame(t,r){t.length===2?(this._socket.cork(),this._socket.write(t[0]),this._socket.write(t[1],r),this._socket.uncork()):this._socket.write(t[0],r)}};ns.exports=sn;function on(e,t,r){typeof r=="function"&&r(t);for(let n=0;n<e._queue.length;n++){let i=e._queue[n],s=i[i.length-1];typeof s=="function"&&s(t)}}o(on,"callCallbacks");function ec(e,t,r){on(e,t,r),e.onerror(t)}o(ec,"onError")});var hs=H((Qh,fs)=>{"use strict";h();var{kForOnEventAttribute:$t,kListener:cn}=Se(),is=Symbol("kCode"),ss=Symbol("kData"),os=Symbol("kError"),as=Symbol("kMessage"),cs=Symbol("kReason"),ut=Symbol("kTarget"),ls=Symbol("kType"),us=Symbol("kWasClean"),Ce=class{static{o(this,"Event")}constructor(t){this[ut]=null,this[ls]=t}get target(){return this[ut]}get type(){return this[ls]}};Object.defineProperty(Ce.prototype,"target",{enumerable:!0});Object.defineProperty(Ce.prototype,"type",{enumerable:!0});var Ve=class extends Ce{static{o(this,"CloseEvent")}constructor(t,r={}){super(t),this[is]=r.code===void 0?0:r.code,this[cs]=r.reason===void 0?"":r.reason,this[us]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[is]}get reason(){return this[cs]}get wasClean(){return this[us]}};Object.defineProperty(Ve.prototype,"code",{enumerable:!0});Object.defineProperty(Ve.prototype,"reason",{enumerable:!0});Object.defineProperty(Ve.prototype,"wasClean",{enumerable:!0});var ft=class extends Ce{static{o(this,"ErrorEvent")}constructor(t,r={}){super(t),this[os]=r.error===void 0?null:r.error,this[as]=r.message===void 0?"":r.message}get error(){return this[os]}get message(){return this[as]}};Object.defineProperty(ft.prototype,"error",{enumerable:!0});Object.defineProperty(ft.prototype,"message",{enumerable:!0});var It=class extends Ce{static{o(this,"MessageEvent")}constructor(t,r={}){super(t),this[ss]=r.data===void 0?null:r.data}get data(){return this[ss]}};Object.defineProperty(It.prototype,"data",{enumerable:!0});var tc={addEventListener(e,t,r={}){for(let i of this.listeners(e))if(!r[$t]&&i[cn]===t&&!i[$t])return;let n;if(e==="message")n=o(function(s,a){let l=new It("message",{data:a?s:s.toString()});l[ut]=this,cr(t,this,l)},"onMessage");else if(e==="close")n=o(function(s,a){let l=new Ve("close",{code:s,reason:a.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[ut]=this,cr(t,this,l)},"onClose");else if(e==="error")n=o(function(s){let a=new ft("error",{error:s,message:s.message});a[ut]=this,cr(t,this,a)},"onError");else if(e==="open")n=o(function(){let s=new Ce("open");s[ut]=this,cr(t,this,s)},"onOpen");else return;n[$t]=!!r[$t],n[cn]=t,r.once?this.once(e,n):this.on(e,n)},removeEventListener(e,t){for(let r of this.listeners(e))if(r[cn]===t&&!r[$t]){this.removeListener(e,r);break}}};fs.exports={CloseEvent:Ve,ErrorEvent:ft,Event:Ce,EventTarget:tc,MessageEvent:It};function cr(e,t,r){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,r):e.call(t,r)}o(cr,"callListener")});var ln=H((Xh,ds)=>{"use strict";h();var{tokenChars:Nt}=at();function we(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}o(we,"push");function rc(e){let t=Object.create(null),r=Object.create(null),n=!1,i=!1,s=!1,a,l,c=-1,u=-1,f=-1,d=0;for(;d<e.length;d++)if(u=e.charCodeAt(d),a===void 0)if(f===-1&&Nt[u]===1)c===-1&&(c=d);else if(d!==0&&(u===32||u===9))f===-1&&c!==-1&&(f=d);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);f===-1&&(f=d);let p=e.slice(c,f);u===44?(we(t,p,r),r=Object.create(null)):a=p,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(l===void 0)if(f===-1&&Nt[u]===1)c===-1&&(c=d);else if(u===32||u===9)f===-1&&c!==-1&&(f=d);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);f===-1&&(f=d),we(r,e.slice(c,f),!0),u===44&&(we(t,a,r),r=Object.create(null),a=void 0),c=f=-1}else if(u===61&&c!==-1&&f===-1)l=e.slice(c,d),c=f=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(i){if(Nt[u]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1?c=d:n||(n=!0),i=!1}else if(s)if(Nt[u]===1)c===-1&&(c=d);else if(u===34&&c!==-1)s=!1,f=d;else if(u===92)i=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(u===34&&e.charCodeAt(d-1)===61)s=!0;else if(f===-1&&Nt[u]===1)c===-1&&(c=d);else if(c!==-1&&(u===32||u===9))f===-1&&(f=d);else if(u===59||u===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${d}`);f===-1&&(f=d);let p=e.slice(c,f);n&&(p=p.replace(/\\/g,""),n=!1),we(r,l,p),u===44&&(we(t,a,r),r=Object.create(null),a=void 0),l=void 0,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(c===-1||s||u===32||u===9)throw new SyntaxError("Unexpected end of input");f===-1&&(f=d);let m=e.slice(c,f);return a===void 0?we(t,m,r):(l===void 0?we(r,m,!0):n?we(r,l,m.replace(/\\/g,"")):we(r,l,m),we(t,a,r)),t}o(rc,"parse");function nc(e){return Object.keys(e).map(t=>{let r=e[t];return Array.isArray(r)||(r=[r]),r.map(n=>[t].concat(Object.keys(n).map(i=>{let s=n[i];return Array.isArray(s)||(s=[s]),s.map(a=>a===!0?i:`${i}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")}o(nc,"format");ds.exports={format:nc,parse:rc}});var hr=H((nd,Ts)=>{"use strict";h();var ic=Y("events"),sc=Y("https"),oc=Y("http"),gs=Y("net"),ac=Y("tls"),{randomBytes:cc,createHash:lc}=Y("crypto"),{Duplex:td,Readable:rd}=Y("stream"),{URL:un}=Y("url"),Be=Pt(),uc=nn(),fc=an(),{isBlob:hc}=at(),{BINARY_TYPES:ps,CLOSE_TIMEOUT:dc,EMPTY_BUFFER:lr,GUID:pc,kForOnEventAttribute:fn,kListener:mc,kStatusCode:gc,kWebSocket:J,NOOP:ys}=Se(),{EventTarget:{addEventListener:yc,removeEventListener:bc}}=hs(),{format:_c,parse:wc}=ln(),{toBuffer:vc}=At(),bs=Symbol("kAborted"),hn=[8,13],Oe=["CONNECTING","OPEN","CLOSING","CLOSED"],xc=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,j=class e extends ic{static{o(this,"WebSocket")}constructor(t,r,n){super(),this._binaryType=ps[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=lr,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,t!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(n=r,r=[]):r=[r]),_s(this,t,r,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(t){ps.includes(t)&&(this._binaryType=t,this._receiver&&(this._receiver._binaryType=t))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,r,n){let i=new uc({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),s=new fc(t,this._extensions,n.generateMask);this._receiver=i,this._sender=s,this._socket=t,i[J]=this,s[J]=this,t[J]=this,i.on("conclude",Tc),i.on("drain",Cc),i.on("error",Oc),i.on("message",Lc),i.on("ping",kc),i.on("pong",Ac),s.onerror=Rc,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),r.length>0&&t.unshift(r),t.on("close",xs),t.on("data",fr),t.on("end",Es),t.on("error",Ss),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[Be.extensionName]&&this._extensions[Be.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(t,r){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){he(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(t,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),vs(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){dn(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(t||lr,r,n)}pong(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"?(n=t,t=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){dn(this,t,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(t||lr,r,n)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,r,n){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof t=="number"&&(t=t.toString()),this.readyState!==e.OPEN){dn(this,t,n);return}let i={binary:typeof t!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[Be.extensionName]||(i.compress=!1),this._sender.send(t||lr,i,n)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){he(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(j,"CONNECTING",{enumerable:!0,value:Oe.indexOf("CONNECTING")});Object.defineProperty(j.prototype,"CONNECTING",{enumerable:!0,value:Oe.indexOf("CONNECTING")});Object.defineProperty(j,"OPEN",{enumerable:!0,value:Oe.indexOf("OPEN")});Object.defineProperty(j.prototype,"OPEN",{enumerable:!0,value:Oe.indexOf("OPEN")});Object.defineProperty(j,"CLOSING",{enumerable:!0,value:Oe.indexOf("CLOSING")});Object.defineProperty(j.prototype,"CLOSING",{enumerable:!0,value:Oe.indexOf("CLOSING")});Object.defineProperty(j,"CLOSED",{enumerable:!0,value:Oe.indexOf("CLOSED")});Object.defineProperty(j.prototype,"CLOSED",{enumerable:!0,value:Oe.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(j.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(j.prototype,`on${e}`,{enumerable:!0,get(){for(let t of this.listeners(e))if(t[fn])return t[mc];return null},set(t){for(let r of this.listeners(e))if(r[fn]){this.removeListener(e,r);break}typeof t=="function"&&this.addEventListener(e,t,{[fn]:!0})}})});j.prototype.addEventListener=yc;j.prototype.removeEventListener=bc;Ts.exports=j;function _s(e,t,r,n){let i={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:dc,protocolVersion:hn[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,e._closeTimeout=i.closeTimeout,!hn.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${hn.join(", ")})`);let s;if(t instanceof un)s=t;else try{s=new un(t)}catch{throw new SyntaxError(`Invalid URL: ${t}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),e._url=s.href;let a=s.protocol==="wss:",l=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!a&&!l?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:l&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let v=new SyntaxError(c);if(e._redirects===0)throw v;ur(e,v);return}let u=a?443:80,f=cc(16).toString("base64"),d=a?sc.request:oc.request,m=new Set,p;if(i.createConnection=i.createConnection||(a?Sc:Ec),i.defaultPort=i.defaultPort||u,i.port=s.port||u,i.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":f,Connection:"Upgrade",Upgrade:"websocket"},i.path=s.pathname+s.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(p=new Be(i.perMessageDeflate!==!0?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=_c({[Be.extensionName]:p.offer()})),r.length){for(let v of r){if(typeof v!="string"||!xc.test(v)||m.has(v))throw new SyntaxError("An invalid or duplicated subprotocol was specified");m.add(v)}i.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(s.username||s.password)&&(i.auth=`${s.username}:${s.password}`),l){let v=i.path.split(":");i.socketPath=v[0],i.path=v[1]}let b;if(i.followRedirects){if(e._redirects===0){e._originalIpc=l,e._originalSecure=a,e._originalHostOrSocketPath=l?i.socketPath:s.host;let v=n&&n.headers;if(n={...n,headers:{}},v)for(let[T,k]of Object.entries(v))n.headers[T.toLowerCase()]=k}else if(e.listenerCount("redirect")===0){let v=l?e._originalIpc?i.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:s.host===e._originalHostOrSocketPath;(!v||e._originalSecure&&!a)&&(delete i.headers.authorization,delete i.headers.cookie,v||delete i.headers.host,i.auth=void 0)}i.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),b=e._req=d(i),e._redirects&&e.emit("redirect",e.url,b)}else b=e._req=d(i);i.timeout&&b.on("timeout",()=>{he(e,b,"Opening handshake has timed out")}),b.on("error",v=>{b===null||b[bs]||(b=e._req=null,ur(e,v))}),b.on("response",v=>{let T=v.headers.location,k=v.statusCode;if(T&&i.followRedirects&&k>=300&&k<400){if(++e._redirects>i.maxRedirects){he(e,b,"Maximum redirects exceeded");return}b.abort();let B;try{B=new un(T,t)}catch{let I=new SyntaxError(`Invalid URL: ${T}`);ur(e,I);return}_s(e,B,r,n)}else e.emit("unexpected-response",b,v)||he(e,b,`Unexpected server response: ${v.statusCode}`)}),b.on("upgrade",(v,T,k)=>{if(e.emit("upgrade",v),e.readyState!==j.CONNECTING)return;b=e._req=null;let B=v.headers.upgrade;if(B===void 0||B.toLowerCase()!=="websocket"){he(e,T,"Invalid Upgrade header");return}let $=lc("sha1").update(f+pc).digest("base64");if(v.headers["sec-websocket-accept"]!==$){he(e,T,"Invalid Sec-WebSocket-Accept header");return}let I=v.headers["sec-websocket-protocol"],N;if(I!==void 0?m.size?m.has(I)||(N="Server sent an invalid subprotocol"):N="Server sent a subprotocol but none was requested":m.size&&(N="Server sent no subprotocol"),N){he(e,T,N);return}I&&(e._protocol=I);let q=v.headers["sec-websocket-extensions"];if(q!==void 0){if(!p){he(e,T,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let Q;try{Q=wc(q)}catch{he(e,T,"Invalid Sec-WebSocket-Extensions header");return}let S=Object.keys(Q);if(S.length!==1||S[0]!==Be.extensionName){he(e,T,"Server indicated an extension that was not requested");return}try{p.accept(Q[Be.extensionName])}catch{he(e,T,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[Be.extensionName]=p}e.setSocket(T,k,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})}),i.finishRequest?i.finishRequest(b,e):b.end()}o(_s,"initAsClient");function ur(e,t){e._readyState=j.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}o(ur,"emitErrorAndClose");function Ec(e){return e.path=e.socketPath,gs.connect(e)}o(Ec,"netConnect");function Sc(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=gs.isIP(e.host)?"":e.host),ac.connect(e)}o(Sc,"tlsConnect");function he(e,t,r){e._readyState=j.CLOSING;let n=new Error(r);Error.captureStackTrace(n,he),t.setHeader?(t[bs]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(ur,e,n)):(t.destroy(n),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}o(he,"abortHandshake");function dn(e,t,r){if(t){let n=hc(t)?t.size:vc(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${e.readyState} (${Oe[e.readyState]})`);process.nextTick(r,n)}}o(dn,"sendAfterClose");function Tc(e,t){let r=this[J];r._closeFrameReceived=!0,r._closeMessage=t,r._closeCode=e,r._socket[J]!==void 0&&(r._socket.removeListener("data",fr),process.nextTick(ws,r._socket),e===1005?r.close():r.close(e,t))}o(Tc,"receiverOnConclude");function Cc(){let e=this[J];e.isPaused||e._socket.resume()}o(Cc,"receiverOnDrain");function Oc(e){let t=this[J];t._socket[J]!==void 0&&(t._socket.removeListener("data",fr),process.nextTick(ws,t._socket),t.close(e[gc])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}o(Oc,"receiverOnError");function ms(){this[J].emitClose()}o(ms,"receiverOnFinish");function Lc(e,t){this[J].emit("message",e,t)}o(Lc,"receiverOnMessage");function kc(e){let t=this[J];t._autoPong&&t.pong(e,!this._isServer,ys),t.emit("ping",e)}o(kc,"receiverOnPing");function Ac(e){this[J].emit("pong",e)}o(Ac,"receiverOnPong");function ws(e){e.resume()}o(ws,"resume");function Rc(e){let t=this[J];t.readyState!==j.CLOSED&&(t.readyState===j.OPEN&&(t._readyState=j.CLOSING,vs(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}o(Rc,"senderOnError");function vs(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),e._closeTimeout)}o(vs,"setCloseTimer");function xs(){let e=this[J];if(this.removeListener("close",xs),this.removeListener("data",fr),this.removeListener("end",Es),e._readyState=j.CLOSING,!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&this._readableState.length!==0){let t=this.read(this._readableState.length);e._receiver.write(t)}e._receiver.end(),this[J]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",ms),e._receiver.on("finish",ms))}o(xs,"socketOnClose");function fr(e){this[J]._receiver.write(e)||this.pause()}o(fr,"socketOnData");function Es(){let e=this[J];e._readyState=j.CLOSING,e._receiver.end(),this.end()}o(Es,"socketOnEnd");function Ss(){let e=this[J];this.removeListener("error",Ss),this.on("error",ys),e&&(e._readyState=j.CLOSING,this.destroy())}o(Ss,"socketOnError")});var ks=H((ad,Ls)=>{"use strict";h();var od=hr(),{Duplex:Pc}=Y("stream");function Cs(e){e.emit("close")}o(Cs,"emitClose");function $c(){!this.destroyed&&this._writableState.finished&&this.destroy()}o($c,"duplexOnEnd");function Os(e){this.removeListener("error",Os),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}o(Os,"duplexOnError");function Ic(e,t){let r=!0,n=new Pc({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",o(function(s,a){let l=!a&&n._readableState.objectMode?s.toString():s;n.push(l)||e.pause()},"message")),e.once("error",o(function(s){n.destroyed||(r=!1,n.destroy(s))},"error")),e.once("close",o(function(){n.destroyed||n.push(null)},"close")),n._destroy=function(i,s){if(e.readyState===e.CLOSED){s(i),process.nextTick(Cs,n);return}let a=!1;e.once("error",o(function(c){a=!0,s(c)},"error")),e.once("close",o(function(){a||s(i),process.nextTick(Cs,n)},"close")),r&&e.terminate()},n._final=function(i){if(e.readyState===e.CONNECTING){e.once("open",o(function(){n._final(i)},"open"));return}e._socket!==null&&(e._socket._writableState.finished?(i(),n._readableState.endEmitted&&n.destroy()):(e._socket.once("finish",o(function(){i()},"finish")),e.close()))},n._read=function(){e.isPaused&&e.resume()},n._write=function(i,s,a){if(e.readyState===e.CONNECTING){e.once("open",o(function(){n._write(i,s,a)},"open"));return}e.send(i,a)},n.on("end",$c),n.on("error",Os),n}o(Ic,"createWebSocketStream");Ls.exports=Ic});var Rs=H((ud,As)=>{"use strict";h();var{tokenChars:Nc}=at();function Bc(e){let t=new Set,r=-1,n=-1,i=0;for(i;i<e.length;i++){let a=e.charCodeAt(i);if(n===-1&&Nc[a]===1)r===-1&&(r=i);else if(i!==0&&(a===32||a===9))n===-1&&r!==-1&&(n=i);else if(a===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${i}`);n===-1&&(n=i);let l=e.slice(r,n);if(t.has(l))throw new SyntaxError(`The "${l}" subprotocol is duplicated`);t.add(l),r=n=-1}else throw new SyntaxError(`Unexpected character at index ${i}`)}if(r===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let s=e.slice(r,i);if(t.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return t.add(s),t}o(Bc,"parse");As.exports={parse:Bc}});var Ds=H((pd,Ms)=>{"use strict";h();var Mc=Y("events"),dr=Y("http"),{Duplex:dd}=Y("stream"),{createHash:Dc}=Y("crypto"),Ps=ln(),Ye=Pt(),Uc=Rs(),Fc=hr(),{CLOSE_TIMEOUT:Gc,GUID:Wc,kWebSocket:jc}=Se(),qc=/^[+/0-9A-Za-z]{22}==$/,$s=0,Is=1,Bs=2,pn=class extends Mc{static{o(this,"WebSocketServer")}constructor(t,r){if(super(),t={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Gc,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Fc,...t},t.port==null&&!t.server&&!t.noServer||t.port!=null&&(t.server||t.noServer)||t.server&&t.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(t.port!=null?(this._server=dr.createServer((n,i)=>{let s=dr.STATUS_CODES[426];i.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),i.end(s)}),this._server.listen(t.port,t.host,t.backlog,r)):t.server&&(this._server=t.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=zc(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:o((i,s,a)=>{this.handleUpgrade(i,s,a,n)},"upgrade")})}t.perMessageDeflate===!0&&(t.perMessageDeflate={}),t.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=t,this._state=$s}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(t){if(this._state===Bs){t&&this.once("close",()=>{t(new Error("The server is not running"))}),process.nextTick(Bt,this);return}if(t&&this.once("close",t),this._state!==Is)if(this._state=Is,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Bt,this):process.nextTick(Bt,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{Bt(this)})}}shouldHandle(t){if(this.options.path){let r=t.url.indexOf("?");if((r!==-1?t.url.slice(0,r):t.url)!==this.options.path)return!1}return!0}handleUpgrade(t,r,n,i){r.on("error",Ns);let s=t.headers["sec-websocket-key"],a=t.headers.upgrade,l=+t.headers["sec-websocket-version"];if(t.method!=="GET"){Qe(this,t,r,405,"Invalid HTTP method");return}if(a===void 0||a.toLowerCase()!=="websocket"){Qe(this,t,r,400,"Invalid Upgrade header");return}if(s===void 0||!qc.test(s)){Qe(this,t,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){Qe(this,t,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(t)){Mt(r,400);return}let c=t.headers["sec-websocket-protocol"],u=new Set;if(c!==void 0)try{u=Uc.parse(c)}catch{Qe(this,t,r,400,"Invalid Sec-WebSocket-Protocol header");return}let f=t.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&f!==void 0){let m=new Ye(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=Ps.parse(f);p[Ye.extensionName]&&(m.accept(p[Ye.extensionName]),d[Ye.extensionName]=m)}catch{Qe(this,t,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let m={origin:t.headers[`${l===8?"sec-websocket-origin":"origin"}`],secure:!!(t.socket.authorized||t.socket.encrypted),req:t};if(this.options.verifyClient.length===2){this.options.verifyClient(m,(p,b,v,T)=>{if(!p)return Mt(r,b||401,v,T);this.completeUpgrade(d,s,u,t,r,n,i)});return}if(!this.options.verifyClient(m))return Mt(r,401)}this.completeUpgrade(d,s,u,t,r,n,i)}completeUpgrade(t,r,n,i,s,a,l){if(!s.readable||!s.writable)return s.destroy();if(s[jc])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>$s)return Mt(s,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Dc("sha1").update(r+Wc).digest("base64")}`],f=new this.options.WebSocket(null,void 0,this.options);if(n.size){let d=this.options.handleProtocols?this.options.handleProtocols(n,i):n.values().next().value;d&&(u.push(`Sec-WebSocket-Protocol: ${d}`),f._protocol=d)}if(t[Ye.extensionName]){let d=t[Ye.extensionName].params,m=Ps.format({[Ye.extensionName]:[d]});u.push(`Sec-WebSocket-Extensions: ${m}`),f._extensions=t}this.emit("headers",u,i),s.write(u.concat(`\r
|
|
2
|
-
`).join(`\r
|
|
3
|
-
`)),s.removeListener("error",Ns),f.setSocket(s,a,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(f),f.on("close",()=>{this.clients.delete(f),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Bt,this)})),l(f,i)}};Ms.exports=pn;function zc(e,t){for(let r of Object.keys(t))e.on(r,t[r]);return o(function(){for(let n of Object.keys(t))e.removeListener(n,t[n])},"removeListeners")}o(zc,"addListeners");function Bt(e){e._state=Bs,e.emit("close")}o(Bt,"emitClose");function Ns(){this.destroy()}o(Ns,"socketOnError");function Mt(e,t,r,n){r=r||dr.STATUS_CODES[t],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${dr.STATUS_CODES[t]}\r
|
|
4
|
-
`+Object.keys(n).map(i=>`${i}: ${n[i]}`).join(`\r
|
|
5
|
-
`)+`\r
|
|
6
|
-
\r
|
|
7
|
-
`+r)}o(Mt,"abortHandshake");function Qe(e,t,r,n,i,s){if(e.listenerCount("wsClientError")){let a=new Error(i);Error.captureStackTrace(a,Qe),e.emit("wsClientError",a,r,t)}else Mt(r,n,i,s)}o(Qe,"abortHandshakeOrEmitwsClientError")});var Vs=H((_n,wn)=>{h();(function(e,t){typeof Y=="function"&&typeof _n=="object"&&typeof wn=="object"?wn.exports=t():typeof define=="function"&&define.amd?define(function(){return t()}):e.pluralize=t()})(_n,function(){var e=[],t=[],r={},n={},i={};function s(p){return typeof p=="string"?new RegExp("^"+p+"$","i"):p}o(s,"sanitizeRule");function a(p,b){return p===b?b:p===p.toLowerCase()?b.toLowerCase():p===p.toUpperCase()?b.toUpperCase():p[0]===p[0].toUpperCase()?b.charAt(0).toUpperCase()+b.substr(1).toLowerCase():b.toLowerCase()}o(a,"restoreCase");function l(p,b){return p.replace(/\$(\d{1,2})/g,function(v,T){return b[T]||""})}o(l,"interpolate");function c(p,b){return p.replace(b[0],function(v,T){var k=l(b[1],arguments);return a(v===""?p[T-1]:v,k)})}o(c,"replace");function u(p,b,v){if(!p.length||r.hasOwnProperty(p))return b;for(var T=v.length;T--;){var k=v[T];if(k[0].test(b))return c(b,k)}return b}o(u,"sanitizeWord");function f(p,b,v){return function(T){var k=T.toLowerCase();return b.hasOwnProperty(k)?a(T,k):p.hasOwnProperty(k)?a(T,p[k]):u(k,T,v)}}o(f,"replaceWord");function d(p,b,v,T){return function(k){var B=k.toLowerCase();return b.hasOwnProperty(B)?!0:p.hasOwnProperty(B)?!1:u(B,B,v)===B}}o(d,"checkWord");function m(p,b,v){var T=b===1?m.singular(p):m.plural(p);return(v?b+" ":"")+T}return o(m,"pluralize"),m.plural=f(i,n,e),m.isPlural=d(i,n,e),m.singular=f(n,i,t),m.isSingular=d(n,i,t),m.addPluralRule=function(p,b){e.push([s(p),b])},m.addSingularRule=function(p,b){t.push([s(p),b])},m.addUncountableRule=function(p){if(typeof p=="string"){r[p.toLowerCase()]=!0;return}m.addPluralRule(p,"$0"),m.addSingularRule(p,"$0")},m.addIrregularRule=function(p,b){b=b.toLowerCase(),p=p.toLowerCase(),i[p]=b,n[b]=p},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach(function(p){return m.addIrregularRule(p[0],p[1])}),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach(function(p){return m.addPluralRule(p[0],p[1])}),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach(function(p){return m.addSingularRule(p[0],p[1])}),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[eé]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(m.addUncountableRule),m})});var Ks=H(ht=>{"use strict";h();ht.__esModule=!0;ht.distance=ht.closest=void 0;var Le=new Uint32Array(65536),rl=o(function(e,t){for(var r=e.length,n=t.length,i=1<<r-1,s=-1,a=0,l=r,c=r;c--;)Le[e.charCodeAt(c)]|=1<<c;for(c=0;c<n;c++){var u=Le[t.charCodeAt(c)],f=u|a;u|=(u&s)+s^s,a|=~(u|s),s&=u,a&i&&l++,s&i&&l--,a=a<<1|1,s=s<<1|~(f|a),a&=f}for(c=r;c--;)Le[e.charCodeAt(c)]=0;return l},"myers_32"),nl=o(function(e,t){for(var r=t.length,n=e.length,i=[],s=[],a=Math.ceil(r/32),l=Math.ceil(n/32),c=0;c<a;c++)s[c]=-1,i[c]=0;for(var u=0;u<l-1;u++){for(var f=0,d=-1,m=u*32,p=Math.min(32,n)+m,b=m;b<p;b++)Le[e.charCodeAt(b)]|=1<<b;for(var c=0;c<r;c++){var v=Le[t.charCodeAt(c)],T=s[c/32|0]>>>c&1,k=i[c/32|0]>>>c&1,B=v|f,$=((v|k)&d)+d^d|v|k,I=f|~($|d),N=d&$;I>>>31^T&&(s[c/32|0]^=1<<c),N>>>31^k&&(i[c/32|0]^=1<<c),I=I<<1|T,N=N<<1|k,d=N|~(B|I),f=I&B}for(var b=m;b<p;b++)Le[e.charCodeAt(b)]=0}for(var q=0,Q=-1,S=u*32,C=Math.min(32,n-S)+S,b=S;b<C;b++)Le[e.charCodeAt(b)]|=1<<b;for(var K=n,c=0;c<r;c++){var v=Le[t.charCodeAt(c)],T=s[c/32|0]>>>c&1,k=i[c/32|0]>>>c&1,B=v|q,$=((v|k)&Q)+Q^Q|v|k,I=q|~($|Q),N=Q&$;K+=I>>>n-1&1,K-=N>>>n-1&1,I>>>31^T&&(s[c/32|0]^=1<<c),N>>>31^k&&(i[c/32|0]^=1<<c),I=I<<1|T,N=N<<1|k,Q=N|~(B|I),q=I&B}for(var b=S;b<C;b++)Le[e.charCodeAt(b)]=0;return K},"myers_x"),Qs=o(function(e,t){if(e.length<t.length){var r=t;t=e,e=r}return t.length===0?e.length:e.length<=32?rl(e,t):nl(e,t)},"distance");ht.distance=Qs;var il=o(function(e,t){for(var r=1/0,n=0,i=0;i<t.length;i++){var s=Qs(e,t[i]);s<r&&(r=s,n=i)}return t[n]},"closest");ht.closest=il});var Js=H((xn,Dt)=>{h();(function(){"use strict";var e;try{e=typeof Intl<"u"&&typeof Intl.Collator<"u"?Intl.Collator("generic",{sensitivity:"base"}):null}catch{console.log("Collator could not be initialized and wouldn't be used")}var t=Ks(),r=[],n=[],i={get:o(function(s,a,l){var c=l&&e&&l.useCollator;if(c){var u=s.length,f=a.length;if(u===0)return f;if(f===0)return u;var d,m,p,b,v;for(p=0;p<f;++p)r[p]=p,n[p]=a.charCodeAt(p);r[f]=f;var T;for(p=0;p<u;++p){for(m=p+1,b=0;b<f;++b)d=m,T=e.compare(s.charAt(p),String.fromCharCode(n[b]))===0,m=r[b]+(T?0:1),v=d+1,m>v&&(m=v),v=r[b+1]+1,m>v&&(m=v),r[b]=d;r[b]=m}return m}return t.distance(s,a)},"get")};typeof define<"u"&&define!==null&&define.amd?define(function(){return i}):typeof Dt<"u"&&Dt!==null&&typeof xn<"u"&&Dt.exports===xn?Dt.exports=i:typeof self<"u"&&typeof self.postMessage=="function"&&typeof self.importScripts=="function"?self.Levenshtein=i:typeof window<"u"&&window!==null&&(window.Levenshtein=i)})()});var so=H((zp,io)=>{"use strict";h();var ro=12,fl=0,Tn=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,7,7,7,7,7,7,7,7,7,7,7,7,8,7,7,10,9,9,9,11,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,24,36,48,60,72,84,96,0,12,12,12,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,24,24,24,0,0,0,0,0,0,0,0,0,24,24,0,0,0,0,0,0,0,0,0,0,48,48,48,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,127,63,63,63,0,31,15,15,15,7,7,7];function hl(e){var t=e.indexOf("%");if(t===-1)return e;for(var r=e.length,n="",i=0,s=0,a=t,l=ro;t>-1&&t<r;){var c=no(e[t+1],4),u=no(e[t+2],0),f=c|u,d=Tn[f];if(l=Tn[256+l+d],s=s<<6|f&Tn[364+d],l===ro)n+=e.slice(i,a),n+=s<=65535?String.fromCharCode(s):String.fromCharCode(55232+(s>>10),56320+(s&1023)),s=0,i=t+3,t=a=e.indexOf("%",i);else{if(l===fl)return null;if(t+=3,t<r&&e.charCodeAt(t)===37)continue;return null}}return n+e.slice(i)}o(hl,"decodeURIComponent");var dl={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};function no(e,t){var r=dl[e];return r===void 0?255:r<<t}o(no,"hexCodeToInt");io.exports=hl});var uo=H((Yp,lo)=>{"use strict";h();var oo=so(),ao=/\+/g,co=o(function(){},"Empty");co.prototype=Object.create(null);function pl(e){let t=new co;if(typeof e!="string")return t;let r=e.length,n="",i="",s=-1,a=-1,l=!1,c=!1,u=!1,f=!1,d=!1,m=0;for(let p=0;p<r+1;p++)if(m=p!==r?e.charCodeAt(p):38,m===38){if(d=a>s,d||(a=p),n=e.slice(s+1,a),d||n.length>0){u&&(n=n.replace(ao," ")),l&&(n=oo(n)||n),d&&(i=e.slice(a+1,p),f&&(i=i.replace(ao," ")),c&&(i=oo(i)||i));let b=t[n];b===void 0?t[n]=i:b.pop?b.push(i):t[n]=[b,i]}i="",s=p,a=p,l=!1,c=!1,u=!1,f=!1}else m===61?a<=s?a=p:c=!0:m===43?a>s?f=!0:u=!0:m===37&&(a>s?c=!0:l=!0);return t}o(pl,"parse");lo.exports=pl});var ho=H((Jp,fo)=>{h();var ve=Array.from({length:256},(e,t)=>"%"+((t<16?"0":"")+t.toString(16)).toUpperCase()),ml=new Int8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0]);function gl(e){let t=e.length;if(t===0)return"";let r="",n=0,i=0;e:for(;i<t;i++){let s=e.charCodeAt(i);for(;s<128;){if(ml[s]!==1&&(n<i&&(r+=e.slice(n,i)),n=i+1,r+=ve[s]),++i===t)break e;s=e.charCodeAt(i)}if(n<i&&(r+=e.slice(n,i)),s<2048){n=i+1,r+=ve[192|s>>6]+ve[128|s&63];continue}if(s<55296||s>=57344){n=i+1,r+=ve[224|s>>12]+ve[128|s>>6&63]+ve[128|s&63];continue}if(++i,i>=t)throw new Error("URI malformed");let a=e.charCodeAt(i)&1023;n=i+1,s=65536+((s&1023)<<10|a),r+=ve[240|s>>18]+ve[128|s>>12&63]+ve[128|s>>6&63]+ve[128|s&63]}return n===0?e:n<t?r+e.slice(n):r}o(gl,"encodeString");fo.exports={encodeString:gl}});var go=H((em,mo)=>{"use strict";h();var{encodeString:Cn}=ho();function po(e){let t=typeof e;return t==="string"?Cn(e):t==="bigint"?e.toString():t==="boolean"?e?"true":"false":t==="number"&&Number.isFinite(e)?e<1e21?""+e:Cn(""+e):""}o(po,"getAsPrimitive");function yl(e){let t="";if(e===null||typeof e!="object")return t;let r="&",n=Object.keys(e),i=n.length,s=0;for(let a=0;a<i;a++){let l=n[a],c=e[l],u=Cn(l)+"=";if(a&&(t+=r),Array.isArray(c)){s=c.length;for(let f=0;f<s;f++)f&&(t+=r),t+=u,t+=po(c[f])}else t+=u,t+=po(c)}return t}o(yl,"stringify");mo.exports=yl});var wo=H((nm,Ft)=>{"use strict";h();var yo=uo(),bo=go(),_o={parse:yo,stringify:bo};Ft.exports=_o;Ft.exports.default=_o;Ft.exports.parse=yo;Ft.exports.stringify=bo});h();h();import Ro from"node:net";import Po from"node:os";var zt=class extends Error{static{o(this,"Locked")}constructor(t){super(`${t} is locked`)}},et={old:new Set,young:new Set},$o=1e3*15;var xt,Io=o(()=>{let e=Po.networkInterfaces(),t=new Set([void 0,"0.0.0.0"]);for(let r of Object.values(e))for(let n of r)t.add(n.address);return t},"getLocalHosts"),Kn=o(e=>new Promise((t,r)=>{let n=Ro.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:i}=n.address();n.close(()=>{t(i)})})}),"checkAvailablePort"),Jn=o(async(e,t)=>{if(e.host||e.port===0)return Kn(e);for(let r of t)try{await Kn({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},"getAvailablePort"),No=o(function*(e){e&&(yield*e),yield 0},"portCheckSequence");async function vr(e){let t,r=new Set;if(e&&(e.port&&(t=typeof e.port=="number"?[e.port]:e.port),e.exclude)){let i=e.exclude;if(typeof i[Symbol.iterator]!="function")throw new TypeError("The `exclude` option must be an iterable.");for(let s of i){if(typeof s!="number")throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");if(!Number.isSafeInteger(s))throw new TypeError(`Number ${s} in the exclude option is not a safe integer and can't be used`)}r=new Set(i)}xt===void 0&&(xt=setTimeout(()=>{xt=void 0,et.old=et.young,et.young=new Set},$o),xt.unref&&xt.unref());let n=Io();for(let i of No(t))try{if(r.has(i))continue;let s=await Jn({...e,port:i},n);for(;et.old.has(s)||et.young.has(s);){if(i!==0)throw new zt(i);s=await Jn({...e,port:i},n)}return et.young.add(s),s}catch(s){if(!["EADDRINUSE","EACCES"].includes(s.code)&&!(s instanceof zt))throw s}throw new Error("No available ports found")}o(vr,"getPorts");import $n from"node:assert";import Il from"node:http";h();import fi from"node:process";import hi from"node:path";import{fileURLToPath as aa}from"node:url";import ca from"node:child_process";import la,{constants as ua}from"node:fs/promises";h();import{promisify as Fo}from"node:util";import Go from"node:child_process";import Er,{constants as ei}from"node:fs/promises";h();import Xn from"node:process";import{Buffer as Bo}from"node:buffer";import{promisify as Mo}from"node:util";import Do from"node:child_process";var Uo=Mo(Do.execFile),xr=o(()=>`${Xn.env.SYSTEMROOT||Xn.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`,"powerShellPath");var le=o(async(e,t={})=>{let{powerShellPath:r,...n}=t,i=le.encodeCommand(e);return Uo(r??xr(),[...le.argumentsPrefix,i],{encoding:"utf8",...n})},"executePowerShell");le.argumentsPrefix=["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"];le.encodeCommand=e=>Bo.from(e,"utf16le").toString("base64");le.escapeArgument=e=>`'${String(e).replaceAll("'","''")}'`;var Wo=Fo(Go.execFile),jo=(()=>{let e="/mnt/",t;return async function(){if(t)return t;let r="/etc/wsl.conf",n=!1;try{await Er.access(r,ei.F_OK),n=!0}catch{}if(!n)return e;let i=await Er.readFile(r,{encoding:"utf8"}),s=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(i);return s?(t=s.groups.mountPoint.trim(),t=t.endsWith("/")?t:`${t}/`,t):e}})(),qo=o(async()=>`${await jo()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,"powerShellPathFromWsl"),Ht=Ee?qo:xr,Zn,ti=o(async()=>(Zn??=(async()=>{try{let e=await Ht();return await Er.access(e,ei.X_OK),!0}catch{return!1}})(),Zn),"canAccessPowerShell"),ri=o(async()=>{let e=await Ht(),t=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,{stdout:r}=await le(t,{powerShellPath:e});return r.trim()},"wslDefaultBrowser"),ni=o(async e=>{if(/^[a-z]+:\/\//i.test(e))return e;try{let{stdout:t}=await Wo("wslpath",["-aw",e],{encoding:"utf8"});return t.trim()}catch{return e}},"convertWslPathToWindows");h();function je(e,t,r){let n=o(i=>Object.defineProperty(e,t,{value:i,enumerable:!0,writable:!0}),"define");return Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get(){let i=r();return n(i),i},set(i){n(i)}}),e}o(je,"defineLazyProperty");h();import{promisify as ra}from"node:util";import Lr from"node:process";import{execFile as na}from"node:child_process";h();import{promisify as zo}from"node:util";import Ho from"node:process";import{execFile as Vo}from"node:child_process";var Yo=zo(Vo);async function Sr(){if(Ho.platform!=="darwin")throw new Error("macOS only");let{stdout:e}=await Yo("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),r=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??"com.apple.Safari";return r==="com.apple.safari"?"com.apple.Safari":r}o(Sr,"defaultBrowserId");h();h();import Qo from"node:process";import{promisify as Ko}from"node:util";import{execFile as Jo,execFileSync as mu}from"node:child_process";var Xo=Ko(Jo);async function ii(e,{humanReadableOutput:t=!0,signal:r}={}){if(Qo.platform!=="darwin")throw new Error("macOS only");let n=t?[]:["-ss"],i={};r&&(i.signal=r);let{stdout:s}=await Xo("osascript",["-e",e,n],i);return s.trim()}o(ii,"runAppleScript");async function Tr(e){return ii(`tell application "Finder" to set app_path to application file id "${e}" as string
|
|
8
|
-
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}o(Tr,"bundleName");h();import{promisify as Zo}from"node:util";import{execFile as ea}from"node:child_process";var ta=Zo(ea),si={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},Cr=new Map(Object.entries(si)),Vt=class extends Error{static{o(this,"UnknownBrowserError")}};async function Or(e=ta){let{stdout:t}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),r=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(t);if(!r)throw new Vt(`Cannot find Windows browser in stdout: ${JSON.stringify(t)}`);let{id:n}=r.groups,i=si[n];if(!i)throw new Vt(`Unknown browser ID: ${n}`);return i}o(Or,"defaultBrowser");var ia=ra(na),sa=o(e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,t=>t.toUpperCase()),"titleize");async function kr(){if(Lr.platform==="darwin"){let e=await Sr();return{name:await Tr(e),id:e}}if(Lr.platform==="linux"){let{stdout:e}=await ia("xdg-mime",["query","default","x-scheme-handler/http"]),t=e.trim();return{name:sa(t.replace(/.desktop$/,"").replace("-"," ")),id:t}}if(Lr.platform==="win32")return Or();throw new Error("Only macOS, Linux, and Windows are supported")}o(kr,"defaultBrowser");h();import Ar from"node:process";var oa=!!(Ar.env.SSH_CONNECTION||Ar.env.SSH_CLIENT||Ar.env.SSH_TTY),oi=oa;var Yt=Symbol("fallbackAttempt"),Rr=import.meta.url?hi.dirname(aa(import.meta.url)):"",ai=hi.join(Rr,"xdg-open"),{platform:tt,arch:ci}=fi,li=o(async(e,t)=>{if(e.length===0)return;let r=[];for(let n of e)try{return await t(n)}catch(i){r.push(i)}throw new AggregateError(r,"Failed to open in all supported apps")},"tryEachApp"),Qt=o(async e=>{e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e};let t=e[Yt]===!0;if(delete e[Yt],Array.isArray(e.app))return li(e.app,u=>Qt({...e,app:u,[Yt]:!0}));let{name:r,arguments:n=[]}=e.app??{};if(n=[...n],Array.isArray(r))return li(r,u=>Qt({...e,app:{name:u,arguments:n},[Yt]:!0}));if(r==="browser"||r==="browserPrivate"){let u={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge","com.apple.safari":"safari"},f={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},d;if(Ee){let m=await ri();d=Cr.get(m)??{}}else d=await kr();if(d.id in u){let m=u[d.id.toLowerCase()];if(r==="browserPrivate"){if(m==="safari")throw new Error("Safari doesn't support opening in private mode via command line");n.push(f[m])}return Qt({...e,app:{name:rt[m],arguments:n}})}throw new Error(`${d.name} is not supported as a default browser`)}let i,s=[],a={},l=!1;if(Ee&&!jn()&&!oi&&!r&&(l=await ti()),tt==="darwin")i="open",e.wait&&s.push("--wait-apps"),e.background&&s.push("--background"),e.newInstance&&s.push("--new"),r&&s.push("-a",r);else if(tt==="win32"||l){i=await Ht(),s.push(...le.argumentsPrefix),Ee||(a.windowsVerbatimArguments=!0),Ee&&e.target&&(e.target=await ni(e.target));let u=["$ProgressPreference = 'SilentlyContinue';","Start"];e.wait&&u.push("-Wait"),r?(u.push(le.escapeArgument(r)),e.target&&n.push(e.target)):e.target&&u.push(le.escapeArgument(e.target)),n.length>0&&(n=n.map(f=>le.escapeArgument(f)),u.push("-ArgumentList",n.join(","))),e.target=le.encodeCommand(u.join(" ")),e.wait||(a.stdio="ignore")}else{if(r)i=r;else{let u=!Rr||Rr==="/",f=!1;try{await la.access(ai,ua.X_OK),f=!0}catch{}i=fi.versions.electron??(tt==="android"||u||!f)?"xdg-open":ai}n.length>0&&s.push(...n),e.wait||(a.stdio="ignore",a.detached=!0)}tt==="darwin"&&n.length>0&&s.push("--args",...n),e.target&&s.push(e.target);let c=ca.spawn(i,s,a);return e.wait?new Promise((u,f)=>{c.once("error",f),c.once("close",d=>{if(!e.allowNonzeroExitCode&&d!==0){f(new Error(`Exited with code ${d}`));return}u(c)})}):t?new Promise((u,f)=>{c.once("error",f),c.once("spawn",()=>{c.once("close",d=>{if(c.off("error",f),d!==0){f(new Error(`Exited with code ${d}`));return}c.unref(),u(c)})})}):(c.unref(),new Promise((u,f)=>{c.once("error",f),c.once("spawn",()=>{c.off("error",f),u(c)})}))},"baseOpen"),fa=o((e,t)=>{if(typeof e!="string")throw new TypeError("Expected a `target`");return Qt({...t,target:e})},"open");function ui(e){if(typeof e=="string"||Array.isArray(e))return e;let{[ci]:t}=e;if(!t)throw new Error(`${ci} is not supported`);return t}o(ui,"detectArchBinary");function Et({[tt]:e},{wsl:t}={}){if(t&&Ee)return ui(t);if(!e)throw new Error(`${tt} is not supported`);return ui(e)}o(Et,"detectPlatformBinary");var rt={browser:"browser",browserPrivate:"browserPrivate"};je(rt,"chrome",()=>Et({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium","chromium-browser"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));je(rt,"brave",()=>Et({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));je(rt,"firefox",()=>Et({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));je(rt,"edge",()=>Et({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));je(rt,"safari",()=>Et({darwin:"Safari"}));var di=fa;h();import Pl from"node:assert";h();import ha from"node:assert";var da=o(e=>{let t=Vn(e);return t&&`session=${encodeURIComponent(t)};`},"loadCookie"),Pr=o(e=>{let t=qe(e);return ha(t,"missing auth headers"),t},"loadAuthHeaders"),qe=o(e=>{let t=da(e);if(t)return e.log.trace("using cookie as auth header",{},{cookie:t}),{cookie:t};let r=Yn(e);if(r)return e.log.trace("using token as auth header",{},{token:r}),{"x-platform-access-token":r}},"maybeLoadAuthHeaders"),pa=o(e=>e instanceof Fn&&e.response.statusCode===401,"isUnauthorizedError"),pi=o((e,t)=>{if(pa(t)){e.log.warn("swallowing unauthorized error",{error:t});return}throw t},"swallowUnauthorized");h();import kl from"node:assert";import{Agent as Al}from"node:http";import{Agent as Rl}from"node:https";h();var Kt={decodeValues:!0,map:!1,silent:!1,split:"auto"};function $r(e){return typeof e!="string"||e in{}}o($r,"isForbiddenKey");function Ir(){return Object.create(null)}o(Ir,"createNullObj");function mi(e){return typeof e=="string"&&!!e.trim()}o(mi,"isNonEmptyString");function St(e,t){var r=e.split(";").filter(mi),n=r.shift(),i=ma(n),s=i.name,a=i.value;if(t=t?Object.assign({},Kt,t):Kt,$r(s))return null;try{a=t.decodeValues?decodeURIComponent(a):a}catch(c){console.error("set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.",c)}var l=Ir();return l.name=s,l.value=a,r.forEach(function(c){var u=c.split("="),f=u.shift().trimLeft().toLowerCase();if(!$r(f)){var d=u.join("=");if(f==="expires")l.expires=new Date(d);else if(f==="max-age"){var m=parseInt(d,10);Number.isNaN(m)||(l.maxAge=m)}else f==="secure"?l.secure=!0:f==="httponly"?l.httpOnly=!0:f==="samesite"?l.sameSite=d:f==="partitioned"?l.partitioned=!0:f&&(l[f]=d)}}),l}o(St,"parseString");function ma(e){var t="",r="",n=e.split("=");return n.length>1?(t=n.shift(),r=n.join("=")):r=e,{name:t,value:r}}o(ma,"parseNameValuePair");function nt(e,t){if(t=t?Object.assign({},Kt,t):Kt,!e)return t.map?Ir():[];if(e.headers)if(typeof e.headers.getSetCookie=="function")e=e.headers.getSetCookie();else if(e.headers["set-cookie"])e=e.headers["set-cookie"];else{var r=e.headers[Object.keys(e.headers).find(function(a){return a.toLowerCase()==="set-cookie"})];!r&&e.headers.cookie&&!t.silent&&console.warn("Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."),e=r}var n=t.split,i=Array.isArray(e);if(n==="auto"&&(n=!i),i||(e=[e]),e=e.filter(mi),n&&(e=e.map(gi).flat()),t.map){var s=Ir();return e.reduce(function(a,l){var c=St(l,t);return c&&!$r(c.name)&&(a[c.name]=c),a},s)}else return e.map(function(a){return St(a,t)}).filter(Boolean)}o(nt,"parseSetCookie");function gi(e){if(Array.isArray(e))return e;if(typeof e!="string")return[];var t=[],r=0,n,i,s,a,l;function c(){for(;r<e.length&&/\s/.test(e.charAt(r));)r+=1;return r<e.length}o(c,"skipWhitespace");function u(){return i=e.charAt(r),i!=="="&&i!==";"&&i!==","}for(o(u,"notSpecialChar");r<e.length;){for(n=r,l=!1;c();)if(i=e.charAt(r),i===","){for(s=r,r+=1,c(),a=r;r<e.length&&u();)r+=1;r<e.length&&e.charAt(r)==="="?(l=!0,r=a,t.push(e.substring(n,s)),n=r):r=s+1}else r+=1;(!l||r>=e.length)&&t.push(e.substring(n,e.length))}return t}o(gi,"splitCookiesString");nt.parseSetCookie=nt;nt.parse=nt;nt.parseString=St;nt.splitCookiesString=gi;h();h();h();import Cl from"node:assert";h();var yi=se(jt(),1);import Nr from"node:os";var ye,bi=o(async(e,t)=>{t["--telemetry"]&&(ye=await import("./esm-D77XRR65.js"),ye.init({dsn:"https://0c26e0d8afd94e77a88ee1c3aa9e7065@o250689.ingest.sentry.io/6703266",enabled:xe.productionLike&&(t["--telemetry"]??!1),release:Xe.version,environment:Xe.version.includes("experimental")?"experimental":"production"}))},"initSentry"),_i=o(async e=>{ye&&(ye.captureException(e,{event_id:e.id,captureContext:{tags:{arch:M.arch,bug:e.isBug,environment:xe.value,platform:M.platform,shell:M.shell,version:Xe.version},contexts:{ctx:{argv:process.argv},cause:e.cause?ce(e.cause):void 0,app:{app_name:Xe.name,app_version:Xe.version},device:{name:Nr.hostname(),family:Nr.type(),arch:Nr.arch()},runtime:{name:process.release.name,version:process.version}}}}),await ye.flush((0,yi.default)("2s")))},"sendErrorToSentry"),wi=o(e=>{ye&&ye.addBreadcrumb(e)},"addSentryBreadcrumb"),vi=o(e=>{ye&&ye.setUser(e)},"setSentryUser"),yf=o(e=>{ye&&ye.setTags(e)},"setSentryTags");h();h();var xi=o((e,t,r,n)=>(r?r=wr(r).trim():r="",JSON.stringify({level:e,name:t,msg:r,fields:Ei(n)})+`
|
|
9
|
-
`),"formatJson"),Ei=o(e=>{let t={};for(let[r,n]of Object.entries(e))t[r]=Si(n);return t},"serializeFields"),Si=o(e=>(e instanceof Set&&(e=Array.from(e)),Array.isArray(e)?e.map(Si):(e instanceof Map&&(e=Object.fromEntries(e.entries())),Pe(e)?Ei(e):qt(e)?wr(e).trim():e)),"serializeValue");h();var On=se(Ti(),1);import bl from"node:assert";h();h();import Tt from"node:process";h();import Dr from"node:process";import ga from"node:os";import Ci from"node:tty";function pe(e,t=globalThis.Deno?globalThis.Deno.args:Dr.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",n=t.indexOf(r+e),i=t.indexOf("--");return n!==-1&&(i===-1||n<i)}o(pe,"hasFlag");var{env:W}=Dr,Jt;pe("no-color")||pe("no-colors")||pe("color=false")||pe("color=never")?Jt=0:(pe("color")||pe("colors")||pe("color=true")||pe("color=always"))&&(Jt=1);function ya(){if(!("FORCE_COLOR"in W))return;if(W.FORCE_COLOR==="true")return 1;if(W.FORCE_COLOR==="false")return 0;if(W.FORCE_COLOR.length===0)return 1;let e=Math.min(Number.parseInt(W.FORCE_COLOR,10),3);if([0,1,2,3].includes(e))return e}o(ya,"envForceColor");function ba(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}o(ba,"translateLevel");function _a(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let n=ya();n!==void 0&&(Jt=n);let i=r?Jt:n;if(i===0)return 0;if(r){if(pe("color=16m")||pe("color=full")||pe("color=truecolor"))return 3;if(pe("color=256"))return 2}if("TF_BUILD"in W&&"AGENT_NAME"in W)return 1;if(e&&!t&&i===void 0)return 0;let s=i||0;if(W.TERM==="dumb")return s;if(Dr.platform==="win32"){let a=ga.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in W)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in W)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in W)||W.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in W)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(W.TEAMCITY_VERSION)?1:0;if(W.COLORTERM==="truecolor"||W.TERM==="xterm-kitty"||W.TERM==="xterm-ghostty"||W.TERM==="wezterm")return 3;if("TERM_PROGRAM"in W){let a=Number.parseInt((W.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(W.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(W.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(W.TERM)||"COLORTERM"in W?1:s}o(_a,"_supportsColor");function Xt(e,t={}){let r=_a(e,{streamIsTTY:e&&e.isTTY,...t});return ba(r)}o(Xt,"createSupportsColor");var Rf={stdout:Xt({isTTY:Ci.isatty(1)}),stderr:Xt({isTTY:Ci.isatty(2)})};h();import wa from"process";function $e(e,t=wa.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",n=t.indexOf(r+e),i=t.indexOf("--");return n!==-1&&(i===-1||n<i)}o($e,"hasFlag");function Oi(e=""){if(/^\d{3,4}$/.test(e)){let r=/(\d{1,2})(\d{2})/.exec(e)??[];return{major:0,minor:Number.parseInt(r[1],10),patch:Number.parseInt(r[2],10)}}let t=(e??"").split(".").map(r=>Number.parseInt(r,10));return{major:t[0],minor:t[1],patch:t[2]}}o(Oi,"parseVersion");function Li(e){let{CI:t,CURSOR_TRACE_ID:r,FORCE_HYPERLINK:n,NETLIFY:i,TEAMCITY_VERSION:s,TERM_PROGRAM:a,TERM_PROGRAM_VERSION:l,VTE_VERSION:c,TERM:u}=Tt.env;if(n)return!(n.length>0&&Number.parseInt(n,10)===0);if($e("no-hyperlink")||$e("no-hyperlinks")||$e("hyperlink=false")||$e("hyperlink=never"))return!1;if($e("hyperlink=true")||$e("hyperlink=always")||i)return!0;if(!Xt(e)||e&&!e.isTTY)return!1;if("WT_SESSION"in Tt.env)return!0;if(Tt.platform==="win32"||t||s)return!1;if(a){let f=Oi(l);switch(a){case"iTerm.app":return f.major===3?f.minor>=1:f.major>3;case"WezTerm":return/^0-unstable-\d{4}-\d{2}-\d{2}$/.test(l)?l.slice(11)>="2020-06-20":f.major>=20200620;case"vscode":return r?!0:f.major>1||f.major===1&&f.minor>=72;case"ghostty":return!0}}if(c){if(c==="0.50.0")return!1;let f=Oi(c);return f.major>0||f.minor>=50}switch(u){case"alacritty":return!0;case"xterm-kitty":return!0}return!1}o(Li,"createSupportsHyperlinks");var va={stdout:Li(Tt.stdout),stderr:Li(Tt.stderr)},Zt=va;function be(e,t,{target:r="stdout",...n}={}){return Zt[r]?Bn.link(e,t):n.fallback===!1?e:typeof n.fallback=="function"?n.fallback(e,t):`${e} ${t}`}o(be,"terminalLink");be.isSupported=Zt.stdout;be.stderr=(e,t,r={})=>be(e,t,{target:"stderr",...r});be.stderr.isSupported=Zt.stderr;h();h();import al from"node:assert";h();h();h();h();function oe(e){return e===null?"null":Array.isArray(e)?"array":typeof e}o(oe,"extendedTypeof");function Ie(e){return oe(e)==="object"}o(Ie,"isObject");function xa(e){return Array.isArray(e)&&e.length>0&&e.every(t=>"message"in t)}o(xa,"areGraphQLFormattedErrors");function Ur(e,t){return e.length<124?e:t}o(Ur,"limitCloseReason");var ki="graphql-transport-ws";var ue=(e=>(e[e.InternalServerError=4500]="InternalServerError",e[e.InternalClientError=4005]="InternalClientError",e[e.BadRequest=4400]="BadRequest",e[e.BadResponse=4004]="BadResponse",e[e.Unauthorized=4401]="Unauthorized",e[e.Forbidden=4403]="Forbidden",e[e.SubprotocolNotAcceptable=4406]="SubprotocolNotAcceptable",e[e.ConnectionInitialisationTimeout=4408]="ConnectionInitialisationTimeout",e[e.ConnectionAcknowledgementTimeout=4504]="ConnectionAcknowledgementTimeout",e[e.SubscriberAlreadyExists=4409]="SubscriberAlreadyExists",e[e.TooManyInitialisationRequests=4429]="TooManyInitialisationRequests",e))(ue||{}),fe=(e=>(e.ConnectionInit="connection_init",e.ConnectionAck="connection_ack",e.Ping="ping",e.Pong="pong",e.Subscribe="subscribe",e.Next="next",e.Error="error",e.Complete="complete",e))(fe||{});function Ai(e){if(!Ie(e))throw new Error(`Message is expected to be an object, but got ${oe(e)}`);if(!e.type)throw new Error("Message is missing the 'type' property");if(typeof e.type!="string")throw new Error(`Message is expects the 'type' property to be a string, but got ${oe(e.type)}`);switch(e.type){case"connection_init":case"connection_ack":case"ping":case"pong":{if(e.payload!=null&&!Ie(e.payload))throw new Error(`"${e.type}" message expects the 'payload' property to be an object or nullish or missing, but got "${e.payload}"`);break}case"subscribe":{if(typeof e.id!="string")throw new Error(`"${e.type}" message expects the 'id' property to be a string, but got ${oe(e.id)}`);if(!e.id)throw new Error(`"${e.type}" message requires a non-empty 'id' property`);if(!Ie(e.payload))throw new Error(`"${e.type}" message expects the 'payload' property to be an object, but got ${oe(e.payload)}`);if(typeof e.payload.query!="string")throw new Error(`"${e.type}" message payload expects the 'query' property to be a string, but got ${oe(e.payload.query)}`);if(e.payload.variables!=null&&!Ie(e.payload.variables))throw new Error(`"${e.type}" message payload expects the 'variables' property to be a an object or nullish or missing, but got ${oe(e.payload.variables)}`);if(e.payload.operationName!=null&&oe(e.payload.operationName)!=="string")throw new Error(`"${e.type}" message payload expects the 'operationName' property to be a string or nullish or missing, but got ${oe(e.payload.operationName)}`);if(e.payload.extensions!=null&&!Ie(e.payload.extensions))throw new Error(`"${e.type}" message payload expects the 'extensions' property to be a an object or nullish or missing, but got ${oe(e.payload.extensions)}`);break}case"next":{if(typeof e.id!="string")throw new Error(`"${e.type}" message expects the 'id' property to be a string, but got ${oe(e.id)}`);if(!e.id)throw new Error(`"${e.type}" message requires a non-empty 'id' property`);if(!Ie(e.payload))throw new Error(`"${e.type}" message expects the 'payload' property to be an object, but got ${oe(e.payload)}`);break}case"error":{if(typeof e.id!="string")throw new Error(`"${e.type}" message expects the 'id' property to be a string, but got ${oe(e.id)}`);if(!e.id)throw new Error(`"${e.type}" message requires a non-empty 'id' property`);if(!xa(e.payload))throw new Error(`"${e.type}" message expects the 'payload' property to be an array of GraphQL errors, but got ${JSON.stringify(e.payload)}`);break}case"complete":{if(typeof e.id!="string")throw new Error(`"${e.type}" message expects the 'id' property to be a string, but got ${oe(e.id)}`);if(!e.id)throw new Error(`"${e.type}" message requires a non-empty 'id' property`);break}default:throw new Error(`Invalid message 'type' property "${e.type}"`)}return e}o(Ai,"validateMessage");function Ri(e,t){return Ai(typeof e=="string"?JSON.parse(e,t):e)}o(Ri,"parseMessage");function it(e,t){return Ai(e),JSON.stringify(e,t)}o(it,"stringifyMessage");function Gr(e){let{url:t,connectionParams:r,lazy:n=!0,onNonLazyError:i=console.error,lazyCloseTimeout:s=0,keepAlive:a=0,disablePong:l,connectionAckWaitTimeout:c=0,retryAttempts:u=5,retryWait:f=o(async function(_){let y=Math.pow(2,_);await new Promise(w=>setTimeout(w,y*1e3+Math.floor(Math.random()*2700+300)))},"randomisedExponentialBackoff"),shouldRetry:d=Fr,on:m,webSocketImpl:p,generateID:b=o(function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,_=>{let y=Math.random()*16|0;return(_=="x"?y:y&3|8).toString(16)})},"generateUUID"),jsonMessageReplacer:v,jsonMessageReviver:T}=e,k;if(p){if(!Sa(p))throw new Error("Invalid WebSocket implementation provided");k=p}else typeof WebSocket<"u"?k=WebSocket:typeof global<"u"?k=global.WebSocket||global.MozWebSocket:typeof window<"u"&&(k=window.WebSocket||window.MozWebSocket);if(!k)throw new Error("WebSocket implementation missing; on Node you can `import WebSocket from 'ws';` and pass `webSocketImpl: WebSocket` to `createClient`");let B=k,$=(()=>{let g=(()=>{let y={};return{on(w,E){return y[w]=E,()=>{delete y[w]}},emit(w){"id"in w&&y[w.id]?.(w)}}})(),_={connecting:m?.connecting?[m.connecting]:[],opened:m?.opened?[m.opened]:[],connected:m?.connected?[m.connected]:[],ping:m?.ping?[m.ping]:[],pong:m?.pong?[m.pong]:[],message:m?.message?[g.emit,m.message]:[g.emit],closed:m?.closed?[m.closed]:[],error:m?.error?[m.error]:[]};return{onMessage:g.on,on(y,w){let E=_[y];return E.push(w),()=>{E.splice(E.indexOf(w),1)}},emit(y,...w){for(let E of[..._[y]])E(...w)}}})();function I(g){let _=[$.on("error",y=>{_.forEach(w=>w()),g(y)}),$.on("closed",y=>{_.forEach(w=>w()),g(y)})]}o(I,"errorOrClosed");let N,q=0,Q,S=!1,C=0,K=!1;async function mt(){clearTimeout(Q);let[g,_]=await(N??(N=new Promise((E,A)=>(async()=>{if(S){if(await f(C),!q)return N=void 0,A({code:1e3,reason:"All Subscriptions Gone"});C++}$.emit("connecting",S);let O=new B(typeof t=="function"?await t():t,ki),U,V;function X(){isFinite(a)&&a>0&&(clearTimeout(V),V=setTimeout(()=>{O.readyState===B.OPEN&&(O.send(it({type:fe.Ping})),$.emit("ping",!1,void 0))},a))}o(X,"enqueuePing"),I(F=>{N=void 0,clearTimeout(U),clearTimeout(V),A(F),F instanceof Ct&&(O.close(4499,"Terminated"),O.onerror=null,O.onclose=null)}),O.onerror=F=>$.emit("error",F),O.onclose=F=>$.emit("closed",F),O.onopen=async()=>{try{$.emit("opened",O);let F=typeof r=="function"?await r():r;if(O.readyState!==B.OPEN)return;O.send(it(F?{type:fe.ConnectionInit,payload:F}:{type:fe.ConnectionInit},v)),isFinite(c)&&c>0&&(U=setTimeout(()=>{O.close(ue.ConnectionAcknowledgementTimeout,"Connection acknowledgement timeout")},c)),X()}catch(F){$.emit("error",F),O.close(ue.InternalClientError,Ur(F instanceof Error?F.message:String(F),"Internal client error"))}};let ae=!1;O.onmessage=({data:F})=>{try{let z=Ri(F,T);if($.emit("message",z),z.type==="ping"||z.type==="pong"){$.emit(z.type,!0,z.payload),z.type==="pong"?X():l||(O.send(it(z.payload?{type:fe.Pong,payload:z.payload}:{type:fe.Pong})),$.emit("pong",!1,z.payload));return}if(ae)return;if(z.type!==fe.ConnectionAck)throw new Error(`First message cannot be of type ${z.type}`);clearTimeout(U),ae=!0,$.emit("connected",O,z.payload,S),S=!1,C=0,E([O,new Promise((Ae,Z)=>I(Z))])}catch(z){O.onmessage=null,$.emit("error",z),O.close(ue.BadResponse,Ur(z instanceof Error?z.message:String(z),"Bad response"))}}})())));g.readyState===B.CLOSING&&await _;let y=o(()=>{},"release"),w=new Promise(E=>y=E);return[g,y,Promise.race([w.then(()=>{if(!q){let E=o(()=>g.close(1e3,"Normal Closure"),"complete");isFinite(s)&&s>0?Q=setTimeout(()=>{g.readyState===B.OPEN&&E()},s):E()}}),_])]}o(mt,"connect");function L(g){if(Fr(g)&&(Ea(g.code)||[ue.InternalServerError,ue.InternalClientError,ue.BadRequest,ue.BadResponse,ue.Unauthorized,ue.SubprotocolNotAcceptable,ue.SubscriberAlreadyExists,ue.TooManyInitialisationRequests].includes(g.code)))throw g;if(K)return!1;if(Fr(g)&&g.code===1e3)return q>0;if(!u||C>=u||!d(g))throw g;return S=!0}o(L,"shouldRetryConnectOrThrow"),n||(async()=>{for(q++;;)try{let[,,g]=await mt();await g}catch(g){try{if(!L(g))return}catch(_){return i?.(_)}}})();function x(g,_){let y=b(g),w=!1,E=!1,A=o(()=>{q--,w=!0},"releaser");return(async()=>{for(q++;;)try{let[O,U,V]=await mt();if(w)return U();let X=$.onMessage(y,ae=>{switch(ae.type){case fe.Next:{_.next(ae.payload);return}case fe.Error:{E=!0,w=!0,_.error(ae.payload),A();return}case fe.Complete:{w=!0,A();return}}});O.send(it({id:y,type:fe.Subscribe,payload:g},v)),A=o(()=>{!w&&O.readyState===B.OPEN&&O.send(it({id:y,type:fe.Complete},v)),q--,w=!0,U()},"releaser"),await V.finally(X);return}catch(O){if(!L(O))return}})().then(()=>{E||_.complete()}).catch(O=>{_.error(O)}),()=>{w||A()}}return o(x,"subscribe"),{on:$.on,subscribe:x,iterate(g){let _=[],y={done:!1,error:null,resolve:o(()=>{},"resolve")},w=x(g,{next(A){_.push(A),y.resolve()},error(A){y.done=!0,y.error=A,y.resolve()},complete(){y.done=!0,y.resolve()}}),E=o(async function*(){for(;;){for(_.length||await new Promise(O=>y.resolve=O);_.length;)yield _.shift();if(y.error)throw y.error;if(y.done)return}},"iterator2")();return E.throw=async A=>(y.done||(y.done=!0,y.error=A,y.resolve()),{done:!0,value:void 0}),E.return=async()=>(w(),{done:!0,value:void 0}),E},async dispose(){if(K=!0,N){let[g]=await N;g.close(1e3,"Normal Closure")}},terminate(){N&&$.emit("closed",new Ct)}}}o(Gr,"createClient");var Ct=class extends Error{static{o(this,"TerminatedCloseEvent")}name="TerminatedCloseEvent";message="4499: Terminated";code=4499;reason="Terminated";wasClean=!1};function Fr(e){return Ie(e)&&"code"in e&&"reason"in e}o(Fr,"isLikeCloseEvent");function Ea(e){return[1e3,1001,1006,1005,1012,1013,1014].includes(e)?!1:e>=1e3&&e<=1999}o(Ea,"isFatalInternalCloseCode");function Sa(e){return typeof e=="function"&&"constructor"in e&&"CLOSED"in e&&"CLOSING"in e&&"CONNECTING"in e&&"OPEN"in e}o(Sa,"isWebSocket");var Sn=se(jt(),1);h();h();var jr=se($i(),1);h();var qr=class e extends Error{static{o(this,"TimeoutError")}name="TimeoutError";constructor(t,r){super(t,r),Error.captureStackTrace?.(this,e)}},Ii=o(e=>e.reason??new DOMException("This operation was aborted.","AbortError"),"getAbortedReason");function zr(e,t){let{milliseconds:r,fallback:n,message:i,customTimers:s={setTimeout,clearTimeout},signal:a}=t,l,c,f=new Promise((d,m)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(a?.aborted){m(Ii(a));return}if(a&&(c=o(()=>{m(Ii(a))},"abortHandler"),a.addEventListener("abort",c,{once:!0})),e.then(d,m),r===Number.POSITIVE_INFINITY)return;let p=new qr;l=s.setTimeout.call(void 0,()=>{if(n){try{d(n())}catch(b){m(b)}return}typeof e.cancel=="function"&&e.cancel(),i===!1?d():i instanceof Error?m(i):(p.message=i??`Promise timed out after ${r} milliseconds`,m(p))},r)}).finally(()=>{f.clear(),c&&a&&a.removeEventListener("abort",c)});return f.clear=()=>{s.clearTimeout.call(void 0,l),l=void 0},f}o(zr,"pTimeout");h();h();function Hr(e,t,r){let n=0,i=e.length;for(;i>0;){let s=Math.trunc(i/2),a=n+s;r(e[a],t)<=0?(n=++a,i-=s+1):i=s}return n}o(Hr,"lowerBound");var Lt=class{static{o(this,"PriorityQueue")}#e=[];enqueue(t,r){let{priority:n=0,id:i}=r??{},s={priority:n,id:i,run:t};if(this.size===0||this.#e[this.size-1].priority>=n){this.#e.push(s);return}let a=Hr(this.#e,s,(l,c)=>c.priority-l.priority);this.#e.splice(a,0,s)}setPriority(t,r){let n=this.#e.findIndex(s=>s.id===t);if(n===-1)throw new ReferenceError(`No promise function with the id "${t}" exists in the queue.`);let[i]=this.#e.splice(n,1);this.enqueue(i.run,{priority:r,id:t})}dequeue(){return this.#e.shift()?.run}filter(t){return this.#e.filter(r=>r.priority===t.priority).map(r=>r.run)}get size(){return this.#e.length}};var kt=class extends jr.default{static{o(this,"PQueue")}#e;#i;#a=0;#d;#m=!1;#b=!1;#c;#C=0;#_=0;#l;#u;#o;#s=[];#n=0;#t;#O;#r=0;#g;#f;#P=1n;#y=new Map;timeout;constructor(t){if(super(),t={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Lt,strict:!1,...t},!(typeof t.intervalCap=="number"&&t.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${t.intervalCap?.toString()??""}\` (${typeof t.intervalCap})`);if(t.interval===void 0||!(Number.isFinite(t.interval)&&t.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${t.interval?.toString()??""}\` (${typeof t.interval})`);if(t.strict&&t.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(t.strict&&t.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=t.carryoverIntervalCount??t.carryoverConcurrencyCount??!1,this.#i=t.intervalCap===Number.POSITIVE_INFINITY||t.interval===0,this.#d=t.intervalCap,this.#c=t.interval,this.#o=t.strict,this.#t=new t.queueClass,this.#O=t.queueClass,this.concurrency=t.concurrency,t.timeout!==void 0&&!(Number.isFinite(t.timeout)&&t.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${t.timeout}\` (${typeof t.timeout})`);this.timeout=t.timeout,this.#f=t.autoStart===!1,this.#F()}#w(t){for(;this.#n<this.#s.length;){let n=this.#s[this.#n];if(n!==void 0&&t-n>=this.#c)this.#n++;else break}(this.#n>100&&this.#n>this.#s.length/2||this.#n===this.#s.length)&&(this.#s=this.#s.slice(this.#n),this.#n=0)}#$(t){this.#o?this.#s.push(t):this.#a++}#I(){this.#o?this.#s.length>this.#n&&this.#s.pop():this.#a>0&&this.#a--}#v(){return this.#s.length-this.#n}get#N(){return this.#i?!0:this.#o?this.#v()<this.#d:this.#a<this.#d}get#B(){return this.#r<this.#g}#M(){this.#r--,this.#r===0&&this.emit("pendingZero"),this.#S(),this.emit("next")}#D(){this.#u=void 0,this.#A(),this.#k()}#U(t){if(this.#o){if(this.#w(t),this.#v()>=this.#d){let n=this.#s[this.#n],i=this.#c-(t-n);return this.#x(i),!0}return!1}if(this.#l===void 0){let r=this.#C-t;if(r<0){if(this.#_>0){let n=t-this.#_;if(n<this.#c)return this.#x(this.#c-n),!0}this.#a=this.#e?this.#r:0}else return this.#x(r),!0}return!1}#x(t){this.#u===void 0&&(this.#u=setTimeout(()=>{this.#D()},t))}#E(){this.#l&&(clearInterval(this.#l),this.#l=void 0)}#L(){this.#u&&(clearTimeout(this.#u),this.#u=void 0)}#S(){if(this.#t.size===0){if(this.#E(),this.emit("empty"),this.#r===0){if(this.#L(),this.#o&&this.#n>0){let r=Date.now();this.#w(r)}this.emit("idle")}return!1}let t=!1;if(!this.#f){let r=Date.now(),n=!this.#U(r);if(this.#N&&this.#B){let i=this.#t.dequeue();this.#i||(this.#$(r),this.#p()),this.emit("active"),i(),n&&this.#k(),t=!0}}return t}#k(){this.#i||this.#l!==void 0||this.#o||(this.#l=setInterval(()=>{this.#A()},this.#c),this.#C=Date.now()+this.#c)}#A(){this.#o||(this.#a===0&&this.#r===0&&this.#l&&this.#E(),this.#a=this.#e?this.#r:0),this.#T(),this.#p()}#T(){for(;this.#S(););}get concurrency(){return this.#g}set concurrency(t){if(!(typeof t=="number"&&t>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${t}\` (${typeof t})`);this.#g=t,this.#T()}setPriority(t,r){if(typeof r!="number"||!Number.isFinite(r))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${r}\` (${typeof r})`);this.#t.setPriority(t,r)}async add(t,r={}){return r={timeout:this.timeout,...r,id:r.id??(this.#P++).toString()},new Promise((n,i)=>{let s=Symbol(`task-${r.id}`);this.#t.enqueue(async()=>{this.#r++,this.#y.set(s,{id:r.id,priority:r.priority??0,startTime:Date.now(),timeout:r.timeout});let a;try{try{r.signal?.throwIfAborted()}catch(u){throw this.#G(),this.#y.delete(s),u}this.#_=Date.now();let l=t({signal:r.signal});if(r.timeout&&(l=zr(Promise.resolve(l),{milliseconds:r.timeout,message:`Task timed out after ${r.timeout}ms (queue has ${this.#r} running, ${this.#t.size} waiting)`})),r.signal){let{signal:u}=r;l=Promise.race([l,new Promise((f,d)=>{a=o(()=>{d(u.reason)},"eventListener"),u.addEventListener("abort",a,{once:!0})})])}let c=await l;n(c),this.emit("completed",c)}catch(l){i(l),this.emit("error",l)}finally{a&&r.signal?.removeEventListener("abort",a),this.#y.delete(s),queueMicrotask(()=>{this.#M()})}},r),this.emit("add"),this.#S()})}async addAll(t,r){return Promise.all(t.map(async n=>this.add(n,r)))}start(){return this.#f?(this.#f=!1,this.#T(),this):this}pause(){this.#f=!0}clear(){this.#t=new this.#O,this.#E(),this.#R(),this.emit("empty"),this.#r===0&&(this.#L(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#t.size!==0&&await this.#h("empty")}async onSizeLessThan(t){this.#t.size<t||await this.#h("next",()=>this.#t.size<t)}async onIdle(){this.#r===0&&this.#t.size===0||await this.#h("idle")}async onPendingZero(){this.#r!==0&&await this.#h("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#h("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#h("rateLimitCleared")}onError(){return new Promise((t,r)=>{let n=o(i=>{this.off("error",n),r(i)},"handleError");this.on("error",n)})}async#h(t,r){return new Promise(n=>{let i=o(()=>{r&&!r()||(this.off(t,i),n())},"listener");this.on(t,i)})}get size(){return this.#t.size}sizeBy(t){return this.#t.filter(t).length}get pending(){return this.#r}get isPaused(){return this.#f}#F(){this.#i||(this.on("add",()=>{this.#t.size>0&&this.#p()}),this.on("next",()=>{this.#p()}))}#p(){this.#i||this.#b||(this.#b=!0,queueMicrotask(()=>{this.#b=!1,this.#R()}))}#G(){this.#i||(this.#I(),this.#p())}#R(){let t=this.#m;if(this.#i||this.#t.size===0){t&&(this.#m=!1,this.emit("rateLimitCleared"));return}let r;if(this.#o){let i=Date.now();this.#w(i),r=this.#v()}else r=this.#a;let n=r>=this.#d;n!==t&&(this.#m=n,this.emit(n?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#m}get isSaturated(){return this.#r===this.#g&&this.#t.size>0||this.isRateLimited&&this.#t.size>0}get runningTasks(){return[...this.#y.values()].map(t=>({...t}))}};h();var Hc=se(ks(),1),Vc=se(nn(),1),Yc=se(an(),1),Us=se(hr(),1),Qc=se(Ds(),1);var Fs=Us.default;h();var Gs=se(jt(),1);var gn=["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN","EADDRNOTAVAIL","EHOSTUNREACH","ERR_SSL_SSL/TLS_ALERT_BAD_RECORD_MAC","EPROTO"],yn=(0,Gs.default)("5s"),bn=100,pr=10,Ws=["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],js=[408,413,429,500,502,503,504,521,522,524],qs=o((e,t=yn,r=bn)=>{let n=Math.min(Math.pow(2,e)*100,t);return Math.max(0,n+(Math.random()*r*2-r))},"calculateBackoffDelay"),zs=o(e=>!Pe(e)||!("code"in e)?!1:gn.includes(e.code),"isRetryableNetworkErrorCode"),mn=[/unauthenticated/i,/unauthorized/i,/forbidden/i,/not allowed/i,/permission denied/i],Kc=[1e3,1008,4401,4403],Jc=o(e=>zs(e.error),"isRetryableErrorEvent"),Xc=o(e=>!Kc.includes(e.code),"isRetryableCloseEvent"),Zc=o(e=>!e.some(t=>{let r=t.extensions?.code;return r==="UNAUTHENTICATED"||r==="FORBIDDEN"||r==="UNAUTHORIZED"?!0:mn.some(n=>n.test(t.message))}),"isRetryableGraphQLErrors"),Hs=o(e=>_t(e)?Xc(e):wt(e)?Jc(e):bt(e)?zs(e):vt(e)?Zc(e):typeof e=="string"?!mn.some(t=>t.test(e)):yt(e)?!e.some(t=>mn.some(r=>r.test(t))):!1,"isRetryableErrorCause");h();var Zs=se(Vs(),1);import ol from"node:assert";h();import{randomUUID as el}from"node:crypto";var tl=o(async(e,t)=>{if(Un(t))return e.log.debug("aborting without reporting error",{error:t}),process.exit(1);e.log.error("reporting error and exiting",{error:t});try{let r=Ke.from(t);if(r.print(),r.isBug===Me.NO)return;await _i(r)}finally{process.exit(1)}},"reportErrorAndExit"),Nd=o(async(e,t)=>{e.log.debug("installing error handlers"),await bi(e,t);let r=o(n=>{tl(e,n)},"handleError");process.once("uncaughtException",r),process.once("unhandledRejection",r)},"installErrorHandlers"),Me=Object.freeze({YES:"yes",NO:"no",MAYBE:"maybe"}),Ke=class e extends Error{static{o(this,"GGTError")}id=xe.testLike?"00000000-0000-0000-0000-000000000000":el();cause;stack;constructor(t){super(t),Error.captureStackTrace(this,this.constructor),this.stack=Nn(this.stack,{pretty:!0,basePath:Wn})}static from(t){return t instanceof e?t:new vn(t)}sprint(){let t=this.render();if(this.isBug!==Me.NO){t=We(t);let r=this.isBug===Me.YES?"This is a bug":"If you think this is a bug",n=`https://github.com/gadget-inc/ggt/issues/new?template=bug_report.yml&error-id=${this.id}`;be.isSupported?t+=We({ensureEmptyLineAbove:!0,content:ne`
|
|
10
|
-
${r}, ${be("click here",n)} to create an issue on GitHub.
|
|
11
|
-
`}):t+=We({ensureEmptyLineAbove:!0,content:ne`
|
|
12
|
-
${r}, use the link below to create an issue on GitHub.
|
|
13
|
-
|
|
14
|
-
${n}
|
|
15
|
-
`})}return t}print(t){de({ensureEmptyLineAbove:!0,...t,content:this.sprint()})}},vn=class extends Ke{constructor(r){super("An unexpected error occurred");this.cause=r}static{o(this,"UnexpectedError")}isBug=Me.YES;render(){let r=ce(this.cause),n=r.stack||r.message||this.stack;return this.message+`.
|
|
16
|
-
|
|
17
|
-
`+n}},Ys=class extends Ke{constructor(r,n){super(r);this.cause=n}static{o(this,"EdgeCaseError")}isBug=Me.MAYBE;render(){return this.message}};h();var En=se(Js(),1);import sl from"node:assert";var zd=o(e=>e.filter(t=>!!t),"compact"),Xs=o(e=>[...new Set(e)],"uniq"),Hd=o((e,t)=>(sl(t.length>0,"options must not be empty"),[...t].sort((r,n)=>En.default.get(r,e)-En.default.get(n,e))),"sortBySimilar");var te=class extends Ke{constructor(r,n,i){super("An error occurred while communicating with Gadget");this.request=r;i?this.isBug=i:this.isBug=Me.MAYBE,wt(n)?this.cause={type:n.type,message:n.message,error:ce(n.error)}:_t(n)?this.cause={type:n.type,code:n.code,reason:n.reason,wasClean:n.wasClean}:(ol(qt(n)||yt(n)||bt(n)||vt(n),"cause must be a string, Error, GraphQLError[], CloseEvent, or ErrorEvent"),this.cause=n)}static{o(this,"ClientError")}isBug;cause;render(){let r;switch(!0){case vt(this.cause):{let n=Xs(this.cause.map(i=>i.message));r=ne`
|
|
18
|
-
Gadget responded with the following ${(0,Zs.default)("error",n.length,!1)}:
|
|
19
|
-
|
|
20
|
-
• ${n.join(`
|
|
21
|
-
\u2022 `)}
|
|
22
|
-
`;break}case _t(this.cause):r="The connection to Gadget closed unexpectedly.";break;case(wt(this.cause)||bt(this.cause)):r=this.cause.message;break;case yt(this.cause):this.cause.length===1?r=String(this.cause[0]):r=this.cause.join(", ");break;default:r=this.cause;break}return this.message+`
|
|
23
|
-
|
|
24
|
-
`+r}},mr=class extends te{static{o(this,"AuthenticationError")}constructor(t){super(t,"Request authentication failed due to the session expiring while running the command. Please sign-in again.",Me.NO)}};var gr=class{constructor(t,r,n){this.environment=r;this.endpoint=n;this.ctx=t.child({name:"client"}),this._graphqlWsClient=Gr({url:`wss://${r.application.slug}.${M.domains.app}/edit/api/graphql-ws`,keepAlive:(0,Sn.default)("10s"),shouldRetry:o(()=>!0,"shouldRetry"),connectionParams:{environment:r.name},webSocketImpl:class extends Fs{static{o(this,"webSocketImpl")}constructor(i,s,a){let l=Dn(a?.headers)?Object.fromEntries(a.headers.map(c=>c.split(": ",2))):a?.headers;super(i,s,{signal:t.signal,...a,headers:{...l,"user-agent":M.versionFull,...Pr(t)}})}},on:{opened:o(()=>{this.ctx.log.trace("opened")},"opened"),ping:o(i=>{this.ctx.log.trace("ping",{received:i})},"ping"),pong:o(i=>{this.ctx.log.trace("pong",{received:i})},"pong"),connecting:o(()=>{switch(this.status){case 1:this.status=2,this.ctx.log.info("reconnecting");break;case 2:this.ctx.log.info("retrying");break;default:this.ctx.log.debug("connecting");break}},"connecting"),connected:o(()=>{this.status===2?this.ctx.log.info("reconnected"):this.ctx.log.debug("connected"),setImmediate(()=>this.status=0)},"connected"),closed:o(()=>{this.status=1,this.ctx.log.debug("disconnected")},"closed"),error:o(i=>{this.status===2?this.ctx.log.error("failed to reconnect",{error:i}):this.ctx.log.error("connection error",{error:i})},"error")}})}static{o(this,"Client")}status=0;ctx;_graphqlWsClient;_sessionUpdateInterval;subscribe(t,{subscription:r,variables:n,onData:i,onError:s,onComplete:a=qn,retry:l}){let c=l?.maxAttempts??pr,u=0,f,d=n,m=t,p={query:r,variables:re(d)},b=o(()=>this._graphqlWsClient.on("connected",()=>{this.status===2&&(p.variables=re(d),m.log.info("re-subscribing to graphql subscription")),this._sessionUpdateInterval&&clearInterval(this._sessionUpdateInterval),this._sessionUpdateInterval=setInterval(()=>{dt(this.ctx).catch(S=>this.ctx.abort(S)).then(S=>{S||this.ctx.abort(new mr(void 0))})},(0,Sn.default)("30m")).unref(),this.ctx.done.finally(()=>{this._sessionUpdateInterval&&clearInterval(this._sessionUpdateInterval)})}),"addConnectedListener"),v=b(),T=new kt({concurrency:1}),k=o((S,C)=>{if(!l||!Hs(S.cause)||u>=c)return!1;f||u++;let K=qs(u);return m.log.warn("subscription error, retrying...",{retryCount:u,maxAttempts:c,delayMs:Math.round(K),error:C}),l.onRetry?.(u,S),f&&clearTimeout(f),f=setTimeout(()=>{f=void 0,Q.resubscribe()},K),!0},"scheduleRetry"),B=o(async S=>{if(S.errors){let C=new te(r,S.errors);if(k(C,S.errors))return;q(),await s(C);return}if(!S.data){q(),await s(new te(r,"Subscription response did not contain data"));return}u>0&&(f&&(clearTimeout(f),f=void 0),m.log.info("subscription recovered",{retriesNeeded:u}),u=0),await i(S.data)},"onResponse"),$=o(async S=>{k(S,S.cause)||(q(),await s(S))},"onError"),I=o(async()=>{f&&(clearTimeout(f),f=void 0),await a()},"onComplete"),N=this._graphqlWsClient.subscribe(p,{next:o(S=>{T.add(()=>B(S)).catch(C=>$(new te(r,C)))},"next"),error:o(S=>{T.add(()=>$(new te(r,S)))},"error"),complete:o(()=>{T.add(()=>I()).catch(S=>$(new te(r,S)))},"complete")}),q=o(()=>{f&&(clearTimeout(f),f=void 0),m.log.trace("unsubscribing from graphql subscription"),v(),T.clear(),N()},"doUnsubscribe"),Q={unsubscribe:o(()=>{f&&(clearTimeout(f),f=void 0),q()},"unsubscribe"),resubscribe:o(S=>{f&&(clearTimeout(f),f=void 0),v(),T.clear(),N(),S!==void 0&&(d=S),p.variables=re(d),m.log.info("re-subscribing to graphql subscription"),v=b(),N=this._graphqlWsClient.subscribe(p,{next:o(C=>{T.add(()=>B(C)).catch(K=>$(new te(r,K)))},"next"),error:o(C=>{T.add(()=>$(new te(r,C)))},"error"),complete:o(()=>{T.add(()=>I()).catch(C=>$(new te(r,C)))},"complete")})},"resubscribe")};return Q}async execute(t,r){let n=this.environment.application.slug;this.environment.type!=="production"&&(n+=`--${this.environment.name}`);try{let i=await pt({context:{ctx:t},method:"POST",url:`https://${n}.${M.domains.app}${this.endpoint}`,headers:{...Pr(t),"x-gadget-environment":this.environment.name},json:{query:r.operation,variables:re(r.variables)},responseType:"json",resolveBodyOnly:!0,throwHttpErrors:!1,...r.http});if(!Pe(i)||!("data"in i)&&!("errors"in i))throw t.log.error("received invalid graphql response",{error:i}),i;return i}catch(i){throw new te(r.operation,i)}}async dispose(){await this._graphqlWsClient.dispose()}};var Ut=class{static{o(this,"Api")}ctx;#e;constructor(t,r){this.ctx=t.child({name:"api"}),this.#e=new gr(this.ctx,r,"/api/graphql")}async query({query:t,variables:r,...n}){let i=/query (\w+)/.exec(t)?.[1];al(i,"query name not found");let s=this.ctx.child({name:"api",fields:{edit:{query:i}},devFields:{edit:{query:i,variables:re(r)}}});s.log.info("executing graphql query");let a=await this.#e.execute(s,{operation:t,variables:r,...n,http:{retry:{methods:["POST"]},...n.http}});if(a.errors)throw new te(t,a.errors);if(!a.data)throw new te(t,"Query response did not contain data");return a.data}async dispose(){await this.#e.dispose()}};h();var eo=ne(`
|
|
25
|
-
query GadgetMetaModels {
|
|
26
|
-
gadgetMeta {
|
|
27
|
-
models {
|
|
28
|
-
apiIdentifier
|
|
29
|
-
namespace
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
`),to=ne(`
|
|
34
|
-
query GadgetMetaGlobalActions {
|
|
35
|
-
gadgetMeta {
|
|
36
|
-
globalActions {
|
|
37
|
-
apiIdentifier
|
|
38
|
-
namespace
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
`);var cl=Object.freeze({Development:"development",Production:"production",Test:"test"}),ll=R.object({id:R.union([R.string(),R.number(),R.bigint()]).transform(e=>BigInt(e)),name:R.string().transform(e=>e.toLowerCase()),type:R.nativeEnum(cl),nodeVersion:R.string().optional()}),ul=R.object({id:R.union([R.string(),R.number(),R.bigint()]).transform(e=>BigInt(e)),slug:R.string(),primaryDomain:R.string(),environments:R.array(ll),team:R.object({id:R.union([R.string(),R.number(),R.bigint()]).transform(e=>BigInt(e)),name:R.string()})}),Bp=R.object({apiIdentifier:R.string(),namespace:R.nullable(R.array(R.string())).optional()}),Mp=R.object({apiIdentifier:R.string(),namespace:R.nullable(R.array(R.string())).optional()}),Dp=o(async e=>{let t=qe(e);if(!t)return[];let r=await pt({context:{ctx:e},url:`https://${M.domains.services}/auth/api/apps`,headers:{...t},responseType:"json",resolveBodyOnly:!0});return R.array(ul).parse(r)},"getApplications"),Up=o(e=>{let t=new Map;for(let r of e){let n=r.team.name,i=t.get(n)??[];i.push(r),t.set(n,i)}return t},"groupByTeam"),Fp=o(async(e,t)=>{if(!qe(e))return[];let n=new Ut(e,t),{gadgetMeta:i}=await n.query({query:eo});return i.models},"getModels"),Gp=o(async(e,t)=>{if(!qe(e))return[];let n=new Ut(e,t),{gadgetMeta:i}=await n.query({query:to});return i.globalActions},"getGlobalActions");h();var vo=se(wo(),1);var xo=o(e=>{let t=vo.default.stringify(e);return t?`?${t}`:""},"serializeObjectToHTTPQuery");h();var P=new In({level:xe.testLike&&M.logLevel<G.PRINT?3:Fe.level}),D={error:P.red,success:P.green,warn:P.yellow,link:P.cyan,highlighted:P.magentaBright,examplesQuestions:P.cyanBright,subdued:P.blackBright,body:P.whiteBright,black:P.black,blackBright:P.blackBright,red:P.red,redBright:P.redBright,green:P.green,greenBright:P.greenBright,yellow:P.yellow,yellowBright:P.yellowBright,blue:P.blue,blueBright:P.blueBright,magenta:P.magenta,magentaBright:P.magentaBright,cyan:P.cyan,cyanBright:P.cyanBright,white:P.white,whiteBright:P.whiteBright,bgBlack:P.bgBlack,bgBlackBright:P.bgBlackBright,bgRed:P.bgRed,bgRedBright:P.bgRedBright,bgGreen:P.bgGreen,bgGreenBright:P.bgGreenBright,bgYellow:P.bgYellow,bgYellowBright:P.bgYellowBright,bgBlue:P.bgBlue,bgBlueBright:P.bgBlueBright,bgMagenta:P.bgMagenta,bgMagentaBright:P.bgMagentaBright,bgCyan:P.bgCyan,bgCyanBright:P.bgCyanBright,bgWhite:P.bgWhite,bgWhiteBright:P.bgWhiteBright,reset:P.reset};var To=o((e,t,r,n,i,s)=>`${xl(i)} ${El(e)} ${Sl(t)}:${Tl(r)}${Co(n,{indent:2,timestamp:i,environment:s})}${ke}`,"formatPretty"),Je="",Ue=" ",ke=`
|
|
43
|
-
`,_l=":",Eo="'",So=o((e,t)=>{let r=e==="error"?D.error:D.subdued,n=[];n.push(ke);for(let i=0;i<t;i++)n.push(Ue);return n.push(r(e)),n.push(r(_l)),n.join("")},"formatKey"),De=o((e,t,r)=>{if(!e)return Je;let n=e.split(ke);if(n.length===0)return Je;let i=[],s=n.shift();bl(!Mn(s),"first line is nil"),i.push(t(s));for(let a of n)if(a){i.push(ke);for(let l=0;l<r;l++)i.push(Ue);i.push(t(a))}return i.join(Je)},"formatValue"),wl=o((e,t)=>{let r="";return t&&(r=xo(t)),`https://${e.application.slug}--${e.name}.${M.domains.app}/edit/logs${r}`},"getEnvironmentLogsUrl"),vl=o(e=>e?`{environment_id="${e.id.toString()}"} | json | level=~"info|warn|error"`:'{environment_id=~".+"} | json | level=~"info|warn|error"',"defaultLogqlQuery"),Co=o((e,t)=>{let{indent:r,environment:n,timestamp:i}=t;if(Object.keys(e).length===0)return Je;let s=[];"trace_id"in e&&(s.push(So("trace_id",r)),s.push(Ue),n&&i&&be.isSupported?s.push(be(D.link(e.trace_id),wl(n,{timeRange:`${i.toISOString()} to now`,logql:`${vl(n)} | trace_id="${e.trace_id}"`}))):s.push(D.link(e.trace_id)));for(let[a,l]of Object.entries(e))if(a!=="trace_id"){if(s.push(So(a,r)),l instanceof Set&&(l=Array.from(l)),Array.isArray(l)){if(l.length===0){s.push(De(" []",D.subdued,r));continue}l=Object.fromEntries(l.entries())}if(l instanceof Map&&(l=Object.fromEntries(l)),Pe(l)){let c=Object.entries(l);if(c.length===0){s.push(De(" {}",D.subdued,r));continue}c.length>10&&M.logLevel>G.TRACE&&!n&&(l=Object.fromEntries([...c.slice(0,10),[Hn.ellipsis,`${c.length-10} more`]])),s.push(Co(l,{indent:r+2,environment:n}));continue}if(s.push(Ue),n)s.push(De(String(l),D.reset,r));else switch(typeof l){case"string":s.push(De(Eo+l.replaceAll(ke,ke+Ue.repeat(r+a.length))+Eo,D.reset,r));break;case"number":s.push(De(String(l),D.yellowBright,r));break;case"bigint":s.push(De(String(l)+"n",D.yellowBright,r));break;case"boolean":s.push(De(String(l),D.green,r));break;default:s.push(De(String(l),D.reset,r));break}}return s.join(Je)},"formatFields"),xl=o(e=>(e?(0,On.default)(e):(0,On.default)()).format("hh:mm:ss"),"formatTimestamp"),El=o(e=>{switch(e){case G.PRINT:return D.bgBlack(D.body.bold(" PRINT "));case G.TRACE:return D.bgBlue(D.body.bold(" TRACE "));case G.DEBUG:return D.bgMagenta(D.body.bold(" DEBUG "));case G.INFO:return D.bgBlue(D.body.bold(" INFO "));case G.WARN:return D.bgYellow(D.body.bold(" WARN "));case G.ERROR:return D.bgRed(D.body.bold(" ERROR "))}},"formatLevel"),Sl=o(e=>D.body(e),"formatName"),Tl=o(e=>{if(e==null)return Je;let t=typeof e=="string"?e:String(e);if(t==="")return Je;let r=t.split(ke);return r.length===1?Ue+D.body(t):ke+r.map(n=>Ue+Ue+n).join(ke)},"formatMessage");var Ln={pretty:To,json:xi};var Fm={"--log-level":{type:o(e=>zn(e,G.INFO),"type"),alias:["-ll"],default:G.INFO},"--my-logs":{type:Boolean}},Ol={trace:G.TRACE,debug:G.DEBUG,info:G.INFO,warn:G.WARN,error:G.ERROR},Gm=o(e=>(t,r,n,i,s)=>{let a={...i};"error"in a&&(a.error=ce(a.error)),"reason"in a&&(a.reason=ce(a.reason));let l=Ln[M.logFormat],c=Ol[t.toLowerCase()];Cl(c,`Unknown level: ${t}`),Ge.writeStdout(l(c,r,n,a,s,e))},"createEnvironmentStructuredLogger"),Oo=o(({name:e,fields:t={},devFields:r={}})=>{let n=o(i=>(s,a,l)=>{let c=i>=M.logLevel,u=i>=G.INFO;if(!c&&!u)return;let f={...re(t),...a};if(xe.developmentOrTestLike&&Object.assign(f,re(r),l),"error"in f&&(f.error=ce(f.error)),"reason"in f&&(f.reason=ce(f.reason)),c){let d=Ln[M.logFormat];Ge.writeStderr(d(i,e,s,f))}u&&wi({level:"log",message:s,data:f})},"createStructuredLog");return{trace:n(G.TRACE),debug:n(G.DEBUG),info:n(G.INFO),warn:n(G.WARN),error:n(G.ERROR)}},"createStructuredLogger");var kn=o(({name:e,fields:t,devFields:r})=>({...Oo({name:e,fields:t,devFields:r}),child:o(({name:n,fields:i,devFields:s})=>kn({name:n||e,fields:o(()=>({...re(t),...re(i)}),"fields"),devFields:{...re(r),...re(s)}}),"child")}),"createLogger");h();var Lo=se(jt(),1);import{setTimeout as Ll}from"node:timers/promises";var Jm=o((e,t)=>Ll((0,Lo.default)(e),void 0,t),"delay"),An=class{static{o(this,"PromiseWrapper")}resolution;rejection;pendingPromise;constructor(t){this.pendingPromise=t,t.then(r=>(this.resolution=r,r)).catch(r=>{this.rejection=r}).finally(()=>{delete this.pendingPromise})}async unwrap(){if(this.pendingPromise)return await this.pendingPromise;if(this.rejection)throw this.rejection;return this.resolution}},yr=class{static{o(this,"PromiseSignal")}[Symbol.toStringTag];resolve;reject;_promise;constructor(){this._promise=new An(new Promise((t,r)=>{this.resolve=t,this.reject=r})),this[Symbol.toStringTag]=String(this._promise.pendingPromise)}then(t,r){return this._promise.unwrap().then(t,r)}catch(t){return this._promise.unwrap().catch(t)}finally(t){return this._promise.unwrap().finally(t)}};var br=class e extends AbortController{static{o(this,"Context")}done=new yr;#e;#i=[];constructor({log:t}){super(),this.#e=t,this.abort=this.abort.bind(this),this.child=this.child.bind(this),this.onAbort=this.onAbort.bind(this),this.signal.addEventListener("abort",async()=>{let r;for(let n of this.#i.reverse())try{await n(this.signal.reason)}catch(i){r??=i,this.log.error("error during abort",{error:r})}r?this.done.reject(r):this.done.resolve()})}get log(){return this.#e}static init(t){return new e({log:kn(t)})}child(t){let r=new e({log:this.log.child(t)});return this.onAbort(()=>{r.abort()}),r}onAbort(t){this.#i.push(t)}};var Rn=o(e=>(kl(e.context?.ctx instanceof br,ne(`
|
|
44
|
-
ctx must be provided to http requests:
|
|
45
|
-
|
|
46
|
-
const response = await http({
|
|
47
|
-
context: { ctx },
|
|
48
|
-
...options,
|
|
49
|
-
});
|
|
50
|
-
`)),e.context.ctx),"getContext"),pt=Gn.extend({agent:{http:new Al({keepAlive:!0}),https:new Rl({keepAlive:!0,minVersion:"TLSv1.1"})},retry:{limit:pr,methods:[...Ws],statusCodes:[...js],errorCodes:[...gn],maxRetryAfter:void 0,calculateDelay:o(({computedValue:e})=>e,"calculateDelay"),backoffLimit:yn,noise:bn},hooks:{beforeRequest:[e=>{let t=Rn(e);e.signal=t.signal,e.headers["user-agent"]=M.versionFull,t.log.debug("http request",{http:{request:{method:e.method,url:e.url?.toString()}}})}],beforeRetry:[(e,t)=>{Rn(e.request?.options??e.options.context).log.warn("http request failed, retrying...",{http:{retryCount:t,error:ce(e),request:e.request&&{method:e.request.options.method,url:e.request.options.url?.toString()},response:e.response&&{statusCode:e.response.statusCode,traceId:e.response.headers["x-trace-id"],durationMs:e.response.timings.phases.total}}})}],afterResponse:[e=>{let t=Rn(e.request.options);if(t.log.debug("http response",{http:{request:{method:e.request.options.method,url:e.request.options.url?.toString()},response:{statusCode:e.statusCode,traceId:e.headers["x-trace-id"],durationMs:e.timings.phases.total}}}),e.statusCode===401&&Ze(t,void 0),e.headers["set-cookie"]){let r=e.headers["set-cookie"];(Array.isArray(r)?r:[r]).forEach(i=>{let s=St(i);s.name==="session"&&(s.domain==="gadget.dev"||s.domain==="ggt.dev")&&Ze(t,s.value)})}return e}]}});h();import Gt from"node:process";var ko=o(async e=>{let t;if(typeof e=="string"?t={content:e}:t=e,t=_r(t,{ensureEmptyLineAbove:!0,ensureNewLine:!0,exitWhenNo:!0}),!Ge.isInteractive){let r=t.whenNotInteractive??(()=>{de(t),de({ensureEmptyLineAbove:!0,content:"Aborting because ggt is not running in an interactive terminal."}),Gt.exit(1)});return Promise.resolve(r()).then(()=>!1)}return new Promise(r=>{let n=new Pn(t);n.on("submit",i=>r(!!i)),n.on("exit",()=>Gt.exit(0)),n.on("abort",()=>Gt.exit(1))})},"confirm"),Pn=class extends Qn{static{o(this,"Confirm")}value=void 0;defaultValue=!1;options;constructor(t){super(),this.options=_r(t,{exitWhenNo:!0,ensureEmptyLineAbove:!0}),this.render()}reset(){this.value=this.defaultValue,this.fire(),this.render()}exit(){this.abort()}abort(){this.value=!1,this.done=this.aborted=!0,this.fire(),this.render(!1),this.close(),this.options.exitWhenNo&&Gt.exit(0)}submit(){this.value=this.value??!1,this.done=!0,this.aborted=!1,this.fire(),this.render(),this.close(),this.options.exitWhenNo&&!this.value&&Gt.exit(0)}_(t,r){if(t.toLowerCase()==="y"){this.value=!0,this.submit();return}if(t.toLowerCase()==="n"){this.value=!1,this.submit();return}this.bell()}render(t=this.value){if(super.render(),this.done){Ge.persistPrompt(We({...this.options,content:`${this.options.content} ${t?Fe.bold.greenBright("Yes."):Fe.bold.redBright("No.")}`}));return}Ge.updatePrompt(We({...this.options,content:`${this.options.content} ${this.defaultValue?Fe.blueBright("[Y/n] "):Fe.blueBright("[y/N] ")}`}))}};var $l=R.object({id:R.union([R.string(),R.number()]).transform(Number),name:R.string().nullish(),email:R.string()}),dt=o(async e=>{let t=qe(e);if(t)try{let r=await pt({context:{ctx:e},url:`https://${M.domains.services}/auth/api/current-user`,headers:t,responseType:"json",resolveBodyOnly:!0}),n=$l.parse(r);return e.log.info("loaded user",{user:{id:n.id}},{user:n}),vi(n),n}catch(r){pi(e,r);return}},"getUser"),Ug=o(async(e,t)=>{let r=await dt(e);return r||(e.log.info("prompting user to log in"),de({ensureEmptyLineAbove:!0,content:`You must be logged in to use "ggt ${t}".`}),await ko({ensureEmptyLineAbove:!0,content:"Would you like to log in?"}),await Ao(e,{_:[]}),r=await dt(e),Pl(r,"missing user after successful login"),r)},"getUserOrLogin");var Xg=o(()=>ne`
|
|
51
|
-
Log in to your account.
|
|
52
|
-
|
|
53
|
-
{bold Usage}
|
|
54
|
-
ggt login
|
|
55
|
-
`,"usage"),Nl=o(async e=>{let t;try{let r=await vr(),n=new Promise((s,a)=>{t=Il.createServer(async(l,c)=>{let u=new URL(`https://${M.domains.services}/auth/cli`);try{$n(l.url,"missing url");let f=new URL(l.url,`http://localhost:${r}`).searchParams.get("session");$n(f,"missing session"),Ze(e,f);let d=await dt(e);$n(d,"missing user after successful login"),d.name?de({ensureEmptyLineAbove:!0,content:ne`Hello, ${d.name} {gray (${d.email})}`}):de({ensureEmptyLineAbove:!0,content:`Hello, ${d.email}`}),u.searchParams.set("success","true"),s()}catch(f){Ze(e,void 0),u.searchParams.set("success","false"),a(f)}finally{c.writeHead(303,{Location:u.toString()}),c.end()}}),e.log.info("starting login server",{port:r}),t.listen(r)}),i=new URL(`https://${M.domains.services}/auth/login`);i.searchParams.set("returnTo",`https://${M.domains.services}/auth/cli/callback?port=${r}`);try{e.log.info("opening browser",{url:i.toString()}),await di(i.toString()),de({ensureEmptyLineAbove:!0,content:ne`
|
|
56
|
-
We've opened Gadget's login page using your default browser.
|
|
57
|
-
|
|
58
|
-
Please log in and then return to this terminal.
|
|
59
|
-
`})}catch(s){e.log.error("failed to open browser",{error:s}),de({ensureEmptyLineAbove:!0,content:ne`
|
|
60
|
-
Please open the following URL in your browser and log in:
|
|
61
|
-
|
|
62
|
-
{gray ${i.toString()}}
|
|
63
|
-
|
|
64
|
-
Once logged in, return to this terminal.
|
|
65
|
-
`})}await n}finally{t?.close()}},"run"),Ao=Nl;export{be as a,yf as b,tl as c,Nd as d,Me as e,Ke as f,vn as g,Ys as h,Ti as i,Vs as j,zd as k,Xs as l,Hd as m,te as n,mr as o,kt as p,Pr as q,Us as r,Qc as s,di as t,Xg as u,Nl as v,Ao as w,ko as x,dt as y,Ug as z,gn as A,gr as B,cl as C,Dp as D,Up as E,Fp as F,Gp as G,D as H,Fm as I,Gm as J,Jm as K,br as L,pt as M};
|
|
66
|
-
//# sourceMappingURL=chunk-442CSROP.js.map
|