underpeaks-nxf 1.0.5 → 1.0.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYnC,eAAO,MAAM,aAAa,SA6CtB,CAAA"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYnC,eAAO,MAAM,aAAa,SA4EtB,CAAA"}
@@ -30,16 +30,47 @@ exports.doctorCommand = new commander_1.Command('doctor')
30
30
  ? chalk_1.default.green(` ✓ Active project: ${creds.active_project_id}`)
31
31
  : chalk_1.default.yellow(' ⚠ No active project — run: nxf project switch <id>'));
32
32
  // Check API reachability
33
+ let apiReachable = false;
33
34
  try {
34
35
  const res = await (0, node_fetch_1.default)(`${creds.api_base}/api/codegen-private/health`);
35
- console.log(res.ok
36
+ apiReachable = res.ok;
37
+ console.log(apiReachable
36
38
  ? chalk_1.default.green(` ✓ API reachable: ${creds.api_base}`)
37
39
  : chalk_1.default.red(` ✗ API returned ${res.status}`));
38
40
  }
39
41
  catch {
40
42
  console.log(chalk_1.default.red(` ✗ API unreachable: ${creds.api_base}`));
41
43
  }
42
- // Check license expiry
44
+ // FIX: previously only checked the locally-stored expires_at date,
45
+ // which trusts credentials.json blindly — a revoked or suspended
46
+ // account would still show green until that date passed. Now calls
47
+ // the same license/validate route `nxf generate` itself relies on,
48
+ // so doctor reflects real, current server-side validity rather than
49
+ // a locally cached expiry timestamp. Only attempted if the API was
50
+ // reachable above, to avoid a confusing double failure message.
51
+ if (apiReachable && creds.license_key) {
52
+ try {
53
+ const res = await (0, node_fetch_1.default)(`${creds.api_base}/api/codegen-private/license/validate`, {
54
+ method: 'POST',
55
+ headers: {
56
+ 'Content-Type': 'application/json',
57
+ 'Authorization': `Bearer ${creds.license_key}`,
58
+ },
59
+ });
60
+ const data = await res.json();
61
+ if (res.ok && data.valid) {
62
+ console.log(chalk_1.default.green(' ✓ License valid'));
63
+ }
64
+ else {
65
+ console.log(chalk_1.default.red(` ✗ License invalid: ${data.error ?? 'Unknown reason'}`));
66
+ }
67
+ }
68
+ catch {
69
+ console.log(chalk_1.default.yellow(' ⚠ Could not verify license (network error)'));
70
+ }
71
+ }
72
+ // Check license expiry (informational — the live check above is
73
+ // authoritative; this just shows how much runway is left)
43
74
  if (creds.expires_at) {
44
75
  const expiresAt = new Date(creds.expires_at);
45
76
  const now = new Date();
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":";AAAA,+DAA+D;;;;;;AAE/D,yCAAmC;AACnC,kDAA+B;AAC/B,wDAAkC;AAClC,gDAA8B;AAC9B,4DAAoC;AAEpC,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAChC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,EAClD,MAAM,EACN,kBAAkB,CACnB,CAAA;AAEY,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAE3C,oBAAoB;IACpB,MAAM,cAAc,GAAG,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAC5D,OAAO,CAAC,GAAG,CAAC,cAAc;QACxB,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC;QAC3C,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAClD,CAAA;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAC,OAAM;IAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAEjD,uBAAuB;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB;QACjC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,uBAAuB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC/D,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CACvE,CAAA;IAED,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,6BAA6B,CAAC,CAAA;QACvE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChB,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,sBAAsB,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrD,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,MAAM,EAAE,CAAC,CAC9C,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,uBAAuB;IACvB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE,CAAA;QAC5B,MAAM,QAAQ,GAAI,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QAC3F,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC;YACtB,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,yBAAyB,QAAQ,YAAY,CAAC;YAC5D,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,sDAAsD,CAAC,CACpE,CAAA;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqBnC,eAAO,MAAM,eAAe,SAwDxB,CAAA"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiFnC,eAAO,MAAM,eAAe,SAgExB,CAAA"}
@@ -11,6 +11,7 @@ const ora_1 = __importDefault(require("ora"));
11
11
  const fs_extra_1 = __importDefault(require("fs-extra"));
12
12
  const path_1 = __importDefault(require("path"));
13
13
  const node_fetch_1 = __importDefault(require("node-fetch"));
14
+ const inquirer_1 = __importDefault(require("inquirer"));
14
15
  const CREDENTIALS_PATH = path_1.default.join(process.env.HOME ?? process.env.USERPROFILE ?? '~', '.nxf', 'credentials.json');
15
16
  async function getCredentials() {
16
17
  if (!await fs_extra_1.default.pathExists(CREDENTIALS_PATH)) {
@@ -19,9 +20,56 @@ async function getCredentials() {
19
20
  }
20
21
  return fs_extra_1.default.readJson(CREDENTIALS_PATH);
21
22
  }
23
+ // FIX: generation previously trusted creds.active_project_id silently — a
24
+ // user with multiple hosted projects who forgot to `nxf project switch`
25
+ // first would generate against the wrong project with no warning. Now,
26
+ // unless --project is explicitly passed, we always fetch the user's real
27
+ // project list and make them choose by name before generating.
28
+ async function resolveProjectId(creds, explicitProjectId) {
29
+ if (explicitProjectId)
30
+ return explicitProjectId;
31
+ const listSpinner = (0, ora_1.default)('Fetching your projects…').start();
32
+ let projects = [];
33
+ try {
34
+ const res = await (0, node_fetch_1.default)(`${creds.api_base}/api/codegen-private/projects`, {
35
+ headers: { 'Authorization': `Bearer ${creds.license_key}` },
36
+ });
37
+ if (!res.ok) {
38
+ listSpinner.fail(chalk_1.default.red('Failed to fetch your projects.'));
39
+ process.exit(1);
40
+ }
41
+ const data = await res.json();
42
+ projects = data.projects ?? [];
43
+ }
44
+ catch (err) {
45
+ listSpinner.fail(chalk_1.default.red(`Failed to fetch your projects: ${err.message}`));
46
+ process.exit(1);
47
+ }
48
+ listSpinner.stop();
49
+ if (projects.length === 0) {
50
+ console.error(chalk_1.default.red('\n No projects found on your account.\n'));
51
+ process.exit(1);
52
+ }
53
+ // Single project — no need to prompt, just confirm what's being used
54
+ if (projects.length === 1) {
55
+ console.log(chalk_1.default.dim(`\n Generating for project: ${chalk_1.default.white(projects[0].name)}\n`));
56
+ return projects[0].project_id;
57
+ }
58
+ const { selectedId } = await inquirer_1.default.prompt([
59
+ {
60
+ type: 'list',
61
+ name: 'selectedId',
62
+ message: 'Which project do you want to generate from?',
63
+ choices: projects.map((p) => ({ name: p.name, value: p.project_id })),
64
+ },
65
+ ]);
66
+ console.log('');
67
+ return selectedId;
68
+ }
22
69
  exports.generateCommand = new commander_1.Command('generate')
23
70
  .description('Generate Flutter or Next.js code from your CMS models')
24
71
  .argument('<target>', 'Target framework: flutter or nextjs')
72
+ .option('--project <id>', 'Project ID to generate from (skips the project picker)')
25
73
  .option('--model <name>', 'Regenerate a specific model only')
26
74
  .option('--models <names>', 'Regenerate multiple models (comma-separated)')
27
75
  .option('--page <name>', 'Regenerate a specific page only')
@@ -34,6 +82,7 @@ exports.generateCommand = new commander_1.Command('generate')
34
82
  process.exit(1);
35
83
  }
36
84
  const creds = await getCredentials();
85
+ const projectId = await resolveProjectId(creds, options.project);
37
86
  const outDir = path_1.default.resolve(options.out ?? './nxf-output');
38
87
  const spinner = (0, ora_1.default)(`Generating ${target} code…`).start();
39
88
  try {
@@ -44,7 +93,7 @@ exports.generateCommand = new commander_1.Command('generate')
44
93
  'Authorization': `Bearer ${creds.license_key}`,
45
94
  },
46
95
  body: JSON.stringify({
47
- project_id: creds.active_project_id,
96
+ project_id: projectId,
48
97
  state_manager: options.state ?? 'riverpod',
49
98
  filter_models: options.models
50
99
  ? options.models.split(',').map((m) => m.trim())
@@ -59,8 +108,12 @@ exports.generateCommand = new commander_1.Command('generate')
59
108
  spinner.fail(chalk_1.default.red(`Generation failed: ${err.error ?? 'Unknown error'}`));
60
109
  process.exit(1);
61
110
  }
62
- // Stream zip response to disk
63
- const buffer = await res.buffer();
111
+ // FIX: node-fetch@3 removed .buffer() (a v2-only convenience method).
112
+ // The correct v3 API is .arrayBuffer(), wrapped in Buffer.from() before
113
+ // writing to disk. Without this fix, every successful generation would
114
+ // have thrown "res.buffer is not a function" right at the finish line.
115
+ const arrayBuffer = await res.arrayBuffer();
116
+ const buffer = Buffer.from(arrayBuffer);
64
117
  await fs_extra_1.default.ensureDir(outDir);
65
118
  const zipPath = path_1.default.join(outDir, `${target}-${Date.now()}.zip`);
66
119
  await fs_extra_1.default.writeFile(zipPath, buffer);
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":";AAAA,iEAAiE;;;;;;AAEjE,yCAAmC;AACnC,kDAA+B;AAC/B,8CAA6B;AAC7B,wDAAkC;AAClC,gDAA8B;AAC9B,4DAAoC;AACpC,wDAAkC;AAElC,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAChC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,EAClD,MAAM,EACN,kBAAkB,CACnB,CAAA;AAOD,KAAK,UAAU,cAAc;IAC3B,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AACtC,CAAC;AAED,0EAA0E;AAC1E,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,+DAA+D;AAC/D,KAAK,UAAU,gBAAgB,CAAC,KAAU,EAAE,iBAA0B;IACpE,IAAI,iBAAiB;QAAE,OAAO,iBAAiB,CAAA;IAE/C,MAAM,WAAW,GAAG,IAAA,aAAG,EAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAA;IAC1D,IAAI,QAAQ,GAAqB,EAAE,CAAA;IAEnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,+BAA+B,EAAE;YACxE,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE;SAC5D,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,WAAW,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAA;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAA;QACpC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA;IAChC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,WAAW,CAAC,IAAI,EAAE,CAAA;IAElB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,qEAAqE;IACrE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,+BAA+B,eAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACxF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAC/B,CAAC;IAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;QAC3C;YACE,IAAI,EAAK,MAAM;YACf,IAAI,EAAK,YAAY;YACrB,OAAO,EAAE,6CAA6C;YACtD,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;SACtE;KACF,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,UAAU,CAAA;AACnB,CAAC;AAEY,QAAA,eAAe,GAAG,IAAI,mBAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,uDAAuD,CAAC;KACpE,QAAQ,CAAC,UAAU,EAAE,qCAAqC,CAAC;KAC3D,MAAM,CAAC,gBAAgB,EAAK,wDAAwD,CAAC;KACrF,MAAM,CAAC,gBAAgB,EAAK,kCAAkC,CAAC;KAC/D,MAAM,CAAC,kBAAkB,EAAG,8CAA8C,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAM,iCAAiC,CAAC;KAC9D,MAAM,CAAC,iBAAiB,EAAI,6CAA6C,CAAC;KAC1E,MAAM,CAAC,aAAa,EAAQ,0CAA0C,CAAC;KACvE,MAAM,CAAC,mBAAmB,EAAE,kEAAkE,CAAC;KAC/F,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAY,EAAE,EAAE;IAC7C,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,uBAAuB,MAAM,4BAA4B,CAAC,CAAC,CAAA;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,KAAK,GAAO,MAAM,cAAc,EAAE,CAAA;IACxC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAI,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,cAAc,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,cAAc,MAAM,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAA;IAEzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,iCAAiC,MAAM,EAAE,EAAE;YAClF,MAAM,EAAG,MAAM;YACf,OAAO,EAAE;gBACP,cAAc,EAAG,kBAAkB;gBACnC,eAAe,EAAE,UAAU,KAAK,CAAC,WAAW,EAAE;aAC/C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAO,SAAS;gBAC1B,aAAa,EAAI,OAAO,CAAC,KAAK,IAAI,UAAU;gBAC5C,aAAa,EAAI,OAAO,CAAC,MAAM;oBAC7B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACxD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC1C,YAAY,EAAK,OAAO,CAAC,KAAK;oBAC5B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;aACzC,CAAC;SACH,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAA;YACnC,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC,CAAA;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,sEAAsE;QACtE,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAA;QAC3C,MAAM,MAAM,GAAS,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAE7C,MAAM,kBAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC1B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAChE,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAEnC,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,MAAM,aAAa,CAAC,CAAC,CAAA;IAC7E,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAQ,WAAW,CAAA;AAgBrC,eAAO,MAAM,YAAY,SA+CrB,CAAA"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAQ,WAAW,CAAA;AA2FrC,eAAO,MAAM,YAAY,SA2BrB,CAAA"}
@@ -6,49 +6,91 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.loginCommand = void 0;
8
8
  const commander_1 = require("commander");
9
- const inquirer_1 = __importDefault(require("inquirer"));
10
9
  const chalk_1 = __importDefault(require("chalk"));
11
10
  const ora_1 = __importDefault(require("ora"));
12
11
  const fs_extra_1 = __importDefault(require("fs-extra"));
13
12
  const path_1 = __importDefault(require("path"));
14
- const node_fetch_1 = __importDefault(require("node-fetch"));
13
+ const http_1 = __importDefault(require("http"));
14
+ const open_1 = __importDefault(require("open"));
15
15
  const CREDENTIALS_PATH = path_1.default.join(process.env.HOME ?? process.env.USERPROFILE ?? '~', '.nxf', 'credentials.json');
16
16
  const API_BASE = process.env.NXF_API_URL ?? 'https://studio.underpeaks.com';
17
+ /**
18
+ * Starts a short-lived local HTTP server on a random free port, opens the
19
+ * user's browser to Studio's /cli-auth page, and waits for that page to
20
+ * POST the resolved credentials back to /callback. Mirrors the pattern
21
+ * used by the GitHub/Vercel/Firebase CLIs — no license key is ever typed
22
+ * or copy-pasted by the user.
23
+ */
24
+ function waitForCallback() {
25
+ return new Promise((resolve, reject) => {
26
+ const server = http_1.default.createServer((req, res) => {
27
+ if (req.method === 'OPTIONS') {
28
+ res.writeHead(204, {
29
+ 'Access-Control-Allow-Origin': '*',
30
+ 'Access-Control-Allow-Methods': 'POST',
31
+ 'Access-Control-Allow-Headers': 'Content-Type',
32
+ });
33
+ res.end();
34
+ return;
35
+ }
36
+ if (req.method !== 'POST' || req.url !== '/callback') {
37
+ res.writeHead(404);
38
+ res.end();
39
+ return;
40
+ }
41
+ let body = '';
42
+ req.on('data', (chunk) => { body += chunk; });
43
+ req.on('end', () => {
44
+ res.writeHead(200, {
45
+ 'Content-Type': 'application/json',
46
+ 'Access-Control-Allow-Origin': '*',
47
+ });
48
+ res.end(JSON.stringify({ success: true }));
49
+ try {
50
+ const payload = JSON.parse(body);
51
+ server.close();
52
+ resolve(payload);
53
+ }
54
+ catch (err) {
55
+ server.close();
56
+ reject(new Error('Received malformed response from Studio'));
57
+ }
58
+ });
59
+ });
60
+ server.listen(0, '127.0.0.1', () => {
61
+ const { port } = server.address();
62
+ const callbackUrl = `http://127.0.0.1:${port}/callback`;
63
+ const authUrl = `${API_BASE}/cli-auth?callback=${encodeURIComponent(callbackUrl)}`;
64
+ (0, open_1.default)(authUrl).catch(() => {
65
+ console.log(chalk_1.default.dim(`\n Could not open your browser automatically. Visit:\n ${authUrl}\n`));
66
+ });
67
+ });
68
+ // Don't hang forever if the user never completes the browser flow.
69
+ const timeout = setTimeout(() => {
70
+ server.close();
71
+ reject(new Error('Login timed out after 5 minutes. Run `nxf login` again.'));
72
+ }, 5 * 60 * 1000);
73
+ server.on('close', () => clearTimeout(timeout));
74
+ });
75
+ }
17
76
  exports.loginCommand = new commander_1.Command('login')
18
- .description('Authenticate with your Underpeaks license key')
77
+ .description('Authenticate with your Underpeaks account')
19
78
  .action(async () => {
20
79
  console.log(chalk_1.default.cyan('\n Underpeaks CLI\n'));
21
- const { licenseKey } = await inquirer_1.default.prompt([
22
- {
23
- type: 'password',
24
- name: 'licenseKey',
25
- message: 'Enter your Underpeaks license key:',
26
- mask: '*',
27
- validate: (v) => v.trim().length > 0 || 'License key is required',
28
- },
29
- ]);
30
- const spinner = (0, ora_1.default)('Validating license key…').start();
80
+ console.log(chalk_1.default.dim(' Opening your browser to sign in…\n'));
81
+ const spinner = (0, ora_1.default)('Waiting for you to finish signing in…').start();
31
82
  try {
32
- const res = await (0, node_fetch_1.default)(`${API_BASE}/api/codegen-private/license/validate`, {
33
- method: 'POST',
34
- headers: { 'Content-Type': 'application/json' },
35
- body: JSON.stringify({ license_key: licenseKey.trim() }),
36
- });
37
- const data = await res.json();
38
- if (!res.ok || !data.valid) {
39
- spinner.fail(chalk_1.default.red('Invalid or expired license key.'));
40
- process.exit(1);
41
- }
83
+ const payload = await waitForCallback();
42
84
  await fs_extra_1.default.ensureDir(path_1.default.dirname(CREDENTIALS_PATH));
43
85
  await fs_extra_1.default.writeJson(CREDENTIALS_PATH, {
44
- license_key: licenseKey.trim(),
45
- user_id: data.user_id,
46
- plan: data.plan,
47
- active_project_id: data.active_project_id,
48
- expires_at: data.expires_at,
86
+ license_key: payload.license_key,
87
+ user_id: payload.user_id,
88
+ plan: payload.plan,
89
+ active_project_id: payload.active_project_id ?? null,
90
+ expires_at: payload.expires_at ?? null,
49
91
  api_base: API_BASE,
50
92
  }, { spaces: 2 });
51
- spinner.succeed(chalk_1.default.green(`Logged in. Plan: ${data.plan}`));
93
+ spinner.succeed(chalk_1.default.green(`Logged in. Plan: ${payload.plan}`));
52
94
  console.log(chalk_1.default.dim(` Credentials saved to ${CREDENTIALS_PATH}\n`));
53
95
  }
54
96
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,eAAO,MAAM,cAAc,SA2CxB,CAAA"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,eAAO,MAAM,cAAc,SAgExB,CAAA"}
@@ -28,16 +28,34 @@ exports.projectCommand = new commander_1.Command('project')
28
28
  headers: { Authorization: `Bearer ${creds.license_key}` },
29
29
  });
