flingit 0.0.40 → 0.0.41

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/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 +2 -1
  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 +3 -2
  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/index.d.ts +1 -1
  49. package/dist/index.js +1 -1
  50. package/package.json +4 -4
  51. package/templates/default/CLAUDE.md +1 -1
  52. package/templates/default/dot-claude/skills/fling/.hash +1 -1
  53. package/templates/default/dot-claude/skills/fling/SKILL.md +22 -3
  54. package/dist/cli/commands/register.d.ts +0 -68
  55. package/dist/cli/commands/register.d.ts.map +0 -1
  56. package/dist/cli/commands/register.js +0 -157
  57. package/dist/cli/commands/register.js.map +0 -1
@@ -16,8 +16,9 @@ function defaultGetTargetEnv(command) {
16
16
  function defaultRequireProdAuth(env) {
17
17
  if (env === "prod" && !isLoggedIn()) {
18
18
  console.error("Error: Not logged in - cannot access production environment.\n");
19
- console.error("To connect to Fling platform, run:");
20
- console.error(" fling login\n");
19
+ console.error("To authenticate, run:");
20
+ console.error(" fling login Log in with an existing account");
21
+ console.error(" fling signup Create a new account\n");
21
22
  console.error("To work with local environment instead, remove the --prod flag.");
22
23
  process.exit(1);
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/cli/utils/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACvC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,GAAc;IAC5C,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,IAAI,iBAAiB,GAAoC,mBAAmB,CAAC;AAC7E,IAAI,oBAAoB,GAA6B,sBAAsB,CAAC;AAE5E;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAc;IAC5C,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAmC;IACjE,iBAAiB,GAAG,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAA4B;IAC7D,oBAAoB,GAAG,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,iBAAiB,GAAG,mBAAmB,CAAC;IACxC,oBAAoB,GAAG,sBAAsB,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/cli/utils/environment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC;;GAEG;AACH,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACvC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,GAAc;IAC5C,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAClF,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,IAAI,iBAAiB,GAAoC,mBAAmB,CAAC;AAC7E,IAAI,oBAAoB,GAA6B,sBAAsB,CAAC;AAE5E;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAc;IAC5C,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAmC;IACjE,iBAAiB,GAAG,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAA4B;IAC7D,oBAAoB,GAAG,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,iBAAiB,GAAG,mBAAmB,CAAC;IACxC,oBAAoB,GAAG,sBAAsB,CAAC;AAChD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Fling - Personal Software Platform
2
+ * Fling - Small Software Platform
3
3
  *
4
4
  * Main entry point for the fling runtime package.
5
5
  * Re-exports all primitives: app, cron, db, secrets, storage
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Fling - Personal Software Platform
2
+ * Fling - Small Software Platform
3
3
  *
4
4
  * Main entry point for the fling runtime package.
5
5
  * Re-exports all primitives: app, cron, db, secrets, storage
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "flingit",
3
- "version": "0.0.40",
4
- "description": "Personal Software Platform - Build and deploy personal tools through conversation",
3
+ "version": "0.0.41",
4
+ "description": "Small Software Platform - Build and deploy personal tools through conversation",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": ">=22.0.0"
@@ -76,7 +76,7 @@
76
76
  "croner": "^9.1.0",
77
77
  "dotenv": "^17.2.3",
78
78
  "esbuild": "^0.27.2",
79
- "hono": "^4.11.7",
79
+ "hono": "^4.12.1",
80
80
  "postal-mime": "^2.7.3",
81
81
  "tsx": "^4.19.0",
82
82
  "zod": "^3.25.76"
@@ -96,7 +96,7 @@
96
96
  },
97
97
  "keywords": [
98
98
  "fling",
99
- "personal-software",
99
+ "small-software",
100
100
  "platform",
101
101
  "cloudflare",
102
102
  "workers"
@@ -1,5 +1,5 @@
1
1
  # Fling Project
2
2
 
3
- This is a Fling project - a personal software platform for building and deploying personal tools with a React frontend, API backend, SQL database, storage, and more.
3
+ This is a Fling project - a Small Software platform for building and deploying personal tools with a React frontend, API backend, SQL database, storage, and more.
4
4
 
5
5
  Read the `fling` skill in detail!
@@ -1 +1 @@
1
- 8f6f6e794f59adc455a57de21501b663
1
+ a5c510aa9c9c55f3cc1185b32e2f3894
@@ -5,7 +5,7 @@ description: Building and deploying this app easily to the internet. Use when th
5
5
 
6
6
  # Fling
7
7
 
8
- You are working on a Fling project - a personal software platform for building and deploying personal tools with a React frontend and Hono API backend.
8
+ You are working on a Fling project - a Small Software platform for building and deploying personal tools with a React frontend and Hono API backend.
9
9
 
10
10
  ## IMPORTANT: Do NOT ask about deployment, hosting, or technology choices!
11
11
 
@@ -238,9 +238,27 @@ Slugs must be:
238
238
  - Lowercase alphanumeric with optional hyphens
239
239
  - Globally unique across all Fling projects
240
240
 
241
+ ### Authentication
242
+
243
+ If the user isn't logged in (no token stored), help them authenticate:
244
+
245
+ **New user:** Sign up with email and name:
246
+ ```bash
247
+ npm exec fling -- --cli signup --email user@example.com --name "User Name"
248
+ ```
249
+
250
+ **Existing user:** Log in via magic link email:
251
+ ```bash
252
+ npm exec fling -- --cli login --email user@example.com
253
+ ```
254
+ After running login, tell the user to check their email and click the login link.
255
+ The CLI will wait until the link is clicked, then complete login automatically.
256
+
257
+ If the user prefers, they can run `fling signup` or `fling login` interactively themselves.
258
+
241
259
  ### Email Verification
242
260
 
243
- After registering, you must verify your email to deploy.
261
+ After signing up, you must verify your email to deploy.
244
262
  If `fling push` fails with "Email verification required":
245
263
 
246
264
  1. Run `fling verify` to check verification status
@@ -374,5 +392,6 @@ When the fling CLI mentions that there is a new version available, strongly sugg
374
392
 
375
393
  ```bash
376
394
  npm install flingit@latest
377
- npm exec upgrade # to upgrade this skill if needed
395
+ npm exec fling upgrade # to upgrade this skill if needed
396
+
378
397
  ```
@@ -1,68 +0,0 @@
1
- /**
2
- * fling register - Create a new account using an invite token
3
- */
4
- import { Command } from "commander";
5
- import type { ConsoleIO, ProcessIO, SimplePromptIO } from "../utils/cli-io.js";
6
- interface RegisterOptions {
7
- apiUrl?: string;
8
- email?: string;
9
- name?: string;
10
- }
11
- interface RegisterResult {
12
- id?: string;
13
- name?: string;
14
- email?: string;
15
- token?: string;
16
- project?: {
17
- slug: string;
18
- url: string;
19
- };
20
- error?: string;
21
- }
22
- /**
23
- * Combined dependencies for register command.
24
- */
25
- export interface RegisterDeps {
26
- console: ConsoleIO;
27
- process: ProcessIO;
28
- user: SimplePromptIO;
29
- isLoggedIn: () => boolean;
30
- getApiUrl: () => string;
31
- setApiUrl: (url: string) => void;
32
- setToken: (token: string) => void;
33
- normalizeInviteToken: (token: string) => string;
34
- validateEmail: (raw: string) => {
35
- valid: true;
36
- email: string;
37
- } | {
38
- valid: false;
39
- error: string;
40
- };
41
- registerUser: (apiUrl: string, inviteToken: string, email: string, name: string) => Promise<{
42
- ok: boolean;
43
- data: RegisterResult;
44
- }>;
45
- }
46
- /**
47
- * Register a new user account.
48
- *
49
- * @param apiUrl - API base URL
50
- * @param inviteToken - Invite token with inv_ prefix
51
- * @param email - User's email address
52
- * @param name - User's display name
53
- * @param fetchFn - Optional fetch function for dependency injection (defaults to global fetch)
54
- */
55
- export declare function registerUser(apiUrl: string, inviteToken: string, email: string, name: string, fetchFn?: typeof fetch): Promise<{
56
- ok: boolean;
57
- data: RegisterResult;
58
- }>;
59
- export declare function createDefaultRegisterDeps(): RegisterDeps;
60
- export declare const defaultRegisterDeps: RegisterDeps;
61
- /**
62
- * Run the register command.
63
- * Exported for testing with injected dependencies.
64
- */
65
- export declare function runRegister(inviteTokenArg: string | undefined, options: RegisterOptions, deps?: RegisterDeps): Promise<void>;
66
- export declare const registerCommand: Command;
67
- export {};
68
- //# sourceMappingURL=register.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAO/E,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAChD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACjG,YAAY,EAAE,CACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;CACrD;AAMD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAYhD;AAMD,wBAAgB,yBAAyB,IAAI,YAAY,CAaxD;AAED,eAAO,MAAM,mBAAmB,cAA8B,CAAC;AAM/D;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,eAAe,EACxB,IAAI,GAAE,YAAkC,GACvC,OAAO,CAAC,IAAI,CAAC,CA4Ef;AAMD,eAAO,MAAM,eAAe,SA8BxB,CAAC"}
@@ -1,157 +0,0 @@
1
- /**
2
- * fling register - Create a new account using an invite token
3
- */
4
- import { Command } from "commander";
5
- import { setToken, isLoggedIn, getApiUrl, setApiUrl } from "../utils/config.js";
6
- import { normalizeInviteToken } from "../utils/token.js";
7
- import { validateEmail } from "../utils/email.js";
8
- import { consoleIO, processIO, createSimplePromptIO } from "../utils/cli-io-impl.js";
9
- // ═══════════════════════════════════════════════════════
10
- // CORE FUNCTIONS
11
- // ═══════════════════════════════════════════════════════
12
- /**
13
- * Register a new user account.
14
- *
15
- * @param apiUrl - API base URL
16
- * @param inviteToken - Invite token with inv_ prefix
17
- * @param email - User's email address
18
- * @param name - User's display name
19
- * @param fetchFn - Optional fetch function for dependency injection (defaults to global fetch)
20
- */
21
- export async function registerUser(apiUrl, inviteToken, email, name, fetchFn = fetch) {
22
- const response = await fetchFn(`${apiUrl}/me`, {
23
- method: "POST",
24
- headers: {
25
- "Authorization": `Bearer ${inviteToken}`,
26
- "Content-Type": "application/json",
27
- },
28
- body: JSON.stringify({ email, name }),
29
- });
30
- const data = (await response.json());
31
- return { ok: response.ok, data };
32
- }
33
- // ═══════════════════════════════════════════════════════
34
- // DEFAULT IMPLEMENTATIONS
35
- // ═══════════════════════════════════════════════════════
36
- export function createDefaultRegisterDeps() {
37
- return {
38
- console: consoleIO,
39
- process: processIO,
40
- user: createSimplePromptIO(processIO),
41
- isLoggedIn,
42
- getApiUrl,
43
- setApiUrl,
44
- setToken,
45
- normalizeInviteToken,
46
- validateEmail,
47
- registerUser,
48
- };
49
- }
50
- export const defaultRegisterDeps = createDefaultRegisterDeps();
51
- // ═══════════════════════════════════════════════════════
52
- // RUN FUNCTION (with DI)
53
- // ═══════════════════════════════════════════════════════
54
- /**
55
- * Run the register command.
56
- * Exported for testing with injected dependencies.
57
- */
58
- export async function runRegister(inviteTokenArg, options, deps = defaultRegisterDeps) {
59
- // Check if already logged in
60
- if (deps.isLoggedIn()) {
61
- deps.console.error("Already logged in. Use 'fling logout' first.");
62
- deps.process.exit(1);
63
- }
64
- // Set API URL if provided
65
- if (options.apiUrl) {
66
- deps.setApiUrl(options.apiUrl);
67
- }
68
- // Get invite token
69
- const inviteToken = inviteTokenArg ?? (await deps.user.prompt("Invite token: "));
70
- if (!inviteToken) {
71
- deps.console.error("Invite token is required.");
72
- deps.process.exit(1);
73
- }
74
- // Normalize token format - auto-prepend inv_ if missing
75
- const normalizedToken = deps.normalizeInviteToken(inviteToken);
76
- // Get user details (from options or interactive prompt)
77
- const rawEmail = options.email ?? (await deps.user.prompt("Email: "));
78
- const emailResult = deps.validateEmail(rawEmail);
79
- if (!emailResult.valid) {
80
- deps.console.error(emailResult.error);
81
- deps.process.exit(1);
82
- }
83
- const email = emailResult.email;
84
- const name = options.name ?? (await deps.user.prompt("Name: "));
85
- if (!name) {
86
- deps.console.error("Name is required.");
87
- deps.process.exit(1);
88
- }
89
- // Register via API (slug is auto-generated by the server)
90
- deps.console.log("\nRegistering...");
91
- try {
92
- const { ok, data } = await deps.registerUser(deps.getApiUrl(), normalizedToken, email, name);
93
- if (!ok) {
94
- deps.console.error(`Registration failed: ${data.error ?? "Unknown error"}`);
95
- deps.process.exit(1);
96
- }
97
- if (!data.token) {
98
- deps.console.error("Registration failed: No token returned");
99
- deps.process.exit(1);
100
- }
101
- // Store the user token
102
- deps.setToken(data.token);
103
- // Welcome message
104
- deps.console.log(`\nWelcome to Fling, ${data.name}!`);
105
- deps.console.log(`Email: ${data.email}`);
106
- if (data.project) {
107
- deps.console.log(`Project: ${data.project.slug}`);
108
- deps.console.log(`URL: ${data.project.url}`);
109
- }
110
- deps.console.log("");
111
- deps.console.log(`A verification email has been sent to ${data.email}.`);
112
- deps.console.log(`Please click the link to verify your account within 24 hours.`);
113
- deps.console.log(`\nRun 'fling init' to create your first app.`);
114
- if (data.project) {
115
- deps.console.log(`\nTip: To customize your URL, run: fling project slug:set my-custom-slug`);
116
- }
117
- }
118
- catch (error) {
119
- deps.console.error(`Registration failed: ${error instanceof Error ? error.message : "Network error"}`);
120
- deps.process.exit(1);
121
- }
122
- }
123
- // ═══════════════════════════════════════════════════════
124
- // COMMAND
125
- // ═══════════════════════════════════════════════════════
126
- export const registerCommand = new Command("register")
127
- .description("Create a new Fling account using an invite token")
128
- .argument("[invite-token]", "Invite token (inv_ prefix optional, will prompt if not provided)")
129
- .option("--api-url <url>", "Override API endpoint (internal/testing use only)")
130
- .option("--email <email>", "Email address (for CI/scripts, skips prompt)")
131
- .option("--name <name>", "Display name (for CI/scripts, skips prompt)")
132
- .addHelpText("after", `
133
- Getting an invite token:
134
- Invite tokens are distributed by Fling administrators.
135
- The 'inv_' prefix is optional - you can enter just the token value.
136
-
137
- What it does:
138
- - Creates a new Fling account with your email and name
139
- - Creates your first project with an auto-generated slug (e.g. proj-abc123)
140
- - Logs you in automatically (stores token in ~/.config/fling/token)
141
-
142
- Non-interactive mode (for CI/scripts):
143
- Provide --email and --name to skip all prompts.
144
-
145
- Customizing your project URL:
146
- Your project gets an auto-generated slug like proj-abc123.
147
- To change it after registration: fling project slug:set my-custom-slug
148
-
149
- Examples:
150
- fling register Interactive registration
151
- fling register xyz789... Provide invite token (inv_ prefix optional)
152
- fling register xyz789... --email me@example.com --name "My Name"
153
- `)
154
- .action(async (inviteTokenArg, options) => {
155
- await runRegister(inviteTokenArg, options);
156
- });
157
- //# sourceMappingURL=register.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/cli/commands/register.ts"],"names":[],"mappings":"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"}