seamless-cli 0.10.2 → 0.11.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 (80) hide show
  1. package/README.md +197 -29
  2. package/dist/commands/apps.js +147 -0
  3. package/dist/commands/apps.js.map +1 -0
  4. package/dist/commands/config.js +16 -15
  5. package/dist/commands/config.js.map +1 -1
  6. package/dist/commands/help.js +65 -187
  7. package/dist/commands/help.js.map +1 -1
  8. package/dist/commands/helpTopics.js +376 -0
  9. package/dist/commands/helpTopics.js.map +1 -0
  10. package/dist/commands/init.js +295 -76
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/instanceLogin.js +55 -0
  13. package/dist/commands/instanceLogin.js.map +1 -0
  14. package/dist/commands/login.js +42 -80
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.js +18 -8
  17. package/dist/commands/logout.js.map +1 -1
  18. package/dist/commands/org.js +5 -4
  19. package/dist/commands/org.js.map +1 -1
  20. package/dist/commands/profile.js +29 -2
  21. package/dist/commands/profile.js.map +1 -1
  22. package/dist/commands/sessions.js +9 -7
  23. package/dist/commands/sessions.js.map +1 -1
  24. package/dist/commands/templates.js +58 -0
  25. package/dist/commands/templates.js.map +1 -0
  26. package/dist/commands/users.js +9 -7
  27. package/dist/commands/users.js.map +1 -1
  28. package/dist/commands/verify.js +5 -2
  29. package/dist/commands/verify.js.map +1 -1
  30. package/dist/commands/whoami.js +13 -5
  31. package/dist/commands/whoami.js.map +1 -1
  32. package/dist/core/args.js +11 -0
  33. package/dist/core/args.js.map +1 -1
  34. package/dist/core/authClient.js +29 -6
  35. package/dist/core/authClient.js.map +1 -1
  36. package/dist/core/cancel.js +32 -0
  37. package/dist/core/cancel.js.map +1 -0
  38. package/dist/core/config.js +45 -1
  39. package/dist/core/config.js.map +1 -1
  40. package/dist/core/confirmAction.js +26 -0
  41. package/dist/core/confirmAction.js.map +1 -0
  42. package/dist/core/images.js +3 -3
  43. package/dist/core/interactiveLogin.js +72 -0
  44. package/dist/core/interactiveLogin.js.map +1 -0
  45. package/dist/core/output.js +23 -9
  46. package/dist/core/output.js.map +1 -1
  47. package/dist/core/portal.js +112 -8
  48. package/dist/core/portal.js.map +1 -1
  49. package/dist/core/templates.js +10 -0
  50. package/dist/core/templates.js.map +1 -1
  51. package/dist/core/tty.js +25 -0
  52. package/dist/core/tty.js.map +1 -0
  53. package/dist/generators/auth/auth.js +8 -7
  54. package/dist/generators/auth/auth.js.map +1 -1
  55. package/dist/generators/docker/docker.js +27 -21
  56. package/dist/generators/docker/docker.js.map +1 -1
  57. package/dist/index.js +89 -21
  58. package/dist/index.js.map +1 -1
  59. package/dist/prompts/appSelect.js +16 -10
  60. package/dist/prompts/appSelect.js.map +1 -1
  61. package/dist/prompts/initMode.js +77 -0
  62. package/dist/prompts/initMode.js.map +1 -0
  63. package/dist/prompts/oauthSetup.js +4 -3
  64. package/dist/prompts/oauthSetup.js.map +1 -1
  65. package/dist/prompts/projectSetup.js +77 -50
  66. package/dist/prompts/projectSetup.js.map +1 -1
  67. package/dist/testSetup.js +9 -0
  68. package/dist/testSetup.js.map +1 -0
  69. package/package.json +1 -1
  70. package/verify/adapter-app/package.json +1 -1
  71. package/verify/docker-compose.verify.yml +4 -3
  72. package/verify/harness/api/ownerAdmin.spec.ts +24 -0
  73. package/verify/harness/lib/env.ts +3 -4
  74. package/verify/harness/lib/flows.ts +1 -36
  75. package/verify/harness/playwright.config.ts +8 -3
  76. package/dist/commands/bootstrapAdmin.js +0 -96
  77. package/dist/commands/bootstrapAdmin.js.map +0 -1
  78. package/dist/core/bootstrapSecret.js +0 -39
  79. package/dist/core/bootstrapSecret.js.map +0 -1
  80. package/verify/harness/api/adminBootstrap.spec.ts +0 -34
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/generators/docker/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/generators/docker/docker.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { runCLI } from "./commands/init.js";
3
- import { extractFlag } from "./core/args.js";
3
+ import { extractFlag, hasHelpFlag } from "./core/args.js";
4
4
  import { runCheck } from "./commands/check.js";
