underpeaks-nxf 1.0.6 → 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":"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":"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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":"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"}
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;QAEpC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC,CAAA;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAA;QAE/C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;YAChD,OAAM;QACR,CAAC;QAED,CAAC;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,+DAA+D;YAC/D,8DAA8D;YAC9D,+DAA+D;YAC/D,8DAA8D;YAC9D,oBAAoB;YACpB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;gBAC5C,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;gBAC9B,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC,CAAA;YAC5D,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;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "underpeaks-nxf",
3
- "version": "1.0.6",
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
8
  "main": "dist/index.js",
9
9
  "types": "dist/index.d.ts",