@gadgetinc/ggt 1.4.2 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/add-XHMGXWYX.js +81 -0
- package/dist/add-XHMGXWYX.js.map +7 -0
- package/dist/{chunk-JOWMHVPF.js → chunk-3B2GY4UU.js} +2 -2
- package/dist/{chunk-JOWMHVPF.js.map → chunk-3B2GY4UU.js.map} +1 -1
- package/dist/{chunk-PRAA2FG3.js → chunk-5VLIBRPJ.js} +2 -2
- package/dist/chunk-7DYQUG5M.js +2 -0
- package/dist/chunk-7DYQUG5M.js.map +7 -0
- package/dist/{chunk-GKAC6HNS.js → chunk-A75V6SNW.js} +17 -10
- package/dist/chunk-A75V6SNW.js.map +7 -0
- package/dist/{chunk-P7E7PAMQ.js → chunk-GFQYFEEH.js} +2 -2
- package/dist/{chunk-L4OG4HIV.js → chunk-HAYHNB7Q.js} +2 -2
- package/dist/{chunk-L4OG4HIV.js.map → chunk-HAYHNB7Q.js.map} +1 -1
- package/dist/chunk-HN3YKQ3C.js +6 -0
- package/dist/chunk-HN3YKQ3C.js.map +7 -0
- package/dist/chunk-KW4V2PJW.js +18 -0
- package/dist/chunk-KW4V2PJW.js.map +7 -0
- package/dist/chunk-LPIHKY3M.js +50 -0
- package/dist/chunk-LPIHKY3M.js.map +7 -0
- package/dist/chunk-SX5LO3XQ.js +2 -0
- package/dist/{chunk-OTYPO33S.js → chunk-U5I2YBJK.js} +2 -2
- package/dist/{chunk-M5HB5SEG.js → chunk-WQ4SFIE4.js} +2 -2
- package/dist/{chunk-M5HB5SEG.js.map → chunk-WQ4SFIE4.js.map} +1 -1
- package/dist/chunk-XE5GH5GR.js +2 -0
- package/dist/{chunk-ZCRXH55K.js.map → chunk-XE5GH5GR.js.map} +1 -1
- package/dist/chunk-XOSBJSTW.js +65 -0
- package/dist/chunk-XOSBJSTW.js.map +7 -0
- package/dist/chunk-Z7JIVKEF.js +8 -0
- package/dist/{chunk-KP35JQJ7.js.map → chunk-Z7JIVKEF.js.map} +1 -1
- package/dist/{deploy-T5ZUHHLZ.js → deploy-QW6KPNDB.js} +2 -2
- package/dist/{deploy-T5ZUHHLZ.js.map → deploy-QW6KPNDB.js.map} +1 -1
- package/dist/{dev-5CVDVGE3.js → dev-KUTYS7OU.js} +4 -4
- package/dist/{dev-5CVDVGE3.js.map → dev-KUTYS7OU.js.map} +1 -1
- package/dist/esm-PLVGBDRY.js +38 -0
- package/dist/esm-PLVGBDRY.js.map +7 -0
- package/dist/{list-BV7QOWA2.js → list-OSMGHITM.js} +2 -2
- package/dist/{list-BV7QOWA2.js.map → list-OSMGHITM.js.map} +1 -1
- package/dist/login-UU4MWB6Y.js +2 -0
- package/dist/logout-XPKPHMRV.js +7 -0
- package/dist/{logout-QLW45MMK.js.map → logout-XPKPHMRV.js.map} +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/{open-TKGHV5HA.js → open-SP5XOXPG.js} +2 -2
- package/dist/{open-TKGHV5HA.js.map → open-SP5XOXPG.js.map} +1 -1
- package/dist/{pull-RRR7ISUG.js → pull-7JMGBM4A.js} +2 -2
- package/dist/{pull-RRR7ISUG.js.map → pull-7JMGBM4A.js.map} +1 -1
- package/dist/push-7S6V2HSB.js +2 -0
- package/dist/{status-BKCHGWJO.js → status-CJVN2UZ6.js} +2 -2
- package/dist/{status-BKCHGWJO.js.map → status-CJVN2UZ6.js.map} +1 -1
- package/dist/{version-LUMBTKD4.js → version-NFFT7WG5.js} +2 -2
- package/dist/{version-LUMBTKD4.js.map → version-NFFT7WG5.js.map} +1 -1
- package/dist/{whoami-ONJCZDTX.js → whoami-MU3POPXB.js} +2 -2
- package/dist/{whoami-ONJCZDTX.js.map → whoami-MU3POPXB.js.map} +1 -1
- package/package.json +14 -14
- package/dist/add-Q2YM34TO.js +0 -78
- package/dist/add-Q2YM34TO.js.map +0 -7
- package/dist/chunk-56W5U2JG.js +0 -2
- package/dist/chunk-56W5U2JG.js.map +0 -7
- package/dist/chunk-BWIVLBZY.js +0 -18
- package/dist/chunk-BWIVLBZY.js.map +0 -7
- package/dist/chunk-GKAC6HNS.js.map +0 -7
- package/dist/chunk-HVJWUXJL.js +0 -65
- package/dist/chunk-HVJWUXJL.js.map +0 -7
- package/dist/chunk-KP35JQJ7.js +0 -8
- package/dist/chunk-O63J4YN5.js +0 -2
- package/dist/chunk-YINVPQ2V.js +0 -6
- package/dist/chunk-YINVPQ2V.js.map +0 -7
- package/dist/chunk-ZCRXH55K.js +0 -2
- package/dist/chunk-ZN6HRN6U.js +0 -50
- package/dist/chunk-ZN6HRN6U.js.map +0 -7
- package/dist/esm-BEXWGPJL.js +0 -37
- package/dist/esm-BEXWGPJL.js.map +0 -7
- package/dist/login-M6YPWB3H.js +0 -2
- package/dist/logout-QLW45MMK.js +0 -7
- package/dist/push-KUORLNK6.js +0 -2
- /package/dist/{chunk-PRAA2FG3.js.map → chunk-5VLIBRPJ.js.map} +0 -0
- /package/dist/{chunk-P7E7PAMQ.js.map → chunk-GFQYFEEH.js.map} +0 -0
- /package/dist/{chunk-O63J4YN5.js.map → chunk-SX5LO3XQ.js.map} +0 -0
- /package/dist/{chunk-OTYPO33S.js.map → chunk-U5I2YBJK.js.map} +0 -0
- /package/dist/{login-M6YPWB3H.js.map → login-UU4MWB6Y.js.map} +0 -0
- /package/dist/{push-KUORLNK6.js.map → push-7S6V2HSB.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as g}from"./chunk-
|
|
1
|
+
import{b as g}from"./chunk-HAYHNB7Q.js";import{i as f}from"./chunk-KW4V2PJW.js";import{w as u,x as c}from"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import{ba as m,ga as i,ha as l,ia as o}from"./chunk-XOSBJSTW.js";import"./chunk-GFQYFEEH.js";import{a,h as p}from"./chunk-7DYQUG5M.js";p();var U=a(()=>i`
|
|
2
2
|
List the apps available to the currently logged-in user.
|
|
3
3
|
|
|
4
4
|
{bold Usage}
|
|
@@ -8,4 +8,4 @@ import{b as g}from"./chunk-L4OG4HIV.js";import{i as f}from"./chunk-BWIVLBZY.js";
|
|
|
8
8
|
|
|
9
9
|
Visit https://gadget.new to create one!
|
|
10
10
|
`;return}if(m.isInteractive)for(let[r,t]of c(e))o(i`{grey ${r}}`),g({json:t,headers:["Name","Domain"],rows:t.map(n=>[n.slug,n.primaryDomain])}),o("");else{let r="";for(let t of e)r+=l`${t.slug}\t${t.primaryDomain}`;o({json:e,content:r})}},"run");export{j as run,U as usage};
|
|
11
|
-
//# sourceMappingURL=list-
|
|
11
|
+
//# sourceMappingURL=list-OSMGHITM.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/commands/list.ts"],
|
|
4
4
|
"sourcesContent": ["import { getApplications, groupByTeam } from \"../services/app/app.js\";\nimport type { Run, Usage } from \"../services/command/command.js\";\nimport { output } from \"../services/output/output.js\";\nimport { println } from \"../services/output/print.js\";\nimport { sprint, sprintln } from \"../services/output/sprint.js\";\nimport { printTable } from \"../services/output/table.js\";\nimport { getUserOrLogin } from \"../services/user/user.js\";\n\nexport const usage: Usage = () => sprint`\n List the apps available to the currently logged-in user.\n\n {bold Usage}\n ggt list\n`;\n\nexport const run: Run = async (ctx) => {\n await getUserOrLogin(ctx, \"list\");\n\n const availableApps = await getApplications(ctx);\n if (availableApps.length === 0) {\n println`\n It doesn't look like you have any applications.\n\n Visit https://gadget.new to create one!\n `;\n return;\n }\n\n if (output.isInteractive) {\n for (const [teamName, apps] of groupByTeam(availableApps)) {\n println(sprint`{grey ${teamName}}`);\n printTable({\n json: apps,\n headers: [\"Name\", \"Domain\"],\n rows: apps.map((app) => [app.slug, app.primaryDomain]),\n });\n println(\"\");\n }\n } else {\n let simpleOutput = \"\";\n for (const app of availableApps) {\n simpleOutput += sprintln`${app.slug}\\t${app.primaryDomain}`;\n }\n\n println({ json: availableApps, content: simpleOutput });\n }\n};\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "kSAAAA,IAQO,IAAMC,EAAeC,EAAA,IAAMC;AAAA;AAAA;AAAA;AAAA;AAAA,EAAN,SAOfC,EAAWF,EAAA,MAAOG,GAAQ,CACrC,MAAMC,EAAeD,EAAK,MAAM,EAEhC,IAAME,EAAgB,MAAMC,EAAgBH,CAAG,EAC/C,GAAIE,EAAc,SAAW,EAAG,CAC9BE;AAAA;AAAA;AAAA;AAAA,MAKA,MACF,CAEA,GAAIC,EAAO,cACT,OAAW,CAACC,EAAUC,CAAI,IAAKC,EAAYN,CAAa,EACtDE,EAAQN,UAAeQ,CAAQ,GAAG,EAClCG,EAAW,CACT,KAAMF,EACN,QAAS,CAAC,OAAQ,QAAQ,EAC1B,KAAMA,EAAK,IAAKG,GAAQ,CAACA,EAAI,KAAMA,EAAI,aAAa,CAAC,CACvD,CAAC,EACDN,EAAQ,EAAE,MAEP,CACL,IAAIO,EAAe,GACnB,QAAWD,KAAOR,EAChBS,GAAgBC,IAAWF,EAAI,IAAI,KAAKA,EAAI,aAAa,GAG3DN,EAAQ,CAAE,KAAMF,EAAe,QAASS,CAAa,CAAC,CACxD,CACF,EA/BwB",
|
|
6
6
|
"names": ["init_cjs", "usage", "__name", "sprint", "run", "ctx", "getUserOrLogin", "availableApps", "getApplications", "println", "output", "teamName", "apps", "groupByTeam", "printTable", "app", "simpleOutput", "sprintln"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{e as a,f as b,g as c}from"./chunk-KW4V2PJW.js";import"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import"./chunk-XOSBJSTW.js";import"./chunk-GFQYFEEH.js";import"./chunk-7DYQUG5M.js";export{c as login,b as run,a as usage};
|
|
2
|
+
//# sourceMappingURL=login-UU4MWB6Y.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{d as s,e as i}from"./chunk-5VLIBRPJ.js";import{ga as r,ia as e}from"./chunk-XOSBJSTW.js";import{a as o,h as t}from"./chunk-7DYQUG5M.js";t();var p=o(()=>r`
|
|
2
|
+
Log out of your account.
|
|
3
|
+
|
|
4
|
+
{bold Usage}
|
|
5
|
+
ggt logout
|
|
6
|
+
`,"usage"),d=o(n=>{s(n)?(i(n,void 0),e("Goodbye")):e("You are not logged in")},"run");export{d as run,p as usage};
|
|
7
|
+
//# sourceMappingURL=logout-XPKPHMRV.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/commands/logout.ts"],
|
|
4
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 { readSession, writeSession } from \"../services/user/session.js\";\n\nexport const usage: Usage = () => sprint`\n Log out of your account.\n\n {bold Usage}\n ggt logout\n`;\n\nexport const run: Run = (ctx) => {\n const token = readSession(ctx);\n if (token) {\n writeSession(ctx, undefined);\n println(\"Goodbye\");\n } else {\n println(\"You are not logged in\");\n }\n};\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "+IAAAA,IAKO,IAAMC,EAAeC,EAAA,IAAMC;AAAA;AAAA;AAAA;AAAA;AAAA,EAAN,SAOfC,EAAWF,EAACG,GAAQ,CACjBC,EAAYD,CAAG,GAE3BE,EAAaF,EAAK,MAAS,EAC3BG,EAAQ,SAAS,GAEjBA,EAAQ,uBAAuB,CAEnC,EARwB",
|
|
6
6
|
"names": ["init_cjs", "usage", "__name", "sprint", "run", "ctx", "readSession", "writeSession", "println"]
|
|
7
7
|
}
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as
|
|
2
|
+
import{a as H}from"./chunk-XE5GH5GR.js";import{a as C,b as E}from"./chunk-Z7JIVKEF.js";import{a as F,b as f,d as J,e as j,f as D}from"./chunk-U5I2YBJK.js";import{E as R,F as T,e as u,f as x,l as K,p as A}from"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import{J as a,X as N,Y as d,b,ba as y,da as w,e as c,f as O,ga as g,ia as p,z as V}from"./chunk-XOSBJSTW.js";import{a as S}from"./chunk-GFQYFEEH.js";import{a as r,f as m,h as n}from"./chunk-7DYQUG5M.js";n();n();var $=m(S(),1);n();var k=m(F(),1);n();var P=m(K(),1),h=m(V(),1),v=m(S(),1),I=m(H(),1);import z from"node:assert";import G from"node:path";var q=(0,v.default)("12 hours"),Q=c.object({name:c.literal("ggt"),"dist-tags":c.object({latest:c.string(),experimental:c.string()})}),Y=r(async o=>{let t=await T({context:{ctx:o},method:"GET",url:"https://registry.npmjs.org/ggt",responseType:"json",resolveBodyOnly:!0,timeout:{request:(0,v.default)("5s")}});return Q.parse(t)["dist-tags"]},"getDistTags"),W=r(async o=>{try{let t=Number(await h.default.readFile(G.join(d.cacheDir,"last-update-check"),"utf8"));return z(!Number.isNaN(t)),(0,P.default)().isAfter(t+q)}catch(t){return o.log.trace("failed to check for updates",{error:t}),!0}},"shouldCheckForUpdate"),M=r(async o=>{try{if(!await W(o))return;await h.default.outputFile(G.join(d.cacheDir,"last-update-check"),String(Date.now()));let i=await Y(o),e,s,l;a.version.includes("experimental")?(e=i.experimental,s=a.version!==e,l=g`
|
|
3
3
|
Update available! {red ${a.version}} → {green ${e}}
|
|
4
4
|
Run "npm install -g ${a.name}@experimental" to update.
|
|
5
5
|
`):(e=i.latest,s=I.default.lt(a.version,e),l=g`
|
package/dist/main.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/main.ts", "../src/ggt.ts", "../src/commands/root.ts", "../src/services/output/update.ts", "../src/services/util/json.ts"],
|
|
4
4
|
"sourcesContent": ["#!/usr/bin/env node\n\nimport { ggt } from \"./ggt.js\";\n\nawait ggt();\n", "import chalk from \"chalk\";\nimport ms from \"ms\";\nimport * as root from \"./commands/root.js\";\nimport { parseArgs } from \"./services/command/arg.js\";\nimport { Context } from \"./services/command/context.js\";\nimport { output } from \"./services/output/output.js\";\nimport { println } from \"./services/output/print.js\";\nimport { installErrorHandlers, reportErrorAndExit } from \"./services/output/report.js\";\nimport { activeSpinner, spin } from \"./services/output/spinner.js\";\nimport { installJsonExtensions } from \"./services/util/json.js\";\n\nexport const ggt = async (ctx = Context.init({ name: \"ggt\" })): Promise<void> => {\n if (process.env[\"GADGET_EDITOR_TERMINAL_SESSION_ID\"]) {\n println(\"Running ggt in the Gadget editor's terminal is not supported.\");\n return process.exit(1);\n }\n\n try {\n const rootArgs = parseArgs(root.args, { argv: process.argv.slice(2), permissive: true });\n\n installJsonExtensions();\n await installErrorHandlers(ctx, rootArgs);\n installSignalHandler(ctx);\n\n await root.run(ctx, rootArgs);\n } catch (error) {\n await reportErrorAndExit(ctx, error);\n }\n};\n\nconst installSignalHandler = (ctx: Context): void => {\n let stopping = false;\n\n for (const signal of [\"SIGINT\", \"SIGTERM\"] as const) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n process.on(signal, async () => {\n if (stopping) {\n return;\n }\n\n stopping = true;\n ctx.log.trace(\"received signal\", { signal });\n\n setTimeout(() => {\n // when ggt is run with npx, and the user presses ctrl+c, ggt\n // receives SIGINT twice in quick succession. in order to\n // prevent the second SIGINT from triggering the force exit\n // listener, we wait a bit in this setTimeout before adding it\n process.once(signal, () => {\n println(\" Exiting immediately\");\n process.exit(1);\n });\n }, ms(\"100ms\")).unref();\n\n // ctrl+c was pressed, so we need to clear the line\n output.writeStdout(\"\\n\");\n\n // if there was any sticky text, it needs to be persisted now\n activeSpinner?.clear();\n output.persistFooter();\n\n const spinner = spin({\n successSymbol: \"\uD83D\uDC4B\",\n content: `Stopping ${chalk.gray(\"Press Ctrl+C again to force\")}`,\n });\n\n try {\n ctx.abort();\n await ctx.done;\n spinner.succeed(\"Goodbye!\");\n } catch (error) {\n spinner.fail();\n await reportErrorAndExit(ctx, error);\n }\n });\n }\n};\n", "import arg from \"arg\";\nimport { parseArgs, type ArgsDefinition, type ArgsDefinitionResult } from \"../services/command/arg.js\";\nimport { Commands, importCommand, isCommand, type Run, type Usage } from \"../services/command/command.js\";\nimport { verbosityToLevel } from \"../services/output/log/level.js\";\nimport { println } from \"../services/output/print.js\";\nimport { reportErrorAndExit } from \"../services/output/report.js\";\nimport { sprint } from \"../services/output/sprint.js\";\nimport { warnIfUpdateAvailable } from \"../services/output/update.js\";\nimport { sortBySimilar } from \"../services/util/collection.js\";\nimport { isNil } from \"../services/util/is.js\";\n\nexport type RootArgs = typeof args;\nexport type RootArgsResult = ArgsDefinitionResult<RootArgs>;\n\nexport const args = {\n \"-h\": { type: Boolean },\n \"--help\": { type: Boolean },\n \"--verbose\": { type: arg.COUNT, alias: [\"-v\", \"--debug\"] },\n \"--telemetry\": { type: Boolean },\n \"--json\": { type: Boolean },\n} satisfies ArgsDefinition;\n\nexport const usage: Usage = () => {\n return sprint`\n The command-line interface for Gadget.\n\n {gray Usage}\n ggt [COMMAND]\n\n {gray Commands}\n dev Start developing your application\n deploy Deploy your environment to production\n status Show your local and environment's file changes\n push Push your local files to your environment\n pull Pull your environment's files to your local computer\n add Add models, fields, actions and routes to your app\n open Open a Gadget location in your browser\n list List your available applications\n login Log in to your account\n logout Log out of your account\n whoami Print the currently logged in account\n version Print this version of ggt\n\n {gray Flags}\n -h, --help Print how to use a command\n -v, --verbose Print more verbose output\n --telemetry Enable telemetry\n\n Run \"ggt [COMMAND] -h\" for more information about a specific command.\n `;\n};\n\nexport const run: Run<RootArgs> = async (parent, args): Promise<void> => {\n const ctx = parent.child({ name: \"root\" });\n\n if (args[\"--json\"]) {\n process.env[\"GGT_LOG_FORMAT\"] = \"json\";\n }\n\n if (args[\"--verbose\"]) {\n process.env[\"GGT_LOG_LEVEL\"] = verbosityToLevel(args[\"--verbose\"]).toString();\n }\n\n await warnIfUpdateAvailable(ctx);\n\n let commandName = args._.shift();\n if (isNil(commandName)) {\n println(usage(ctx));\n process.exit(0);\n }\n\n if (commandName === \"sync\") {\n ctx.log.debug('renaming \"sync\" to \"dev\" for backwards compatibility');\n commandName = \"dev\";\n }\n\n if (!isCommand(commandName)) {\n const [closest] = sortBySimilar(commandName, Commands);\n println`\n Unknown command {yellow ${commandName}}\n\n Did you mean {blueBright ${closest}}?\n\n Run {gray ggt --help} for usage\n `;\n process.exit(1);\n }\n\n const command = await importCommand(commandName);\n\n if (args[\"-h\"] ?? args[\"--help\"]) {\n println(command.usage(ctx));\n process.exit(0);\n }\n\n try {\n await command.run(ctx.child({ name: commandName }), parseArgs(command.args ?? {}, { argv: args._ }));\n } catch (error) {\n await reportErrorAndExit(ctx, error);\n }\n};\n", "import boxen from \"boxen\";\nimport dayjs from \"dayjs\";\nimport fs from \"fs-extra\";\nimport ms from \"ms\";\nimport assert from \"node:assert\";\nimport path from \"node:path\";\nimport semver from \"semver\";\nimport { z } from \"zod\";\nimport type { Context } from \"../command/context.js\";\nimport { config } from \"../config/config.js\";\nimport { http } from \"../http/http.js\";\nimport { packageJson } from \"../util/package-json.js\";\nimport { println } from \"./print.js\";\nimport { sprint } from \"./sprint.js\";\n\nconst UPDATE_CHECK_FREQUENCY = ms(\"12 hours\");\n\nconst Registry = z.object({\n name: z.literal(\"ggt\"),\n \"dist-tags\": z.object({\n latest: z.string(),\n experimental: z.string(),\n }),\n});\n\ntype Registry = z.infer<typeof Registry>;\n\nexport const getDistTags = async (ctx: Context): Promise<Registry[\"dist-tags\"]> => {\n const json = await http({\n context: { ctx },\n method: \"GET\",\n url: \"https://registry.npmjs.org/ggt\",\n responseType: \"json\",\n resolveBodyOnly: true,\n timeout: {\n request: ms(\"5s\"),\n },\n });\n\n return Registry.parse(json)[\"dist-tags\"];\n};\n\nexport const shouldCheckForUpdate = async (ctx: Context): Promise<boolean> => {\n try {\n const lastCheck = Number(await fs.readFile(path.join(config.cacheDir, \"last-update-check\"), \"utf8\"));\n assert(!Number.isNaN(lastCheck));\n return dayjs().isAfter(lastCheck + UPDATE_CHECK_FREQUENCY);\n } catch (error) {\n ctx.log.trace(\"failed to check for updates\", { error });\n return true;\n }\n};\n\n/**\n * Checks for updates to the `ggt` npm package and logs a warning\n * message if an update is available.\n *\n * @returns A Promise that resolves with void when the check is\n * complete.\n */\nexport const warnIfUpdateAvailable = async (ctx: Context): Promise<void> => {\n try {\n const shouldCheck = await shouldCheckForUpdate(ctx);\n if (!shouldCheck) {\n return;\n }\n\n await fs.outputFile(path.join(config.cacheDir, \"last-update-check\"), String(Date.now()));\n\n const tags = await getDistTags(ctx);\n\n let latest: string;\n let updateAvailable: boolean;\n let updateMessage: string;\n\n if (packageJson.version.includes(\"experimental\")) {\n // this is an experimental release\n latest = tags.experimental;\n updateAvailable = packageJson.version !== latest;\n updateMessage = sprint`\n Update available! {red ${packageJson.version}} \u2192 {green ${latest}}\n Run \"npm install -g ${packageJson.name}@experimental\" to update.\n `;\n } else {\n // this is a stable release\n latest = tags.latest;\n updateAvailable = semver.lt(packageJson.version, latest);\n updateMessage = sprint`\n Update available! {red ${packageJson.version}} \u2192 {green ${latest}}\n Changelog: https://github.com/gadget-inc/ggt/releases/tag/v${latest}\n Run \"npm install -g ${packageJson.name}\" to update.\n `;\n }\n\n if (updateAvailable) {\n ctx.log.info(\"update available\", { current: packageJson.version, latest });\n println(\n boxen(updateMessage, {\n padding: 1,\n borderStyle: \"round\",\n textAlignment: \"center\",\n }),\n );\n }\n } catch (error) {\n ctx.log.error(\"failed to check for updates\", { error });\n }\n};\n", "/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/consistent-type-definitions */\n\ndeclare global {\n interface BigInt {\n toJSON?(): string;\n }\n interface Map<K, V> {\n toJSON?(): Record<string, V>;\n }\n interface Set<T> {\n toJSON?(): T[];\n }\n}\n\nconst bigintToJSON = function (this: bigint): string {\n return String(this);\n};\n\nconst mapToJSON = function <K, V>(this: Map<K, V>): Record<string, V> {\n return Object.fromEntries(this);\n};\n\nconst setToJSON = function <T>(this: Set<T>): T[] {\n return Array.from(this);\n};\n\nexport const installJsonExtensions = (): void => {\n if (!Object.prototype.hasOwnProperty.call(BigInt, \"toJSON\")) {\n BigInt.prototype.toJSON = bigintToJSON;\n }\n\n if (!Object.prototype.hasOwnProperty.call(Map, \"toJSON\")) {\n Map.prototype.toJSON = mapToJSON;\n }\n\n if (!Object.prototype.hasOwnProperty.call(Set, \"toJSON\")) {\n Set.prototype.toJSON = setToJSON;\n }\n};\n\nexport const uninstallJsonExtensions = (): void => {\n if (BigInt.prototype.toJSON === bigintToJSON) {\n delete BigInt.prototype.toJSON;\n }\n\n if (Map.prototype.toJSON === mapToJSON) {\n delete Map.prototype.toJSON;\n }\n\n if (Set.prototype.toJSON === setToJSON) {\n delete Set.prototype.toJSON;\n }\n};\n"],
|
|
5
|
-
"mappings": ";
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["init_cjs", "init_cjs", "import_ms", "init_cjs", "import_arg", "init_cjs", "import_dayjs", "import_fs_extra", "import_ms", "import_semver", "assert", "path", "UPDATE_CHECK_FREQUENCY", "ms", "Registry", "z", "getDistTags", "__name", "ctx", "json", "http", "shouldCheckForUpdate", "lastCheck", "fs", "path", "config", "assert", "dayjs", "error", "warnIfUpdateAvailable", "tags", "latest", "updateAvailable", "updateMessage", "packageJson", "sprint", "semver", "println", "boxen", "args", "arg", "usage", "__name", "sprint", "run", "parent", "ctx", "verbosityToLevel", "warnIfUpdateAvailable", "commandName", "isNil", "println", "isCommand", "closest", "sortBySimilar", "Commands", "command", "importCommand", "parseArgs", "error", "reportErrorAndExit", "init_cjs", "bigintToJSON", "__name", "mapToJSON", "setToJSON", "installJsonExtensions", "ggt", "__name", "ctx", "Context", "println", "rootArgs", "parseArgs", "args", "installJsonExtensions", "installErrorHandlers", "installSignalHandler", "run", "error", "reportErrorAndExit", "stopping", "signal", "ms", "output", "activeSpinner", "spinner", "spin", "source_default", "ggt"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as w,l as u,m as $,n as O,o as B}from"./chunk-
|
|
1
|
+
import{g as w,l as u,m as $,n as O,o as B}from"./chunk-3B2GY4UU.js";import{c as p}from"./chunk-U5I2YBJK.js";import"./chunk-HN3YKQ3C.js";import{d as r}from"./chunk-KW4V2PJW.js";import{p as d,y as v}from"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import{ga as i,ia as s,n as f}from"./chunk-XOSBJSTW.js";import"./chunk-GFQYFEEH.js";import{a as g,h as y}from"./chunk-7DYQUG5M.js";y();var J={...$,"--show-all":{type:Boolean}},j=g(m=>i`
|
|
2
2
|
This command opens a specific Gadget page in your browser, allowing you to directly access
|
|
3
3
|
various parts of your application's interface such as logs, permissions, data views, or
|
|
4
4
|
schemas.
|
|
@@ -71,4 +71,4 @@ import{g as w,l as u,m as $,n as O,o as B}from"./chunk-JOWMHVPF.js";import{c as
|
|
|
71
71
|
`)}await r(`https://${e.environment.application.primaryDomain}/edit/${e.environment.name}/model/${n}/${o}`),s`
|
|
72
72
|
Opened ${o} viewer for environment {cyanBright ${e.environment.name}} for model {cyanBright ${n}}.
|
|
73
73
|
`;break}default:f(a)}},"run"),b=["logs","permissions","data","schema"];export{J as args,E as run,j as usage};
|
|
74
|
-
//# sourceMappingURL=open-
|
|
74
|
+
//# sourceMappingURL=open-SP5XOXPG.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/commands/open.ts"],
|
|
4
4
|
"sourcesContent": ["import open from \"open\";\nimport { getModels } from \"../services/app/app.js\";\nimport { ArgError } from \"../services/command/arg.js\";\nimport type { Run, Usage } from \"../services/command/command.js\";\nimport { UnknownDirectoryError } from \"../services/filesync/error.js\";\nimport { SyncJson, SyncJsonArgs, loadSyncJsonDirectory } from \"../services/filesync/sync-json.js\";\nimport { println } from \"../services/output/print.js\";\nimport { select } from \"../services/output/select.js\";\nimport { sprint } from \"../services/output/sprint.js\";\nimport { sortBySimilar } from \"../services/util/collection.js\";\nimport { isNever } from \"../services/util/is.js\";\n\nexport type OpenArgs = typeof args;\n\nexport const args = {\n ...SyncJsonArgs,\n \"--show-all\": { type: Boolean },\n};\n\nexport const usage: Usage = (_ctx) => {\n return sprint`\n This command opens a specific Gadget page in your browser, allowing you to directly access\n various parts of your application's interface such as logs, permissions, data views, or\n schemas.\n\n {gray Usage}\n ggt open [LOCATION] [model_name] [--show-all] [options]\n\n LOCATION: specifies the part of Gadget to open, by default it'll open the apps home page:\n\n + logs Opens logs\n + permissions Opens permissions\n + data Opens data editor for a specific model\n + schema Opens schema editor for a specific model\n\n {gray Options}\n -a, --app <app_name> Selects the application to open in your browser. Default set on \".gadget/sync.json\"\n -e, --env <env_name> Selects the environment to open in your browser. Default set on \".gadget/sync.json\"\n --show-all Shows all schema, or data options by listing your available models\n\n {gray Examples}\n Opens editor home\n {cyanBright $ ggt open}\n\n Opens logs\n {cyanBright $ ggt open logs}\n\n Opens permissions\n {cyanBright $ ggt open permissions}\n\n Opens data editor for the 'post' model\n {cyanBright $ ggt open data post}\n\n Opens schema for 'post' model\n {cyanBright $ ggt open schema post}\n\n Shows all models available in the data editor\n {cyanBright $ ggt open data -show-all}\n\n Shows all models available in the schema viewer\n {cyanBright $ ggt open schema --show-all}\n\n Opens data editor for 'post' model of app 'myBlog' in the 'staging' environment\n {cyanBright $ ggt open data post --app myBlog --env staging}\n `;\n};\n\nexport const run: Run<OpenArgs> = async (ctx, args) => {\n const directory = await loadSyncJsonDirectory(process.cwd());\n const syncJson = await SyncJson.load(ctx, { command: \"open\", args, directory });\n if (!syncJson) {\n throw new UnknownDirectoryError({ command: \"open\", args, directory });\n }\n\n const location = args._[0] as Location | undefined;\n if (!location) {\n await open(`https://${syncJson.environment.application.primaryDomain}/edit/${syncJson.environment.name}`);\n println`\n Opened editor for environment {cyanBright ${syncJson.environment.name}}.\n `;\n return;\n }\n\n if (!Locations.includes(location)) {\n const [closest] = sortBySimilar(location, Locations);\n throw new ArgError(sprint`\n Unknown location {yellow ${location}}\n\n Did you mean {blueBright ${closest}}?\n\n Run \"ggt open --help\" for usage\n `);\n }\n\n switch (location) {\n case \"logs\": {\n await open(`https://${syncJson.environment.application.primaryDomain}/edit/${syncJson.environment.name}/logs`);\n println`\n Opened log viewer for environment {cyanBright ${syncJson.environment.name}}.\n `;\n break;\n }\n case \"permissions\": {\n await open(`https://${syncJson.environment.application.primaryDomain}/edit/${syncJson.environment.name}/settings/permissions`);\n println`\n Opened permissions settings for environment {cyanBright ${syncJson.environment.name}}.\n `;\n break;\n }\n case \"data\":\n case \"schema\": {\n const view = args._[0];\n const remoteModelApiIdentifiers = (await getModels(ctx, syncJson.environment)).map((e) => e.apiIdentifier);\n\n let modelApiIdentifier = args._[1];\n if (!modelApiIdentifier) {\n if (args[\"--show-all\"]) {\n modelApiIdentifier = await select({ choices: remoteModelApiIdentifiers, content: \"Which model do you wish to open?\" });\n } else {\n throw new ArgError(sprint`\n \"ggt open ${view}\" requires a model to be specified.\n\n Run with \"--show-all\" to choose from available models.\n\n ggt open ${view} --show-all\n `);\n }\n }\n\n if (!remoteModelApiIdentifiers.includes(modelApiIdentifier)) {\n const [closest] = sortBySimilar(modelApiIdentifier, remoteModelApiIdentifiers);\n throw new ArgError(sprint`\n Unknown model {yellow ${modelApiIdentifier}}\n\n Did you mean {blueBright ${closest}}?\n\n Run with \"--show-all\" to choose from available models.\n\n ggt open ${view} --show-all\n `);\n }\n\n await open(\n `https://${syncJson.environment.application.primaryDomain}/edit/${syncJson.environment.name}/model/${modelApiIdentifier}/${view}`,\n );\n println`\n Opened ${view} viewer for environment {cyanBright ${syncJson.environment.name}} for model {cyanBright ${modelApiIdentifier}}.\n `;\n break;\n }\n default:\n isNever(location);\n }\n};\n\nconst Locations = [\"logs\", \"permissions\", \"data\", \"schema\"] as const;\n\ntype Location = (typeof Locations)[number];\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "8XAAAA,IAcO,IAAMC,EAAO,CAClB,GAAGC,EACH,aAAc,CAAE,KAAM,OAAQ,CAChC,EAEaC,EAAeC,EAACC,GACpBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADmB,SAgDfC,EAAqBH,EAAA,MAAOI,EAAKP,IAAS,CACrD,IAAMQ,EAAY,MAAMC,EAAsB,QAAQ,IAAI,CAAC,EACrDC,EAAW,MAAMC,EAAS,KAAKJ,EAAK,CAAE,QAAS,OAAQ,KAAAP,EAAM,UAAAQ,CAAU,CAAC,EAC9E,GAAI,CAACE,EACH,MAAM,IAAIE,EAAsB,CAAE,QAAS,OAAQ,KAAAZ,EAAM,UAAAQ,CAAU,CAAC,EAGtE,IAAMK,EAAWb,EAAK,EAAE,CAAC,EACzB,GAAI,CAACa,EAAU,CACb,MAAMC,EAAK,WAAWJ,EAAS,YAAY,YAAY,aAAa,SAASA,EAAS,YAAY,IAAI,EAAE,EACxGK;AAAA,kDAC8CL,EAAS,YAAY,IAAI;AAAA,MAEvE,MACF,CAEA,GAAI,CAACM,EAAU,SAASH,CAAQ,EAAG,CACjC,GAAM,CAACI,CAAO,EAAIC,EAAcL,EAAUG,CAAS,EACnD,MAAM,IAAIG,EAASd;AAAA,iCACUQ,CAAQ;AAAA;AAAA,iCAERI,CAAO;AAAA;AAAA;AAAA,KAGnC,CACH,CAEA,OAAQJ,EAAU,CAChB,IAAK,OAAQ,CACX,MAAMC,EAAK,WAAWJ,EAAS,YAAY,YAAY,aAAa,SAASA,EAAS,YAAY,IAAI,OAAO,EAC7GK;AAAA,wDACkDL,EAAS,YAAY,IAAI;AAAA,QAE3E,KACF,CACA,IAAK,cAAe,CAClB,MAAMI,EAAK,WAAWJ,EAAS,YAAY,YAAY,aAAa,SAASA,EAAS,YAAY,IAAI,uBAAuB,EAC7HK;AAAA,kEAC4DL,EAAS,YAAY,IAAI;AAAA,QAErF,KACF,CACA,IAAK,OACL,IAAK,SAAU,CACb,IAAMU,EAAOpB,EAAK,EAAE,CAAC,EACfqB,GAA6B,MAAMC,EAAUf,EAAKG,EAAS,WAAW,GAAG,IAAKa,GAAMA,EAAE,aAAa,EAErGC,EAAqBxB,EAAK,EAAE,CAAC,EACjC,GAAI,CAACwB,EACH,GAAIxB,EAAK,YAAY,EACnBwB,EAAqB,MAAMC,EAAO,CAAE,QAASJ,EAA2B,QAAS,kCAAmC,CAAC,MAErH,OAAM,IAAIF,EAASd;AAAA,wBACLe,CAAI;AAAA;AAAA;AAAA;AAAA,yBAIHA,CAAI;AAAA,WAClB,EAIL,GAAI,CAACC,EAA0B,SAASG,CAAkB,EAAG,CAC3D,GAAM,CAACP,CAAO,EAAIC,EAAcM,EAAoBH,CAAyB,EAC7E,MAAM,IAAIF,EAASd;AAAA,kCACOmB,CAAkB;AAAA;AAAA,qCAEfP,CAAO;AAAA;AAAA;AAAA;AAAA,uBAIrBG,CAAI;AAAA,SAClB,CACH,CAEA,MAAMN,EACJ,WAAWJ,EAAS,YAAY,YAAY,aAAa,SAASA,EAAS,YAAY,IAAI,UAAUc,CAAkB,IAAIJ,CAAI,EACjI,EACAL;AAAA,iBACWK,CAAI,uCAAuCV,EAAS,YAAY,IAAI,2BAA2Bc,CAAkB;AAAA,QAE5H,KACF,CACA,QACEE,EAAQb,CAAQ,CACpB,CACF,EAtFkC,OAwF5BG,EAAY,CAAC,OAAQ,cAAe,OAAQ,QAAQ",
|
|
6
6
|
"names": ["init_cjs", "args", "SyncJsonArgs", "usage", "__name", "_ctx", "sprint", "run", "ctx", "directory", "loadSyncJsonDirectory", "syncJson", "SyncJson", "UnknownDirectoryError", "location", "open_default", "println", "Locations", "closest", "sortBySimilar", "ArgError", "view", "remoteModelApiIdentifiers", "getModels", "e", "modelApiIdentifier", "select", "isNever"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{p as m}from"./chunk-A75V6SNW.js";import{m as c,n as p,o as g}from"./chunk-3B2GY4UU.js";import"./chunk-HAYHNB7Q.js";import"./chunk-Z7JIVKEF.js";import{c as l}from"./chunk-U5I2YBJK.js";import"./chunk-HN3YKQ3C.js";import"./chunk-KW4V2PJW.js";import"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import{ga as s,ia as i}from"./chunk-XOSBJSTW.js";import"./chunk-GFQYFEEH.js";import{a as r,h as a}from"./chunk-7DYQUG5M.js";a();var P={...c,"--env":{type:String,alias:["-e","--environment","--from"]},"--force":{type:Boolean,alias:"-f"}},A=r(e=>s`
|
|
2
2
|
Pulls your environment files to your local directory.
|
|
3
3
|
|
|
4
4
|
This command first tracks changes in your local directory since the last sync. If changes are
|
|
@@ -25,4 +25,4 @@ import{o as m}from"./chunk-GKAC6HNS.js";import{m as c,n as p,o as g}from"./chunk
|
|
|
25
25
|
|
|
26
26
|
Run "ggt pull -h" for more information.
|
|
27
27
|
`);let y=await g(process.cwd()),f=await p.loadOrInit(e,{command:"pull",args:o,directory:y}),t=new m(f),n=await t.hashes(e);if(n.environmentChangesToPull.size===0){i({ensureEmptyLineAbove:!0,content:"Nothing to pull."});return}n.localChangesToPush.size>0&&await t.print(e,{hashes:n}),await t.pull(e,{hashes:n,force:o["--force"]})},"run");export{P as args,S as run,A as usage};
|
|
28
|
-
//# sourceMappingURL=pull-
|
|
28
|
+
//# sourceMappingURL=pull-7JMGBM4A.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/commands/pull.ts"],
|
|
4
4
|
"sourcesContent": ["import { ArgError, type ArgsDefinition } from \"../services/command/arg.js\";\nimport type { Run, Usage } from \"../services/command/command.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 { sprint } from \"../services/output/sprint.js\";\n\nexport type PullArgs = typeof args;\n\nexport const args = {\n ...SyncJsonArgs,\n \"--env\": { type: String, alias: [\"-e\", \"--environment\", \"--from\"] },\n \"--force\": { type: Boolean, alias: \"-f\" },\n} satisfies ArgsDefinition;\n\nexport const usage: Usage = (_ctx) => {\n return sprint`\n Pulls your environment files to your local directory.\n\n This command first tracks changes in your local directory since the last sync. If changes are\n detected, you will be prompted to discard them or abort the pull.\n\n {gray Usage}\n ggt pull [options]\n\n {gray Options}\n -a, --app <app_name> Selects the app to pull your environment changes from. Default set on \".gadget/sync.json\"\n -e, --env, --from <env_name> Selects the environment to pull changes from. Default set on \".gadget/sync.json\"\n --force Forces a pull by discarding any changes made on your local directory since last sync\n --allow-different-directory Pulls changes from any environment directory, even if the \".gadget/sync.json\" file is missing\n --allow-different-app Pulls changes to a different app using --app command, instead of the one in the \u201C.gadget/sync.json\u201D file\n\n {gray Examples}\n Pull all development environment changes by discarding any changes made locally\n {cyanBright $ ggt pull --env development --force}\n `;\n};\n\nexport const run: Run<PullArgs> = async (ctx, args) => {\n if (args._.length > 0) {\n throw new ArgError(sprint`\n \"ggt pull\" does not take any positional arguments.\n\n If you are trying to pull changes to a specific directory,\n you must \"cd\" to that directory and then run \"ggt pull\".\n\n Run \"ggt pull -h\" for more information.\n `);\n }\n\n const directory = await loadSyncJsonDirectory(process.cwd());\n const syncJson = await SyncJson.loadOrInit(ctx, { command: \"pull\", args, directory });\n const filesync = new FileSync(syncJson);\n const hashes = await filesync.hashes(ctx);\n\n if (hashes.environmentChangesToPull.size === 0) {\n println({ ensureEmptyLineAbove: true, content: \"Nothing to pull.\" });\n return;\n }\n\n if (hashes.localChangesToPush.size > 0) {\n // show them the local changes they will discard\n await filesync.print(ctx, { hashes });\n }\n\n await filesync.pull(ctx, { hashes, force: args[\"--force\"] });\n};\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "0aAAAA,IASO,IAAMC,EAAO,CAClB,GAAGC,EACH,QAAS,CAAE,KAAM,OAAQ,MAAO,CAAC,KAAM,gBAAiB,QAAQ,CAAE,EAClE,UAAW,CAAE,KAAM,QAAS,MAAO,IAAK,CAC1C,EAEaC,EAAeC,EAACC,GACpBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADmB,SAuBfC,EAAqBH,EAAA,MAAOI,EAAKP,IAAS,CACrD,GAAIA,EAAK,EAAE,OAAS,EAClB,MAAM,IAAIQ,EAASH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOlB,EAGH,IAAMI,EAAY,MAAMC,EAAsB,QAAQ,IAAI,CAAC,EACrDC,EAAW,MAAMC,EAAS,WAAWL,EAAK,CAAE,QAAS,OAAQ,KAAAP,EAAM,UAAAS,CAAU,CAAC,EAC9EI,EAAW,IAAIC,EAASH,CAAQ,EAChCI,EAAS,MAAMF,EAAS,OAAON,CAAG,EAExC,GAAIQ,EAAO,yBAAyB,OAAS,EAAG,CAC9CC,EAAQ,CAAE,qBAAsB,GAAM,QAAS,kBAAmB,CAAC,EACnE,MACF,CAEID,EAAO,mBAAmB,KAAO,GAEnC,MAAMF,EAAS,MAAMN,EAAK,CAAE,OAAAQ,CAAO,CAAC,EAGtC,MAAMF,EAAS,KAAKN,EAAK,CAAE,OAAAQ,EAAQ,MAAOf,EAAK,SAAS,CAAE,CAAC,CAC7D,EA5BkC",
|
|
6
6
|
"names": ["init_cjs", "args", "SyncJsonArgs", "usage", "__name", "_ctx", "sprint", "run", "ctx", "ArgError", "directory", "loadSyncJsonDirectory", "syncJson", "SyncJson", "filesync", "FileSync", "hashes", "println"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a,b,c}from"./chunk-WQ4SFIE4.js";import"./chunk-A75V6SNW.js";import"./chunk-3B2GY4UU.js";import"./chunk-HAYHNB7Q.js";import"./chunk-Z7JIVKEF.js";import"./chunk-U5I2YBJK.js";import"./chunk-HN3YKQ3C.js";import"./chunk-KW4V2PJW.js";import"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import"./chunk-XOSBJSTW.js";import"./chunk-GFQYFEEH.js";import"./chunk-7DYQUG5M.js";export{a as args,c as run,b as usage};
|
|
2
|
+
//# sourceMappingURL=push-7S6V2HSB.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{l as p,m as f,p as h}from"./chunk-A75V6SNW.js";import{g as u,m as y,n as l,o as d}from"./chunk-3B2GY4UU.js";import"./chunk-HAYHNB7Q.js";import"./chunk-Z7JIVKEF.js";import{c as m}from"./chunk-U5I2YBJK.js";import"./chunk-HN3YKQ3C.js";import"./chunk-KW4V2PJW.js";import"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import{ga as a}from"./chunk-XOSBJSTW.js";import"./chunk-GFQYFEEH.js";import{a as r,h as g}from"./chunk-7DYQUG5M.js";g();var D=y,J=r(()=>a`
|
|
2
2
|
Shows file changes since last sync (e.g. $ggt dev, push, deploy etc.)
|
|
3
3
|
|
|
4
4
|
{gray Usage}
|
|
@@ -11,4 +11,4 @@ import{k as p,l as f,o as h}from"./chunk-GKAC6HNS.js";import{g as u,m as y,n as
|
|
|
11
11
|
|
|
12
12
|
Run "ggt status -h" for more information.
|
|
13
13
|
`);let i=await d(process.cwd()),o=await l.load(t,{command:"status",args:s,directory:i});if(!o)throw new u({command:"status",args:s,directory:i});o.print();let c=new h(o),n=await c.hashes(t);await c.print(t,{hashes:n});let e=p({localChanges:n.localChanges,environmentChanges:n.environmentChanges});e.size>0&&(t.log.debug("conflicts detected",{conflicts:e}),f({conflicts:e}))},"run");export{D as args,U as run,J as usage};
|
|
14
|
-
//# sourceMappingURL=status-
|
|
14
|
+
//# sourceMappingURL=status-CJVN2UZ6.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/commands/status.ts"],
|
|
4
4
|
"sourcesContent": ["import { ArgError, type ArgsDefinitionResult } from \"../services/command/arg.js\";\nimport type { Run, Usage } from \"../services/command/command.js\";\nimport { getConflicts, printConflicts } from \"../services/filesync/conflicts.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 { sprint } from \"../services/output/sprint.js\";\n\nexport type StatusArgs = typeof args;\nexport type StatusArgsResult = ArgsDefinitionResult<StatusArgs>;\n\nexport const args = SyncJsonArgs;\n\nexport const usage: Usage = () => {\n return sprint`\n Shows file changes since last sync (e.g. $ggt dev, push, deploy etc.)\n\n {gray Usage}\n ggt status\n `;\n};\n\nexport const run: Run<StatusArgs> = async (ctx, args) => {\n if (args._.length > 0) {\n throw new ArgError(sprint`\n \"ggt status\" does not take any positional arguments.\n\n If you are trying to see the status of a specific directory,\n you must \"cd\" to that directory and then run \"ggt status\".\n\n Run \"ggt status -h\" for more information.\n `);\n }\n\n const directory = await loadSyncJsonDirectory(process.cwd());\n const syncJson = await SyncJson.load(ctx, { command: \"status\", args, directory });\n if (!syncJson) {\n throw new UnknownDirectoryError({ command: \"status\", args, directory });\n }\n\n syncJson.print();\n\n const filesync = new FileSync(syncJson);\n const hashes = await filesync.hashes(ctx);\n await filesync.print(ctx, { hashes });\n\n const conflicts = getConflicts({ localChanges: hashes.localChanges, environmentChanges: hashes.environmentChanges });\n if (conflicts.size > 0) {\n ctx.log.debug(\"conflicts detected\", { conflicts });\n printConflicts({ conflicts });\n }\n};\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "ubAAAA,IAWO,IAAMC,EAAOC,EAEPC,EAAeC,EAAA,IACnBC;AAAA;AAAA;AAAA;AAAA;AAAA,IADmB,SASfC,EAAuBF,EAAA,MAAOG,EAAKN,IAAS,CACvD,GAAIA,EAAK,EAAE,OAAS,EAClB,MAAM,IAAIO,EAASH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOlB,EAGH,IAAMI,EAAY,MAAMC,EAAsB,QAAQ,IAAI,CAAC,EACrDC,EAAW,MAAMC,EAAS,KAAKL,EAAK,CAAE,QAAS,SAAU,KAAAN,EAAM,UAAAQ,CAAU,CAAC,EAChF,GAAI,CAACE,EACH,MAAM,IAAIE,EAAsB,CAAE,QAAS,SAAU,KAAAZ,EAAM,UAAAQ,CAAU,CAAC,EAGxEE,EAAS,MAAM,EAEf,IAAMG,EAAW,IAAIC,EAASJ,CAAQ,EAChCK,EAAS,MAAMF,EAAS,OAAOP,CAAG,EACxC,MAAMO,EAAS,MAAMP,EAAK,CAAE,OAAAS,CAAO,CAAC,EAEpC,IAAMC,EAAYC,EAAa,CAAE,aAAcF,EAAO,aAAc,mBAAoBA,EAAO,kBAAmB,CAAC,EAC/GC,EAAU,KAAO,IACnBV,EAAI,IAAI,MAAM,qBAAsB,CAAE,UAAAU,CAAU,CAAC,EACjDE,EAAe,CAAE,UAAAF,CAAU,CAAC,EAEhC,EA7BoC",
|
|
6
6
|
"names": ["init_cjs", "args", "SyncJsonArgs", "usage", "__name", "sprint", "run", "ctx", "ArgError", "directory", "loadSyncJsonDirectory", "syncJson", "SyncJson", "UnknownDirectoryError", "filesync", "FileSync", "hashes", "conflicts", "getConflicts", "printConflicts"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{J as n,ga as o,ia as r}from"./chunk-XOSBJSTW.js";import{a as t,h as e}from"./chunk-7DYQUG5M.js";e();var m=t(()=>o`
|
|
2
2
|
Print this version of ggt.
|
|
3
3
|
|
|
4
4
|
{gray Usage}
|
|
@@ -8,4 +8,4 @@ import{$ as r,A as n,Z as o}from"./chunk-HVJWUXJL.js";import{a as t,h as e}from"
|
|
|
8
8
|
When there is a new release of ggt, running ggt will show you a message letting you
|
|
9
9
|
know that an update is available.
|
|
10
10
|
`,"usage"),p=t(a=>{r(n.version)},"run");export{p as run,m as usage};
|
|
11
|
-
//# sourceMappingURL=version-
|
|
11
|
+
//# sourceMappingURL=version-NFFT7WG5.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/commands/version.ts"],
|
|
4
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 { packageJson } from \"../services/util/package-json.js\";\n\nexport const usage: Usage = () => sprint`\n Print this version of ggt.\n\n {gray Usage}\n ggt version\n\n {gray Updating ggt}\n When there is a new release of ggt, running ggt will show you a message letting you\n know that an update is available.\n`;\n\nexport const run: Run = (_ctx) => {\n println(packageJson.version);\n};\n"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "uGAAAA,IAKO,IAAMC,EAAeC,EAAA,IAAMC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAN,SAWfC,EAAWF,EAACG,GAAS,CAChCC,EAAQC,EAAY,OAAO,CAC7B,EAFwB",
|
|
6
6
|
"names": ["init_cjs", "usage", "__name", "sprint", "run", "_ctx", "println", "packageJson"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{h as s}from"./chunk-
|
|
1
|
+
import{h as s}from"./chunk-KW4V2PJW.js";import"./chunk-LPIHKY3M.js";import"./chunk-5VLIBRPJ.js";import{ga as n,ia as o}from"./chunk-XOSBJSTW.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-MU3POPXB.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/commands/whoami.ts"],
|
|
4
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": "
|
|
5
|
+
"mappings": "4NAAAA,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
6
|
"names": ["init_cjs", "usage", "__name", "sprint", "run", "ctx", "user", "getUser", "println"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gadgetinc/ggt",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "The command-line interface for Gadget",
|
|
5
5
|
"homepage": "https://github.com/gadget-inc/ggt",
|
|
6
6
|
"bugs": {
|
|
@@ -27,17 +27,17 @@
|
|
|
27
27
|
"/README.md"
|
|
28
28
|
],
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@changesets/cli": "^2.
|
|
30
|
+
"@changesets/cli": "^2.29.4",
|
|
31
31
|
"@graphql-codegen/add": "^5.0.3",
|
|
32
32
|
"@graphql-codegen/cli": "^5.0.4",
|
|
33
33
|
"@graphql-codegen/typescript": "^4.1.3",
|
|
34
|
-
"@graphql-codegen/typescript-operations": "^4.
|
|
35
|
-
"@sentry/node": "^
|
|
34
|
+
"@graphql-codegen/typescript-operations": "^4.6.0",
|
|
35
|
+
"@sentry/node": "^9.22.0",
|
|
36
36
|
"@types/eslint": "^8.56.7",
|
|
37
37
|
"@types/fast-levenshtein": "^0.0.4",
|
|
38
38
|
"@types/fs-extra": "^11.0.4",
|
|
39
39
|
"@types/ms": "^2.1.0",
|
|
40
|
-
"@types/node": "^18.19.
|
|
40
|
+
"@types/node": "^18.19.101",
|
|
41
41
|
"@types/node-notifier": "^8.0.5",
|
|
42
42
|
"@types/normalize-package-data": "^2.4.4",
|
|
43
43
|
"@types/normalize-path": "^3.0.2",
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
"esbuild": "^0.25.0",
|
|
62
62
|
"eslint": "^8.57.0",
|
|
63
63
|
"eslint-config-prettier": "^10.0.1",
|
|
64
|
-
"eslint-import-resolver-typescript": "^3.
|
|
64
|
+
"eslint-import-resolver-typescript": "^4.3.5",
|
|
65
65
|
"eslint-plugin-import": "^2.31.0",
|
|
66
|
-
"eslint-plugin-jsdoc": "^50.6.
|
|
66
|
+
"eslint-plugin-jsdoc": "^50.6.17",
|
|
67
67
|
"eslint-plugin-only-warn": "^1.1.0",
|
|
68
68
|
"eslint-plugin-unicorn": "^56.0.1",
|
|
69
69
|
"execa": "^8.0.1",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"fs-extra": "^11.3.0",
|
|
75
75
|
"get-port": "^7.1.0",
|
|
76
76
|
"got": "^13.0.0",
|
|
77
|
-
"graphql": "^16.
|
|
77
|
+
"graphql": "^16.11.0",
|
|
78
78
|
"graphql-ws": "^5.16.2",
|
|
79
79
|
"ignore": "^6.0.2",
|
|
80
80
|
"indent-string": "^5.0.0",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"normalize-package-data": "^7.0.0",
|
|
89
89
|
"normalize-path": "^3.0.0",
|
|
90
90
|
"npm-run-all": "^4.1.5",
|
|
91
|
-
"open": "^10.1.
|
|
91
|
+
"open": "^10.1.2",
|
|
92
92
|
"p-map": "^7.0.3",
|
|
93
93
|
"p-queue": "^8.1.0",
|
|
94
94
|
"p-retry": "^6.2.1",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"pluralize": "^8.0.0",
|
|
97
97
|
"prettier": "^3.5.1",
|
|
98
98
|
"prettier-plugin-organize-imports": "^4.1.0",
|
|
99
|
-
"prettier-plugin-packagejson": "^2.5.
|
|
99
|
+
"prettier-plugin-packagejson": "^2.5.14",
|
|
100
100
|
"remark": "^15.0.1",
|
|
101
101
|
"remark-gfm": "^4.0.1",
|
|
102
102
|
"remark-toc": "^9.0.0",
|
|
@@ -107,16 +107,16 @@
|
|
|
107
107
|
"stdin-discarder": "^0.2.2",
|
|
108
108
|
"string-width": "^7.2.0",
|
|
109
109
|
"strip-ansi": "^7.1.0",
|
|
110
|
-
"terminal-link": "^
|
|
110
|
+
"terminal-link": "^4.0.0",
|
|
111
111
|
"ts-dedent": "^2.2.0",
|
|
112
112
|
"ts-node": "^10.9.2",
|
|
113
|
-
"type-fest": "^4.
|
|
113
|
+
"type-fest": "^4.41.0",
|
|
114
114
|
"typescript": "^5.7.3",
|
|
115
|
-
"vitest": "^3.1.
|
|
115
|
+
"vitest": "^3.1.4",
|
|
116
116
|
"watcher": "^2.3.1",
|
|
117
117
|
"which": "^5.0.0",
|
|
118
118
|
"ws": "^8.18.0",
|
|
119
|
-
"zod": "^3.24.
|
|
119
|
+
"zod": "^3.24.4"
|
|
120
120
|
},
|
|
121
121
|
"packageManager": "pnpm@8.12.0",
|
|
122
122
|
"engines": {
|
package/dist/add-Q2YM34TO.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import{f as L,g as S,h as O,i as j,j as M,o as J}from"./chunk-GKAC6HNS.js";import{g as C,l as R,m as N,n as k,o as P}from"./chunk-JOWMHVPF.js";import"./chunk-L4OG4HIV.js";import"./chunk-KP35JQJ7.js";import{c as h}from"./chunk-OTYPO33S.js";import"./chunk-YINVPQ2V.js";import"./chunk-BWIVLBZY.js";import{a as _,f as E,g as $,j as u,n as F,p as w,x as B,y as U}from"./chunk-ZN6HRN6U.js";import"./chunk-PRAA2FG3.js";import{$ as f,Z as r,b as m,m as v}from"./chunk-HVJWUXJL.js";import"./chunk-P7E7PAMQ.js";import{a as g,h as b}from"./chunk-56W5U2JG.js";b();var y=class extends ${static{g(this,"AddClientError")}isBug=E.NO;constructor(t){let n="";if(v(t.cause)){let a=F(t.cause.map(e=>e.message));n=r` • ${a.map(e=>e.split(`
|
|
2
|
-
`).join(`
|
|
3
|
-
\u200E \u2022 `)).join(`
|
|
4
|
-
`)}`}else n=r`${t.cause}`;super(n)}render(){return`${m.redBright(u.cross)} Failed to add:
|
|
5
|
-
`+this.message}},me={...N},V=g(()=>r`
|
|
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
|
-
`,"usage"),ge=g(async(o,t)=>{let n=await P(process.cwd()),a=await k.load(o,{command:"add",args:t,directory:n});if(!a)throw new C({command:"add",args:t,directory:n});let e=new J(a),s=await e.hashes(o,!0);switch(s.inSync||await e.merge(o,{hashes:s,printEnvironmentChangesOptions:{limit:5},printLocalChangesOptions:{limit:5},quietly:!0}),f({ensureEmptyLineAbove:!0,content:`${m.greenBright(u.tick)} Sync completed ${M()}`}),t._[0]){case"model":await G(o,{args:t,filesync:e});break;case"action":await H(o,{args:t,filesync:e});break;case"route":await X(o,{args:t,filesync:e});break;case"field":await q(o,{args:t,filesync:e});break;default:f(V(o));return}},"run"),x=g(o=>{let t=[],n=[];return o.forEach(a=>{let e=/^(.*):+(.*)$/.exec(a);!e||e.length!==3||!e[1]||!e[2]?t.push(r`${a} is not a valid field definition`):n.push({name:e[1].replace(/:+/g,""),fieldType:e[2]})}),[n,t]},"parseFieldValues"),G=g(async(o,{args:t,filesync:n})=>{let a=n.syncJson,e=t._[1];if(!e)throw new h(r`Failed to add model, missing model path
|
|
43
|
-
|
|
44
|
-
{gray Usage}
|
|
45
|
-
{cyanBright ggt add model <model_name> [field_name:field_type ...]}`);let s=[];if(t._.length>2){let[c,p]=x(t._.slice(2));if(p.length>0)throw new h(r`
|
|
46
|
-
Failed to add model:
|
|
47
|
-
• ${p.join(`
|
|
48
|
-
\u2022 `)}
|
|
49
|
-
|
|
50
|
-
{gray Usage}
|
|
51
|
-
{cyanBright ggt add model ${e} [field_name:field_type ...]}`);s.push(...c)}let i;try{i=(await a.edit.mutate({mutation:L,variables:{path:e,fields:s.map(c=>({name:c.name,fieldType:c.fieldType}))}})).createModel}catch(c){throw c instanceof w?new y(c):c}f({ensureEmptyLineAbove:!0,content:m.gray("New model created in environment.")}),await n.writeToLocalFilesystem(o,{filesVersion:i.remoteFilesVersion,files:i.changed,delete:[]});let d=_.isSupported?_(e,`https://${a.environment.application.primaryDomain}/edit/${a.environment.name}/model/${e}/schema`):e;f({ensureEmptyLineAbove:!0,content:`${m.greenBright(u.tick)} Model ${m.cyanBright(d)} added successfully.`})},"modelSubCommand"),H=g(async(o,{args:t,filesync:n})=>{let a=n.syncJson,e=t._[1];if(!e)throw new h(r`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 s=await B(o,a.environment),i=await U(o,a.environment),d=e.split("/"),c,p=d.length>1?d.slice(0,d.length-1):d,A=d[d.length-1],D=s.find(l=>{let T=p[p.length-1];return l.apiIdentifier.toUpperCase()===T?.toUpperCase()&&l.namespace?.join("/")===p.slice(0,p.length-1).join("/")}),I=i.find(l=>l.namespace?.join("/")===p.join("/"));if(D&&I){let l=p.join("/");c=await R({choices:["models","actions"],content:r`
|
|
56
|
-
{bold Namespace Conflict:} The action '${A}.js' cannot be automatically added due to a namespace conflict.
|
|
57
|
-
|
|
58
|
-
How would you like to proceed?:
|
|
59
|
-
`,formatChoice:g(T=>{switch(T){case"models":return`As a Model action in ${m.gray(`models/${l}/${A}.js`)}`;case"actions":return`As an Action in ${m.gray(`actions/${l}/${A}.js`)}`}},"formatChoice")}),f({ensureEmptyLineAbove:!0,content:r`${m.yellowBright(u.info)} You can override the context of the action by specifying the context in the path. For example: {gray ggt add action ${c}/${e}}`})}try{let l=(await a.edit.mutate({mutation:S,variables:{path:c?`${c}/`+e:e}})).createAction;await n.writeToLocalFilesystem(o,{filesVersion:l.remoteFilesVersion,files:l.changed,delete:[]})}catch(l){throw l instanceof w?new y(l):l}f({ensureEmptyLineAbove:!0,content:`Action ${m.cyanBright(e)} added successfully.`})},"actionSubCommand"),X=g(async(o,{args:t,filesync:n})=>{let a=n.syncJson,e=t._[1],s=t._[2];if(!e)throw new h(r`Failed to add route, missing route method
|
|
60
|
-
|
|
61
|
-
{gray Usage}
|
|
62
|
-
{cyanBright ggt add route <HTTP_METHOD> <route_path>}`);if(!s)throw new h(r`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:O,variables:{method:e,path:s}})).createRoute;await n.writeToLocalFilesystem(o,{filesVersion:i.remoteFilesVersion,files:i.changed,delete:[]})}catch(i){throw i instanceof w?new y(i):i}f({ensureEmptyLineAbove:!0,content:`Route ${m.cyanBright(s)} added successfully.`})},"routeSubCommand"),q=g(async(o,{args:t,filesync:n})=>{let a=n.syncJson,e=t._[1]?.split("/");if(!e)throw new h(r`Failed to add field, invalid field path definition
|
|
66
|
-
|
|
67
|
-
{gray Usage}
|
|
68
|
-
{cyanBright ggt add field <model_path>/<field_name>:<field_type>}`);let s=[];if(e[1]){let[i,d]=x([e[1]]);if(d.length>0)throw new h(r`
|
|
69
|
-
Failed to add field:
|
|
70
|
-
• ${d.join(`
|
|
71
|
-
\u2022`)}
|
|
72
|
-
|
|
73
|
-
{gray Usage}
|
|
74
|
-
{cyanBright ggt add field ${e[0]}/<field_name>:<field_type>}`);s.push(...i)}else throw new h(r`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:j,variables:{path:e[0],fields:s.map(d=>({name:d.name,fieldType:d.fieldType}))}})).createModelFields;await n.writeToLocalFilesystem(o,{filesVersion:i.remoteFilesVersion,files:i.changed,delete:[]})}catch(i){throw i instanceof w?new y(i):i}f({ensureEmptyLineAbove:!0,content:`Field ${m.cyanBright(s[0]?.name)} added successfully.`})},"fieldSubCommand");export{y as AddClientError,me as args,ge as run,V as usage};
|
|
78
|
-
//# sourceMappingURL=add-Q2YM34TO.js.map
|
package/dist/add-Q2YM34TO.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
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, type ArgsDefinitionResult } 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\";\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 = {\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, 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, true);\n\n if (!hashes.inSync) {\n await filesync.merge(ctx, {\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 (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 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) => ({\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(\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, {\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, { 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 = (\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, { args, filesync }: { args: AddArgsResult; filesync: FileSync }): Promise<void> => {\n const syncJson = filesync.syncJson;\n\n const splitPathAndField = 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": "oiBAAAA,IA0BO,IAAMC,EAAN,cAA6BC,CAAS,CA1B7C,MA0B6C,CAAAC,EAAA,uBAC3C,MAAQC,EAAM,GAEd,YAAYC,EAAoB,CAC9B,IAAIC,EAAW,GAEf,GAAIC,EAAgBF,EAAM,KAAK,EAAG,CAChC,IAAMG,EAASC,EAAKJ,EAAM,MAAM,IAAKK,GAAMA,EAAE,OAAO,CAAC,EAErDJ,EAAWK,WAAgBH,EAAO,IAAK,GAAM,EAAE,MAAM;AAAA,CAAI,EAAE,KAAK;AAAA,mBAAY,CAAC,EAAE,KAAK;AAAA,CAAI,CAAC,EAC3F,MACEF,EAAWK,IAASN,EAAM,KAAK,GAGjC,MAAMC,CAAQ,CAChB,CAEmB,QAAiB,CAClC,MAAO,GAAGM,EAAM,UAAUC,EAAO,KAAK,CAAC;AAAA,GAAuB,KAAK,OACrE,CACF,EAKaC,GAAO,CAClB,GAAGC,CACL,EAEaC,EAAeb,EAAA,IACnBQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADmB,SAyCfM,GAAoBd,EAAA,MAAOe,EAAKJ,IAAS,CACpD,IAAMK,EAAY,MAAMC,EAAsB,QAAQ,IAAI,CAAC,EACrDC,EAAW,MAAMC,EAAS,KAAKJ,EAAK,CAAE,QAAS,MAAO,KAAAJ,EAAM,UAAAK,CAAU,CAAC,EAC7E,GAAI,CAACE,EACH,MAAM,IAAIE,EAAsB,CAAE,QAAS,MAAO,KAAAT,EAAM,UAAAK,CAAU,CAAC,EAGrE,IAAMK,EAAW,IAAIC,EAASJ,CAAQ,EAChCK,EAAS,MAAMF,EAAS,OAAON,EAAK,EAAI,EAiB9C,OAfKQ,EAAO,QACV,MAAMF,EAAS,MAAMN,EAAK,CACxB,OAAAQ,EACA,+BAAgC,CAC9B,MAAO,CACT,EACA,yBAA0B,CACxB,MAAO,CACT,EACA,QAAS,EACX,CAAC,EAGHC,EAAQ,CAAE,qBAAsB,GAAM,QAAS,GAAGf,EAAM,YAAYC,EAAO,IAAI,CAAC,mBAAmBe,EAAG,CAAC,EAAG,CAAC,EAEnGd,EAAK,EAAE,CAAC,EAAG,CACjB,IAAK,QACH,MAAMe,EAAgBX,EAAK,CAAE,KAAAJ,EAAM,SAAAU,CAAS,CAAC,EAC7C,MACF,IAAK,SACH,MAAMM,EAAiBZ,EAAK,CAAE,KAAAJ,EAAM,SAAAU,CAAS,CAAC,EAC9C,MACF,IAAK,QACH,MAAMO,EAAgBb,EAAK,CAAE,KAAAJ,EAAM,SAAAU,CAAS,CAAC,EAC7C,MACF,IAAK,QACH,MAAMQ,EAAgBd,EAAK,CAAE,KAAAJ,EAAM,SAAAU,CAAS,CAAC,EAC7C,MACF,QACEG,EAAQX,EAAME,CAAG,CAAC,EAClB,MACJ,CACF,EA1CiC,OA4C3Be,EAAmB9B,EAAC+B,GAAkF,CAC1G,IAAMC,EAAqB,CAAC,EACtBC,EAAqD,CAAC,EAE5D,OAAAF,EAAO,QAASG,GAAU,CACxB,IAAMC,EAAU,eAAe,KAAKD,CAAK,EACrC,CAACC,GAAWA,EAAQ,SAAW,GAAK,CAACA,EAAQ,CAAC,GAAK,CAACA,EAAQ,CAAC,EAC/DH,EAAS,KAAKxB,IAAS0B,CAAK,kCAAkC,EAE9DD,EAAY,KAAK,CAAE,KAAME,EAAQ,CAAC,EAAE,QAAQ,MAAO,EAAE,EAAG,UAAWA,EAAQ,CAAC,CAAE,CAAC,CAEnF,CAAC,EAEM,CAACF,EAAaD,CAAQ,CAC/B,EAdyB,oBAgBnBN,EAAkB1B,EAAA,MAAOe,EAAc,CAAE,KAAAJ,EAAM,SAAAU,CAAS,IAAkE,CAC9H,IAAMH,EAAWG,EAAS,SACpBe,EAAqBzB,EAAK,EAAE,CAAC,EAEnC,GAAI,CAACyB,EACH,MAAM,IAAIC,EAAS7B;AAAA;AAAA;AAAA,4EAGqD,EAG1E,IAAM8B,EAAyD,CAAC,EAChE,GAAI3B,EAAK,EAAE,OAAS,EAAG,CACrB,GAAM,CAACsB,EAAaD,CAAQ,EAAIF,EAAiBnB,EAAK,EAAE,MAAM,CAAC,CAAC,EAEhE,GAAIqB,EAAS,OAAS,EACpB,MAAM,IAAIK,EAAS7B;AAAA;AAAA,iBAERwB,EAAS,KAAK;AAAA,qBAAmB,CAAC;AAAA;AAAA;AAAA,wCAGXI,CAAkB,+BAA+B,EAGrFE,EAAgB,KAAK,GAAGL,CAAW,CACrC,CAEA,IAAIM,EAEJ,GAAI,CACFA,GACE,MAAMrB,EAAS,KAAK,OAAO,CACzB,SAAUsB,EACV,UAAW,CACT,KAAMJ,EACN,OAAQE,EAAgB,IAAKP,IAAY,CACvC,KAAMA,EAAO,KACb,UAAWA,EAAO,SACpB,EAAE,CACJ,CACF,CAAC,GACD,WACJ,OAAS7B,EAAO,CACd,MAAIA,aAAiBuC,EACb,IAAI3C,EAAeI,CAAK,EAExBA,CAEV,CAEAsB,EAAQ,CAAE,qBAAsB,GAAM,QAASf,EAAM,KAAK,mCAAmC,CAAE,CAAC,EAEhG,MAAMY,EAAS,uBAAuBN,EAAK,CACzC,aAAcwB,EAAO,mBACrB,MAAOA,EAAO,QACd,OAAQ,CAAC,CACX,CAAC,EAED,IAAMG,EAAgBC,EAAa,YAC/BA,EACEP,EACA,WAAWlB,EAAS,YAAY,YAAY,aAAa,SAASA,EAAS,YAAY,IAAI,UAAUkB,CAAkB,SACzH,EACAA,EAEJZ,EAAQ,CACN,qBAAsB,GACtB,QAAS,GAAGf,EAAM,YAAYC,EAAO,IAAI,CAAC,UAAUD,EAAM,WAAWiC,CAAa,CAAC,sBACrF,CAAC,CACH,EArEwB,mBAuElBf,EAAmB3B,EAAA,MAAOe,EAAc,CAAE,KAAAJ,EAAM,SAAAU,CAAS,IAAkE,CAC/H,IAAMH,EAAWG,EAAS,SACpBuB,EAAOjC,EAAK,EAAE,CAAC,EAErB,GAAI,CAACiC,EACH,MAAM,IAAIP,EAAS7B;AAAA;AAAA;AAAA;AAAA,mGAI4E,EAGjG,IAAMqC,EAAS,MAAMC,EAAU/B,EAAKG,EAAS,WAAW,EAClD6B,EAAgB,MAAMC,EAAiBjC,EAAKG,EAAS,WAAW,EAChE+B,EAAYL,EAAK,MAAM,GAAG,EAE5BM,EAEEC,EAAcF,EAAU,OAAS,EAAIA,EAAU,MAAM,EAAGA,EAAU,OAAS,CAAC,EAAIA,EAChFG,EAAeH,EAAUA,EAAU,OAAS,CAAC,EAE7CI,EAAmBR,EAAO,KAAMS,GAAU,CAC9C,IAAMC,EAAYJ,EAAYA,EAAY,OAAS,CAAC,EAEpD,OACEG,EAAM,cAAc,YAAY,IAAMC,GAAW,YAAY,GAC7DD,EAAM,WAAW,KAAK,GAAG,IAAMH,EAAY,MAAM,EAAGA,EAAY,OAAS,CAAC,EAAE,KAAK,GAAG,CAExF,CAAC,EAEKK,EAA6BT,EAAc,KAAMU,GAC9CA,EAAO,WAAW,KAAK,GAAG,IAAMN,EAAY,KAAK,GAAG,CAC5D,EAED,GAAIE,GAAoBG,EAA4B,CAClD,IAAME,EAAoBP,EAAY,KAAK,GAAG,EAC9CD,EAAwB,MAAMS,EAAO,CACnC,QAAS,CAAC,SAAU,SAAS,EAC7B,QAASnD;AAAA,iDACkC4C,CAAY;AAAA;AAAA;AAAA,QAIvD,aAAcpD,EAAC4D,GAAW,CACxB,OAAQA,EAAQ,CACd,IAAK,SACH,MAAO,wBAAwBnD,EAAM,KAAK,UAAUiD,CAAiB,IAAIN,CAAY,KAAK,CAAC,GAE7F,IAAK,UACH,MAAO,mBAAmB3C,EAAM,KAAK,WAAWiD,CAAiB,IAAIN,CAAY,KAAK,CAAC,EAE3F,CACF,EATc,eAUhB,CAAC,EAED5B,EAAQ,CACN,qBAAsB,GACtB,QAAShB,IAASC,EAAM,aAAaC,EAAO,IAAI,CAAC,wHAAwHwC,CAAqB,IAAIN,CAAI,GACxM,CAAC,CACH,CAEA,GAAI,CACF,IAAML,GACJ,MAAMrB,EAAS,KAAK,OAAO,CACzB,SAAU2C,EACV,UAAW,CAAE,KAAMX,EAAwB,GAAGA,CAAqB,IAAMN,EAAOA,CAAK,CACvF,CAAC,GACD,aAEF,MAAMvB,EAAS,uBAAuBN,EAAK,CACzC,aAAcwB,EAAO,mBACrB,MAAOA,EAAO,QACd,OAAQ,CAAC,CACX,CAAC,CACH,OAASrC,EAAO,CACd,MAAIA,aAAiBuC,EACb,IAAI3C,EAAeI,CAAK,EAExBA,CAEV,CAEAsB,EAAQ,CACN,qBAAsB,GACtB,QAAS,UAAUf,EAAM,WAAWmC,CAAI,CAAC,sBAC3C,CAAC,CACH,EAtFyB,oBAwFnBhB,EAAkB5B,EAAA,MAAOe,EAAc,CAAE,KAAAJ,EAAM,SAAAU,CAAS,IAAkE,CAC9H,IAAMH,EAAWG,EAAS,SACpByC,EAAcnD,EAAK,EAAE,CAAC,EACtBoD,EAAYpD,EAAK,EAAE,CAAC,EAE1B,GAAI,CAACmD,EACH,MAAM,IAAIzB,EAAS7B;AAAA;AAAA;AAAA,8DAGuC,EAG5D,GAAI,CAACuD,EACH,MAAM,IAAI1B,EAAS7B;AAAA;AAAA;AAAA,oCAGasD,CAAW,gBAAgB,EAG7D,GAAI,CACF,IAAMvB,GACJ,MAAMrB,EAAS,KAAK,OAAO,CACzB,SAAU8C,EACV,UAAW,CAAE,OAAQF,EAAa,KAAMC,CAAU,CACpD,CAAC,GACD,YAEF,MAAM1C,EAAS,uBAAuBN,EAAK,CACzC,aAAcwB,EAAO,mBACrB,MAAOA,EAAO,QACd,OAAQ,CAAC,CACX,CAAC,CACH,OAASrC,EAAO,CACd,MAAIA,aAAiBuC,EACb,IAAI3C,EAAeI,CAAK,EAExBA,CAEV,CAEAsB,EAAQ,CACN,qBAAsB,GACtB,QAAS,SAASf,EAAM,WAAWsD,CAAS,CAAC,sBAC/C,CAAC,CACH,EA5CwB,mBA8ClBlC,EAAkB7B,EAAA,MAAOe,EAAc,CAAE,KAAAJ,EAAM,SAAAU,CAAS,IAAkE,CAC9H,IAAMH,EAAWG,EAAS,SAEpB4C,EAAoBtD,EAAK,EAAE,CAAC,GAAG,MAAM,GAAG,EAE9C,GAAI,CAACsD,EACH,MAAM,IAAI5B,EAAS7B;AAAA;AAAA;AAAA,0EAGmD,EAGxE,IAAM8B,EAAyD,CAAC,EAEhE,GAAI2B,EAAkB,CAAC,EAAG,CACxB,GAAM,CAAChC,EAAaD,CAAQ,EAAIF,EAAiB,CAACmC,EAAkB,CAAC,CAAC,CAAC,EAEvE,GAAIjC,EAAS,OAAS,EACpB,MAAM,IAAIK,EAAS7B;AAAA;AAAA,cAEXwB,EAAS,KAAK;AAAA,WAAS,CAAC;AAAA;AAAA;AAAA,sCAGAiC,EAAkB,CAAC,CAAC,6BAA6B,EAGnF3B,EAAgB,KAAK,GAAGL,CAAW,CACrC,KACE,OAAM,IAAII,EAAS7B;AAAA;AAAA;AAAA,oCAGayD,EAAkB,CAAC,CAAC,6BAA6B,EAGnF,GAAI,CACF,IAAM1B,GACJ,MAAMrB,EAAS,KAAK,OAAO,CACzB,SAAUgD,EACV,UAAW,CAET,KAAMD,EAAkB,CAAC,EACzB,OAAQ3B,EAAgB,IAAKJ,IAAW,CACtC,KAAMA,EAAM,KACZ,UAAWA,EAAM,SACnB,EAAE,CACJ,CACF,CAAC,GACD,kBAEF,MAAMb,EAAS,uBAAuBN,EAAK,CACzC,aAAcwB,EAAO,mBACrB,MAAOA,EAAO,QACd,OAAQ,CAAC,CACX,CAAC,CACH,OAASrC,EAAO,CACd,MAAIA,aAAiBuC,EACb,IAAI3C,EAAeI,CAAK,EAExBA,CAEV,CAEAsB,EAAQ,CACN,qBAAsB,GACtB,QAAS,SAASf,EAAM,WAAW6B,EAAgB,CAAC,GAAG,IAAI,CAAC,sBAC9D,CAAC,CACH,EAlEwB",
|
|
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", "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
|
-
}
|
package/dist/chunk-56W5U2JG.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var k=Object.create;var L=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var o=(E,e)=>L(E,"name",{value:e,configurable:!0}),Se=(E=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(E,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):E)(function(E){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+E+'" is not supported')});var Y=(E,e)=>()=>(E&&(e=E(E=0)),e);var l=(E,e)=>()=>(e||E((e={exports:{}}).exports,e),e.exports),De=(E,e)=>{for(var t in e)L(E,t,{get:e[t],enumerable:!0})},D=(E,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let I of V(e))!z.call(E,I)&&I!==t&&L(E,I,{get:()=>e[I],enumerable:!(i=q(e,I))||i.enumerable});return E};var Pe=(E,e,t)=>(t=E!=null?k(B(E)):{},D(e||!E||!E.__esModule?L(t,"default",{value:E,enumerable:!0}):t,E)),Fe=E=>D(L({},"__esModule",{value:!0}),E);import{createRequire as Z}from"node:module";import W from"node:path";import J from"node:url";var a=Y(()=>{"use strict";global.require=Z(import.meta.url);global.__filename=J.fileURLToPath(import.meta.url);global.__dirname=W.dirname(__filename)});var A=l((ge,P)=>{a();var K=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...E)=>console.error("SEMVER",...E):()=>{};P.exports=K});var T=l((we,F)=>{a();var Q="2.0.0",ee=Number.MAX_SAFE_INTEGER||9007199254740991,re=16,se=250,Ee=["major","premajor","minor","preminor","patch","prepatch","prerelease"];F.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:re,MAX_SAFE_BUILD_LENGTH:se,MAX_SAFE_INTEGER:ee,RELEASE_TYPES:Ee,SEMVER_SPEC_VERSION:Q,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var C=l((c,G)=>{a();var{MAX_SAFE_COMPONENT_LENGTH:u,MAX_SAFE_BUILD_LENGTH:te,MAX_LENGTH:ne}=T(),ie=A();c=G.exports={};var Ie=c.re=[],ae=c.safeRe=[],r=c.src=[],s=c.t={},oe=0,m="[a-zA-Z0-9-]",Re=[["\\s",1],["\\d",ne],[m,te]],le=o(E=>{for(let[e,t]of Re)E=E.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return E},"makeSafeRegex"),n=o((E,e,t)=>{let i=le(e),I=oe++;ie(E,I,e),s[E]=I,r[I]=e,Ie[I]=new RegExp(e,t?"g":void 0),ae[I]=new RegExp(i,t?"g":void 0)},"createToken");n("NUMERICIDENTIFIER","0|[1-9]\\d*");n("NUMERICIDENTIFIERLOOSE","\\d+");n("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${m}*`);n("MAINVERSION",`(${r[s.NUMERICIDENTIFIER]})\\.(${r[s.NUMERICIDENTIFIER]})\\.(${r[s.NUMERICIDENTIFIER]})`);n("MAINVERSIONLOOSE",`(${r[s.NUMERICIDENTIFIERLOOSE]})\\.(${r[s.NUMERICIDENTIFIERLOOSE]})\\.(${r[s.NUMERICIDENTIFIERLOOSE]})`);n("PRERELEASEIDENTIFIER",`(?:${r[s.NUMERICIDENTIFIER]}|${r[s.NONNUMERICIDENTIFIER]})`);n("PRERELEASEIDENTIFIERLOOSE",`(?:${r[s.NUMERICIDENTIFIERLOOSE]}|${r[s.NONNUMERICIDENTIFIER]})`);n("PRERELEASE",`(?:-(${r[s.PRERELEASEIDENTIFIER]}(?:\\.${r[s.PRERELEASEIDENTIFIER]})*))`);n("PRERELEASELOOSE",`(?:-?(${r[s.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${r[s.PRERELEASEIDENTIFIERLOOSE]})*))`);n("BUILDIDENTIFIER",`${m}+`);n("BUILD",`(?:\\+(${r[s.BUILDIDENTIFIER]}(?:\\.${r[s.BUILDIDENTIFIER]})*))`);n("FULLPLAIN",`v?${r[s.MAINVERSION]}${r[s.PRERELEASE]}?${r[s.BUILD]}?`);n("FULL",`^${r[s.FULLPLAIN]}$`);n("LOOSEPLAIN",`[v=\\s]*${r[s.MAINVERSIONLOOSE]}${r[s.PRERELEASELOOSE]}?${r[s.BUILD]}?`);n("LOOSE",`^${r[s.LOOSEPLAIN]}$`);n("GTLT","((?:<|>)?=?)");n("XRANGEIDENTIFIERLOOSE",`${r[s.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);n("XRANGEIDENTIFIER",`${r[s.NUMERICIDENTIFIER]}|x|X|\\*`);n("XRANGEPLAIN",`[v=\\s]*(${r[s.XRANGEIDENTIFIER]})(?:\\.(${r[s.XRANGEIDENTIFIER]})(?:\\.(${r[s.XRANGEIDENTIFIER]})(?:${r[s.PRERELEASE]})?${r[s.BUILD]}?)?)?`);n("XRANGEPLAINLOOSE",`[v=\\s]*(${r[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${r[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${r[s.XRANGEIDENTIFIERLOOSE]})(?:${r[s.PRERELEASELOOSE]})?${r[s.BUILD]}?)?)?`);n("XRANGE",`^${r[s.GTLT]}\\s*${r[s.XRANGEPLAIN]}$`);n("XRANGELOOSE",`^${r[s.GTLT]}\\s*${r[s.XRANGEPLAINLOOSE]}$`);n("COERCEPLAIN",`(^|[^\\d])(\\d{1,${u}})(?:\\.(\\d{1,${u}}))?(?:\\.(\\d{1,${u}}))?`);n("COERCE",`${r[s.COERCEPLAIN]}(?:$|[^\\d])`);n("COERCEFULL",r[s.COERCEPLAIN]+`(?:${r[s.PRERELEASE]})?(?:${r[s.BUILD]})?(?:$|[^\\d])`);n("COERCERTL",r[s.COERCE],!0);n("COERCERTLFULL",r[s.COERCEFULL],!0);n("LONETILDE","(?:~>?)");n("TILDETRIM",`(\\s*)${r[s.LONETILDE]}\\s+`,!0);c.tildeTrimReplace="$1~";n("TILDE",`^${r[s.LONETILDE]}${r[s.XRANGEPLAIN]}$`);n("TILDELOOSE",`^${r[s.LONETILDE]}${r[s.XRANGEPLAINLOOSE]}$`);n("LONECARET","(?:\\^)");n("CARETTRIM",`(\\s*)${r[s.LONECARET]}\\s+`,!0);c.caretTrimReplace="$1^";n("CARET",`^${r[s.LONECARET]}${r[s.XRANGEPLAIN]}$`);n("CARETLOOSE",`^${r[s.LONECARET]}${r[s.XRANGEPLAINLOOSE]}$`);n("COMPARATORLOOSE",`^${r[s.GTLT]}\\s*(${r[s.LOOSEPLAIN]})$|^$`);n("COMPARATOR",`^${r[s.GTLT]}\\s*(${r[s.FULLPLAIN]})$|^$`);n("COMPARATORTRIM",`(\\s*)${r[s.GTLT]}\\s*(${r[s.LOOSEPLAIN]}|${r[s.XRANGEPLAIN]})`,!0);c.comparatorTrimReplace="$1$2$3";n("HYPHENRANGE",`^\\s*(${r[s.XRANGEPLAIN]})\\s+-\\s+(${r[s.XRANGEPLAIN]})\\s*$`);n("HYPHENRANGELOOSE",`^\\s*(${r[s.XRANGEPLAINLOOSE]})\\s+-\\s+(${r[s.XRANGEPLAINLOOSE]})\\s*$`);n("STAR","(<|>)?=?\\s*\\*");n("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");n("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var d=l((je,M)=>{a();var ce=Object.freeze({loose:!0}),Ne=Object.freeze({}),Le=o(E=>E?typeof E!="object"?ce:E:Ne,"parseOptions");M.exports=Le});var X=l((ye,w)=>{a();var g=/^[0-9]+$/,U=o((E,e)=>{let t=g.test(E),i=g.test(e);return t&&i&&(E=+E,e=+e),E===e?0:t&&!i?-1:i&&!t?1:E<e?-1:1},"compareIdentifiers"),he=o((E,e)=>U(e,E),"rcompareIdentifiers");w.exports={compareIdentifiers:U,rcompareIdentifiers:he}});var j=l((qe,_)=>{a();var h=A(),{MAX_LENGTH:b,MAX_SAFE_INTEGER:p}=T(),{safeRe:O,t:$}=C(),pe=d(),{compareIdentifiers:N}=X(),f=class E{static{o(this,"SemVer")}constructor(e,t){if(t=pe(t),e instanceof E){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>b)throw new TypeError(`version is longer than ${b} characters`);h("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?O[$.LOOSE]:O[$.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>p||this.major<0)throw new TypeError("Invalid major version");if(this.minor>p||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>p||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(I=>{if(/^[0-9]+$/.test(I)){let R=+I;if(R>=0&&R<p)return R}return I}):this.prerelease=[],this.build=i[5]?i[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(h("SemVer.compare",this.version,this.options,e),!(e instanceof E)){if(typeof e=="string"&&e===this.version)return 0;e=new E(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof E||(e=new E(e,this.options)),N(this.major,e.major)||N(this.minor,e.minor)||N(this.patch,e.patch)}comparePre(e){if(e instanceof E||(e=new E(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let i=this.prerelease[t],I=e.prerelease[t];if(h("prerelease compare",t,i,I),i===void 0&&I===void 0)return 0;if(I===void 0)return 1;if(i===void 0)return-1;if(i===I)continue;return N(i,I)}while(++t)}compareBuild(e){e instanceof E||(e=new E(e,this.options));let t=0;do{let i=this.build[t],I=e.build[t];if(h("build compare",t,i,I),i===void 0&&I===void 0)return 0;if(I===void 0)return 1;if(i===void 0)return-1;if(i===I)continue;return N(i,I)}while(++t)}inc(e,t,i){if(e.startsWith("pre")){if(!t&&i===!1)throw new Error("invalid increment argument: identifier is empty");if(t){let I=`-${t}`.match(this.options.loose?O[$.PRERELEASELOOSE]:O[$.PRERELEASE]);if(!I||I[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,i);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,i);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,i),this.inc("pre",t,i);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,i),this.inc("pre",t,i);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let I=Number(i)?1:0;if(this.prerelease.length===0)this.prerelease=[I];else{let R=this.prerelease.length;for(;--R>=0;)typeof this.prerelease[R]=="number"&&(this.prerelease[R]++,R=-2);if(R===-1){if(t===this.prerelease.join(".")&&i===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(I)}}if(t){let R=[t,I];i===!1&&(R=[t]),N(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=R):this.prerelease=R}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};_.exports=f});var S=l((ze,x)=>{a();var v=j(),Oe=o((E,e,t=!1)=>{if(E instanceof v)return E;try{return new v(E,e)}catch(i){if(!t)return null;throw i}},"parse");x.exports=Oe});var Te=l((We,y)=>{a();var $e=S(),Ae=o((E,e)=>{let t=$e(E,e);return t?t.version:null},"valid");y.exports=Ae});var fe=l((Qe,H)=>{a();var ue=S(),me=o((E,e)=>{let t=ue(E.trim().replace(/^[=v]+/,""),e);return t?t.version:null},"clean");H.exports=me});export{o as a,Se as b,Y as c,l as d,De as e,Pe as f,Fe as g,a as h,A as i,T as j,C as k,d as l,X as m,j as n,S as o,Te as p,fe as q};
|
|
2
|
-
//# sourceMappingURL=chunk-56W5U2JG.js.map
|