@neetru/cli 2.8.0 → 2.9.3

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 (44) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/dist/commands/admin/sdk-credential.d.ts +19 -0
  3. package/dist/commands/admin/sdk-credential.js +169 -0
  4. package/dist/commands/admin/sdk-credential.js.map +1 -0
  5. package/dist/commands/bug.d.ts +87 -0
  6. package/dist/commands/bug.js +419 -0
  7. package/dist/commands/bug.js.map +1 -0
  8. package/dist/commands/customers.d.ts +17 -0
  9. package/dist/commands/customers.js +160 -0
  10. package/dist/commands/customers.js.map +1 -0
  11. package/dist/commands/db.d.ts +4 -0
  12. package/dist/commands/db.js +380 -64
  13. package/dist/commands/db.js.map +1 -1
  14. package/dist/commands/docs.d.ts +4 -0
  15. package/dist/commands/docs.js +99 -7
  16. package/dist/commands/docs.js.map +1 -1
  17. package/dist/commands/doctor.js +4 -1
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/marketplace.d.ts +36 -0
  20. package/dist/commands/marketplace.js +584 -0
  21. package/dist/commands/marketplace.js.map +1 -0
  22. package/dist/commands/new.js +196 -37
  23. package/dist/commands/new.js.map +1 -1
  24. package/dist/commands/open.d.ts +8 -0
  25. package/dist/commands/open.js +61 -13
  26. package/dist/commands/open.js.map +1 -1
  27. package/dist/commands/products.d.ts +23 -0
  28. package/dist/commands/products.js +39 -1
  29. package/dist/commands/products.js.map +1 -1
  30. package/dist/commands/tenants.js +24 -2
  31. package/dist/commands/tenants.js.map +1 -1
  32. package/dist/commands/ui.d.ts +1 -1
  33. package/dist/commands/ui.js +172 -2
  34. package/dist/commands/ui.js.map +1 -1
  35. package/dist/commands/workspaces.d.ts +10 -1
  36. package/dist/commands/workspaces.js +145 -23
  37. package/dist/commands/workspaces.js.map +1 -1
  38. package/dist/index.js +327 -4
  39. package/dist/index.js.map +1 -1
  40. package/dist/lib/config-schema.d.ts +10 -10
  41. package/dist/lib/pickers.d.ts +25 -0
  42. package/dist/lib/pickers.js +75 -1
  43. package/dist/lib/pickers.js.map +1 -1
  44. package/package.json +5 -2
@@ -10,38 +10,141 @@
10
10
  * 4. openBrowser(`/workspaces/{id}`) — UX win
11
11
  * 5. resumo
12
12
  *
13
- * Erro em qualquer passo: mostra exatamente onde + sugere o comando manual
14
- * pra continuar. Não tenta rollback (decisão: prefere idempotência humana
15
- * sobre auto-undo silencioso).
13
+ * Conflito de slug no passo 1: em vez de falhar seco, mostra o produto
14
+ * existente e oferece 3 opções vincular, criar com slug alternativo, ou
15
+ * cancelar.
16
+ *
17
+ * Erro em outros passos: mostra exatamente onde e o que foi concluído.
18
+ * Não tenta rollback (decisão: prefere idempotência humana sobre auto-undo
19
+ * silencioso).
16
20
  */
17
21
  import chalk from 'chalk';
22
+ import inquirer from 'inquirer';
18
23
  import { log } from '../utils/logger.js';
19
- import { runProductsCreate, deriveSlug, } from './products.js';
24
+ import { runProductsCreate, deriveSlug, lookupProductBySlug, SlugConflictError, } from './products.js';
20
25
  import { runWorkspacesCreate, buildWorkspaceDashboardUrl, openBrowser, } from './workspaces.js';
21
26
  import { runInit } from './init.js';
22
27
  import { runDbInit } from './db.js';
