appflare 0.2.43 → 0.2.45

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 (139) hide show
  1. package/Documentation.md +898 -898
  2. package/cli/commands/index.ts +247 -247
  3. package/cli/generate.ts +360 -360
  4. package/cli/index.ts +120 -120
  5. package/cli/load-config.ts +184 -184
  6. package/cli/schema-compiler.ts +1366 -1363
  7. package/cli/templates/auth/README.md +156 -156
  8. package/cli/templates/auth/config.ts +61 -61
  9. package/cli/templates/auth/route-config.ts +1 -1
  10. package/cli/templates/auth/route-handler.ts +1 -1
  11. package/cli/templates/auth/route-request-utils.ts +5 -5
  12. package/cli/templates/auth/route.config.ts +18 -18
  13. package/cli/templates/auth/route.handler.ts +18 -18
  14. package/cli/templates/auth/route.request-utils.ts +55 -55
  15. package/cli/templates/auth/route.ts +14 -14
  16. package/cli/templates/core/README.md +266 -266
  17. package/cli/templates/core/app-creation.ts +19 -19
  18. package/cli/templates/core/client/appflare.ts +112 -112
  19. package/cli/templates/core/client/handlers/index.ts +763 -763
  20. package/cli/templates/core/client/handlers.ts +1 -1
  21. package/cli/templates/core/client/index.ts +7 -7
  22. package/cli/templates/core/client/storage.ts +195 -195
  23. package/cli/templates/core/client/types.ts +187 -187
  24. package/cli/templates/core/client-modules/appflare.ts +1 -1
  25. package/cli/templates/core/client-modules/handlers.ts +1 -1
  26. package/cli/templates/core/client-modules/index.ts +1 -1
  27. package/cli/templates/core/client-modules/storage.ts +1 -1
  28. package/cli/templates/core/client-modules/types.ts +1 -1
  29. package/cli/templates/core/client.artifacts.ts +39 -39
  30. package/cli/templates/core/client.ts +4 -4
  31. package/cli/templates/core/drizzle.ts +15 -15
  32. package/cli/templates/core/export.ts +14 -14
  33. package/cli/templates/core/handlers.route.ts +24 -24
  34. package/cli/templates/core/handlers.ts +1 -1
  35. package/cli/templates/core/imports.ts +9 -9
  36. package/cli/templates/core/server.ts +38 -38
  37. package/cli/templates/core/types.ts +6 -6
  38. package/cli/templates/core/wrangler.ts +109 -109
  39. package/cli/templates/dashboard/builders/functions/index.ts +17 -17
  40. package/cli/templates/dashboard/builders/functions/render-page/header.ts +20 -20
  41. package/cli/templates/dashboard/builders/functions/render-page/index.ts +33 -33
  42. package/cli/templates/dashboard/builders/functions/render-page/request-panel.ts +171 -171
  43. package/cli/templates/dashboard/builders/functions/render-page/result-panel.ts +85 -85
  44. package/cli/templates/dashboard/builders/functions/render-page/scripts.ts +554 -554
  45. package/cli/templates/dashboard/builders/functions/tree-builder.ts +47 -47
  46. package/cli/templates/dashboard/builders/navigation.ts +155 -155
  47. package/cli/templates/dashboard/builders/storage/index.ts +13 -13
  48. package/cli/templates/dashboard/builders/storage/routes/create-directory-route.ts +29 -29
  49. package/cli/templates/dashboard/builders/storage/routes/delete-route.ts +18 -18
  50. package/cli/templates/dashboard/builders/storage/routes/download-route.ts +23 -23
  51. package/cli/templates/dashboard/builders/storage/routes/index.ts +22 -22
  52. package/cli/templates/dashboard/builders/storage/routes/list-route.ts +25 -25
  53. package/cli/templates/dashboard/builders/storage/routes/preview-route.ts +21 -21
  54. package/cli/templates/dashboard/builders/storage/routes/upload-route.ts +21 -21
  55. package/cli/templates/dashboard/builders/storage/runtime/helpers.ts +72 -72
  56. package/cli/templates/dashboard/builders/storage/runtime/storage-page.ts +130 -130
  57. package/cli/templates/dashboard/builders/table-routes/common/drawer-panel.ts +27 -27
  58. package/cli/templates/dashboard/builders/table-routes/common/pagination.ts +30 -30
  59. package/cli/templates/dashboard/builders/table-routes/common/search-bar.ts +23 -23
  60. package/cli/templates/dashboard/builders/table-routes/fragments.ts +217 -217
  61. package/cli/templates/dashboard/builders/table-routes/helpers.ts +45 -45
  62. package/cli/templates/dashboard/builders/table-routes/index.ts +8 -8
  63. package/cli/templates/dashboard/builders/table-routes/table/actions-cell.ts +71 -71
  64. package/cli/templates/dashboard/builders/table-routes/table/get-route.ts +291 -291
  65. package/cli/templates/dashboard/builders/table-routes/table/index.ts +80 -80
  66. package/cli/templates/dashboard/builders/table-routes/table/post-routes.ts +163 -163
  67. package/cli/templates/dashboard/builders/table-routes/table-route.ts +7 -7
  68. package/cli/templates/dashboard/builders/table-routes/users/get-route.ts +69 -69
  69. package/cli/templates/dashboard/builders/table-routes/users/html/modals.ts +57 -57
  70. package/cli/templates/dashboard/builders/table-routes/users/html/page.ts +27 -27
  71. package/cli/templates/dashboard/builders/table-routes/users/html/table.ts +128 -128
  72. package/cli/templates/dashboard/builders/table-routes/users/index.ts +32 -32
  73. package/cli/templates/dashboard/builders/table-routes/users/post-routes.ts +150 -150
  74. package/cli/templates/dashboard/builders/table-routes/users/redirect.ts +14 -14
  75. package/cli/templates/dashboard/builders/table-routes/users-route.ts +10 -10
  76. package/cli/templates/dashboard/components/dashboard-home.ts +23 -23
  77. package/cli/templates/dashboard/components/layout.ts +420 -420
  78. package/cli/templates/dashboard/components/login-page.ts +65 -65
  79. package/cli/templates/dashboard/index.ts +61 -61
  80. package/cli/templates/dashboard/types.ts +9 -9
  81. package/cli/templates/handlers/README.md +353 -353
  82. package/cli/templates/handlers/auth.ts +37 -37
  83. package/cli/templates/handlers/execution.ts +42 -42
  84. package/cli/templates/handlers/generators/context/context-creation.ts +101 -101
  85. package/cli/templates/handlers/generators/context/error-helpers.ts +11 -11
  86. package/cli/templates/handlers/generators/context/scheduler.ts +24 -24
  87. package/cli/templates/handlers/generators/context/storage-api.ts +82 -82
  88. package/cli/templates/handlers/generators/context/storage-helpers.ts +59 -59
  89. package/cli/templates/handlers/generators/context/types.ts +40 -40
  90. package/cli/templates/handlers/generators/context.ts +43 -43
  91. package/cli/templates/handlers/generators/execution.ts +15 -15
  92. package/cli/templates/handlers/generators/handlers.ts +14 -14
  93. package/cli/templates/handlers/generators/registration/modules/cron.ts +26 -26
  94. package/cli/templates/handlers/generators/registration/modules/realtime/auth.ts +75 -75
  95. package/cli/templates/handlers/generators/registration/modules/realtime/durable-object.ts +144 -144
  96. package/cli/templates/handlers/generators/registration/modules/realtime/index.ts +14 -14
  97. package/cli/templates/handlers/generators/registration/modules/realtime/publisher.ts +102 -102
  98. package/cli/templates/handlers/generators/registration/modules/realtime/routes.ts +164 -164
  99. package/cli/templates/handlers/generators/registration/modules/realtime/types.ts +30 -30
  100. package/cli/templates/handlers/generators/registration/modules/realtime/utils.ts +510 -510
  101. package/cli/templates/handlers/generators/registration/modules/scheduler.ts +56 -56
  102. package/cli/templates/handlers/generators/registration/modules/storage.ts +199 -199
  103. package/cli/templates/handlers/generators/registration/sections.ts +210 -210
  104. package/cli/templates/handlers/generators/types/context.ts +121 -121
  105. package/cli/templates/handlers/generators/types/core.ts +106 -106
  106. package/cli/templates/handlers/generators/types/operations.ts +135 -135
  107. package/cli/templates/handlers/generators/types/query-definitions/filter-and-where-types.ts +291 -291
  108. package/cli/templates/handlers/generators/types/query-definitions/query-api-types.ts +135 -135
  109. package/cli/templates/handlers/generators/types/query-definitions/query-helper-functions.ts +1382 -1382
  110. package/cli/templates/handlers/generators/types/query-definitions/schema-and-table-types.ts +278 -278
  111. package/cli/templates/handlers/generators/types/query-definitions.ts +13 -13
  112. package/cli/templates/handlers/generators/types/query-runtime/handled-error.ts +13 -13
  113. package/cli/templates/handlers/generators/types/query-runtime/runtime-aggregate-and-footer.ts +174 -174
  114. package/cli/templates/handlers/generators/types/query-runtime/runtime-read.ts +157 -157
  115. package/cli/templates/handlers/generators/types/query-runtime/runtime-setup.ts +45 -45
  116. package/cli/templates/handlers/generators/types/query-runtime/runtime-write.ts +958 -958
  117. package/cli/templates/handlers/generators/types/query-runtime.ts +15 -15
  118. package/cli/templates/handlers/index.ts +47 -47
  119. package/cli/templates/handlers/operations.ts +116 -116
  120. package/cli/templates/handlers/registration.ts +91 -91
  121. package/cli/templates/handlers/types.ts +17 -17
  122. package/cli/templates/handlers/utils.ts +48 -48
  123. package/cli/types.ts +110 -110
  124. package/cli/utils/handler-discovery.ts +466 -466
  125. package/cli/utils/json-utils.ts +24 -24
  126. package/cli/utils/path-utils.ts +19 -19
  127. package/cli/utils/schema-discovery.ts +399 -399
  128. package/dist/cli/index.js +21 -21
  129. package/dist/cli/index.mjs +21 -21
  130. package/index.ts +18 -18
  131. package/package.json +58 -58
  132. package/react/index.ts +5 -5
  133. package/react/use-infinite-query.ts +255 -255
  134. package/react/use-mutation.ts +89 -89
  135. package/react/use-query.ts +210 -210
  136. package/schema.ts +641 -641
  137. package/test-better-auth-hash.ts +2 -2
  138. package/tsconfig.json +6 -6
  139. package/tsup.config.ts +82 -82
