appflare 0.2.30 → 0.2.32

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 (140) hide show
  1. package/Documentation.md +758 -758
  2. package/cli/commands/index.ts +238 -238
  3. package/cli/generate.ts +243 -178
  4. package/cli/index.ts +120 -120
  5. package/cli/load-config.ts +184 -184
  6. package/cli/schema-compiler.ts +1183 -1183
  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 +748 -748
  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 +186 -186
  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/navigation.ts +122 -122
  46. package/cli/templates/dashboard/builders/storage/index.ts +13 -13
  47. package/cli/templates/dashboard/builders/storage/routes/create-directory-route.ts +29 -29
  48. package/cli/templates/dashboard/builders/storage/routes/delete-route.ts +18 -18
  49. package/cli/templates/dashboard/builders/storage/routes/download-route.ts +23 -23
  50. package/cli/templates/dashboard/builders/storage/routes/index.ts +22 -22
  51. package/cli/templates/dashboard/builders/storage/routes/list-route.ts +25 -25
  52. package/cli/templates/dashboard/builders/storage/routes/preview-route.ts +21 -21
  53. package/cli/templates/dashboard/builders/storage/routes/upload-route.ts +21 -21
  54. package/cli/templates/dashboard/builders/storage/runtime/helpers.ts +72 -72
  55. package/cli/templates/dashboard/builders/storage/runtime/storage-page.ts +130 -130
  56. package/cli/templates/dashboard/builders/table-routes/common/drawer-panel.ts +27 -27
  57. package/cli/templates/dashboard/builders/table-routes/common/pagination.ts +30 -30
  58. package/cli/templates/dashboard/builders/table-routes/common/search-bar.ts +23 -23
  59. package/cli/templates/dashboard/builders/table-routes/fragments.ts +217 -217
  60. package/cli/templates/dashboard/builders/table-routes/helpers.ts +45 -45
  61. package/cli/templates/dashboard/builders/table-routes/index.ts +8 -8
  62. package/cli/templates/dashboard/builders/table-routes/table/actions-cell.ts +71 -71
  63. package/cli/templates/dashboard/builders/table-routes/table/get-route.ts +291 -291
  64. package/cli/templates/dashboard/builders/table-routes/table/index.ts +80 -80
  65. package/cli/templates/dashboard/builders/table-routes/table/post-routes.ts +163 -163
  66. package/cli/templates/dashboard/builders/table-routes/table-route.ts +7 -7
  67. package/cli/templates/dashboard/builders/table-routes/users/get-route.ts +69 -69
  68. package/cli/templates/dashboard/builders/table-routes/users/html/modals.ts +57 -57
  69. package/cli/templates/dashboard/builders/table-routes/users/html/page.ts +27 -27
  70. package/cli/templates/dashboard/builders/table-routes/users/html/table.ts +128 -128
  71. package/cli/templates/dashboard/builders/table-routes/users/index.ts +32 -32
  72. package/cli/templates/dashboard/builders/table-routes/users/post-routes.ts +150 -150
  73. package/cli/templates/dashboard/builders/table-routes/users/redirect.ts +14 -14
  74. package/cli/templates/dashboard/builders/table-routes/users-route.ts +10 -10
  75. package/cli/templates/dashboard/components/dashboard-home.ts +23 -23
  76. package/cli/templates/dashboard/components/layout.ts +388 -388
  77. package/cli/templates/dashboard/components/login-page.ts +65 -65
  78. package/cli/templates/dashboard/index.ts +61 -61
  79. package/cli/templates/dashboard/types.ts +9 -9
  80. package/cli/templates/handlers/README.md +353 -353
  81. package/cli/templates/handlers/auth.ts +37 -37
  82. package/cli/templates/handlers/execution.ts +42 -42
  83. package/cli/templates/handlers/generators/context/context-creation.ts +101 -101
  84. package/cli/templates/handlers/generators/context/error-helpers.ts +11 -11
  85. package/cli/templates/handlers/generators/context/scheduler.ts +24 -24
  86. package/cli/templates/handlers/generators/context/storage-api.ts +82 -82
  87. package/cli/templates/handlers/generators/context/storage-helpers.ts +59 -59
  88. package/cli/templates/handlers/generators/context/types.ts +40 -40
  89. package/cli/templates/handlers/generators/context.ts +43 -43
  90. package/cli/templates/handlers/generators/execution.ts +15 -15
  91. package/cli/templates/handlers/generators/handlers.ts +13 -13
  92. package/cli/templates/handlers/generators/registration/modules/cron.ts +26 -26
  93. package/cli/templates/handlers/generators/registration/modules/realtime/auth.ts +75 -75
  94. package/cli/templates/handlers/generators/registration/modules/realtime/durable-object.ts +144 -144
  95. package/cli/templates/handlers/generators/registration/modules/realtime/index.ts +14 -14
  96. package/cli/templates/handlers/generators/registration/modules/realtime/publisher.ts +102 -102
  97. package/cli/templates/handlers/generators/registration/modules/realtime/routes.ts +164 -164
  98. package/cli/templates/handlers/generators/registration/modules/realtime/types.ts +30 -30
  99. package/cli/templates/handlers/generators/registration/modules/realtime/utils.ts +516 -516
  100. package/cli/templates/handlers/generators/registration/modules/scheduler.ts +56 -56
  101. package/cli/templates/handlers/generators/registration/modules/storage.ts +199 -199
  102. package/cli/templates/handlers/generators/registration/sections.ts +210 -210
  103. package/cli/templates/handlers/generators/types/context.ts +92 -92
  104. package/cli/templates/handlers/generators/types/core.ts +106 -106
  105. package/cli/templates/handlers/generators/types/operations.ts +135 -135
  106. package/cli/templates/handlers/generators/types/query-definitions/filter-and-where-types.ts +281 -259
  107. package/cli/templates/handlers/generators/types/query-definitions/query-api-types.ts +135 -135
  108. package/cli/templates/handlers/generators/types/query-definitions/query-helper-functions.ts +1103 -1031
  109. package/cli/templates/handlers/generators/types/query-definitions/schema-and-table-types.ts +278 -246
  110. package/cli/templates/handlers/generators/types/query-definitions.ts +13 -13
  111. package/cli/templates/handlers/generators/types/query-runtime/handled-error.ts +13 -13
  112. package/cli/templates/handlers/generators/types/query-runtime/runtime-aggregate-and-footer.ts +174 -174
  113. package/cli/templates/handlers/generators/types/query-runtime/runtime-read.ts +157 -121
  114. package/cli/templates/handlers/generators/types/query-runtime/runtime-setup.ts +45 -45
  115. package/cli/templates/handlers/generators/types/query-runtime/runtime-write.ts +697 -697
  116. package/cli/templates/handlers/generators/types/query-runtime.ts +15 -15
  117. package/cli/templates/handlers/index.ts +43 -43
  118. package/cli/templates/handlers/operations.ts +116 -116
  119. package/cli/templates/handlers/registration.ts +91 -91
  120. package/cli/templates/handlers/types.ts +15 -15
  121. package/cli/templates/handlers/utils.ts +48 -48
  122. package/cli/types.ts +110 -110
  123. package/cli/utils/handler-discovery.ts +466 -466
  124. package/cli/utils/json-utils.ts +24 -24
  125. package/cli/utils/path-utils.ts +19 -19
  126. package/cli/utils/schema-discovery.ts +399 -399
  127. package/dist/cli/index.d.mts +2 -0
  128. package/dist/cli/index.d.ts +2 -0
  129. package/dist/cli/index.js +366 -203
  130. package/dist/cli/index.mjs +366 -203
  131. package/index.ts +18 -18
  132. package/package.json +58 -58
  133. package/react/index.ts +5 -5
  134. package/react/use-infinite-query.ts +252 -252
  135. package/react/use-mutation.ts +89 -89
  136. package/react/use-query.ts +207 -207
  137. package/schema.ts +415 -415
  138. package/test-better-auth-hash.ts +2 -2
  139. package/tsconfig.json +6 -6
  140. package/tsup.config.ts +82 -82
