@gadgetinc/ggt 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -91
- package/bin/dev.js +11 -19
- package/bin/run.js +1 -9
- package/lib/__generated__/graphql.js +2 -2
- package/lib/__generated__/graphql.js.map +1 -1
- package/lib/commands/index.js +9 -0
- package/lib/commands/index.js.map +1 -0
- package/lib/commands/list.js +34 -49
- package/lib/commands/list.js.map +1 -1
- package/lib/commands/login.js +74 -17
- package/lib/commands/login.js.map +1 -1
- package/lib/commands/logout.js +19 -23
- package/lib/commands/logout.js.map +1 -1
- package/lib/commands/root.js +85 -0
- package/lib/commands/root.js.map +1 -0
- package/lib/commands/sync.js +312 -678
- package/lib/commands/sync.js.map +1 -1
- package/lib/commands/whoami.js +23 -27
- package/lib/commands/whoami.js.map +1 -1
- package/lib/main.js +12 -0
- package/lib/main.js.map +1 -0
- package/lib/services/app.js +36 -0
- package/lib/services/app.js.map +1 -0
- package/lib/services/args.js +28 -0
- package/lib/services/args.js.map +1 -0
- package/lib/services/client.js +43 -76
- package/lib/services/client.js.map +1 -1
- package/lib/services/config.js +139 -0
- package/lib/services/config.js.map +1 -0
- package/lib/services/errors.js +64 -89
- package/lib/services/errors.js.map +1 -1
- package/lib/services/filesync.js +404 -0
- package/lib/services/filesync.js.map +1 -0
- package/lib/services/fs-utils.js +18 -91
- package/lib/services/fs-utils.js.map +1 -1
- package/lib/services/http.js +53 -0
- package/lib/services/http.js.map +1 -0
- package/lib/services/log.js +45 -0
- package/lib/services/log.js.map +1 -0
- package/lib/services/notify.js +30 -0
- package/lib/services/notify.js.map +1 -0
- package/lib/services/output.js +59 -0
- package/lib/services/output.js.map +1 -0
- package/lib/services/promise.js +8 -5
- package/lib/services/promise.js.map +1 -1
- package/lib/services/session.js +27 -0
- package/lib/services/session.js.map +1 -0
- package/lib/services/sleep.js +2 -5
- package/lib/services/sleep.js.map +1 -1
- package/lib/services/timeout.js +8 -0
- package/lib/services/timeout.js.map +1 -0
- package/lib/services/user.js +70 -0
- package/lib/services/user.js.map +1 -0
- package/lib/services/version.js +72 -0
- package/lib/services/version.js.map +1 -0
- package/npm-shrinkwrap.json +15703 -25760
- package/package.json +53 -60
- package/lib/commands/help.js +0 -28
- package/lib/commands/help.js.map +0 -1
- package/lib/index.js +0 -3
- package/lib/index.js.map +0 -1
- package/lib/services/base-command.js +0 -203
- package/lib/services/base-command.js.map +0 -1
- package/lib/services/context.js +0 -143
- package/lib/services/context.js.map +0 -1
- package/lib/services/flags.js +0 -57
- package/lib/services/flags.js.map +0 -1
- package/lib/services/help.js +0 -36
- package/lib/services/help.js.map +0 -1
- package/oclif.manifest.json +0 -244
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/login.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/commands/login.ts"],"sourcesContent":["import getPort from \"get-port\";\nimport assert from \"node:assert\";\nimport http, { type Server } from \"node:http\";\nimport open from \"open\";\nimport { config } from \"../services/config.js\";\nimport { createLogger } from \"../services/log.js\";\nimport { println, sprint } from \"../services/output.js\";\nimport { writeSession } from \"../services/session.js\";\nimport { getUser } from \"../services/user.js\";\n\nexport const usage = sprint`\n Log in to your account.\n\n {bold USAGE}\n $ ggt login\n\n {bold EXAMPLES}\n {gray $ ggt login}\n We've opened Gadget's login page using your default browser.\n\n Please log in and then return to this terminal.\n\n Hello, Jane Doe (jane@example.com)\n`;\n\nconst log = createLogger(\"login\");\n\nexport const run = async () => {\n let server: Server | undefined;\n\n try {\n const port = await getPort();\n const receiveSession = new Promise<void>((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n server = http.createServer(async (req, res) => {\n const landingPage = new URL(`https://${config.domains.services}/auth/cli`);\n\n try {\n assert(req.url, \"missing url\");\n const session = new URL(req.url, `http://localhost:${port}`).searchParams.get(\"session\");\n assert(session, \"missing session\");\n\n writeSession(session);\n\n const user = await getUser();\n assert(user, \"missing user after successful login\");\n\n if (user.name) {\n println`Hello, ${user.name} {gray (${user.email})}`;\n } else {\n println`Hello, ${user.email}`;\n }\n println();\n\n landingPage.searchParams.set(\"success\", \"true\");\n resolve();\n } catch (error) {\n writeSession(undefined);\n landingPage.searchParams.set(\"success\", \"false\");\n reject(error);\n } finally {\n res.writeHead(303, { Location: landingPage.toString() });\n res.end();\n }\n });\n\n log.info(\"starting login server\", { port });\n server.listen(port);\n });\n\n // open the login page in the user's default browser have it\n // redirect to the cli callback route. The cli callback route will\n // send the session to the server we just started.\n const url = new URL(`https://${config.domains.services}/auth/login`);\n url.searchParams.set(\"returnTo\", `https://${config.domains.services}/auth/cli/callback?port=${port}`);\n await open(url.toString());\n\n println`\n We've opened Gadget's login page using your default browser.\n\n Please log in and then return to this terminal.\\n\n `;\n\n await receiveSession;\n } finally {\n server?.close();\n }\n};\n"],"names":["getPort","assert","http","open","config","createLogger","println","sprint","writeSession","getUser","usage","log","run","server","port","receiveSession","Promise","resolve","reject","createServer","req","res","landingPage","URL","domains","services","url","session","searchParams","get","user","name","email","set","error","undefined","writeHead","Location","toString","end","info","listen","close"],"mappings":"AAAA,OAAOA,aAAa,WAAW;AAC/B,OAAOC,YAAY,cAAc;AACjC,OAAOC,UAA2B,YAAY;AAC9C,OAAOC,UAAU,OAAO;AACxB,SAASC,MAAM,QAAQ,wBAAwB;AAC/C,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,OAAO,EAAEC,MAAM,QAAQ,wBAAwB;AACxD,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,OAAO,QAAQ,sBAAsB;AAE9C,OAAO,MAAMC,QAAQH,MAAM,CAAC;;;;;;;;;;;;;AAa5B,CAAC,CAAC;AAEF,MAAMI,MAAMN,aAAa;AAEzB,OAAO,MAAMO,MAAM;IACjB,IAAIC;IAEJ,IAAI;QACF,MAAMC,OAAO,MAAMd;QACnB,MAAMe,iBAAiB,IAAIC,QAAc,CAACC,SAASC;YACjD,kEAAkE;YAClEL,SAASX,KAAKiB,YAAY,CAAC,OAAOC,KAAKC;gBACrC,MAAMC,cAAc,IAAIC,IAAI,CAAC,QAAQ,EAAEnB,OAAOoB,OAAO,CAACC,QAAQ,CAAC,SAAS,CAAC;gBAEzE,IAAI;oBACFxB,OAAOmB,IAAIM,GAAG,EAAE;oBAChB,MAAMC,UAAU,IAAIJ,IAAIH,IAAIM,GAAG,EAAE,CAAC,iBAAiB,EAAEZ,KAAK,CAAC,EAAEc,YAAY,CAACC,GAAG,CAAC;oBAC9E5B,OAAO0B,SAAS;oBAEhBnB,aAAamB;oBAEb,MAAMG,OAAO,MAAMrB;oBACnBR,OAAO6B,MAAM;oBAEb,IAAIA,KAAKC,IAAI,EAAE;wBACbzB,OAAO,CAAC,OAAO,EAAEwB,KAAKC,IAAI,CAAC,QAAQ,EAAED,KAAKE,KAAK,CAAC,EAAE,CAAC;oBACrD,OAAO;wBACL1B,OAAO,CAAC,OAAO,EAAEwB,KAAKE,KAAK,CAAC,CAAC;oBAC/B;oBACA1B;oBAEAgB,YAAYM,YAAY,CAACK,GAAG,CAAC,WAAW;oBACxChB;gBACF,EAAE,OAAOiB,OAAO;oBACd1B,aAAa2B;oBACbb,YAAYM,YAAY,CAACK,GAAG,CAAC,WAAW;oBACxCf,OAAOgB;gBACT,SAAU;oBACRb,IAAIe,SAAS,CAAC,KAAK;wBAAEC,UAAUf,YAAYgB,QAAQ;oBAAG;oBACtDjB,IAAIkB,GAAG;gBACT;YACF;YAEA5B,IAAI6B,IAAI,CAAC,yBAAyB;gBAAE1B;YAAK;YACzCD,OAAO4B,MAAM,CAAC3B;QAChB;QAEA,4DAA4D;QAC5D,kEAAkE;QAClE,kDAAkD;QAClD,MAAMY,MAAM,IAAIH,IAAI,CAAC,QAAQ,EAAEnB,OAAOoB,OAAO,CAACC,QAAQ,CAAC,WAAW,CAAC;QACnEC,IAAIE,YAAY,CAACK,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE7B,OAAOoB,OAAO,CAACC,QAAQ,CAAC,wBAAwB,EAAEX,KAAK,CAAC;QACpG,MAAMX,KAAKuB,IAAIY,QAAQ;QAEvBhC,OAAO,CAAC;;;;IAIR,CAAC;QAED,MAAMS;IACR,SAAU;QACRF,QAAQ6B;IACV;AACF,EAAE"}
|
package/lib/commands/logout.js
CHANGED
|
@@ -1,27 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
context.session = undefined;
|
|
11
|
-
this.log("Goodbye");
|
|
12
|
-
} else {
|
|
13
|
-
this.log("You are not logged in");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
_define_property(Logout, "summary", "Log out of your account.");
|
|
18
|
-
_define_property(Logout, "usage", "logout");
|
|
19
|
-
_define_property(Logout, "examples", [
|
|
20
|
-
dedent(chalkTemplate`
|
|
1
|
+
import { println, sprint } from "../services/output.js";
|
|
2
|
+
import { readSession, writeSession } from "../services/session.js";
|
|
3
|
+
export const usage = sprint`
|
|
4
|
+
Log out of your account.
|
|
5
|
+
|
|
6
|
+
{bold USAGE}
|
|
7
|
+
$ ggt logout
|
|
8
|
+
|
|
9
|
+
{bold EXAMPLES}
|
|
21
10
|
{gray $ ggt logout}
|
|
22
11
|
Goodbye
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
`;
|
|
13
|
+
export const run = ()=>{
|
|
14
|
+
const token = readSession();
|
|
15
|
+
if (token) {
|
|
16
|
+
writeSession(undefined);
|
|
17
|
+
println`Goodbye`;
|
|
18
|
+
} else {
|
|
19
|
+
println`You are not logged in`;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
26
22
|
|
|
27
23
|
//# sourceMappingURL=logout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/logout.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/commands/logout.ts"],"sourcesContent":["import { println, sprint } from \"../services/output.js\";\nimport { readSession, writeSession } from \"../services/session.js\";\n\nexport const usage = sprint`\n Log out of your account.\n\n {bold USAGE}\n $ ggt logout\n\n {bold EXAMPLES}\n {gray $ ggt logout}\n Goodbye\n`;\n\nexport const run = () => {\n const token = readSession();\n if (token) {\n writeSession(undefined);\n println`Goodbye`;\n } else {\n println`You are not logged in`;\n }\n};\n"],"names":["println","sprint","readSession","writeSession","usage","run","token","undefined"],"mappings":"AAAA,SAASA,OAAO,EAAEC,MAAM,QAAQ,wBAAwB;AACxD,SAASC,WAAW,EAAEC,YAAY,QAAQ,yBAAyB;AAEnE,OAAO,MAAMC,QAAQH,MAAM,CAAC;;;;;;;;;AAS5B,CAAC,CAAC;AAEF,OAAO,MAAMI,MAAM;IACjB,MAAMC,QAAQJ;IACd,IAAII,OAAO;QACTH,aAAaI;QACbP,OAAO,CAAC,OAAO,CAAC;IAClB,OAAO;QACLA,OAAO,CAAC,qBAAqB,CAAC;IAChC;AACF,EAAE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import arg from "arg";
|
|
2
|
+
import debug from "debug";
|
|
3
|
+
import _ from "lodash";
|
|
4
|
+
import { parseBoolean } from "../services/args.js";
|
|
5
|
+
import { config } from "../services/config.js";
|
|
6
|
+
import { CLIError } from "../services/errors.js";
|
|
7
|
+
import { println, sortByLevenshtein, sprint } from "../services/output.js";
|
|
8
|
+
import { warnIfUpdateAvailable } from "../services/version.js";
|
|
9
|
+
import { availableCommands } from "./index.js";
|
|
10
|
+
export const usage = sprint`
|
|
11
|
+
The command-line interface for Gadget
|
|
12
|
+
|
|
13
|
+
{bold VERSION}
|
|
14
|
+
${config.versionFull}
|
|
15
|
+
|
|
16
|
+
{bold USAGE}
|
|
17
|
+
$ ggt [COMMAND]
|
|
18
|
+
|
|
19
|
+
{bold FLAGS}
|
|
20
|
+
-h, --help {gray Print command's usage}
|
|
21
|
+
-v, --version {gray Print version}
|
|
22
|
+
--debug {gray Print debug output}
|
|
23
|
+
|
|
24
|
+
{bold COMMANDS}
|
|
25
|
+
sync Sync your Gadget application's source code to and
|
|
26
|
+
from your local filesystem.
|
|
27
|
+
list List your apps.
|
|
28
|
+
login Log in to your account.
|
|
29
|
+
logout Log out of your account.
|
|
30
|
+
whoami Print the currently logged in account.
|
|
31
|
+
`;
|
|
32
|
+
export const rootArgsSpec = {
|
|
33
|
+
"--help": Boolean,
|
|
34
|
+
"-h": "--help",
|
|
35
|
+
"--version": Boolean,
|
|
36
|
+
"-v": "--version",
|
|
37
|
+
"--debug": Boolean
|
|
38
|
+
};
|
|
39
|
+
export const run = async ()=>{
|
|
40
|
+
await warnIfUpdateAvailable();
|
|
41
|
+
const rootArgs = arg(rootArgsSpec, {
|
|
42
|
+
argv: process.argv.slice(2),
|
|
43
|
+
permissive: true,
|
|
44
|
+
stopAtPositional: false
|
|
45
|
+
});
|
|
46
|
+
if (rootArgs["--debug"] ?? parseBoolean(process.env["DEBUG"])) {
|
|
47
|
+
debug.enable("ggt:*");
|
|
48
|
+
}
|
|
49
|
+
if (rootArgs["--version"]) {
|
|
50
|
+
println(config.version);
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
53
|
+
const command = rootArgs._.shift();
|
|
54
|
+
if (_.isNil(command)) {
|
|
55
|
+
println(usage);
|
|
56
|
+
process.exit(0);
|
|
57
|
+
}
|
|
58
|
+
if (!_.includes(availableCommands, command)) {
|
|
59
|
+
const [closest] = sortByLevenshtein(command, availableCommands);
|
|
60
|
+
println`
|
|
61
|
+
Unknown command {yellow ${command}}
|
|
62
|
+
|
|
63
|
+
Did you mean {blueBright ${closest}}?
|
|
64
|
+
|
|
65
|
+
Run {gray ggt --help} for usage
|
|
66
|
+
`;
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const cmd = await import(`./${command}.js`);
|
|
70
|
+
if (rootArgs["--help"]) {
|
|
71
|
+
println(cmd.usage);
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
await cmd.init?.(rootArgs);
|
|
76
|
+
await cmd.run(rootArgs);
|
|
77
|
+
} catch (cause) {
|
|
78
|
+
const error = CLIError.from(cause);
|
|
79
|
+
println(error.render());
|
|
80
|
+
await error.capture();
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/root.ts"],"sourcesContent":["import arg from \"arg\";\nimport debug from \"debug\";\nimport _ from \"lodash\";\nimport { parseBoolean } from \"../services/args.js\";\nimport { config } from \"../services/config.js\";\nimport { CLIError } from \"../services/errors.js\";\nimport { println, sortByLevenshtein, sprint } from \"../services/output.js\";\nimport { warnIfUpdateAvailable } from \"../services/version.js\";\nimport { availableCommands, type Command } from \"./index.js\";\n\nexport const usage = sprint`\n The command-line interface for Gadget\n\n {bold VERSION}\n ${config.versionFull}\n\n {bold USAGE}\n $ ggt [COMMAND]\n\n {bold FLAGS}\n -h, --help {gray Print command's usage}\n -v, --version {gray Print version}\n --debug {gray Print debug output}\n\n {bold COMMANDS}\n sync Sync your Gadget application's source code to and\n from your local filesystem.\n list List your apps.\n login Log in to your account.\n logout Log out of your account.\n whoami Print the currently logged in account.\n`;\n\nexport const rootArgsSpec = {\n \"--help\": Boolean,\n \"-h\": \"--help\",\n \"--version\": Boolean,\n \"-v\": \"--version\",\n \"--debug\": Boolean,\n};\n\nexport type RootArgs = arg.Result<typeof rootArgsSpec>;\n\nexport const run = async () => {\n await warnIfUpdateAvailable();\n\n const rootArgs = arg(rootArgsSpec, {\n argv: process.argv.slice(2),\n permissive: true,\n stopAtPositional: false,\n });\n\n if (rootArgs[\"--debug\"] ?? parseBoolean(process.env[\"DEBUG\"])) {\n debug.enable(\"ggt:*\");\n }\n\n if (rootArgs[\"--version\"]) {\n println(config.version);\n process.exit(0);\n }\n\n const command = rootArgs._.shift();\n if (_.isNil(command)) {\n println(usage);\n process.exit(0);\n }\n\n if (!_.includes(availableCommands, command)) {\n const [closest] = sortByLevenshtein(command, availableCommands);\n println`\n Unknown command {yellow ${command}}\n\n Did you mean {blueBright ${closest}}?\n\n Run {gray ggt --help} for usage\n `;\n process.exit(1);\n }\n\n const cmd: Command = await import(`./${command}.js`);\n\n if (rootArgs[\"--help\"]) {\n println(cmd.usage);\n process.exit(0);\n }\n\n try {\n await cmd.init?.(rootArgs);\n await cmd.run(rootArgs);\n } catch (cause) {\n const error = CLIError.from(cause);\n println(error.render());\n await error.capture();\n process.exit(1);\n }\n};\n"],"names":["arg","debug","_","parseBoolean","config","CLIError","println","sortByLevenshtein","sprint","warnIfUpdateAvailable","availableCommands","usage","versionFull","rootArgsSpec","Boolean","run","rootArgs","argv","process","slice","permissive","stopAtPositional","env","enable","version","exit","command","shift","isNil","includes","closest","cmd","init","cause","error","from","render","capture"],"mappings":"AAAA,OAAOA,SAAS,MAAM;AACtB,OAAOC,WAAW,QAAQ;AAC1B,OAAOC,OAAO,SAAS;AACvB,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,MAAM,QAAQ,wBAAwB;AAC/C,SAASC,QAAQ,QAAQ,wBAAwB;AACjD,SAASC,OAAO,EAAEC,iBAAiB,EAAEC,MAAM,QAAQ,wBAAwB;AAC3E,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,iBAAiB,QAAsB,aAAa;AAE7D,OAAO,MAAMC,QAAQH,MAAM,CAAC;;;;MAItB,EAAEJ,OAAOQ,WAAW,CAAC;;;;;;;;;;;;;;;;;AAiB3B,CAAC,CAAC;AAEF,OAAO,MAAMC,eAAe;IAC1B,UAAUC;IACV,MAAM;IACN,aAAaA;IACb,MAAM;IACN,WAAWA;AACb,EAAE;AAIF,OAAO,MAAMC,MAAM;IACjB,MAAMN;IAEN,MAAMO,WAAWhB,IAAIa,cAAc;QACjCI,MAAMC,QAAQD,IAAI,CAACE,KAAK,CAAC;QACzBC,YAAY;QACZC,kBAAkB;IACpB;IAEA,IAAIL,QAAQ,CAAC,UAAU,IAAIb,aAAae,QAAQI,GAAG,CAAC,QAAQ,GAAG;QAC7DrB,MAAMsB,MAAM,CAAC;IACf;IAEA,IAAIP,QAAQ,CAAC,YAAY,EAAE;QACzBV,QAAQF,OAAOoB,OAAO;QACtBN,QAAQO,IAAI,CAAC;IACf;IAEA,MAAMC,UAAUV,SAASd,CAAC,CAACyB,KAAK;IAChC,IAAIzB,EAAE0B,KAAK,CAACF,UAAU;QACpBpB,QAAQK;QACRO,QAAQO,IAAI,CAAC;IACf;IAEA,IAAI,CAACvB,EAAE2B,QAAQ,CAACnB,mBAAmBgB,UAAU;QAC3C,MAAM,CAACI,QAAQ,GAAGvB,kBAAkBmB,SAAShB;QAC7CJ,OAAO,CAAC;8BACkB,EAAEoB,QAAQ;;+BAET,EAAEI,QAAQ;;;IAGrC,CAAC;QACDZ,QAAQO,IAAI,CAAC;IACf;IAEA,MAAMM,MAAe,MAAM,MAAM,CAAC,CAAC,EAAE,EAAEL,QAAQ,GAAG,CAAC;IAEnD,IAAIV,QAAQ,CAAC,SAAS,EAAE;QACtBV,QAAQyB,IAAIpB,KAAK;QACjBO,QAAQO,IAAI,CAAC;IACf;IAEA,IAAI;QACF,MAAMM,IAAIC,IAAI,GAAGhB;QACjB,MAAMe,IAAIhB,GAAG,CAACC;IAChB,EAAE,OAAOiB,OAAO;QACd,MAAMC,QAAQ7B,SAAS8B,IAAI,CAACF;QAC5B3B,QAAQ4B,MAAME,MAAM;QACpB,MAAMF,MAAMG,OAAO;QACnBnB,QAAQO,IAAI,CAAC;IACf;AACF,EAAE"}
|