flingit 0.0.40 → 0.0.42

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 (61) hide show
  1. package/dist/cli/commands/auth-shared.d.ts +63 -0
  2. package/dist/cli/commands/auth-shared.d.ts.map +1 -0
  3. package/dist/cli/commands/auth-shared.js +60 -0
  4. package/dist/cli/commands/auth-shared.js.map +1 -0
  5. package/dist/cli/commands/feedback.d.ts.map +1 -1
  6. package/dist/cli/commands/feedback.js +2 -1
  7. package/dist/cli/commands/feedback.js.map +1 -1
  8. package/dist/cli/commands/init.d.ts +1 -0
  9. package/dist/cli/commands/init.d.ts.map +1 -1
  10. package/dist/cli/commands/init.js +13 -10
  11. package/dist/cli/commands/init.js.map +1 -1
  12. package/dist/cli/commands/login.d.ts +59 -16
  13. package/dist/cli/commands/login.d.ts.map +1 -1
  14. package/dist/cli/commands/login.js +191 -58
  15. package/dist/cli/commands/login.js.map +1 -1
  16. package/dist/cli/commands/onboard.js +4 -4
  17. package/dist/cli/commands/onboard.js.map +1 -1
  18. package/dist/cli/commands/plugin.d.ts.map +1 -1
  19. package/dist/cli/commands/plugin.js +2 -1
  20. package/dist/cli/commands/plugin.js.map +1 -1
  21. package/dist/cli/commands/project.d.ts.map +1 -1
  22. package/dist/cli/commands/project.js +4 -3
  23. package/dist/cli/commands/project.js.map +1 -1
  24. package/dist/cli/commands/push.d.ts.map +1 -1
  25. package/dist/cli/commands/push.js +2 -4
  26. package/dist/cli/commands/push.js.map +1 -1
  27. package/dist/cli/commands/signup.d.ts +59 -0
  28. package/dist/cli/commands/signup.d.ts.map +1 -0
  29. package/dist/cli/commands/signup.js +140 -0
  30. package/dist/cli/commands/signup.js.map +1 -0
  31. package/dist/cli/commands/tunnel.d.ts.map +1 -1
  32. package/dist/cli/commands/tunnel.js +2 -1
  33. package/dist/cli/commands/tunnel.js.map +1 -1
  34. package/dist/cli/commands/verify.d.ts.map +1 -1
  35. package/dist/cli/commands/verify.js +3 -2
  36. package/dist/cli/commands/verify.js.map +1 -1
  37. package/dist/cli/commands/whoami.d.ts.map +1 -1
  38. package/dist/cli/commands/whoami.js +2 -1
  39. package/dist/cli/commands/whoami.js.map +1 -1
  40. package/dist/cli/index.js +2 -2
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/cli/utils/config.d.ts.map +1 -1
  43. package/dist/cli/utils/config.js +12 -3
  44. package/dist/cli/utils/config.js.map +1 -1
  45. package/dist/cli/utils/environment.d.ts.map +1 -1
  46. package/dist/cli/utils/environment.js +3 -2
  47. package/dist/cli/utils/environment.js.map +1 -1
  48. package/dist/cli/utils/retry.d.ts +16 -1
  49. package/dist/cli/utils/retry.d.ts.map +1 -1
  50. package/dist/cli/utils/retry.js +62 -3
  51. package/dist/cli/utils/retry.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.js +1 -1
  54. package/package.json +5 -4
  55. package/templates/default/CLAUDE.md +1 -1
  56. package/templates/default/dot-claude/skills/fling/.hash +1 -1
  57. package/templates/default/dot-claude/skills/fling/SKILL.md +22 -3
  58. package/dist/cli/commands/register.d.ts +0 -68
  59. package/dist/cli/commands/register.d.ts.map +0 -1
  60. package/dist/cli/commands/register.js +0 -157
  61. package/dist/cli/commands/register.js.map +0 -1
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Shared utilities for signup and login commands.
3
+ *
4
+ * Provides common input validation (email, name) and "already logged in" handling.
5
+ * Pure functions with dependency injection — no global state.
6
+ */
7
+ import type { SimplePromptIO } from "../utils/cli-io.js";
8
+ /**
9
+ * Standard "not logged in" error message used across CLI commands.
10
+ * Single definition to avoid drift.
11
+ */
12
+ export declare const NOT_LOGGED_IN_MESSAGE = "Not logged in. Run 'fling login' to log in, or 'fling signup' to create an account.";
13
+ /**
14
+ * Result of email validation.
15
+ */
16
+ export type EmailValidationResult = {
17
+ valid: true;
18
+ email: string;
19
+ } | {
20
+ valid: false;
21
+ error: string;
22
+ };
23
+ /**
24
+ * Dependencies for auth input operations.
25
+ */
26
+ export interface AuthInputDeps {
27
+ user: SimplePromptIO;
28
+ validateEmail: (raw: string) => EmailValidationResult;
29
+ }
30
+ /**
31
+ * Get email from --email flag or interactive prompt, then validate.
32
+ * Returns { ok, email } on success or { ok: false, error } on failure.
33
+ */
34
+ export declare function getValidatedEmail(emailOption: string | undefined, deps: AuthInputDeps): Promise<{
35
+ ok: true;
36
+ email: string;
37
+ } | {
38
+ ok: false;
39
+ error: string;
40
+ }>;
41
+ /**
42
+ * Get name from --name flag or interactive prompt.
43
+ * Returns { ok, name } on success or { ok: false, error } on failure.
44
+ */
45
+ export declare function getRequiredName(nameOption: string | undefined, deps: Pick<AuthInputDeps, "user">): Promise<{
46
+ ok: true;
47
+ name: string;
48
+ } | {
49
+ ok: false;
50
+ error: string;
51
+ }>;
52
+ /**
53
+ * Check if the user is already logged in and prompt to replace token.
54
+ * Returns true if we should proceed (not logged in, or user chose to replace).
55
+ * Returns false if user declined — caller should exit.
56
+ */
57
+ export declare function handleAlreadyLoggedIn(deps: {
58
+ isLoggedIn: () => boolean;
59
+ user: SimplePromptIO;
60
+ clearToken: () => void;
61
+ isInteractive?: boolean;
62
+ }): Promise<boolean>;
63
+ //# sourceMappingURL=auth-shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-shared.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/auth-shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,wFACqD,CAAC;AAExF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,qBAAqB,CAAC;CACvD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAUrE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAMpE;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnB"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Shared utilities for signup and login commands.
3
+ *
4
+ * Provides common input validation (email, name) and "already logged in" handling.
5
+ * Pure functions with dependency injection — no global state.
6
+ */
7
+ /**
8
+ * Standard "not logged in" error message used across CLI commands.
9
+ * Single definition to avoid drift.
10
+ */
11
+ export const NOT_LOGGED_IN_MESSAGE = "Not logged in. Run 'fling login' to log in, or 'fling signup' to create an account.";
12
+ /**
13
+ * Get email from --email flag or interactive prompt, then validate.
14
+ * Returns { ok, email } on success or { ok: false, error } on failure.
15
+ */
16
+ export async function getValidatedEmail(emailOption, deps) {
17
+ const raw = emailOption ?? (await deps.user.prompt("Email: "));
18
+ if (!raw) {
19
+ return { ok: false, error: "Email is required." };
20
+ }
21
+ const result = deps.validateEmail(raw);
22
+ if (!result.valid) {
23
+ return { ok: false, error: result.error };
24
+ }
25
+ return { ok: true, email: result.email };
26
+ }
27
+ /**
28
+ * Get name from --name flag or interactive prompt.
29
+ * Returns { ok, name } on success or { ok: false, error } on failure.
30
+ */
31
+ export async function getRequiredName(nameOption, deps) {
32
+ const name = nameOption ?? (await deps.user.prompt("Name: "));
33
+ if (!name) {
34
+ return { ok: false, error: "Name is required." };
35
+ }
36
+ return { ok: true, name };
37
+ }
38
+ /**
39
+ * Check if the user is already logged in and prompt to replace token.
40
+ * Returns true if we should proceed (not logged in, or user chose to replace).
41
+ * Returns false if user declined — caller should exit.
42
+ */
43
+ export async function handleAlreadyLoggedIn(deps) {
44
+ if (!deps.isLoggedIn()) {
45
+ return true;
46
+ }
47
+ // In non-interactive mode (CI/scripts), auto-replace — the user explicitly
48
+ // ran login/signup with flags, so the intent to authenticate is clear.
49
+ if (deps.isInteractive === false) {
50
+ deps.clearToken();
51
+ return true;
52
+ }
53
+ const answer = await deps.user.prompt("Already logged in. Replace existing token? (y/N) ");
54
+ if (answer.toLowerCase() !== "y") {
55
+ return false;
56
+ }
57
+ deps.clearToken();
58
+ return true;
59
+ }
60
+ //# sourceMappingURL=auth-shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-shared.js","sourceRoot":"","sources":["../../../src/cli/commands/auth-shared.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,qFAAqF,CAAC;AAiBxF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAA+B,EAC/B,IAAmB;IAEnB,MAAM,GAAG,GAAG,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAA8B,EAC9B,IAAiC;IAEjC,MAAM,IAAI,GAAG,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAK3C;IACC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CACnC,mDAAmD,CACpD,CAAC;IACF,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAU/G;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,2BAA2B,CAAC;IAClC,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,aAAa,EAAE,eAAe,CAAC;IAC/B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC1D,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAMD,wBAAgB,yBAAyB,IAAI,YAAY,CAUxD;AAED,eAAO,MAAM,mBAAmB,cAA8B,CAAC;AAM/D;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EAClC,IAAI,GAAE,YAAkC,GACvC,OAAO,CAAC,IAAI,CAAC,CAmEf;AAED,eAAO,MAAM,eAAe,SAkBxB,CAAC"}
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAW/G;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,2BAA2B,CAAC;IAClC,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,aAAa,EAAE,eAAe,CAAC;IAC/B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC1D,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAMD,wBAAgB,yBAAyB,IAAI,YAAY,CAUxD;AAED,eAAO,MAAM,mBAAmB,cAA8B,CAAC;AAM/D;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EAClC,IAAI,GAAE,YAAkC,GACvC,OAAO,CAAC,IAAI,CAAC,CAmEf;AAED,eAAO,MAAM,eAAe,SAkBxB,CAAC"}
@@ -6,6 +6,7 @@ import { isLoggedIn, platformFetch } from "../utils/config.js";
6
6
  import { findEnclosingProject } from "../utils/project.js";