30
30
  const data = await res.json();
31
+ if (!res.ok) {
32
+ spinner.fail(chalk_1.default.red(`Failed: ${data.error ?? 'Unknown error'}`));
33
+ process.exit(1);
34
+ }
31
35
  spinner.stop();
32
36
  console.log(chalk_1.default.cyan('\n Your projects:\n'));
37
+ if ((data.projects ?? []).length === 0) {
38
+ console.log(chalk_1.default.dim(' No projects found.\n'));
39
+ return;
40
+ }
41
+ ;
33
42
  (data.projects ?? []).forEach((p) => {
34
43
  const active = p.project_id === creds.active_project_id ? chalk_1.default.green(' ← active') : '';
35
- console.log(` ${chalk_1.default.white(p.name)}${active}`);
44
+ // FIX: projects/route.ts now returns a `role` on every project
45
+ // ('owner', or the caller's actual team role) — surface it so
46
+ // the user can tell at a glance which projects they own versus
47
+ // have team access to. Previously this field didn't exist and
48
+ // wasn't displayed.
49
+ const roleLabel = p.role && p.role !== 'owner'
50
+ ? chalk_1.default.yellow(` [${p.role}]`)
51
+ : chalk_1.default.dim(' [owner]');
52
+ console.log(` ${chalk_1.default.white(p.name)}${roleLabel}${active}`);
36
53
  console.log(chalk_1.default.dim(` ${p.project_id}\n`));
37
54
  });
