@fluixi/cli 0.1.0-alpha.82 → 0.1.0-alpha.83

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 (57) hide show
  1. package/README.md +21 -3
  2. package/dist/add.cjs +590 -0
  3. package/dist/add.d.ts +10 -0
  4. package/dist/add.d.ts.map +1 -0
  5. package/dist/add.js +107 -0
  6. package/dist/add.mjs +562 -0
  7. package/dist/check.cjs +102 -0
  8. package/dist/check.d.ts +13 -0
  9. package/dist/check.d.ts.map +1 -0
  10. package/dist/check.js +88 -0
  11. package/dist/check.mjs +76 -0
  12. package/dist/cli.cjs +977 -78
  13. package/dist/cli.js +44 -2
  14. package/dist/cli.mjs +976 -77
  15. package/dist/doctor.cjs +119 -0
  16. package/dist/doctor.d.ts +13 -0
  17. package/dist/doctor.d.ts.map +1 -0
  18. package/dist/doctor.js +114 -0
  19. package/dist/doctor.mjs +92 -0
  20. package/dist/generate.cjs +614 -65
  21. package/dist/generate.d.ts.map +1 -1
  22. package/dist/generate.js +118 -48
  23. package/dist/generate.mjs +619 -64
  24. package/dist/index.cjs +1 -1
  25. package/dist/index.mjs +1 -1
  26. package/dist/report.cjs +54 -0
  27. package/dist/report.d.ts +5 -0
  28. package/dist/report.d.ts.map +1 -0
  29. package/dist/report.js +31 -0
  30. package/dist/report.mjs +28 -0
  31. package/dist/scaffold/auth.cjs +422 -0
  32. package/dist/scaffold/auth.d.ts +39 -0
  33. package/dist/scaffold/auth.d.ts.map +1 -0
  34. package/dist/scaffold/auth.js +137 -0
  35. package/dist/scaffold/auth.mjs +389 -0
  36. package/dist/scaffold/edit.cjs +153 -0
  37. package/dist/scaffold/edit.d.ts +35 -0
  38. package/dist/scaffold/edit.d.ts.map +1 -0
  39. package/dist/scaffold/edit.js +140 -0
  40. package/dist/scaffold/edit.mjs +124 -0
  41. package/dist/scaffold/index.cjs +610 -0
  42. package/dist/scaffold/index.d.ts +10 -0
  43. package/dist/scaffold/index.d.ts.map +1 -0
  44. package/dist/scaffold/index.js +9 -0
  45. package/dist/scaffold/index.mjs +569 -0
  46. package/dist/scaffold/prompt.cjs +108 -0
  47. package/dist/scaffold/prompt.d.ts +9 -0
  48. package/dist/scaffold/prompt.d.ts.map +1 -0
  49. package/dist/scaffold/prompt.js +95 -0
  50. package/dist/scaffold/prompt.mjs +81 -0
  51. package/dist/scaffold/templates.cjs +274 -0
  52. package/dist/scaffold/templates.d.ts +26 -0
  53. package/dist/scaffold/templates.d.ts.map +1 -0
  54. package/dist/scaffold/templates.js +216 -0
  55. package/dist/scaffold/templates.mjs +229 -0
  56. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  57. package/package.json +19 -3
package/dist/cli.js CHANGED
@@ -1,9 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { loadConfig } from '@fluixi/start/config';
3
- import { dev, build, start } from '@fluixi/start/commands';
3
+ import { dev, build, start, env, envReport, info } from '@fluixi/start/commands';
4
4
  import { wordmark, c } from '@fluixi/start/ui';
5
5
  import { generate } from './generate.js';
6
+ import { add } from './add.js';
6
7
  import { startMismatch } from './start-copy.js';
8
+ import { check } from './check.js';
9
+ import { diagnose, resolvedVersions } from './doctor.js';
7
10
  function usage() {
8
11
  const cmd = (name, desc) => ` ${c.cyan(name.padEnd(25))}${c.gray(desc)}`;
9
12
  return [
@@ -16,7 +19,12 @@ function usage() {
16
19
  cmd('build', 'build the client + server bundles for production'),
17
20
  cmd('build --format=web-component', 'build custom elements as portable files'),
18
21
  cmd('start', 'run the production SSR server (after build)'),
19
- cmd('generate <kind> <name>', 'scaffold a component / route / middleware / auth ' + c.dim('(alias: g)')),
22
+ cmd('generate <kind> <name>', 'scaffold code, see fluixi g --help ' + c.dim('(alias: g)')),
23
+ cmd('add auth', 'set up authentication: asks, writes, installs'),
24
+ cmd('check [--strict]', 'env and auth rules over the project, for CI'),
25
+ cmd('env', 'declared and set variables, secrets that would ship, env types'),
26
+ cmd('doctor', 'duplicate packages, editor plugin, env problems'),
27
+ cmd('info', 'versions, adapter, modules, page and API routes'),
20
28
  '',
21
29
  ` ${c.gray('New project:')} ${c.cyan('npm create fluixi')} ${c.gray('<dir>')}`,
22
30
  '',
@@ -33,6 +41,16 @@ async function main() {
33
41
  generate(process.argv[3], process.argv[4]);
34
42
  return;
35
43
  }
44
+ // add works on the local files, like generate.
45
+ if (cmd === 'add') {
46
+ await add(process.argv[3], process.argv.slice(3));
47
+ return;
48
+ }
49
+ // check reads tsconfig and the sources, never the app config.
50
+ if (cmd === 'check') {
51
+ process.exitCode = check(process.cwd(), process.argv.includes('--strict'));
52
+ return;
53
+ }
36
54
  const config = await loadConfig();
37
55
  const mismatch = startMismatch(process.cwd(), import.meta.url);
38
56
  if (mismatch) {
@@ -57,12 +75,36 @@ async function main() {
57
75
  case 'start':
58
76
  await start(config);
59
77
  break;
78
+ case 'env':
79
+ process.exitCode = await env(config);
80
+ break;
81
+ case 'info':
82
+ await info(config, resolvedVersions(config.root ?? process.cwd()));
83
+ break;
84
+ case 'doctor':
85
+ process.exitCode = await doctor(config);
86
+ break;
60
87
  default:
61
88
  console.error(`\n ${c.red('✗')} Unknown command: ${c.bold(cmd)}`);
62
89
  console.log(usage());
63
90
  process.exit(1);
64
91
  }
65
92
  }
93
+ async function doctor(config) {
94
+ const problems = diagnose(config.root ?? process.cwd());
95
+ const r = await envReport(config);
96
+ for (const n of r.secretPublic)
97
+ problems.push({ severity: 'error', message: `${n} is in env.public and reads like a secret` });
98
+ for (const e of r.exposed)
99
+ problems.push({ severity: 'error', message: `${e.name} in ${e.file} carries the client prefix, so Vite ships it` });
100
+ for (const p of r.public.filter((p) => !p.set))
101
+ problems.push({ severity: 'warning', message: `${p.name} is in env.public and not set` });
102
+ for (const n of r.missing)
103
+ problems.push({ severity: 'warning', message: `${n} is in .env.example and not set locally` });
104
+ const lines = problems.map((p) => ` ${p.severity === 'error' ? c.red('✗') : c.yellow('!')} ${p.message}`);
105
+ console.log(['', ...(lines.length ? lines : [` ${c.green('✓')} nothing to report`]), ''].join('\n'));
106
+ return problems.some((p) => p.severity === 'error') ? 1 : 0;
107
+ }
66
108
  main().catch((e) => {
67
109
  console.error(`\n ${c.red('✗')} ${e?.message ?? e}\n`);
68
110
  process.exit(1);