@neetru/cli 1.0.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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +197 -0
  3. package/dist/commands/add.d.ts +3 -0
  4. package/dist/commands/add.d.ts.map +1 -0
  5. package/dist/commands/add.js +150 -0
  6. package/dist/commands/add.js.map +1 -0
  7. package/dist/commands/deploy.d.ts +3 -0
  8. package/dist/commands/deploy.d.ts.map +1 -0
  9. package/dist/commands/deploy.js +196 -0
  10. package/dist/commands/deploy.js.map +1 -0
  11. package/dist/commands/generate-types.d.ts +3 -0
  12. package/dist/commands/generate-types.d.ts.map +1 -0
  13. package/dist/commands/generate-types.js +150 -0
  14. package/dist/commands/generate-types.js.map +1 -0
  15. package/dist/commands/init.d.ts +3 -0
  16. package/dist/commands/init.d.ts.map +1 -0
  17. package/dist/commands/init.js +149 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/login.d.ts +3 -0
  20. package/dist/commands/login.d.ts.map +1 -0
  21. package/dist/commands/login.js +104 -0
  22. package/dist/commands/login.js.map +1 -0
  23. package/dist/commands/logs.d.ts +3 -0
  24. package/dist/commands/logs.d.ts.map +1 -0
  25. package/dist/commands/logs.js +114 -0
  26. package/dist/commands/logs.js.map +1 -0
  27. package/dist/commands/open.d.ts +3 -0
  28. package/dist/commands/open.d.ts.map +1 -0
  29. package/dist/commands/open.js +91 -0
  30. package/dist/commands/open.js.map +1 -0
  31. package/dist/commands/status.d.ts +3 -0
  32. package/dist/commands/status.d.ts.map +1 -0
  33. package/dist/commands/status.js +99 -0
  34. package/dist/commands/status.js.map +1 -0
  35. package/dist/commands/validate.d.ts +3 -0
  36. package/dist/commands/validate.d.ts.map +1 -0
  37. package/dist/commands/validate.js +99 -0
  38. package/dist/commands/validate.js.map +1 -0
  39. package/dist/commands/whoami.d.ts +3 -0
  40. package/dist/commands/whoami.d.ts.map +1 -0
  41. package/dist/commands/whoami.js +33 -0
  42. package/dist/commands/whoami.js.map +1 -0
  43. package/dist/config.d.ts +14 -0
  44. package/dist/config.d.ts.map +1 -0
  45. package/dist/config.js +83 -0
  46. package/dist/config.js.map +1 -0
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +40 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/scaffold/auth.d.ts +3 -0
  52. package/dist/scaffold/auth.d.ts.map +1 -0
  53. package/dist/scaffold/auth.js +228 -0
  54. package/dist/scaffold/auth.js.map +1 -0
  55. package/dist/scaffold/billing.d.ts +3 -0
  56. package/dist/scaffold/billing.d.ts.map +1 -0
  57. package/dist/scaffold/billing.js +184 -0
  58. package/dist/scaffold/billing.js.map +1 -0
  59. package/dist/scaffold/usage.d.ts +3 -0
  60. package/dist/scaffold/usage.d.ts.map +1 -0
  61. package/dist/scaffold/usage.js +173 -0
  62. package/dist/scaffold/usage.js.map +1 -0
  63. package/dist/scaffold/users.d.ts +3 -0
  64. package/dist/scaffold/users.d.ts.map +1 -0
  65. package/dist/scaffold/users.js +135 -0
  66. package/dist/scaffold/users.js.map +1 -0
  67. package/package.json +60 -0
