@getbrevo/cli 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/CHANGELOG.md +221 -0
  2. package/README.md +8 -5
  3. package/agent-context/AGENTS.md +59 -15
  4. package/agent-context/SKILL.md +70 -14
  5. package/dist/{templates → bin}/files/AGENTS.md.tmpl +11 -1
  6. package/dist/{templates → bin}/files/CLAUDE.md.tmpl +8 -0
  7. package/dist/{templates → bin}/files/README.md.tmpl +11 -14
  8. package/dist/bin/files/app-config.json.tmpl +16 -0
  9. package/dist/{templates → bin}/files/src/oauth/.env.example.tmpl +8 -0
  10. package/dist/{templates → bin}/files/src/oauth/.env.local.tmpl +2 -0
  11. package/dist/{templates → bin}/files/src/oauth/handler.js.tmpl +49 -7
  12. package/dist/{templates → bin}/files/src/oauth/server.js.tmpl +20 -14
  13. package/dist/{templates → bin}/files/src/oauth/token-store.js.tmpl +19 -0
  14. package/dist/bin/index.js +660 -221
  15. package/dist/bin/index.js.map +7 -1
  16. package/package.json +6 -4
  17. package/dist/api/client.d.ts +0 -25
  18. package/dist/api/client.d.ts.map +0 -1
  19. package/dist/api/client.js +0 -205
  20. package/dist/api/client.js.map +0 -1
  21. package/dist/bin/index.d.ts +0 -3
  22. package/dist/bin/index.d.ts.map +0 -1
  23. package/dist/commands/app/create.d.ts +0 -8
  24. package/dist/commands/app/create.d.ts.map +0 -1
  25. package/dist/commands/app/create.js +0 -325
  26. package/dist/commands/app/create.js.map +0 -1
  27. package/dist/commands/app/credentials.d.ts +0 -6
  28. package/dist/commands/app/credentials.d.ts.map +0 -1
  29. package/dist/commands/app/credentials.js +0 -114
  30. package/dist/commands/app/credentials.js.map +0 -1
  31. package/dist/commands/app/delete.d.ts +0 -6
  32. package/dist/commands/app/delete.d.ts.map +0 -1
  33. package/dist/commands/app/delete.js +0 -167
  34. package/dist/commands/app/delete.js.map +0 -1
  35. package/dist/commands/app/list.d.ts +0 -4
  36. package/dist/commands/app/list.d.ts.map +0 -1
  37. package/dist/commands/app/list.js +0 -71
  38. package/dist/commands/app/list.js.map +0 -1
  39. package/dist/commands/app/scaffold.d.ts +0 -5
  40. package/dist/commands/app/scaffold.d.ts.map +0 -1
  41. package/dist/commands/app/scaffold.js +0 -213
  42. package/dist/commands/app/scaffold.js.map +0 -1
  43. package/dist/commands/app/scopes.d.ts +0 -2
  44. package/dist/commands/app/scopes.d.ts.map +0 -1
  45. package/dist/commands/app/scopes.js +0 -81
  46. package/dist/commands/app/scopes.js.map +0 -1
  47. package/dist/commands/app/start.d.ts +0 -5
  48. package/dist/commands/app/start.d.ts.map +0 -1
  49. package/dist/commands/app/start.js +0 -220
  50. package/dist/commands/app/start.js.map +0 -1
  51. package/dist/commands/app/update.d.ts +0 -2
  52. package/dist/commands/app/update.d.ts.map +0 -1
  53. package/dist/commands/app/update.js +0 -444
  54. package/dist/commands/app/update.js.map +0 -1
  55. package/dist/commands/definitions.d.ts +0 -5
  56. package/dist/commands/definitions.d.ts.map +0 -1
  57. package/dist/commands/definitions.js +0 -262
  58. package/dist/commands/definitions.js.map +0 -1
  59. package/dist/commands/init.d.ts +0 -2
  60. package/dist/commands/init.d.ts.map +0 -1
  61. package/dist/commands/init.js +0 -106
  62. package/dist/commands/init.js.map +0 -1
  63. package/dist/commands/login.d.ts +0 -6
  64. package/dist/commands/login.d.ts.map +0 -1
  65. package/dist/commands/login.js +0 -251
  66. package/dist/commands/login.js.map +0 -1
  67. package/dist/commands/logout.d.ts +0 -5
  68. package/dist/commands/logout.d.ts.map +0 -1
  69. package/dist/commands/logout.js +0 -54
  70. package/dist/commands/logout.js.map +0 -1
  71. package/dist/commands/skill/install.d.ts +0 -4
  72. package/dist/commands/skill/install.d.ts.map +0 -1
  73. package/dist/commands/skill/install.js +0 -29
  74. package/dist/commands/skill/install.js.map +0 -1
  75. package/dist/commands/skill/uninstall.d.ts +0 -4
  76. package/dist/commands/skill/uninstall.d.ts.map +0 -1
  77. package/dist/commands/skill/uninstall.js +0 -23
  78. package/dist/commands/skill/uninstall.js.map +0 -1
  79. package/dist/commands/whoami.d.ts +0 -4
  80. package/dist/commands/whoami.d.ts.map +0 -1
  81. package/dist/commands/whoami.js +0 -85
  82. package/dist/commands/whoami.js.map +0 -1
  83. package/dist/container.d.ts +0 -7
  84. package/dist/container.d.ts.map +0 -1
  85. package/dist/container.js +0 -28
  86. package/dist/container.js.map +0 -1
  87. package/dist/lang/en.d.ts +0 -161
  88. package/dist/lang/en.d.ts.map +0 -1
  89. package/dist/lang/en.js +0 -188
  90. package/dist/lang/en.js.map +0 -1
  91. package/dist/lib/abort.d.ts +0 -3
  92. package/dist/lib/abort.d.ts.map +0 -1
  93. package/dist/lib/abort.js +0 -30
  94. package/dist/lib/abort.js.map +0 -1
  95. package/dist/lib/auth-guard.d.ts +0 -3
  96. package/dist/lib/auth-guard.d.ts.map +0 -1
  97. package/dist/lib/auth-guard.js +0 -47
  98. package/dist/lib/auth-guard.js.map +0 -1
  99. package/dist/lib/browser.d.ts +0 -2
  100. package/dist/lib/browser.d.ts.map +0 -1
  101. package/dist/lib/browser.js +0 -16
  102. package/dist/lib/browser.js.map +0 -1
  103. package/dist/lib/cli-version.d.ts +0 -2
  104. package/dist/lib/cli-version.d.ts.map +0 -1
  105. package/dist/lib/cli-version.js +0 -59
  106. package/dist/lib/cli-version.js.map +0 -1
  107. package/dist/lib/command-handler.d.ts +0 -10
  108. package/dist/lib/command-handler.d.ts.map +0 -1
  109. package/dist/lib/command-handler.js +0 -16
  110. package/dist/lib/command-handler.js.map +0 -1
  111. package/dist/lib/command-registry.d.ts +0 -28
  112. package/dist/lib/command-registry.d.ts.map +0 -1
  113. package/dist/lib/command-registry.js +0 -54
  114. package/dist/lib/command-registry.js.map +0 -1
  115. package/dist/lib/config.d.ts +0 -83
  116. package/dist/lib/config.d.ts.map +0 -1
  117. package/dist/lib/config.js +0 -430
  118. package/dist/lib/config.js.map +0 -1
  119. package/dist/lib/constants.d.ts +0 -48
  120. package/dist/lib/constants.d.ts.map +0 -1
  121. package/dist/lib/constants.js +0 -121
  122. package/dist/lib/constants.js.map +0 -1
  123. package/dist/lib/errors.d.ts +0 -30
  124. package/dist/lib/errors.d.ts.map +0 -1
  125. package/dist/lib/errors.js +0 -66
  126. package/dist/lib/errors.js.map +0 -1
  127. package/dist/lib/exit-codes.d.ts +0 -9
  128. package/dist/lib/exit-codes.d.ts.map +0 -1
  129. package/dist/lib/exit-codes.js +0 -12
  130. package/dist/lib/exit-codes.js.map +0 -1
  131. package/dist/lib/hidden-input.d.ts +0 -2
  132. package/dist/lib/hidden-input.d.ts.map +0 -1
  133. package/dist/lib/hidden-input.js +0 -78
  134. package/dist/lib/hidden-input.js.map +0 -1
  135. package/dist/lib/json-output.d.ts +0 -6
  136. package/dist/lib/json-output.d.ts.map +0 -1
  137. package/dist/lib/json-output.js +0 -11
  138. package/dist/lib/json-output.js.map +0 -1
  139. package/dist/lib/logger.d.ts +0 -11
  140. package/dist/lib/logger.d.ts.map +0 -1
  141. package/dist/lib/logger.js +0 -110
  142. package/dist/lib/logger.js.map +0 -1
  143. package/dist/lib/port.d.ts +0 -25
  144. package/dist/lib/port.d.ts.map +0 -1
  145. package/dist/lib/port.js +0 -103
  146. package/dist/lib/port.js.map +0 -1
  147. package/dist/lib/telemetry.d.ts +0 -9
  148. package/dist/lib/telemetry.d.ts.map +0 -1
  149. package/dist/lib/telemetry.js +0 -57
  150. package/dist/lib/telemetry.js.map +0 -1
  151. package/dist/lib/ui.d.ts +0 -14
  152. package/dist/lib/ui.d.ts.map +0 -1
  153. package/dist/lib/ui.js +0 -75
  154. package/dist/lib/ui.js.map +0 -1
  155. package/dist/lib/update-notifier.d.ts +0 -37
  156. package/dist/lib/update-notifier.d.ts.map +0 -1
  157. package/dist/lib/update-notifier.js +0 -298
  158. package/dist/lib/update-notifier.js.map +0 -1
  159. package/dist/lib/validators.d.ts +0 -55
  160. package/dist/lib/validators.d.ts.map +0 -1
  161. package/dist/lib/validators.js +0 -166
  162. package/dist/lib/validators.js.map +0 -1
  163. package/dist/services/account.d.ts +0 -8
  164. package/dist/services/account.d.ts.map +0 -1
  165. package/dist/services/account.js +0 -15
  166. package/dist/services/account.js.map +0 -1
  167. package/dist/services/app.d.ts +0 -38
  168. package/dist/services/app.d.ts.map +0 -1
  169. package/dist/services/app.js +0 -145
  170. package/dist/services/app.js.map +0 -1
  171. package/dist/services/browser-auth.d.ts +0 -15
  172. package/dist/services/browser-auth.d.ts.map +0 -1
  173. package/dist/services/browser-auth.js +0 -188
  174. package/dist/services/browser-auth.js.map +0 -1
  175. package/dist/services/normalize-app-id.d.ts +0 -12
  176. package/dist/services/normalize-app-id.d.ts.map +0 -1
  177. package/dist/services/normalize-app-id.js +0 -38
  178. package/dist/services/normalize-app-id.js.map +0 -1
  179. package/dist/services/oauth-metadata.d.ts +0 -7
  180. package/dist/services/oauth-metadata.d.ts.map +0 -1
  181. package/dist/services/oauth-metadata.js +0 -43
  182. package/dist/services/oauth-metadata.js.map +0 -1
  183. package/dist/services/oauth-refresh.d.ts +0 -14
  184. package/dist/services/oauth-refresh.d.ts.map +0 -1
  185. package/dist/services/oauth-refresh.js +0 -70
  186. package/dist/services/oauth-refresh.js.map +0 -1
  187. package/dist/services/scopes-html.d.ts +0 -3
  188. package/dist/services/scopes-html.d.ts.map +0 -1
  189. package/dist/services/scopes-html.js +0 -516
  190. package/dist/services/scopes-html.js.map +0 -1
  191. package/dist/services/scopes-web.d.ts +0 -12
  192. package/dist/services/scopes-web.d.ts.map +0 -1
  193. package/dist/services/scopes-web.js +0 -95
  194. package/dist/services/scopes-web.js.map +0 -1
  195. package/dist/services/skill.d.ts +0 -48
  196. package/dist/services/skill.d.ts.map +0 -1
  197. package/dist/services/skill.js +0 -223
  198. package/dist/services/skill.js.map +0 -1
  199. package/dist/skills/index.d.ts +0 -47
  200. package/dist/skills/index.d.ts.map +0 -1
  201. package/dist/skills/index.js +0 -61
  202. package/dist/skills/index.js.map +0 -1
  203. package/dist/templates/files/app-config.json.tmpl +0 -25
  204. package/dist/templates/index.d.ts +0 -36
  205. package/dist/templates/index.d.ts.map +0 -1
  206. package/dist/templates/index.js +0 -105
  207. package/dist/templates/index.js.map +0 -1
  208. package/dist/types.d.ts +0 -32
  209. package/dist/types.d.ts.map +0 -1
  210. package/dist/types.js +0 -3
  211. package/dist/types.js.map +0 -1
  212. /package/dist/{templates → bin}/files/gitignore.tmpl +0 -0
  213. /package/dist/{templates → bin}/files/src/oauth/package.json.tmpl +0 -0
