@gadgetinc/ggt 1.0.3 → 1.0.5

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.
Files changed (220) hide show
  1. package/dist/add-4ME2KTJQ.js +84 -0
  2. package/dist/add-4ME2KTJQ.js.map +7 -0
  3. package/dist/build-4BGA4IZE.js +3 -0
  4. package/dist/build-4BGA4IZE.js.map +7 -0
  5. package/dist/chunk-57XALM2W.js +2 -0
  6. package/dist/chunk-57XALM2W.js.map +7 -0
  7. package/dist/chunk-5DLLJX5F.js +11 -0
  8. package/dist/chunk-5DLLJX5F.js.map +7 -0
  9. package/dist/chunk-5WC5D4WL.js +2 -0
  10. package/dist/chunk-5WC5D4WL.js.map +7 -0
  11. package/dist/chunk-BSCZOMV4.js +2 -0
  12. package/dist/chunk-BSCZOMV4.js.map +7 -0
  13. package/dist/chunk-BZY2AIPV.js +57 -0
  14. package/dist/chunk-BZY2AIPV.js.map +7 -0
  15. package/dist/chunk-D2K5XPNJ.js +2 -0
  16. package/dist/chunk-D2K5XPNJ.js.map +7 -0
  17. package/dist/chunk-F3EZ4KS3.js +2 -0
  18. package/dist/chunk-F3EZ4KS3.js.map +7 -0
  19. package/dist/chunk-G3VNV5Z6.js +33 -0
  20. package/dist/chunk-G3VNV5Z6.js.map +7 -0
  21. package/dist/chunk-GA7AL463.js +24 -0
  22. package/dist/chunk-GA7AL463.js.map +7 -0
  23. package/dist/chunk-GOBNB5VT.js +2 -0
  24. package/dist/chunk-GOBNB5VT.js.map +7 -0
  25. package/dist/chunk-HKBXEZNF.js +2 -0
  26. package/dist/chunk-HKBXEZNF.js.map +7 -0
  27. package/{lib/commands/push.js → dist/chunk-IKJVXTZK.js} +7 -48
  28. package/dist/chunk-IKJVXTZK.js.map +7 -0
  29. package/dist/chunk-KGSSHEEC.js +17 -0
  30. package/dist/chunk-KGSSHEEC.js.map +7 -0
  31. package/dist/chunk-KXK37C5D.js +183 -0
  32. package/dist/chunk-KXK37C5D.js.map +7 -0
  33. package/dist/chunk-NJIDVM2C.js +27 -0
  34. package/dist/chunk-NJIDVM2C.js.map +7 -0
  35. package/dist/chunk-Q5N5L6H3.js +6 -0
  36. package/dist/chunk-Q5N5L6H3.js.map +7 -0
  37. package/dist/chunk-QEVWPU3D.js +8 -0
  38. package/dist/chunk-QEVWPU3D.js.map +7 -0
  39. package/dist/chunk-X36GM74C.js +2 -0
  40. package/dist/chunk-X36GM74C.js.map +7 -0
  41. package/dist/chunk-YRP2UZ2I.js +126 -0
  42. package/dist/chunk-YRP2UZ2I.js.map +7 -0
  43. package/dist/deploy-6HOBYPE6.js +30 -0
  44. package/dist/deploy-6HOBYPE6.js.map +7 -0
  45. package/dist/dev-M3WDGK4D.js +57 -0
  46. package/dist/dev-M3WDGK4D.js.map +7 -0
  47. package/dist/esm-BL3OM5UJ.js +33 -0
  48. package/dist/esm-BL3OM5UJ.js.map +7 -0
  49. package/dist/list-725RHWD5.js +11 -0
  50. package/dist/list-725RHWD5.js.map +7 -0
  51. package/dist/login-I4RGMDLE.js +2 -0
  52. package/dist/login-I4RGMDLE.js.map +7 -0
  53. package/dist/logout-UZBACOIX.js +7 -0
  54. package/dist/logout-UZBACOIX.js.map +7 -0
  55. package/dist/main.js +45 -0
  56. package/dist/main.js.map +7 -0
  57. package/dist/open-GWKGQQG3.js +74 -0
  58. package/dist/open-GWKGQQG3.js.map +7 -0
  59. package/{lib/commands/pull.js → dist/pull-7C5A65KB.js} +7 -48
  60. package/dist/pull-7C5A65KB.js.map +7 -0
  61. package/dist/push-LPUIR4EO.js +2 -0
  62. package/dist/push-LPUIR4EO.js.map +7 -0
  63. package/dist/status-DFKKSRVB.js +14 -0
  64. package/dist/status-DFKKSRVB.js.map +7 -0
  65. package/dist/version-JD42JXWY.js +11 -0
  66. package/dist/version-JD42JXWY.js.map +7 -0
  67. package/dist/whoami-I23R6HOG.js +7 -0
  68. package/dist/whoami-I23R6HOG.js.map +7 -0
  69. package/package.json +73 -75
  70. package/lib/__generated__/graphql.js +0 -78
  71. package/lib/__generated__/graphql.js.map +0 -1
  72. package/lib/commands/add.js +0 -385
  73. package/lib/commands/add.js.map +0 -1
  74. package/lib/commands/deploy.js +0 -287
  75. package/lib/commands/deploy.js.map +0 -1
  76. package/lib/commands/dev.js +0 -374
  77. package/lib/commands/dev.js.map +0 -1
  78. package/lib/commands/list.js +0 -47
  79. package/lib/commands/list.js.map +0 -1
  80. package/lib/commands/login.js +0 -93
  81. package/lib/commands/login.js.map +0 -1
  82. package/lib/commands/logout.js +0 -20
  83. package/lib/commands/logout.js.map +0 -1
  84. package/lib/commands/open.js +0 -159
  85. package/lib/commands/open.js.map +0 -1
  86. package/lib/commands/pull.js.map +0 -1
  87. package/lib/commands/push.js.map +0 -1
  88. package/lib/commands/root.js +0 -110
  89. package/lib/commands/root.js.map +0 -1
  90. package/lib/commands/status.js +0 -56
  91. package/lib/commands/status.js.map +0 -1
  92. package/lib/commands/version.js +0 -18
  93. package/lib/commands/version.js.map +0 -1
  94. package/lib/commands/whoami.js +0 -23
  95. package/lib/commands/whoami.js.map +0 -1
  96. package/lib/ggt.js +0 -65
  97. package/lib/ggt.js.map +0 -1
  98. package/lib/main.js +0 -5
  99. package/lib/main.js.map +0 -1
  100. package/lib/services/app/api/api.js +0 -191
  101. package/lib/services/app/api/api.js.map +0 -1
  102. package/lib/services/app/api/operation.js +0 -23
  103. package/lib/services/app/api/operation.js.map +0 -1
  104. package/lib/services/app/app.js +0 -95
  105. package/lib/services/app/app.js.map +0 -1
  106. package/lib/services/app/arg.js +0 -28
  107. package/lib/services/app/arg.js.map +0 -1
  108. package/lib/services/app/client.js +0 -182
  109. package/lib/services/app/client.js.map +0 -1
  110. package/lib/services/app/edit/edit.js +0 -191
  111. package/lib/services/app/edit/edit.js.map +0 -1
  112. package/lib/services/app/edit/operation.js +0 -155
  113. package/lib/services/app/edit/operation.js.map +0 -1
  114. package/lib/services/app/error.js +0 -65
  115. package/lib/services/app/error.js.map +0 -1
  116. package/lib/services/command/arg.js +0 -55
  117. package/lib/services/command/arg.js.map +0 -1
  118. package/lib/services/command/command.js +0 -47
  119. package/lib/services/command/command.js.map +0 -1
  120. package/lib/services/command/context.js +0 -209
  121. package/lib/services/command/context.js.map +0 -1
  122. package/lib/services/config/config.js +0 -133
  123. package/lib/services/config/config.js.map +0 -1
  124. package/lib/services/config/env.js +0 -22
  125. package/lib/services/config/env.js.map +0 -1
  126. package/lib/services/config/package-json.js +0 -9
  127. package/lib/services/config/package-json.js.map +0 -1
  128. package/lib/services/filesync/changes.js +0 -134
  129. package/lib/services/filesync/changes.js.map +0 -1
  130. package/lib/services/filesync/conflicts.js +0 -140
  131. package/lib/services/filesync/conflicts.js.map +0 -1
  132. package/lib/services/filesync/directory.js +0 -269
  133. package/lib/services/filesync/directory.js.map +0 -1
  134. package/lib/services/filesync/error.js +0 -137
  135. package/lib/services/filesync/error.js.map +0 -1
  136. package/lib/services/filesync/file.js +0 -3
  137. package/lib/services/filesync/file.js.map +0 -1
  138. package/lib/services/filesync/filesync.js +0 -791
  139. package/lib/services/filesync/filesync.js.map +0 -1
  140. package/lib/services/filesync/hashes.js +0 -172
  141. package/lib/services/filesync/hashes.js.map +0 -1
  142. package/lib/services/filesync/strategy.js +0 -59
  143. package/lib/services/filesync/strategy.js.map +0 -1
  144. package/lib/services/filesync/sync-json.js +0 -475
  145. package/lib/services/filesync/sync-json.js.map +0 -1
  146. package/lib/services/http/auth.js +0 -70
  147. package/lib/services/http/auth.js.map +0 -1
  148. package/lib/services/http/http.js +0 -136
  149. package/lib/services/http/http.js.map +0 -1
  150. package/lib/services/output/confirm.js +0 -149
  151. package/lib/services/output/confirm.js.map +0 -1
  152. package/lib/services/output/footer.js +0 -22
  153. package/lib/services/output/footer.js.map +0 -1
  154. package/lib/services/output/log/field.js +0 -3
  155. package/lib/services/output/log/field.js.map +0 -1
  156. package/lib/services/output/log/format/format.js +0 -8
  157. package/lib/services/output/log/format/format.js.map +0 -1
  158. package/lib/services/output/log/format/json.js +0 -37
  159. package/lib/services/output/log/format/json.js.map +0 -1
  160. package/lib/services/output/log/format/pretty.js +0 -158
  161. package/lib/services/output/log/format/pretty.js.map +0 -1
  162. package/lib/services/output/log/level.js +0 -41
  163. package/lib/services/output/log/level.js.map +0 -1
  164. package/lib/services/output/log/logger.js +0 -53
  165. package/lib/services/output/log/logger.js.map +0 -1
  166. package/lib/services/output/log/structured.js +0 -52
  167. package/lib/services/output/log/structured.js.map +0 -1
  168. package/lib/services/output/notify.js +0 -27
  169. package/lib/services/output/notify.js.map +0 -1
  170. package/lib/services/output/output.js +0 -197
  171. package/lib/services/output/output.js.map +0 -1
  172. package/lib/services/output/print.js +0 -31
  173. package/lib/services/output/print.js.map +0 -1
  174. package/lib/services/output/problems.js +0 -84
  175. package/lib/services/output/problems.js.map +0 -1
  176. package/lib/services/output/prompt.js +0 -185
  177. package/lib/services/output/prompt.js.map +0 -1
  178. package/lib/services/output/report.js +0 -190
  179. package/lib/services/output/report.js.map +0 -1
  180. package/lib/services/output/select.js +0 -198
  181. package/lib/services/output/select.js.map +0 -1
  182. package/lib/services/output/spinner.js +0 -141
  183. package/lib/services/output/spinner.js.map +0 -1
  184. package/lib/services/output/sprint.js +0 -44
  185. package/lib/services/output/sprint.js.map +0 -1
  186. package/lib/services/output/symbols.js +0 -23
  187. package/lib/services/output/symbols.js.map +0 -1
  188. package/lib/services/output/table.js +0 -98
  189. package/lib/services/output/table.js.map +0 -1
  190. package/lib/services/output/timestamp.js +0 -12
  191. package/lib/services/output/timestamp.js.map +0 -1
  192. package/lib/services/output/update.js +0 -99
  193. package/lib/services/output/update.js.map +0 -1
  194. package/lib/services/user/session.js +0 -54
  195. package/lib/services/user/session.js.map +0 -1
  196. package/lib/services/user/user.js +0 -76
  197. package/lib/services/user/user.js.map +0 -1
  198. package/lib/services/util/assert.js +0 -11
  199. package/lib/services/util/assert.js.map +0 -1
  200. package/lib/services/util/boolean.js +0 -15
  201. package/lib/services/util/boolean.js.map +0 -1
  202. package/lib/services/util/collection.js +0 -38
  203. package/lib/services/util/collection.js.map +0 -1
  204. package/lib/services/util/function.js +0 -153
  205. package/lib/services/util/function.js.map +0 -1
  206. package/lib/services/util/is.js +0 -97
  207. package/lib/services/util/is.js.map +0 -1
  208. package/lib/services/util/json.js +0 -33
  209. package/lib/services/util/json.js.map +0 -1
  210. package/lib/services/util/number.js +0 -27
  211. package/lib/services/util/number.js.map +0 -1
  212. package/lib/services/util/object.js +0 -104
  213. package/lib/services/util/object.js.map +0 -1
  214. package/lib/services/util/paths.js +0 -36
  215. package/lib/services/util/paths.js.map +0 -1
  216. package/lib/services/util/promise.js +0 -74
  217. package/lib/services/util/promise.js.map +0 -1
  218. package/lib/services/util/types.js +0 -5
  219. package/lib/services/util/types.js.map +0 -1
  220. package/npm-shrinkwrap.json +0 -29512