@@ -1,38 +1,38 @@
1
- import { generateAuthRoute } from "../auth/route";
2
- import { generateAppCreation } from "./app-creation";
3
- import { generateExport } from "./export";
4
- import { generateHandlersRoute } from "./handlers.route";
5
- import { generateImports } from "./imports";
6
- import { generateTypes } from "./types";
7
-
8
- export function generateServerSource(
9
- authBasePath: string,
10
- databaseBinding: string,
11
- kvBinding?: string,
12
- schedulerBinding?: string,
13
- r2Binding?: string,
14
- realtimeBinding?: string,
15
- realtimeObjectName?: string,
16
- realtimeSubscribePath?: string,
17
- realtimeWebsocketPath?: string,
18
- realtimeProtocol?: string,
19
- ): string {
20
- return (
21
- generateImports() +
22
- generateTypes() +
23
- generateAppCreation() +
24
- generateHandlersRoute(
25
- databaseBinding,
26
- kvBinding,
27
- schedulerBinding,
28
- r2Binding,
29
- realtimeBinding,
30
- realtimeObjectName,
31
- realtimeSubscribePath,
32
- realtimeWebsocketPath,
33
- realtimeProtocol,
34
- ) +
35
- generateAuthRoute(authBasePath, databaseBinding, kvBinding) +
36
- generateExport()
37
- );
38
- }
1
+ import { generateAuthRoute } from "../auth/route";
2
+ import { generateAppCreation } from "./app-creation";
3
+ import { generateExport } from "./export";
4
+ import { generateHandlersRoute } from "./handlers.route";
5
+ import { generateImports } from "./imports";
6
+ import { generateTypes } from "./types";
7
+
8
+ export function generateServerSource(
9
+ authBasePath: string,
10
+ databaseBinding: string,
11
+ kvBinding?: string,
12
+ schedulerBinding?: string,
13
+ r2Binding?: string,
14
+ realtimeBinding?: string,
15
+ realtimeObjectName?: string,
16
+ realtimeSubscribePath?: string,
17
+ realtimeWebsocketPath?: string,
18
+ realtimeProtocol?: string,
19
+ ): string {
20
+ return (
21
+ generateImports() +
22
+ generateTypes() +
23
+ generateAppCreation() +
24
+ generateHandlersRoute(
25
+ databaseBinding,
26
+ kvBinding,
27
+ schedulerBinding,
28
+ r2Binding,
29
+ realtimeBinding,
30
+ realtimeObjectName,
31
+ realtimeSubscribePath,
32
+ realtimeWebsocketPath,
33
+ realtimeProtocol,
34
+ ) +
35
+ generateAuthRoute(authBasePath, databaseBinding, kvBinding) +
36
+ generateExport()
37
+ );
38
+ }
@@ -1,6 +1,6 @@
1
- export function generateTypes(): string {
2
- return `type WorkerEnv = {
3
- \tBindings: Record<string, unknown>;
4
- };
5
- `;
6
- }
1
+ export function generateTypes(): string {
2
+ return `type WorkerEnv = {
3
+ \tBindings: Record<string, unknown>;
4
+ };
5
+ `;
6
+ }
@@ -1,109 +1,109 @@
1
- import type { JsonObject, LoadedAppflareConfig } from "../../types";
2
- import type { DiscoveredHandlerOperation } from "../../utils/handler-discovery";
3
- import { deepMergeJson } from "../../utils/json-utils";
4
-
5
- function unique(values: string[]): string[] {
6
- return Array.from(new Set(values.filter((value) => value.length > 0)));
7
- }
8
-
9
- export function generateWranglerJson(
10
- config: LoadedAppflareConfig,
11
- operations: DiscoveredHandlerOperation[],
12
- ): JsonObject {
13
- const schedulerOperations = operations.filter(
14
- (operation) => operation.kind === "scheduler" || operation.kind === "cron",
15
- );
16
- const cronTriggers = unique(
17
- operations
18
- .filter((operation) => operation.kind === "cron")
19
- .flatMap((operation) => operation.cronTriggers ?? []),
20
- );
21
- const schedulerEnabled =
22
- config.config.scheduler.enabled && schedulerOperations.length > 0;
23
- const realtimeEnabled = config.config.realtime.enabled;
24
- const workerNameOverride =
25
- typeof config.config.wranglerOverrides?.name === "string"
26
- ? config.config.wranglerOverrides.name
27
- : undefined;
28
- const workerName = workerNameOverride ?? "appflare-worker";
29
- const schedulerQueueName =
30
- config.config.scheduler.queue ?? `${workerName}-scheduler`;
31
-
32
- const wranglerBase: JsonObject = {
33
- name: workerName,
34
- main: "./src/index.ts",
35
- d1_databases: config.config.database.map((database) => ({
36
- binding: database.binding,
37
- database_name: database.databaseName,
38
- database_id: database.databaseId,
39
- preview_database_id: database.previewDatabaseId ?? database.databaseId,
40
- ...(database.migrationsDir
41
- ? { migrations_dir: database.migrationsDir }
42
- : {}),
43
- })),
44
- kv_namespaces: config.config.kv.map((namespace) => ({
45
- binding: namespace.binding,
46
- id: namespace.id,
47
- ...(namespace.previewId ? { preview_id: namespace.previewId } : {}),
48
- })),
49
- r2_buckets: config.config.r2.map((bucket) => ({
50
- binding: bucket.binding,
51
- bucket_name: bucket.bucketName,
52
- ...(bucket.previewBucketName
53
- ? { preview_bucket_name: bucket.previewBucketName }
54
- : {}),
55
- ...(bucket.jurisdiction ? { jurisdiction: bucket.jurisdiction } : {}),
56
- })),
57
- ...(schedulerEnabled
58
- ? {
59
- queues: {
60
- producers: [
61
- {
62
- binding: config.config.scheduler.binding,
63
- queue: schedulerQueueName,
64
- },
65
- ],
66
- consumers: [
67
- {
68
- queue: schedulerQueueName,
69
- },
70
- ],
71
- },
72
- }
73
- : {}),
74
- ...(cronTriggers.length > 0
75
- ? {
76
- triggers: {
77
- crons: cronTriggers,
78
- },
79
- }
80
- : {}),
81
- ...(realtimeEnabled
82
- ? {
83
- durable_objects: {
84
- bindings: [
85
- {
86
- name: config.config.realtime.binding,
87
- class_name: config.config.realtime.className,
88
- },
89
- ],
90
- },
91
- migrations: [
92
- {
93
- tag: "appflare-realtime-v1",
94
- new_sqlite_classes: [config.config.realtime.className],
95
- },
96
- ],
97
- }
98
- : {}),
99
- };
100
-
101
- if (!config.config.wranglerOverrides) {
102
- return wranglerBase;
103
- }
104
-
105
- const { scheduler: _ignoredSchedulerOverride, ...wranglerOverrides } =
106
- config.config.wranglerOverrides;
107
-
108
- return deepMergeJson(wranglerBase, wranglerOverrides);
109
- }
1
+ import type { JsonObject, LoadedAppflareConfig } from "../../types";
2
+ import type { DiscoveredHandlerOperation } from "../../utils/handler-discovery";
3
+ import { deepMergeJson } from "../../utils/json-utils";
4
+
5
+ function unique(values: string[]): string[] {
6
+ return Array.from(new Set(values.filter((value) => value.length > 0)));
7
+ }
8
+
9
+ export function generateWranglerJson(
10
+ config: LoadedAppflareConfig,
11
+ operations: DiscoveredHandlerOperation[],
12
+ ): JsonObject {
13
+ const schedulerOperations = operations.filter(
14
+ (operation) => operation.kind === "scheduler" || operation.kind === "cron",
15
+ );
16
+ const cronTriggers = unique(
17
+ operations
18
+ .filter((operation) => operation.kind === "cron")
19
+ .flatMap((operation) => operation.cronTriggers ?? []),
20
+ );
21
+ const schedulerEnabled =
22
+ config.config.scheduler.enabled && schedulerOperations.length > 0;
23
+ const realtimeEnabled = config.config.realtime.enabled;
24
+ const workerNameOverride =
25
+ typeof config.config.wranglerOverrides?.name === "string"
26
+ ? config.config.wranglerOverrides.name
27
+ : undefined;
28
+ const workerName = workerNameOverride ?? "appflare-worker";
29
+ const schedulerQueueName =
30
+ config.config.scheduler.queue ?? `${workerName}-scheduler`;
31
+
32
+ const wranglerBase: JsonObject = {
33
+ name: workerName,
34
+ main: "./src/index.ts",
35
+ d1_databases: config.config.database.map((database) => ({
36
+ binding: database.binding,
37
+ database_name: database.databaseName,
38
+ database_id: database.databaseId,
39
+ preview_database_id: database.previewDatabaseId ?? database.databaseId,
40
+ ...(database.migrationsDir
41
+ ? { migrations_dir: database.migrationsDir }
42
+ : {}),
43
+ })),
44
+ kv_namespaces: config.config.kv.map((namespace) => ({
45
+ binding: namespace.binding,
46
+ id: namespace.id,
47
+ ...(namespace.previewId ? { preview_id: namespace.previewId } : {}),
48
+ })),
49
+ r2_buckets: config.config.r2.map((bucket) => ({
50
+ binding: bucket.binding,
51
+ bucket_name: bucket.bucketName,
52
+ ...(bucket.previewBucketName
53
+ ? { preview_bucket_name: bucket.previewBucketName }
54
+ : {}),
55
+ ...(bucket.jurisdiction ? { jurisdiction: bucket.jurisdiction } : {}),
56
+ })),
57
+ ...(schedulerEnabled
58
+ ? {
59
+ queues: {
60
+ producers: [
61
+ {
62
+ binding: config.config.scheduler.binding,
63
+ queue: schedulerQueueName,
64
+ },
65
+ ],
66
+ consumers: [
67
+ {
68
+ queue: schedulerQueueName,
69
+ },
70
+ ],
71
+ },
72
+ }
73
+ : {}),
74
+ ...(cronTriggers.length > 0
75
+ ? {
76
+ triggers: {
77
+ crons: cronTriggers,
78
+ },
79
+ }
80
+ : {}),
81
+ ...(realtimeEnabled
82
+ ? {
83
+ durable_objects: {
84
+ bindings: [
85
+ {
86
+ name: config.config.realtime.binding,
87
+ class_name: config.config.realtime.className,
88
+ },
89
+ ],
90
+ },
91
+ migrations: [
92
+ {
93
+ tag: "appflare-realtime-v1",
94
+ new_sqlite_classes: [config.config.realtime.className],
95
+ },
96
+ ],
97
+ }
98
+ : {}),
99
+ };
100
+
101
+ if (!config.config.wranglerOverrides) {
102
+ return wranglerBase;
103
+ }
104
+
105
+ const { scheduler: _ignoredSchedulerOverride, ...wranglerOverrides } =
106
+ config.config.wranglerOverrides;
107
+
108
+ return deepMergeJson(wranglerBase, wranglerOverrides);
109
+ }
@@ -1,17 +1,17 @@
1
- import { DiscoveredHandlerOperation } from "../../../../utils/handler-discovery";
2
- import { buildFunctionPage } from "./render-page";
3
-
4
- export function buildFunctionRoutes(
5
- handlers: DiscoveredHandlerOperation[],
6
- ): string {
7
- const routes = handlers.map((h) => {
8
- if (h.kind !== "query" && h.kind !== "mutation") return "";
9
-
10
- return `
11
- adminApp.get('/functions${h.routePath}', (c) => {
12
- ${buildFunctionPage(h)}
13
- });`;
14
- });
15
-
16
- return routes.join("\n");
17
- }
1
+ import { DiscoveredHandlerOperation } from "../../../../utils/handler-discovery";
2
+ import { buildFunctionPage } from "./render-page";
3
+
4
+ export function buildFunctionRoutes(
5
+ handlers: DiscoveredHandlerOperation[],
6
+ ): string {
7
+ const routes = handlers.map((h) => {
8
+ if (h.kind !== "query" && h.kind !== "mutation") return "";
9
+
10
+ return `
11
+ adminApp.get('/functions${h.routePath}', (c) => {
12
+ ${buildFunctionPage(h)}
13
+ });`;
14
+ });
15
+
16
+ return routes.join("\n");
17
+ }
@@ -1,20 +1,20 @@
1
- import { DiscoveredHandlerOperation } from "../../../../../utils/handler-discovery";
2
-
3
- export function renderHeader(h: DiscoveredHandlerOperation): string {
4
- return `
5
- <div class="flex items-center justify-between">
6
- <div class="flex items-center gap-3">
7
- <div class="w-10 h-10 rounded-xl bg-primary/10 flex items-center justify-center">
8
- <iconify-icon icon="${h.kind === "query" ? "solar:reorder-bold-duotone" : "solar:bolt-bold-duotone"}" width="24" height="24" class="text-primary"></iconify-icon>
9
- </div>
10
- <div>
11
- <h1 class="text-xl font-bold tracking-tight">${h.exportName}</h1>
12
- <p class="text-xs opacity-50 font-medium uppercase tracking-wider">${h.kind}</p>
13
- </div>
14
- </div>
15
- <div class="flex items-center gap-2">
16
- <span class="badge badge-sm badge-ghost font-mono opacity-50 px-2 py-3">/api${h.routePath}</span>
17
- </div>
18
- </div>
19
- `;
20
- }
1
+ import { DiscoveredHandlerOperation } from "../../../../../utils/handler-discovery";
2
+
3
+ export function renderHeader(h: DiscoveredHandlerOperation): string {
4
+ return `
5
+ <div class="flex items-center justify-between">
6
+ <div class="flex items-center gap-3">
7
+ <div class="w-10 h-10 rounded-xl bg-primary/10 flex items-center justify-center">
8
+ <iconify-icon icon="${h.kind === "query" ? "solar:reorder-bold-duotone" : "solar:bolt-bold-duotone"}" width="24" height="24" class="text-primary"></iconify-icon>
9
+ </div>
10
+ <div>
11
+ <h1 class="text-xl font-bold tracking-tight">${h.exportName}</h1>
12
+ <p class="text-xs opacity-50 font-medium uppercase tracking-wider">${h.kind}</p>
13
+ </div>
14
+ </div>
15
+ <div class="flex items-center gap-2">
16
+ <span class="badge badge-sm badge-ghost font-mono opacity-50 px-2 py-3">/api${h.routePath}</span>
17
+ </div>
18
+ </div>
19
+ `;
20
+ }
@@ -1,33 +1,33 @@
1
- import { DiscoveredHandlerOperation } from "../../../../../utils/handler-discovery";
2
- import { renderHeader } from "./header";
3
- import { renderRequestPanel } from "./request-panel";
4
- import { renderResultPanel } from "./result-panel";
5
- import { renderScripts } from "./scripts";
6
-
7
- export function buildFunctionPage(h: DiscoveredHandlerOperation): string {
8
- return `
9
- const content = html\`
10
- <div class="flex flex-col gap-6 max-w-5xl mx-auto" id="main-content">
11
- ${renderHeader(h)}
12
-
13
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
14
- <!-- Request Panel -->
15
- ${renderRequestPanel(h)}
16
-
17
- <!-- Result Panel -->
18
- ${renderResultPanel()}
19
- </div>
20
- </div>
21
-
22
- ${renderScripts(h)}
23
- \`;
24
-
25
- if (c.req.header('hx-request')) {
26
- return c.html(content);
27
- }
28
-
29
- return c.html(Layout({
30
- title: "${h.exportName} - Functions",
31
- children: content
32
- }));`;
33
- }
1
+ import { DiscoveredHandlerOperation } from "../../../../../utils/handler-discovery";
2
+ import { renderHeader } from "./header";
3
+ import { renderRequestPanel } from "./request-panel";
4
+ import { renderResultPanel } from "./result-panel";
5
+ import { renderScripts } from "./scripts";
6
+
7
+ export function buildFunctionPage(h: DiscoveredHandlerOperation): string {
8
+ return `
9
+ const content = html\`
10
+ <div class="flex flex-col gap-6 max-w-5xl mx-auto" id="main-content">
11
+ ${renderHeader(h)}
12
+
13
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
14
+ <!-- Request Panel -->
15
+ ${renderRequestPanel(h)}
16
+
17
+ <!-- Result Panel -->
18
+ ${renderResultPanel()}
19
+ </div>
20
+ </div>
21
+
22
+ ${renderScripts(h)}
23
+ \`;
24
+
25
+ if (c.req.header('hx-request')) {
26
+ return c.html(content);
27
+ }
28
+
29
+ return c.html(Layout({
30
+ title: "${h.exportName} - Functions",
31
+ children: content
32
+ }));`;
33
+ }