@@ -0,0 +1,91 @@
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.openCommand = openCommand;
40
+ const commander_1 = require("commander");
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const config_1 = require("../config");
43
+ const child_process_1 = require("child_process");
44
+ const os = __importStar(require("os"));
45
+ const TARGETS = {
46
+ dashboard: (url) => `${url}/`,
47
+ workspace: (url, id) => `${url}/workspaces?clientId=${encodeURIComponent(id)}`,
48
+ builds: (url) => `${url}/builds`,
49
+ deployments: (url) => `${url}/deployments`,
50
+ billing: (url) => `${url}/billing`,
51
+ logs: (url) => `${url}/logs`,
52
+ credentials: (url) => `${url}/admin/credentials`,
53
+ status: (url) => `${url}/status`,
54
+ };
55
+ function openCommand() {
56
+ const cmd = new commander_1.Command('open');
57
+ cmd
58
+ .description('Abre uma página do painel Neetru no navegador')
59
+ .argument('[target]', `Página: ${Object.keys(TARGETS).join(' | ')}`, 'dashboard')
60
+ .action((target) => {
61
+ const config = (0, config_1.readLocalConfig)();
62
+ if (!config) {
63
+ console.error(chalk_1.default.red('neetru.json não encontrado. Execute neetru init primeiro.'));
64
+ process.exit(1);
65
+ }
66
+ const buildUrl = TARGETS[target];
67
+ if (!buildUrl) {
68
+ console.error(chalk_1.default.red(`Target desconhecido: ${target}`));
69
+ console.log(chalk_1.default.dim(`Disponíveis: ${Object.keys(TARGETS).join(', ')}`));
70
+ process.exit(1);
71
+ }
72
+ const url = buildUrl(config.coreUrl, config.clientId);
73
+ console.log(chalk_1.default.dim(`Abrindo ${url}`));
74
+ const platform = os.platform();
75
+ try {
76
+ const cmdMap = {
77
+ darwin: `open "${url}"`,
78
+ win32: `start "" "${url}"`,
79
+ linux: `xdg-open "${url}"`,
80
+ };
81
+ const command = cmdMap[platform] ?? cmdMap.linux;
82
+ (0, child_process_1.execSync)(command, { stdio: 'ignore' });
83
+ }
84
+ catch {
85
+ console.log(chalk_1.default.yellow('Não foi possível abrir o navegador automaticamente.'));
86
+ console.log(chalk_1.default.cyan(url));
87
+ }
88
+ });
89
+ return cmd;
90
+ }
91
+ //# sourceMappingURL=open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,kCAuCC;AAxDD,yCAAoC;AACpC,kDAA0B;AAC1B,sCAA4C;AAC5C,iDAAyC;AACzC,uCAAyB;AAEzB,MAAM,OAAO,GAAkE;IAC7E,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG;IAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,wBAAwB,kBAAkB,CAAC,EAAE,CAAC,EAAE;IAC9E,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS;IAChC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,cAAc;IAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,UAAU;IAClC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO;IAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,oBAAoB;IAChD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS;CACjC,CAAC;AAEF,SAAgB,WAAW;IACzB,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC,CAAC;IAEhC,GAAG;SACA,WAAW,CAAC,+CAA+C,CAAC;SAC5D,QAAQ,CAAC,UAAU,EAAE,WAAW,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,CAAC;SAChF,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,IAAA,wBAAe,GAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;QAEzC,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAA2B;gBACrC,MAAM,EAAE,SAAS,GAAG,GAAG;gBACvB,KAAK,EAAE,aAAa,GAAG,GAAG;gBAC1B,KAAK,EAAE,aAAa,GAAG,GAAG;aAC3B,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;YACjD,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function statusCommand(): Command;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,aAAa,IAAI,OAAO,CA2FvC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.statusCommand = statusCommand;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const config_1 = require("../config");
11
+ function statusCommand() {
12
+ const cmd = new commander_1.Command('status');
13
+ cmd
14
+ .description('Mostra o status atual do workspace Neetru')
15
+ .option('--json', 'Output em JSON ao invés de tabela')
16
+ .action(async (options) => {
17
+ let config;
18
+ try {
19
+ config = (0, config_1.requireConfig)();
20
+ }
21
+ catch (e) {
22
+ console.error(chalk_1.default.red(e.message));
23
+ process.exit(1);
24
+ }
25
+ const global = (0, config_1.readGlobalConfig)();
26
+ const apiKey = global.clientSecret ?? process.env.NEETRU_CLI_API_KEY;
27
+ if (!apiKey) {
28
+ console.error(chalk_1.default.red('Não autenticado. Execute neetru login primeiro.'));
29
+ process.exit(1);
30
+ }
31
+ const spinner = (0, ora_1.default)('Buscando status...').start();
32
+ let status;
33
+ try {
34
+ const res = await fetch(`${config.coreUrl}/api/v1/cli/workspace/status?clientId=${encodeURIComponent(config.clientId)}`, {
35
+ headers: { Authorization: `Bearer ${apiKey}` },
36
+ signal: AbortSignal.timeout(8000),
37
+ });
38
+ if (!res.ok) {
39
+ spinner.fail(`HTTP ${res.status}`);
40
+ if (res.status === 401)
41
+ console.log(chalk_1.default.dim(' → Sessão expirada. Execute neetru login novamente.'));
42
+ if (res.status === 404)
43
+ console.log(chalk_1.default.dim(' → Workspace não encontrado. Verifique seu clientId.'));
44
+ process.exit(1);
45
+ }
46
+ status = await res.json();
47
+ spinner.succeed('Status obtido');
48
+ }
49
+ catch (e) {
50
+ spinner.fail(`Erro: ${e.message}`);
51
+ process.exit(1);
52
+ }
53
+ if (options.json) {
54
+ console.log(JSON.stringify(status, null, 2));
55
+ return;
56
+ }
57
+ const statusColor = (s) => {
58
+ if (!s)
59
+ return chalk_1.default.dim('—');
60
+ if (['ativo', 'success', 'SUCCESS', 'active'].includes(s))
61
+ return chalk_1.default.green(s);
62
+ if (['failed', 'FAILURE', 'suspenso', 'expirado'].includes(s))
63
+ return chalk_1.default.red(s);
64
+ if (['pending', 'running', 'WORKING', 'em provisionamento'].includes(s))
65
+ return chalk_1.default.yellow(s);
66
+ return chalk_1.default.cyan(s);
67
+ };
68
+ console.log('\n' + chalk_1.default.bold('Workspace Status'));
69
+ console.log(chalk_1.default.dim('─'.repeat(50)));
70
+ console.log(` ${chalk_1.default.dim('Workspace ID:')} ${chalk_1.default.cyan(status.workspaceId)}`);
71
+ console.log(` ${chalk_1.default.dim('Status:')} ${statusColor(status.status)}`);
72
+ if (status.primaryDomain) {
73
+ console.log(` ${chalk_1.default.dim('Domain:')} ${chalk_1.default.cyan(status.primaryDomain)}`);
74
+ }
75
+ else if (status.temporaryDomain) {
76
+ console.log(` ${chalk_1.default.dim('Dev Domain:')} ${chalk_1.default.cyan(status.temporaryDomain)}`);
77
+ }
78
+ if (status.resourceTier) {
79
+ console.log(` ${chalk_1.default.dim('Tier:')} ${status.resourceTier}`);
80
+ }
81
+ console.log('');
82
+ console.log(chalk_1.default.bold(' Last Build'));
83
+ console.log(` ${chalk_1.default.dim(' ID:')} ${status.lastBuildId ? chalk_1.default.cyan(status.lastBuildId.slice(0, 12)) : chalk_1.default.dim('—')}`);
84
+ console.log(` ${chalk_1.default.dim(' Status:')} ${statusColor(status.lastBuildStatus)}`);
85
+ console.log('');
86
+ console.log(chalk_1.default.bold(' Last Deployment'));
87
+ console.log(` ${chalk_1.default.dim(' ID:')} ${status.lastDeploymentId ? chalk_1.default.cyan(status.lastDeploymentId.slice(0, 12)) : chalk_1.default.dim('—')}`);
88
+ console.log(` ${chalk_1.default.dim(' Status:')} ${statusColor(status.lastDeploymentStatus)}`);
89
+ if (status.expiresAt) {
90
+ const expiresIn = Math.ceil((new Date(status.expiresAt).getTime() - Date.now()) / (1000 * 60 * 60 * 24));
91
+ const color = expiresIn < 7 ? chalk_1.default.yellow : chalk_1.default.dim;
92
+ console.log('');
93
+ console.log(` ${color(`Expira em ${expiresIn} dias`)}`);
94
+ }
95
+ console.log('');
96
+ });
97
+ return cmd;
98
+ }
99
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function validateCommand(): Command;
3
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,eAAe,IAAI,OAAO,CA2FzC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateCommand = validateCommand;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const ora_1 = __importDefault(require("ora"));
10
+ const config_1 = require("../config");
11
+ function validateCommand() {
12
+ const cmd = new commander_1.Command('validate');
13
+ cmd
14
+ .description('Valida a configuração Neetru e conexão com o Core')
15
+ .action(async () => {
16
+ let config;
17
+ try {
18
+ config = (0, config_1.requireConfig)();
19
+ }
20
+ catch (e) {
21
+ console.error(chalk_1.default.red(e.message));
22
+ process.exit(1);
23
+ }
24
+ console.log('\n' + chalk_1.default.bold('Validando configuração Neetru...\n'));
25
+ const checks = [
26
+ {
27
+ name: 'neetru.json existe',
28
+ check: async () => ({ ok: true, message: `clientId: ${config.clientId}` }),
29
+ },
30
+ {
31
+ name: 'NEETRU_CLIENT_ID definido',
32
+ check: async () => {
33
+ const ok = !!process.env.NEETRU_CLIENT_ID;
34
+ return { ok, message: ok ? 'OK' : 'NEETRU_CLIENT_ID não encontrado no ambiente' };
35
+ },
36
+ },
37
+ {
38
+ name: 'NEETRU_CLIENT_SECRET definido',
39
+ check: async () => {
40
+ const ok = !!process.env.NEETRU_CLIENT_SECRET;
41
+ return { ok, message: ok ? 'OK' : 'NEETRU_CLIENT_SECRET não encontrado (necessário para token exchange)' };
42
+ },
43
+ },
44
+ {
45
+ name: `Core acessível (${config.coreUrl})`,
46
+ check: async () => {
47
+ try {
48
+ const res = await fetch(`${config.coreUrl}/api/health`, {
49
+ signal: AbortSignal.timeout(5000),
50
+ });
51
+ return { ok: res.ok, message: res.ok ? `HTTP ${res.status}` : `HTTP ${res.status} — Core inacessível` };
52
+ }
53
+ catch (e) {
54
+ return { ok: false, message: `Falha de rede: ${e.message}` };
55
+ }
56
+ },
57
+ },
58
+ {
59
+ name: 'OAuth Client válido',
60
+ check: async () => {
61
+ try {
62
+ const res = await fetch(`${config.coreUrl}/api/v1/oauth/validate-client?client_id=${encodeURIComponent(config.clientId)}`, { signal: AbortSignal.timeout(5000) });
63
+ if (res.ok)
64
+ return { ok: true, message: 'Client ID reconhecido' };
65
+ if (res.status === 404)
66
+ return { ok: false, message: 'Client ID não encontrado no Core' };
67
+ return { ok: false, message: `Status ${res.status}` };
68
+ }
69
+ catch {
70
+ return { ok: false, message: 'Não foi possível validar (Core offline?)' };
71
+ }
72
+ },
73
+ },
74
+ ];
75
+ let allOk = true;
76
+ for (const check of checks) {
77
+ const spinner = (0, ora_1.default)(check.name).start();
78
+ const result = await check.check();
79
+ if (result.ok) {
80
+ spinner.succeed(`${check.name} — ${chalk_1.default.dim(result.message)}`);
81
+ }
82
+ else {
83
+ spinner.fail(`${check.name} — ${chalk_1.default.yellow(result.message)}`);
84
+ allOk = false;
85
+ }
86
+ }
87
+ console.log('');
88
+ if (allOk) {
89
+ console.log(chalk_1.default.green.bold('✓ Configuração válida. Pronto para uso!'));
90
+ }
91
+ else {
92
+ console.log(chalk_1.default.yellow.bold('⚠ Algumas verificações falharam. Corrija antes de usar em produção.'));
93
+ process.exit(1);
94
+ }
95
+ console.log('');
96
+ });
97
+ return cmd;
98
+ }
99
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function whoamiCommand(): Command;
3
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,aAAa,IAAI,OAAO,CA0BvC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.whoamiCommand = whoamiCommand;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const config_1 = require("../config");
10
+ function whoamiCommand() {
11
+ const cmd = new commander_1.Command('whoami');
12
+ cmd
13
+ .description('Exibe a configuração Neetru do projeto atual')
14
+ .action(() => {
15
+ const config = (0, config_1.readLocalConfig)();
16
+ if (!config) {
17
+ console.log(chalk_1.default.yellow('Nenhum neetru.json encontrado neste diretório.'));
18
+ console.log(chalk_1.default.dim('Execute neetru init para começar.'));
19
+ return;
20
+ }
21
+ console.log('\n' + chalk_1.default.bold('Projeto Neetru:'));
22
+ console.log(` Core URL: ${chalk_1.default.cyan(config.coreUrl)}`);
23
+ console.log(` Client ID: ${chalk_1.default.cyan(config.clientId)}`);
24
+ if (config.projectName) {
25
+ console.log(` Projeto: ${chalk_1.default.cyan(config.projectName)}`);
26
+ }
27
+ console.log(` Features: ${config.features.length > 0 ? chalk_1.default.cyan(config.features.join(', ')) : chalk_1.default.dim('nenhuma')}`);
28
+ console.log(` Criado em: ${chalk_1.default.dim(config.createdAt)}`);
29
+ console.log('');
30
+ });
31
+ return cmd;
32
+ }
33
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":";;;;;AAIA,sCA0BC;AA9BD,yCAAoC;AACpC,kDAA0B;AAC1B,sCAA4C;AAE5C,SAAgB,aAAa;IAC3B,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC,CAAC;IAElC,GAAG;SACA,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,MAAM,GAAG,IAAA,wBAAe,GAAE,CAAC;QAEjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3H,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAK,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface NeetruConfig {
2
+ coreUrl: string;
3
+ clientId: string;
4
+ clientSecret?: string;
5
+ projectName?: string;
6
+ features: string[];
7
+ createdAt: string;
8
+ }
9
+ export declare function readLocalConfig(): NeetruConfig | null;
10
+ export declare function writeLocalConfig(config: NeetruConfig): void;
11
+ export declare function readGlobalConfig(): Partial<NeetruConfig>;
12
+ export declare function writeGlobalConfig(config: Partial<NeetruConfig>): void;
13
+ export declare function requireConfig(): NeetruConfig;
14
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAOrD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAOxD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,aAAa,IAAI,YAAY,CAU5C"}
package/dist/config.js ADDED
@@ -0,0 +1,83 @@
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.readLocalConfig = readLocalConfig;
37
+ exports.writeLocalConfig = writeLocalConfig;
38
+ exports.readGlobalConfig = readGlobalConfig;
39
+ exports.writeGlobalConfig = writeGlobalConfig;
40
+ exports.requireConfig = requireConfig;
41
+ const fs = __importStar(require("fs-extra"));
42
+ const path = __importStar(require("path"));
43
+ const os = __importStar(require("os"));
44
+ const CONFIG_DIR = path.join(os.homedir(), '.neetru');
45
+ const GLOBAL_CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
46
+ const LOCAL_CONFIG_FILE = path.join(process.cwd(), 'neetru.json');
47
+ function readLocalConfig() {
48
+ try {
49
+ if (!fs.existsSync(LOCAL_CONFIG_FILE))
50
+ return null;
51
+ return fs.readJsonSync(LOCAL_CONFIG_FILE);
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
57
+ function writeLocalConfig(config) {
58
+ fs.writeJsonSync(LOCAL_CONFIG_FILE, config, { spaces: 2 });
59
+ }
60
+ function readGlobalConfig() {
61
+ try {
62
+ if (!fs.existsSync(GLOBAL_CONFIG_FILE))
63
+ return {};
64
+ return fs.readJsonSync(GLOBAL_CONFIG_FILE);
65
+ }
66
+ catch {
67
+ return {};
68
+ }
69
+ }
70
+ function writeGlobalConfig(config) {
71
+ fs.ensureDirSync(CONFIG_DIR);
72
+ fs.writeJsonSync(GLOBAL_CONFIG_FILE, config, { spaces: 2 });
73
+ }
74
+ function requireConfig() {
75
+ const config = readLocalConfig();
76
+ if (!config) {
77
+ throw new Error('neetru.json não encontrado. Execute ' +
78
+ '\x1b[1mneetru init\x1b[0m' +
79
+ ' no diretório do seu projeto.');
80
+ }
81
+ return config;
82
+ }
83
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,0CAOC;AAED,4CAEC;AAED,4CAOC;AAED,8CAGC;AAED,sCAUC;AAtDD,6CAA+B;AAC/B,2CAA6B;AAC7B,uCAAyB;AAWzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAChE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;AAElE,SAAgB,eAAe;IAC7B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,OAAO,IAAI,CAAC;QACnD,OAAO,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAiB,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAAoB;IACnD,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,gBAAgB;IAC9B,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAAE,OAAO,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAA0B,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,MAA6B;IAC7D,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7B,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,sCAAsC;YACtC,2BAA2B;YAC3B,+BAA+B,CAChC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const init_1 = require("./commands/init");
10
+ const add_1 = require("./commands/add");
11
+ const validate_1 = require("./commands/validate");
12
+ const generate_types_1 = require("./commands/generate-types");
13
+ const whoami_1 = require("./commands/whoami");
14
+ const login_1 = require("./commands/login");
15
+ const status_1 = require("./commands/status");
16
+ const logs_1 = require("./commands/logs");
17
+ const deploy_1 = require("./commands/deploy");
18
+ const open_1 = require("./commands/open");
19
+ const program = new commander_1.Command();
20
+ program
21
+ .name('neetru')
22
+ .description(chalk_1.default.bold('Neetru CLI') +
23
+ ' — SDK & DevOps para integrar seu SaaS com Neetru Core\n' +
24
+ chalk_1.default.dim(' init · add · login · status · deploy · logs · open'))
25
+ .version('1.0.0');
26
+ // Setup
27
+ program.addCommand((0, init_1.initCommand)());
28
+ program.addCommand((0, add_1.addCommand)());
29
+ program.addCommand((0, validate_1.validateCommand)());
30
+ program.addCommand((0, generate_types_1.generateTypesCommand)());
31
+ // Auth & info
32
+ program.addCommand((0, login_1.loginCommand)());
33
+ program.addCommand((0, whoami_1.whoamiCommand)());
34
+ // Operations
35
+ program.addCommand((0, status_1.statusCommand)());
36
+ program.addCommand((0, deploy_1.deployCommand)());
37
+ program.addCommand((0, logs_1.logsCommand)());
38
+ program.addCommand((0, open_1.openCommand)());
39
+ program.parseAsync(process.argv);
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,yCAAoC;AACpC,kDAA0B;AAC1B,0CAA8C;AAC9C,wCAA4C;AAC5C,kDAAsD;AACtD,8DAAiE;AACjE,8CAAkD;AAClD,4CAAgD;AAChD,8CAAkD;AAClD,0CAA8C;AAC9C,8CAAkD;AAClD,0CAA8C;AAE9C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CACV,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC;IACxB,0DAA0D;IAC1D,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAClE;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,QAAQ;AACR,OAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,IAAA,gBAAU,GAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,IAAA,0BAAe,GAAE,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,IAAA,qCAAoB,GAAE,CAAC,CAAC;AAE3C,cAAc;AACd,OAAO,CAAC,UAAU,CAAC,IAAA,oBAAY,GAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;AAEpC,aAAa;AACb,OAAO,CAAC,UAAU,CAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,IAAA,kBAAW,GAAE,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NeetruConfig } from '../config';
2
+ export declare function scaffoldAuth(config: NeetruConfig, outDir: string): Promise<string[]>;
3
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/scaffold/auth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6L1F"}