7
7
  import { getProjectName } from "../utils/project-name.js";
8
8
  import { consoleIO, processIO, createSimplePromptIOWithMultiline, projectFileIO, projectNameFileIO } from "../utils/cli-io-impl.js";
9
+ import { NOT_LOGGED_IN_MESSAGE } from "./auth-shared.js";
9
10
  const MIN_LENGTH = 10;
10
11
  const MAX_LENGTH = 5000;
11
12
  // ═══════════════════════════════════════════════════════
@@ -33,7 +34,7 @@ export const defaultFeedbackDeps = createDefaultFeedbackDeps();
33
34
  export async function runFeedback(messageArg, options, deps = defaultFeedbackDeps) {
34
35
  // Check if logged in
35
36
  if (!deps.isLoggedIn()) {
36
- deps.console.error("Not logged in. Run 'fling login' first.");
37
+ deps.console.error(NOT_LOGGED_IN_MESSAGE);
37
38
  deps.process.exit(1);
38
39
  }
39
40
  // Get feedback message
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/cli/commands/feedback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../src/cli/commands/feedback.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { Command } from "commander";
5
5
  import type { InitIO } from "../utils/cli-io.js";
6
6
  export interface InitOptions {
7
7
  local?: boolean;
8
+ force?: boolean;
8
9
  }
9
10
  /**
10
11
  * Run the init command logic.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CA8F9D;AAED,eAAO,MAAM,WAAW,SAgDpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAgG9D;AAED,eAAO,MAAM,WAAW,SAoDpB,CAAC"}
@@ -11,16 +11,18 @@ import { createDefaultInitIO } from "../utils/cli-io-impl.js";
11
11
  */
12
12
  export function runInit(options, io) {
13
13
  const cwd = io.process.cwd();
14
- // Refuse to init in a non-empty directory
15
- const existingFiles = io.file.readdir(cwd);
16
- if (existingFiles.length > 0) {
17
- io.console.error("Error: Directory is not empty.");
18
- io.console.error("");
19
- io.console.error("fling init requires an empty directory to avoid overwriting existing files.");
20
- io.console.error("");
21
- io.console.error("To create a new project:");
22
- io.console.error(" mkdir my-project && cd my-project && fling init");
23
- io.process.exit(1);
14
+ // Refuse to init in a non-empty directory (unless --force)
15
+ if (!options.force) {
16
+ const existingFiles = io.file.readdir(cwd);
17
+ if (existingFiles.length > 0) {
18
+ io.console.error("Error: Directory is not empty.");
19
+ io.console.error("");
20
+ io.console.error("fling init requires an empty directory to avoid overwriting existing files.");
21
+ io.console.error("");
22
+ io.console.error("To create a new project:");
23
+ io.console.error(" mkdir my-project && cd my-project && fling init");
24
+ io.process.exit(1);
25
+ }
24
26
  }
25
27
  // Check if already initialized (redundant now but kept for clarity)
26
28
  if (io.file.exists(join(cwd, ".fling"))) {
@@ -86,6 +88,7 @@ export const initCommand = new Command("init")
86
88
  .description("Create a new Fling project in the current directory")
87
89
  .option("--local", "Use local Fling package via file: reference (for development)")
88
90
  .option("--no-local", "Use published package version (override development auto-detection)")
91
+ .option("--force", "Allow initialization in a non-empty directory (overwrites existing files)")
89
92
  .addHelpText("after", `
90
93
  Prerequisites:
91
94
  - Node.js 22 or later
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,79 @@
1
1
  /**
2
- * fling login - Store API token for the Fling platform
2
+ * fling login - Log in via magic link email
3
3
  */
4
4
  import { Command } from "commander";
5
- import { type PlatformFetchFn } from "../utils/config.js";
6
- import { type ConsoleIO, type ProcessIOWithStdio, type SimplePromptIO } from "../utils/cli-io.js";
7
- /**
8
- * Token storage.
9
- */
10
- export interface LoginTokenIO {
11
- setToken(token: string): void;
12
- clearToken(): void;
13
- setApiUrl(url: string): void;
5
+ import type { ConsoleIO, ProcessIO, SimplePromptIO } from "../utils/cli-io.js";
6
+ interface LoginOptions {
7
+ apiUrl?: string;
8
+ email?: string;
9
+ token?: string;
10
+ }
11
+ interface LoginInitResult {
12
+ poll_token?: string;
13
+ error?: string;
14
+ }
15
+ interface PollResult {
16
+ status: "pending" | "complete" | "expired" | "invalid";
17
+ token?: string;
18
+ email?: string;
19
+ name?: string;
20
+ error?: string;
14
21
  }
15
22
  /**
16
23
  * Combined dependencies for login command.
17
24
  */
18
25
  export interface LoginDeps {
19
26
  console: ConsoleIO;
20
- process: ProcessIOWithStdio;
27
+ process: ProcessIO;
21
28
  user: SimplePromptIO;
22
- token: LoginTokenIO;
23
29
  isLoggedIn: () => boolean;
24
- platformFetch: PlatformFetchFn;
30
+ clearToken: () => void;
31
+ getApiUrl: () => string;
32
+ setApiUrl: (url: string) => void;
33
+ setToken: (token: string) => void;
34
+ validateEmail: (raw: string) => {
35
+ valid: true;
36
+ email: string;
37
+ } | {
38
+ valid: false;
39
+ error: string;
40
+ };
41
+ initiateLogin: (apiUrl: string, email: string) => Promise<{
42
+ ok: boolean;
43
+ status: number;
44
+ data: LoginInitResult;
45
+ }>;
46
+ pollLogin: (apiUrl: string, pollToken: string) => Promise<{
47
+ ok: boolean;
48
+ status: number;
49
+ data: PollResult;
50
+ }>;
51
+ sleep: (ms: number) => Promise<void>;
52
+ fetch: typeof fetch;
25
53
  }
54
+ /**
55
+ * Initiate magic link login via POST /auth/login.
56
+ */
57
+ export declare function initiateLogin(apiUrl: string, email: string, fetchFn?: typeof fetch): Promise<{
58
+ ok: boolean;
59
+ status: number;
60
+ data: LoginInitResult;
61
+ }>;
62
+ /**
63
+ * Poll for login completion via POST /auth/login/poll.
64
+ */
65
+ export declare function pollLogin(apiUrl: string, pollToken: string, fetchFn?: typeof fetch): Promise<{
66
+ ok: boolean;
67
+ status: number;
68
+ data: PollResult;
69
+ }>;
26
70
  export declare function createDefaultLoginDeps(): LoginDeps;
27
71
  export declare const defaultLoginDeps: LoginDeps;
28
72
  /**
29
73
  * Run the login command.
30
74
  * Exported for testing with injected dependencies.
31
75
  */
32
- export declare function runLogin(tokenArg: string | undefined, options: {
33
- apiUrl?: string;
34
- }, deps?: LoginDeps): Promise<void>;
76
+ export declare function runLogin(options: LoginOptions, deps?: LoginDeps): Promise<void>;
35
77
  export declare const loginCommand: Command;
78
+ export {};
36
79
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAA8D,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACtH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOlG;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,IAAI,IAAI,CAAC;IACnB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,aAAa,EAAE,eAAe,CAAC;CAChC;AAMD,wBAAgB,sBAAsB,IAAI,SAAS,CAalD;AAED,eAAO,MAAM,gBAAgB,WAA2B,CAAC;AAMzD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,IAAI,GAAE,SAA4B,GACjC,OAAO,CAAC,IAAI,CAAC,CAkEf;AAED,eAAO,MAAM,YAAY,SAsBrB,CAAC"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}