@@ -1,210 +1,210 @@
1
- import type { DiscoveredHandlerOperation } from "../../../../utils/handler-discovery";
2
-
3
- type IndexedOperation = {
4
- operation: DiscoveredHandlerOperation;
5
- index: number;
6
- alias: string;
7
- };
8
-
9
- export type RegistrationTemplateSections = {
10
- imports: string;
11
- operationSchemas: string;
12
- schedulerSchemas: string;
13
- queryRoutes: string;
14
- mutationRoutes: string;
15
- queryRegistryEntries: string;
16
- schedulerEntries: string;
17
- schedulerPayloadMapEntries: string;
18
- cronEntries: string;
19
- storageHandlersEntries: string;
20
- };
21
-
22
- function toSafeIdentifier(value: string): string {
23
- const sanitized = value.replace(/[^A-Za-z0-9_]/g, "_");
24
- if (/^[0-9]/.test(sanitized)) {
25
- return `_${sanitized}`;
26
- }
27
- return sanitized;
28
- }
29
-
30
- function buildImportAlias(
31
- operation: DiscoveredHandlerOperation,
32
- index: number,
33
- ): string {
34
- const routeName = operation.routePath.replace(/^\//, "").replace(/\//g, "_");
35
- return toSafeIdentifier(`op_${index}_${routeName}`);
36
- }
37
-
38
- function indexOperations(
39
- operations: DiscoveredHandlerOperation[],
40
- ): IndexedOperation[] {
41
- return operations.map((operation, index) => ({
42
- operation,
43
- index,
44
- alias: buildImportAlias(operation, index),
45
- }));
46
- }
47
-
48
- function buildImports(operations: IndexedOperation[]): string {
49
- return operations
50
- .map(({ operation, alias }) => {
51
- return `import { ${operation.exportName} as ${alias} } from "${operation.importPath}";`;
52
- })
53
- .join("\n");
54
- }
55
-
56
- function buildOperationSchemas(operations: IndexedOperation[]): string {
57
- return operations
58
- .filter(
59
- ({ operation }) =>
60
- operation.kind === "query" || operation.kind === "mutation",
61
- )
62
- .map(({ alias }) => {
63
- const schemaName = `${alias}Schema`;
64
- return `const ${schemaName} = z.object(${alias}.definition.args);`;
65
- })
66
- .join("\n");
67
- }
68
-
69
- function buildSchedulerSchemas(operations: IndexedOperation[]): string {
70
- return operations
71
- .filter(({ operation }) => operation.kind === "scheduler")
72
- .map(({ alias }) => {
73
- const schemaName = `${alias}SchedulerSchema`;
74
- return `const ${schemaName} = ${alias}.definition.args ? z.object(${alias}.definition.args) : z.undefined();`;
75
- })
76
- .join("\n");
77
- }
78
-
79
- function buildQueryRoutes(operations: IndexedOperation[]): string {
80
- return operations
81
- .filter(({ operation }) => operation.kind === "query")
82
- .map(({ operation, alias }) => {
83
- const schemaName = `${alias}Schema`;
84
- return `
85
- app.get(
86
- "${operation.routePath}",
87
- sValidator("query", ${schemaName}),
88
- async (c) => {
89
- const ctx = await createExecutionContext(c, options);
90
- try {
91
- return await executeOperation(c, ${alias}, c.req.valid("query"), ctx);
92
- } catch (error) {
93
- return handleOperationError(c, error, "Invalid query arguments");
94
- }
95
- },
96
- );`;
97
- })
98
- .join("\n");
99
- }
100
-
101
- function buildMutationRoutes(operations: IndexedOperation[]): string {
102
- return operations
103
- .filter(({ operation }) => operation.kind === "mutation")
104
- .map(({ operation, alias }) => {
105
- const schemaName = `${alias}Schema`;
106
- return `
107
- app.post(
108
- "${operation.routePath}",
109
- sValidator("json", ${schemaName}),
110
- async (c) => {
111
- const ctx = await createExecutionContext(c, options);
112
- try {
113
- const response = await executeOperation(c, ${alias}, c.req.valid("json"), ctx);
114
- await publishMutationEvents(c, options, ctx.mutationEvents);
115
- return response;
116
- } catch (error) {
117
- return handleOperationError(c, error, "Invalid mutation arguments");
118
- }
119
- },
120
- );`;
121
- })
122
- .join("\n");
123
- }
124
-
125
- function buildQueryRegistryEntries(operations: IndexedOperation[]): string {
126
- return operations
127
- .filter(({ operation }) => operation.kind === "query")
128
- .map(({ operation, alias }) => {
129
- const schemaName = `${alias}Schema`;
130
- const queryName = operation.handlerName ?? operation.routePath;
131
- return `
132
- ${JSON.stringify(queryName)}: {
133
- definition: ${alias}.definition,
134
- schema: ${schemaName},
135
- },`;
136
- })
137
- .join("\n");
138
- }
139
-
140
- function buildSchedulerEntries(operations: IndexedOperation[]): string {
141
- return operations
142
- .filter(({ operation }) => operation.kind === "scheduler")
143
- .map(({ operation, alias }) => {
144
- const schemaName = `${alias}SchedulerSchema`;
145
- const taskName = operation.taskName ?? `${operation.routePath}`;
146
- return `
147
- ${JSON.stringify(taskName)}: {
148
- definition: ${alias}.definition,
149
- schema: ${schemaName},
150
- },`;
151
- })
152
- .join("\n");
153
- }
154
-
155
- function buildSchedulerPayloadMapEntries(
156
- operations: IndexedOperation[],
157
- ): string {
158
- return operations
159
- .filter(({ operation }) => operation.kind === "scheduler")
160
- .map(({ operation, alias }) => {
161
- const taskName = operation.taskName ?? `${operation.routePath}`;
162
- return `\t${JSON.stringify(taskName)}: Parameters<typeof ${alias}.definition.handler>[1];`;
163
- })
164
- .join("\n");
165
- }
166
-
167
- function buildCronEntries(operations: IndexedOperation[]): string {
168
- return operations
169
- .filter(({ operation }) => operation.kind === "cron")
170
- .map(({ operation, alias }) => {
171
- const taskName = operation.taskName ?? `${operation.routePath}`;
172
- const cronTriggers = operation.cronTriggers ?? [];
173
- return `
174
- {
175
- taskName: ${JSON.stringify(taskName)},
176
- cronTriggers: ${JSON.stringify(cronTriggers)},
177
- definition: ${alias}.definition,
178
- },`;
179
- })
180
- .join("\n");
181
- }
182
-
183
- function buildStorageHandlersEntries(operations: IndexedOperation[]): string {
184
- return operations
185
- .filter(({ operation }) => operation.kind === "storage")
186
- .map(({ alias }) => {
187
- return `\n\t${alias}.definition.handler,`;
188
- })
189
- .join("\n");
190
- }
191
-
192
- export function buildRegistrationTemplateSections(
193
- operations: DiscoveredHandlerOperation[],
194
- ): RegistrationTemplateSections {
195
- const indexedOperations = indexOperations(operations);
196
-
197
- return {
198
- imports: buildImports(indexedOperations),
199
- operationSchemas: buildOperationSchemas(indexedOperations),
200
- schedulerSchemas: buildSchedulerSchemas(indexedOperations),
201
- queryRoutes: buildQueryRoutes(indexedOperations),
202
- mutationRoutes: buildMutationRoutes(indexedOperations),
203
- queryRegistryEntries: buildQueryRegistryEntries(indexedOperations),
204
- schedulerEntries: buildSchedulerEntries(indexedOperations),
205
- schedulerPayloadMapEntries:
206
- buildSchedulerPayloadMapEntries(indexedOperations),
207
- cronEntries: buildCronEntries(indexedOperations),
208
- storageHandlersEntries: buildStorageHandlersEntries(indexedOperations),
209
- };
210
- }
1
+ import type { DiscoveredHandlerOperation } from "../../../../utils/handler-discovery";
2
+
3
+ type IndexedOperation = {
4
+ operation: DiscoveredHandlerOperation;
5
+ index: number;
6
+ alias: string;
7
+ };
8
+
9
+ export type RegistrationTemplateSections = {
10
+ imports: string;
11
+ operationSchemas: string;
12
+ schedulerSchemas: string;
13
+ queryRoutes: string;
14
+ mutationRoutes: string;
15
+ queryRegistryEntries: string;
16
+ schedulerEntries: string;
17
+ schedulerPayloadMapEntries: string;
18
+ cronEntries: string;
19
+ storageHandlersEntries: string;
20
+ };
21
+
22
+ function toSafeIdentifier(value: string): string {
23
+ const sanitized = value.replace(/[^A-Za-z0-9_]/g, "_");
24
+ if (/^[0-9]/.test(sanitized)) {
25
+ return `_${sanitized}`;
26
+ }
27
+ return sanitized;
28
+ }
29
+
30
+ function buildImportAlias(
31
+ operation: DiscoveredHandlerOperation,
32
+ index: number,
33
+ ): string {
34
+ const routeName = operation.routePath.replace(/^\//, "").replace(/\//g, "_");
35
+ return toSafeIdentifier(`op_${index}_${routeName}`);
36
+ }
37
+
38
+ function indexOperations(
39
+ operations: DiscoveredHandlerOperation[],
40
+ ): IndexedOperation[] {
41
+ return operations.map((operation, index) => ({
42
+ operation,
43
+ index,
44
+ alias: buildImportAlias(operation, index),
45
+ }));
46
+ }
47
+
48
+ function buildImports(operations: IndexedOperation[]): string {
49
+ return operations
50
+ .map(({ operation, alias }) => {
51
+ return `import { ${operation.exportName} as ${alias} } from "${operation.importPath}";`;
52
+ })
53
+ .join("\n");
54
+ }
55
+
56
+ function buildOperationSchemas(operations: IndexedOperation[]): string {
57
+ return operations
58
+ .filter(
59
+ ({ operation }) =>
60
+ operation.kind === "query" || operation.kind === "mutation",
61
+ )
62
+ .map(({ alias }) => {
63
+ const schemaName = `${alias}Schema`;
64
+ return `const ${schemaName} = z.object(${alias}.definition.args);`;
65
+ })
66
+ .join("\n");
67
+ }
68
+
69
+ function buildSchedulerSchemas(operations: IndexedOperation[]): string {
70
+ return operations
71
+ .filter(({ operation }) => operation.kind === "scheduler")
72
+ .map(({ alias }) => {
73
+ const schemaName = `${alias}SchedulerSchema`;
74
+ return `const ${schemaName} = ${alias}.definition.args ? z.object(${alias}.definition.args) : z.undefined();`;
75
+ })
76
+ .join("\n");
77
+ }
78
+
79
+ function buildQueryRoutes(operations: IndexedOperation[]): string {
80
+ return operations
81
+ .filter(({ operation }) => operation.kind === "query")
82
+ .map(({ operation, alias }) => {
83
+ const schemaName = `${alias}Schema`;
84
+ return `
85
+ app.get(
86
+ "${operation.routePath}",
87
+ sValidator("query", ${schemaName}),
88
+ async (c) => {
89
+ const ctx = await createExecutionContext(c, options);
90
+ try {
91
+ return await executeOperation(c, ${alias}, c.req.valid("query"), ctx);
92
+ } catch (error) {
93
+ return handleOperationError(c, error, "Invalid query arguments");
94
+ }
95
+ },
96
+ );`;
97
+ })
98
+ .join("\n");
99
+ }
100
+
101
+ function buildMutationRoutes(operations: IndexedOperation[]): string {
102
+ return operations
103
+ .filter(({ operation }) => operation.kind === "mutation")
104
+ .map(({ operation, alias }) => {
105
+ const schemaName = `${alias}Schema`;
106
+ return `
107
+ app.post(
108
+ "${operation.routePath}",
109
+ sValidator("json", ${schemaName}),
110
+ async (c) => {
111
+ const ctx = await createExecutionContext(c, options);
112
+ try {
113
+ const response = await executeOperation(c, ${alias}, c.req.valid("json"), ctx);
114
+ await publishMutationEvents(c, options, ctx.mutationEvents);
115
+ return response;
116
+ } catch (error) {
117
+ return handleOperationError(c, error, "Invalid mutation arguments");
118
+ }
119
+ },
120
+ );`;
121
+ })
122
+ .join("\n");
123
+ }
124
+
125
+ function buildQueryRegistryEntries(operations: IndexedOperation[]): string {
126
+ return operations
127
+ .filter(({ operation }) => operation.kind === "query")
128
+ .map(({ operation, alias }) => {
129
+ const schemaName = `${alias}Schema`;
130
+ const queryName = operation.handlerName ?? operation.routePath;
131
+ return `
132
+ ${JSON.stringify(queryName)}: {
133
+ definition: ${alias}.definition,
134
+ schema: ${schemaName},
135
+ },`;
136
+ })
137
+ .join("\n");
138
+ }
139
+
140
+ function buildSchedulerEntries(operations: IndexedOperation[]): string {
141
+ return operations
142
+ .filter(({ operation }) => operation.kind === "scheduler")
143
+ .map(({ operation, alias }) => {
144
+ const schemaName = `${alias}SchedulerSchema`;
145
+ const taskName = operation.taskName ?? `${operation.routePath}`;
146
+ return `
147
+ ${JSON.stringify(taskName)}: {
148
+ definition: ${alias}.definition,
149
+ schema: ${schemaName},
150
+ },`;
151
+ })
152
+ .join("\n");
153
+ }
154
+
155
+ function buildSchedulerPayloadMapEntries(
156
+ operations: IndexedOperation[],
157
+ ): string {
158
+ return operations
159
+ .filter(({ operation }) => operation.kind === "scheduler")
160
+ .map(({ operation, alias }) => {
161
+ const taskName = operation.taskName ?? `${operation.routePath}`;
162
+ return `\t${JSON.stringify(taskName)}: Parameters<typeof ${alias}.definition.handler>[1];`;
163
+ })
164
+ .join("\n");
165
+ }
166
+
167
+ function buildCronEntries(operations: IndexedOperation[]): string {
168
+ return operations
169
+ .filter(({ operation }) => operation.kind === "cron")
170
+ .map(({ operation, alias }) => {
171
+ const taskName = operation.taskName ?? `${operation.routePath}`;
172
+ const cronTriggers = operation.cronTriggers ?? [];
173
+ return `
174
+ {
175
+ taskName: ${JSON.stringify(taskName)},
176
+ cronTriggers: ${JSON.stringify(cronTriggers)},
177
+ definition: ${alias}.definition,
178
+ },`;
179
+ })
180
+ .join("\n");
181
+ }
182
+
183
+ function buildStorageHandlersEntries(operations: IndexedOperation[]): string {
184
+ return operations
185
+ .filter(({ operation }) => operation.kind === "storage")
186
+ .map(({ alias }) => {
187
+ return `\n\t${alias}.definition.handler,`;
188
+ })
189
+ .join("\n");
190
+ }
191
+
192
+ export function buildRegistrationTemplateSections(
193
+ operations: DiscoveredHandlerOperation[],
194
+ ): RegistrationTemplateSections {
195
+ const indexedOperations = indexOperations(operations);
196
+
197
+ return {
198
+ imports: buildImports(indexedOperations),
199
+ operationSchemas: buildOperationSchemas(indexedOperations),
200
+ schedulerSchemas: buildSchedulerSchemas(indexedOperations),
201
+ queryRoutes: buildQueryRoutes(indexedOperations),
202
+ mutationRoutes: buildMutationRoutes(indexedOperations),
203
+ queryRegistryEntries: buildQueryRegistryEntries(indexedOperations),
204
+ schedulerEntries: buildSchedulerEntries(indexedOperations),
205
+ schedulerPayloadMapEntries:
206
+ buildSchedulerPayloadMapEntries(indexedOperations),
207
+ cronEntries: buildCronEntries(indexedOperations),
208
+ storageHandlersEntries: buildStorageHandlersEntries(indexedOperations),
209
+ };
210
+ }
@@ -1,92 +1,92 @@
1
- export function generateTypesContextSection(): string {
2
- return `type AuthSession = typeof auth.$Infer.Session;
3
- type AuthAdapter = Awaited<typeof auth.$context>["internalAdapter"];
4
- type User = AuthSession['user']
5
- type Session = AuthSession['session']
6
-
7
- export type StoragePutArgs = {
8
- path: string;
9
- body: ReadableStream | ArrayBuffer | ArrayBufferView | string | Blob;
10
- contentType?: string;
11
- httpMetadata?: Record<string, unknown>;
12
- customMetadata?: Record<string, string>;
13
- returnSignedUrlOnly?: boolean;
14
- expiresIn?: number;
15
- };
16
-
17
- export type StorageGetArgs = {
18
- path: string;
19
- method?: StorageMethod;
20
- onlyIf?: unknown;
21
- range?: unknown;
22
- includeBody?: boolean;
23
- };
24
-
25
- export type StorageGetResult = {
26
- body: ReadableStream;
27
- bodyUsed: boolean;
28
- writeHttpResponse: (response: Response) => void;
29
- httpMetadata?: Record<string, string | undefined>;
30
- customMetadata?: Record<string, string>;
31
- range?: {
32
- offset: number;
33
- length: number;
34
- };
35
- size: number;
36
- etag: string;
37
- httpEtag: string;
38
- checksums: {
39
- md5?: ArrayBuffer;
40
- sha1?: ArrayBuffer;
41
- sha256?: ArrayBuffer;
42
- sha384?: ArrayBuffer;
43
- sha512?: ArrayBuffer;
44
- };
45
- uploaded: Date;
46
- key: string;
47
- contentType?: string;
48
- };
49
-
50
- export type StorageDeleteArgs = {
51
- path: string;
52
- };
53
-
54
- export type StorageListArgs = {
55
- prefix?: string;
56
- cursor?: string;
57
- limit?: number;
58
- delimiter?: string;
59
- include?: Array<"httpMetadata" | "customMetadata">;
60
- method?: StorageMethod;
61
- };
62
-
63
- export type StorageSignedUrlArgs = {
64
- path: string;
65
- method?: "GET" | "PUT" | "DELETE";
66
- expiresIn?: number;
67
- contentType?: string;
68
- downloadAsAttachment?: boolean;
69
- fileName?: string;
70
- };
71
-
72
- export type AppflareStorage = {
73
- put: (args: StoragePutArgs) => Promise<unknown>;
74
- get: (args: StorageGetArgs) => Promise<StorageGetResult | null>;
75
- delete: (args: StorageDeleteArgs) => Promise<void>;
76
- list: (args?: StorageListArgs) => Promise<unknown>;
77
- };
78
-
79
- export type AppflareContext = {
80
- $db: AppflareDb;
81
- db: AppflareQueryDb;
82
- mutationEvents: DbMutationEvent[];
83
- user: User;
84
- session: Session;
85
- auth: AuthAdapter;
86
- context: Context<WorkerEnv>;
87
- scheduler: Scheduler;
88
- storage: AppflareStorage;
89
- error: (status: number, message: string, details?: unknown) => never;
90
- };
91
- `;
92
- }
1
+ export function generateTypesContextSection(): string {
2
+ return `type AuthSession = typeof auth.$Infer.Session;
3
+ type AuthAdapter = Awaited<typeof auth.$context>["internalAdapter"];
4
+ type User = AuthSession['user']
5
+ type Session = AuthSession['session']
6
+
7
+ export type StoragePutArgs = {
8
+ path: string;
9
+ body: ReadableStream | ArrayBuffer | ArrayBufferView | string | Blob;
10
+ contentType?: string;
11
+ httpMetadata?: Record<string, unknown>;
12
+ customMetadata?: Record<string, string>;
13
+ returnSignedUrlOnly?: boolean;
14
+ expiresIn?: number;
15
+ };
16
+
17
+ export type StorageGetArgs = {
18
+ path: string;
19
+ method?: StorageMethod;
20
+ onlyIf?: unknown;
21
+ range?: unknown;
22
+ includeBody?: boolean;
23
+ };
24
+
25
+ export type StorageGetResult = {
26
+ body: ReadableStream;
27
+ bodyUsed: boolean;
28
+ writeHttpResponse: (response: Response) => void;
29
+ httpMetadata?: Record<string, string | undefined>;
30
+ customMetadata?: Record<string, string>;
31
+ range?: {
32
+ offset: number;
33
+ length: number;
34
+ };
35
+ size: number;
36
+ etag: string;
37
+ httpEtag: string;
38
+ checksums: {
39
+ md5?: ArrayBuffer;
40
+ sha1?: ArrayBuffer;
41
+ sha256?: ArrayBuffer;
42
+ sha384?: ArrayBuffer;
43
+ sha512?: ArrayBuffer;
44
+ };
45
+ uploaded: Date;
46
+ key: string;
47
+ contentType?: string;
48
+ };
49
+
50
+ export type StorageDeleteArgs = {
51
+ path: string;
52
+ };
53
+
54
+ export type StorageListArgs = {
55
+ prefix?: string;
56
+ cursor?: string;
57
+ limit?: number;
58
+ delimiter?: string;
59
+ include?: Array<"httpMetadata" | "customMetadata">;
60
+ method?: StorageMethod;
61
+ };
62
+
63
+ export type StorageSignedUrlArgs = {
64
+ path: string;
65
+ method?: "GET" | "PUT" | "DELETE";
66
+ expiresIn?: number;
67
+ contentType?: string;
68
+ downloadAsAttachment?: boolean;
69
+ fileName?: string;
70
+ };
71
+
72
+ export type AppflareStorage = {
73
+ put: (args: StoragePutArgs) => Promise<unknown>;
74
+ get: (args: StorageGetArgs) => Promise<StorageGetResult | null>;
75
+ delete: (args: StorageDeleteArgs) => Promise<void>;
76
+ list: (args?: StorageListArgs) => Promise<unknown>;
77
+ };
78
+
79
+ export type AppflareContext = {
80
+ $db: AppflareDb;
81
+ db: AppflareQueryDb;
82
+ mutationEvents: DbMutationEvent[];
83
+ user: User;
84
+ session: Session;
85
+ auth: AuthAdapter;
86
+ context: Context<WorkerEnv>;
87
+ scheduler: Scheduler;
88
+ storage: AppflareStorage;
89
+ error: (status: number, message: string, details?: unknown) => never;
90
+ };
91
+ `;
92
+ }