28
+ import { requireToken } from '../lib/cli-read.js';
29
+ import { config } from '../lib/config.js';
23
30
  /**
24
- * Captura erro de um passo do macro como mensagem human-readable + uma
25
- * sugestão de comando pra continuar manualmente. O process.exit() interno
26
- * do helper é convertido via try/catch — preferimos relatar e re-lançar
27
- * (caller decide o exit).
31
+ * Captura erro de um passo do macro como mensagem human-readable.
32
+ * Re-lança erros tipados conhecidos (SlugConflictError) para tratamento
33
+ * específico pelo chamador.
28
34
  */
29
- async function step(name, hint, fn) {
35
+ async function step(fn) {
30
36
  try {
31
37
  const data = await fn();
32
38
  return { ok: true, data };
33
39
  }
34
40
  catch (err) {
41
+ // Re-lança erros tipados — o chamador tem lógica específica pra eles.
42
+ if (err instanceof SlugConflictError)
43
+ throw err;
35
44
  const error = err instanceof Error ? err.message : String(err);
36
- return { ok: false, error, hint };
45
+ return { ok: false, error };
46
+ }
47
+ }
48
+ /**
49
+ * Trata conflito de slug: mostra o produto existente e oferece opções.
50
+ *
51
+ * Retorna:
52
+ * - `{ action: 'link', product }` — usuário quer vincular ao produto existente
53
+ * - `{ action: 'rename', slug }` — usuário escolheu um slug alternativo
54
+ * - `{ action: 'cancel' }` — usuário cancelou
55
+ */
56
+ async function resolveSlugConflict(token, conflictSlug, name, json) {
57
+ // Em modo JSON não há interação — cancela com info estruturada.
58
+ if (json) {
59
+ console.log(JSON.stringify({
60
+ ok: false,
61
+ error: 'slug_conflict',
62
+ slug: conflictSlug,
63
+ message: `Já existe um produto com o slug "${conflictSlug}". Use --product-slug para um slug diferente.`,
64
+ }));
65
+ return { action: 'cancel' };
37
66
  }
67
+ // Busca o produto existente pra mostrar detalhes.
68
+ const existing = await lookupProductBySlug(token, conflictSlug);
69
+ console.log();
70
+ log.warn(`Já existe um produto com o slug "${chalk.cyan(conflictSlug)}".`);
71
+ if (existing) {
72
+ log.dim(` Nome: ${existing.name ?? '—'}`);
73
+ log.dim(` ID: ${existing.id}`);
74
+ log.dim(` Status: ${existing.status ?? '—'}`);
75
+ }
76
+ console.log();
77
+ // Sugestões de slug alternativo.
78
+ const altSlug1 = `${conflictSlug}-v2`;
79
+ const altSlug2 = `${conflictSlug}-2`;
80
+ const altSlug3 = deriveSlug(`${name}-novo`);
81
+ const { choice } = await inquirer.prompt([
82
+ {
83
+ type: 'list',
84
+ name: 'choice',
85
+ message: 'O que deseja fazer?',
86
+ choices: [
87
+ {
88
+ name: existing
89
+ ? `Vincular este projeto ao produto existente (${chalk.cyan(existing.id)})`
90
+ : `Vincular ao produto existente com slug "${conflictSlug}"`,
91
+ value: 'link',
92
+ short: 'Vincular ao produto existente',
93
+ },
94
+ {
95
+ name: `Criar com slug diferente (sugestão: ${chalk.cyan(altSlug1)})`,
96
+ value: 'rename',
97
+ short: 'Criar com slug diferente',
98
+ },
99
+ { name: 'Cancelar', value: 'cancel' },
100
+ ],
101
+ },
102
+ ]);
103
+ if (choice === 'link') {
104
+ if (!existing) {
105
+ log.error('Produto existente não encontrado via API — verifique no painel.');
106
+ return { action: 'cancel' };
107
+ }
108
+ return { action: 'link', product: existing };
109
+ }
110
+ if (choice === 'rename') {
111
+ const suggestions = [...new Set([altSlug1, altSlug2, altSlug3])].filter(Boolean);
112
+ const { newSlug } = await inquirer.prompt([
113
+ {
114
+ type: 'list',
115
+ name: 'newSlug',
116
+ message: 'Escolha um slug:',
117
+ choices: [
118
+ ...suggestions.map((s) => ({ name: s, value: s })),
119
+ { name: chalk.dim('Digitar outro slug…'), value: '__manual__' },
120
+ ],
121
+ },
122
+ ]);
123
+ if (newSlug === '__manual__') {
124
+ const { typed } = await inquirer.prompt([
125
+ {
126
+ type: 'input',
127
+ name: 'typed',
128
+ message: 'Novo slug (kebab-case):',
129
+ validate: (v) => /^[a-z0-9-]+$/.test(v.trim()) ? true : 'Apenas letras minúsculas, números e hífens.',
130
+ },
131
+ ]);
132
+ return { action: 'rename', slug: typed.trim() };
133
+ }
134
+ return { action: 'rename', slug: newSlug };
135
+ }
136
+ return { action: 'cancel' };
137
+ }
138
+ function buildDashboardUrl(productId) {
139
+ const baseUrl = String(config.get('neetruCoreUrl') ?? 'https://core.neetru.com').replace(/\/+$/, '');
140
+ return `${baseUrl}/products/${encodeURIComponent(productId)}`;
38
141
  }
39
142
  export async function runNewMacro(name, opts = {}) {
40
143
  if (!name || !name.trim()) {
41
144
  log.error('Uso: neetru new <name>');
42
145
  process.exit(1);
43
146
  }
44
- const slug = (opts.productSlug ?? deriveSlug(name)) || deriveSlug(name);
147
+ let slug = (opts.productSlug ?? deriveSlug(name)) || deriveSlug(name);
45
148
  const env = opts.env ?? 'dev';
46
149
  const tier = opts.tier ?? 'standard';
47
150
  const customer = opts.customer ?? 'self';
@@ -52,24 +155,81 @@ export async function runNewMacro(name, opts = {}) {
52
155
  console.log();
53
156
  }
54
157
  const summary = [];
55
- // ─── Step 1 Criar produto ──────────────────────────────────────────────
56
- const s1 = await step('products.create', `neetru products create --name "${name}" --slug ${slug} --yes`, () => runProductsCreate({
57
- name,
58
- slug,
59
- yes: true,
60
- json: true, // força non-interactive sem prints duplicados
61
- }));
62
- if (!s1.ok) {
63
- log.error(`[1/5] products.create falhou: ${s1.error}`);
64
- log.dim(` Tente manualmente: ${chalk.cyan(s1.hint)}`);
65
- process.exit(1);
158
+ // ─── Autenticar (obrigatório para lookup de conflito e criação) ──────────
159
+ const token = await requireToken(opts.json);
160
+ // ─── Step 1 — Criar produto (com tratamento de conflito de slug) ─────────
161
+ let product;
162
+ let isLinked = false;
163
+ // eslint-disable-next-line no-constant-condition
164
+ createLoop: while (true) {
165
+ let s1Result;
166
+ try {
167
+ s1Result = await step(() => runProductsCreate({
168
+ name,
169
+ slug,
170
+ yes: true,
171
+ json: true, // força non-interactive sem prints duplicados
172
+ }));
173
+ }
174
+ catch (err) {
175
+ if (err instanceof SlugConflictError) {
176
+ const resolution = await resolveSlugConflict(token, slug, name, !!opts.json);
177
+ if (resolution.action === 'cancel') {
178
+ log.dim('Operação cancelada.');
179
+ process.exit(0);
180
+ }
181
+ if (resolution.action === 'link') {
182
+ if (!opts.json) {
183
+ console.log();
184
+ log.success(`[1/5] Vinculado ao produto existente: ${resolution.product.id} (${resolution.product.slug ?? slug})`);
185
+ }
186
+ product = {
187
+ ok: true,
188
+ productId: resolution.product.id,
189
+ slug: resolution.product.slug ?? slug,
190
+ name: resolution.product.name ?? name,
191
+ ownerTeam: 'neetru-eng',
192
+ planTemplate: 'free',
193
+ environments: ['dev', 'prod'],
194
+ createdAt: null,
195
+ dashboardUrl: buildDashboardUrl(resolution.product.id),
196
+ };
197
+ isLinked = true;
198
+ summary.push({
199
+ step: 'products.create',
200
+ ok: true,
201
+ data: { ...product, linked: true },
202
+ });
203
+ break createLoop;
204
+ }
205
+ if (resolution.action === 'rename') {
206
+ slug = resolution.slug;
207
+ if (!opts.json) {
208
+ log.dim(` Tentando com slug: ${chalk.cyan(slug)}`);
209
+ }
210
+ continue createLoop;
211
+ }
212
+ }
213
+ throw err;
214
+ }
215
+ if (!s1Result.ok) {
216
+ log.error(`[1/5] products.create falhou: ${s1Result.error}`);
217
+ process.exit(1);
218
+ }
219
+ product = s1Result.data;
220
+ break;
221
+ }
222
+ if (!isLinked) {
223
+ if (!opts.json)
224
+ log.success(`[1/5] Produto criado: ${product.productId} (${product.slug})`);
225
+ summary.push({
226
+ step: 'products.create',
227
+ ok: true,
228
+ data: product,
229
+ });
66
230
  }
67
- const product = s1.data;
68
- if (!opts.json)
69
- log.success(`[1/5] Produto criado: ${product.productId} (${product.slug})`);
70
- summary.push({ step: 'products.create', ok: true, data: product });
71
231
  // ─── Step 2 — Criar workspace ────────────────────────────────────────────
72
- const s2 = await step('workspaces.create', `neetru workspaces create --product ${product.productId} --customer ${customer} --env ${env} --tier ${tier}`, () => runWorkspacesCreate({
232
+ const s2 = await step(() => runWorkspacesCreate({
73
233
  product: product.productId,
74
234
  customer,
75
235
  env,
@@ -78,8 +238,9 @@ export async function runNewMacro(name, opts = {}) {
78
238
  }));
79
239
  if (!s2.ok) {
80
240
  log.error(`[2/5] workspaces.create falhou: ${s2.error}`);
81
- log.dim(` Produto ${chalk.cyan(product.productId)} já foi criado — recupere com:`);
82
- log.dim(` ${chalk.cyan(s2.hint)}`);
241
+ log.dim(` Produto ${chalk.cyan(product.productId)} já foi criado.`);
242
+ log.dim(` Para criar o workspace manualmente:`);
243
+ log.dim(` neetru workspaces create --product ${product.productId} --customer ${customer} --env ${env} --tier ${tier}`);
83
244
  process.exit(1);
84
245
  }
85
246
  // runWorkspacesCreate hoje escreve direto no stdout em modo json — pegar id
@@ -93,7 +254,7 @@ export async function runNewMacro(name, opts = {}) {
93
254
  summary.push({ step: 'workspaces.create', ok: true, data: { workspaceId } });
94
255
  // ─── Step 3 — Scaffold local ─────────────────────────────────────────────
95
256
  if (!opts.skipInit) {
96
- const s3 = await step('init.scaffold', `neetru init ${name} --yes`, () => runInit({
257
+ const s3 = await step(() => runInit({
97
258
  name,
98
259
  type: 'nextjs',
99
260
  here: false,
@@ -102,8 +263,8 @@ export async function runNewMacro(name, opts = {}) {
102
263
  }));
103
264
  if (!s3.ok) {
104
265
  log.error(`[3/5] init.scaffold falhou: ${s3.error}`);
105
- log.dim(` Produto + workspace OK. Rode manualmente:`);
106
- log.dim(` ${chalk.cyan(s3.hint)}`);
266
+ log.dim(' Produto + workspace OK. Para criar o scaffold manualmente:');
267
+ log.dim(` neetru init ${name} --yes`);
107
268
  process.exit(1);
108
269
  }
109
270
  if (!opts.json)
@@ -139,13 +300,11 @@ export async function runNewMacro(name, opts = {}) {
139
300
  }
140
301
  // ─── Step 5 — Inicializar banco de dados (GAP-X-6) ───────────────────────
141
302
  if (!opts.skipDbInit) {
142
- const s5 = await step('db.init', `neetru db init --yes`, () => runDbInit({
143
- yes: true,
144
- }));
303
+ const s5 = await step(() => runDbInit({ yes: true }));
145
304
  if (!s5.ok) {
146
305
  log.error(`[5/5] db.init falhou: ${s5.error}`);
147
- log.dim(` Produto + workspace + scaffold OK. Rode manualmente:`);
148
- log.dim(` ${chalk.cyan(s5.hint)}`);
306
+ log.dim(' Produto + workspace + scaffold OK. Para inicializar o banco manualmente:');
307
+ log.dim(' neetru db init --yes');
149
308
  process.exit(1);
150
309
  }
151
310
  if (!opts.json)
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
1
  export interface OpenOptions {
2
2
  clientId?: string;
3
3
  }
4
+ /**
5
+ * HIGH-2: abre URL no browser de forma segura.
6
+ * Valida que a URL começa com http(s):// antes de passar pra qualquer
7
+ * chamada de sistema — evita execução de comandos maliciosos via URL
8
+ * config-derived em Windows (cmd /c start &malicious.exe).
9
+ * Usa spawnSync com shell:false em vez de cmd /c start.
10
+ */
11
+ export declare function safeOpenUrl(url: string): void;
4
12
  export declare function runOpen(target: string | undefined, opts: OpenOptions): Promise<void>;
@@ -2,9 +2,13 @@
2
2
  * `neetru open [target]` — abre página do painel Neetru no browser.
3
3
  *
4
4
  * Targets: dashboard, builds, logs, settings, workspaces, products, servers.
5
- * Default: dashboard.
5
+ * Default (sem target e dentro de produto): painel do produto detectado pelo
6
+ * neetru.config.json → `https://core.neetru.com/products/{productId}`.
7
+ * Default (sem target, sem config): dashboard.
6
8
  */
7
- import { spawn } from 'node:child_process';
9
+ import * as fs from 'node:fs/promises';
10
+ import * as path from 'node:path';
11
+ import { spawn, spawnSync } from 'node:child_process';
8
12
  import chalk from 'chalk';
9
13
  import { config } from '../lib/config.js';
10
14
  import { log } from '../utils/logger.js';
@@ -18,35 +22,79 @@ const TARGETS = {
18
22
  servers: '/servers',
19
23
  incidents: '/incidents',
20
24
  };
21
- function openUrl(url) {
25
+ /**
26
+ * HIGH-2: abre URL no browser de forma segura.
27
+ * Valida que a URL começa com http(s):// antes de passar pra qualquer
28
+ * chamada de sistema — evita execução de comandos maliciosos via URL
29
+ * config-derived em Windows (cmd /c start &malicious.exe).
30
+ * Usa spawnSync com shell:false em vez de cmd /c start.
31
+ */
32
+ export function safeOpenUrl(url) {
33
+ if (!/^https?:\/\//i.test(url)) {
34
+ log.warn(`URL inválida (protocolo não permitido): ${url}`);
35
+ return;
36
+ }
22
37
  try {
23
38
  if (process.platform === 'win32') {
24
- spawn('cmd', ['/c', 'start', '""', url], {
25
- detached: true,
26
- stdio: 'ignore',
27
- windowsHide: true,
28
- }).unref();
39
+ // rundll32 url.dll,FileProtocolHandler não passa pelo shell — sem injeção.
40
+ spawnSync('rundll32', ['url.dll,FileProtocolHandler', url], { shell: false });
29
41
  return;
30
42
  }
31
43
  if (process.platform === 'darwin') {
32
- spawn('open', [url], { detached: true, stdio: 'ignore' }).unref();
44
+ spawn('open', [url], { detached: true, stdio: 'ignore', shell: false }).unref();
33
45
  return;
34
46
  }
35
- spawn('xdg-open', [url], { detached: true, stdio: 'ignore' }).unref();
47
+ spawn('xdg-open', [url], { detached: true, stdio: 'ignore', shell: false }).unref();
36
48
  }
37
- catch (e) {
49
+ catch (_e) {
38
50
  log.warn(`Não consegui abrir browser. Acesse manualmente: ${url}`);
39
51
  }
40
52
  }
53
+ /** @deprecated Use safeOpenUrl — mantido para compatibilidade interna. */
54
+ function openUrl(url) {
55
+ safeOpenUrl(url);
56
+ }
57
+ /** Tenta ler productId ou slug do neetru.config.json no cwd. */
58
+ async function detectProductFromConfig() {
59
+ for (const fname of ['neetru.config.json', '.neetru.json']) {
60
+ try {
61
+ const raw = await fs.readFile(path.resolve(process.cwd(), fname), 'utf8');
62
+ const parsed = JSON.parse(raw);
63
+ // Prefere productId explícito; cai no slug como fallback.
64
+ const id = parsed['productId'] ?? parsed['slug'];
65
+ if (id)
66
+ return id;
67
+ }
68
+ catch {
69
+ // arquivo ausente ou inválido — tenta próximo
70
+ }
71
+ }
72
+ return null;
73
+ }
41
74
  export async function runOpen(target, opts) {
42
- const key = (target ?? 'dashboard').toLowerCase();
75
+ const baseUrl = String(config.get('neetruCoreUrl') ?? 'https://core.neetru.com').replace(/\/+$/, '');
76
+ // pdv #9 fix: sem target, tenta abrir o produto do cwd.
77
+ if (!target) {
78
+ const productId = await detectProductFromConfig();
79
+ if (productId) {
80
+ const url = `${baseUrl}/products/${encodeURIComponent(productId)}`;
81
+ console.log(chalk.dim(`Abrindo painel do produto "${productId}"…`));
82
+ console.log(chalk.dim(` ${url}`));
83
+ openUrl(url);
84
+ return;
85
+ }
86
+ // Sem config detectada — abre dashboard como antes.
87
+ console.log(chalk.dim(`Abrindo ${baseUrl}/…`));
88
+ openUrl(`${baseUrl}/`);
89
+ return;
90
+ }
91
+ const key = target.toLowerCase();
43
92
  if (!(key in TARGETS)) {
44
93
  log.error(`Target desconhecido: ${target}`);
45
94
  log.dim(` Disponíveis: ${Object.keys(TARGETS).join(', ')}`);
46
95
  process.exit(1);
47
96
  }
48
97
  const corePath = TARGETS[key];
49
- const baseUrl = String(config.get('neetruCoreUrl') ?? 'https://core.neetru.com').replace(/\/+$/, '');
50
98
  let url = `${baseUrl}${corePath}`;
51
99
  // Para targets workspace-scoped, anexa clientId se disponível
52
100
  if (opts.clientId && ['logs', 'builds'].includes(key)) {
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,25 @@
1
+ /**
2
+ * Lançado quando o servidor retorna 400 com conflito de slug.
3
+ * Permite que o chamador (ex: `neetru new`) ofereça opções em vez de falhar seco.
4
+ */
5
+ export declare class SlugConflictError extends Error {
6
+ readonly slug: string;
7
+ constructor(slug: string, message: string);
8
+ }
9
+ /**
10
+ * Busca produto existente pelo slug. Retorna `null` se não encontrado ou se
11
+ * a chamada falhar (não lança — caller decide o que fazer com ausência).
12
+ */
13
+ export declare function lookupProductBySlug(token: string, slug: string): Promise<ProductRow | null>;
14
+ interface ProductRow {
15
+ id: string;
16
+ name: string | null;
17
+ slug: string | null;
18
+ status: string | null;
19
+ description: string | null;
20
+ repoUrl: string | null;
21
+ ownerTeam: string | null;
22
+ }
1
23
  export interface ProductsListOptions {
2
24
  status?: string;
3
25
  limit?: string;
@@ -41,3 +63,4 @@ export interface ProductCreatedResult {
41
63
  */
42
64
  export declare function deriveSlug(name: string): string;
43
65
  export declare function runProductsCreate(opts: ProductsCreateOptions): Promise<ProductCreatedResult | void>;
66
+ export {};
@@ -11,13 +11,41 @@
11
11
  import chalk from 'chalk';
12
12
  import inquirer from 'inquirer';
13
13
  import ora from 'ora';
14
- import { apiRequest } from '../lib/api-client.js';
14
+ import { apiRequest, CliApiError } from '../lib/api-client.js';
15
15
  import { config } from '../lib/config.js';
16
16
  import { requireToken, handleApiError } from '../lib/cli-read.js';
17
17
  import { printWriteResult } from '../lib/cli-write.js';
18
18
  import { renderTable } from '../lib/render.js';
19
19
  import { pickProductSlug } from '../lib/pickers.js';
20
20
  import { log } from '../utils/logger.js';
21
+ // ─── Erros tipados ─────────────────────────────────────────────────────────
22
+ /**
23
+ * Lançado quando o servidor retorna 400 com conflito de slug.
24
+ * Permite que o chamador (ex: `neetru new`) ofereça opções em vez de falhar seco.
25
+ */
26
+ export class SlugConflictError extends Error {
27
+ slug;
28
+ constructor(slug, message) {
29
+ super(message);
30
+ this.name = 'SlugConflictError';
31
+ this.slug = slug;
32
+ }
33
+ }
34
+ // ─── Lookup por slug ────────────────────────────────────────────────────────
35
+ /**
36
+ * Busca produto existente pelo slug. Retorna `null` se não encontrado ou se
37
+ * a chamada falhar (não lança — caller decide o que fazer com ausência).
38
+ */
39
+ export async function lookupProductBySlug(token, slug) {
40
+ try {
41
+ const res = await apiRequest(`/api/cli/v1/products?slug=${encodeURIComponent(slug)}`, { token });
42
+ const match = (res.products ?? []).find((p) => p.slug === slug || p.slug?.toLowerCase() === slug.toLowerCase());
43
+ return match ?? null;
44
+ }
45
+ catch {
46
+ return null;
47
+ }
48
+ }
21
49
  function colorStatus(s) {
22
50
  if (!s)
23
51
  return chalk.dim('—');
@@ -250,6 +278,16 @@ export async function runProductsCreate(opts) {
250
278
  }
251
279
  catch (error) {
252
280
  spinner?.fail('Falha ao criar produto.');
281
+ // Conflito de slug — sinaliza com erro tipado em vez de encerrar o processo.
282
+ // O chamador (ex: `neetru new`) pode interceptar e oferecer opções ao usuário.
283
+ if (error instanceof CliApiError &&
284
+ error.status === 400 &&
285
+ (error.message.includes('Já existe') ||
286
+ error.message.includes('slug') ||
287
+ error.message.toLowerCase().includes('already exists') ||
288
+ error.message.toLowerCase().includes('duplicate'))) {
289
+ throw new SlugConflictError(slug, error.message);
290
+ }
253
291
  handleApiError(error, opts.json);
254
292
  }
255
293
  const productId = res.productId ?? res.id ?? slug;
@@ -1 +1 @@
1
- {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/commands/products.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/commands/products.ts"],"names":[],"mappings":"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"}