@getbrevo/cli 1.0.0 → 1.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.
- package/CHANGELOG.md +53 -0
- package/README.md +26 -51
- package/agent-context/AGENTS.md +70 -10
- package/agent-context/SKILL.md +51 -3
- package/dist/api/client.d.ts +1 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +4 -2
- package/dist/api/client.js.map +1 -1
- package/dist/bin/index.js +31 -19
- package/dist/bin/index.js.map +1 -1
- package/dist/commands/app/create.d.ts +1 -0
- package/dist/commands/app/create.d.ts.map +1 -1
- package/dist/commands/app/create.js +57 -20
- package/dist/commands/app/create.js.map +1 -1
- package/dist/commands/app/credentials.d.ts.map +1 -1
- package/dist/commands/app/credentials.js +73 -71
- package/dist/commands/app/credentials.js.map +1 -1
- package/dist/commands/app/delete.d.ts.map +1 -1
- package/dist/commands/app/delete.js +9 -8
- package/dist/commands/app/delete.js.map +1 -1
- package/dist/commands/app/list.d.ts.map +1 -1
- package/dist/commands/app/list.js +1 -0
- package/dist/commands/app/list.js.map +1 -1
- package/dist/commands/app/scaffold.d.ts.map +1 -1
- package/dist/commands/app/scaffold.js +71 -71
- package/dist/commands/app/scaffold.js.map +1 -1
- package/dist/commands/app/scopes.d.ts +2 -0
- package/dist/commands/app/scopes.d.ts.map +1 -0
- package/dist/commands/app/scopes.js +79 -0
- package/dist/commands/app/scopes.js.map +1 -0
- package/dist/commands/app/start.d.ts.map +1 -1
- package/dist/commands/app/start.js +38 -48
- package/dist/commands/app/start.js.map +1 -1
- package/dist/commands/app/update.d.ts.map +1 -1
- package/dist/commands/app/update.js +90 -5
- package/dist/commands/app/update.js.map +1 -1
- package/dist/commands/definitions.d.ts +1 -0
- package/dist/commands/definitions.d.ts.map +1 -1
- package/dist/commands/definitions.js +67 -2
- package/dist/commands/definitions.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +73 -57
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +50 -38
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/skill/install.d.ts +4 -0
- package/dist/commands/skill/install.d.ts.map +1 -0
- package/dist/commands/skill/install.js +29 -0
- package/dist/commands/skill/install.js.map +1 -0
- package/dist/commands/skill/uninstall.d.ts +4 -0
- package/dist/commands/skill/uninstall.d.ts.map +1 -0
- package/dist/commands/skill/uninstall.js +23 -0
- package/dist/commands/skill/uninstall.js.map +1 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +5 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/lang/en.d.ts +30 -2
- package/dist/lang/en.d.ts.map +1 -1
- package/dist/lang/en.js +32 -2
- package/dist/lang/en.js.map +1 -1
- package/dist/lib/auth-guard.d.ts.map +1 -1
- package/dist/lib/auth-guard.js +8 -2
- package/dist/lib/auth-guard.js.map +1 -1
- package/dist/lib/browser.js +4 -4
- package/dist/lib/browser.js.map +1 -1
- package/dist/lib/cli-version.d.ts +2 -0
- package/dist/lib/cli-version.d.ts.map +1 -0
- package/dist/lib/cli-version.js +59 -0
- package/dist/lib/cli-version.js.map +1 -0
- package/dist/lib/command-registry.js +1 -1
- package/dist/lib/command-registry.js.map +1 -1
- package/dist/lib/config.d.ts +3 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +41 -7
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +6 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +16 -8
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/hidden-input.js +1 -1
- package/dist/lib/hidden-input.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +14 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/update-notifier.d.ts.map +1 -1
- package/dist/lib/update-notifier.js +11 -11
- package/dist/lib/update-notifier.js.map +1 -1
- package/dist/lib/validators.d.ts +17 -0
- package/dist/lib/validators.d.ts.map +1 -1
- package/dist/lib/validators.js +65 -0
- package/dist/lib/validators.js.map +1 -1
- package/dist/services/app.d.ts +3 -0
- package/dist/services/app.d.ts.map +1 -1
- package/dist/services/app.js +6 -1
- package/dist/services/app.js.map +1 -1
- package/dist/services/browser-auth.js +9 -8
- package/dist/services/browser-auth.js.map +1 -1
- package/dist/services/oauth-metadata.d.ts +7 -0
- package/dist/services/oauth-metadata.d.ts.map +1 -0
- package/dist/services/oauth-metadata.js +43 -0
- package/dist/services/oauth-metadata.js.map +1 -0
- package/dist/services/scopes-html.d.ts +3 -0
- package/dist/services/scopes-html.d.ts.map +1 -0
- package/dist/services/scopes-html.js +337 -0
- package/dist/services/scopes-html.js.map +1 -0
- package/dist/services/scopes-web.d.ts +12 -0
- package/dist/services/scopes-web.d.ts.map +1 -0
- package/dist/services/scopes-web.js +95 -0
- package/dist/services/scopes-web.js.map +1 -0
- package/dist/services/skill.d.ts +48 -0
- package/dist/services/skill.d.ts.map +1 -0
- package/dist/services/skill.js +223 -0
- package/dist/services/skill.js.map +1 -0
- package/dist/skills/index.d.ts +47 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +61 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/templates/files/AGENTS.md.tmpl +6 -1
- package/dist/templates/files/CLAUDE.md.tmpl +2 -2
- package/dist/templates/files/README.md.tmpl +3 -1
- package/dist/templates/files/app-config.json.tmpl +1 -1
- package/dist/templates/index.js +2 -2
- package/dist/templates/index.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -3
- package/dist/lib/min-version-check.d.ts +0 -15
- package/dist/lib/min-version-check.d.ts.map +0 -1
- package/dist/lib/min-version-check.js +0 -33
- package/dist/lib/min-version-check.js.map +0 -1
|
@@ -84,20 +84,8 @@ function formatFileTree(filePaths) {
|
|
|
84
84
|
render(tree, ' ');
|
|
85
85
|
return lines.join('\n');
|
|
86
86
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
// means the user is already in a scaffolded project and likely meant to
|
|
90
|
-
// run `brevo app update` instead.
|
|
91
|
-
if (fs.existsSync(path.join(process.cwd(), 'app-config.json'))) {
|
|
92
|
-
throw new errors_1.CliError(en_1.messages.APP_SCAFFOLD_ALREADY_IN_PROJECT);
|
|
93
|
-
}
|
|
94
|
-
let appId = options.appId;
|
|
95
|
-
// Pick app if not specified
|
|
96
|
-
if (!appId) {
|
|
97
|
-
appId = await container_1.appService.pickApp('Select an app:');
|
|
98
|
-
}
|
|
99
|
-
// Fetch app details from API and sync local cache
|
|
100
|
-
const spinner = (0, ui_1.createSpinner)('Fetching app details...', { silent: options.json });
|
|
87
|
+
async function fetchAppContext(appId, silent) {
|
|
88
|
+
const spinner = (0, ui_1.createSpinner)('Fetching app details...', { silent });
|
|
101
89
|
const result = await container_1.appService.resolveAppCredentials(appId);
|
|
102
90
|
spinner.stop();
|
|
103
91
|
const appDetails = result?.app ?? null;
|
|
@@ -107,22 +95,18 @@ exports.scaffoldCommand = (0, command_handler_1.withCommandHandler)(async (optio
|
|
|
107
95
|
}
|
|
108
96
|
container_1.appService.syncAppCredentials(appId, result.app);
|
|
109
97
|
}
|
|
110
|
-
const clientId = appDetails?.client_id || constants_1.PLACEHOLDER_CLIENT_ID;
|
|
111
|
-
const clientSecret = appDetails?.client_secret || 'YOUR_CLIENT_SECRET';
|
|
112
|
-
// Use redirect URLs from the app (set during app create).
|
|
113
|
-
// For the local test server, prefer a localhost URL from the registered
|
|
114
|
-
// list. Fall back to DEFAULT_REDIRECT_URI so the scaffold works out of
|
|
115
|
-
// the box even when only production URLs are registered.
|
|
116
98
|
const serverRedirectUrls = appDetails?.redirect_uris ?? [];
|
|
117
99
|
const redirectUrls = serverRedirectUrls.length > 0 ? serverRedirectUrls : [constants_1.DEFAULT_REDIRECT_URI];
|
|
118
100
|
const localhostUri = redirectUrls.find((url) => url.startsWith('http://localhost') || url.startsWith('http://127.0.0.1'));
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
101
|
+
return {
|
|
102
|
+
appDetails: appDetails,
|
|
103
|
+
clientId: appDetails?.client_id || constants_1.PLACEHOLDER_CLIENT_ID,
|
|
104
|
+
clientSecret: appDetails?.client_secret || 'YOUR_CLIENT_SECRET',
|
|
105
|
+
redirectUrls,
|
|
106
|
+
redirectUri: localhostUri || constants_1.DEFAULT_REDIRECT_URI,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
async function resolveTargetDir(defaultDir) {
|
|
126
110
|
const { outputDir } = await inquirer_1.default.prompt([
|
|
127
111
|
{
|
|
128
112
|
type: 'input',
|
|
@@ -132,72 +116,88 @@ exports.scaffoldCommand = (0, command_handler_1.withCommandHandler)(async (optio
|
|
|
132
116
|
},
|
|
133
117
|
]);
|
|
134
118
|
const targetDir = path.resolve(outputDir);
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
119
|
+
if (!fs.existsSync(targetDir)) {
|
|
120
|
+
return { targetDir, mergeOnly: false, chooseAgain: false };
|
|
121
|
+
}
|
|
122
|
+
const { action } = await inquirer_1.default.prompt([
|
|
123
|
+
{
|
|
124
|
+
type: 'list',
|
|
125
|
+
name: 'action',
|
|
126
|
+
message: en_1.messages.APP_SCAFFOLD_DIR_EXISTS,
|
|
127
|
+
choices: [
|
|
128
|
+
{ name: 'Overwrite existing files', value: 'overwrite' },
|
|
129
|
+
{ name: 'Merge (keep existing, add missing)', value: 'merge' },
|
|
130
|
+
{ name: 'Choose a different path', value: 'new' },
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
]);
|
|
134
|
+
return {
|
|
135
|
+
targetDir,
|
|
136
|
+
mergeOnly: action === 'merge',
|
|
137
|
+
chooseAgain: action === 'new',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function writeScaffoldFiles(files, targetDir, mergeOnly) {
|
|
141
|
+
let written = 0;
|
|
142
|
+
for (const file of files) {
|
|
143
|
+
const filePath = path.join(targetDir, file.name);
|
|
144
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
145
|
+
if (mergeOnly && fs.existsSync(filePath))
|
|
146
|
+
continue;
|
|
147
|
+
// Write .env.local with restricted permissions to protect secrets
|
|
148
|
+
const writeOptions = file.name.endsWith('.env.local') ? { mode: 0o600 } : {};
|
|
149
|
+
fs.writeFileSync(filePath, file.content, { encoding: 'utf-8', ...writeOptions });
|
|
150
|
+
written++;
|
|
151
|
+
}
|
|
152
|
+
return written;
|
|
153
|
+
}
|
|
154
|
+
exports.scaffoldCommand = (0, command_handler_1.withCommandHandler)(async (options) => {
|
|
155
|
+
// Refuse to scaffold inside an existing project — app-config.json in cwd
|
|
156
|
+
// means the user is already in a scaffolded project and likely meant to
|
|
157
|
+
// run `brevo app update` instead.
|
|
158
|
+
if (fs.existsSync(path.join(process.cwd(), 'app-config.json'))) {
|
|
159
|
+
throw new errors_1.CliError(en_1.messages.APP_SCAFFOLD_ALREADY_IN_PROJECT);
|
|
156
160
|
}
|
|
157
|
-
const
|
|
158
|
-
|
|
161
|
+
const appId = options.appId ?? (await container_1.appService.pickApp('Select an app:'));
|
|
162
|
+
const ctx = await fetchAppContext(appId, options.json);
|
|
163
|
+
const slug = (ctx.appDetails?.name || 'my-app')
|
|
164
|
+
.toLowerCase()
|
|
165
|
+
.replaceAll(/[^a-z0-9]+/g, '-')
|
|
166
|
+
.replace(/^-|-$/g, '') || 'my-app';
|
|
167
|
+
const { targetDir, mergeOnly, chooseAgain } = await resolveTargetDir(`./${slug}`);
|
|
168
|
+
if (chooseAgain) {
|
|
169
|
+
return (0, exports.scaffoldCommand)({ ...options, appId });
|
|
170
|
+
}
|
|
171
|
+
const rawAppName = ctx.appDetails?.name || path.basename(targetDir);
|
|
159
172
|
const appName = rawAppName.replaceAll(/["\\\n\r\t]/g, '').trim() || 'my-app';
|
|
160
|
-
const scopes = appDetails?.scopes ?? [
|
|
173
|
+
const scopes = ctx.appDetails?.scopes ?? [...constants_1.DEFAULT_SCOPES];
|
|
161
174
|
const pkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../../../package.json'), 'utf-8'));
|
|
162
175
|
const cliVersion = pkg.version;
|
|
163
176
|
const vars = {
|
|
164
177
|
'{{APP_NAME}}': appName,
|
|
165
178
|
'{{APP_SLUG}}': slug,
|
|
166
179
|
'{{APP_ID}}': String(appId),
|
|
167
|
-
'{{CLIENT_ID}}': clientId,
|
|
168
|
-
'{{CLIENT_SECRET}}': clientSecret,
|
|
169
|
-
'{{REDIRECT_URI}}': redirectUri,
|
|
170
|
-
'{{REDIRECT_URLS_JSON}}': JSON.stringify(redirectUrls),
|
|
180
|
+
'{{CLIENT_ID}}': ctx.clientId,
|
|
181
|
+
'{{CLIENT_SECRET}}': ctx.clientSecret,
|
|
182
|
+
'{{REDIRECT_URI}}': ctx.redirectUri,
|
|
183
|
+
'{{REDIRECT_URLS_JSON}}': JSON.stringify(ctx.redirectUrls),
|
|
171
184
|
'{{SCOPES_JSON}}': JSON.stringify(scopes),
|
|
185
|
+
'{{LOGO_URI}}': ctx.appDetails?.logo_uri ?? '',
|
|
172
186
|
'{{OAUTH_BASE}}': constants_1.OAUTH_BASE,
|
|
173
187
|
'{{OAUTH_REALM}}': constants_1.OAUTH_REALM,
|
|
174
188
|
'{{CLI_VERSION}}': cliVersion,
|
|
175
|
-
'{{MIN_CLI_VERSION}}': constants_1.MIN_CLI_VERSION,
|
|
176
189
|
};
|
|
177
|
-
// Create directory structure
|
|
178
190
|
fs.mkdirSync(path.join(targetDir, 'src', 'oauth'), { recursive: true });
|
|
179
|
-
// Load all templates from .tmpl files with variable substitution
|
|
180
191
|
const files = (0, templates_1.loadAllTemplates)(vars);
|
|
181
|
-
|
|
182
|
-
for (const file of files) {
|
|
183
|
-
const filePath = path.join(targetDir, file.name);
|
|
184
|
-
// Ensure parent directory exists for nested files
|
|
185
|
-
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
186
|
-
if (mergeOnly && fs.existsSync(filePath))
|
|
187
|
-
continue;
|
|
188
|
-
// Write .env.local with restricted permissions to protect secrets
|
|
189
|
-
const writeOptions = file.name.endsWith('.env.local') ? { mode: 0o600 } : {};
|
|
190
|
-
fs.writeFileSync(filePath, file.content, { encoding: 'utf-8', ...writeOptions });
|
|
191
|
-
written++;
|
|
192
|
-
}
|
|
192
|
+
const written = writeScaffoldFiles(files, targetDir, mergeOnly);
|
|
193
193
|
if (options.json) {
|
|
194
194
|
(0, json_output_1.jsonOutput)({ scaffolded: written, directory: targetDir });
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
197
|
(0, logger_1.logSuccess)(en_1.messages.APP_SCAFFOLD_SUCCESS(written));
|
|
198
198
|
(0, logger_1.logInfo)(formatFileTree(files.map((f) => f.name)));
|
|
199
|
-
// Show next steps
|
|
200
199
|
const relativeDir = path.relative(process.cwd(), targetDir) || '.';
|
|
201
200
|
(0, ui_1.printBox)(en_1.messages.APP_SCAFFOLD_NEXT_STEPS_TITLE, en_1.messages.APP_SCAFFOLD_NEXT_STEPS_LINES(relativeDir));
|
|
201
|
+
(0, logger_1.logInfo)(en_1.messages.APP_SCAFFOLD_SCOPES_TIP);
|
|
202
202
|
});
|
|
203
203
|
//# sourceMappingURL=scaffold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/commands/app/scaffold.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,gDAAkC;AAClC,wDAAgC;AAChC,mDAM6B;AAC7B,6CAAgE;AAChE,qCAAuD;AACvD,sCAAyC;AACzC,+DAA+D;AAC/D,6CAA4C;AAC5C,uDAAmD;AACnD,+CAA6C;AAC7C,+CAAmD;AAMnD,SAAS,cAAc,CAAC,SAAmB;IACzC,uBAAuB;IACvB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,SAAS,MAAM,CAAC,IAAc,EAAE,MAAc;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,qDAAqD;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACrD,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/commands/app/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../src/commands/app/scopes.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,aAAa,kDAiBxB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
}
|
|
50
|
+
async function runWebMode(entries) {
|
|
51
|
+
const server = await (0, scopes_web_1.startScopesWebServer)(entries, { refetch: oauth_metadata_1.fetchSupportedScopes });
|
|
52
|
+
(0, logger_1.logInfo)('');
|
|
53
|
+
(0, logger_1.logInfo)(en_1.messages.APP_SCOPES_WEB_LISTENING(server.url));
|
|
54
|
+
try {
|
|
55
|
+
(0, browser_1.openBrowser)(server.url);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
(0, logger_1.logDebug)('openBrowser failed', { message: err.message });
|
|
59
|
+
}
|
|
60
|
+
await waitForShutdownSignal();
|
|
61
|
+
await server.close();
|
|
62
|
+
}
|
|
63
|
+
exports.scopesCommand = (0, command_handler_1.withCommandHandler)(async (options) => {
|
|
64
|
+
const entries = await (0, oauth_metadata_1.fetchSupportedScopes)();
|
|
65
|
+
if (options.json) {
|
|
66
|
+
(0, json_output_1.jsonOutput)({ scopes: entries.map((e) => e.name) });
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (entries.length === 0) {
|
|
70
|
+
(0, logger_1.logInfo)(en_1.messages.APP_SCOPES_EMPTY);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
printScopesByCategory(entries);
|
|
74
|
+
}
|
|
75
|
+
if (options.web) {
|
|
76
|
+
await runWebMode(entries);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=scopes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../src/commands/app/scopes.ts"],"names":[],"mappings":";;;AAAA,+DAA+D;AAC/D,uDAAmD;AACnD,6CAAqD;AACrD,sCAAyC;AACzC,kEAAiF;AACjF,0DAAiE;AACjE,+CAAgD;AAOhD,SAAS,qBAAqB;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,OAAqB;IAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAqB;IAClD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,IAAA,gBAAO,EAAC,EAAE,CAAC,CAAC;QACxB,KAAK,GAAG,KAAK,CAAC;QACd,IAAA,gBAAO,EAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAA,gBAAO,EAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAA,gBAAO,EAAC,EAAE,CAAC,CAAC;IACZ,IAAA,gBAAO,EAAC,aAAQ,CAAC,qBAAqB,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAqB;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAoB,EAAC,OAAO,EAAE,EAAE,OAAO,EAAE,qCAAoB,EAAE,CAAC,CAAC;IACtF,IAAA,gBAAO,EAAC,EAAE,CAAC,CAAC;IACZ,IAAA,gBAAO,EAAC,aAAQ,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,IAAA,qBAAW,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,qBAAqB,EAAE,CAAC;IAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAEY,QAAA,aAAa,GAAG,IAAA,oCAAkB,EAAC,KAAK,EAAE,OAAsB,EAAiB,EAAE;IAC9F,MAAM,OAAO,GAAG,MAAM,IAAA,qCAAoB,GAAE,CAAC;IAE7C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAA,wBAAU,EAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,IAAA,gBAAO,EAAC,aAAQ,CAAC,gBAAgB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/app/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/app/start.ts"],"names":[],"mappings":"AA0KA,eAAO,MAAM,YAAY;cACK,MAAM;WAAS,MAAM;mBA4BlD,CAAC"}
|
|
@@ -124,8 +124,7 @@ async function ensureRedirectRegistered(config, port) {
|
|
|
124
124
|
(0, logger_1.logSuccess)(en_1.messages.APP_START_REDIRECT_REGISTERED(newRedirectUrl));
|
|
125
125
|
return newRedirectUrl;
|
|
126
126
|
}
|
|
127
|
-
|
|
128
|
-
const { feature } = options;
|
|
127
|
+
function resolveFeatureEntry(feature) {
|
|
129
128
|
if (!feature) {
|
|
130
129
|
const available = Object.entries(FEATURES)
|
|
131
130
|
.map(([name, f]) => ` ${name} ${f.description}`)
|
|
@@ -141,67 +140,37 @@ exports.startCommand = (0, command_handler_1.withCommandHandler)(async (options)
|
|
|
141
140
|
if (!fs.existsSync(entryFile)) {
|
|
142
141
|
throw new errors_1.CliError(en_1.messages.APP_START_FEATURE_NOT_FOUND(featureConfig.entry));
|
|
143
142
|
}
|
|
144
|
-
// Check for node_modules inside the feature directory — package.json
|
|
145
|
-
// is scoped per feature, so dependencies are installed alongside the entry.
|
|
146
143
|
const featureDir = path.dirname(featureConfig.entry);
|
|
147
144
|
if (!fs.existsSync(path.resolve(featureDir, 'node_modules'))) {
|
|
148
145
|
throw new errors_1.CliError(en_1.messages.APP_START_NO_DEPS(featureDir));
|
|
149
146
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (parsed.port)
|
|
162
|
-
port = Number(parsed.port);
|
|
163
|
-
}
|
|
164
|
-
catch {
|
|
165
|
-
// invalid redirect URL — fall back to default
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// Check port availability before spawning
|
|
170
|
-
if (!(await (0, port_1.isPortAvailable)(port))) {
|
|
171
|
-
throw new errors_1.CliError(options.port
|
|
172
|
-
? en_1.messages.APP_START_CUSTOM_PORT_IN_USE(port)
|
|
173
|
-
: en_1.messages.APP_START_PORT_IN_USE(port));
|
|
147
|
+
return entryFile;
|
|
148
|
+
}
|
|
149
|
+
function resolvePort(config, optionsPort) {
|
|
150
|
+
if (optionsPort)
|
|
151
|
+
return optionsPort;
|
|
152
|
+
const redirectUrl = config?.auth?.redirectUrls?.[0];
|
|
153
|
+
if (!redirectUrl)
|
|
154
|
+
return constants_1.DEFAULT_PORT;
|
|
155
|
+
try {
|
|
156
|
+
const parsed = new URL(redirectUrl);
|
|
157
|
+
return parsed.port ? Number(parsed.port) : constants_1.DEFAULT_PORT;
|
|
174
158
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
// rejected by Brevo at runtime. Skipped when there's no linked app
|
|
178
|
-
// (no appId means we'd have nowhere to push the update).
|
|
179
|
-
let redirectUri;
|
|
180
|
-
if (config?.appId) {
|
|
181
|
-
redirectUri = await ensureRedirectRegistered(config, port);
|
|
159
|
+
catch {
|
|
160
|
+
return constants_1.DEFAULT_PORT;
|
|
182
161
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
// REDIRECT_URI is propagated whenever we have a registered localhost URL
|
|
186
|
-
// on the resolved port — otherwise the child reads the (possibly stale)
|
|
187
|
-
// value from .env.local, which would mismatch when --port overrides the
|
|
188
|
-
// scaffold-time port.
|
|
189
|
-
const childEnv = { ...process.env, PORT: String(port) };
|
|
190
|
-
if (redirectUri)
|
|
191
|
-
childEnv.REDIRECT_URI = redirectUri;
|
|
162
|
+
}
|
|
163
|
+
function runChildProcess(entryFile, childEnv, feature) {
|
|
192
164
|
const child = (0, node_child_process_1.spawn)(process.execPath, [entryFile], {
|
|
193
165
|
stdio: 'inherit',
|
|
194
166
|
env: childEnv,
|
|
195
167
|
});
|
|
196
|
-
// Forward signals for clean shutdown — use prependListener so child
|
|
197
|
-
// is killed before the global SIGINT/SIGTERM handlers in bin/index.ts
|
|
198
|
-
// call process.exit().
|
|
199
168
|
const onSignal = (signal) => {
|
|
200
169
|
child.kill(signal);
|
|
201
170
|
};
|
|
202
171
|
process.prependListener('SIGINT', onSignal);
|
|
203
172
|
process.prependListener('SIGTERM', onSignal);
|
|
204
|
-
|
|
173
|
+
return new Promise((resolve, reject) => {
|
|
205
174
|
child.on('close', (code) => {
|
|
206
175
|
process.removeListener('SIGINT', onSignal);
|
|
207
176
|
process.removeListener('SIGTERM', onSignal);
|
|
@@ -219,5 +188,26 @@ exports.startCommand = (0, command_handler_1.withCommandHandler)(async (options)
|
|
|
219
188
|
reject(new errors_1.CliError(en_1.messages.APP_START_FAILED(feature, err.message)));
|
|
220
189
|
});
|
|
221
190
|
});
|
|
191
|
+
}
|
|
192
|
+
exports.startCommand = (0, command_handler_1.withCommandHandler)(async (options) => {
|
|
193
|
+
const { feature } = options;
|
|
194
|
+
const entryFile = resolveFeatureEntry(feature);
|
|
195
|
+
const config = (0, config_1.readProjectConfig)();
|
|
196
|
+
const port = resolvePort(config, options.port);
|
|
197
|
+
if (!(await (0, port_1.isPortAvailable)(port))) {
|
|
198
|
+
throw new errors_1.CliError(options.port
|
|
199
|
+
? en_1.messages.APP_START_CUSTOM_PORT_IN_USE(port)
|
|
200
|
+
: en_1.messages.APP_START_PORT_IN_USE(port));
|
|
201
|
+
}
|
|
202
|
+
// If the app is linked locally, make sure the resolved port is one of
|
|
203
|
+
// its registered redirect URLs — otherwise the OAuth callback will be
|
|
204
|
+
// rejected by Brevo at runtime. Skipped when there's no linked app
|
|
205
|
+
// (no appId means we'd have nowhere to push the update).
|
|
206
|
+
const redirectUri = config?.appId ? await ensureRedirectRegistered(config, port) : undefined;
|
|
207
|
+
(0, logger_1.logInfo)(`\n Starting ${feature}...`);
|
|
208
|
+
const childEnv = { ...process.env, PORT: String(port) };
|
|
209
|
+
if (redirectUri)
|
|
210
|
+
childEnv.REDIRECT_URI = redirectUri;
|
|
211
|
+
await runChildProcess(entryFile, childEnv, feature);
|
|
222
212
|
});
|
|
223
213
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/app/start.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/app/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/app/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/app/update.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,aAAa,kDAqTxB,CAAC"}
|