@kardoe/quickback 0.4.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 (61) hide show
  1. package/dist/commands/compile.d.ts +18 -0
  2. package/dist/commands/compile.d.ts.map +1 -0
  3. package/dist/commands/compile.js +144 -0
  4. package/dist/commands/compile.js.map +1 -0
  5. package/dist/commands/create.d.ts +18 -0
  6. package/dist/commands/create.d.ts.map +1 -0
  7. package/dist/commands/create.js +669 -0
  8. package/dist/commands/create.js.map +1 -0
  9. package/dist/commands/init.d.ts +6 -0
  10. package/dist/commands/init.d.ts.map +1 -0
  11. package/dist/commands/init.js +383 -0
  12. package/dist/commands/init.js.map +1 -0
  13. package/dist/commands/login.d.ts +8 -0
  14. package/dist/commands/login.d.ts.map +1 -0
  15. package/dist/commands/login.js +190 -0
  16. package/dist/commands/login.js.map +1 -0
  17. package/dist/commands/logout.d.ts +7 -0
  18. package/dist/commands/logout.d.ts.map +1 -0
  19. package/dist/commands/logout.js +19 -0
  20. package/dist/commands/logout.js.map +1 -0
  21. package/dist/commands/whoami.d.ts +7 -0
  22. package/dist/commands/whoami.d.ts.map +1 -0
  23. package/dist/commands/whoami.js +37 -0
  24. package/dist/commands/whoami.js.map +1 -0
  25. package/dist/index.d.ts +12 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +140 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/lib/api-client.d.ts +82 -0
  30. package/dist/lib/api-client.d.ts.map +1 -0
  31. package/dist/lib/api-client.js +59 -0
  32. package/dist/lib/api-client.js.map +1 -0
  33. package/dist/lib/auth.d.ts +44 -0
  34. package/dist/lib/auth.d.ts.map +1 -0
  35. package/dist/lib/auth.js +85 -0
  36. package/dist/lib/auth.js.map +1 -0
  37. package/dist/lib/compiler-stubs.d.ts +66 -0
  38. package/dist/lib/compiler-stubs.d.ts.map +1 -0
  39. package/dist/lib/compiler-stubs.js +75 -0
  40. package/dist/lib/compiler-stubs.js.map +1 -0
  41. package/dist/lib/file-loader.d.ts +73 -0
  42. package/dist/lib/file-loader.d.ts.map +1 -0
  43. package/dist/lib/file-loader.js +291 -0
  44. package/dist/lib/file-loader.js.map +1 -0
  45. package/dist/lib/file-writer.d.ts +33 -0
  46. package/dist/lib/file-writer.d.ts.map +1 -0
  47. package/dist/lib/file-writer.js +110 -0
  48. package/dist/lib/file-writer.js.map +1 -0
  49. package/dist/lib/helpers.d.ts +39 -0
  50. package/dist/lib/helpers.d.ts.map +1 -0
  51. package/dist/lib/helpers.js +299 -0
  52. package/dist/lib/helpers.js.map +1 -0
  53. package/dist/lib/shell.d.ts +15 -0
  54. package/dist/lib/shell.d.ts.map +1 -0
  55. package/dist/lib/shell.js +32 -0
  56. package/dist/lib/shell.js.map +1 -0
  57. package/dist/templates/registry.d.ts +36 -0
  58. package/dist/templates/registry.d.ts.map +1 -0
  59. package/dist/templates/registry.js +143 -0
  60. package/dist/templates/registry.js.map +1 -0
  61. package/package.json +37 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Logout Command