38
55
  }
39
56
  catch (err) {
40
57
  spinner.fail(chalk_1.default.red(`Failed: ${err.message}`));
58
+ process.exit(1);
41
59
  }
42
60
  }))
43
61
  .addCommand(new commander_1.Command('switch')
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;;AAEhE,yCAAmC;AACnC,kDAA+B;AAC/B,8CAA6B;AAC7B,wDAAkC;AAClC,gDAA8B;AAC9B,4DAAoC;AAEpC,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAChC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,EAClD,MAAM,EACN,kBAAkB,CACnB,CAAA;AAEY,QAAA,cAAc,GAAG,IAAI,mBAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,4BAA4B,CAAC;KACzC,UAAU,CACT,IAAI,mBAAO,CAAC,MAAM,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAK,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IACnD,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAA;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAI,MAAM,IAAA,oBAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,+BAA+B,EAAE;YACzE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE;SAC1D,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAA;QACpC,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAC9C;QAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACvF,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,CAAA;YAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAC,CACL;KACA,UAAU,CACT,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAClB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,EAAE;IAClC,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IACjD,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAA;IACnC,MAAM,kBAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;IAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mCAAmC,SAAS,IAAI,CAAC,CAAC,CAAA;AAC5E,CAAC,CAAC,CACL,CAAA"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,36 +1,39 @@
1
1
  {
2
2
  "name": "underpeaks-nxf",
3
- "version": "1.0.5",
3
+ "version": "1.0.8",
4
4
  "description": "Underpeaks CLI — generate Flutter and Next.js code from your CMS models",
5
5
  "bin": {
6
- "nxf": "./dist/index.js"
6
+ "nxf": "dist/index.js"
7
7
  },
8
- "main": "dist/index.js",
9
- "types": "dist/index.d.ts",
10
- "files": ["dist", "README.md"],
11
-
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
12
14
  "scripts": {
13
15
  "build": "tsc",
14
- "dev": "tsc --watch",
16
+ "dev": "tsc --watch",
15
17
  "clean": "rm -rf dist"
16
18
  },
17
19
  "dependencies": {
18
- "commander": "^11.0.0",
19
- "chalk": "^5.3.0",
20
- "ora": "^7.0.1",
21
- "inquirer": "^9.2.0",
20
+ "archiver": "^6.0.0",
21
+ "chalk": "^5.3.0",
22
+ "commander": "^11.0.0",
23
+ "fs-extra": "^11.1.0",
24
+ "inquirer": "^9.2.0",
22
25
  "node-fetch": "^3.3.0",
23
- "archiver": "^6.0.0",
24
- "fs-extra": "^11.1.0"
26
+ "open": "^8.4.2",
27
+ "ora": "^7.0.1"
25
28
  },
26
29
  "devDependencies": {
27
- "typescript": "^5.0.0",
28
- "@types/node": "^20.0.0",
29
- "@types/fs-extra": "^11.0.0",
30
30
  "@types/archiver": "^6.0.0",
31
- "@types/inquirer": "^9.0.0"
31
+ "@types/fs-extra": "^11.0.0",
32
+ "@types/inquirer": "^9.0.0",
33
+ "@types/node": "^20.0.0",
34
+ "typescript": "^5.0.0"
32
35
  },
33
36
  "engines": {
34
37
  "node": ">=18.0.0"
35
38
  }
36
- }
39
+ }