@@ -1,30 +0,0 @@
1
- export declare class CliError extends Error {
2
- readonly exitCode: number;
3
- constructor(message: string, exitCode?: number);
4
- }
5
- export declare class AbortError extends CliError {
6
- constructor();
7
- }
8
- export declare class AuthExpiredError extends CliError {
9
- constructor();
10
- }
11
- export declare enum ErrorCode {
12
- AUTH_INVALID = "AUTH_INVALID",
13
- AUTH_EXPIRED = "AUTH_EXPIRED",
14
- ACCESS_DENIED = "ACCESS_DENIED",
15
- APP_NOT_FOUND = "APP_NOT_FOUND",
16
- REDIRECT_INVALID = "REDIRECT_INVALID",
17
- PORT_IN_USE = "PORT_IN_USE",
18
- NETWORK_ERROR = "NETWORK_ERROR",
19
- RATE_LIMITED = "RATE_LIMITED",
20
- APP_LIMIT_REACHED = "APP_LIMIT_REACHED",
21
- REGISTRY_ERROR = "REGISTRY_ERROR",
22
- AUTH_GATEWAY = "AUTH_GATEWAY"
23
- }
24
- export declare class ApiError extends CliError {
25
- readonly statusCode: number;
26
- readonly errorCode?: ErrorCode | undefined;
27
- readonly apiCode?: string | undefined;
28
- constructor(message: string, statusCode: number, errorCode?: ErrorCode | undefined, apiCode?: string | undefined);
29
- }
30
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,QAAS,SAAQ,KAAK;aAGf,QAAQ,EAAE,MAAM;gBADhC,OAAO,EAAE,MAAM,EACC,QAAQ,GAAE,MAAyB;CAKtD;AAED,qBAAa,UAAW,SAAQ,QAAQ;;CAKvC;AAED,qBAAa,gBAAiB,SAAQ,QAAQ;;CAK7C;AAED,oBAAY,SAAS;IACnB,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,gBAAgB,qBAAqB;IACrC,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;CAC9B;AAED,qBAAa,QAAS,SAAQ,QAAQ;aAGlB,UAAU,EAAE,MAAM;aAClB,SAAS,CAAC,EAAE,SAAS;aACrB,OAAO,CAAC,EAAE,MAAM;gBAHhC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,SAAS,YAAA,EACrB,OAAO,CAAC,EAAE,MAAM,YAAA;CAKnC"}
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiError = exports.ErrorCode = exports.AuthExpiredError = exports.AbortError = exports.CliError = void 0;
4
- const exit_codes_1 = require("./exit-codes");
5
- class CliError extends Error {
6
- exitCode;
7
- constructor(message, exitCode = exit_codes_1.EXIT_CODES.ERROR) {
8
- super(message);
9
- this.exitCode = exitCode;
10
- this.name = 'CliError';
11
- }
12
- }
13
- exports.CliError = CliError;
14
- class AbortError extends CliError {
15
- constructor() {
16
- super('Aborted.', exit_codes_1.EXIT_CODES.ABORTED);
17
- this.name = 'AbortError';
18
- }
19
- }
20
- exports.AbortError = AbortError;
21
- class AuthExpiredError extends CliError {
22
- constructor() {
23
- super('Your session has expired. Run `brevo login` to sign in again.', exit_codes_1.EXIT_CODES.AUTH_FAILURE);
24
- this.name = 'AuthExpiredError';
25
- }
26
- }
27
- exports.AuthExpiredError = AuthExpiredError;
28
- var ErrorCode;
29
- (function (ErrorCode) {
30
- ErrorCode["AUTH_INVALID"] = "AUTH_INVALID";
31
- ErrorCode["AUTH_EXPIRED"] = "AUTH_EXPIRED";
32
- ErrorCode["ACCESS_DENIED"] = "ACCESS_DENIED";
33
- ErrorCode["APP_NOT_FOUND"] = "APP_NOT_FOUND";
34
- ErrorCode["REDIRECT_INVALID"] = "REDIRECT_INVALID";
35
- ErrorCode["PORT_IN_USE"] = "PORT_IN_USE";
36
- ErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
37
- ErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
38
- ErrorCode["APP_LIMIT_REACHED"] = "APP_LIMIT_REACHED";
39
- ErrorCode["REGISTRY_ERROR"] = "REGISTRY_ERROR";
40
- ErrorCode["AUTH_GATEWAY"] = "AUTH_GATEWAY";
41
- })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
42
- class ApiError extends CliError {
43
- statusCode;
44
- errorCode;
45
- apiCode;
46
- constructor(message, statusCode, errorCode, apiCode) {
47
- super(message, statusToExitCode(statusCode));
48
- this.statusCode = statusCode;
49
- this.errorCode = errorCode;
50
- this.apiCode = apiCode;
51
- this.name = 'ApiError';
52
- }
53
- }
54
- exports.ApiError = ApiError;
55
- function statusToExitCode(status) {
56
- if (status === 0)
57
- return exit_codes_1.EXIT_CODES.NETWORK_ERROR;
58
- if (status === 401)
59
- return exit_codes_1.EXIT_CODES.AUTH_FAILURE;
60
- if (status === 403)
61
- return exit_codes_1.EXIT_CODES.ERROR;
62
- if (status === 404)
63
- return exit_codes_1.EXIT_CODES.NOT_FOUND;
64
- return exit_codes_1.EXIT_CODES.ERROR;
65
- }
66
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C,MAAa,QAAS,SAAQ,KAAK;IAGf;IAFlB,YACE,OAAe,EACC,WAAmB,uBAAU,CAAC,KAAK;QAEnD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,aAAQ,GAAR,QAAQ,CAA2B;QAGnD,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AARD,4BAQC;AAED,MAAa,UAAW,SAAQ,QAAQ;IACtC;QACE,KAAK,CAAC,UAAU,EAAE,uBAAU,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AALD,gCAKC;AAED,MAAa,gBAAiB,SAAQ,QAAQ;IAC5C;QACE,KAAK,CAAC,+DAA+D,EAAE,uBAAU,CAAC,YAAY,CAAC,CAAC;QAChG,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AAED,IAAY,SAYX;AAZD,WAAY,SAAS;IACnB,0CAA6B,CAAA;IAC7B,0CAA6B,CAAA;IAC7B,4CAA+B,CAAA;IAC/B,4CAA+B,CAAA;IAC/B,kDAAqC,CAAA;IACrC,wCAA2B,CAAA;IAC3B,4CAA+B,CAAA;IAC/B,0CAA6B,CAAA;IAC7B,oDAAuC,CAAA;IACvC,8CAAiC,CAAA;IACjC,0CAA6B,CAAA;AAC/B,CAAC,EAZW,SAAS,yBAAT,SAAS,QAYpB;AAED,MAAa,QAAS,SAAQ,QAAQ;IAGlB;IACA;IACA;IAJlB,YACE,OAAe,EACC,UAAkB,EAClB,SAAqB,EACrB,OAAgB;QAEhC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;QAJ7B,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAY;QACrB,YAAO,GAAP,OAAO,CAAS;QAGhC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAVD,4BAUC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,IAAI,MAAM,KAAK,CAAC;QAAE,OAAO,uBAAU,CAAC,aAAa,CAAC;IAClD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,uBAAU,CAAC,YAAY,CAAC;IACnD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,uBAAU,CAAC,KAAK,CAAC;IAC5C,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,uBAAU,CAAC,SAAS,CAAC;IAChD,OAAO,uBAAU,CAAC,KAAK,CAAC;AAC1B,CAAC"}
@@ -1,9 +0,0 @@
1
- export declare const EXIT_CODES: {
2
- readonly SUCCESS: 0;
3
- readonly ERROR: 1;
4
- readonly ABORTED: 2;
5
- readonly AUTH_FAILURE: 3;
6
- readonly NETWORK_ERROR: 4;
7
- readonly NOT_FOUND: 5;
8
- };
9
- //# sourceMappingURL=exit-codes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../../src/lib/exit-codes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;;;CAOb,CAAC"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EXIT_CODES = void 0;
4
- exports.EXIT_CODES = {
5
- SUCCESS: 0,
6
- ERROR: 1,
7
- ABORTED: 2,
8
- AUTH_FAILURE: 3,
9
- NETWORK_ERROR: 4,
10
- NOT_FOUND: 5,
11
- };
12
- //# sourceMappingURL=exit-codes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../../src/lib/exit-codes.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;IACxB,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,SAAS,EAAE,CAAC;CACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function readHiddenInput(prompt: string): Promise<string>;
2
- //# sourceMappingURL=hidden-input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hidden-input.d.ts","sourceRoot":"","sources":["../../src/lib/hidden-input.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C/D"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.readHiddenInput = readHiddenInput;
37
- const readline = __importStar(require("node:readline"));
38
- function readHiddenInput(prompt) {
39
- return new Promise((resolve, reject) => {
40
- const rl = readline.createInterface({
41
- input: process.stdin,
42
- output: process.stdout,
43
- });
44
- let answered = false;
45
- // Mute output
46
- const stdout = process.stdout;
47
- process.stdout.write(` ${prompt}`);
48
- // Override _writeToOutput to mask user keystrokes only
49
- // readline calls _writeToOutput for its own internal writes (prompt, question text)
50
- // as well as echoed user input — we suppress the internal writes and mask keystrokes
51
- let prompting = true;
52
- rl._writeToOutput = function (str) {
53
- if (prompting)
54
- return; // suppress readline's own prompt/question echo
55
- if (str.includes('\n') || str.includes('\r')) {
56
- stdout.write('\n');
57
- }
58
- else {
59
- stdout.write('*');
60
- }
61
- };
62
- // After readline finishes its internal setup, start masking user input
63
- process.nextTick(() => {
64
- prompting = false;
65
- });
66
- rl.question('', (answer) => {
67
- answered = true;
68
- rl.close();
69
- resolve(answer.trim());
70
- });
71
- rl.on('close', () => {
72
- if (!answered) {
73
- reject(new Error('readline was closed'));
74
- }
75
- });
76
- });
77
- }
78
- //# sourceMappingURL=hidden-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hidden-input.js","sourceRoot":"","sources":["../../src/lib/hidden-input.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,0CA4CC;AA9CD,wDAA0C;AAE1C,SAAgB,eAAe,CAAC,MAAc;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,cAAc;QACd,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;QAEpC,uDAAuD;QACvD,oFAAoF;QACpF,qFAAqF;QACrF,IAAI,SAAS,GAAG,IAAI,CAAC;QACpB,EAAU,CAAC,cAAc,GAAG,UAAU,GAAW;YAChD,IAAI,SAAS;gBAAE,OAAO,CAAC,+CAA+C;YACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEF,uEAAuE;QACvE,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;YACpB,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YACzB,QAAQ,GAAG,IAAI,CAAC;YAChB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Write JSON data to stdout (for --json flag output).
3
- * Centralizes the JSON serialization pattern used by all commands.
4
- */
5
- export declare function jsonOutput(data: unknown): void;
6
- //# sourceMappingURL=json-output.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE9C"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.jsonOutput = jsonOutput;
4
- /**
5
- * Write JSON data to stdout (for --json flag output).
6
- * Centralizes the JSON serialization pattern used by all commands.
7
- */
8
- function jsonOutput(data) {
9
- process.stdout.write(JSON.stringify(data) + '\n');
10
- }
11
- //# sourceMappingURL=json-output.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-output.js","sourceRoot":"","sources":["../../src/lib/json-output.ts"],"names":[],"mappings":";;AAIA,gCAEC;AAND;;;GAGG;AACH,SAAgB,UAAU,CAAC,IAAa;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACpD,CAAC"}
@@ -1,11 +0,0 @@
1
- declare const isDebug: () => boolean;
2
- declare const isTTY: () => boolean;
3
- export declare function logHttp(method: string, path: string): void;
4
- export declare function logHttpResponse(status: number, path: string): void;
5
- export declare function logDebug(context: string, data: unknown): void;
6
- export declare function logError(message: string, error?: unknown): void;
7
- export declare function logSuccess(message: string): void;
8
- export declare function logInfo(message: string): void;
9
- export declare function logWarn(message: string): void;
10
- export { isDebug, isTTY };
11
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,OAAO,QAAO,OAA8E,CAAC;AAEnG,QAAA,MAAM,KAAK,QAAO,OAAwC,CAAC;AAwC3D,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAK1D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAM7D;AAsBD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAO/D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isTTY = exports.isDebug = void 0;
4
- exports.logHttp = logHttp;
5
- exports.logHttpResponse = logHttpResponse;
6
- exports.logDebug = logDebug;
7
- exports.logError = logError;
8
- exports.logSuccess = logSuccess;
9
- exports.logInfo = logInfo;
10
- exports.logWarn = logWarn;
11
- const isDebug = () => process.env.BREVO_DEBUG === '1' || process.argv.includes('--debug');
12
- exports.isDebug = isDebug;
13
- const isTTY = () => process.stdout.isTTY === true;
14
- exports.isTTY = isTTY;
15
- const useColor = () => process.env.NO_COLOR === undefined && (process.env.FORCE_COLOR !== undefined || isTTY());
16
- function color(code, text) {
17
- return useColor() ? `\x1b[${code}m${text}\x1b[0m` : text;
18
- }
19
- const SENSITIVE_KEYS = new Set([
20
- 'api-key',
21
- 'api_key',
22
- 'apikey',
23
- 'access_token',
24
- 'refresh_token',
25
- 'client_secret',
26
- 'token',
27
- 'password',
28
- 'secret',
29
- 'authorization',
30
- ]);
31
- function redactSensitiveFields(data) {
32
- if (data === null || data === undefined)
33
- return data;
34
- if (typeof data !== 'object')
35
- return data;
36
- if (Array.isArray(data))
37
- return data.map(redactSensitiveFields);
38
- const redacted = {};
39
- for (const [key, value] of Object.entries(data)) {
40
- if (SENSITIVE_KEYS.has(key.toLowerCase())) {
41
- redacted[key] = '[REDACTED]';
42
- }
43
- else if (typeof value === 'object' && value !== null) {
44
- redacted[key] = redactSensitiveFields(value);
45
- }
46
- else {
47
- redacted[key] = value;
48
- }
49
- }
50
- return redacted;
51
- }
52
- function logHttp(method, path) {
53
- if (isDebug()) {
54
- const line = `→ ${method} ${path}`;
55
- process.stderr.write(` ${color('90', line)}\n`);
56
- }
57
- }
58
- function logHttpResponse(status, path) {
59
- if (isDebug()) {
60
- const code = status >= 200 && status < 300 ? '32' : '31';
61
- const line = `← ${status} ${path}`;
62
- process.stderr.write(` ${color(code, line)}\n`);
63
- }
64
- }
65
- function logDebug(context, data) {
66
- if (isDebug()) {
67
- const safe = redactSensitiveFields(data);
68
- const line = `[debug] ${context}: ${JSON.stringify(safe)}`;
69
- process.stderr.write(` ${color('90', line)}\n`);
70
- }
71
- }
72
- function formatError(error) {
73
- if (error instanceof Error)
74
- return error.stack ?? error.message;
75
- if (typeof error === 'string')
76
- return error;
77
- if (typeof error === 'number' ||
78
- typeof error === 'boolean' ||
79
- typeof error === 'bigint' ||
80
- typeof error === 'symbol') {
81
- return String(error);
82
- }
83
- try {
84
- // JSON.stringify returns undefined for bare `undefined` and functions.
85
- return JSON.stringify(error) ?? 'undefined';
86
- }
87
- catch {
88
- // Circular structures make JSON.stringify throw.
89
- return '[unserializable error]';
90
- }
91
- }
92
- function logError(message, error) {
93
- process.stderr.write(`\n ${color('31', '✗')} ${message}\n`);
94
- if (isDebug() && error) {
95
- process.stderr.write(` ${color('90', formatError(error))}\n`);
96
- }
97
- else if (error) {
98
- process.stderr.write(` ${color('90', 'Run with --debug for full details')}\n`);
99
- }
100
- }
101
- function logSuccess(message) {
102
- process.stdout.write(`\n ${color('32', '✓')} ${message}\n`);
103
- }
104
- function logInfo(message) {
105
- process.stdout.write(` ${message}\n`);
106
- }
107
- function logWarn(message) {
108
- process.stdout.write(` ${color('33', '⚠')} ${message}\n`);
109
- }
110
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Check whether a TCP port is available.
3
- * Resolves true if the port is free, false if in use.
4
- * Rejects on unexpected errors (e.g. EACCES, invalid port).
5
- *
6
- * Probes 0.0.0.0 (IPv4 wildcard) and 127.0.0.1 (loopback) sequentially.
7
- * A single-host probe misses real conflicts: a loopback-only probe doesn't
8
- * catch wildcard owners (e.g. Mockoon on `*:3009`), and a wildcard-only
9
- * probe doesn't catch loopback-bound owners. Reporting "in use" if either
10
- * probe sees EADDRINUSE matches what an OAuth server bound to 127.0.0.1
11
- * would actually hit at start time or runtime.
12
- *
13
- * Probes run sequentially (not Promise.all) because parallel binds to
14
- * 0.0.0.0:N and 127.0.0.1:N race against each other — whichever the
15
- * kernel grants first triggers EADDRINUSE on the other, even when the
16
- * port is genuinely free. Sequential probes with proper close-between
17
- * avoid the self-collision.
18
- */
19
- export declare function isPortAvailable(port: number): Promise<boolean>;
20
- /**
21
- * Find the first available port starting from `startPort`.
22
- * Scans up to MAX_SCAN ports. Returns `null` if no free port is found.
23
- */
24
- export declare function findAvailablePort(startPort: number): Promise<number | null>;
25
- //# sourceMappingURL=port.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/lib/port.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIpE;AAKD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKjF"}
package/dist/lib/port.js DELETED
@@ -1,103 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.isPortAvailable = isPortAvailable;
37
- exports.findAvailablePort = findAvailablePort;
38
- const net = __importStar(require("node:net"));
39
- /**
40
- * Try to bind a fresh listener to `port` on `host`. Resolves true if the
41
- * bind succeeds (port free), false on EADDRINUSE, rejects on other errors.
42
- */
43
- function tryBind(port, host) {
44
- return new Promise((resolve, reject) => {
45
- const server = net.createServer();
46
- server.once('error', (err) => {
47
- if (err.code === 'EADDRINUSE') {
48
- resolve(false);
49
- }
50
- else {
51
- reject(err);
52
- }
53
- });
54
- server.once('listening', () => {
55
- server.close(() => resolve(true));
56
- });
57
- try {
58
- server.listen(port, host);
59
- }
60
- catch (err) {
61
- reject(err);
62
- }
63
- });
64
- }
65
- /**
66
- * Check whether a TCP port is available.
67
- * Resolves true if the port is free, false if in use.
68
- * Rejects on unexpected errors (e.g. EACCES, invalid port).
69
- *
70
- * Probes 0.0.0.0 (IPv4 wildcard) and 127.0.0.1 (loopback) sequentially.
71
- * A single-host probe misses real conflicts: a loopback-only probe doesn't
72
- * catch wildcard owners (e.g. Mockoon on `*:3009`), and a wildcard-only
73
- * probe doesn't catch loopback-bound owners. Reporting "in use" if either
74
- * probe sees EADDRINUSE matches what an OAuth server bound to 127.0.0.1
75
- * would actually hit at start time or runtime.
76
- *
77
- * Probes run sequentially (not Promise.all) because parallel binds to
78
- * 0.0.0.0:N and 127.0.0.1:N race against each other — whichever the
79
- * kernel grants first triggers EADDRINUSE on the other, even when the
80
- * port is genuinely free. Sequential probes with proper close-between
81
- * avoid the self-collision.
82
- */
83
- async function isPortAvailable(port) {
84
- if (!(await tryBind(port, '0.0.0.0')))
85
- return false;
86
- if (!(await tryBind(port, '127.0.0.1')))
87
- return false;
88
- return true;
89
- }
90
- /** Maximum number of ports to scan before giving up. */
91
- const MAX_SCAN = 20;
92
- /**
93
- * Find the first available port starting from `startPort`.
94
- * Scans up to MAX_SCAN ports. Returns `null` if no free port is found.
95
- */
96
- async function findAvailablePort(startPort) {
97
- for (let port = startPort; port < startPort + MAX_SCAN; port++) {
98
- if (await isPortAvailable(port))
99
- return port;
100
- }
101
- return null;
102
- }
103
- //# sourceMappingURL=port.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"port.js","sourceRoot":"","sources":["../../src/lib/port.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,0CAIC;AASD,8CAKC;AA/DD,8CAAgC;AAEhC;;;GAGG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAClD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wDAAwD;AACxD,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IACvD,KAAK,IAAI,IAAI,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,GAAG,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/D,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,9 +0,0 @@
1
- import { CLI_AUTH_METHODS } from './constants';
2
- export declare function getCliOs(): string;
3
- export declare function sanitizeHeaderValue(value: string, fallback: string): string;
4
- type CliAuthMethod = (typeof CLI_AUTH_METHODS)[keyof typeof CLI_AUTH_METHODS];
5
- export declare function getAuthMethod(authHeader: Record<string, string> | undefined): CliAuthMethod | undefined;
6
- export declare function getCliUserAgent(authHeader?: Record<string, string>): string;
7
- export declare function buildCliHeaders(authHeader?: Record<string, string>): Record<string, string>;
8
- export {};
9
- //# sourceMappingURL=telemetry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAuBlE,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG3E;AAMD,KAAK,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAK9E,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC7C,aAAa,GAAG,SAAS,CAI3B;AAED,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAI3E;AAED,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE3F"}
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCliOs = getCliOs;
4
- exports.sanitizeHeaderValue = sanitizeHeaderValue;
5
- exports.getAuthMethod = getAuthMethod;
6
- exports.getCliUserAgent = getCliUserAgent;
7
- exports.buildCliHeaders = buildCliHeaders;
8
- const cli_version_1 = require("./cli-version");
9
- const constants_1 = require("./constants");
10
- /**
11
- * CLI identification sent as a single `User-Agent` header on every API
12
- * request so the backend can emit product-tracking events (taxonomy card
13
- * "CLI installed", Kafka topic `cli`) without a dedicated telemetry endpoint.
14
- *
15
- * Format: `brevo-cli/<version> (<os>)`, extended with `; auth=<method>` when
16
- * the request carries credentials — e.g. `brevo-cli/1.2.0 (macos; auth=oauth)`.
17
- *
18
- * Values are sanitized to printable ASCII: undici throws a TypeError on
19
- * header values containing control characters, which would fail every
20
- * request — sanitizing here removes that failure mode entirely.
21
- */
22
- const OS_BY_PLATFORM = {
23
- darwin: 'macos',
24
- win32: 'windows',
25
- linux: 'linux',
26
- };
27
- // The taxonomy card only allows known values to reach Amplitude, so anything
28
- // outside the mapped platforms is reported as `other` rather than passed raw.
29
- function getCliOs() {
30
- return OS_BY_PLATFORM[process.platform] ?? 'other';
31
- }
32
- function sanitizeHeaderValue(value, fallback) {
33
- const sanitized = value.replace(/[^\x20-\x7E]/g, '');
34
- return sanitized || fallback;
35
- }
36
- // CLI_VERSION is fixed at module init, so sanitize it once rather than on
37
- // every request. Falls back to the same default as cli-version.ts.
38
- const SAFE_CLI_VERSION = sanitizeHeaderValue(cli_version_1.CLI_VERSION, '0.0.0');
39
- // Derived from the auth header about to be sent rather than from stored
40
- // credentials, so login-time validation calls (explicit key/bearer) report
41
- // the right method without coupling telemetry to credential storage.
42
- function getAuthMethod(authHeader) {
43
- if (authHeader && 'api-key' in authHeader)
44
- return constants_1.CLI_AUTH_METHODS.API_KEY;
45
- if (authHeader && 'Authorization' in authHeader)
46
- return constants_1.CLI_AUTH_METHODS.OAUTH;
47
- return undefined;
48
- }
49
- function getCliUserAgent(authHeader) {
50
- const method = getAuthMethod(authHeader);
51
- const comment = method ? `${getCliOs()}; auth=${method}` : getCliOs();
52
- return `brevo-cli/${SAFE_CLI_VERSION} (${comment})`;
53
- }
54
- function buildCliHeaders(authHeader) {
55
- return { [constants_1.USER_AGENT_HEADER]: getCliUserAgent(authHeader) };
56
- }
57
- //# sourceMappingURL=telemetry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":";;AAwBA,4BAEC;AAED,kDAGC;AAWD,sCAMC;AAED,0CAIC;AAED,0CAEC;AA1DD,+CAA4C;AAC5C,2CAAkE;AAElE;;;;;;;;;;;GAWG;AAEH,MAAM,cAAc,GAA2B;IAC7C,MAAM,EAAE,OAAO;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,6EAA6E;AAC7E,8EAA8E;AAC9E,SAAgB,QAAQ;IACtB,OAAO,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC;AACrD,CAAC;AAED,SAAgB,mBAAmB,CAAC,KAAa,EAAE,QAAgB;IACjE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,SAAS,IAAI,QAAQ,CAAC;AAC/B,CAAC;AAED,0EAA0E;AAC1E,mEAAmE;AACnE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,yBAAW,EAAE,OAAO,CAAC,CAAC;AAInE,wEAAwE;AACxE,2EAA2E;AAC3E,qEAAqE;AACrE,SAAgB,aAAa,CAC3B,UAA8C;IAE9C,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU;QAAE,OAAO,4BAAgB,CAAC,OAAO,CAAC;IAC3E,IAAI,UAAU,IAAI,eAAe,IAAI,UAAU;QAAE,OAAO,4BAAgB,CAAC,KAAK,CAAC;IAC/E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,eAAe,CAAC,UAAmC;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtE,OAAO,aAAa,gBAAgB,KAAK,OAAO,GAAG,CAAC;AACtD,CAAC;AAED,SAAgB,eAAe,CAAC,UAAmC;IACjE,OAAO,EAAE,CAAC,6BAAiB,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;AAC9D,CAAC"}
package/dist/lib/ui.d.ts DELETED
@@ -1,14 +0,0 @@
1
- export interface Spinner {
2
- update(text: string): void;
3
- stop(finalText?: string): void;
4
- }
5
- /**
6
- * Stop the currently active spinner (if any).
7
- * Used by the re-auth handler to clear the spinner before prompting.
8
- */
9
- export declare function stopActiveSpinner(): void;
10
- export declare function createSpinner(text: string, options?: {
11
- silent?: boolean;
12
- }): Spinner;
13
- export declare function printBox(title: string, lines: string[]): void;
14
- //# sourceMappingURL=ui.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/lib/ui.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAyCnF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAY7D"}