@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,136 +0,0 @@
1
- import { got } from "got";
2
- import ms from "ms";
3
- import assert from "node:assert";
4
- import { Agent as HttpAgent } from "node:http";
5
- import { Agent as HttpsAgent } from "node:https";
6
- import { Context } from "../command/context.js";
7
- import { config } from "../config/config.js";
8
- import { sprint } from "../output/sprint.js";
9
- import { writeSession } from "../user/session.js";
10
- import { serializeError } from "../util/object.js";
11
- import { isGadgetServicesRequest } from "./auth.js";
12
- const getContext = (options)=>{
13
- assert(options.context?.["ctx"] instanceof Context, sprint(`
14
- ctx must be provided to http requests:
15
-
16
- const response = await http({
17
- context: { ctx },
18
- ...options,
19
- });
20
- `));
21
- return options.context["ctx"];
22
- };
23
- /**
24
- * An instance of the `got` library with hooks for logging and handling
25
- * 401 errors. This should be used for all HTTP requests.
26
- */ export const http = got.extend({
27
- agent: {
28
- http: new HttpAgent({
29
- keepAlive: true
30
- }),
31
- https: new HttpsAgent({
32
- keepAlive: true
33
- })
34
- },
35
- retry: {
36
- limit: 10,
37
- methods: [
38
- "GET",
39
- "PUT",
40
- "HEAD",
41
- "DELETE",
42
- "OPTIONS",
43
- "TRACE"
44
- ],
45
- statusCodes: [
46
- 408,
47
- 413,
48
- 429,
49
- 500,
50
- 502,
51
- 503,
52
- 504,
53
- 521,
54
- 522,
55
- 524
56
- ],
57
- errorCodes: [
58
- "ETIMEDOUT",
59
- "ECONNRESET",
60
- "EADDRINUSE",
61
- "ECONNREFUSED",
62
- "EPIPE",
63
- "ENOTFOUND",
64
- "ENETUNREACH",
65
- "EAI_AGAIN",
66
- "EADDRNOTAVAIL",
67
- "EHOSTUNREACH"
68
- ],
69
- maxRetryAfter: undefined,
70
- calculateDelay: ({ computedValue })=>computedValue,
71
- backoffLimit: ms("5s"),
72
- noise: 100
73
- },
74
- hooks: {
75
- beforeRequest: [
76
- (options)=>{
77
- const ctx = getContext(options);
78
- options.signal = ctx.signal;
79
- options.headers["user-agent"] = config.versionFull;
80
- ctx.log.debug("http request", {
81
- http: {
82
- request: {
83
- method: options.method,
84
- url: options.url?.toString()
85
- }
86
- }
87
- });
88
- }
89
- ],
90
- beforeRetry: [
91
- (error, retryCount)=>{
92
- const ctx = getContext(error.request?.options ?? error.options.context);
93
- ctx.log.warn("http request failed, retrying...", {
94
- http: {
95
- retryCount,
96
- error: serializeError(error),
97
- request: error.request && {
98
- method: error.request.options.method,
99
- url: error.request.options.url?.toString()
100
- },
101
- response: error.response && {
102
- statusCode: error.response.statusCode,
103
- traceId: error.response.headers["x-trace-id"],
104
- durationMs: error.response.timings.phases.total
105
- }
106
- }
107
- });
108
- }
109
- ],
110
- afterResponse: [
111
- (response)=>{
112
- const ctx = getContext(response.request.options);
113
- ctx.log.debug("http response", {
114
- http: {
115
- request: {
116
- method: response.request.options.method,
117
- url: response.request.options.url?.toString()
118
- },
119
- response: {
120
- statusCode: response.statusCode,
121
- traceId: response.headers["x-trace-id"],
122
- durationMs: response.timings.phases.total
123
- }
124
- }
125
- });
126
- if (response.statusCode === 401 && isGadgetServicesRequest(response.request.options)) {
127
- // clear the session if the request was unauthorized
128
- writeSession(undefined);
129
- }
130
- return response;
131
- }
132
- ]
133
- }
134
- });
135
-
136
- //# sourceMappingURL=http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/services/http/http.ts"],"sourcesContent":["import { got, type OptionsInit } from \"got\";\nimport ms from \"ms\";\nimport assert from \"node:assert\";\nimport { Agent as HttpAgent } from \"node:http\";\nimport { Agent as HttpsAgent } from \"node:https\";\nimport { Context } from \"../command/context.js\";\nimport { config } from \"../config/config.js\";\nimport { sprint } from \"../output/sprint.js\";\nimport { writeSession } from \"../user/session.js\";\nimport { serializeError } from \"../util/object.js\";\nimport { isGadgetServicesRequest } from \"./auth.js\";\n\nexport type HttpOptions = OptionsInit;\n\nconst getContext = (options: HttpOptions): Context => {\n assert(\n options.context?.[\"ctx\"] instanceof Context,\n sprint(`\n ctx must be provided to http requests:\n\n const response = await http({\n context: { ctx },\n ...options,\n });\n `),\n );\n\n return options.context[\"ctx\"] as Context;\n};\n\n/**\n * An instance of the `got` library with hooks for logging and handling\n * 401 errors. This should be used for all HTTP requests.\n */\nexport const http = got.extend({\n agent: {\n http: new HttpAgent({ keepAlive: true }),\n https: new HttpsAgent({ keepAlive: true }),\n },\n retry: {\n limit: 10,\n methods: [\"GET\", \"PUT\", \"HEAD\", \"DELETE\", \"OPTIONS\", \"TRACE\"],\n statusCodes: [408, 413, 429, 500, 502, 503, 504, 521, 522, 524],\n errorCodes: [\n \"ETIMEDOUT\",\n \"ECONNRESET\",\n \"EADDRINUSE\",\n \"ECONNREFUSED\",\n \"EPIPE\",\n \"ENOTFOUND\",\n \"ENETUNREACH\",\n \"EAI_AGAIN\",\n \"EADDRNOTAVAIL\",\n \"EHOSTUNREACH\",\n ],\n maxRetryAfter: undefined,\n calculateDelay: ({ computedValue }) => computedValue,\n backoffLimit: ms(\"5s\"),\n noise: 100,\n },\n hooks: {\n beforeRequest: [\n (options) => {\n const ctx = getContext(options);\n options.signal = ctx.signal;\n options.headers[\"user-agent\"] = config.versionFull;\n ctx.log.debug(\"http request\", {\n http: {\n request: {\n method: options.method,\n url: options.url?.toString(),\n },\n },\n });\n },\n ],\n beforeRetry: [\n (error, retryCount) => {\n const ctx = getContext(error.request?.options ?? error.options.context);\n\n ctx.log.warn(\"http request failed, retrying...\", {\n http: {\n retryCount,\n error: serializeError(error),\n request: error.request && {\n method: error.request.options.method,\n url: error.request.options.url?.toString(),\n },\n response: error.response && {\n statusCode: error.response.statusCode,\n traceId: error.response.headers[\"x-trace-id\"],\n durationMs: error.response.timings.phases.total,\n },\n },\n });\n },\n ],\n afterResponse: [\n (response) => {\n const ctx = getContext(response.request.options);\n ctx.log.debug(\"http response\", {\n http: {\n request: {\n method: response.request.options.method,\n url: response.request.options.url?.toString(),\n },\n response: {\n statusCode: response.statusCode,\n traceId: response.headers[\"x-trace-id\"],\n durationMs: response.timings.phases.total,\n },\n },\n });\n\n if (response.statusCode === 401 && isGadgetServicesRequest(response.request.options)) {\n // clear the session if the request was unauthorized\n writeSession(undefined);\n }\n\n return response;\n },\n ],\n },\n});\n"],"names":["got","ms","assert","Agent","HttpAgent","HttpsAgent","Context","config","sprint","writeSession","serializeError","isGadgetServicesRequest","getContext","options","context","http","extend","agent","keepAlive","https","retry","limit","methods","statusCodes","errorCodes","maxRetryAfter","undefined","calculateDelay","computedValue","backoffLimit","noise","hooks","beforeRequest","ctx","signal","headers","versionFull","log","debug","request","method","url","toString","beforeRetry","error","retryCount","warn","response","statusCode","traceId","durationMs","timings","phases","total","afterResponse"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,149 +0,0 @@
1
- import { _ as _define_property } from "@swc/helpers/_/_define_property";
2
- import chalk from "chalk";
3
- import process from "node:process";
4
- import { isString } from "../util/is.js";
5
- import { defaults } from "../util/object.js";
6
- import { output } from "./output.js";
7
- import { println } from "./print.js";
8
- import { Prompt } from "./prompt.js";
9
- import { isSprintOptions, sprint, sprintln } from "./sprint.js";
10
- // TODO: i regret this api... don't make it the same as println... just make it take ctx and options
11
- const createConfirm = (options)=>{
12
- options = defaults(options, {
13
- ensureEmptyLineAbove: true,
14
- exitWhenNo: true
15
- });
16
- return (templateOrOptions, ...values)=>{
17
- if (isSprintOptions(templateOrOptions)) {
18
- return createConfirm({
19
- ...options,
20
- ...templateOrOptions
21
- });
22
- }
23
- let text = templateOrOptions;
24
- if (!isString(text)) {
25
- text = sprint(templateOrOptions, ...values);
26
- }
27
- const whenNotInteractive = options.whenNotInteractive ?? (()=>{
28
- // TODO: log an error here
29
- println(options)(text);
30
- println({
31
- ensureEmptyLineAbove: true
32
- })`
33
- Aborting because ggt is not running in an interactive terminal.
34
- `;
35
- process.exit(1);
36
- });
37
- if (!output.isInteractive) {
38
- return Promise.resolve(whenNotInteractive());
39
- }
40
- return new Promise((resolve)=>{
41
- const conf = new Confirm(text, options);
42
- conf.on("submit", resolve);
43
- conf.on("exit", ()=>process.exit(0));
44
- conf.on("abort", ()=>process.exit(1));
45
- });
46
- };
47
- };
48
- export const confirm = createConfirm({});
49
- /**
50
- * Inspired by `prompts`:
51
- * https://github.com/terkelg/prompts/blob/e0519913ec4fcc6746bb3d97d8cd0960c3f3ffde/lib/elements/confirm.js
52
- *
53
- * MIT License
54
- *
55
- * Copyright (c) 2018 Terkel Gjervig Nielsen
56
- *
57
- * Permission is hereby granted, free of charge, to any person obtaining a copy
58
- * of this software and associated documentation files (the "Software"), to deal
59
- * in the Software without restriction, including without limitation the rights
60
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
61
- * copies of the Software, and to permit persons to whom the Software is
62
- * furnished to do so, subject to the following conditions:
63
- *
64
- * The above copyright notice and this permission notice shall be included in all
65
- * copies or substantial portions of the Software.
66
- *
67
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
68
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
69
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
70
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
71
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
72
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
73
- * SOFTWARE.
74
- */ export class Confirm extends Prompt {
75
- reset() {
76
- this.value = this.defaultValue;
77
- this.fire();
78
- this.render();
79
- }
80
- exit() {
81
- this.abort();
82
- }
83
- abort() {
84
- this.value = false;
85
- this.done = this.aborted = true;
86
- this.fire();
87
- this.render(false);
88
- this.close();
89
- if (this.options.exitWhenNo) {
90
- process.exit(0);
91
- }
92
- }
93
- submit() {
94
- this.value = this.value ?? false;
95
- this.done = true;
96
- this.aborted = false;
97
- this.fire();
98
- this.render();
99
- this.close();
100
- if (this.options.exitWhenNo && !this.value) {
101
- process.exit(0);
102
- }
103
- }
104
- _(char, _key) {
105
- if (char.toLowerCase() === "y") {
106
- this.value = true;
107
- this.submit();
108
- return;
109
- }
110
- if (char.toLowerCase() === "n") {
111
- this.value = false;
112
- this.submit();
113
- return;
114
- }
115
- this.bell();
116
- }
117
- render(value = this.value) {
118
- super.render();
119
- if (this.done) {
120
- output.persistPrompt(sprintln`
121
- ${this.text} ${value ? chalk.bold.greenBright("Yes.") : chalk.bold.redBright("No.")}
122
- `);
123
- return;
124
- }
125
- output.updatePrompt(sprintln`
126
- ${this.text} ${this.defaultValue ? "[Y/n] " : "[y/N] "}
127
- `);
128
- }
129
- constructor(text, options){
130
- super();
131
- _define_property(this, "text", void 0);
132
- _define_property(this, "value", void 0);
133
- _define_property(this, "defaultValue", void 0);
134
- _define_property(this, "options", void 0);
135
- this.text = text;
136
- this.value = undefined;
137
- this.defaultValue = false;
138
- this.options = defaults(options, {
139
- exitWhenNo: true,
140
- ensureEmptyLineAbove: true
141
- });
142
- if (this.options.ensureEmptyLineAbove) {
143
- this.text = "\n" + this.text;
144
- }
145
- this.render();
146
- }
147
- }
148
-
149
- //# sourceMappingURL=confirm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/services/output/confirm.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport process from \"node:process\";\nimport type { Promisable } from \"type-fest\";\nimport { isString } from \"../util/is.js\";\nimport { defaults } from \"../util/object.js\";\nimport { output } from \"./output.js\";\nimport { println } from \"./print.js\";\nimport { Prompt, type StdinKey } from \"./prompt.js\";\nimport { isSprintOptions, sprint, sprintln, type SprintOptions } from \"./sprint.js\";\n\nexport type ConfirmOptions = SprintOptions & {\n /**\n * If `true`, ggt will exit if the user selects \"No\".\n *\n * @default true\n */\n exitWhenNo?: boolean;\n\n /**\n * What to do if ggt is not running in an interactive terminal.\n *\n * @default ```\n * println(options)(text);\n * println({ ensureEmptyLineAbove: true })`\n * Aborting because ggt is not running in an interactive terminal.\n * `;\n * process.exit(1);\n * ```\n */\n whenNotInteractive?: () => Promisable<void>;\n};\n\nexport type confirm = {\n (str: string): Promise<void>;\n (template: TemplateStringsArray, ...values: unknown[]): Promise<void>;\n (options: ConfirmOptions): confirm;\n};\n\n// TODO: i regret this api... don't make it the same as println... just make it take ctx and options\nconst createConfirm = (options: ConfirmOptions): confirm => {\n options = defaults(options, {\n ensureEmptyLineAbove: true,\n exitWhenNo: true,\n });\n\n return ((templateOrOptions: ConfirmOptions | string | TemplateStringsArray, ...values: unknown[]): confirm | Promise<void> => {\n if (isSprintOptions(templateOrOptions)) {\n return createConfirm({ ...options, ...templateOrOptions });\n }\n\n let text = templateOrOptions as string;\n if (!isString(text)) {\n text = sprint(templateOrOptions as TemplateStringsArray, ...values);\n }\n\n const whenNotInteractive =\n options.whenNotInteractive ??\n (() => {\n // TODO: log an error here\n println(options)(text);\n println({ ensureEmptyLineAbove: true })`\n Aborting because ggt is not running in an interactive terminal.\n `;\n process.exit(1);\n });\n\n if (!output.isInteractive) {\n return Promise.resolve(whenNotInteractive());\n }\n\n return new Promise((resolve) => {\n const conf = new Confirm(text, options);\n conf.on(\"submit\", resolve);\n conf.on(\"exit\", () => process.exit(0));\n conf.on(\"abort\", () => process.exit(1));\n });\n }) as confirm;\n};\n\nexport const confirm = createConfirm({});\n\n/**\n * Inspired by `prompts`:\n * https://github.com/terkelg/prompts/blob/e0519913ec4fcc6746bb3d97d8cd0960c3f3ffde/lib/elements/confirm.js\n *\n * MIT License\n *\n * Copyright (c) 2018 Terkel Gjervig Nielsen\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nexport class Confirm extends Prompt {\n override value: boolean | undefined = undefined;\n defaultValue = false;\n options;\n\n constructor(\n readonly text: string,\n options: Partial<ConfirmOptions>,\n ) {\n super();\n\n this.options = defaults(options, {\n exitWhenNo: true,\n ensureEmptyLineAbove: true,\n });\n\n if (this.options.ensureEmptyLineAbove) {\n this.text = \"\\n\" + this.text;\n }\n\n this.render();\n }\n\n reset(): void {\n this.value = this.defaultValue;\n this.fire();\n this.render();\n }\n\n exit(): void {\n this.abort();\n }\n\n abort(): void {\n this.value = false;\n this.done = this.aborted = true;\n this.fire();\n this.render(false);\n this.close();\n\n if (this.options.exitWhenNo) {\n process.exit(0);\n }\n }\n\n submit(): void {\n this.value = this.value ?? false;\n this.done = true;\n this.aborted = false;\n this.fire();\n this.render();\n this.close();\n\n if (this.options.exitWhenNo && !this.value) {\n process.exit(0);\n }\n }\n\n override _(char: string, _key: StdinKey): void {\n if (char.toLowerCase() === \"y\") {\n this.value = true;\n this.submit();\n return;\n }\n\n if (char.toLowerCase() === \"n\") {\n this.value = false;\n this.submit();\n return;\n }\n\n this.bell();\n }\n\n override render(value = this.value): void {\n super.render();\n\n if (this.done) {\n output.persistPrompt(sprintln`\n ${this.text} ${value ? chalk.bold.greenBright(\"Yes.\") : chalk.bold.redBright(\"No.\")}\n `);\n return;\n }\n\n output.updatePrompt(sprintln`\n ${this.text} ${this.defaultValue ? \"[Y/n] \" : \"[y/N] \"}\n `);\n }\n}\n"],"names":["chalk","process","isString","defaults","output","println","Prompt","isSprintOptions","sprint","sprintln","createConfirm","options","ensureEmptyLineAbove","exitWhenNo","templateOrOptions","values","text","whenNotInteractive","exit","isInteractive","Promise","resolve","conf","Confirm","on","confirm","reset","value","defaultValue","fire","render","abort","done","aborted","close","submit","_","char","_key","toLowerCase","bell","persistPrompt","bold","greenBright","redBright","updatePrompt","constructor","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { output } from "./output.js";
2
- import { isSprintOptions, sprintln } from "./sprint.js";
3
- const createFooter = (options)=>{
4
- return (optionsOrString, ...values)=>{
5
- if (isSprintOptions(optionsOrString)) {
6
- return createFooter({
7
- ...options,
8
- ...optionsOrString
9
- });
10
- }
11
- const str = sprintln(options)(optionsOrString, ...values);
12
- if (output.isInteractive) {
13
- output.updateFooter(str);
14
- } else {
15
- output.writeStdout(str);
16
- }
17
- return;
18
- };
19
- };
20
- export const footer = createFooter({});
21
-
22
- //# sourceMappingURL=footer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/services/output/footer.ts"],"sourcesContent":["import { output } from \"./output.js\";\nimport { isSprintOptions, sprintln, type SprintOptions } from \"./sprint.js\";\n\nexport type footer = {\n (str: string): void;\n (template: TemplateStringsArray, ...values: unknown[]): void;\n (options: SprintOptions): footer;\n};\n\nconst createFooter = (options: SprintOptions): footer => {\n return ((optionsOrString: SprintOptions | string | TemplateStringsArray, ...values: unknown[]): footer | undefined => {\n if (isSprintOptions(optionsOrString)) {\n return createFooter({ ...options, ...optionsOrString });\n }\n\n const str = sprintln(options)(optionsOrString as TemplateStringsArray, ...values);\n\n if (output.isInteractive) {\n output.updateFooter(str);\n } else {\n output.writeStdout(str);\n }\n\n return;\n }) as footer;\n};\n\nexport const footer = createFooter({});\n"],"names":["output","isSprintOptions","sprintln","createFooter","options","optionsOrString","values","str","isInteractive","updateFooter","writeStdout","footer"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,SAASC,eAAe,EAAEC,QAAQ,QAA4B,cAAc;AAQ5E,MAAMC,eAAe,CAACC;IACpB,OAAQ,CAACC,iBAAgE,GAAGC;QAC1E,IAAIL,gBAAgBI,kBAAkB;YACpC,OAAOF,aAAa;gBAAE,GAAGC,OAAO;gBAAE,GAAGC,eAAe;YAAC;QACvD;QAEA,MAAME,MAAML,SAASE,SAASC,oBAA4CC;QAE1E,IAAIN,OAAOQ,aAAa,EAAE;YACxBR,OAAOS,YAAY,CAACF;QACtB,OAAO;YACLP,OAAOU,WAAW,CAACH;QACrB;QAEA;IACF;AACF;AAEA,OAAO,MAAMI,SAASR,aAAa,CAAC,GAAG"}
@@ -1,3 +0,0 @@
1
- export { };
2
-
3
- //# sourceMappingURL=field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/services/output/log/field.ts"],"sourcesContent":["import { type JsonObject, type JsonPrimitive } from \"type-fest\";\n\nexport type Fields = Record<string, Field> | { error: unknown } | { reason: unknown };\n\nexport type Field = FieldPrimitive | FieldObject | FieldArray;\n\nexport type FieldPrimitive = JsonPrimitive | bigint | undefined;\n\nexport type FieldObject = JsonObject | { [key in string]: Field } | Map<FieldPrimitive, Field>;\n\nexport type FieldArray = Field[] | Set<Field>;\n"],"names":[],"rangeMappings":"","mappings":"AAUA,WAA8C"}
@@ -1,8 +0,0 @@
1
- import { formatJson } from "./json.js";
2
- import { formatPretty } from "./pretty.js";
3
- export const formatters = {
4
- pretty: formatPretty,
5
- json: formatJson
6
- };
7
-
8
- //# sourceMappingURL=format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/services/output/log/format/format.ts"],"sourcesContent":["import type { Fields } from \"../field.js\";\nimport type { Level } from \"../level.js\";\nimport { formatJson } from \"./json.js\";\nimport { formatPretty } from \"./pretty.js\";\n\nexport type Formatter = (level: Level, name: string, msg: string, fields: Fields) => string;\n\nexport const formatters = {\n pretty: formatPretty,\n json: formatJson,\n} as const;\n"],"names":["formatJson","formatPretty","formatters","pretty","json"],"rangeMappings":";;;;;","mappings":"AAEA,SAASA,UAAU,QAAQ,YAAY;AACvC,SAASC,YAAY,QAAQ,cAAc;AAI3C,OAAO,MAAMC,aAAa;IACxBC,QAAQF;IACRG,MAAMJ;AACR,EAAW"}
@@ -1,37 +0,0 @@
1
- import stripAnsi from "strip-ansi";
2
- import { isObject, isString } from "../../../util/is.js";
3
- export const formatJson = (level, name, msg, fields)=>{
4
- return JSON.stringify({
5
- level,
6
- name,
7
- msg: stripAnsi(msg).trim(),
8
- fields: serializeFields(fields)
9
- }) + "\n";
10
- };
11
- const serializeFields = (fields)=>{
12
- const result = {};
13
- for (const [key, value] of Object.entries(fields)){
14
- result[key] = serializeValue(value);
15
- }
16
- return result;
17
- };
18
- const serializeValue = (value)=>{
19
- if (value instanceof Set) {
20
- value = Array.from(value);
21
- }
22
- if (Array.isArray(value)) {
23
- return value.map(serializeValue);
24
- }
25
- if (value instanceof Map) {
26
- value = Object.fromEntries(value.entries());
27
- }
28
- if (isObject(value)) {
29
- return serializeFields(value);
30
- }
31
- if (isString(value)) {
32
- return stripAnsi(value).trim();
33
- }
34
- return value;
35
- };
36
-
37
- //# sourceMappingURL=json.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/services/output/log/format/json.ts"],"sourcesContent":["import stripAnsi from \"strip-ansi\";\nimport { isObject, isString } from \"../../../util/is.js\";\nimport type { Formatter } from \"./format.js\";\n\nexport const formatJson: Formatter = (level, name, msg, fields) => {\n return JSON.stringify({ level, name, msg: stripAnsi(msg).trim(), fields: serializeFields(fields) }) + \"\\n\";\n};\n\nconst serializeFields = (fields: Record<string, unknown>): Record<string, unknown> => {\n const result = {} as Record<string, unknown>;\n for (const [key, value] of Object.entries(fields)) {\n result[key] = serializeValue(value);\n }\n return result;\n};\n\nconst serializeValue = (value: unknown): unknown => {\n if (value instanceof Set) {\n value = Array.from(value);\n }\n\n if (Array.isArray(value)) {\n return value.map(serializeValue);\n }\n\n if (value instanceof Map) {\n value = Object.fromEntries(value.entries());\n }\n\n if (isObject(value)) {\n return serializeFields(value as Record<string, unknown>);\n }\n\n if (isString(value)) {\n return stripAnsi(value).trim();\n }\n\n return value;\n};\n"],"names":["stripAnsi","isObject","isString","formatJson","level","name","msg","fields","JSON","stringify","trim","serializeFields","result","key","value","Object","entries","serializeValue","Set","Array","from","isArray","map","Map","fromEntries"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,eAAe,aAAa;AACnC,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,sBAAsB;AAGzD,OAAO,MAAMC,aAAwB,CAACC,OAAOC,MAAMC,KAAKC;IACtD,OAAOC,KAAKC,SAAS,CAAC;QAAEL;QAAOC;QAAMC,KAAKN,UAAUM,KAAKI,IAAI;QAAIH,QAAQI,gBAAgBJ;IAAQ,KAAK;AACxG,EAAE;AAEF,MAAMI,kBAAkB,CAACJ;IACvB,MAAMK,SAAS,CAAC;IAChB,KAAK,MAAM,CAACC,KAAKC,MAAM,IAAIC,OAAOC,OAAO,CAACT,QAAS;QACjDK,MAAM,CAACC,IAAI,GAAGI,eAAeH;IAC/B;IACA,OAAOF;AACT;AAEA,MAAMK,iBAAiB,CAACH;IACtB,IAAIA,iBAAiBI,KAAK;QACxBJ,QAAQK,MAAMC,IAAI,CAACN;IACrB;IAEA,IAAIK,MAAME,OAAO,CAACP,QAAQ;QACxB,OAAOA,MAAMQ,GAAG,CAACL;IACnB;IAEA,IAAIH,iBAAiBS,KAAK;QACxBT,QAAQC,OAAOS,WAAW,CAACV,MAAME,OAAO;IAC1C;IAEA,IAAIf,SAASa,QAAQ;QACnB,OAAOH,gBAAgBG;IACzB;IAEA,IAAIZ,SAASY,QAAQ;QACnB,OAAOd,UAAUc,OAAOJ,IAAI;IAC9B;IAEA,OAAOI;AACT"}
@@ -1,158 +0,0 @@
1
- import chalk, { Chalk } from "chalk";
2
- import dayjs from "dayjs";
3
- import assert from "node:assert";
4
- import { config } from "../../../config/config.js";
5
- import { env } from "../../../config/env.js";
6
- import { isObject } from "../../../util/is.js";
7
- import { symbol } from "../../symbols.js";
8
- import { Level } from "../level.js";
9
- export const formatPretty = (level, name, msg, fields)=>{
10
- return `${formatTimestamp()} ${formatLevel(level)} ${formatName(name)}:${formatMessage(msg)}${formatFields(fields)}${NEW_LINE}`;
11
- };
12
- const color = new Chalk({
13
- // we always turn off colors in tests (FORCE_COLOR=0) so that we get
14
- // predictable output, but if we're running with logs enabled
15
- // (GGT_LOG_LEVEL=info), we still want to see colors in our logs
16
- level: env.testLike && config.logLevel < Level.PRINT ? 3 : chalk.level
17
- });
18
- const blue = color.hex("#86B5F7");
19
- const blueLight = color.hex("#B2D0FA");
20
- const gray = color.hex("#D6D6D6");
21
- const grayDark = color.hex("#C2C2C2");
22
- const green = color.hex("#9DE6A4");
23
- const greenLight = color.hex("#BEEEC3");
24
- const orange = color.hex("#EEAC78");
25
- const orangeLight = color.hex("#F4C7A4");
26
- const pink = color.hex("#FAACB5");
27
- const red = color.hex("#A64E4E");
28
- const white = color.hex("#FFFFFF");
29
- const EMPTY = "";
30
- const SPACE = " ";
31
- const NEW_LINE = "\n";
32
- const COLON = ":";
33
- const QUOTE = "'";
34
- const formatKey = (key, indent)=>{
35
- const color = key === "error" ? red : gray;
36
- const buf = [];
37
- buf.push(NEW_LINE);
38
- for(let i = 0; i < indent; i++){
39
- buf.push(SPACE);
40
- }
41
- buf.push(color(key));
42
- buf.push(COLON);
43
- return buf.join("");
44
- };
45
- const formatValue = (value, color, indent)=>{
46
- const lines = value.split(NEW_LINE);
47
- if (lines.length === 0) {
48
- return EMPTY;
49
- }
50
- const buf = [];
51
- const firstLine = lines.shift();
52
- assert(firstLine);
53
- buf.push(color(firstLine));
54
- // color the rest of the lines
55
- for (const line of lines){
56
- if (!line) {
57
- continue;
58
- }
59
- buf.push(NEW_LINE);
60
- for(let i = 0; i < indent; i++){
61
- buf.push(SPACE);
62
- }
63
- buf.push(color(line));
64
- }
65
- return buf.join(EMPTY);
66
- };
67
- const formatFields = (fields, indent = 2)=>{
68
- if (Object.keys(fields).length === 0) {
69
- return EMPTY;
70
- }
71
- const buf = [];
72
- for (let [key, value] of Object.entries(fields)){
73
- buf.push(formatKey(key, indent));
74
- if (value instanceof Set) {
75
- value = Array.from(value);
76
- }
77
- if (Array.isArray(value)) {
78
- if (value.length === 0) {
79
- buf.push(formatValue(" []", gray, indent));
80
- continue;
81
- }
82
- value = Object.fromEntries(value.entries());
83
- }
84
- if (value instanceof Map) {
85
- value = Object.fromEntries(value);
86
- }
87
- if (isObject(value)) {
88
- const entries = Object.entries(value);
89
- if (entries.length === 0) {
90
- buf.push(formatValue(" {}", gray, indent));
91
- continue;
92
- }
93
- if (entries.length > 10 && config.logLevel > Level.TRACE) {
94
- // truncate objects to 10 keys when not tracing
95
- value = Object.fromEntries([
96
- ...entries.slice(0, 10),
97
- [
98
- symbol.ellipsis,
99
- `${entries.length - 10} more`
100
- ]
101
- ]);
102
- }
103
- buf.push(formatFields(value, indent + 2));
104
- continue;
105
- }
106
- buf.push(SPACE);
107
- switch(typeof value){
108
- case "string":
109
- buf.push(formatValue(QUOTE + value.replaceAll(NEW_LINE, NEW_LINE + SPACE.repeat(indent + key.length)) + QUOTE, blueLight, indent));
110
- break;
111
- case "number":
112
- buf.push(formatValue(String(value), orangeLight, indent));
113
- break;
114
- case "bigint":
115
- buf.push(formatValue(String(value) + "n", orangeLight, indent));
116
- break;
117
- case "boolean":
118
- buf.push(formatValue(String(value), greenLight, indent));
119
- break;
120
- default:
121
- buf.push(formatValue(String(value), white, indent));
122
- break;
123
- }
124
- }
125
- return buf.join(EMPTY);
126
- };
127
- const formatTimestamp = ()=>{
128
- const ts = dayjs().format("hh:mm:ss");
129
- return grayDark(ts);
130
- };
131
- const formatLevel = (level)=>{
132
- switch(level){
133
- case Level.PRINT:
134
- return gray("PRINT");
135
- case Level.TRACE:
136
- return blue("TRACE");
137
- case Level.DEBUG:
138
- return orange("DEBUG");
139
- case Level.INFO:
140
- return green("INFO");
141
- case Level.WARN:
142
- return pink("WARN");
143
- case Level.ERROR:
144
- return red("ERROR");
145
- }
146
- };
147
- const formatName = (name)=>{
148
- return white(name);
149
- };
150
- const formatMessage = (msg)=>{
151
- const lines = msg.split(NEW_LINE);
152
- if (lines.length === 1) {
153
- return SPACE + white(msg);
154
- }
155
- return NEW_LINE + lines.map((line)=>SPACE + SPACE + line).join(NEW_LINE);
156
- };
157
-
158
- //# sourceMappingURL=pretty.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/services/output/log/format/pretty.ts"],"sourcesContent":["import chalk, { Chalk } from \"chalk\";\nimport dayjs from \"dayjs\";\nimport assert from \"node:assert\";\nimport { config } from \"../../../config/config.js\";\nimport { env } from \"../../../config/env.js\";\nimport { isObject } from \"../../../util/is.js\";\nimport { symbol } from \"../../symbols.js\";\nimport { Level } from \"../level.js\";\nimport type { Formatter } from \"./format.js\";\n\nexport const formatPretty: Formatter = (level, name, msg, fields) => {\n return `${formatTimestamp()} ${formatLevel(level)} ${formatName(name)}:${formatMessage(msg)}${formatFields(fields)}${NEW_LINE}`;\n};\n\nconst color = new Chalk({\n // we always turn off colors in tests (FORCE_COLOR=0) so that we get\n // predictable output, but if we're running with logs enabled\n // (GGT_LOG_LEVEL=info), we still want to see colors in our logs\n level: env.testLike && config.logLevel < Level.PRINT ? 3 : chalk.level,\n});\n\nconst blue = color.hex(\"#86B5F7\");\nconst blueLight = color.hex(\"#B2D0FA\");\nconst gray = color.hex(\"#D6D6D6\");\nconst grayDark = color.hex(\"#C2C2C2\");\nconst green = color.hex(\"#9DE6A4\");\nconst greenLight = color.hex(\"#BEEEC3\");\nconst orange = color.hex(\"#EEAC78\");\nconst orangeLight = color.hex(\"#F4C7A4\");\nconst pink = color.hex(\"#FAACB5\");\nconst red = color.hex(\"#A64E4E\");\nconst white = color.hex(\"#FFFFFF\");\n\nconst EMPTY = \"\";\nconst SPACE = \" \";\nconst NEW_LINE = \"\\n\";\nconst COLON = \":\";\nconst QUOTE = \"'\";\n\nconst formatKey = (key: string, indent: number): string => {\n const color = key === \"error\" ? red : gray;\n\n const buf: string[] = [];\n buf.push(NEW_LINE);\n for (let i = 0; i < indent; i++) {\n buf.push(SPACE);\n }\n buf.push(color(key));\n buf.push(COLON);\n\n return buf.join(\"\");\n};\n\nconst formatValue = (value: string, color: (s: string) => string, indent: number): string => {\n const lines = value.split(NEW_LINE);\n if (lines.length === 0) {\n return EMPTY;\n }\n\n const buf: string[] = [];\n const firstLine = lines.shift();\n assert(firstLine);\n buf.push(color(firstLine));\n\n // color the rest of the lines\n for (const line of lines) {\n if (!line) {\n continue;\n }\n\n buf.push(NEW_LINE);\n for (let i = 0; i < indent; i++) {\n buf.push(SPACE);\n }\n\n buf.push(color(line));\n }\n\n return buf.join(EMPTY);\n};\n\nconst formatFields = (fields: Record<string, unknown>, indent = 2): string => {\n if (Object.keys(fields).length === 0) {\n return EMPTY;\n }\n\n const buf: string[] = [];\n for (let [key, value] of Object.entries(fields)) {\n buf.push(formatKey(key, indent));\n\n if (value instanceof Set) {\n value = Array.from(value);\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n buf.push(formatValue(\" []\", gray, indent));\n continue;\n }\n\n value = Object.fromEntries(value.entries());\n }\n\n if (value instanceof Map) {\n value = Object.fromEntries(value);\n }\n\n if (isObject(value)) {\n const entries = Object.entries(value);\n if (entries.length === 0) {\n buf.push(formatValue(\" {}\", gray, indent));\n continue;\n }\n\n if (entries.length > 10 && config.logLevel > Level.TRACE) {\n // truncate objects to 10 keys when not tracing\n value = Object.fromEntries([...entries.slice(0, 10), [symbol.ellipsis, `${entries.length - 10} more`]]);\n }\n\n buf.push(formatFields(value as Record<string, unknown>, indent + 2));\n continue;\n }\n\n buf.push(SPACE);\n\n switch (typeof value) {\n case \"string\":\n buf.push(formatValue(QUOTE + value.replaceAll(NEW_LINE, NEW_LINE + SPACE.repeat(indent + key.length)) + QUOTE, blueLight, indent));\n break;\n case \"number\":\n buf.push(formatValue(String(value), orangeLight, indent));\n break;\n case \"bigint\":\n buf.push(formatValue(String(value) + \"n\", orangeLight, indent));\n break;\n case \"boolean\":\n buf.push(formatValue(String(value), greenLight, indent));\n break;\n default:\n buf.push(formatValue(String(value), white, indent));\n break;\n }\n }\n\n return buf.join(EMPTY);\n};\n\nconst formatTimestamp = (): string => {\n const ts = dayjs().format(\"hh:mm:ss\");\n return grayDark(ts);\n};\n\nconst formatLevel = (level: Level): string => {\n switch (level) {\n case Level.PRINT:\n return gray(\"PRINT\");\n case Level.TRACE:\n return blue(\"TRACE\");\n case Level.DEBUG:\n return orange(\"DEBUG\");\n case Level.INFO:\n return green(\"INFO\");\n case Level.WARN:\n return pink(\"WARN\");\n case Level.ERROR:\n return red(\"ERROR\");\n // case \"fatal\":\n // return red(colors.bold(level));\n }\n};\n\nconst formatName = (name: string): string => {\n return white(name);\n};\n\nconst formatMessage = (msg: string): string => {\n const lines = msg.split(NEW_LINE);\n if (lines.length === 1) {\n return SPACE + white(msg);\n }\n return NEW_LINE + lines.map((line) => SPACE + SPACE + line).join(NEW_LINE);\n};\n"],"names":["chalk","Chalk","dayjs","assert","config","env","isObject","symbol","Level","formatPretty","level","name","msg","fields","formatTimestamp","formatLevel","formatName","formatMessage","formatFields","NEW_LINE","color","testLike","logLevel","PRINT","blue","hex","blueLight","gray","grayDark","green","greenLight","orange","orangeLight","pink","red","white","EMPTY","SPACE","COLON","QUOTE","formatKey","key","indent","buf","push","i","join","formatValue","value","lines","split","length","firstLine","shift","line","Object","keys","entries","Set","Array","from","isArray","fromEntries","Map","TRACE","slice","ellipsis","replaceAll","repeat","String","ts","format","DEBUG","INFO","WARN","ERROR","map"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,41 +0,0 @@
1
- import assert from "node:assert";
2
- import { z } from "zod";
3
- import { MemoAllArgs, memo } from "../../util/function.js";
4
- import { clamp } from "../../util/number.js";
5
- export const Level = {
6
- TRACE: 1,
7
- DEBUG: 2,
8
- INFO: 3,
9
- WARN: 4,
10
- ERROR: 5,
11
- PRINT: 6
12
- };
13
- export const parseLevel = memo(MemoAllArgs, (value, defaultValue)=>{
14
- let parsed = z.enum([
15
- "TRACE",
16
- "DEBUG",
17
- "INFO",
18
- "WARN",
19
- "ERROR"
20
- ]).transform((str)=>Level[str]).safeParse(String(value).toUpperCase());
21
- if (!parsed.success) {
22
- parsed = z.number().min(Level.TRACE).max(Level.ERROR).safeParse(Number(value));
23
- }
24
- return parsed.success ? parsed.data : defaultValue;
25
- });
26
- /**
27
- * Converts a numeric verbosity value to a log level.
28
- *
29
- * @param verbosity - The verbosity value
30
- * @returns The log level
31
- * @example
32
- * verbosityToLevel(1) // => Level.INFO
33
- * verbosityToLevel(2) // => Level.DEBUG
34
- * verbosityToLevel(3) // => Level.TRACE
35
- * verbosityToLevel(Infinity) // => Level.TRACE
36
- */ export const verbosityToLevel = (verbosity)=>{
37
- assert(verbosity > 0, "verbosity must be greater than 0");
38
- return clamp(Level.INFO + 1 - verbosity, Level.TRACE, Level.INFO);
39
- };
40
-
41
- //# sourceMappingURL=level.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/services/output/log/level.ts"],"sourcesContent":["import assert from \"node:assert\";\nimport { z } from \"zod\";\nimport { MemoAllArgs, memo } from \"../../util/function.js\";\nimport { clamp } from \"../../util/number.js\";\n\nexport type Level = (typeof Level)[keyof typeof Level];\n\nexport const Level = {\n TRACE: 1,\n DEBUG: 2,\n INFO: 3,\n WARN: 4,\n ERROR: 5,\n PRINT: 6,\n} as const;\n\nexport const parseLevel = memo(MemoAllArgs, (value: unknown, defaultValue: Level): Level => {\n let parsed = z\n .enum([\"TRACE\", \"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"])\n .transform((str) => Level[str])\n .safeParse(String(value).toUpperCase());\n\n if (!parsed.success) {\n parsed = z.number().min(Level.TRACE).max(Level.ERROR).safeParse(Number(value)) as typeof parsed;\n }\n\n return parsed.success ? parsed.data : defaultValue;\n});\n\n/**\n * Converts a numeric verbosity value to a log level.\n *\n * @param verbosity - The verbosity value\n * @returns The log level\n * @example\n * verbosityToLevel(1) // => Level.INFO\n * verbosityToLevel(2) // => Level.DEBUG\n * verbosityToLevel(3) // => Level.TRACE\n * verbosityToLevel(Infinity) // => Level.TRACE\n */\nexport const verbosityToLevel = (verbosity: number): Level => {\n assert(verbosity > 0, \"verbosity must be greater than 0\");\n return clamp(Level.INFO + 1 - verbosity, Level.TRACE, Level.INFO) as Level;\n};\n"],"names":["assert","z","MemoAllArgs","memo","clamp","Level","TRACE","DEBUG","INFO","WARN","ERROR","PRINT","parseLevel","value","defaultValue","parsed","enum","transform","str","safeParse","String","toUpperCase","success","number","min","max","Number","data","verbosityToLevel","verbosity"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,YAAY,cAAc;AACjC,SAASC,CAAC,QAAQ,MAAM;AACxB,SAASC,WAAW,EAAEC,IAAI,QAAQ,yBAAyB;AAC3D,SAASC,KAAK,QAAQ,uBAAuB;AAI7C,OAAO,MAAMC,QAAQ;IACnBC,OAAO;IACPC,OAAO;IACPC,MAAM;IACNC,MAAM;IACNC,OAAO;IACPC,OAAO;AACT,EAAW;AAEX,OAAO,MAAMC,aAAaT,KAAKD,aAAa,CAACW,OAAgBC;IAC3D,IAAIC,SAASd,EACVe,IAAI,CAAC;QAAC;QAAS;QAAS;QAAQ;QAAQ;KAAQ,EAChDC,SAAS,CAAC,CAACC,MAAQb,KAAK,CAACa,IAAI,EAC7BC,SAAS,CAACC,OAAOP,OAAOQ,WAAW;IAEtC,IAAI,CAACN,OAAOO,OAAO,EAAE;QACnBP,SAASd,EAAEsB,MAAM,GAAGC,GAAG,CAACnB,MAAMC,KAAK,EAAEmB,GAAG,CAACpB,MAAMK,KAAK,EAAES,SAAS,CAACO,OAAOb;IACzE;IAEA,OAAOE,OAAOO,OAAO,GAAGP,OAAOY,IAAI,GAAGb;AACxC,GAAG;AAEH;;;;;;;;;;CAUC,GACD,OAAO,MAAMc,mBAAmB,CAACC;IAC/B7B,OAAO6B,YAAY,GAAG;IACtB,OAAOzB,MAAMC,MAAMG,IAAI,GAAG,IAAIqB,WAAWxB,MAAMC,KAAK,EAAED,MAAMG,IAAI;AAClE,EAAE"}