@getbrevo/cli 2.0.2 → 2.2.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 (220) hide show
  1. package/CHANGELOG.md +237 -0
  2. package/README.md +32 -6
  3. package/agent-context/AGENTS.md +62 -15
  4. package/agent-context/SKILL.md +98 -14
  5. package/dist/bin/files/AGENTS.md.tmpl +119 -0
  6. package/dist/bin/files/CLAUDE.md.tmpl +139 -0
  7. package/dist/bin/files/README.md.tmpl +184 -0
  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 +680 -235
  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 -138
  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 -162
  88. package/dist/lang/en.d.ts.map +0 -1
  89. package/dist/lang/en.js +0 -189
  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 -13
  96. package/dist/lib/auth-guard.d.ts.map +0 -1
  97. package/dist/lib/auth-guard.js +0 -60
  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/oauth-freshness.d.ts +0 -30
  144. package/dist/lib/oauth-freshness.d.ts.map +0 -1
  145. package/dist/lib/oauth-freshness.js +0 -61
  146. package/dist/lib/oauth-freshness.js.map +0 -1
  147. package/dist/lib/port.d.ts +0 -25
  148. package/dist/lib/port.d.ts.map +0 -1
  149. package/dist/lib/port.js +0 -103
  150. package/dist/lib/port.js.map +0 -1
  151. package/dist/lib/telemetry.d.ts +0 -9
  152. package/dist/lib/telemetry.d.ts.map +0 -1
  153. package/dist/lib/telemetry.js +0 -57
  154. package/dist/lib/telemetry.js.map +0 -1
  155. package/dist/lib/ui.d.ts +0 -14
  156. package/dist/lib/ui.d.ts.map +0 -1
  157. package/dist/lib/ui.js +0 -75
  158. package/dist/lib/ui.js.map +0 -1
  159. package/dist/lib/update-notifier.d.ts +0 -37
  160. package/dist/lib/update-notifier.d.ts.map +0 -1
  161. package/dist/lib/update-notifier.js +0 -298
  162. package/dist/lib/update-notifier.js.map +0 -1
  163. package/dist/lib/validators.d.ts +0 -55
  164. package/dist/lib/validators.d.ts.map +0 -1
  165. package/dist/lib/validators.js +0 -166
  166. package/dist/lib/validators.js.map +0 -1
  167. package/dist/services/account.d.ts +0 -8
  168. package/dist/services/account.d.ts.map +0 -1
  169. package/dist/services/account.js +0 -15
  170. package/dist/services/account.js.map +0 -1
  171. package/dist/services/app.d.ts +0 -38
  172. package/dist/services/app.d.ts.map +0 -1
  173. package/dist/services/app.js +0 -145
  174. package/dist/services/app.js.map +0 -1
  175. package/dist/services/browser-auth.d.ts +0 -15
  176. package/dist/services/browser-auth.d.ts.map +0 -1
  177. package/dist/services/browser-auth.js +0 -188
  178. package/dist/services/browser-auth.js.map +0 -1
  179. package/dist/services/normalize-app-id.d.ts +0 -12
  180. package/dist/services/normalize-app-id.d.ts.map +0 -1
  181. package/dist/services/normalize-app-id.js +0 -38
  182. package/dist/services/normalize-app-id.js.map +0 -1
  183. package/dist/services/oauth-metadata.d.ts +0 -7
  184. package/dist/services/oauth-metadata.d.ts.map +0 -1
  185. package/dist/services/oauth-metadata.js +0 -43
  186. package/dist/services/oauth-metadata.js.map +0 -1
  187. package/dist/services/oauth-refresh.d.ts +0 -14
  188. package/dist/services/oauth-refresh.d.ts.map +0 -1
  189. package/dist/services/oauth-refresh.js +0 -70
  190. package/dist/services/oauth-refresh.js.map +0 -1
  191. package/dist/services/scopes-html.d.ts +0 -3
  192. package/dist/services/scopes-html.d.ts.map +0 -1
  193. package/dist/services/scopes-html.js +0 -516
  194. package/dist/services/scopes-html.js.map +0 -1
  195. package/dist/services/scopes-web.d.ts +0 -12
  196. package/dist/services/scopes-web.d.ts.map +0 -1
  197. package/dist/services/scopes-web.js +0 -95
  198. package/dist/services/scopes-web.js.map +0 -1
  199. package/dist/services/skill.d.ts +0 -48
  200. package/dist/services/skill.d.ts.map +0 -1
  201. package/dist/services/skill.js +0 -223
  202. package/dist/services/skill.js.map +0 -1
  203. package/dist/skills/index.d.ts +0 -47
  204. package/dist/skills/index.d.ts.map +0 -1
  205. package/dist/skills/index.js +0 -61
  206. package/dist/skills/index.js.map +0 -1
  207. package/dist/templates/files/AGENTS.md.tmpl +0 -52
  208. package/dist/templates/files/CLAUDE.md.tmpl +0 -59
  209. package/dist/templates/files/README.md.tmpl +0 -85
  210. package/dist/templates/files/app-config.json.tmpl +0 -25
  211. package/dist/templates/index.d.ts +0 -36
  212. package/dist/templates/index.d.ts.map +0 -1
  213. package/dist/templates/index.js +0 -105
  214. package/dist/templates/index.js.map +0 -1
  215. package/dist/types.d.ts +0 -32
  216. package/dist/types.d.ts.map +0 -1
  217. package/dist/types.js +0 -3
  218. package/dist/types.js.map +0 -1
  219. /package/dist/{templates → bin}/files/gitignore.tmpl +0 -0
  220. /package/dist/{templates → bin}/files/src/oauth/package.json.tmpl +0 -0
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scopesCommand = void 0;
4
- const command_handler_1 = require("../../lib/command-handler");
5
- const json_output_1 = require("../../lib/json-output");
6
- const logger_1 = require("../../lib/logger");
7
- const en_1 = require("../../lang/en");
8
- const oauth_metadata_1 = require("../../services/oauth-metadata");
9
- const scopes_web_1 = require("../../services/scopes-web");
10
- const browser_1 = require("../../lib/browser");
11
- function waitForShutdownSignal() {
12
- return new Promise((resolve) => {
13
- const handler = () => {
14
- process.off('SIGINT', handler);
15
- process.off('SIGTERM', handler);
16
- resolve();
17
- };
18
- process.once('SIGINT', handler);
19
- process.once('SIGTERM', handler);
20
- });
21
- }
22
- function groupByCategory(entries) {
23
- const byCategory = new Map();
24
- for (const entry of entries) {
25
- const list = byCategory.get(entry.category);
26
- if (list) {
27
- list.push(entry.name);
28
- }
29
- else {
30
- byCategory.set(entry.category, [entry.name]);
31
- }
32
- }
33
- return byCategory;
34
- }
35
- function printScopesByCategory(entries) {
36
- const byCategory = groupByCategory(entries);
37
- let first = true;
38
- for (const [category, names] of byCategory) {
39
- if (!first)
40
- (0, logger_1.logInfo)('');
41
- first = false;
42
- (0, logger_1.logInfo)(`${category}:`);
43
- for (const name of names) {
44
- (0, logger_1.logInfo)(` ${name}`);
45
- }
46
- }
47
- (0, logger_1.logInfo)('');
48
- (0, logger_1.logInfo)(en_1.messages.APP_SCOPES_USAGE_HINT);
49
- (0, logger_1.logInfo)(en_1.messages.APP_SCOPES_CATALOG_DOCS_HINT);
50
- (0, logger_1.logInfo)(en_1.messages.APP_SCOPES_DOCS_HINT);
51
- }
52
- async function runWebMode(entries) {
53
- const server = await (0, scopes_web_1.startScopesWebServer)(entries, { refetch: oauth_metadata_1.fetchSupportedScopes });
54
- (0, logger_1.logInfo)('');
55
- (0, logger_1.logInfo)(en_1.messages.APP_SCOPES_WEB_LISTENING(server.url));
56
- try {
57
- (0, browser_1.openBrowser)(server.url);
58
- }
59
- catch (err) {
60
- (0, logger_1.logDebug)('openBrowser failed', { message: err.message });
61
- }
62
- await waitForShutdownSignal();
63
- await server.close();
64
- }
65
- exports.scopesCommand = (0, command_handler_1.withCommandHandler)(async (options) => {
66
- const entries = await (0, oauth_metadata_1.fetchSupportedScopes)();
67
- if (options.json) {
68
- (0, json_output_1.jsonOutput)({ scopes: entries.map((e) => e.name) });
69
- return;
70
- }
71
- if (entries.length === 0) {
72
- (0, logger_1.logInfo)(en_1.messages.APP_SCOPES_EMPTY);
73
- }
74
- else {
75
- printScopesByCategory(entries);
76
- }
77
- if (options.web) {
78
- await runWebMode(entries);
79
- }
80
- });
81
- //# sourceMappingURL=scopes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../src/commands/app/scopes.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export declare const startCommand: (opts: {
2
- feature?: string;
3
- port?: number;
4
- }) => Promise<void>;
5
- //# sourceMappingURL=start.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/app/start.ts"],"names":[],"mappings":"AA2KA,eAAO,MAAM,YAAY;cACK,MAAM;WAAS,MAAM;mBAoClD,CAAC"}
@@ -1,220 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.startCommand = void 0;
40
- const fs = __importStar(require("node:fs"));
41
- const path = __importStar(require("node:path"));
42
- const node_child_process_1 = require("node:child_process");
43
- const inquirer_1 = __importDefault(require("inquirer"));
44
- const logger_1 = require("../../lib/logger");
45
- const errors_1 = require("../../lib/errors");
46
- const en_1 = require("../../lang/en");
47
- const command_handler_1 = require("../../lib/command-handler");
48
- const port_1 = require("../../lib/port");
49
- const constants_1 = require("../../lib/constants");
50
- const config_1 = require("../../lib/config");
51
- const ui_1 = require("../../lib/ui");
52
- const container_1 = require("../../container");
53
- const validators_1 = require("../../lib/validators");
54
- /**
55
- * Feature registry — maps feature names to their entry files.
56
- * Add new features here as they are added to the scaffold.
57
- */
58
- const FEATURES = {
59
- oauth: {
60
- entry: 'src/oauth/server.js',
61
- description: 'Local OAuth test server',
62
- },
63
- };
64
- /**
65
- * Returns the first redirect URL pointing at the local loopback
66
- * (host = localhost or 127.0.0.1) on the given port, or undefined.
67
- * Unparseable URLs are skipped.
68
- */
69
- function findMatchingLocalRedirect(redirectUrls, port) {
70
- return redirectUrls.find((url) => {
71
- try {
72
- const parsed = new URL(url);
73
- const hostMatches = parsed.hostname === 'localhost' || parsed.hostname === '127.0.0.1';
74
- return hostMatches && parsed.port === String(port);
75
- }
76
- catch {
77
- return false;
78
- }
79
- });
80
- }
81
- /**
82
- * If the resolved port has no matching localhost redirect URL on the app,
83
- * offer to register one. Approval pushes the new URL to the remote app and
84
- * writes it back into app-config.json so the next run is silent. Decline
85
- * continues with a warning. Non-TTY hard-fails because there's no way to
86
- * confirm a remote-mutating operation.
87
- *
88
- * Returns the resolved localhost redirect URL (existing or newly registered),
89
- * or undefined when the user declined registration.
90
- */
91
- async function ensureRedirectRegistered(config, port) {
92
- const redirectUrls = config.auth?.redirectUrls ?? [];
93
- const existing = findMatchingLocalRedirect(redirectUrls, port);
94
- if (existing)
95
- return existing;
96
- const newRedirectUrl = `http://localhost:${port}/auth/callback`;
97
- if (!process.stdin.isTTY) {
98
- throw new errors_1.CliError(en_1.messages.APP_START_REDIRECT_NON_INTERACTIVE(port, newRedirectUrl));
99
- }
100
- (0, logger_1.logInfo)(` ${en_1.messages.APP_START_REDIRECT_NOT_REGISTERED(port)}`);
101
- const { shouldRegister } = await inquirer_1.default.prompt([
102
- {
103
- type: 'confirm',
104
- name: 'shouldRegister',
105
- message: en_1.messages.APP_START_REDIRECT_REGISTER_PROMPT(newRedirectUrl),
106
- default: true,
107
- },
108
- ]);
109
- if (!shouldRegister) {
110
- (0, logger_1.logWarn)(en_1.messages.APP_START_REDIRECT_DECLINED(newRedirectUrl));
111
- return undefined;
112
- }
113
- const updatedUrls = [...redirectUrls, newRedirectUrl];
114
- const spinner = (0, ui_1.createSpinner)(en_1.messages.APP_START_REDIRECT_REGISTERING);
115
- try {
116
- await container_1.appService.updateApp(config.appId, { redirect_uris: updatedUrls });
117
- }
118
- finally {
119
- spinner.stop();
120
- }
121
- (0, config_1.writeProjectConfig)({
122
- ...config,
123
- auth: { ...config.auth, redirectUrls: updatedUrls },
124
- });
125
- (0, logger_1.logSuccess)(en_1.messages.APP_START_REDIRECT_REGISTERED(newRedirectUrl));
126
- return newRedirectUrl;
127
- }
128
- function resolveFeatureEntry(feature) {
129
- if (!feature) {
130
- const available = Object.entries(FEATURES)
131
- .map(([name, f]) => ` ${name} ${f.description}`)
132
- .join('\n');
133
- throw new errors_1.CliError(en_1.messages.APP_START_MISSING_FEATURE(available));
134
- }
135
- const featureConfig = FEATURES[feature];
136
- if (!featureConfig) {
137
- const available = Object.keys(FEATURES).join(', ');
138
- throw new errors_1.CliError(en_1.messages.APP_START_UNKNOWN_FEATURE(feature, available));
139
- }
140
- const entryFile = path.resolve(featureConfig.entry);
141
- if (!fs.existsSync(entryFile)) {
142
- throw new errors_1.CliError(en_1.messages.APP_START_FEATURE_NOT_FOUND(featureConfig.entry));
143
- }
144
- const featureDir = path.dirname(featureConfig.entry);
145
- if (!fs.existsSync(path.resolve(featureDir, 'node_modules'))) {
146
- throw new errors_1.CliError(en_1.messages.APP_START_NO_DEPS(featureDir));
147
- }
148
- return entryFile;
149
- }
150
- function resolvePort(config, optionsPort) {
151
- if (optionsPort)
152
- return optionsPort;
153
- const redirectUrl = config?.auth?.redirectUrls?.[0];
154
- if (!redirectUrl)
155
- return constants_1.DEFAULT_PORT;
156
- try {
157
- const parsed = new URL(redirectUrl);
158
- return parsed.port ? Number(parsed.port) : constants_1.DEFAULT_PORT;
159
- }
160
- catch {
161
- return constants_1.DEFAULT_PORT;
162
- }
163
- }
164
- function runChildProcess(entryFile, childEnv, feature) {
165
- const child = (0, node_child_process_1.spawn)(process.execPath, [entryFile], {
166
- stdio: 'inherit',
167
- env: childEnv,
168
- });
169
- const onSignal = (signal) => {
170
- child.kill(signal);
171
- };
172
- process.prependListener('SIGINT', onSignal);
173
- process.prependListener('SIGTERM', onSignal);
174
- return new Promise((resolve, reject) => {
175
- child.on('close', (code) => {
176
- process.removeListener('SIGINT', onSignal);
177
- process.removeListener('SIGTERM', onSignal);
178
- if (code && code !== 0) {
179
- reject(new errors_1.CliError(en_1.messages.APP_START_EXITED(feature, code)));
180
- }
181
- else {
182
- (0, logger_1.logInfo)(`\n ${en_1.messages.APP_START_STOPPED}\n`);
183
- resolve();
184
- }
185
- });
186
- child.on('error', (err) => {
187
- process.removeListener('SIGINT', onSignal);
188
- process.removeListener('SIGTERM', onSignal);
189
- reject(new errors_1.CliError(en_1.messages.APP_START_FAILED(feature, err.message)));
190
- });
191
- });
192
- }
193
- exports.startCommand = (0, command_handler_1.withCommandHandler)(async (options) => {
194
- const { feature } = options;
195
- const entryFile = resolveFeatureEntry(feature);
196
- const config = (0, config_1.readProjectConfig)();
197
- // The child OAuth server builds its authorize URL from auth.scopes —
198
- // refuse to launch a test flow with the deprecated legacy 'all' scope
199
- // and point at the --scope migration path instead (BEX-214).
200
- if ((0, validators_1.containsLegacyAllScope)(config?.auth?.scopes)) {
201
- throw new errors_1.CliError(en_1.messages.LEGACY_ALL_SCOPE_START_BLOCK);
202
- }
203
- const port = resolvePort(config, options.port);
204
- if (!(await (0, port_1.isPortAvailable)(port))) {
205
- throw new errors_1.CliError(options.port
206
- ? en_1.messages.APP_START_CUSTOM_PORT_IN_USE(port)
207
- : en_1.messages.APP_START_PORT_IN_USE(port));
208
- }
209
- // If the app is linked locally, make sure the resolved port is one of
210
- // its registered redirect URLs — otherwise the OAuth callback will be
211
- // rejected by Brevo at runtime. Skipped when there's no linked app
212
- // (no appId means we'd have nowhere to push the update).
213
- const redirectUri = config?.appId ? await ensureRedirectRegistered(config, port) : undefined;
214
- (0, logger_1.logInfo)(`\n Starting ${feature}...`);
215
- const childEnv = { ...process.env, PORT: String(port) };
216
- if (redirectUri)
217
- childEnv.REDIRECT_URI = redirectUri;
218
- await runChildProcess(entryFile, childEnv, feature);
219
- });
220
- //# sourceMappingURL=start.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/app/start.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const updateCommand: (opts: Record<string, unknown>) => Promise<void>;
2
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/app/update.ts"],"names":[],"mappings":"AA0YA,eAAO,MAAM,aAAa,kDA0CxB,CAAC"}