5
- import { printHelp } from "./commands/help.js";
5
+ import { printCommandHelp, printHelp } from "./commands/help.js";
6
+ import { COMMANDS } from "./commands/helpTopics.js";
6
7
  import pkg from "../package.json" with { type: "json" };
7
- import { runBootstrapAdmin } from "./commands/bootstrapAdmin.js";
8
8
  import { runVerify } from "./commands/verify.js";
9
9
  import { runProfile } from "./commands/profile.js";
10
10
  import { runLogin } from "./commands/login.js";
@@ -14,6 +14,10 @@ import { runSessions } from "./commands/sessions.js";
14
14
  import { runConfig } from "./commands/config.js";
15
15
  import { runUsers } from "./commands/users.js";
16
16
  import { runOrg } from "./commands/org.js";
17
+ import { runApps } from "./commands/apps.js";
18
+ import { runTemplates } from "./commands/templates.js";
19
+ import { isCancelled } from "./core/cancel.js";
20
+ import kleur from "kleur";
17
21
  export const VERSION = pkg.version;
18
22
  const args = process.argv.slice(2);
19
23
  const command = args[0];
@@ -30,28 +34,33 @@ async function main() {
30
34
  console.log(VERSION);
31
35
  return;
32
36
  }
37
+ // `seamless help [command]` is the spelled-out form of `--help`.
38
+ if (command === "help") {
39
+ const topic = args[1];
40
+ if (!topic) {
41
+ printHelp();
42
+ return;
43
+ }
44
+ if (printCommandHelp(topic))
45
+ return;
46
+ unknownCommand(topic);
47
+ return;
48
+ }
49
+ // Every command answers -h / --help itself, ahead of its own arg parsing.
50
+ if (COMMANDS.includes(command) && hasHelpFlag(args.slice(1))) {
51
+ printCommandHelp(command);
52
+ return;
53
+ }
33
54
  if (command === "init") {
34
- const profileFlag = extractFlag(args.slice(1), "profile");
35
- const appFlag = extractFlag(profileFlag.rest, "app");
36
- const rest = appFlag.rest;
37
- const local = rest.includes("--local");
38
- const aliases = rest
39
- .filter((a) => a.startsWith("--") && a !== "--local")
40
- .map((a) => a.replace(/^--+/, ""));
41
- const projectName = rest.find((a) => !a.startsWith("--"));
42
- await runCLI(projectName, aliases, {
43
- profileFlag: profileFlag.value,
44
- appId: appFlag.value,
45
- local,
46
- });
55
+ await runCLI(...parseInitArgs(args.slice(1)));
47
56
  return;
48
57
  }