@@ -1,159 +0,0 @@
1
- import open from "open";
2
- import { getModels } from "../services/app/app.js";
3
- import { ArgError } from "../services/command/arg.js";
4
- import { UnknownDirectoryError } from "../services/filesync/error.js";
5
- import { SyncJson, SyncJsonArgs, loadSyncJsonDirectory } from "../services/filesync/sync-json.js";
6
- import { println } from "../services/output/print.js";
7
- import { select } from "../services/output/select.js";
8
- import { sprint } from "../services/output/sprint.js";
9
- import { sortBySimilar } from "../services/util/collection.js";
10
- import { isNever } from "../services/util/is.js";
11
- export const args = {
12
- ...SyncJsonArgs,
13
- "--show-all": {
14
- type: Boolean
15
- }
16
- };
17
- export const usage = (_ctx)=>{
18
- return sprint`
19
- This command opens a specific Gadget page in your browser, allowing you to directly access
20
- various parts of your application's interface such as logs, permissions, data views, or
21
- schemas.
22
-
23
- {gray Usage}
24
- ggt open [LOCATION] [model_name] [--show-all] [options]
25
-
26
- LOCATION: specifies the part of Gadget to open, by default it'll open the apps home page:
27
-
28
- + logs Opens logs
29
- + permissions Opens permissions
30
- + data Opens data editor for a specific model
31
- + schema Opens schema editor for a specific model
32
-
33
- {gray Options}
34
- -a, --app <app_name> Selects the application to open in your browser. Default set on ".gadget/sync.json"
35
- -e, --env <env_name> Selects the environment to open in your browser. Default set on ".gadget/sync.json"
36
- --show-all Shows all schema, or data options by listing your available models
37
-
38
- {gray Examples}
39
- Opens editor home
40
- {cyanBright $ ggt open}
41
-
42
- Opens logs
43
- {cyanBright $ ggt open logs}
44
-
45
- Opens permissions
46
- {cyanBright $ ggt open permissions}
47
-
48
- Opens data editor for the 'post' model
49
- {cyanBright $ ggt open data post}
50
-
51
- Opens schema for 'post' model
52
- {cyanBright $ ggt open schema post}
53
-
54
- Shows all models available in the data editor
55
- {cyanBright $ ggt open data -show-all}
56
-
57
- Shows all models available in the schema viewer
58
- {cyanBright $ ggt open schema --show-all}
59
-
60
- Opens data editor for 'post' model of app 'myBlog' in the 'staging' environment
61
- {cyanBright $ ggt open data post --app myBlog --env staging}
62
- `;
63
- };
64
- export const command = async (ctx)=>{
65
- const directory = await loadSyncJsonDirectory(process.cwd());
66
- const syncJson = await SyncJson.load(ctx, {
67
- directory
68
- });
69
- if (!syncJson) {
70
- throw new UnknownDirectoryError(ctx, {
71
- directory
72
- });
73
- }
74
- const location = ctx.args._[0];
75
- if (!location) {
76
- await open(`https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}`);
77
- println`
78
- Opened editor for environment {cyanBright ${syncJson.env.name}}.
79
- `;
80
- return;
81
- }
82
- if (!Locations.includes(location)) {
83
- const [closest] = sortBySimilar(location, Locations);
84
- throw new ArgError(sprint`
85
- Unknown location {yellow ${location}}
86
-
87
- Did you mean {blueBright ${closest}}?
88
-
89
- Run "ggt open --help" for usage
90
- `);
91
- }
92
- switch(location){
93
- case "logs":
94
- {
95
- await open(`https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}/logs`);
96
- println`
97
- Opened log viewer for environment {cyanBright ${syncJson.env.name}}.
98
- `;
99
- break;
100
- }
101
- case "permissions":
102
- {
103
- await open(`https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}/settings/permissions`);
104
- println`
105
- Opened permissions settings for environment {cyanBright ${syncJson.env.name}}.
106
- `;
107
- break;
108
- }
109
- case "data":
110
- case "schema":
111
- {
112
- const view = ctx.args._[0];
113
- const remoteModelApiIdentifiers = (await getModels(ctx)).map((e)=>e.apiIdentifier);
114
- let modelApiIdentifier = ctx.args._[1];
115
- if (!modelApiIdentifier) {
116
- if (ctx.args["--show-all"]) {
117
- modelApiIdentifier = await select({
118
- choices: remoteModelApiIdentifiers
119
- })("Which model do you wish to open?");
120
- } else {
121
- throw new ArgError(sprint`
122
- "ggt open ${view}" requires a model to be specified.
123
-
124
- Run with "--show-all" to choose from available models.
125
-
126
- ggt open ${view} --show-all
127
- `);
128
- }
129
- }
130
- if (!remoteModelApiIdentifiers.includes(modelApiIdentifier)) {
131
- const [closest] = sortBySimilar(modelApiIdentifier, remoteModelApiIdentifiers);
132
- throw new ArgError(sprint`
133
- Unknown model {yellow ${modelApiIdentifier}}
134
-
135
- Did you mean {blueBright ${closest}}?
136
-
137
- Run with "--show-all" to choose from available models.
138
-
139
- ggt open ${view} --show-all
140
- `);
141
- }
142
- await open(`https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}/model/${modelApiIdentifier}/${view}`);
143
- println`
144
- Opened ${view} viewer for environment {cyanBright ${syncJson.env.name}} for model {cyanBright ${modelApiIdentifier}}.
145
- `;
146
- break;
147
- }
148
- default:
149
- isNever(location);
150
- }
151
- };
152
- const Locations = [
153
- "logs",
154
- "permissions",
155
- "data",
156
- "schema"
157
- ];
158
-
159
- //# sourceMappingURL=open.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/open.ts"],"sourcesContent":["import open from \"open\";\nimport { getModels } from \"../services/app/app.js\";\nimport { ArgError } from \"../services/command/arg.js\";\nimport type { Command, 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 command: Command<OpenArgs> = async (ctx) => {\n const directory = await loadSyncJsonDirectory(process.cwd());\n const syncJson = await SyncJson.load(ctx, { directory });\n if (!syncJson) {\n throw new UnknownDirectoryError(ctx, { directory });\n }\n\n const location = ctx.args._[0] as Location | undefined;\n if (!location) {\n await open(`https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}`);\n println`\n Opened editor for environment {cyanBright ${syncJson.env.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.app.primaryDomain}/edit/${syncJson.env.name}/logs`);\n println`\n Opened log viewer for environment {cyanBright ${syncJson.env.name}}.\n `;\n break;\n }\n case \"permissions\": {\n await open(`https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}/settings/permissions`);\n println`\n Opened permissions settings for environment {cyanBright ${syncJson.env.name}}.\n `;\n break;\n }\n case \"data\":\n case \"schema\": {\n const view = ctx.args._[0];\n const remoteModelApiIdentifiers = (await getModels(ctx)).map((e) => e.apiIdentifier);\n\n let modelApiIdentifier = ctx.args._[1];\n if (!modelApiIdentifier) {\n if (ctx.args[\"--show-all\"]) {\n modelApiIdentifier = await select({ choices: remoteModelApiIdentifiers })(\"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(`https://${syncJson.app.primaryDomain}/edit/${syncJson.env.name}/model/${modelApiIdentifier}/${view}`);\n println`\n Opened ${view} viewer for environment {cyanBright ${syncJson.env.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"],"names":["open","getModels","ArgError","UnknownDirectoryError","SyncJson","SyncJsonArgs","loadSyncJsonDirectory","println","select","sprint","sortBySimilar","isNever","args","type","Boolean","usage","_ctx","command","ctx","directory","process","cwd","syncJson","load","location","_","app","primaryDomain","env","name","Locations","includes","closest","view","remoteModelApiIdentifiers","map","e","apiIdentifier","modelApiIdentifier","choices"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/pull.ts"],"sourcesContent":["import { ArgError, type ArgsDefinition } from \"../services/command/arg.js\";\nimport type { Command, 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 \"--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 --from, -e, --env <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 “.gadget/sync.json” 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 command: Command<PullArgs> = async (ctx) => {\n if (ctx.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 push\".\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, { 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 })`\n Nothing to pull.\n `;\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 });\n};\n"],"names":["ArgError","FileSync","SyncJson","SyncJsonArgs","loadSyncJsonDirectory","println","sprint","args","type","Boolean","alias","usage","_ctx","command","ctx","_","length","directory","process","cwd","syncJson","loadOrInit","filesync","hashes","environmentChangesToPull","size","ensureEmptyLineAbove","localChangesToPush","print","pull"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAA6B,6BAA6B;AAE3E,SAASC,QAAQ,QAAQ,mCAAmC;AAC5D,SAASC,QAAQ,EAAEC,YAAY,EAAEC,qBAAqB,QAAQ,oCAAoC;AAClG,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,MAAM,QAAQ,+BAA+B;AAItD,OAAO,MAAMC,OAAO;IAClB,GAAGJ,YAAY;IACf,WAAW;QAAEK,MAAMC;QAASC,OAAO;IAAK;AAC1C,EAA2B;AAE3B,OAAO,MAAMC,QAAe,CAACC;IAC3B,OAAON,MAAM,CAAC;;;;;;;;;;;;;;;;;;;EAmBd,CAAC;AACH,EAAE;AAEF,OAAO,MAAMO,UAA6B,OAAOC;IAC/C,IAAIA,IAAIP,IAAI,CAACQ,CAAC,CAACC,MAAM,GAAG,GAAG;QACzB,MAAM,IAAIhB,SAASM,MAAM,CAAC;;;;;;;IAO1B,CAAC;IACH;IAEA,MAAMW,YAAY,MAAMb,sBAAsBc,QAAQC,GAAG;IACzD,MAAMC,WAAW,MAAMlB,SAASmB,UAAU,CAACP,KAAK;QAAEG;IAAU;IAC5D,MAAMK,WAAW,IAAIrB,SAASmB;IAC9B,MAAMG,SAAS,MAAMD,SAASC,MAAM,CAACT;IAErC,IAAIS,OAAOC,wBAAwB,CAACC,IAAI,KAAK,GAAG;QAC9CpB,QAAQ;YAAEqB,sBAAsB;QAAK,EAAE,CAAC;;IAExC,CAAC;QACD;IACF;IAEA,IAAIH,OAAOI,kBAAkB,CAACF,IAAI,GAAG,GAAG;QACtC,gDAAgD;QAChD,MAAMH,SAASM,KAAK,CAACd,KAAK;YAAES;QAAO;IACrC;IAEA,MAAMD,SAASO,IAAI,CAACf,KAAK;QAAES;IAAO;AACpC,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/push.ts"],"sourcesContent":["import { ArgError, type ArgsDefinition } from \"../services/command/arg.js\";\nimport type { Command, 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 PushArgs = typeof args;\n\nexport const args = {\n ...SyncJsonArgs,\n \"--force\": { type: Boolean, alias: \"-f\" },\n} satisfies ArgsDefinition;\n\nexport const usage: Usage = (_ctx) => {\n return sprint`\n Pushes your local files to your environment directory.\n\n This command first tracks changes in your environment directory since the last sync.\n If changes are detected, you will be prompted to discard them or abort the push.\n\n {gray Usage}\n ggt push [options]\n \n {gray Options}\n -a, --app <app_name> Selects the app to push local changes to. Default set on \".gadget/sync.json\"\n --from, -e, --env <env_name> Selects the environment to push local changes to. Default set on \".gadget/sync.json\"\n --force Forces a push by discarding any changes made on your environment directory since last sync\n --allow-different-directory Pushes changes from any local directory with existing files, even if the \".gadget/sync.json\" file is missing\n --allow-different-app Pushes changes to an app using --app command, instead of the one in the “.gadget/sync.json” file\n \n {gray Examples}\n Push all local changes to the main environment by discarding any changes made on main\n {cyanBright $ ggt push --env main --force}\n `;\n};\n\nexport const command: Command<typeof args> = async (ctx) => {\n if (ctx.args._.length > 0) {\n throw new ArgError(sprint`\n \"ggt push\" does not take any positional arguments.\n\n If you are trying to push changes from a specific directory,\n you must \"cd\" to that directory and then run \"ggt push\".\n `);\n }\n\n const directory = await loadSyncJsonDirectory(process.cwd());\n const syncJson = await SyncJson.loadOrInit(ctx, { directory });\n const filesync = new FileSync(syncJson);\n const hashes = await filesync.hashes(ctx);\n\n if (hashes.localChangesToPush.size === 0) {\n println({ ensureEmptyLineAbove: true })`\n Nothing to push.\n `;\n return;\n }\n\n if (hashes.environmentChangesToPull.size > 0 && !hashes.onlyDotGadgetFilesChanged) {\n // show them the environment changes they will discard\n await filesync.print(ctx, { hashes });\n }\n\n await filesync.push(ctx, { hashes });\n};\n"],"names":["ArgError","FileSync","SyncJson","SyncJsonArgs","loadSyncJsonDirectory","println","sprint","args","type","Boolean","alias","usage","_ctx","command","ctx","_","length","directory","process","cwd","syncJson","loadOrInit","filesync","hashes","localChangesToPush","size","ensureEmptyLineAbove","environmentChangesToPull","onlyDotGadgetFilesChanged","print","push"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAA6B,6BAA6B;AAE3E,SAASC,QAAQ,QAAQ,mCAAmC;AAC5D,SAASC,QAAQ,EAAEC,YAAY,EAAEC,qBAAqB,QAAQ,oCAAoC;AAClG,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,MAAM,QAAQ,+BAA+B;AAItD,OAAO,MAAMC,OAAO;IAClB,GAAGJ,YAAY;IACf,WAAW;QAAEK,MAAMC;QAASC,OAAO;IAAK;AAC1C,EAA2B;AAE3B,OAAO,MAAMC,QAAe,CAACC;IAC3B,OAAON,MAAM,CAAC;;;;;;;;;;;;;;;;;;;EAmBd,CAAC;AACH,EAAE;AAEF,OAAO,MAAMO,UAAgC,OAAOC;IAClD,IAAIA,IAAIP,IAAI,CAACQ,CAAC,CAACC,MAAM,GAAG,GAAG;QACzB,MAAM,IAAIhB,SAASM,MAAM,CAAC;;;;;IAK1B,CAAC;IACH;IAEA,MAAMW,YAAY,MAAMb,sBAAsBc,QAAQC,GAAG;IACzD,MAAMC,WAAW,MAAMlB,SAASmB,UAAU,CAACP,KAAK;QAAEG;IAAU;IAC5D,MAAMK,WAAW,IAAIrB,SAASmB;IAC9B,MAAMG,SAAS,MAAMD,SAASC,MAAM,CAACT;IAErC,IAAIS,OAAOC,kBAAkB,CAACC,IAAI,KAAK,GAAG;QACxCpB,QAAQ;YAAEqB,sBAAsB;QAAK,EAAE,CAAC;;IAExC,CAAC;QACD;IACF;IAEA,IAAIH,OAAOI,wBAAwB,CAACF,IAAI,GAAG,KAAK,CAACF,OAAOK,yBAAyB,EAAE;QACjF,sDAAsD;QACtD,MAAMN,SAASO,KAAK,CAACf,KAAK;YAAES;QAAO;IACrC;IAEA,MAAMD,SAASQ,IAAI,CAAChB,KAAK;QAAES;IAAO;AACpC,EAAE"}
@@ -1,110 +0,0 @@
1
- import arg from "arg";
2
- import { Commands, importCommand, isAvailableCommand } from "../services/command/command.js";
3
- import { verbosityToLevel } from "../services/output/log/level.js";
4
- import { println } from "../services/output/print.js";
5
- import { reportErrorAndExit } from "../services/output/report.js";
6
- import { sprint } from "../services/output/sprint.js";
7
- import { warnIfUpdateAvailable } from "../services/output/update.js";
8
- import { sortBySimilar } from "../services/util/collection.js";
9
- import { isNil } from "../services/util/is.js";
10
- export const args = {
11
- "-h": {
12
- type: Boolean
13
- },
14
- "--help": {
15
- type: Boolean
16
- },
17
- "--verbose": {
18
- type: arg.COUNT,
19
- alias: [
20
- "-v",
21
- "--debug"
22
- ]
23
- },
24
- "--telemetry": {
25
- type: Boolean
26
- },
27
- "--json": {
28
- type: Boolean
29
- }
30
- };
31
- export const usage = ()=>{
32
- return sprint`
33
- The command-line interface for Gadget.
34
-
35
- {gray Usage}
36
- ggt [COMMAND]
37
-
38
- {gray Commands}
39
- dev Start developing your application
40
- deploy Deploy your environment to production
41
- status Show your local and environment's file changes
42
- push Push your local files to your environment
43
- pull Pull your environment's files to your local computer
44
- add Add models, fields, actions and routes to your app
45
- open Open a Gadget location in your browser
46
- list List your available applications
47
- login Log in to your account
48
- logout Log out of your account
49
- whoami Print the currently logged in account
50
- version Print this version of ggt
51
-
52
- {gray Flags}
53
- -h, --help Print how to use a command
54
- -v, --verbose Print more verbose output
55
- --telemetry Enable telemetry
56
-
57
- Run "ggt [COMMAND] -h" for more information about a specific command.
58
- `;
59
- };
60
- export const command = async (parent)=>{
61
- const ctx = parent.child({
62
- name: "root",
63
- parse: args,
64
- argv: process.argv.slice(2),
65
- permissive: true
66
- });
67
- if (ctx.args["--json"]) {
68
- process.env["GGT_LOG_FORMAT"] = "json";
69
- }
70
- if (ctx.args["--verbose"]) {
71
- process.env["GGT_LOG_LEVEL"] = verbosityToLevel(ctx.args["--verbose"]).toString();
72
- }
73
- await warnIfUpdateAvailable(ctx);
74
- let cmd = ctx.args._.shift();
75
- if (isNil(cmd)) {
76
- println(usage(ctx));
77
- process.exit(0);
78
- }
79
- if (cmd === "sync") {
80
- ctx.log.debug('renaming "sync" to "dev" for backwards compatibility');
81
- cmd = "dev";
82
- }
83
- if (!isAvailableCommand(cmd)) {
84
- const [closest] = sortBySimilar(cmd, Commands);
85
- println`
86
- Unknown command {yellow ${cmd}}
87
-
88
- Did you mean {blueBright ${closest}}?
89
-
90
- Run {gray ggt --help} for usage
91
- `;
92
- process.exit(1);
93
- }
94
- const subcommand = await importCommand(cmd);
95
- if (ctx.args["-h"] ?? ctx.args["--help"]) {
96
- println(subcommand.usage(ctx));
97
- process.exit(0);
98
- }
99
- try {
100
- await subcommand.command(ctx.child({
101
- command: cmd,
102
- name: cmd,
103
- parse: subcommand.args
104
- }));
105
- } catch (error) {
106
- await reportErrorAndExit(ctx, error);
107
- }
108
- };
109
-
110
- //# sourceMappingURL=root.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/root.ts"],"sourcesContent":["import arg from \"arg\";\nimport type { EmptyObject } from \"type-fest\";\nimport type { ArgsDefinition } from \"../services/command/arg.js\";\nimport { Commands, importCommand, isAvailableCommand, type Command, 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;\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 command: Command<EmptyObject, EmptyObject> = async (parent): Promise<void> => {\n const ctx = parent.child({\n name: \"root\",\n parse: args,\n argv: process.argv.slice(2),\n permissive: true,\n });\n\n if (ctx.args[\"--json\"]) {\n process.env[\"GGT_LOG_FORMAT\"] = \"json\";\n }\n\n if (ctx.args[\"--verbose\"]) {\n process.env[\"GGT_LOG_LEVEL\"] = verbosityToLevel(ctx.args[\"--verbose\"]).toString();\n }\n\n await warnIfUpdateAvailable(ctx);\n\n let cmd = ctx.args._.shift();\n if (isNil(cmd)) {\n println(usage(ctx));\n process.exit(0);\n }\n\n if (cmd === \"sync\") {\n ctx.log.debug('renaming \"sync\" to \"dev\" for backwards compatibility');\n cmd = \"dev\";\n }\n\n if (!isAvailableCommand(cmd)) {\n const [closest] = sortBySimilar(cmd, Commands);\n println`\n Unknown command {yellow ${cmd}}\n\n Did you mean {blueBright ${closest}}?\n\n Run {gray ggt --help} for usage\n `;\n process.exit(1);\n }\n\n const subcommand = await importCommand(cmd);\n\n if (ctx.args[\"-h\"] ?? ctx.args[\"--help\"]) {\n println(subcommand.usage(ctx));\n process.exit(0);\n }\n\n try {\n await subcommand.command(ctx.child({ command: cmd, name: cmd, parse: subcommand.args }));\n } catch (error) {\n await reportErrorAndExit(ctx, error);\n }\n};\n"],"names":["arg","Commands","importCommand","isAvailableCommand","verbosityToLevel","println","reportErrorAndExit","sprint","warnIfUpdateAvailable","sortBySimilar","isNil","args","type","Boolean","COUNT","alias","usage","command","parent","ctx","child","name","parse","argv","process","slice","permissive","env","toString","cmd","_","shift","exit","log","debug","closest","subcommand","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,SAAS,MAAM;AAGtB,SAASC,QAAQ,EAAEC,aAAa,EAAEC,kBAAkB,QAAkC,iCAAiC;AACvH,SAASC,gBAAgB,QAAQ,kCAAkC;AACnE,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,SAASC,MAAM,QAAQ,+BAA+B;AACtD,SAASC,qBAAqB,QAAQ,+BAA+B;AACrE,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,KAAK,QAAQ,yBAAyB;AAI/C,OAAO,MAAMC,OAAO;IAClB,MAAM;QAAEC,MAAMC;IAAQ;IACtB,UAAU;QAAED,MAAMC;IAAQ;IAC1B,aAAa;QAAED,MAAMZ,IAAIc,KAAK;QAAEC,OAAO;YAAC;YAAM;SAAU;IAAC;IACzD,eAAe;QAAEH,MAAMC;IAAQ;IAC/B,UAAU;QAAED,MAAMC;IAAQ;AAC5B,EAA2B;AAE3B,OAAO,MAAMG,QAAe;IAC1B,OAAOT,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0Bd,CAAC;AACH,EAAE;AAEF,OAAO,MAAMU,UAA6C,OAAOC;IAC/D,MAAMC,MAAMD,OAAOE,KAAK,CAAC;QACvBC,MAAM;QACNC,OAAOX;QACPY,MAAMC,QAAQD,IAAI,CAACE,KAAK,CAAC;QACzBC,YAAY;IACd;IAEA,IAAIP,IAAIR,IAAI,CAAC,SAAS,EAAE;QACtBa,QAAQG,GAAG,CAAC,iBAAiB,GAAG;IAClC;IAEA,IAAIR,IAAIR,IAAI,CAAC,YAAY,EAAE;QACzBa,QAAQG,GAAG,CAAC,gBAAgB,GAAGvB,iBAAiBe,IAAIR,IAAI,CAAC,YAAY,EAAEiB,QAAQ;IACjF;IAEA,MAAMpB,sBAAsBW;IAE5B,IAAIU,MAAMV,IAAIR,IAAI,CAACmB,CAAC,CAACC,KAAK;IAC1B,IAAIrB,MAAMmB,MAAM;QACdxB,QAAQW,MAAMG;QACdK,QAAQQ,IAAI,CAAC;IACf;IAEA,IAAIH,QAAQ,QAAQ;QAClBV,IAAIc,GAAG,CAACC,KAAK,CAAC;QACdL,MAAM;IACR;IAEA,IAAI,CAAC1B,mBAAmB0B,MAAM;QAC5B,MAAM,CAACM,QAAQ,GAAG1B,cAAcoB,KAAK5B;QACrCI,OAAO,CAAC;8BACkB,EAAEwB,IAAI;;+BAEL,EAAEM,QAAQ;;;IAGrC,CAAC;QACDX,QAAQQ,IAAI,CAAC;IACf;IAEA,MAAMI,aAAa,MAAMlC,cAAc2B;IAEvC,IAAIV,IAAIR,IAAI,CAAC,KAAK,IAAIQ,IAAIR,IAAI,CAAC,SAAS,EAAE;QACxCN,QAAQ+B,WAAWpB,KAAK,CAACG;QACzBK,QAAQQ,IAAI,CAAC;IACf;IAEA,IAAI;QACF,MAAMI,WAAWnB,OAAO,CAACE,IAAIC,KAAK,CAAC;YAAEH,SAASY;YAAKR,MAAMQ;YAAKP,OAAOc,WAAWzB,IAAI;QAAC;IACvF,EAAE,OAAO0B,OAAO;QACd,MAAM/B,mBAAmBa,KAAKkB;IAChC;AACF,EAAE"}
@@ -1,56 +0,0 @@
1
- import { ArgError } from "../services/command/arg.js";
2
- import { getConflicts, printConflicts } from "../services/filesync/conflicts.js";
3
- import { UnknownDirectoryError } from "../services/filesync/error.js";
4
- import { FileSync } from "../services/filesync/filesync.js";
5
- import { SyncJson, SyncJsonArgs, loadSyncJsonDirectory } from "../services/filesync/sync-json.js";
6
- import { sprint } from "../services/output/sprint.js";
7
- export const args = SyncJsonArgs;
8
- export const usage = ()=>{
9
- return sprint`
10
- Shows file changes since last sync (e.g. $ggt dev, push, deploy etc.)
11
-
12
- {gray Usage}
13
- ggt status
14
- `;
15
- };
16
- export const command = async (ctx)=>{
17
- if (ctx.args._.length > 0) {
18
- throw new ArgError(sprint`
19
- "ggt status" does not take any positional arguments.
20
-
21
- If you are trying to see the status of a specific directory,
22
- you must "cd" to that directory and then run "ggt status".
23
-
24
- Run "ggt status -h" for more information.
25
- `);
26
- }
27
- const directory = await loadSyncJsonDirectory(process.cwd());
28
- const syncJson = await SyncJson.load(ctx, {
29
- directory
30
- });
31
- if (!syncJson) {
32
- throw new UnknownDirectoryError(ctx, {
33
- directory
34
- });
35
- }
36
- syncJson.print();
37
- const filesync = new FileSync(syncJson);
38
- const hashes = await filesync.hashes(ctx);
39
- await filesync.print(ctx, {
40
- hashes
41
- });
42
- const conflicts = getConflicts({
43
- localChanges: hashes.localChanges,
44
- environmentChanges: hashes.environmentChanges
45
- });
46
- if (conflicts.size > 0) {
47
- ctx.log.debug("conflicts detected", {
48
- conflicts
49
- });
50
- printConflicts({
51
- conflicts
52
- });
53
- }
54
- };
55
-
56
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/status.ts"],"sourcesContent":["import { ArgError } from \"../services/command/arg.js\";\nimport type { Command, 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;\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 command: Command<StatusArgs> = async (ctx) => {\n if (ctx.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, { directory });\n if (!syncJson) {\n throw new UnknownDirectoryError(ctx, { 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"],"names":["ArgError","getConflicts","printConflicts","UnknownDirectoryError","FileSync","SyncJson","SyncJsonArgs","loadSyncJsonDirectory","sprint","args","usage","command","ctx","_","length","directory","process","cwd","syncJson","load","print","filesync","hashes","conflicts","localChanges","environmentChanges","size","log","debug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,6BAA6B;AAEtD,SAASC,YAAY,EAAEC,cAAc,QAAQ,oCAAoC;AACjF,SAASC,qBAAqB,QAAQ,gCAAgC;AACtE,SAASC,QAAQ,QAAQ,mCAAmC;AAC5D,SAASC,QAAQ,EAAEC,YAAY,EAAEC,qBAAqB,QAAQ,oCAAoC;AAClG,SAASC,MAAM,QAAQ,+BAA+B;AAItD,OAAO,MAAMC,OAAOH,aAAa;AAEjC,OAAO,MAAMI,QAAe;IAC1B,OAAOF,MAAM,CAAC;;;;;EAKd,CAAC;AACH,EAAE;AAEF,OAAO,MAAMG,UAA+B,OAAOC;IACjD,IAAIA,IAAIH,IAAI,CAACI,CAAC,CAACC,MAAM,GAAG,GAAG;QACzB,MAAM,IAAId,SAASQ,MAAM,CAAC;;;;;;;IAO1B,CAAC;IACH;IAEA,MAAMO,YAAY,MAAMR,sBAAsBS,QAAQC,GAAG;IACzD,MAAMC,WAAW,MAAMb,SAASc,IAAI,CAACP,KAAK;QAAEG;IAAU;IACtD,IAAI,CAACG,UAAU;QACb,MAAM,IAAIf,sBAAsBS,KAAK;YAAEG;QAAU;IACnD;IAEAG,SAASE,KAAK;IAEd,MAAMC,WAAW,IAAIjB,SAASc;IAC9B,MAAMI,SAAS,MAAMD,SAASC,MAAM,CAACV;IACrC,MAAMS,SAASD,KAAK,CAACR,KAAK;QAAEU;IAAO;IAEnC,MAAMC,YAAYtB,aAAa;QAAEuB,cAAcF,OAAOE,YAAY;QAAEC,oBAAoBH,OAAOG,kBAAkB;IAAC;IAClH,IAAIF,UAAUG,IAAI,GAAG,GAAG;QACtBd,IAAIe,GAAG,CAACC,KAAK,CAAC,sBAAsB;YAAEL;QAAU;QAChDrB,eAAe;YAAEqB;QAAU;IAC7B;AACF,EAAE"}
@@ -1,18 +0,0 @@
1
- import { packageJson } from "../services/config/package-json.js";
2
- import { println } from "../services/output/print.js";
3
- import { sprint } from "../services/output/sprint.js";
4
- export const usage = ()=>sprint`
5
- Print this version of ggt.
6
-
7
- {gray Usage}
8
- ggt version
9
-
10
- {gray Updating ggt}
11
- When there is a new release of ggt, running ggt will show you a message letting you
12
- know that an update is available.
13
- `;
14
- export const command = (_ctx)=>{
15
- println(packageJson.version);
16
- };
17
-
18
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/version.ts"],"sourcesContent":["import type { Command, Usage } from \"../services/command/command.js\";\nimport { packageJson } from \"../services/config/package-json.js\";\nimport { println } from \"../services/output/print.js\";\nimport { sprint } from \"../services/output/sprint.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 command: Command = (_ctx) => {\n println(packageJson.version);\n};\n"],"names":["packageJson","println","sprint","usage","command","_ctx","version"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AACA,SAASA,WAAW,QAAQ,qCAAqC;AACjE,SAASC,OAAO,QAAQ,8BAA8B;AACtD,SAASC,MAAM,QAAQ,+BAA+B;AAEtD,OAAO,MAAMC,QAAe,IAAMD,MAAM,CAAC;;;;;;;;;AASzC,CAAC,CAAC;AAEF,OAAO,MAAME,UAAmB,CAACC;IAC/BJ,QAAQD,YAAYM,OAAO;AAC7B,EAAE"}
@@ -1,23 +0,0 @@
1
- import { println } from "../services/output/print.js";
2
- import { sprint } from "../services/output/sprint.js";
3
- import { getUser } from "../services/user/user.js";
4
- export const usage = ()=>sprint`
5
- Show the name and email address of the currently logged in user.
6
-
7
- {gray Usage}
8
- ggt whoami
9
- `;
10
- export const command = async (ctx)=>{
11
- const user = await getUser(ctx);
12
- if (!user) {
13
- println`You are not logged in`;
14
- return;
15
- }
16
- if (user.name) {
17
- println`You are logged in as ${user.name} (${user.email})`;
18
- } else {
19
- println`You are logged in as ${user.email}`;
20
- }
21
- };
22
-
23
- //# sourceMappingURL=whoami.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/commands/whoami.ts"],"sourcesContent":["import type { Command, 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 command: Command = 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"],"names":["println","sprint","getUser","usage","command","ctx","user","name","email"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,OAAO,QAAQ,8BAA8B;AACtD,SAASC,MAAM,QAAQ,+BAA+B;AACtD,SAASC,OAAO,QAAQ,2BAA2B;AAEnD,OAAO,MAAMC,QAAe,IAAMF,MAAM,CAAC;;;;;AAKzC,CAAC,CAAC;AAEF,OAAO,MAAMG,UAAmB,OAAOC;IACrC,MAAMC,OAAO,MAAMJ,QAAQG;IAC3B,IAAI,CAACC,MAAM;QACTN,OAAO,CAAC,qBAAqB,CAAC;QAC9B;IACF;IAEA,IAAIM,KAAKC,IAAI,EAAE;QACbP,OAAO,CAAC,qBAAqB,EAAEM,KAAKC,IAAI,CAAC,EAAE,EAAED,KAAKE,KAAK,CAAC,CAAC,CAAC;IAC5D,OAAO;QACLR,OAAO,CAAC,qBAAqB,EAAEM,KAAKE,KAAK,CAAC,CAAC;IAC7C;AACF,EAAE"}
package/lib/ggt.js DELETED
@@ -1,65 +0,0 @@
1
- import ms from "ms";
2
- import * as root from "./commands/root.js";
3
- import { Context } from "./services/command/context.js";
4
- import { output } from "./services/output/output.js";
5
- import { println } from "./services/output/print.js";
6
- import { installErrorHandlers, reportErrorAndExit } from "./services/output/report.js";
7
- import { activeSpinner, spin } from "./services/output/spinner.js";
8
- import { installJsonExtensions } from "./services/util/json.js";
9
- export const ggt = async (ctx = Context.init({
10
- name: "ggt"
11
- }))=>{
12
- installJsonExtensions();
13
- installErrorHandlers(ctx);
14
- try {
15
- let stopping = false;
16
- for (const signal of [
17
- "SIGINT",
18
- "SIGTERM"
19
- ]){
20
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
21
- process.on(signal, async ()=>{
22
- if (stopping) {
23
- return;
24
- }
25
- stopping = true;
26
- ctx.log.trace("received signal", {
27
- signal
28
- });
29
- setTimeout(()=>{
30
- // when ggt is run with npx, and the user presses ctrl+c, ggt
31
- // receives SIGINT twice in quick succession. in order to
32
- // prevent the second SIGINT from triggering the force exit
33
- // listener, we wait a bit in this setTimeout before adding it
34
- process.once(signal, ()=>{
35
- println(" Exiting immediately");
36
- process.exit(1);
37
- });
38
- }, ms("100ms")).unref();
39
- // ctrl+c was pressed, so we need to clear the line
40
- output.writeStdout("\n");
41
- // if there was any sticky text, it needs to be persisted now
42
- activeSpinner?.clear();
43
- output.persistFooter();
44
- const spinner = spin({
45
- successSymbol: "👋"
46
- })`
47
- Stopping {gray Press Ctrl+C again to force}
48
- `;
49
- try {
50
- ctx.abort();
51
- await ctx.done;
52
- spinner.succeed("Goodbye!");
53
- } catch (error) {
54
- spinner.fail();
55
- await reportErrorAndExit(ctx, error);
56
- }
57
- });
58
- }
59
- await root.command(ctx);
60
- } catch (error) {
61
- await reportErrorAndExit(ctx, error);
62
- }
63
- };
64
-
65
- //# sourceMappingURL=ggt.js.map
package/lib/ggt.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ggt.ts"],"sourcesContent":["import ms from \"ms\";\nimport * as root from \"./commands/root.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 installJsonExtensions();\n installErrorHandlers(ctx);\n\n try {\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({ successSymbol: \"👋\" })`\n Stopping {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 await root.command(ctx);\n } catch (error) {\n await reportErrorAndExit(ctx, error);\n }\n};\n"],"names":["ms","root","Context","output","println","installErrorHandlers","reportErrorAndExit","activeSpinner","spin","installJsonExtensions","ggt","ctx","init","name","stopping","signal","process","on","log","trace","setTimeout","once","exit","unref","writeStdout","clear","persistFooter","spinner","successSymbol","abort","done","succeed","error","fail","command"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,YAAYC,UAAU,qBAAqB;AAC3C,SAASC,OAAO,QAAQ,gCAAgC;AACxD,SAASC,MAAM,QAAQ,8BAA8B;AACrD,SAASC,OAAO,QAAQ,6BAA6B;AACrD,SAASC,oBAAoB,EAAEC,kBAAkB,QAAQ,8BAA8B;AACvF,SAASC,aAAa,EAAEC,IAAI,QAAQ,+BAA+B;AACnE,SAASC,qBAAqB,QAAQ,0BAA0B;AAEhE,OAAO,MAAMC,MAAM,OAAOC,MAAMT,QAAQU,IAAI,CAAC;IAAEC,MAAM;AAAM,EAAE;IAC3DJ;IACAJ,qBAAqBM;IAErB,IAAI;QACF,IAAIG,WAAW;QAEf,KAAK,MAAMC,UAAU;YAAC;YAAU;SAAU,CAAW;YACnD,kEAAkE;YAClEC,QAAQC,EAAE,CAACF,QAAQ;gBACjB,IAAID,UAAU;oBACZ;gBACF;gBAEAA,WAAW;gBACXH,IAAIO,GAAG,CAACC,KAAK,CAAC,mBAAmB;oBAAEJ;gBAAO;gBAE1CK,WAAW;oBACT,6DAA6D;oBAC7D,yDAAyD;oBACzD,2DAA2D;oBAC3D,8DAA8D;oBAC9DJ,QAAQK,IAAI,CAACN,QAAQ;wBACnBX,QAAQ;wBACRY,QAAQM,IAAI,CAAC;oBACf;gBACF,GAAGtB,GAAG,UAAUuB,KAAK;gBAErB,mDAAmD;gBACnDpB,OAAOqB,WAAW,CAAC;gBAEnB,6DAA6D;gBAC7DjB,eAAekB;gBACftB,OAAOuB,aAAa;gBAEpB,MAAMC,UAAUnB,KAAK;oBAAEoB,eAAe;gBAAK,EAAE,CAAC;;QAE9C,CAAC;gBAED,IAAI;oBACFjB,IAAIkB,KAAK;oBACT,MAAMlB,IAAImB,IAAI;oBACdH,QAAQI,OAAO,CAAC;gBAClB,EAAE,OAAOC,OAAO;oBACdL,QAAQM,IAAI;oBACZ,MAAM3B,mBAAmBK,KAAKqB;gBAChC;YACF;QACF;QAEA,MAAM/B,KAAKiC,OAAO,CAACvB;IACrB,EAAE,OAAOqB,OAAO;QACd,MAAM1B,mBAAmBK,KAAKqB;IAChC;AACF,EAAE"}
package/lib/main.js DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env node
2
- import { ggt } from "./ggt.js";
3
- await ggt();
4
-
5
- //# sourceMappingURL=main.js.map
package/lib/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/main.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { ggt } from \"./ggt.js\";\n\nawait ggt();\n"],"names":["ggt"],"rangeMappings":";;","mappings":";AAEA,SAASA,GAAG,QAAQ,WAAW;AAE/B,MAAMA"}