@gadgetinc/ggt 1.0.6 → 1.1.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/dist/add-RDTHYTCK.js +78 -0
- package/dist/add-RDTHYTCK.js.map +7 -0
- package/dist/chunk-3Q3GPB6Z.js +2 -0
- package/dist/chunk-3Q3GPB6Z.js.map +7 -0
- package/dist/chunk-457GEPUN.js +9 -0
- package/dist/chunk-457GEPUN.js.map +7 -0
- package/dist/{chunk-ERYUXLYS.js → chunk-5ONACLO6.js} +8 -8
- package/dist/{chunk-ERYUXLYS.js.map → chunk-5ONACLO6.js.map} +3 -3
- package/dist/chunk-CQLM5U6T.js +67 -0
- package/dist/chunk-CQLM5U6T.js.map +7 -0
- package/dist/chunk-FLXIAZND.js +12 -0
- package/dist/chunk-FLXIAZND.js.map +7 -0
- package/dist/chunk-JKDJXJKF.js +8 -0
- package/dist/{chunk-APHXRHNI.js.map → chunk-JKDJXJKF.js.map} +3 -3
- package/dist/chunk-LWW4E6P5.js +173 -0
- package/dist/chunk-LWW4E6P5.js.map +7 -0
- package/dist/chunk-M2OJZLL7.js +18 -0
- package/dist/chunk-M2OJZLL7.js.map +7 -0
- package/dist/{chunk-Q5N5L6H3.js → chunk-M4PNFOA5.js} +2 -2
- package/dist/chunk-M4PNFOA5.js.map +7 -0
- package/dist/chunk-NGTOMLDS.js +33 -0
- package/dist/{chunk-BOQUW6DS.js.map → chunk-NGTOMLDS.js.map} +3 -3
- package/dist/chunk-RYQWS5BH.js +117 -0
- package/dist/chunk-RYQWS5BH.js.map +7 -0
- package/dist/{chunk-GACF5GYF.js → chunk-TRHAPK2F.js} +4 -6
- package/dist/{chunk-GACF5GYF.js.map → chunk-TRHAPK2F.js.map} +2 -2
- package/dist/chunk-VICN6LTV.js +12 -0
- package/dist/chunk-VICN6LTV.js.map +7 -0
- package/dist/context-GN36UFJL.js +2 -0
- package/dist/deploy-BAMMI3ZA.js +24 -0
- package/dist/deploy-BAMMI3ZA.js.map +7 -0
- package/dist/{dev-VHJ52BEA.js → dev-5UFCKF4X.js} +9 -11
- package/dist/{dev-VHJ52BEA.js.map → dev-5UFCKF4X.js.map} +3 -3
- package/dist/esm-GJ7RK6IC.js +34 -0
- package/dist/esm-GJ7RK6IC.js.map +7 -0
- package/dist/list-WGRXHV2B.js +11 -0
- package/dist/list-WGRXHV2B.js.map +7 -0
- package/dist/login-5YZOB4XB.js +2 -0
- package/dist/logout-YXDH5ZZI.js +7 -0
- package/dist/{logout-HX6MM4S6.js.map → logout-YXDH5ZZI.js.map} +3 -3
- package/dist/main.js +6 -8
- package/dist/main.js.map +3 -3
- package/dist/{open-GEEWPSF4.js → open-EOH3Q5KP.js} +3 -3
- package/dist/{open-GEEWPSF4.js.map → open-EOH3Q5KP.js.map} +2 -2
- package/dist/{pull-T2Q4M4UN.js → pull-UAKKKJJP.js} +3 -5
- package/dist/{pull-T2Q4M4UN.js.map → pull-UAKKKJJP.js.map} +2 -2
- package/dist/push-7X4P2364.js +2 -0
- package/dist/push-7X4P2364.js.map +7 -0
- package/dist/status-UJUGP24U.js +14 -0
- package/dist/{status-5VZH3KXH.js.map → status-UJUGP24U.js.map} +1 -1
- package/dist/user-B2RIDVTH.js +2 -0
- package/dist/user-B2RIDVTH.js.map +7 -0
- package/dist/{version-OF4TQ2K6.js → version-VE55GG37.js} +2 -2
- package/dist/whoami-OAH55L4M.js +7 -0
- package/dist/{whoami-V3XD27QH.js.map → whoami-OAH55L4M.js.map} +2 -2
- package/package.json +20 -20
- package/dist/add-JIIVAOWH.js +0 -84
- package/dist/add-JIIVAOWH.js.map +0 -7
- package/dist/chunk-APHXRHNI.js +0 -8
- package/dist/chunk-AQRCAWW4.js +0 -24
- package/dist/chunk-AQRCAWW4.js.map +0 -7
- package/dist/chunk-BOQUW6DS.js +0 -33
- package/dist/chunk-CKSTMUDN.js +0 -17
- package/dist/chunk-CKSTMUDN.js.map +0 -7
- package/dist/chunk-GBCD37US.js +0 -57
- package/dist/chunk-GBCD37US.js.map +0 -7
- package/dist/chunk-P2XPMNL6.js +0 -183
- package/dist/chunk-P2XPMNL6.js.map +0 -7
- package/dist/chunk-PSRZ5JH5.js +0 -27
- package/dist/chunk-PSRZ5JH5.js.map +0 -7
- package/dist/chunk-Q5N5L6H3.js.map +0 -7
- package/dist/chunk-RJOIQTYZ.js +0 -126
- package/dist/chunk-RJOIQTYZ.js.map +0 -7
- package/dist/chunk-XCHCCJJZ.js +0 -2
- package/dist/chunk-XCHCCJJZ.js.map +0 -7
- package/dist/deploy-KMGAGIDE.js +0 -30
- package/dist/deploy-KMGAGIDE.js.map +0 -7
- package/dist/esm-BL3OM5UJ.js +0 -33
- package/dist/esm-BL3OM5UJ.js.map +0 -7
- package/dist/list-5E3R22IC.js +0 -11
- package/dist/list-5E3R22IC.js.map +0 -7
- package/dist/login-3DL45WY7.js +0 -2
- package/dist/logout-HX6MM4S6.js +0 -7
- package/dist/push-LUW25FYF.js +0 -2
- package/dist/status-5VZH3KXH.js +0 -14
- package/dist/whoami-V3XD27QH.js +0 -7
- /package/dist/{login-3DL45WY7.js.map → context-GN36UFJL.js.map} +0 -0
- /package/dist/{push-LUW25FYF.js.map → login-5YZOB4XB.js.map} +0 -0
- /package/dist/{version-OF4TQ2K6.js.map → version-VE55GG37.js.map} +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import{d as F,e as C,f as B,g as U,h as S,m as P}from"./chunk-LWW4E6P5.js";import{g as $,l as L,m as M,n as k,o as N}from"./chunk-RYQWS5BH.js";import"./chunk-5ONACLO6.js";import{b as y,h as O,i as j}from"./chunk-NGTOMLDS.js";import"./chunk-JKDJXJKF.js";import{b as E}from"./chunk-D2K5XPNJ.js";import"./chunk-M4PNFOA5.js";import"./chunk-3Q3GPB6Z.js";import"./chunk-M2OJZLL7.js";import"./chunk-457GEPUN.js";import"./chunk-FLXIAZND.js";import{d as f,e as A,g as p,k as b,l as v}from"./chunk-VICN6LTV.js";import{$ as g,Z as s,b as c,m as _}from"./chunk-CQLM5U6T.js";import"./chunk-F3EZ4KS3.js";import"./chunk-GOBNB5VT.js";import{g as T}from"./chunk-5WC5D4WL.js";T();var h=class extends v{isBug=b.NO;constructor(n){let a="";if(_(n.cause)){let e=E(n.cause.map(o=>o.message));a=s` • ${e.map(o=>o.split(`
|
|
2
|
+
`).join(`
|
|
3
|
+
\u200E \u2022 `)).join(`
|
|
4
|
+
`)}`}else a=s`${n.cause}`;super(a)}render(){return`${c.redBright(f.cross)} Failed to add:
|
|
5
|
+
`+this.message}},le={...M},R=()=>s`
|
|
6
|
+
Adds models, fields, actions and routes to your app.
|
|
7
|
+
|
|
8
|
+
This command first performs a sync to ensure that your local and environment directories match, changes are tracked since last sync.
|
|
9
|
+
If any conflicts are detected, they must be resolved before adding models, fields, actions or routes.
|
|
10
|
+
|
|
11
|
+
{gray Usage}
|
|
12
|
+
ggt add model <model_name> [field_name:field_type ...]
|
|
13
|
+
|
|
14
|
+
ggt add action [CONTEXT]/<action_name>
|
|
15
|
+
CONTEXT:Specifies the kind of action. Use "model" for model actions otherwise use "action".
|
|
16
|
+
|
|
17
|
+
ggt add route <HTTP_METHOD> <route_path>
|
|
18
|
+
|
|
19
|
+
ggt add field <model_path>/<field_name>:<field_type>
|
|
20
|
+
|
|
21
|
+
{gray Options}
|
|
22
|
+
-e, --env <env_name> Selects the environment to add to. Default set on ".gadget/sync.json"
|
|
23
|
+
|
|
24
|
+
{gray Examples}
|
|
25
|
+
Add a new model 'post' with out fields:
|
|
26
|
+
{cyanBright $ ggt add model modelA}
|
|
27
|
+
|
|
28
|
+
Add a new model 'post' with 2 new 'string' type fields 'title' and 'body':
|
|
29
|
+
{cyanBright $ ggt add model post title:string body:string}
|
|
30
|
+
|
|
31
|
+
Add new action 'publish' to the 'post' model:
|
|
32
|
+
{cyanBright ggt add action model/post/publish}
|
|
33
|
+
|
|
34
|
+
Add a new action 'audit'
|
|
35
|
+
{cyanBright ggt add action action/audit}
|
|
36
|
+
|
|
37
|
+
Add a new route 'howdy'
|
|
38
|
+
{cyanBright ggt add route GET howdy}
|
|
39
|
+
|
|
40
|
+
Add a new 'boolean' type field 'published' to an existing model
|
|
41
|
+
{cyanBright ggt add field post/published:boolean}
|
|
42
|
+
`,ce=async t=>{let n=await N(process.cwd()),a=await k.load(t,{directory:n});if(!a)throw new $(t,{directory:n});let e=new P(a),o=await e.hashes(t,!0);switch(o.inSync||await e.merge(t,{hashes:o,printEnvironmentChangesOptions:{limit:5},printLocalChangesOptions:{limit:5},quietly:!0}),g({ensureEmptyLineAbove:!0,content:`${c.greenBright(f.tick)} Sync completed ${S()}`}),t.args._[0]){case"model":await V(t,e);break;case"action":await G(t,e);break;case"route":await H(t,e);break;case"field":await X(t,e);break;default:g(R(t));return}},J=t=>{let n=[],a=[];return t.forEach(e=>{let o=/^(.*):+(.*)$/.exec(e);!o||o.length!==3||!o[1]||!o[2]?n.push(s`${e} is not a valid field definition`):a.push({name:o[1].replace(/:+/g,""),fieldType:o[2]})}),[a,n]},V=async(t,n)=>{let a=n.syncJson,e=t.args._[1];if(!e)throw new p(s`Failed to add model, missing model path
|
|
43
|
+
|
|
44
|
+
{gray Usage}
|
|
45
|
+
{cyanBright ggt add model <model_name> [field_name:field_type ...]}`);let o=[];if(t.args._.length>2){let[l,m]=J(t.args._.slice(2));if(m.length>0)throw new p(s`
|
|
46
|
+
Failed to add model:
|
|
47
|
+
• ${m.join(`
|
|
48
|
+
\u2022 `)}
|
|
49
|
+
|
|
50
|
+
{gray Usage}
|
|
51
|
+
{cyanBright ggt add model ${e} [field_name:field_type ...]}`);o.push(...l)}let i;try{i=(await a.edit.mutate({mutation:F,variables:{path:e,fields:o.map(l=>({name:l.name,fieldType:l.fieldType}))}})).createModel}catch(l){throw l instanceof y?new h(l):l}g({ensureEmptyLineAbove:!0,content:c.gray("New model created in environment.")}),await n.writeToLocalFilesystem(t,{filesVersion:i.remoteFilesVersion,files:i.changed,delete:[]});let r=A.isSupported?A(e,`https://${a.app.primaryDomain}/edit/${a.env.name}/model/${e}/schema`):e;g({ensureEmptyLineAbove:!0,content:`${c.greenBright(f.tick)} Model ${c.cyanBright(r)} added successfully.`})},G=async(t,n)=>{let a=n.syncJson,e=t.args._[1];if(!e)throw new p(s`Failed to add action, missing action path
|
|
52
|
+
|
|
53
|
+
{gray Usage}
|
|
54
|
+
{cyanBright ggt add action [CONTEXT]/<action_name>
|
|
55
|
+
CONTEXT:Specifies the kind of action. Use "model" for model actions otherwise use "action".}`);let o=await O(t),i=await j(t),r=e.split("/"),l,m=r.length>1?r.slice(0,r.length-1):r,u=r[r.length-1],D=o.find(d=>{let w=m[m.length-1];return d.apiIdentifier.toUpperCase()===w?.toUpperCase()&&d.namespace?.join("/")===m.slice(0,m.length-1).join("/")}),I=i.find(d=>d.namespace?.join("/")===m.join("/"));if(D&&I){let d=m.join("/");l=await L({choices:["models","actions"],content:s`
|
|
56
|
+
{bold Namespace Conflict:} The action '${u}.js' cannot be automatically added due to a namespace conflict.
|
|
57
|
+
|
|
58
|
+
How would you like to proceed?:
|
|
59
|
+
`,formatChoice:w=>{switch(w){case"models":return`As a Model action in ${c.gray(`models/${d}/${u}.js`)}`;case"actions":return`As an Action in ${c.gray(`actions/${d}/${u}.js`)}`}}}),g({ensureEmptyLineAbove:!0,content:s`${c.yellowBright(f.info)} You can override the context of the action by specifying the context in the path. For example: {gray ggt add action ${l}/${e}}`})}try{let d=(await a.edit.mutate({mutation:C,variables:{path:l?`${l}/`+e:e}})).createAction;await n.writeToLocalFilesystem(t,{filesVersion:d.remoteFilesVersion,files:d.changed,delete:[]})}catch(d){throw d instanceof y?new h(d):d}g({ensureEmptyLineAbove:!0,content:`Action ${c.cyanBright(e)} added successfully.`})},H=async(t,n)=>{let a=n.syncJson,e=t.args._[1],o=t.args._[2];if(!e)throw new p(s`Failed to add route, missing route method
|
|
60
|
+
|
|
61
|
+
{gray Usage}
|
|
62
|
+
{cyanBright ggt add route <HTTP_METHOD> <route_path>}`);if(!o)throw new p(s`Failed to add route, missing route path
|
|
63
|
+
|
|
64
|
+
{gray Usage}
|
|
65
|
+
{cyanBright ggt add route ${e} <route_path>}`);try{let i=(await a.edit.mutate({mutation:B,variables:{method:e,path:o}})).createRoute;await n.writeToLocalFilesystem(t,{filesVersion:i.remoteFilesVersion,files:i.changed,delete:[]})}catch(i){throw i instanceof y?new h(i):i}g({ensureEmptyLineAbove:!0,content:`Route ${c.cyanBright(o)} added successfully.`})},X=async(t,n)=>{let a=n.syncJson,e=t.args._[1]?.split("/");if(!e)throw new p(s`Failed to add field, invalid field path definition
|
|
66
|
+
|
|
67
|
+
{gray Usage}
|
|
68
|
+
{cyanBright ggt add field <model_path>/<field_name>:<field_type>}`);let o=[];if(e[1]){let[i,r]=J([e[1]]);if(r.length>0)throw new p(s`
|
|
69
|
+
Failed to add field:
|
|
70
|
+
• ${r.join(`
|
|
71
|
+
\u2022`)}
|
|
72
|
+
|
|
73
|
+
{gray Usage}
|
|
74
|
+
{cyanBright ggt add field ${e[0]}/<field_name>:<field_type>}`);o.push(...i)}else throw new p(s`Failed to add field, invalid field definition
|
|
75
|
+
|
|
76
|
+
{gray Usage}
|
|
77
|
+
{cyanBright ggt add field ${e[0]}/<field_name>:<field_type>}`);try{let i=(await a.edit.mutate({mutation:U,variables:{path:e[0],fields:o.map(r=>({name:r.name,fieldType:r.fieldType}))}})).createModelFields;await n.writeToLocalFilesystem(t,{filesVersion:i.remoteFilesVersion,files:i.changed,delete:[]})}catch(i){throw i instanceof y?new h(i):i}g({ensureEmptyLineAbove:!0,content:`Field ${c.cyanBright(o[0]?.name)} added successfully.`})};export{h as AddClientError,le as args,ce as run,R as usage};
|
|
78
|
+
//# sourceMappingURL=add-RDTHYTCK.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/commands/add.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-case-declarations */\nimport chalk from \"chalk\";\nimport terminalLink from \"terminal-link\";\nimport { getGlobalActions, getModels } from \"../services/app/app.js\";\nimport {\n CREATE_ACTION_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 } from \"../services/command/arg.js\";\nimport type { Run, Usage } from \"../services/command/command.js\";\nimport type { Context } from \"../services/command/context.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\";\nimport type { DevArgs } from \"./dev.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;\n\nexport const args = {\n ...SyncJsonArgs,\n};\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 -e, --env <env_name> Selects the environment to add to. Default set on \".gadget/sync.json\"\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 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 Add a new 'boolean' type field 'published' to an existing model\n {cyanBright ggt add field post/published:boolean}\n `;\n};\n\nexport const run: Run<AddArgs> = async (ctx) => {\n const directory = await loadSyncJsonDirectory(process.cwd());\n const syncJson = await SyncJson.load(ctx, { directory });\n if (!syncJson) {\n throw new UnknownDirectoryError(ctx, { directory });\n }\n\n const filesync = new FileSync(syncJson);\n const hashes = await filesync.hashes(ctx, true);\n\n if (!hashes.inSync) {\n await filesync.merge(ctx as unknown as Context<DevArgs>, {\n hashes,\n printEnvironmentChangesOptions: {\n limit: 5,\n },\n printLocalChangesOptions: {\n limit: 5,\n },\n quietly: true,\n });\n }\n\n println({ ensureEmptyLineAbove: true, content: `${chalk.greenBright(symbol.tick)} Sync completed ${ts()}` });\n\n switch (ctx.args._[0]) {\n case \"model\":\n await modelSubCommand(ctx, filesync);\n break;\n case \"action\":\n await actionSubCommand(ctx, filesync);\n break;\n case \"route\":\n await routeSubCommand(ctx, filesync);\n break;\n case \"field\":\n await fieldSubCommand(ctx, 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<AddArgs>, filesync: FileSync): Promise<void> => {\n const syncJson = filesync.syncJson;\n const modelApiIdentifier = ctx.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 (ctx.args._.length > 2) {\n const [modelFields, problems] = parseFieldValues(ctx.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) => ({\n name: fields.name,\n fieldType: fields.fieldType,\n })),\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, {\n filesVersion: result.remoteFilesVersion,\n files: result.changed,\n delete: [],\n });\n\n const modelPrintout = terminalLink.isSupported\n ? terminalLink(modelApiIdentifier, `https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}/model/${modelApiIdentifier}/schema`)\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<AddArgs>, filesync: FileSync): Promise<void> => {\n const syncJson = filesync.syncJson;\n const path = ctx.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);\n const globalActions = await getGlobalActions(ctx);\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, {\n filesVersion: result.remoteFilesVersion,\n files: result.changed,\n delete: [],\n });\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({\n ensureEmptyLineAbove: true,\n content: `Action ${chalk.cyanBright(path)} added successfully.`,\n });\n};\n\nconst routeSubCommand = async (ctx: Context<AddArgs>, filesync: FileSync): Promise<void> => {\n const syncJson = filesync.syncJson;\n const routeMethod = ctx.args._[1];\n const routePath = ctx.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 = (\n await syncJson.edit.mutate({\n mutation: CREATE_ROUTE_MUTATION,\n variables: { method: routeMethod, path: routePath },\n })\n ).createRoute;\n\n await filesync.writeToLocalFilesystem(ctx, {\n filesVersion: result.remoteFilesVersion,\n files: result.changed,\n delete: [],\n });\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({\n ensureEmptyLineAbove: true,\n content: `Route ${chalk.cyanBright(routePath)} added successfully.`,\n });\n};\n\nconst fieldSubCommand = async (ctx: Context<AddArgs>, filesync: FileSync): Promise<void> => {\n const syncJson = filesync.syncJson;\n\n const splitPathAndField = ctx.args._[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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n path: splitPathAndField[0]!,\n fields: modelFieldsList.map((field) => ({\n name: field.name,\n fieldType: field.fieldType,\n })),\n },\n })\n ).createModelFields;\n\n await filesync.writeToLocalFilesystem(ctx, {\n filesVersion: result.remoteFilesVersion,\n files: result.changed,\n delete: [],\n });\n } catch (error) {\n if (error instanceof ClientError) {\n throw new AddClientError(error);\n } else {\n throw error;\n }\n }\n\n println({\n ensureEmptyLineAbove: true,\n content: `Field ${chalk.cyanBright(modelFieldsList[0]?.name)} added successfully.`,\n });\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["init_cjs", "AddClientError", "GGTError", "IsBug", "error", "template", "isGraphQLErrors", "errors", "uniq", "x", "sprint", "e", "source_default", "symbol", "args", "SyncJsonArgs", "usage", "run", "ctx", "directory", "loadSyncJsonDirectory", "syncJson", "SyncJson", "UnknownDirectoryError", "filesync", "FileSync", "hashes", "println", "ts", "modelSubCommand", "actionSubCommand", "routeSubCommand", "fieldSubCommand", "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"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{g as e}from"./chunk-5WC5D4WL.js";e();import o from"node:assert";var r=Symbol.for("app"),p=Symbol.for("env"),i=t=>t.get(r),x=t=>{let n=i(t);return o(n,"missing app in context"),n},a=(t,n)=>{t.set(r,n)},s=t=>t.get(p),u=t=>{let n=s(t);return o(n,"missing env in context"),n},v=(t,n)=>{t.set(p,n)};export{i as a,x as b,a as c,s as d,u as e,v as f};
|
|
2
|
+
//# sourceMappingURL=chunk-3Q3GPB6Z.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/services/app/context.ts"],
|
|
4
|
+
"sourcesContent": ["import assert from \"node:assert\";\nimport { type Context } from \"../command/context.js\";\nimport type { Application, Environment } from \"./app.js\";\n\nconst kApp = Symbol.for(\"app\");\nconst kEnv = Symbol.for(\"env\");\n\nexport const maybeGetCurrentApp = (ctx: Context): Application | undefined => {\n return ctx.get(kApp) as Application | undefined;\n};\n\nexport const getCurrentApp = (ctx: Context): Application => {\n const app = maybeGetCurrentApp(ctx);\n assert(app, \"missing app in context\");\n return app;\n};\n\nexport const setCurrentApp = (ctx: Context, app: Application): void => {\n ctx.set(kApp, app);\n};\n\nexport const maybeGetCurrentEnv = (ctx: Context): Environment | undefined => {\n return ctx.get(kEnv) as Environment | undefined;\n};\n\nexport const getCurrentEnv = (ctx: Context): Environment => {\n const env = maybeGetCurrentEnv(ctx);\n assert(env, \"missing env in context\");\n return env;\n};\n\nexport const setCurrentEnv = (ctx: Context, env: Environment): void => {\n ctx.set(kEnv, env);\n};\n"],
|
|
5
|
+
"mappings": "wCAAAA,IAAA,OAAOC,MAAY,cAInB,IAAMC,EAAO,OAAO,IAAI,KAAK,EACvBC,EAAO,OAAO,IAAI,KAAK,EAEhBC,EAAsBC,GAC1BA,EAAI,IAAIH,CAAI,EAGRI,EAAiBD,GAA8B,CAC1D,IAAME,EAAMH,EAAmBC,CAAG,EAClC,OAAAG,EAAOD,EAAK,wBAAwB,EAC7BA,CACT,EAEaE,EAAgB,CAACJ,EAAcE,IAA2B,CACrEF,EAAI,IAAIH,EAAMK,CAAG,CACnB,EAEaG,EAAsBL,GAC1BA,EAAI,IAAIF,CAAI,EAGRQ,EAAiBN,GAA8B,CAC1D,IAAMO,EAAMF,EAAmBL,CAAG,EAClC,OAAAG,EAAOI,EAAK,wBAAwB,EAC7BA,CACT,EAEaC,EAAgB,CAACR,EAAcO,IAA2B,CACrEP,EAAI,IAAIF,EAAMS,CAAG,CACnB",
|
|
6
|
+
"names": ["init_cjs", "assert", "kApp", "kEnv", "maybeGetCurrentApp", "ctx", "getCurrentApp", "app", "assert", "setCurrentApp", "maybeGetCurrentEnv", "getCurrentEnv", "env", "setCurrentEnv"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{d as u,e as c,f as g}from"./chunk-FLXIAZND.js";import{a as h,h as d}from"./chunk-VICN6LTV.js";import{H as s,S as a,T as i,Y as m,Z as p}from"./chunk-CQLM5U6T.js";import{e as C,g as o}from"./chunk-5WC5D4WL.js";o();import A from"node:assert";var l=t=>t.url instanceof URL&&t.url.host===s.domains.services,E=t=>{let e=u(t);return e&&`session=${encodeURIComponent(e)};`},P=t=>{let e=b(t);return A(e,"missing auth headers"),e},b=t=>{let e=E(t);if(e)return t.log.trace("using cookie as auth header",{},{cookie:e}),{cookie:e};let r=g(t);if(r)return t.log.trace("using token as auth header",{},{token:r}),{"x-platform-access-token":r}},w=t=>t instanceof a&&t.response.statusCode===401,S=(t,e)=>{if(w(e)){t.log.warn("swallowing unauthorized error",{error:e});return}throw e};o();var f=C(h(),1);import y from"node:assert";import{Agent as k}from"node:http";import{Agent as R}from"node:https";var n=t=>(y(t.context?.ctx instanceof d,p(`
|
|
2
|
+
ctx must be provided to http requests:
|
|
3
|
+
|
|
4
|
+
const response = await http({
|
|
5
|
+
context: { ctx },
|
|
6
|
+
...options,
|
|
7
|
+
});
|
|
8
|
+
`)),t.context.ctx),J=i.extend({agent:{http:new k({keepAlive:!0}),https:new R({keepAlive:!0})},retry:{limit:10,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN","EADDRNOTAVAIL","EHOSTUNREACH"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t,backoffLimit:(0,f.default)("5s"),noise:100},hooks:{beforeRequest:[t=>{let e=n(t);t.signal=e.signal,t.headers["user-agent"]=s.versionFull,e.log.debug("http request",{http:{request:{method:t.method,url:t.url?.toString()}}})}],beforeRetry:[(t,e)=>{n(t.request?.options??t.options.context).log.warn("http request failed, retrying...",{http:{retryCount:e,error:m(t),request:t.request&&{method:t.request.options.method,url:t.request.options.url?.toString()},response:t.response&&{statusCode:t.response.statusCode,traceId:t.response.headers["x-trace-id"],durationMs:t.response.timings.phases.total}}})}],afterResponse:[t=>{let e=n(t.request.options);return e.log.debug("http response",{http:{request:{method:t.request.options.method,url:t.request.options.url?.toString()},response:{statusCode:t.statusCode,traceId:t.headers["x-trace-id"],durationMs:t.timings.phases.total}}}),t.statusCode===401&&l(t.request.options)&&c(e,void 0),t}]}});o();import O from"node:assert";var q=["dev","deploy","status","push","pull","add","open","list","login","logout","whoami","version"],T=t=>q.includes(t),X=async t=>{O(T(t),`invalid command: ${t}`);let e;switch(t){case"dev":e=await import("./dev-5UFCKF4X.js");break;case"deploy":e=await import("./deploy-BAMMI3ZA.js");break;case"status":e=await import("./status-UJUGP24U.js");break;case"push":e=await import("./push-7X4P2364.js");break;case"pull":e=await import("./pull-UAKKKJJP.js");break;case"add":e=await import("./add-RDTHYTCK.js");break;case"open":e=await import("./open-EOH3Q5KP.js");break;case"list":e=await import("./list-WGRXHV2B.js");break;case"login":e=await import("./login-5YZOB4XB.js");break;case"logout":e=await import("./logout-YXDH5ZZI.js");break;case"whoami":e=await import("./whoami-OAH55L4M.js");break;case"version":e=await import("./version-VE55GG37.js");break}return e},x=Symbol.for("command"),Y=t=>t.get(x),Z=(t,e)=>{t.set(x,e)};export{P as a,b,S as c,J as d,q as e,T as f,X as g,Y as h,Z as i};
|
|
9
|
+
//# sourceMappingURL=chunk-457GEPUN.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/services/http/auth.ts", "../src/services/http/http.ts", "../src/services/command/command.ts"],
|
|
4
|
+
"sourcesContent": ["import { HTTPError, type OptionsInit } from \"got\";\nimport assert from \"node:assert\";\nimport type { Context } from \"../command/context.js\";\nimport { config } from \"../config/config.js\";\nimport { readSession, readToken } from \"../user/session.js\";\n\n/**\n * Determines whether the given request options are for a Gadget\n * Services request.\n *\n * @param options - The request options to check.\n * @returns True if the request options are for a Gadget Services\n * request, false otherwise.\n */\nexport const isGadgetServicesRequest = (options: OptionsInit): boolean => {\n return options.url instanceof URL && options.url.host === config.domains.services;\n};\n\n/**\n * Loads the cookie from the session.\n *\n * @returns The cookie string or undefined if there is no session.\n */\nexport const loadCookie = (ctx: Context): string | undefined => {\n const token = readSession(ctx);\n return token && `session=${encodeURIComponent(token)};`;\n};\n\nexport const loadAuthHeaders = (ctx: Context): Record<string, string> => {\n const headers = maybeLoadAuthHeaders(ctx);\n assert(headers, \"missing auth headers\");\n return headers;\n};\n\n/**\n * Loads the authentication headers.\n *\n * @returns The authentication headers as a record of key-value pairs, or undefined if no headers are available.\n */\nexport const maybeLoadAuthHeaders = (ctx: Context): Record<string, string> | undefined => {\n const cookie = loadCookie(ctx);\n if (cookie) {\n ctx.log.trace(\"using cookie as auth header\", {}, { cookie });\n return { cookie };\n }\n\n const token = readToken(ctx);\n if (token) {\n ctx.log.trace(\"using token as auth header\", {}, { token });\n return { \"x-platform-access-token\": token };\n }\n\n return undefined;\n};\n\nexport const isUnauthorizedError = (error: unknown): error is HTTPError => {\n return error instanceof HTTPError && error.response.statusCode === 401;\n};\n\n/**\n * Swallows unauthorized errors and logs a warning, rethrows all other\n * errors.\n *\n * @param ctx - The current context.\n * @param error - The error to handle.\n */\nexport const swallowUnauthorized = (ctx: Context, error: unknown): void => {\n if (isUnauthorizedError(error)) {\n ctx.log.warn(\"swallowing unauthorized error\", { error });\n return;\n }\n throw error;\n};\n", "import { got, type OptionsInit } from \"got\";\nimport ms from \"ms\";\nimport assert from \"node:assert\";\nimport { Agent as HttpAgent } from \"node:http\";\nimport { Agent as HttpsAgent } from \"node:https\";\nimport { Context } from \"../command/context.js\";\nimport { config } from \"../config/config.js\";\nimport { sprint } from \"../output/sprint.js\";\nimport { writeSession } from \"../user/session.js\";\nimport { serializeError } from \"../util/object.js\";\nimport { isGadgetServicesRequest } from \"./auth.js\";\n\nexport type HttpOptions = OptionsInit;\n\nconst getContext = (options: HttpOptions): Context => {\n assert(\n options.context?.[\"ctx\"] instanceof Context,\n sprint(`\n ctx must be provided to http requests:\n\n const response = await http({\n context: { ctx },\n ...options,\n });\n `),\n );\n\n return options.context[\"ctx\"] as Context;\n};\n\n/**\n * An instance of the `got` library with hooks for logging and handling\n * 401 errors. This should be used for all HTTP requests.\n */\nexport const http = got.extend({\n agent: {\n http: new HttpAgent({ keepAlive: true }),\n https: new HttpsAgent({ keepAlive: true }),\n },\n retry: {\n limit: 10,\n methods: [\"GET\", \"PUT\", \"HEAD\", \"DELETE\", \"OPTIONS\", \"TRACE\"],\n statusCodes: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],\n errorCodes: [\n \"ETIMEDOUT\",\n \"ECONNRESET\",\n \"EADDRINUSE\",\n \"ECONNREFUSED\",\n \"EPIPE\",\n \"ENOTFOUND\",\n \"ENETUNREACH\",\n \"EAI_AGAIN\",\n \"EADDRNOTAVAIL\",\n \"EHOSTUNREACH\",\n ],\n maxRetryAfter: undefined,\n calculateDelay: ({ computedValue }) => computedValue,\n backoffLimit: ms(\"5s\"),\n noise: 100,\n },\n hooks: {\n beforeRequest: [\n (options) => {\n const ctx = getContext(options);\n options.signal = ctx.signal;\n options.headers[\"user-agent\"] = config.versionFull;\n ctx.log.debug(\"http request\", {\n http: {\n request: {\n method: options.method,\n url: options.url?.toString(),\n },\n },\n });\n },\n ],\n beforeRetry: [\n (error, retryCount) => {\n const ctx = getContext(error.request?.options ?? error.options.context);\n\n ctx.log.warn(\"http request failed, retrying...\", {\n http: {\n retryCount,\n error: serializeError(error),\n request: error.request && {\n method: error.request.options.method,\n url: error.request.options.url?.toString(),\n },\n response: error.response && {\n statusCode: error.response.statusCode,\n traceId: error.response.headers[\"x-trace-id\"],\n durationMs: error.response.timings.phases.total,\n },\n },\n });\n },\n ],\n afterResponse: [\n (response) => {\n const ctx = getContext(response.request.options);\n ctx.log.debug(\"http response\", {\n http: {\n request: {\n method: response.request.options.method,\n url: response.request.options.url?.toString(),\n },\n response: {\n statusCode: response.statusCode,\n traceId: response.headers[\"x-trace-id\"],\n durationMs: response.timings.phases.total,\n },\n },\n });\n\n if (response.statusCode === 401 && isGadgetServicesRequest(response.request.options)) {\n // clear the session if the request was unauthorized\n writeSession(ctx, undefined);\n }\n\n return response;\n },\n ],\n },\n});\n", "import assert from \"node:assert\";\nimport type { EmptyObject, Promisable } from \"type-fest\";\nimport type { RootArgs } from \"../../commands/root.js\";\nimport type { ArgsDefinition } from \"./arg.js\";\nimport type { Context } from \"./context.js\";\n\n/**\n * The list of available commands.\n *\n * 1. Every command corresponds to a file inside of src/commands/\n * 2. The order determines the order of commands in the README\n */\nexport const Commands = [\"dev\", \"deploy\", \"status\", \"push\", \"pull\", \"add\", \"open\", \"list\", \"login\", \"logout\", \"whoami\", \"version\"] as const;\n\n/**\n * One of the commands in {@link Commands}.\n */\nexport type Command = (typeof Commands)[number];\n\n/**\n * Checks if a string is a valid command.\n *\n * @param command - The string to check\n * @returns Whether the string is a valid command\n */\nexport const isCommand = (command: string): command is Command => {\n return Commands.includes(command as Command);\n};\n\n/**\n * A command module is a file in the src/commands/ directory.\n */\nexport type CommandModule<Args extends ArgsDefinition = EmptyObject, ParentArgs extends ArgsDefinition = RootArgs> = {\n /**\n * The command's {@link ArgsDefinition args}.\n */\n args?: Args;\n\n /**\n * The command's {@link Usage usage}.\n */\n usage: Usage;\n\n /**\n * The command's {@link Run command}.\n */\n run: Run<Args, ParentArgs>;\n};\n\n/**\n * A {@linkcode Command command}'s usage is a function that returns a\n * string describing how to use the command. The function receives its\n * parent command's context.\n */\nexport type Usage = (ctx: Context) => string;\n\n/**\n * The function that is run when the command is called.\n *\n * @param ctx - A {@linkcode Context} with the command's {@linkcode Args} and {@linkcode ParentArgs}.\n */\nexport type Run<Args extends ArgsDefinition = EmptyObject, ParentArgs extends ArgsDefinition = RootArgs> = (\n ctx: Context<Args, ParentArgs>,\n) => Promisable<void>;\n\n/**\n * Imports a command module.\n *\n * @param cmd - The command to import\n * @see {@linkcode CommandModule}\n */\nexport const importCommand = async (cmd: Command): Promise<CommandModule> => {\n assert(isCommand(cmd), `invalid command: ${cmd}`);\n\n let module;\n switch (cmd) {\n case \"dev\":\n module = await import(\"../../commands/dev.js\");\n break;\n case \"deploy\":\n module = await import(\"../../commands/deploy.js\");\n break;\n case \"status\":\n module = await import(\"../../commands/status.js\");\n break;\n case \"push\":\n module = await import(\"../../commands/push.js\");\n break;\n case \"pull\":\n module = await import(\"../../commands/pull.js\");\n break;\n case \"add\":\n module = await import(\"../../commands/add.js\");\n break;\n case \"open\":\n module = await import(\"../../commands/open.js\");\n break;\n case \"list\":\n module = await import(\"../../commands/list.js\");\n break;\n case \"login\":\n module = await import(\"../../commands/login.js\");\n break;\n case \"logout\":\n module = await import(\"../../commands/logout.js\");\n break;\n case \"whoami\":\n module = await import(\"../../commands/whoami.js\");\n break;\n case \"version\":\n module = await import(\"../../commands/version.js\");\n break;\n }\n\n return module as CommandModule;\n};\n\nconst kCommand = Symbol.for(\"command\");\n\nexport const maybeGetCurrentCommand = (ctx: Context): Command | undefined => {\n return ctx.get(kCommand) as Command | undefined;\n};\n\nexport const setCurrentCommand = (ctx: Context, command: Command): void => {\n ctx.set(kCommand, command);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["init_cjs", "assert", "isGadgetServicesRequest", "options", "config", "loadCookie", "ctx", "token", "readSession", "loadAuthHeaders", "headers", "maybeLoadAuthHeaders", "assert", "cookie", "readToken", "isUnauthorizedError", "error", "HTTPError", "swallowUnauthorized", "init_cjs", "import_ms", "assert", "HttpAgent", "HttpsAgent", "getContext", "options", "assert", "Context", "sprint", "http", "got", "HttpAgent", "HttpsAgent", "computedValue", "ms", "ctx", "config", "error", "retryCount", "serializeError", "response", "isGadgetServicesRequest", "writeSession", "init_cjs", "assert", "Commands", "isCommand", "command", "importCommand", "cmd", "module", "kCommand", "maybeGetCurrentCommand", "ctx", "setCurrentCommand"]
|
|
7
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`).reduce(function(n,o){return rt(o)>n?rt(o):n},0)}function q(i,t){return Array(t+1).join(i)}function Zt(i,t,e,r){let n=M(i);if(t+1>=n){let o=t-n;switch(r){case"right":{i=q(e,o)+i;break}case"center":{let s=Math.ceil(o/2),
|
|
3
|
-
`);let n=e?le:ue;for(let o=0;o<t.length;o++)r.push.apply(r,n(i,t[o]));return r}function he(i){let t={},e=[];for(let r=0;r<i.length;r++){let n=ee(t,i[r]);t=te(n);let o=Object.assign({},t);e.push(ot(o,n))}return e}function
|
|
4
|
-
`)!=-1,r=this._styles,n=r.length;n--;){var o=T[r[n]];t=o.open+t.replace(o.closeRe,o.open)+o.close,e&&(t=t.replace(be,function(s){return o.close+s+o.open}))}return t}
|
|
5
|
-
`))}wrapLines(t){let e=E.colorizeLines(t);return this.href?e.map(r=>E.hyperlink(this.href,r)):e}init(t){let e=this.x,r=this.y;this.widths=t.colWidths.slice(e,e+this.colSpan),this.heights=t.rowHeights.slice(r,r+this.rowSpan),this.width=this.widths.reduce(_t,-1),this.height=this.heights.reduce(_t,-1),this.hAlign=this.options.hAlign||t.colAligns[e],this.vAlign=this.options.vAlign||t.rowAligns[r],this.drawRight=e+this.colSpan==t.colWidths.length}draw(t,e){if(t=="top")return this.drawTop(this.drawRight);if(t=="bottom")return this.drawBottom(this.drawRight);let r=E.truncate(this.content,10,this.truncate);t||Oe(`${this.y}-${this.x}: ${this.rowSpan-t}x${this.colSpan} Cell ${r}`);let n=Math.max(this.height-this.lines.length,0),o;switch(this.vAlign){case"center":o=Math.ceil(n/2);break;case"bottom":o=n;break;default:o=0}if(t<o||t>=o+this.lines.length)return this.drawEmpty(this.drawRight,e);let s=this.lines.length>this.height&&t+1>=this.height;return this.drawLine(t-o,this.drawRight,s,e)}drawTop(t){let e=[];return this.cells?this.widths.forEach(function(r,n){e.push(this._topLeftChar(n)),e.push(E.repeat(this.chars[this.y==0?"top":"mid"],r))},this):(e.push(this._topLeftChar(0)),e.push(E.repeat(this.chars[this.y==0?"top":"mid"],this.width))),t&&e.push(this.chars[this.y==0?"topRight":"rightMid"]),this.wrapWithStyleColors("border",e.join(""))}_topLeftChar(t){let e=this.x+t,r;if(this.y==0)r=e==0?"topLeft":t==0?"topMid":"top";else if(e==0)r="leftMid";else if(r=t==0?"midMid":"bottomMid",this.cells&&(this.cells[this.y-1][e]instanceof i.ColSpanCell&&(r=t==0?"topMid":"mid"),t==0)){let o=1;for(;this.cells[this.y][e-o]instanceof i.ColSpanCell;)o++;this.cells[this.y][e-o]instanceof i.RowSpanCell&&(r="leftMid")}return this.chars[r]}wrapWithStyleColors(t,e){if(this[t]&&this[t].length)try{let r=jt();for(let n=this[t].length-1;n>=0;n--)r=r[this[t][n]];return r(e)}catch{return e}else return e}drawLine(t,e,r,n){let o=this.chars[this.x==0?"left":"middle"];if(this.x&&n&&this.cells){let m=this.cells[this.y+n][this.x-1];for(;m instanceof I;)m=this.cells[m.y][m.x-1];m instanceof G||(o=this.chars.rightMid)}let s=E.repeat(" ",this.paddingLeft),
|
|
1
|
+
import{$ as tt,N as Qt,P as Z,Q as Xt,_ as L}from"./chunk-CQLM5U6T.js";import{a as Q,c as v,e as X,g as p}from"./chunk-5WC5D4WL.js";var P=v((je,it)=>{p();var H=[],et=0,S=(i,t)=>{et>=t&&H.push(i)};S.WARN=1;S.INFO=2;S.DEBUG=3;S.reset=()=>{H=[]};S.setDebugLevel=i=>{et=i};S.warn=i=>S(i,S.WARN);S.info=i=>S(i,S.INFO);S.debug=i=>S(i,S.DEBUG);S.debugMessages=()=>H;it.exports=S});var D=v((_e,st)=>{p();var rt=Qt();function $(i){return i?/\u001b\[((?:\d*;){0,5}\d*)m/g:/\u001b\[(?:\d*;){0,5}\d*m/g}function M(i){let t=$();return(""+i).replace(t,"").split(`
|
|
2
|
+
`).reduce(function(n,o){return rt(o)>n?rt(o):n},0)}function q(i,t){return Array(t+1).join(i)}function Zt(i,t,e,r){let n=M(i);if(t+1>=n){let o=t-n;switch(r){case"right":{i=q(e,o)+i;break}case"center":{let s=Math.ceil(o/2),f=o-s;i=q(e,f)+i+q(e,s);break}default:{i=i+q(e,o);break}}}return i}var k={};function _(i,t,e){t="\x1B["+t+"m",e="\x1B["+e+"m",k[t]={set:i,to:!0},k[e]={set:i,to:!1},k[i]={on:t,off:e}}_("bold",1,22);_("italics",3,23);_("underline",4,24);_("inverse",7,27);_("strikethrough",9,29);function nt(i,t){let e=t[1]?parseInt(t[1].split(";")[0]):0;if(e>=30&&e<=39||e>=90&&e<=97){i.lastForegroundAdded=t[0];return}if(e>=40&&e<=49||e>=100&&e<=107){i.lastBackgroundAdded=t[0];return}if(e===0){for(let n in i)Object.prototype.hasOwnProperty.call(i,n)&&delete i[n];return}let r=k[t[0]];r&&(i[r.set]=r.to)}function te(i){let t=$(!0),e=t.exec(i),r={};for(;e!==null;)nt(r,e),e=t.exec(i);return r}function ot(i,t){let e=i.lastBackgroundAdded,r=i.lastForegroundAdded;return delete i.lastBackgroundAdded,delete i.lastForegroundAdded,Object.keys(i).forEach(function(n){i[n]&&(t+=k[n].off)}),e&&e!="\x1B[49m"&&(t+="\x1B[49m"),r&&r!="\x1B[39m"&&(t+="\x1B[39m"),t}function ee(i,t){let e=i.lastBackgroundAdded,r=i.lastForegroundAdded;return delete i.lastBackgroundAdded,delete i.lastForegroundAdded,Object.keys(i).forEach(function(n){i[n]&&(t=k[n].on+t)}),e&&e!="\x1B[49m"&&(t=e+t),r&&r!="\x1B[39m"&&(t=r+t),t}function ie(i,t){if(i.length===M(i))return i.substr(0,t);for(;M(i)>t;)i=i.slice(0,-1);return i}function re(i,t){let e=$(!0),r=i.split($()),n=0,o=0,s="",f,b={};for(;o<t;){f=e.exec(i);let a=r[n];if(n++,o+M(a)>t&&(a=ie(a,t-o)),s+=a,o+=M(a),o<t){if(!f)break;s+=f[0],nt(b,f)}}return ot(b,s)}function ne(i,t,e){if(e=e||"\u2026",M(i)<=t)return i;t-=M(e);let n=re(i,t);n+=e;let o="\x1B]8;;\x07";return i.includes(o)&&!n.includes(o)&&(n+=o),n}function oe(){return{chars:{top:"\u2500","top-mid":"\u252C","top-left":"\u250C","top-right":"\u2510",bottom:"\u2500","bottom-mid":"\u2534","bottom-left":"\u2514","bottom-right":"\u2518",left:"\u2502","left-mid":"\u251C",mid:"\u2500","mid-mid":"\u253C",right:"\u2502","right-mid":"\u2524",middle:"\u2502"},truncate:"\u2026",colWidths:[],rowHeights:[],colAligns:[],rowAligns:[],style:{"padding-left":1,"padding-right":1,head:["red"],border:["grey"],compact:!1},head:[]}}function se(i,t){i=i||{},t=t||oe();let e=Object.assign({},t,i);return e.chars=Object.assign({},t.chars,i.chars),e.style=Object.assign({},t.style,i.style),e}function le(i,t){let e=[],r=t.split(/(\s+)/g),n=[],o=0,s;for(let f=0;f<r.length;f+=2){let b=r[f],a=o+M(b);o>0&&s&&(a+=s.length),a>i?(o!==0&&e.push(n.join("")),n=[b],o=M(b)):(n.push(s||"",b),o=a),s=r[f+1]}return o&&e.push(n.join("")),e}function ue(i,t){let e=[],r="";function n(s,f){for(r.length&&f&&(r+=f),r+=s;r.length>i;)e.push(r.slice(0,i)),r=r.slice(i)}let o=t.split(/(\s+)/g);for(let s=0;s<o.length;s+=2)n(o[s],s&&o[s-1]);return r.length&&e.push(r),e}function ae(i,t,e=!0){let r=[];t=t.split(`
|
|
3
|
+
`);let n=e?le:ue;for(let o=0;o<t.length;o++)r.push.apply(r,n(i,t[o]));return r}function he(i){let t={},e=[];for(let r=0;r<i.length;r++){let n=ee(t,i[r]);t=te(n);let o=Object.assign({},t);e.push(ot(o,n))}return e}function ce(i,t){let e="\x1B]",r="\x07",n=";";return[e,"8",n,n,i||t,r,t,e,"8",n,n,r].join("")}st.exports={strlen:M,repeat:q,pad:Zt,truncate:ne,mergeOptions:se,wordWrap:ae,colorizeLines:he,hyperlink:ce}});var ht=v((Ge,at)=>{p();var ut={};at.exports=ut;var lt={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(lt).forEach(function(i){var t=lt[i],e=ut[i]=[];e.open="\x1B["+t[0]+"m",e.close="\x1B["+t[1]+"m"})});var ft=v(($e,ct)=>{"use strict";p();ct.exports=function(i,t){t=t||process.argv;var e=t.indexOf("--"),r=/^-{1,2}/.test(i)?"":"--",n=t.indexOf(r+i);return n!==-1&&(e===-1?!0:n<e)}});var pt=v((Fe,dt)=>{"use strict";p();var fe=Q("os"),A=ft(),O=process.env,B=void 0;A("no-color")||A("no-colors")||A("color=false")?B=!1:(A("color")||A("colors")||A("color=true")||A("color=always"))&&(B=!0);"FORCE_COLOR"in O&&(B=O.FORCE_COLOR.length===0||parseInt(O.FORCE_COLOR,10)!==0);function de(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function pe(i){if(B===!1)return 0;if(A("color=16m")||A("color=full")||A("color=truecolor"))return 3;if(A("color=256"))return 2;if(i&&!i.isTTY&&B!==!0)return 0;var t=B?1:0;if(process.platform==="win32"){var e=fe.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in O)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(function(n){return n in O})||O.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in O)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(O.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in O){var r=parseInt((O.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(O.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(O.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(O.TERM)||"COLORTERM"in O?1:(O.TERM==="dumb",t)}function Y(i){var t=pe(i);return de(t)}dt.exports={supportsColor:Y,stdout:Y(process.stdout),stderr:Y(process.stderr)}});var bt=v((De,gt)=>{p();gt.exports=function(t,e){var r="";t=t||"Run the trap, drop the bass",t=t.split("");var n={a:["@","\u0104","\u023A","\u0245","\u0394","\u039B","\u0414"],b:["\xDF","\u0181","\u0243","\u026E","\u03B2","\u0E3F"],c:["\xA9","\u023B","\u03FE"],d:["\xD0","\u018A","\u0500","\u0501","\u0502","\u0503"],e:["\xCB","\u0115","\u018E","\u0258","\u03A3","\u03BE","\u04BC","\u0A6C"],f:["\u04FA"],g:["\u0262"],h:["\u0126","\u0195","\u04A2","\u04BA","\u04C7","\u050A"],i:["\u0F0F"],j:["\u0134"],k:["\u0138","\u04A0","\u04C3","\u051E"],l:["\u0139"],m:["\u028D","\u04CD","\u04CE","\u0520","\u0521","\u0D69"],n:["\xD1","\u014B","\u019D","\u0376","\u03A0","\u048A"],o:["\xD8","\xF5","\xF8","\u01FE","\u0298","\u047A","\u05DD","\u06DD","\u0E4F"],p:["\u01F7","\u048E"],q:["\u09CD"],r:["\xAE","\u01A6","\u0210","\u024C","\u0280","\u042F"],s:["\xA7","\u03DE","\u03DF","\u03E8"],t:["\u0141","\u0166","\u0373"],u:["\u01B1","\u054D"],v:["\u05D8"],w:["\u0428","\u0460","\u047C","\u0D70"],x:["\u04B2","\u04FE","\u04FC","\u04FD"],y:["\xA5","\u04B0","\u04CB"],z:["\u01B5","\u0240"]};return t.forEach(function(o){o=o.toLowerCase();var s=n[o]||[" "],f=Math.floor(Math.random()*s.length);typeof n[o]<"u"?r+=n[o][f]:r+=o}),r}});var yt=v((Ne,mt)=>{p();mt.exports=function(t,e){t=t||" he is here ";var r={up:["\u030D","\u030E","\u0304","\u0305","\u033F","\u0311","\u0306","\u0310","\u0352","\u0357","\u0351","\u0307","\u0308","\u030A","\u0342","\u0313","\u0308","\u034A","\u034B","\u034C","\u0303","\u0302","\u030C","\u0350","\u0300","\u0301","\u030B","\u030F","\u0312","\u0313","\u0314","\u033D","\u0309","\u0363","\u0364","\u0365","\u0366","\u0367","\u0368","\u0369","\u036A","\u036B","\u036C","\u036D","\u036E","\u036F","\u033E","\u035B","\u0346","\u031A"],down:["\u0316","\u0317","\u0318","\u0319","\u031C","\u031D","\u031E","\u031F","\u0320","\u0324","\u0325","\u0326","\u0329","\u032A","\u032B","\u032C","\u032D","\u032E","\u032F","\u0330","\u0331","\u0332","\u0333","\u0339","\u033A","\u033B","\u033C","\u0345","\u0347","\u0348","\u0349","\u034D","\u034E","\u0353","\u0354","\u0355","\u0356","\u0359","\u035A","\u0323"],mid:["\u0315","\u031B","\u0300","\u0301","\u0358","\u0321","\u0322","\u0327","\u0328","\u0334","\u0335","\u0336","\u035C","\u035D","\u035E","\u035F","\u0360","\u0362","\u0338","\u0337","\u0361"," \u0489"]},n=[].concat(r.up,r.down,r.mid);function o(b){var a=Math.floor(Math.random()*b);return a}function s(b){var a=!1;return n.filter(function(y){a=y===b}),a}function f(b,a){var y="",x,m;a=a||{},a.up=typeof a.up<"u"?a.up:!0,a.mid=typeof a.mid<"u"?a.mid:!0,a.down=typeof a.down<"u"?a.down:!0,a.size=typeof a.size<"u"?a.size:"maxi",b=b.split("");for(m in b)if(!s(m)){switch(y=y+b[m],x={up:0,down:0,mid:0},a.size){case"mini":x.up=o(8),x.mid=o(2),x.down=o(8);break;case"maxi":x.up=o(16)+3,x.mid=o(4)+1,x.down=o(64)+3;break;default:x.up=o(8)+1,x.mid=o(6)/2,x.down=o(8)+1;break}var u=["up","mid","down"];for(var l in u)for(var h=u[l],d=0;d<=x[h];d++)a[h]&&(y=y+r[h][o(r[h].length)])}return y}return f(t,e)}});var xt=v((Ue,wt)=>{p();wt.exports=function(i){return function(t,e,r){if(t===" ")return t;switch(e%3){case 0:return i.red(t);case 1:return i.white(t);case 2:return i.blue(t)}}}});var St=v((Ke,vt)=>{p();vt.exports=function(i){return function(t,e,r){return e%2===0?t:i.inverse(t)}}});var Ot=v((Xe,Ct)=>{p();Ct.exports=function(i){var t=["red","yellow","green","blue","magenta"];return function(e,r,n){return e===" "?e:i[t[r++%t.length]](e)}}});var Et=v((ti,Rt)=>{p();Rt.exports=function(i){var t=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(e,r,n){return e===" "?e:i[t[Math.round(Math.random()*(t.length-2))]](e)}}});var kt=v((ri,Lt)=>{p();var c={};Lt.exports=c;c.themes={};var ge=Q("util"),T=c.styles=ht(),Mt=Object.defineProperties,be=new RegExp(/[\r\n]+/g);c.supportsColor=pt().supportsColor;typeof c.enabled>"u"&&(c.enabled=c.supportsColor()!==!1);c.enable=function(){c.enabled=!0};c.disable=function(){c.enabled=!1};c.stripColors=c.strip=function(i){return(""+i).replace(/\x1B\[\d+m/g,"")};var ii=c.stylize=function(t,e){if(!c.enabled)return t+"";var r=T[e];return!r&&e in c?c[e](t):r.open+t+r.close},me=/[|\\{}()[\]^$+*?.]/g,ye=function(i){if(typeof i!="string")throw new TypeError("Expected a string");return i.replace(me,"\\$&")};function Wt(i){var t=function e(){return xe.apply(e,arguments)};return t._styles=i,t.__proto__=we,t}var Tt=function(){var i={};return T.grey=T.gray,Object.keys(T).forEach(function(t){T[t].closeRe=new RegExp(ye(T[t].close),"g"),i[t]={get:function(){return Wt(this._styles.concat(t))}}}),i}(),we=Mt(function(){},Tt);function xe(){var i=Array.prototype.slice.call(arguments),t=i.map(function(s){return s!=null&&s.constructor===String?s:ge.inspect(s)}).join(" ");if(!c.enabled||!t)return t;for(var e=t.indexOf(`
|
|
4
|
+
`)!=-1,r=this._styles,n=r.length;n--;){var o=T[r[n]];t=o.open+t.replace(o.closeRe,o.open)+o.close,e&&(t=t.replace(be,function(s){return o.close+s+o.open}))}return t}c.setTheme=function(i){if(typeof i=="string"){console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));");return}for(var t in i)(function(e){c[e]=function(r){if(typeof i[e]=="object"){var n=r;for(var o in i[e])n=c[i[e][o]](n);return n}return c[i[e]](r)}})(t)};function ve(){var i={};return Object.keys(Tt).forEach(function(t){i[t]={get:function(){return Wt([t])}}}),i}var Se=function(t,e){var r=e.split("");return r=r.map(t),r.join("")};c.trap=bt();c.zalgo=yt();c.maps={};c.maps.america=xt()(c);c.maps.zebra=St()(c);c.maps.rainbow=Ot()(c);c.maps.random=Et()(c);for(At in c.maps)(function(i){c[i]=function(t){return Se(c.maps[i],t)}})(At);var At;Mt(c,ve())});var jt=v((oi,Bt)=>{p();var Ce=kt();Bt.exports=Ce});var Gt=v((li,z)=>{p();var{info:Oe,debug:It}=P(),E=D(),V=class i{constructor(t){this.setOptions(t),this.x=null,this.y=null}setOptions(t){["boolean","number","bigint","string"].indexOf(typeof t)!==-1&&(t={content:""+t}),t=t||{},this.options=t;let e=t.content;if(["boolean","number","bigint","string"].indexOf(typeof e)!==-1)this.content=String(e);else if(!e)this.content=this.options.href||"";else throw new Error("Content needs to be a primitive, got: "+typeof e);this.colSpan=t.colSpan||1,this.rowSpan=t.rowSpan||1,this.options.href&&Object.defineProperty(this,"href",{get(){return this.options.href}})}mergeTableOptions(t,e){this.cells=e;let r=this.options.chars||{},n=t.chars,o=this.chars={};Ee.forEach(function(b){N(r,n,b,o)}),this.truncate=this.options.truncate||t.truncate;let s=this.options.style=this.options.style||{},f=t.style;N(s,f,"padding-left",this),N(s,f,"padding-right",this),this.head=s.head||f.head,this.border=s.border||f.border,this.fixedWidth=t.colWidths[this.x],this.lines=this.computeLines(t),this.desiredWidth=E.strlen(this.content)+this.paddingLeft+this.paddingRight,this.desiredHeight=this.lines.length}computeLines(t){let e=t.wordWrap||t.textWrap,{wordWrap:r=e}=this.options;if(this.fixedWidth&&r){if(this.fixedWidth-=this.paddingLeft+this.paddingRight,this.colSpan){let s=1;for(;s<this.colSpan;)this.fixedWidth+=t.colWidths[this.x+s],s++}let{wrapOnWordBoundary:n=!0}=t,{wrapOnWordBoundary:o=n}=this.options;return this.wrapLines(E.wordWrap(this.fixedWidth,this.content,o))}return this.wrapLines(this.content.split(`
|
|
5
|
+
`))}wrapLines(t){let e=E.colorizeLines(t);return this.href?e.map(r=>E.hyperlink(this.href,r)):e}init(t){let e=this.x,r=this.y;this.widths=t.colWidths.slice(e,e+this.colSpan),this.heights=t.rowHeights.slice(r,r+this.rowSpan),this.width=this.widths.reduce(_t,-1),this.height=this.heights.reduce(_t,-1),this.hAlign=this.options.hAlign||t.colAligns[e],this.vAlign=this.options.vAlign||t.rowAligns[r],this.drawRight=e+this.colSpan==t.colWidths.length}draw(t,e){if(t=="top")return this.drawTop(this.drawRight);if(t=="bottom")return this.drawBottom(this.drawRight);let r=E.truncate(this.content,10,this.truncate);t||Oe(`${this.y}-${this.x}: ${this.rowSpan-t}x${this.colSpan} Cell ${r}`);let n=Math.max(this.height-this.lines.length,0),o;switch(this.vAlign){case"center":o=Math.ceil(n/2);break;case"bottom":o=n;break;default:o=0}if(t<o||t>=o+this.lines.length)return this.drawEmpty(this.drawRight,e);let s=this.lines.length>this.height&&t+1>=this.height;return this.drawLine(t-o,this.drawRight,s,e)}drawTop(t){let e=[];return this.cells?this.widths.forEach(function(r,n){e.push(this._topLeftChar(n)),e.push(E.repeat(this.chars[this.y==0?"top":"mid"],r))},this):(e.push(this._topLeftChar(0)),e.push(E.repeat(this.chars[this.y==0?"top":"mid"],this.width))),t&&e.push(this.chars[this.y==0?"topRight":"rightMid"]),this.wrapWithStyleColors("border",e.join(""))}_topLeftChar(t){let e=this.x+t,r;if(this.y==0)r=e==0?"topLeft":t==0?"topMid":"top";else if(e==0)r="leftMid";else if(r=t==0?"midMid":"bottomMid",this.cells&&(this.cells[this.y-1][e]instanceof i.ColSpanCell&&(r=t==0?"topMid":"mid"),t==0)){let o=1;for(;this.cells[this.y][e-o]instanceof i.ColSpanCell;)o++;this.cells[this.y][e-o]instanceof i.RowSpanCell&&(r="leftMid")}return this.chars[r]}wrapWithStyleColors(t,e){if(this[t]&&this[t].length)try{let r=jt();for(let n=this[t].length-1;n>=0;n--)r=r[this[t][n]];return r(e)}catch{return e}else return e}drawLine(t,e,r,n){let o=this.chars[this.x==0?"left":"middle"];if(this.x&&n&&this.cells){let m=this.cells[this.y+n][this.x-1];for(;m instanceof I;)m=this.cells[m.y][m.x-1];m instanceof G||(o=this.chars.rightMid)}let s=E.repeat(" ",this.paddingLeft),f=e?this.chars.right:"",b=E.repeat(" ",this.paddingRight),a=this.lines[t],y=this.width-(this.paddingLeft+this.paddingRight);r&&(a+=this.truncate||"\u2026");let x=E.truncate(a,y,this.truncate);return x=E.pad(x,y," ",this.hAlign),x=s+x+b,this.stylizeLine(o,x,f)}stylizeLine(t,e,r){return t=this.wrapWithStyleColors("border",t),r=this.wrapWithStyleColors("border",r),this.y===0&&(e=this.wrapWithStyleColors("head",e)),t+e+r}drawBottom(t){let e=this.chars[this.x==0?"bottomLeft":"bottomMid"],r=E.repeat(this.chars.bottom,this.width),n=t?this.chars.bottomRight:"";return this.wrapWithStyleColors("border",e+r+n)}drawEmpty(t,e){let r=this.chars[this.x==0?"left":"middle"];if(this.x&&e&&this.cells){let s=this.cells[this.y+e][this.x-1];for(;s instanceof I;)s=this.cells[s.y][s.x-1];s instanceof G||(r=this.chars.rightMid)}let n=t?this.chars.right:"",o=E.repeat(" ",this.width);return this.stylizeLine(r,o,n)}},I=class{constructor(){}draw(t){return typeof t=="number"&&It(`${this.y}-${this.x}: 1x1 ColSpanCell`),""}init(){}mergeTableOptions(){}},G=class{constructor(t){this.originalCell=t}init(t){let e=this.y,r=this.originalCell.y;this.cellOffset=e-r,this.offset=Re(t.rowHeights,r,this.cellOffset)}draw(t){return t=="top"?this.originalCell.draw(this.offset,this.cellOffset):t=="bottom"?this.originalCell.draw("bottom"):(It(`${this.y}-${this.x}: 1x${this.colSpan} RowSpanCell for ${this.originalCell.content}`),this.originalCell.draw(this.offset+1+t))}mergeTableOptions(){}};function qt(...i){return i.filter(t=>t!=null).shift()}function N(i,t,e,r){let n=e.split("-");n.length>1?(n[1]=n[1].charAt(0).toUpperCase()+n[1].substr(1),n=n.join(""),r[n]=qt(i[n],i[e],t[n],t[e])):r[e]=qt(i[e],t[e])}function Re(i,t,e){let r=i[t];for(let n=1;n<e;n++)r+=1+i[t+n];return r}function _t(i,t){return i+t+1}var Ee=["top","top-mid","top-left","top-right","bottom","bottom-mid","bottom-left","bottom-right","left","left-mid","mid","mid-mid","right","right-mid","middle"];z.exports=V;z.exports.ColSpanCell=I;z.exports.RowSpanCell=G});var zt=v((ai,$t)=>{p();var{warn:Ae,debug:Me}=P(),U=Gt(),{ColSpanCell:We,RowSpanCell:Te}=U;(function(){function i(u,l){return u[l]>0?i(u,l+1):l}function t(u){let l={};u.forEach(function(h,d){let w=0;h.forEach(function(g){g.y=d,g.x=d?i(l,w):w;let C=g.rowSpan||1,R=g.colSpan||1;if(C>1)for(let j=0;j<R;j++)l[g.x+j]=C;w=g.x+R}),Object.keys(l).forEach(g=>{l[g]--,l[g]<1&&delete l[g]})})}function e(u){let l=0;return u.forEach(function(h){h.forEach(function(d){l=Math.max(l,d.x+(d.colSpan||1))})}),l}function r(u){return u.length}function n(u,l){let h=u.y,d=u.y-1+(u.rowSpan||1),w=l.y,g=l.y-1+(l.rowSpan||1),C=!(h>g||w>d),R=u.x,j=u.x-1+(u.colSpan||1),Ut=l.x,Jt=l.x-1+(l.colSpan||1),Kt=!(R>Jt||Ut>j);return C&&Kt}function o(u,l,h){let d=Math.min(u.length-1,h),w={x:l,y:h};for(let g=0;g<=d;g++){let C=u[g];for(let R=0;R<C.length;R++)if(n(w,C[R]))return!0}return!1}function s(u,l,h,d){for(let w=h;w<d;w++)if(o(u,w,l))return!1;return!0}function f(u){u.forEach(function(l,h){l.forEach(function(d){for(let w=1;w<d.rowSpan;w++){let g=new Te(d);g.x=d.x,g.y=d.y+w,g.colSpan=d.colSpan,a(g,u[h+w])}})})}function b(u){for(let l=u.length-1;l>=0;l--){let h=u[l];for(let d=0;d<h.length;d++){let w=h[d];for(let g=1;g<w.colSpan;g++){let C=new We;C.x=w.x+g,C.y=w.y,h.splice(d+1,0,C)}}}}function a(u,l){let h=0;for(;h<l.length&&l[h].x<u.x;)h++;l.splice(h,0,u)}function y(u){let l=r(u),h=e(u);Me(`Max rows: ${l}; Max cols: ${h}`);for(let d=0;d<l;d++)for(let w=0;w<h;w++)if(!o(u,w,d)){let g={x:w,y:d,colSpan:1,rowSpan:1};for(w++;w<h&&!o(u,w,d);)g.colSpan++,w++;let C=d+1;for(;C<l&&s(u,C,g.x,g.x+g.colSpan);)g.rowSpan++,C++;let R=new U(g);R.x=g.x,R.y=g.y,Ae(`Missing cell at ${R.y}-${R.x}.`),a(R,u[d])}}function x(u){return u.map(function(l){if(!Array.isArray(l)){let h=Object.keys(l)[0];l=l[h],Array.isArray(l)?(l=l.slice(),l.unshift(h)):l=[h,l]}return l.map(function(h){return new U(h)})})}function m(u){let l=x(u);return t(l),y(l),f(l),b(l),l}$t.exports={makeTableLayout:m,layoutTable:t,addRowSpanCells:f,maxWidth:e,fillInTable:y,computeWidths:Pt("colSpan","desiredWidth","x",1),computeHeights:Pt("rowSpan","desiredHeight","y",1)}})();function Pt(i,t,e,r){return function(n,o){let s=[],f=[],b={};o.forEach(function(a){a.forEach(function(y){(y[i]||1)>1?f.push(y):s[y[e]]=Math.max(s[y[e]]||0,y[t]||0,r)})}),n.forEach(function(a,y){typeof a=="number"&&(s[y]=a)});for(let a=f.length-1;a>=0;a--){let y=f[a],x=y[i],m=y[e],u=s[m],l=typeof n[m]=="number"?0:1;if(typeof u=="number")for(let h=1;h<x;h++)u+=1+s[m+h],typeof n[m+h]!="number"&&l++;else u=t==="desiredWidth"?y.desiredWidth-1:1,(!b[m]||b[m]<u)&&(b[m]=u);if(y[t]>u){let h=0;for(;l>0&&y[t]>u;){if(typeof n[m+h]!="number"){let d=Math.round((y[t]-u)/l);u+=d,s[m+h]+=d,l--}h++}}}Object.assign(n,s,b);for(let a=0;a<n.length;a++)n[a]=Math.max(r,n[a]||0)}}});var Ht=v((ci,Ft)=>{p();var W=P(),Le=D(),J=zt(),F=class extends Array{constructor(t){super();let e=Le.mergeOptions(t);if(Object.defineProperty(this,"options",{value:e,enumerable:e.debug}),e.debug){switch(typeof e.debug){case"boolean":W.setDebugLevel(W.WARN);break;case"number":W.setDebugLevel(e.debug);break;case"string":W.setDebugLevel(parseInt(e.debug,10));break;default:W.setDebugLevel(W.WARN),W.warn(`Debug option is expected to be boolean, number, or string. Received a ${typeof e.debug}`)}Object.defineProperty(this,"messages",{get(){return W.debugMessages()}})}}toString(){let t=this,e=this.options.head&&this.options.head.length;e?(t=[this.options.head],this.length&&t.push.apply(t,this)):this.options.style.head=[];let r=J.makeTableLayout(t);r.forEach(function(o){o.forEach(function(s){s.mergeTableOptions(this.options,r)},this)},this),J.computeWidths(this.options.colWidths,r),J.computeHeights(this.options.rowHeights,r),r.forEach(function(o){o.forEach(function(s){s.init(this.options)},this)},this);let n=[];for(let o=0;o<r.length;o++){let s=r[o],f=this.options.rowHeights[o];(o===0||!this.options.style.compact||o==1&&e)&&K(s,"top",n);for(let b=0;b<f;b++)K(s,b,n);o+1==r.length&&K(s,"bottom",n)}return n.join(`
|
|
6
6
|
`)}get width(){return this.toString().split(`
|
|
7
|
-
`)[0].length}};F.reset=()=>W.reset();function K(i,t,e){let r=[];i.forEach(function(o){r.push(o.draw(t))});let n=r.join("");n.length&&e.push(n)}Ft.exports=F});var Yt=v((di,Dt)=>{p();Dt.exports=Ht()});p();var Nt=X(Yt(),1);var Vt=X(Xt(),1);var ke=({title:i,headers:t,rows:e,footer:r,ensureEmptyLineAboveBody:n=!1,ensureEmptyLineAboveFooter:o=!1,borders:s="none",colAligns:
|
|
7
|
+
`)[0].length}};F.reset=()=>W.reset();function K(i,t,e){let r=[];i.forEach(function(o){r.push(o.draw(t))});let n=r.join("");n.length&&e.push(n)}Ft.exports=F});var Yt=v((di,Dt)=>{p();Dt.exports=Ht()});p();var Nt=X(Yt(),1);var Vt=X(Xt(),1);var ke=({title:i,headers:t,rows:e,footer:r,ensureEmptyLineAboveBody:n=!1,ensureEmptyLineAboveFooter:o=!1,borders:s="none",colAligns:f=[],colWidths:b=[],indent:a,...y})=>{let x=new Nt.default({chars:Be[s],colAligns:f,colWidths:b,head:t,style:{head:[],border:[]}});x.push(...e);let m=x.toString()+`
|
|
8
8
|
`;return s==="none"&&(m=(0,Vt.dedent)(m).slice(1)),m=m.split(`
|
|
9
9
|
`).map(u=>u.trimEnd()).join(`
|
|
10
|
-
`),a&&(m=Z(m,a)),i&&(m=L(i)+L({ensureEmptyLineAbove:n})
|
|
11
|
-
//# sourceMappingURL=chunk-
|
|
10
|
+
`),a&&(m=Z(m,a)),i&&(m=L(i)+L({content:m,ensureEmptyLineAbove:n})),r&&(m=L(m)+L({content:r,ensureEmptyLineAbove:o})),L({content:m,...y})},yi=i=>{tt(ke(i))},Be={none:{"top-left":"",top:"","top-mid":"","top-right":"","left-mid":"",mid:"","mid-mid":"","right-mid":"",left:"",middle:"",right:"","bottom-left":"",bottom:"","bottom-mid":"","bottom-right":""},thin:{"top-left":"\u250C",top:"\u2500","top-mid":"\u252C","top-right":"\u2510","left-mid":"\u251C",mid:"\u2500","mid-mid":"\u253C","right-mid":"\u2524",left:"\u2502",middle:"\u2502",right:"\u2502","bottom-left":"\u2514",bottom:"\u2500","bottom-mid":"\u2534","bottom-right":"\u2518"},thick:{"top-left":"\u2554",top:"\u2550","top-mid":"\u2564","top-right":"\u2557",left:"\u2551",middle:"\u2502",right:"\u2551","left-mid":"\u255F",mid:"\u2500","mid-mid":"\u253C","right-mid":"\u2562","bottom-left":"\u255A",bottom:"\u2550","bottom-mid":"\u2567","bottom-right":"\u255D"}};export{ke as a,yi as b};
|
|
11
|
+
//# sourceMappingURL=chunk-5ONACLO6.js.map
|