3
+ *
4
+ * Clears stored authentication credentials.
5
+ */
6
+ import pc from 'picocolors';
7
+ import { clearCredentials, isLoggedIn } from '../lib/auth.js';
8
+ export async function logout() {
9
+ console.log(pc.bold('\nQuickback Logout\n'));
10
+ const loggedIn = await isLoggedIn();
11
+ if (!loggedIn) {
12
+ console.log(pc.gray('You are not logged in.'));
13
+ return;
14
+ }
15
+ await clearCredentials();
16
+ console.log(pc.green('Logged out successfully.'));
17
+ console.log(pc.gray('Your credentials have been removed.'));
18
+ }
19
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAC;IAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,EAAE,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Whoami Command
3
+ *
4
+ * Shows current authentication status and user info.
5
+ */
6
+ export declare function whoami(): Promise<void>;
7
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B5C"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Whoami Command
3
+ *
4
+ * Shows current authentication status and user info.
5
+ */
6
+ import pc from 'picocolors';
7
+ import { isLoggedIn, getStoredUser } from '../lib/auth.js';
8
+ import { checkHealth } from '../lib/api-client.js';
9
+ export async function whoami() {
10
+ console.log(pc.bold('\nQuickback Account\n'));
11
+ const loggedIn = await isLoggedIn();
12
+ if (!loggedIn) {
13
+ console.log(pc.yellow('Not logged in'));
14
+ console.log(pc.gray('\nRun `quickback login` to authenticate.'));
15
+ console.log(pc.gray('Free tier: cloudflare, bun templates'));
16
+ console.log(pc.gray('Pro tier: All templates + priority support'));
17
+ return;
18
+ }
19
+ const user = await getStoredUser();
20
+ console.log(pc.green('Logged in'));
21
+ console.log('');
22
+ console.log(` ${pc.gray('Email:')} ${user?.email || 'Unknown'}`);
23
+ if (user?.name) {
24
+ console.log(` ${pc.gray('Name:')} ${user.name}`);
25
+ }
26
+ console.log(` ${pc.gray('Tier:')} ${pc.cyan('Pro')}`);
27
+ console.log('');
28
+ // Check API connectivity
29
+ try {
30
+ const health = await checkHealth();
31
+ console.log(pc.gray(`API: ${pc.green('●')} Connected (v${health.version})`));
32
+ }
33
+ catch {
34
+ console.log(pc.gray(`API: ${pc.red('●')} Disconnected`));
35
+ }
36
+ }
37
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAC;IAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;IAClE,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Quickback CLI
4
+ *
5
+ * A thin client that calls the remote compiler API.
6
+ * All compilation logic lives on the server - this CLI just handles:
7
+ * - File I/O (reading config, writing output)
8
+ * - User interaction (prompts, spinners)
9
+ * - Authentication (login, logout)
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
package/dist/index.js ADDED
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Quickback CLI
4
+ *
5
+ * A thin client that calls the remote compiler API.
6
+ * All compilation logic lives on the server - this CLI just handles:
7
+ * - File I/O (reading config, writing output)
8
+ * - User interaction (prompts, spinners)
9
+ * - Authentication (login, logout)
10
+ */
11
+ import { readFileSync } from "fs";
12
+ import { join } from "path";
13
+ import pc from "picocolors";
14
+ import { init } from "./commands/init.js";
15
+ import { compile } from "./commands/compile.js";
16
+ import { create } from "./commands/create.js";
17
+ import { login } from "./commands/login.js";
18
+ import { logout } from "./commands/logout.js";
19
+ import { whoami } from "./commands/whoami.js";
20
+ // Get package version from package.json
21
+ function getPackageVersion() {
22
+ try {
23
+ const packagePath = join(__dirname, "..", "package.json");
24
+ const packageJson = JSON.parse(readFileSync(packagePath, "utf8"));
25
+ return packageJson.version;
26
+ }
27
+ catch {
28
+ return "0.4.0";
29
+ }
30
+ }
31
+ // Print version information
32
+ function printVersion() {
33
+ const version = getPackageVersion();
34
+ console.log(`@quickback/cli v${version}`);
35
+ }
36
+ // Print help information
37
+ function printHelp() {
38
+ const version = getPackageVersion();
39
+ const help = `
40
+ ${pc.bold("Quickback CLI")} v${version}
41
+
42
+ ${pc.bold("USAGE")}
43
+ quickback <command> [options]
44
+
45
+ ${pc.bold("COMMANDS")}
46
+ ${pc.cyan("create")} <template> <name> Create a new project from template
47
+ ${pc.cyan("compile")} Compile definitions via remote API
48
+ ${pc.cyan("init")} Initialize quickback folder structure
49
+ ${pc.cyan("login")} Authenticate for Pro templates
50
+ ${pc.cyan("logout")} Clear stored credentials
51
+ ${pc.cyan("whoami")} Show current auth status
52
+
53
+ ${pc.bold("OPTIONS")}
54
+ ${pc.cyan("-v, --version")} Show version number
55
+ ${pc.cyan("-h, --help")} Show this help message
56
+
57
+ ${pc.bold("EXAMPLES")}
58
+ ${pc.gray("# Create a new Cloudflare project")}
59
+ quickback create cloudflare my-app
60
+
61
+ ${pc.gray("# Create a local Bun project")}
62
+ quickback create bun my-api
63
+
64
+ ${pc.gray("# Compile existing project")}
65
+ cd my-app && quickback compile
66
+
67
+ ${pc.gray("# List available templates")}
68
+ quickback create --list
69
+
70
+ ${pc.bold("TEMPLATES")}
71
+ ${pc.cyan("cloudflare")} Cloudflare Workers + D1 + Better Auth (free)
72
+ ${pc.cyan("bun")} Bun + SQLite + Better Auth (free)
73
+ ${pc.cyan("turso")} Turso/LibSQL + Better Auth (pro)
74
+
75
+ ${pc.bold("DOCUMENTATION")}
76
+ https://quickback.dev/docs
77
+ `;
78
+ console.log(help);
79
+ }
80
+ // Fatal error handler
81
+ function fatal(message) {
82
+ console.error(pc.red(`\n✖ ${message}`));
83
+ process.exit(1);
84
+ }
85
+ // Main command routing
86
+ const cmd = process.argv[2];
87
+ const args = process.argv.slice(3);
88
+ // Check for version flag
89
+ if (cmd === "version" || cmd === "--version" || cmd === "-v") {
90
+ printVersion();
91
+ }
92
+ else if (cmd === "help" || cmd === "--help" || cmd === "-h" || !cmd) {
93
+ printHelp();
94
+ }
95
+ else if (cmd === "init") {
96
+ init().catch((err) => {
97
+ fatal(String(err?.message ?? err));
98
+ });
99
+ }
100
+ else if (cmd === "create") {
101
+ create(args).catch((err) => {
102
+ fatal(String(err?.message ?? err));
103
+ });
104
+ }
105
+ else if (cmd === "compile") {
106
+ compile().catch((err) => {
107
+ fatal(String(err?.message ?? err));
108
+ });
109
+ }
110
+ else if (cmd === "login") {
111
+ login().catch((err) => {
112
+ fatal(String(err?.message ?? err));
113
+ });
114
+ }
115
+ else if (cmd === "logout") {
116
+ logout().catch((err) => {
117
+ fatal(String(err?.message ?? err));
118
+ });
119
+ }
120
+ else if (cmd === "whoami") {
121
+ whoami().catch((err) => {
122
+ fatal(String(err?.message ?? err));
123
+ });
124
+ }
125
+ else if (cmd === "db:generate" || cmd === "db:migrate" || cmd === "db:studio" || cmd === "migrate") {
126
+ // Legacy database commands - now handled via drizzle-kit directly
127
+ console.log(pc.yellow(`\nThe '${cmd}' command has been deprecated.`));
128
+ console.log(pc.gray("\nUse drizzle-kit directly in your project:\n"));
129
+ console.log(pc.cyan(" npx drizzle-kit generate # Generate migrations"));
130
+ console.log(pc.cyan(" npx drizzle-kit migrate # Apply migrations"));
131
+ console.log(pc.cyan(" npx drizzle-kit studio # Open database studio"));
132
+ console.log("");
133
+ process.exit(0);
134
+ }
135
+ else {
136
+ console.error(pc.red(`Unknown command: ${cmd}`));
137
+ console.log(pc.gray("\nRun 'quickback --help' for available commands."));
138
+ process.exit(1);
139
+ }
140
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAO9C,wCAAwC;AACxC,SAAS,iBAAiB;IACtB,IAAI,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAe,CAAC;QAChF,OAAO,WAAW,CAAC,OAAiB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC;AAED,4BAA4B;AAC5B,SAAS,YAAY;IACjB,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,yBAAyB;AACzB,SAAS,SAAS;IACd,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG;EACf,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,OAAO;;EAEpC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;;EAGhB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;IACjB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;IAClB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;IACf,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;IAChB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;;EAEnB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;IAChB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;IACxB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;;EAEvB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;IACjB,EAAE,CAAC,IAAI,CAAC,mCAAmC,CAAC;;;IAG5C,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC;;;IAGvC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC;;;IAGrC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC;;;EAGvC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;IAClB,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;IACrB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IACd,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;;EAElB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;;CAEzB,CAAC;IACE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,sBAAsB;AACtB,SAAS,KAAK,CAAC,OAAe;IAC1B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,uBAAuB;AACvB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,yBAAyB;AACzB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IAC3D,YAAY,EAAE,CAAC;AACnB,CAAC;KAAM,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACpE,SAAS,EAAE,CAAC;AAChB,CAAC;KAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACjB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;IACzB,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAClB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;IACnG,kEAAkE;IAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,gCAAgC,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;KAAM,CAAC;IACJ,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * API Client for Quickback Compiler Service
3
+ *
4
+ * Handles communication with the remote compiler API.
5
+ */
6
+ export interface CompilerInput {
7
+ config: {
8
+ name: string;
9
+ preset: string;
10
+ template?: string;
11
+ providers?: any;
12
+ build?: {
13
+ outputDir?: string;
14
+ };
15
+ };
16
+ features: Array<{
17
+ name: string;
18
+ schema: {
19
+ tableName: string;
20
+ columns: any;
21
+ source: string;
22
+ };
23
+ resource?: any;
24
+ actions?: any;
25
+ }>;
26
+ }
27
+ export interface GeneratedFile {
28
+ path: string;
29
+ content: string;
30
+ type: string;
31
+ feature?: string;
32
+ }
33
+ export interface PostCompileCommand {
34
+ description: string;
35
+ command: string;
36
+ optional?: boolean;
37
+ cwd?: 'output' | 'project';
38
+ }
39
+ export interface CompilerOutput {
40
+ files: GeneratedFile[];
41
+ meta: {
42
+ fileCount: number;
43
+ features: string[];
44
+ timestamp: string;
45
+ version: string;
46
+ };
47
+ commands?: PostCompileCommand[];
48
+ warnings?: string[];
49
+ }
50
+ export interface TemplateInfo {
51
+ name: string;
52
+ description: string;
53
+ tier: 'free' | 'pro';
54
+ preset: string;
55
+ tags: string[];
56
+ }
57
+ export interface ApiError {
58
+ error: string;
59
+ hint?: string;
60
+ upgrade?: string;
61
+ message?: string;
62
+ }
63
+ /**
64
+ * Fetch available templates from the server
65
+ */
66
+ export declare function fetchTemplates(): Promise<Record<string, TemplateInfo>>;
67
+ /**
68
+ * Call the compiler API
69
+ */
70
+ export declare function callCompiler(input: CompilerInput): Promise<CompilerOutput>;
71
+ /**
72
+ * Check API health
73
+ */
74
+ export declare function checkHealth(): Promise<{
75
+ status: string;
76
+ version: string;
77
+ }>;
78
+ /**
79
+ * Get the API URL (for debugging)
80
+ */
81
+ export declare function getApiUrl(): string;
82
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,KAAK,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAChC,CAAC;IACF,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,GAAG,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5D,QAAQ,CAAC,EAAE,GAAG,CAAC;QACf,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CA4BhF;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhF;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * API Client for Quickback Compiler Service
3
+ *
4
+ * Handles communication with the remote compiler API.
5
+ */
6
+ import { getStoredToken } from './auth.js';
7
+ const API_URL = process.env.QUICKBACK_API_URL || 'https://compiler.quickback.dev';
8
+ /**
9
+ * Fetch available templates from the server
10
+ */
11
+ export async function fetchTemplates() {
12
+ const response = await fetch(`${API_URL}/templates`);
13
+ if (!response.ok) {
14
+ throw new Error('Failed to fetch templates');
15
+ }
16
+ return response.json();
17
+ }
18
+ /**
19
+ * Call the compiler API
20
+ */
21
+ export async function callCompiler(input) {
22
+ const token = await getStoredToken();
23
+ const headers = {
24
+ 'Content-Type': 'application/json',
25
+ };
26
+ if (token) {
27
+ headers['Authorization'] = `Bearer ${token}`;
28
+ }
29
+ const response = await fetch(`${API_URL}/compile`, {
30
+ method: 'POST',
31
+ headers,
32
+ body: JSON.stringify(input),
33
+ });
34
+ if (!response.ok) {
35
+ const error = await response.json();
36
+ if (response.status === 403 && error.hint) {
37
+ throw new Error(`${error.error}\n${error.hint}`);
38
+ }
39
+ throw new Error(error.error || error.message || 'Compilation failed');
40
+ }
41
+ return response.json();
42
+ }
43
+ /**
44
+ * Check API health
45
+ */
46
+ export async function checkHealth() {
47
+ const response = await fetch(`${API_URL}/health`);
48
+ if (!response.ok) {
49
+ throw new Error('Compiler service unavailable');
50
+ }
51
+ return response.json();
52
+ }
53
+ /**
54
+ * Get the API URL (for debugging)
55
+ */
56
+ export function getApiUrl() {
57
+ return API_URL;
58
+ }
59
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,gCAAgC,CAAC;AA4DlF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,YAAY,CAAC,CAAC;IAErD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAA2C,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAoB;IACrD,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IAErC,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,UAAU,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KAC5B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAc,CAAC;QAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,oBAAoB,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAA6B,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC;IAElD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAkD,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * CLI Authentication
3
+ *
4
+ * Handles storing and retrieving auth tokens for the CLI.
5
+ * Tokens are stored in ~/.quickback/credentials.json
6
+ *
7
+ * NOTE: The CLI uses Device Authorization flow which returns a CLI-specific token
8
+ * via the /cli/exchange endpoint. This is different from Better Auth's session
9
+ * tokens returned in the `set-auth-token` header.
10
+ *
11
+ * If using Better Auth session tokens directly (e.g., from sign-in), they must
12
+ * remain URL-encoded (with %2F, %3D, etc.) when passed in Authorization headers.
13
+ */
14
+ interface Credentials {
15
+ token: string;
16
+ expiresAt?: string;
17
+ user?: {
18
+ id: string;
19
+ email: string;
20
+ name?: string;
21
+ };
22
+ }
23
+ /**
24
+ * Get stored auth token
25
+ */
26
+ export declare function getStoredToken(): Promise<string | null>;
27
+ /**
28
+ * Store auth credentials
29
+ */
30
+ export declare function storeCredentials(credentials: Credentials): Promise<void>;
31
+ /**
32
+ * Clear stored credentials
33
+ */
34
+ export declare function clearCredentials(): Promise<void>;
35
+ /**
36
+ * Get stored user info
37
+ */
38
+ export declare function getStoredUser(): Promise<Credentials['user'] | null>;
39
+ /**
40
+ * Check if user is logged in
41
+ */
42
+ export declare function isLoggedIn(): Promise<boolean>;
43
+ export {};
44
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAazE;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAGnD"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * CLI Authentication
3
+ *
4
+ * Handles storing and retrieving auth tokens for the CLI.
5
+ * Tokens are stored in ~/.quickback/credentials.json
6
+ *
7
+ * NOTE: The CLI uses Device Authorization flow which returns a CLI-specific token
8
+ * via the /cli/exchange endpoint. This is different from Better Auth's session
9
+ * tokens returned in the `set-auth-token` header.
10
+ *
11
+ * If using Better Auth session tokens directly (e.g., from sign-in), they must
12
+ * remain URL-encoded (with %2F, %3D, etc.) when passed in Authorization headers.
13
+ */
14
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from 'fs';
15
+ import { homedir } from 'os';
16
+ import { join } from 'path';
17
+ const CONFIG_DIR = join(homedir(), '.quickback');
18
+ const CREDENTIALS_FILE = join(CONFIG_DIR, 'credentials.json');
19
+ /**
20
+ * Get stored auth token
21
+ */
22
+ export async function getStoredToken() {
23
+ try {
24
+ if (!existsSync(CREDENTIALS_FILE)) {
25
+ return null;
26
+ }
27
+ const data = readFileSync(CREDENTIALS_FILE, 'utf-8');
28
+ const credentials = JSON.parse(data);
29
+ // Check if token is expired
30
+ if (credentials.expiresAt) {
31
+ const expiresAt = new Date(credentials.expiresAt);
32
+ if (expiresAt < new Date()) {
33
+ // Token expired, clear it
34
+ await clearCredentials();
35
+ return null;
36
+ }
37
+ }
38
+ return credentials.token;
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ /**
45
+ * Store auth credentials
46
+ */
47
+ export async function storeCredentials(credentials) {
48
+ // Ensure config directory exists
49
+ if (!existsSync(CONFIG_DIR)) {
50
+ mkdirSync(CONFIG_DIR, { recursive: true });
51
+ }
52
+ writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2), 'utf-8');
53
+ }
54
+ /**
55
+ * Clear stored credentials
56
+ */
57
+ export async function clearCredentials() {
58
+ if (existsSync(CREDENTIALS_FILE)) {
59
+ unlinkSync(CREDENTIALS_FILE);
60
+ }
61
+ }
62
+ /**
63
+ * Get stored user info
64
+ */
65
+ export async function getStoredUser() {
66
+ try {
67
+ if (!existsSync(CREDENTIALS_FILE)) {
68
+ return null;
69
+ }
70
+ const data = readFileSync(CREDENTIALS_FILE, 'utf-8');
71
+ const credentials = JSON.parse(data);
72
+ return credentials.user || null;
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ }
78
+ /**
79
+ * Check if user is logged in
80
+ */
81
+ export async function isLoggedIn() {
82
+ const token = await getStoredToken();
83
+ return token !== null;
84
+ }
85
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAY9D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElD,4BAA4B;QAC5B,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC3B,0BAA0B;gBAC1B,MAAM,gBAAgB,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC,KAAK,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAwB;IAC7D,iCAAiC;IACjC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElD,OAAO,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IACrC,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Compiler Stubs for CLI Runtime
3
+ *
4
+ * These stub functions allow config/resource/action definition files to be loaded
5
+ * by the CLI without needing the full @quickback/compiler package.
6
+ *
7
+ * The actual validation happens server-side in the compiler worker.
8
+ */
9
+ /**
10
+ * Stub for defineConfig - just returns the config as-is
11
+ */
12
+ export declare function defineConfig(config: Record<string, unknown>): Record<string, unknown>;
13
+ /**
14
+ * Stub for defineRuntime - returns provider config
15
+ */
16
+ export declare function defineRuntime(name: string, config?: Record<string, unknown>): {
17
+ name: string;
18
+ config: Record<string, unknown>;
19
+ };
20
+ /**
21
+ * Stub for defineDatabase - returns provider config
22
+ */
23
+ export declare function defineDatabase(name: string, config?: Record<string, unknown>): {
24
+ name: string;
25
+ config: Record<string, unknown>;
26
+ };
27
+ /**
28
+ * Stub for defineAuth - returns provider config
29
+ */
30
+ export declare function defineAuth(name: string, config?: Record<string, unknown>): {
31
+ name: string;
32
+ config: Record<string, unknown>;
33
+ };
34
+ /**
35
+ * Stub for defineStorage - returns provider config
36
+ */
37
+ export declare function defineStorage(name: string, config?: Record<string, unknown>): {
38
+ name: string;
39
+ config: Record<string, unknown>;
40
+ };
41
+ /**
42
+ * Stub for defineResource - just returns the config with schema reference
43
+ */
44
+ export declare function defineResource<TSchema>(schema: TSchema, config: Record<string, unknown>): Record<string, unknown> & {
45
+ __schema: TSchema;
46
+ };
47
+ /**
48
+ * Stub for defineTable - combines schema with all configuration
49
+ *
50
+ * This is the new unified API that combines schema definition with
51
+ * all configuration (firewall, guards, crud, embeddings, realtime) in one place.
52
+ */
53
+ export declare function defineTable<TSchema>(schema: TSchema, config: Record<string, unknown>): Record<string, unknown> & {
54
+ __schema: TSchema;
55
+ };
56
+ /**
57
+ * Stub for defineActions - just returns the actions with schema reference
58
+ */
59
+ export declare function defineActions<TSchema>(schema: TSchema, actions: Record<string, unknown>): Record<string, unknown> & {
60
+ __schema: TSchema;
61
+ };
62
+ /**
63
+ * Stub for defineAction - returns a curried function that returns the config
64
+ */
65
+ export declare function defineAction<TSchema = unknown>(): (config: Record<string, unknown>) => Record<string, unknown>;
66
+ //# sourceMappingURL=compiler-stubs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler-stubs.d.ts","sourceRoot":"","sources":["../../src/lib/compiler-stubs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAErF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAE/H;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAEhI;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAE5H;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAE/H;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EACpC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAKjD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EACjC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAKjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EACnC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAKjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAG,OAAO,MACpC,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,6BACxC"}