49
- if (command === "check") {
50
- await runCheck();
58
+ if (command === "templates") {
59
+ await runTemplates(args.slice(1));
51
60
  return;
52
61
  }
53
- if (command === "bootstrap-admin") {
54
- await runBootstrapAdmin(args.slice(1));
62
+ if (command === "check") {
63
+ await runCheck();
55
64
  return;
56
65
  }
57
66
  if (command === "verify") {
@@ -90,9 +99,68 @@ async function main() {
90
99
  await runOrg(args.slice(1));
91
100
  return;
92
101
  }
93
- await runCLI(command);
102
+ if (command === "apps") {
103
+ await runApps(args.slice(1));
104
+ return;
105
+ }
106
+ unknownCommand(command);
107
+ }
108
+ // Flags init handles itself rather than passing through as a template flag.
109
+ // Anything else starting with `--` is a template id or alias, which is what
110
+ // keeps adding a template to the registry from needing code here.
111
+ const INIT_SWITCHES = new Set(["--local", "--yes", "-y", "--force"]);
112
+ // init's arguments, as the runCLI(projectName, aliases, opts) triple. Only
113
+ // splits them up: which values are valid is settled in init.ts, against the
114
+ // registry, before anything is written.
115
+ export function parseInitArgs(args) {
116
+ const valued = ["profile", "app", "web", "api", "email", "auth", "admin"];
117
+ const values = {};
118
+ let rest = args;
119
+ for (const name of valued) {
120
+ const extracted = extractFlag(rest, name);
121
+ values[name] = extracted.value;
122
+ rest = extracted.rest;
123
+ }
124
+ const aliases = rest
125
+ .filter((a) => a.startsWith("--") && !INIT_SWITCHES.has(a))
126
+ .map((a) => a.replace(/^--+/, ""));
127
+ const projectName = rest.find((a) => !a.startsWith("-"));
128
+ return [
129
+ projectName,
130
+ aliases,
131
+ {
132
+ profileFlag: values.profile,
133
+ appId: values.app,
134
+ web: values.web,
135
+ api: values.api,
136
+ email: values.email,
137
+ auth: values.auth,
138
+ admin: values.admin,
139
+ local: rest.includes("--local"),
140
+ yes: rest.includes("--yes") || rest.includes("-y"),
141
+ force: rest.includes("--force"),
142
+ },
143
+ ];
144
+ }
145
+ // An unrecognized command used to be treated as a project name and scaffolded,
146
+ // which made every typo create a directory with no indication the command was
147
+ // not understood. Scaffolding is `init` and nothing else.
148
+ function unknownCommand(name) {
149
+ console.error(kleur.red(`Unknown command "${name}".`));
150
+ if (!name.startsWith("-")) {
151
+ console.error(kleur.dim("To scaffold a project, run: ") +
152
+ kleur.cyan(`seamless init ${name}`));
153
+ }
154
+ console.error(kleur.dim(`Commands: ${COMMANDS.join(", ")}`));
155
+ console.error(kleur.dim("Run seamless --help, or seamless <command> --help, for details."));
156
+ process.exit(1);
94
157
  }
95
158
  main().catch((err) => {
159
+ if (isCancelled(err)) {
160
+ console.log(err.message);
161
+ // 130 is the conventional exit status for a command ended by Ctrl-C.
162
+ process.exit(130);
163
+ }
96
164
  console.error("Error:", err.message);
97
165
  process.exit(1);
98
166
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAoB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7C,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,iEAAiE;IACjE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,IAAI,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO;QACpC,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,4EAA4E;AAC5E,4EAA4E;AAC5E,kEAAkE;AAClE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAErE,2EAA2E;AAC3E,4EAA4E;AAC5E,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAC3B,IAAc;IAEd,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzD,OAAO;QACL,WAAW;QACX,OAAO;QACP;YACE,WAAW,EAAE,MAAM,CAAC,OAAO;YAC3B,KAAK,EAAE,MAAM,CAAC,GAAG;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC/B,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;SAChC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,8EAA8E;AAC9E,0DAA0D;AAC1D,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAC7E,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,qEAAqE;QACrE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,4 +1,7 @@
1
- import { select, isCancel, cancel } from "@clack/prompts";
1
+ import { select } from "@clack/prompts";
2
+ import { orCancel } from "../core/cancel.js";
3
+ import { requireInteractive } from "../core/tty.js";
4
+ import { resolveAppInstanceUrl } from "../core/portal.js";
2
5
  export class NoApplicationsError extends Error {
3
6
  constructor() {
4
7
  super("No managed applications are available for this account. Create one at https://dashboard.seamlessauth.com, then run init again.");
@@ -7,7 +10,9 @@ export class NoApplicationsError extends Error {
7
10
  }
8
11
  // Resolves which managed application the scaffold connects to. `--app` matches an
9
12
  // id or infra id; a single application is auto-selected; otherwise the developer
10
- // picks. Returns null only when an interactive selection is cancelled.
13
+ // picks. Cancelling throws CancelledError, so init can unwind what it created.
14
+ // Generic over the app type so a caller that has already narrowed to applications
15
+ // with a resolvable instance URL keeps that guarantee on the selected one.
11
16
  export async function selectApplication(apps, preselectId) {
12
17
  if (apps.length === 0) {
13
18
  throw new NoApplicationsError();
@@ -21,21 +26,22 @@ export async function selectApplication(apps, preselectId) {
21
26
  return found;
22
27
  }
23
28
  if (apps.length === 1) {
24
- console.log(`Managed application: ${apps[0].name} (${apps[0].domain})`);
29
+ console.log(`Managed application: ${apps[0].name} (${resolveAppInstanceUrl(apps[0])})`);
25
30
  return apps[0];
26
31
  }
27
- const choice = await select({
32
+ requireInteractive("Which managed application should this project connect to?", "Pass --app <id> to name one (see `seamless apps list`).");
33
+ const choice = orCancel(await select({
28
34
  message: "Which managed application should this project connect to?",
29
35
  options: apps.map((a) => ({
30
36
  value: a.id,
31
37
  label: a.name,
32
- hint: a.domain,
38
+ hint: resolveAppInstanceUrl(a),
33
39
  })),
34
- });
35
- if (isCancel(choice)) {
36
- cancel("Cancelled.");
37
- return null;
40
+ }));
41
+ const chosen = apps.find((a) => a.id === choice);
42
+ if (!chosen) {
43
+ throw new Error(`Selected application "${String(choice)}" is no longer available.`);
38
44
  }
39
- return apps.find((a) => a.id === choice) ?? null;
45
+ return chosen;
40
46
  }
41
47
  //# sourceMappingURL=appSelect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"appSelect.js","sourceRoot":"","sources":["../../src/prompts/appSelect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI1D,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CACH,gIAAgI,CACjI,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,kFAAkF;AAClF,iFAAiF;AACjF,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAiB,EACjB,WAAoB;IAEpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CACzD,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,yCAAyC,WAAW,iBAAiB,SAAS,GAAG,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,OAAO,EAAE,2DAA2D;QACpE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,IAAI,EAAE,CAAC,CAAC,MAAM;SACf,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,YAAY,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"appSelect.js","sourceRoot":"","sources":["../../src/prompts/appSelect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAkB,MAAM,mBAAmB,CAAC;AAE1E,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CACH,gIAAgI,CACjI,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,kFAAkF;AAClF,iFAAiF;AACjF,+EAA+E;AAC/E,kFAAkF;AAClF,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAS,EACT,WAAoB;IAEpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CACzD,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,yCAAyC,WAAW,iBAAiB,SAAS,GAAG,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CACT,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAC3E,CAAC;QACF,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,kBAAkB,CAChB,2DAA2D,EAC3D,yDAAyD,CAC1D,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CACrB,MAAM,MAAM,CAAC;QACX,OAAO,EAAE,2DAA2D;QACpE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;SAC/B,CAAC,CAAC;KACJ,CAAC,CACH,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { confirm, select } from "@clack/prompts";
2
+ import { CancelledError, orCancel } from "../core/cancel.js";
3
+ // A directory with files in it used to force the integrate path, which left a
4
+ // logged-out developer with no way to scaffold anywhere except a completely
5
+ // empty directory. Templates are copied over whatever is already there, so
6
+ // scaffolding into one is offered but never assumed.
7
+ export async function chooseExistingDirectoryAction(canIntegrate) {
8
+ if (!canIntegrate) {
9
+ await confirmOverwrite();
10
+ return "scaffold";
11
+ }
12
+ const action = orCancel(await select({
13
+ message: "This directory is not empty. What would you like to do?",
14
+ options: [
15
+ {
16
+ value: "integrate",
17
+ label: "Connect it to a managed application",
18
+ hint: "writes api/.env, leaves your source alone",
19
+ },
20
+ {
21
+ value: "scaffold",
22
+ label: "Scaffold a new project here",
23
+ hint: "starter files overwrite anything with the same name",
24
+ },
25
+ ],
26
+ }));
27
+ // The hint on the option is not consent. Writing over a directory a developer
28
+ // already has work in gets its own confirmation, on every route that reaches
29
+ // it, so the destructive choice is never one keystroke away.
30
+ if (action === "scaffold") {
31
+ await confirmOverwrite();
32
+ }
33
+ return action;
34
+ }
35
+ async function confirmOverwrite() {
36
+ const proceed = orCancel(await confirm({
37
+ message: "This directory is not empty. Scaffold a project here anyway? Starter files overwrite anything with the same name.",
38
+ initialValue: false,
39
+ }));
40
+ if (!proceed) {
41
+ throw new CancelledError("Nothing was written.");
42
+ }
43
+ }
44
+ // Being logged in signals intent, so managed leads, but it is a question rather
45
+ // than a default: a portal session is a poor reason to assume this particular
46
+ // project is not a local experiment.
47
+ export async function chooseScaffoldTarget(appCount) {
48
+ return orCancel(await select({
49
+ message: "How should this project get its auth?",
50
+ options: [
51
+ {
52
+ value: "managed",
53
+ label: "Connect to a managed application",
54
+ hint: `${appCount} available`,
55
+ },
56
+ {
57
+ value: "local",
58
+ label: "Scaffold a local stack",
59
+ hint: "Docker Compose, runs entirely on your machine",
60
+ },
61
+ ],
62
+ initialValue: "managed",
63
+ }));
64
+ }
65
+ // Reaching the control plane is the one failure that used to degrade silently:
66
+ // a developer who meant to connect managed got a full local Docker stack with
67
+ // only a warning.
68
+ export async function confirmLocalFallback() {
69
+ const proceed = orCancel(await confirm({
70
+ message: "Could not reach the Seamless control plane. Scaffold a local stack instead?",
71
+ initialValue: true,
72
+ }));
73
+ if (!proceed) {
74
+ throw new CancelledError("Nothing was written.");
75
+ }
76
+ }
77
+ //# sourceMappingURL=initMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initMode.js","sourceRoot":"","sources":["../../src/prompts/initMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7D,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,YAAqB;IAErB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,gBAAgB,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CACrB,MAAM,MAAM,CAAC;QACX,OAAO,EAAE,yDAAyD;QAClE,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,qCAAqC;gBAC5C,IAAI,EAAE,2CAA2C;aAClD;YACD;gBACE,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,6BAA6B;gBACpC,IAAI,EAAE,qDAAqD;aAC5D;SACF;KACF,CAAC,CACwB,CAAC;IAE7B,8EAA8E;IAC9E,6EAA6E;IAC7E,6DAA6D;IAC7D,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,MAAM,OAAO,GAAG,QAAQ,CACtB,MAAM,OAAO,CAAC;QACZ,OAAO,EACL,mHAAmH;QACrH,YAAY,EAAE,KAAK;KACpB,CAAC,CACH,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAID,gFAAgF;AAChF,8EAA8E;AAC9E,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB;IAEhB,OAAO,QAAQ,CACb,MAAM,MAAM,CAAC;QACX,OAAO,EAAE,uCAAuC;QAChD,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,GAAG,QAAQ,YAAY;aAC9B;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,wBAAwB;gBAC/B,IAAI,EAAE,+CAA+C;aACtD;SACF;QACD,YAAY,EAAE,SAAS;KACxB,CAAC,CACe,CAAC;AACtB,CAAC;AAED,+EAA+E;AAC/E,8EAA8E;AAC9E,kBAAkB;AAClB,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,OAAO,GAAG,QAAQ,CACtB,MAAM,OAAO,CAAC;QACZ,OAAO,EACL,6EAA6E;QAC/E,YAAY,EAAE,IAAI;KACnB,CAAC,CACH,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { multiselect, password, text } from "@clack/prompts";
2
+ import { orCancel } from "../core/cancel.js";
2
3
  import { OAUTH_PROVIDER_CATALOG, } from "../core/oauthProviders.js";
3
4
  // Runs when the selected web template opts into OAuth setup. Lets the user pick
4
5
  // providers and paste each one's client id and secret, so the scaffolded auth
5
6
  // server has OAuth working right after `docker compose up`. Blank credentials are
6
7
  // allowed (the provider is scaffolded disabled for the user to fill in later).
7
8
  export async function runOAuthSetupPrompts() {
8
- const chosen = (await multiselect({
9
+ const chosen = orCancel(await multiselect({
9
10
  message: "Which OAuth providers do you want to enable? (space to select)",
10
11
  options: OAUTH_PROVIDER_CATALOG.map((p) => ({ value: p.id, label: p.label })),
11
12
  required: false,
@@ -18,11 +19,11 @@ export async function runOAuthSetupPrompts() {
18
19
  const catalog = OAUTH_PROVIDER_CATALOG.find((p) => p.id === id);
19
20
  if (!catalog)
20
21
  continue;
21
- const clientId = (await text({
22
+ const clientId = orCancel(await text({
22
23
  message: `${catalog.label} client ID`,
23
24
  placeholder: "leave blank to configure later",
24
25
  }));
25
- const clientSecret = (await password({
26
+ const clientSecret = orCancel(await password({
26
27
  message: `${catalog.label} client secret`,
27
28
  }));
28
29
  collected.push({
@@ -1 +1 @@
1
- {"version":3,"file":"oauthSetup.js","sourceRoot":"","sources":["../../src/prompts/oauthSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EACL,sBAAsB,GAEvB,MAAM,2BAA2B,CAAC;AAEnC,gFAAgF;AAChF,8EAA8E;AAC9E,kFAAkF;AAClF,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,CAAC,MAAM,WAAW,CAAC;QAChC,OAAO,EAAE,gEAAgE;QACzE,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7E,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAa,CAAC;IAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAA6B,EAAE,CAAC;IAE/C,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC;YAC3B,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,YAAY;YACrC,WAAW,EAAE,gCAAgC;SAC9C,CAAC,CAAW,CAAC;QAEd,MAAM,YAAY,GAAG,CAAC,MAAM,QAAQ,CAAC;YACnC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,gBAAgB;SAC1C,CAAC,CAAW,CAAC;QAEd,SAAS,CAAC,IAAI,CAAC;YACb,OAAO;YACP,QAAQ,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACjC,YAAY,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"oauthSetup.js","sourceRoot":"","sources":["../../src/prompts/oauthSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EACL,sBAAsB,GAEvB,MAAM,2BAA2B,CAAC;AAEnC,gFAAgF;AAChF,8EAA8E;AAC9E,kFAAkF;AAClF,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,QAAQ,CACrB,MAAM,WAAW,CAAC;QAChB,OAAO,EAAE,gEAAgE;QACzE,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7E,QAAQ,EAAE,KAAK;KAChB,CAAC,CACS,CAAC;IAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAA6B,EAAE,CAAC;IAE/C,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,QAAQ,GAAG,QAAQ,CACvB,MAAM,IAAI,CAAC;YACT,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,YAAY;YACrC,WAAW,EAAE,gCAAgC;SAC9C,CAAC,CACO,CAAC;QAEZ,MAAM,YAAY,GAAG,QAAQ,CAC3B,MAAM,QAAQ,CAAC;YACb,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,gBAAgB;SAC1C,CAAC,CACO,CAAC;QAEZ,SAAS,CAAC,IAAI,CAAC;YACb,OAAO;YACP,QAAQ,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YACjC,YAAY,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,4 +1,13 @@
1
- import { confirm, select } from "@clack/prompts";
1
+ import { confirm, select, text } from "@clack/prompts";
2
+ import { orCancel } from "../core/cancel.js";
3
+ import { requireInteractive } from "../core/tty.js";
4
+ export const AUTH_MODES = ["docker", "local"];
5
+ export const ADMIN_MODES = ["api", "image", "source", "none"];
6
+ // What each question falls back to when --yes answers it. These match the
7
+ // options labelled "(recommended)" in the prompts below, so an unattended run
8
+ // gets the same stack a developer pressing Enter would.
9
+ const DEFAULT_AUTH_MODE = "docker";
10
+ const DEFAULT_ADMIN_MODE = "api";
2
11
  // Builds the framework choices for one layer (web or api) from the registry, so
3
12
  // adding a template is a registry edit, not a code change here. coming-soon
4
13
  // templates show as disabled; beta templates are selectable but labelled.
@@ -17,57 +26,45 @@ function toOptions(templates, kind) {
17
26
  disabled: t.status === "coming-soon",
18
27
  }));
19
28
  }
29
+ // The registry lists templates in the order the prompt shows them, so the first
30
+ // selectable one of a kind is what a developer pressing Enter would land on.
31
+ function defaultTemplateId(templates, kind) {
32
+ const entry = templates.find((t) => t.kind === kind && t.status !== "coming-soon");
33
+ if (!entry) {
34
+ throw new Error(`The template registry has no selectable ${kind} templates, so --yes has nothing to choose. Run \`seamless templates list\` to see what is available.`);
35
+ }
36
+ return entry.id;
37
+ }
20
38
  function labelFor(templates, id) {
21
39
  return templates.find((t) => t.id === id)?.label ?? id;
22
40
  }
41
+ async function resolveTemplateId(templates, kind, preselected, message, echoLabel, assumeYes) {
42
+ const chosen = preselected ?? (assumeYes ? defaultTemplateId(templates, kind) : undefined);
43
+ if (chosen) {
44
+ console.log(`${echoLabel}: ${labelFor(templates, chosen)}`);
45
+ return chosen;
46
+ }
47
+ requireInteractive(message, `Pass --${kind}=<id> to choose one (see \`seamless templates list\`), or --yes to take the recommended template.`);
48
+ return orCancel(await select({ message, options: toOptions(templates, kind) }));
49
+ }
23
50
  // Managed connect only needs the web and api templates: the auth server is the
24
51
  // developer's managed instance, so the auth-mode, Docker, and admin-dashboard
25
52
  // questions (all local-stack concerns) do not apply.
26
- export async function runManagedTemplatePrompts(templates, preselect = {}) {
27
- let webTemplateId = preselect.webTemplateId;
28
- if (webTemplateId) {
29
- console.log(`Web example: ${labelFor(templates, webTemplateId)}`);
30
- }
31
- else {
32
- webTemplateId = (await select({
33
- message: "Web example",
34
- options: toOptions(templates, "web"),
35
- }));
36
- }
37
- let apiTemplateId = preselect.apiTemplateId;
38
- if (apiTemplateId) {
39
- console.log(`Backend: ${labelFor(templates, apiTemplateId)}`);
40
- }
41
- else {
42
- apiTemplateId = (await select({
43
- message: "Backend framework",
44
- options: toOptions(templates, "api"),
45
- }));
46
- }
53
+ export async function runManagedTemplatePrompts(templates, preselect = {}, assumeYes = false) {
54
+ const webTemplateId = await resolveTemplateId(templates, "web", preselect.webTemplateId, "Web example", "Web example", assumeYes);
55
+ const apiTemplateId = await resolveTemplateId(templates, "api", preselect.apiTemplateId, "Backend framework", "Backend", assumeYes);
47
56
  return { webTemplateId, apiTemplateId };
48
57
  }
49
- export async function runProjectSetupPrompts(templates, preselect = {}) {
50
- let webTemplateId = preselect.webTemplateId;
51
- if (webTemplateId) {
52
- console.log(`Web example: ${labelFor(templates, webTemplateId)}`);
53
- }
54
- else {
55
- webTemplateId = (await select({
56
- message: "Web example",
57
- options: toOptions(templates, "web"),
58
- }));
59
- }
60
- let apiTemplateId = preselect.apiTemplateId;
61
- if (apiTemplateId) {
62
- console.log(`Backend: ${labelFor(templates, apiTemplateId)}`);
63
- }
64
- else {
65
- apiTemplateId = (await select({
66
- message: "Backend framework",
67
- options: toOptions(templates, "api"),
68
- }));
69
- }
70
- const authMode = (await select({
58
+ export async function runProjectSetupPrompts(templates, preselect = {}, knownEmail, assumeYes = false) {
59
+ const webTemplateId = await resolveTemplateId(templates, "web", preselect.webTemplateId, "Web example", "Web example", assumeYes);
60
+ const apiTemplateId = await resolveTemplateId(templates, "api", preselect.apiTemplateId, "Backend framework", "Backend", assumeYes);
61
+ // Written to the auth server as OWNER_EMAIL, which grants the admin role to
62
+ // this address at signup. Asking here means registering in the scaffolded app
63
+ // is the only step between `docker compose up` and a working admin. There is
64
+ // no sane default for it, so --yes takes it from the flag or the portal
65
+ // session and otherwise refuses to guess.
66
+ const ownerEmail = await resolveOwnerEmail(preselect.ownerEmail ?? (assumeYes ? knownEmail : undefined), knownEmail, assumeYes);
67
+ const authMode = await resolveChoice(preselect.authMode, assumeYes ? DEFAULT_AUTH_MODE : undefined, "Auth server", "How would you like to run SeamlessAuth?", "--auth", AUTH_MODES, async () => orCancel(await select({
71
68
  message: "How would you like to run SeamlessAuth?",
72
69
  options: [
73
70
  {
@@ -79,8 +76,8 @@ export async function runProjectSetupPrompts(templates, preselect = {}) {
79
76
  label: "Local dev server (advanced)",
80
77
  },
81
78
  ],
82
- }));
83
- const adminMode = (await select({
79
+ })));
80
+ const adminMode = await resolveChoice(preselect.adminMode, assumeYes ? DEFAULT_ADMIN_MODE : undefined, "Admin console", "How would you like to host the admin console?", "--admin", ADMIN_MODES, async () => orCancel(await select({
84
81
  message: "How would you like to host the admin console?",
85
82
  options: [
86
83
  {
@@ -101,12 +98,13 @@ export async function runProjectSetupPrompts(templates, preselect = {}) {
101
98
  },
102
99
  ],
103
100
  initialValue: "api",
104
- }));
105
- if (authMode === "local") {
106
- const confirmDocker = await confirm({
101
+ })));
102
+ if (authMode === "local" && !assumeYes) {
103
+ requireInteractive("Auth server still requires Docker for full stack. Enable Docker?", "Pass --yes; Docker is enabled either way.");
104
+ const confirmDocker = orCancel(await confirm({
107
105
  message: "Auth server still requires Docker for full stack. Enable Docker?",
108
106
  initialValue: true,
109
- });
107
+ }));
110
108
  if (!confirmDocker) {
111
109
  console.log("\nDocker is required for full seamless stack. Enabling automatically.\n");
112
110
  }
@@ -119,6 +117,35 @@ export async function runProjectSetupPrompts(templates, preselect = {}) {
119
117
  authMode,
120
118
  useDocker: true,
121
119
  adminMode,
120
+ ownerEmail: ownerEmail.trim(),
122
121
  };
123
122
  }
123
+ // A flag answers the question outright; --yes falls back to the recommended
124
+ // option. Either way the choice is echoed, so an unattended run still reports
125
+ // what it picked.
126
+ async function resolveChoice(supplied, fallback, echoLabel, question, flag, allowed, ask) {
127
+ const chosen = supplied ?? fallback;
128
+ if (chosen) {
129
+ console.log(`${echoLabel}: ${chosen}`);
130
+ return chosen;
131
+ }
132
+ requireInteractive(question, `Pass ${flag}=<${allowed.join("|")}>, or --yes to take the recommended option.`);
133
+ return ask();
134
+ }
135
+ async function resolveOwnerEmail(supplied, knownEmail, assumeYes) {
136
+ if (supplied) {
137
+ console.log(`Owner email: ${supplied}`);
138
+ return supplied;
139
+ }
140
+ if (assumeYes) {
141
+ throw new Error("--yes needs an owner email, which becomes the admin when you register. Pass --email <address>, or run `seamless login` so it can be taken from your portal session.");
142
+ }
143
+ requireInteractive("Your email (becomes the admin when you register)", "Pass --email <address>, or run `seamless login` so it can be taken from your portal session.");
144
+ return orCancel(await text({
145
+ message: "Your email (becomes the admin when you register)",
146
+ placeholder: knownEmail ?? "you@example.com",
147
+ initialValue: knownEmail ?? "",
148
+ validate: (value) => (value ?? "").includes("@") ? undefined : "Enter a valid email address",
149
+ }));
150
+ }
124
151
  //# sourceMappingURL=projectSetup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projectSetup.js","sourceRoot":"","sources":["../../src/prompts/projectSetup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectSetup.js","sourceRoot":"","sources":["../../src/prompts/projectSetup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { beforeEach } from "vitest";
2
+ // Prompts refuse to run without a TTY on stdin (see core/tty.ts), and vitest has
3
+ // none, so every test that exercises a prompt would otherwise fail on the guard
4
+ // rather than on what it is testing. Tests that want the no-terminal behavior
5
+ // set isTTY back to false in their own beforeEach, which runs after this one.
6
+ beforeEach(() => {
7
+ process.stdin.isTTY = true;
8
+ });
9
+ //# sourceMappingURL=testSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testSetup.js","sourceRoot":"","sources":["../src/testSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,iFAAiF;AACjF,gFAAgF;AAChF,8EAA8E;AAC9E,8EAA8E;AAC9E,UAAU,CAAC,GAAG,EAAE;IACd,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7B,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seamless-cli",
3
- "version": "0.10.2",
3
+ "version": "0.11.0",
4
4
  "description": "The Seamless Auth command-line interface",
5
5
  "homepage": "https://github.com/fells-code/seamless-cli#readme",
6
6
  "bugs": {
@@ -5,7 +5,7 @@
5
5
  "type": "module",
6
6
  "description": "Minimal adopter backend for the conformance harness — real @seamless-auth/express with a capture transport.",
7
7
  "dependencies": {
8
- "@seamless-auth/express": "^0.9.0",
8
+ "@seamless-auth/express": "^0.12.1",
9
9
  "cookie-parser": "^1.4.6",
10
10
  "cors": "^2.8.5",
11
11
  "express": "^5.1.0"