jazz-tools 2.0.0-alpha.21 → 2.0.0-alpha.24

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 (226) hide show
  1. package/bin/docs-index.db +0 -0
  2. package/bin/docs-index.txt +1624 -542
  3. package/bin/jazz-tools.js +47 -41
  4. package/bin/native/jazz-tools-darwin-arm64 +0 -0
  5. package/bin/native/jazz-tools-darwin-x64 +0 -0
  6. package/bin/native/jazz-tools-linux-arm64 +0 -0
  7. package/bin/native/jazz-tools-linux-x64 +0 -0
  8. package/dist/backend/create-jazz-context.d.ts +31 -6
  9. package/dist/backend/create-jazz-context.d.ts.map +1 -1
  10. package/dist/backend/create-jazz-context.js +35 -5
  11. package/dist/backend/create-jazz-context.js.map +1 -1
  12. package/dist/backend/create-jazz-context.test.js +61 -6
  13. package/dist/backend/create-jazz-context.test.js.map +1 -1
  14. package/dist/cli.d.ts +29 -2
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +648 -246
  17. package/dist/cli.js.map +1 -1
  18. package/dist/cli.test.js +640 -294
  19. package/dist/cli.test.js.map +1 -1
  20. package/dist/codegen/schema-reader.d.ts.map +1 -1
  21. package/dist/codegen/schema-reader.js +6 -1
  22. package/dist/codegen/schema-reader.js.map +1 -1
  23. package/dist/dev-tools/dev-tools.d.ts.map +1 -1
  24. package/dist/dev-tools/dev-tools.js +61 -13
  25. package/dist/dev-tools/dev-tools.js.map +1 -1
  26. package/dist/dev-tools/dev-tools.test.js +166 -0
  27. package/dist/dev-tools/dev-tools.test.js.map +1 -1
  28. package/dist/dev-tools/extension-panel.d.ts.map +1 -1
  29. package/dist/dev-tools/extension-panel.js +30 -7
  30. package/dist/dev-tools/extension-panel.js.map +1 -1
  31. package/dist/dev-tools/protocol.d.ts +49 -1
  32. package/dist/dev-tools/protocol.d.ts.map +1 -1
  33. package/dist/dev-tools/protocol.js +3 -0
  34. package/dist/dev-tools/protocol.js.map +1 -1
  35. package/dist/drivers/index.d.ts +1 -1
  36. package/dist/drivers/index.d.ts.map +1 -1
  37. package/dist/drivers/schema-wire.d.ts.map +1 -1
  38. package/dist/drivers/schema-wire.js +12 -1
  39. package/dist/drivers/schema-wire.js.map +1 -1
  40. package/dist/drivers/schema-wire.test.d.ts +2 -0
  41. package/dist/drivers/schema-wire.test.d.ts.map +1 -0
  42. package/dist/drivers/schema-wire.test.js +31 -0
  43. package/dist/drivers/schema-wire.test.js.map +1 -0
  44. package/dist/drivers/types.d.ts +2 -0
  45. package/dist/drivers/types.d.ts.map +1 -1
  46. package/dist/dsl.d.ts +139 -95
  47. package/dist/dsl.d.ts.map +1 -1
  48. package/dist/dsl.js +64 -8
  49. package/dist/dsl.js.map +1 -1
  50. package/dist/dsl.test.js +78 -8
  51. package/dist/dsl.test.js.map +1 -1
  52. package/dist/index.d.ts +32 -3
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +16 -3
  55. package/dist/index.js.map +1 -1
  56. package/dist/magic-columns.d.ts +3 -1
  57. package/dist/magic-columns.d.ts.map +1 -1
  58. package/dist/magic-columns.js +20 -4
  59. package/dist/magic-columns.js.map +1 -1
  60. package/dist/mcp/build-index.test.js +1 -1
  61. package/dist/migrations.d.ts +126 -0
  62. package/dist/migrations.d.ts.map +1 -0
  63. package/dist/migrations.js +112 -0
  64. package/dist/migrations.js.map +1 -0
  65. package/dist/permissions/index.test.js +35 -0
  66. package/dist/permissions/index.test.js.map +1 -1
  67. package/dist/react-native/create-jazz-client.test.js +62 -42
  68. package/dist/react-native/create-jazz-client.test.js.map +1 -1
  69. package/dist/react-native/jazz-rn-runtime-adapter.d.ts +18 -3
  70. package/dist/react-native/jazz-rn-runtime-adapter.d.ts.map +1 -1
  71. package/dist/react-native/jazz-rn-runtime-adapter.js +110 -6
  72. package/dist/react-native/jazz-rn-runtime-adapter.js.map +1 -1
  73. package/dist/react-native/jazz-rn-runtime-adapter.test.js +149 -4
  74. package/dist/react-native/jazz-rn-runtime-adapter.test.js.map +1 -1
  75. package/dist/reconcile-array.d.ts +29 -0
  76. package/dist/reconcile-array.d.ts.map +1 -0
  77. package/dist/reconcile-array.js +110 -0
  78. package/dist/reconcile-array.js.map +1 -0
  79. package/dist/reconcile-array.test.d.ts +2 -0
  80. package/dist/reconcile-array.test.d.ts.map +1 -0
  81. package/dist/reconcile-array.test.js +118 -0
  82. package/dist/reconcile-array.test.js.map +1 -0
  83. package/dist/runtime/client.d.ts +24 -20
  84. package/dist/runtime/client.d.ts.map +1 -1
  85. package/dist/runtime/client.for-request.test.js +8 -8
  86. package/dist/runtime/client.for-request.test.js.map +1 -1
  87. package/dist/runtime/client.js +58 -25
  88. package/dist/runtime/client.js.map +1 -1
  89. package/dist/runtime/client.mutations.test.js +72 -1
  90. package/dist/runtime/client.mutations.test.js.map +1 -1
  91. package/dist/runtime/cloud-server.integration.test.js +145 -88
  92. package/dist/runtime/cloud-server.integration.test.js.map +1 -1
  93. package/dist/runtime/db.d.ts +3 -7
  94. package/dist/runtime/db.d.ts.map +1 -1
  95. package/dist/runtime/db.js +16 -14
  96. package/dist/runtime/db.js.map +1 -1
  97. package/dist/runtime/db.schema-order.test.js +8 -8
  98. package/dist/runtime/db.schema-order.test.js.map +1 -1
  99. package/dist/runtime/index.d.ts +1 -1
  100. package/dist/runtime/index.d.ts.map +1 -1
  101. package/dist/runtime/index.js +1 -1
  102. package/dist/runtime/index.js.map +1 -1
  103. package/dist/runtime/napi.integration.test.js +113 -136
  104. package/dist/runtime/napi.integration.test.js.map +1 -1
  105. package/dist/runtime/query-adapter.d.ts.map +1 -1
  106. package/dist/runtime/query-adapter.js +22 -2
  107. package/dist/runtime/query-adapter.js.map +1 -1
  108. package/dist/runtime/query-adapter.test.js +81 -5
  109. package/dist/runtime/query-adapter.test.js.map +1 -1
  110. package/dist/runtime/row-transformer.js +2 -2
  111. package/dist/runtime/row-transformer.js.map +1 -1
  112. package/dist/runtime/row-transformer.test.js +9 -9
  113. package/dist/runtime/row-transformer.test.js.map +1 -1
  114. package/dist/runtime/schema-fetch.d.ts +103 -1
  115. package/dist/runtime/schema-fetch.d.ts.map +1 -1
  116. package/dist/runtime/schema-fetch.js +106 -0
  117. package/dist/runtime/schema-fetch.js.map +1 -1
  118. package/dist/runtime/sync-transport.d.ts +3 -1
  119. package/dist/runtime/sync-transport.d.ts.map +1 -1
  120. package/dist/runtime/sync-transport.js +34 -3
  121. package/dist/runtime/sync-transport.js.map +1 -1
  122. package/dist/runtime/sync-transport.test.js +53 -1
  123. package/dist/runtime/sync-transport.test.js.map +1 -1
  124. package/dist/runtime/value-converter.d.ts +9 -6
  125. package/dist/runtime/value-converter.d.ts.map +1 -1
  126. package/dist/runtime/value-converter.js +22 -9
  127. package/dist/runtime/value-converter.js.map +1 -1
  128. package/dist/runtime/value-converter.test.js +32 -26
  129. package/dist/runtime/value-converter.test.js.map +1 -1
  130. package/dist/schema-loader.d.ts +14 -0
  131. package/dist/schema-loader.d.ts.map +1 -0
  132. package/dist/schema-loader.js +219 -0
  133. package/dist/schema-loader.js.map +1 -0
  134. package/dist/schema-permissions.d.ts +8 -0
  135. package/dist/schema-permissions.d.ts.map +1 -0
  136. package/dist/schema-permissions.js +266 -0
  137. package/dist/schema-permissions.js.map +1 -0
  138. package/dist/schema-permissions.test.d.ts +2 -0
  139. package/dist/schema-permissions.test.d.ts.map +1 -0
  140. package/dist/schema-permissions.test.js +43 -0
  141. package/dist/schema-permissions.test.js.map +1 -0
  142. package/dist/schema.d.ts +11 -9
  143. package/dist/schema.d.ts.map +1 -1
  144. package/dist/svelte/context.svelte.test.js +50 -0
  145. package/dist/svelte/rune-patterns.svelte.test.js +301 -0
  146. package/dist/svelte/test-helpers.svelte.js +14 -0
  147. package/dist/svelte/use-all.svelte.d.ts.map +1 -1
  148. package/dist/svelte/use-all.svelte.js +7 -1
  149. package/dist/testing/fixtures/basic/schema.d.ts +11 -0
  150. package/dist/testing/fixtures/basic/schema.d.ts.map +1 -0
  151. package/dist/testing/fixtures/basic/schema.js +10 -0
  152. package/dist/testing/fixtures/basic/schema.js.map +1 -0
  153. package/dist/testing/index.d.ts +2 -1
  154. package/dist/testing/index.d.ts.map +1 -1
  155. package/dist/testing/index.js +2 -1
  156. package/dist/testing/index.js.map +1 -1
  157. package/dist/testing/index.test.js +109 -9
  158. package/dist/testing/index.test.js.map +1 -1
  159. package/dist/testing/local-jazz-server.d.ts +2 -0
  160. package/dist/testing/local-jazz-server.d.ts.map +1 -1
  161. package/dist/testing/local-jazz-server.js +21 -51
  162. package/dist/testing/local-jazz-server.js.map +1 -1
  163. package/dist/testing/policy-test-app.d.ts.map +1 -1
  164. package/dist/testing/policy-test-app.js +71 -3
  165. package/dist/testing/policy-test-app.js.map +1 -1
  166. package/dist/typed-app.d.ts +364 -0
  167. package/dist/typed-app.d.ts.map +1 -0
  168. package/dist/{testing/fixtures/basic/app.js → typed-app.js} +118 -30
  169. package/dist/typed-app.js.map +1 -0
  170. package/dist/vue/use-all.d.ts +2 -2
  171. package/dist/vue/use-all.d.ts.map +1 -1
  172. package/dist/vue/use-all.js +9 -3
  173. package/dist/vue/use-all.js.map +1 -1
  174. package/dist/vue/use-all.test.js +137 -0
  175. package/dist/vue/use-all.test.js.map +1 -1
  176. package/package.json +17 -14
  177. package/bin/native/jazz-tools-windows-x64.exe +0 -0
  178. package/dist/codegen/codegen.test.d.ts +0 -2
  179. package/dist/codegen/codegen.test.d.ts.map +0 -1
  180. package/dist/codegen/codegen.test.js +0 -1134
  181. package/dist/codegen/codegen.test.js.map +0 -1
  182. package/dist/codegen/index.d.ts +0 -18
  183. package/dist/codegen/index.d.ts.map +0 -1
  184. package/dist/codegen/index.js +0 -22
  185. package/dist/codegen/index.js.map +0 -1
  186. package/dist/codegen/query-builder-generator.d.ts +0 -26
  187. package/dist/codegen/query-builder-generator.d.ts.map +0 -1
  188. package/dist/codegen/query-builder-generator.js +0 -377
  189. package/dist/codegen/query-builder-generator.js.map +0 -1
  190. package/dist/codegen/type-generator.d.ts +0 -30
  191. package/dist/codegen/type-generator.d.ts.map +0 -1
  192. package/dist/codegen/type-generator.js +0 -368
  193. package/dist/codegen/type-generator.js.map +0 -1
  194. package/dist/runtime/napi.fjall.db.all.integration.test.d.ts +0 -2
  195. package/dist/runtime/napi.fjall.db.all.integration.test.d.ts.map +0 -1
  196. package/dist/runtime/napi.fjall.db.all.integration.test.js +0 -76
  197. package/dist/runtime/napi.fjall.db.all.integration.test.js.map +0 -1
  198. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.d.ts +0 -2
  199. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.d.ts.map +0 -1
  200. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.js +0 -47
  201. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.js.map +0 -1
  202. package/dist/runtime/napi.fjall.test-helpers.d.ts +0 -34
  203. package/dist/runtime/napi.fjall.test-helpers.d.ts.map +0 -1
  204. package/dist/runtime/napi.fjall.test-helpers.js +0 -172
  205. package/dist/runtime/napi.fjall.test-helpers.js.map +0 -1
  206. package/dist/sql-gen.d.ts +0 -5
  207. package/dist/sql-gen.d.ts.map +0 -1
  208. package/dist/sql-gen.js +0 -234
  209. package/dist/sql-gen.js.map +0 -1
  210. package/dist/sql-gen.test.d.ts +0 -2
  211. package/dist/sql-gen.test.d.ts.map +0 -1
  212. package/dist/sql-gen.test.js +0 -481
  213. package/dist/sql-gen.test.js.map +0 -1
  214. package/dist/svelte/context.test.d.ts +0 -2
  215. package/dist/svelte/context.test.d.ts.map +0 -1
  216. package/dist/svelte/context.test.js +0 -55
  217. package/dist/svelte/use-all.test.d.ts +0 -2
  218. package/dist/svelte/use-all.test.d.ts.map +0 -1
  219. package/dist/svelte/use-all.test.js +0 -147
  220. package/dist/testing/fixtures/basic/app.d.ts +0 -59
  221. package/dist/testing/fixtures/basic/app.d.ts.map +0 -1
  222. package/dist/testing/fixtures/basic/app.js.map +0 -1
  223. package/dist/testing/fixtures/basic/current.d.ts +0 -2
  224. package/dist/testing/fixtures/basic/current.d.ts.map +0 -1
  225. package/dist/testing/fixtures/basic/current.js +0 -6
  226. package/dist/testing/fixtures/basic/current.js.map +0 -1
@@ -1,368 +0,0 @@
1
- /**
2
- * Generate TypeScript interfaces from WasmSchema.
3
- */
4
- import pluralize from "pluralize-esm";
5
- import { PERMISSION_INTROSPECTION_COLUMNS, PERMISSION_INTROSPECTION_TS_TYPE, } from "../magic-columns.js";
6
- import { analyzeRelations } from "./relation-analyzer.js";
7
- import { generateWhereInputTypesWithMapper, generateQueryBuilderClasses, generateAppExport, } from "./query-builder-generator.js";
8
- /**
9
- * Convert a WasmColumnType to TypeScript type string.
10
- */
11
- function arrayType(elementTs) {
12
- return elementTs.includes("|") ? `(${elementTs})[]` : `${elementTs}[]`;
13
- }
14
- function isJsonSchemaObject(value) {
15
- return typeof value === "object" && value !== null && !Array.isArray(value);
16
- }
17
- function collectJsonSchemaBindings(schema) {
18
- const bindings = new Map();
19
- const visit = (colType) => {
20
- switch (colType.type) {
21
- case "Json": {
22
- if (!isJsonSchemaObject(colType.schema)) {
23
- return;
24
- }
25
- const key = JSON.stringify(colType.schema);
26
- if (bindings.has(key)) {
27
- return;
28
- }
29
- const index = bindings.size + 1;
30
- bindings.set(key, {
31
- key,
32
- constName: `__jsonSchema${index}`,
33
- typeName: `__JsonType${index}`,
34
- schema: colType.schema,
35
- });
36
- return;
37
- }
38
- case "Array":
39
- visit(colType.element);
40
- return;
41
- case "Row":
42
- for (const nested of colType.columns) {
43
- visit(nested.column_type);
44
- }
45
- return;
46
- default:
47
- return;
48
- }
49
- };
50
- for (const table of Object.values(schema)) {
51
- for (const column of table.columns) {
52
- visit(column.column_type);
53
- }
54
- }
55
- return [...bindings.values()];
56
- }
57
- function wasmTypeToTs(colType, jsonTypeBySchemaKey) {
58
- switch (colType.type) {
59
- case "Text":
60
- return "string";
61
- case "Boolean":
62
- return "boolean";
63
- case "Integer":
64
- case "BigInt":
65
- case "Double":
66
- return "number";
67
- case "Timestamp":
68
- return "Date";
69
- case "Uuid":
70
- return "string";
71
- case "Bytea":
72
- return "Uint8Array";
73
- case "Json": {
74
- if (isJsonSchemaObject(colType.schema)) {
75
- const key = JSON.stringify(colType.schema);
76
- const boundType = jsonTypeBySchemaKey.get(key);
77
- if (boundType) {
78
- return boundType;
79
- }
80
- }
81
- return "JsonValue";
82
- }
83
- case "Enum":
84
- return colType.variants.map((variant) => JSON.stringify(variant)).join(" | ");
85
- case "Array":
86
- return arrayType(wasmTypeToTs(colType.element, jsonTypeBySchemaKey));
87
- case "Row":
88
- // Nested row - generate inline type
89
- const fields = colType.columns
90
- .map((c) => {
91
- const opt = c.nullable ? "?" : "";
92
- return `${c.name}${opt}: ${wasmTypeToTs(c.column_type, jsonTypeBySchemaKey)}`;
93
- })
94
- .join("; ");
95
- return `{ ${fields} }`;
96
- default:
97
- return "unknown";
98
- }
99
- }
100
- function singularize(word) {
101
- return pluralize.singular(word);
102
- }
103
- /**
104
- * Convert a table name to a TypeScript interface name.
105
- *
106
- * Examples:
107
- * todos -> Todo
108
- * user_profiles -> UserProfile
109
- * categories -> Category
110
- */
111
- export function tableNameToInterface(name) {
112
- // Convert snake_case to words, singularize the last word, then PascalCase
113
- const parts = name.split("_");
114
- // Singularize only the last part (table names are typically plural)
115
- const lastIndex = parts.length - 1;
116
- const lastPart = parts[lastIndex];
117
- if (lastPart === undefined) {
118
- return "";
119
- }
120
- parts[lastIndex] = singularize(lastPart);
121
- return parts.map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
122
- }
123
- function generateAnyQueryBuilderAliases(schema) {
124
- const lines = [];
125
- for (const tableName of Object.keys(schema)) {
126
- const baseInterface = tableNameToInterface(tableName);
127
- lines.push(`type Any${baseInterface}QueryBuilder<T = any> = { readonly _table: "${tableName}" } & QueryBuilder<T>;`);
128
- }
129
- if (lines.length > 0) {
130
- lines.push("");
131
- }
132
- return lines;
133
- }
134
- function maybeUndefined(type, nullable) {
135
- return nullable ? `${type} | undefined` : type;
136
- }
137
- function relationResultType(baseType, rel, requiredFlag) {
138
- if (rel.isArray) {
139
- return maybeUndefined(`${baseType}[]`, rel.nullable);
140
- }
141
- if (rel.type !== "forward") {
142
- return maybeUndefined(baseType, rel.nullable);
143
- }
144
- if (rel.nullable || !requiredFlag) {
145
- return maybeUndefined(baseType, true);
146
- }
147
- return `${requiredFlag} extends true ? ${baseType} : ${baseType} | undefined`;
148
- }
149
- /**
150
- * Generate Include types for nested relation loading.
151
- *
152
- * Example output:
153
- * export interface TodoInclude {
154
- * parent?: true | TodoInclude | AnyTodoQueryBuilder<any>;
155
- * owner?: true | UserInclude | AnyUserQueryBuilder<any>;
156
- * }
157
- */
158
- function generateIncludeTypes(relations) {
159
- const lines = [];
160
- for (const [tableName, rels] of relations) {
161
- if (rels.length === 0)
162
- continue;
163
- const interfaceName = tableNameToInterface(tableName) + "Include";
164
- lines.push(`export interface ${interfaceName} {`);
165
- for (const rel of rels) {
166
- const targetInterface = tableNameToInterface(rel.toTable);
167
- const targetInclude = targetInterface + "Include";
168
- lines.push(` ${rel.name}?: true | ${targetInclude} | Any${targetInterface}QueryBuilder<any>;`);
169
- }
170
- lines.push(`}`);
171
- lines.push(``);
172
- }
173
- return lines;
174
- }
175
- /**
176
- * Generate Relations types mapping relation names to their result types.
177
- *
178
- * Example output:
179
- * export interface TodoRelations {
180
- * parent: Todo;
181
- * owner: User;
182
- * }
183
- */
184
- function generateRelationsTypes(relations) {
185
- const lines = [];
186
- for (const [tableName, rels] of relations) {
187
- if (rels.length === 0)
188
- continue;
189
- const interfaceName = tableNameToInterface(tableName) + "Relations";
190
- lines.push(`export interface ${interfaceName} {`);
191
- for (const rel of rels) {
192
- const targetInterface = tableNameToInterface(rel.toTable);
193
- const type = relationResultType(targetInterface, rel);
194
- lines.push(` ${rel.name}: ${type};`);
195
- }
196
- lines.push(`}`);
197
- lines.push(``);
198
- }
199
- return lines;
200
- }
201
- function generateIncludedRelationsTypes(relations) {
202
- const lines = [];
203
- for (const [tableName, rels] of relations) {
204
- if (rels.length === 0)
205
- continue;
206
- const baseInterface = tableNameToInterface(tableName);
207
- const includeInterface = baseInterface + "Include";
208
- lines.push(`export type ${baseInterface}IncludedRelations<I extends ${includeInterface} = {}, R extends boolean = false> = {`);
209
- lines.push(` [K in keyof I]-?:`);
210
- rels.forEach((rel, index) => {
211
- const targetInterface = tableNameToInterface(rel.toTable);
212
- const targetInclude = targetInterface + "Include";
213
- const targetWithIncludes = targetInterface + "WithIncludes";
214
- const trueType = relationResultType(targetInterface, rel, "R");
215
- const queryBuilderSelectedType = relationResultType(`QueryRow`, rel, "R");
216
- const nestedIncludeType = relationResultType(`${targetWithIncludes}<RelationInclude, false>`, rel, "R");
217
- const prefix = index === 0 ? " " : " : ";
218
- lines.push(`${prefix}K extends "${rel.name}"`);
219
- lines.push(` ? NonNullable<I["${rel.name}"]> extends infer RelationInclude`);
220
- lines.push(` ? RelationInclude extends true`);
221
- lines.push(` ? ${trueType}`);
222
- lines.push(` : RelationInclude extends Any${targetInterface}QueryBuilder<infer QueryRow>`);
223
- lines.push(` ? ${queryBuilderSelectedType}`);
224
- lines.push(` : RelationInclude extends ${targetInclude}`);
225
- lines.push(` ? ${nestedIncludeType}`);
226
- lines.push(` : never`);
227
- lines.push(` : never`);
228
- });
229
- lines.push(` : never;`);
230
- lines.push(`};`);
231
- lines.push(``);
232
- }
233
- return lines;
234
- }
235
- function generateMagicColumnTypes() {
236
- const lines = [];
237
- const magicColumnUnion = PERMISSION_INTROSPECTION_COLUMNS.map((column) => JSON.stringify(column)).join(" | ");
238
- lines.push(`export type PermissionIntrospectionColumn = ${magicColumnUnion};`);
239
- lines.push(`export interface PermissionIntrospectionColumns {`);
240
- for (const column of PERMISSION_INTROSPECTION_COLUMNS) {
241
- lines.push(` ${column}: ${PERMISSION_INTROSPECTION_TS_TYPE};`);
242
- }
243
- lines.push(`}`);
244
- lines.push("");
245
- return lines;
246
- }
247
- /**
248
- * Generate WithIncludes types for type-safe include results.
249
- */
250
- function generateWithIncludesTypes(relations) {
251
- const lines = [];
252
- for (const [tableName, rels] of relations) {
253
- if (rels.length === 0)
254
- continue;
255
- const baseInterface = tableNameToInterface(tableName);
256
- const includeInterface = baseInterface + "Include";
257
- const includedRelationsType = baseInterface + "IncludedRelations";
258
- lines.push(`export type ${baseInterface}WithIncludes<I extends ${includeInterface} = {}, R extends boolean = false> = ${baseInterface} & ${includedRelationsType}<I, R>;`);
259
- lines.push(``);
260
- }
261
- return lines;
262
- }
263
- function generateSelectionTypes(schema, relations) {
264
- const lines = [];
265
- for (const tableName of Object.keys(schema)) {
266
- const baseInterface = tableNameToInterface(tableName);
267
- const includeInterface = baseInterface + "Include";
268
- const selectableColumnType = baseInterface + "SelectableColumn";
269
- const orderableColumnType = baseInterface + "OrderableColumn";
270
- const includedRelationsType = baseInterface + "IncludedRelations";
271
- const hasRelations = (relations.get(tableName) ?? []).length > 0;
272
- lines.push(`export type ${selectableColumnType} = keyof ${baseInterface} | PermissionIntrospectionColumn | "*";`);
273
- lines.push(`export type ${orderableColumnType} = keyof ${baseInterface} | PermissionIntrospectionColumn;`);
274
- lines.push("");
275
- lines.push(`export type ${baseInterface}Selected<S extends ${selectableColumnType} = keyof ${baseInterface}> = ("*" extends S ? ${baseInterface} : Pick<${baseInterface}, Extract<S | "id", keyof ${baseInterface}>>) & Pick<PermissionIntrospectionColumns, Extract<S, PermissionIntrospectionColumn>>;`);
276
- lines.push("");
277
- if (hasRelations) {
278
- lines.push(`export type ${baseInterface}SelectedWithIncludes<I extends ${includeInterface} = {}, S extends ${selectableColumnType} = keyof ${baseInterface}, R extends boolean = false> = ${baseInterface}Selected<S> & ${includedRelationsType}<I, R>;`);
279
- lines.push("");
280
- }
281
- }
282
- return lines;
283
- }
284
- /**
285
- * Generate TypeScript code from a WasmSchema.
286
- *
287
- * Produces:
288
- * 1. Base interfaces with id field (e.g., Todo)
289
- * 2. Init interfaces without id (e.g., TodoInit)
290
- * 3. WhereInput types for filtering (e.g., TodoWhereInput)
291
- * 4. Include types for relation loading (e.g., TodoInclude)
292
- * 5. Relations types mapping relation names to types (e.g., TodoRelations)
293
- * 6. WithIncludes types for type-safe results (e.g., TodoWithIncludes)
294
- * 7. Selection helper types for type-safe projections (e.g., TodoSelected)
295
- * 8. QueryBuilder classes (e.g., TodoQueryBuilder)
296
- * 9. Exported wasmSchema constant
297
- * 10. App export with table proxies
298
- */
299
- export function generateTypes(schema) {
300
- const jsonSchemaBindings = collectJsonSchemaBindings(schema);
301
- const jsonTypeBySchemaKey = new Map(jsonSchemaBindings.map((binding) => [binding.key, binding.typeName]));
302
- const importNames = ["WasmSchema", "QueryBuilder"];
303
- if (jsonSchemaBindings.length > 0) {
304
- importNames.push("JsonSchemaToTs");
305
- }
306
- const lines = [
307
- "// AUTO-GENERATED FILE - DO NOT EDIT",
308
- `import type { ${importNames.join(", ")} } from "jazz-tools";`,
309
- "export type JsonValue = string | number | boolean | null | { [key: string]: JsonValue } | JsonValue[];",
310
- "",
311
- ];
312
- if (jsonSchemaBindings.length > 0) {
313
- for (const binding of jsonSchemaBindings) {
314
- lines.push(`const ${binding.constName} = ${JSON.stringify(binding.schema, null, 2)} as const;`);
315
- lines.push(`type ${binding.typeName} = JsonSchemaToTs<typeof ${binding.constName}>;`);
316
- lines.push("");
317
- }
318
- }
319
- lines.push(...generateMagicColumnTypes());
320
- // Base types (with id)
321
- for (const [tableName, table] of Object.entries(schema)) {
322
- const interfaceName = tableNameToInterface(tableName);
323
- lines.push(`export interface ${interfaceName} {`);
324
- lines.push(" id: string;");
325
- for (const col of table.columns) {
326
- const opt = col.nullable ? "?" : "";
327
- lines.push(` ${col.name}${opt}: ${wasmTypeToTs(col.column_type, jsonTypeBySchemaKey)};`);
328
- }
329
- lines.push("}");
330
- lines.push("");
331
- }
332
- // Init types (without id, for inserts)
333
- for (const [tableName, table] of Object.entries(schema)) {
334
- const interfaceName = tableNameToInterface(tableName) + "Init";
335
- lines.push(`export interface ${interfaceName} {`);
336
- for (const col of table.columns) {
337
- const opt = col.nullable ? "?" : "";
338
- lines.push(` ${col.name}${opt}: ${wasmTypeToTs(col.column_type, jsonTypeBySchemaKey)};`);
339
- }
340
- lines.push("}");
341
- lines.push("");
342
- }
343
- // WhereInput types (for type-safe filtering)
344
- lines.push(...generateWhereInputTypesWithMapper(schema, (columnType) => wasmTypeToTs(columnType, jsonTypeBySchemaKey)));
345
- // Helper aliases for any query builder specializations
346
- lines.push(...generateAnyQueryBuilderAliases(schema));
347
- // Analyze relations and generate relation types
348
- const relations = analyzeRelations(schema);
349
- // Include types (for specifying which relations to load)
350
- lines.push(...generateIncludeTypes(relations));
351
- // Helper types for explicitly included relations only
352
- lines.push(...generateIncludedRelationsTypes(relations));
353
- // Relations types (mapping relation names to their result types)
354
- lines.push(...generateRelationsTypes(relations));
355
- // WithIncludes types (type-safe results based on include spec)
356
- lines.push(...generateWithIncludesTypes(relations));
357
- // Selection helper types (type-safe results based on select columns)
358
- lines.push(...generateSelectionTypes(schema, relations));
359
- // Export WasmSchema JSON
360
- lines.push(`export const wasmSchema: WasmSchema = ${JSON.stringify(schema, null, 2)};`);
361
- lines.push("");
362
- // QueryBuilder classes
363
- lines.push(...generateQueryBuilderClasses(schema, relations));
364
- // App export with table proxies
365
- lines.push(...generateAppExport(schema));
366
- return lines.join("\n");
367
- }
368
- //# sourceMappingURL=type-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"type-generator.js","sourceRoot":"","sources":["../../src/codegen/type-generator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=napi.fjall.db.all.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"napi.fjall.db.all.integration.test.d.ts","sourceRoot":"","sources":["../../src/runtime/napi.fjall.db.all.integration.test.ts"],"names":[],"mappings":""}
@@ -1,76 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { allTodosQuery, createNapiFjallTestEnv, readRowDone, readRowTitle, todoValues, } from "./napi.fjall.test-helpers.js";
3
- const env = createNapiFjallTestEnv();
4
- describe("db.all NAPI Fjall integration", () => {
5
- it("queries durable rows from a Fjall-backed runtime", async () => {
6
- const store = await env.createPersistentStore("query-durable");
7
- const { client } = await env.openPersistentClient(store);
8
- const first = await client.createDurable("todos", todoValues("Task A", false), {
9
- tier: "worker",
10
- });
11
- const second = await client.createDurable("todos", todoValues("Task B", true), {
12
- tier: "worker",
13
- });
14
- const rows = await env.waitForRows(client, allTodosQuery, (entries) => entries.length === 2);
15
- const titles = rows.map(readRowTitle).sort();
16
- expect(titles).toEqual(["Task A", "Task B"]);
17
- expect(rows.find((row) => row.id === first.id)).toBeDefined();
18
- expect(rows.find((row) => row.id === second.id)).toBeDefined();
19
- expect(readRowDone(rows.find((row) => row.id === first.id))).toBe(false);
20
- expect(readRowDone(rows.find((row) => row.id === second.id))).toBe(true);
21
- });
22
- it("applies durable update and delete operations against Fjall storage", async () => {
23
- const store = await env.createPersistentStore("update-delete");
24
- const { client } = await env.openPersistentClient(store);
25
- const survivor = await client.createDurable("todos", todoValues("survivor", false), {
26
- tier: "worker",
27
- });
28
- const removed = await client.createDurable("todos", todoValues("removed", false), {
29
- tier: "worker",
30
- });
31
- await client.updateDurable(survivor.id, {
32
- title: { type: "Text", value: "survivor-updated" },
33
- done: { type: "Boolean", value: true },
34
- }, { tier: "worker" });
35
- await client.deleteDurable(removed.id, { tier: "worker" });
36
- const rows = await env.waitForRows(client, allTodosQuery, (entries) => entries.length === 1 &&
37
- entries[0]?.id === survivor.id &&
38
- readRowTitle(entries[0]) === "survivor-updated" &&
39
- readRowDone(entries[0]) === true);
40
- expect(rows).toHaveLength(1);
41
- expect(rows[0]?.id).toBe(survivor.id);
42
- });
43
- it("reopens a Fjall store with the latest durable state", async () => {
44
- const store = await env.createPersistentStore("reopen-state");
45
- const initial = await env.openPersistentClient(store);
46
- const persisted = await initial.client.createDurable("todos", todoValues("persist-me", false), {
47
- tier: "worker",
48
- });
49
- const removed = await initial.client.createDurable("todos", todoValues("remove-me", false), {
50
- tier: "worker",
51
- });
52
- await initial.client.updateDurable(persisted.id, {
53
- title: { type: "Text", value: "persist-me-updated" },
54
- done: { type: "Boolean", value: true },
55
- }, { tier: "worker" });
56
- await initial.client.deleteDurable(removed.id, { tier: "worker" });
57
- await env.waitForRows(initial.client, allTodosQuery, (entries) => entries.length === 1 &&
58
- entries[0]?.id === persisted.id &&
59
- readRowTitle(entries[0]) === "persist-me-updated" &&
60
- readRowDone(entries[0]) === true);
61
- await initial.shutdown();
62
- const reopened = await env.openPersistentClient(store);
63
- const reopenedRows = await env.waitForRows(reopened.client, allTodosQuery, (entries) => entries.length === 1 &&
64
- entries[0]?.id === persisted.id &&
65
- readRowTitle(entries[0]) === "persist-me-updated" &&
66
- readRowDone(entries[0]) === true);
67
- expect(reopenedRows).toHaveLength(1);
68
- expect(reopenedRows[0]?.id).toBe(persisted.id);
69
- const appended = await reopened.client.createDurable("todos", todoValues("after-reopen", false), {
70
- tier: "worker",
71
- });
72
- const finalRows = await env.waitForRows(reopened.client, allTodosQuery, (entries) => entries.length === 2 && entries.some((row) => row.id === appended.id));
73
- expect(finalRows.map(readRowTitle).sort()).toEqual(["after-reopen", "persist-me-updated"]);
74
- });
75
- });
76
- //# sourceMappingURL=napi.fjall.db.all.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"napi.fjall.db.all.integration.test.js","sourceRoot":"","sources":["../../src/runtime/napi.fjall.db.all.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=napi.fjall.db.subscribeAll.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"napi.fjall.db.subscribeAll.integration.test.d.ts","sourceRoot":"","sources":["../../src/runtime/napi.fjall.db.subscribeAll.integration.test.ts"],"names":[],"mappings":""}
@@ -1,47 +0,0 @@
1
- import { describe, expect, it, vi } from "vitest";
2
- import { allTodosQuery, createNapiFjallTestEnv, readRowTitle, todoValues, todosByDone, } from "./napi.fjall.test-helpers.js";
3
- const env = createNapiFjallTestEnv();
4
- describe("db.subscribeAll NAPI Fjall integration", () => {
5
- it("emits add changes for durable inserts in Fjall storage", async () => {
6
- const store = await env.createPersistentStore("subscription-insert");
7
- const { client } = await env.openPersistentClient(store);
8
- const deltas = [];
9
- const subscriptionId = client.subscribe(allTodosQuery, (delta) => {
10
- deltas.push(delta);
11
- }, { tier: "worker" });
12
- try {
13
- await client.createDurable("todos", todoValues("watch-me", false), { tier: "worker" });
14
- await vi.waitFor(() => {
15
- expect(deltas.some((delta) => delta.some((change) => change.kind === 0 && change.row && readRowTitle(change.row) === "watch-me"))).toBe(true);
16
- });
17
- }
18
- finally {
19
- client.unsubscribe(subscriptionId);
20
- }
21
- });
22
- it("supports condition filters for Fjall-backed subscriptions", async () => {
23
- const store = await env.createPersistentStore("subscription-filter");
24
- const { client } = await env.openPersistentClient(store);
25
- const deltas = [];
26
- const subscriptionId = client.subscribe(todosByDone(false), (delta) => {
27
- deltas.push(delta);
28
- }, { tier: "worker" });
29
- try {
30
- await client.createDurable("todos", todoValues("visible", false), { tier: "worker" });
31
- await client.createDurable("todos", todoValues("hidden", true), { tier: "worker" });
32
- await vi.waitFor(() => {
33
- expect(deltas.some((delta) => delta.some((change) => change.kind === 0 && change.row && readRowTitle(change.row) === "visible"))).toBe(true);
34
- });
35
- expect(deltas.some((delta) => delta.some((change) => (change.kind === 0 || change.kind === 2) &&
36
- change.row &&
37
- readRowTitle(change.row) === "hidden"))).toBe(false);
38
- const rows = await env.waitForRows(client, todosByDone(false), (entries) => entries.length === 1 && readRowTitle(entries[0]) === "visible");
39
- expect(rows).toHaveLength(1);
40
- expect(readRowTitle(rows[0])).toBe("visible");
41
- }
42
- finally {
43
- client.unsubscribe(subscriptionId);
44
- }
45
- });
46
- });
47
- //# sourceMappingURL=napi.fjall.db.subscribeAll.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"napi.fjall.db.subscribeAll.integration.test.js","sourceRoot":"","sources":["../../src/runtime/napi.fjall.db.subscribeAll.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import type { Value, WasmSchema } from "../drivers/types.js";
2
- import { JazzClient, type Row } from "./client.js";
3
- import type { QueryBuilder } from "./db.js";
4
- export type Todo = {
5
- id: string;
6
- title: string;
7
- done: boolean;
8
- };
9
- type PersistentStore = {
10
- appId: string;
11
- dataPath: string;
12
- cleanup(): Promise<void>;
13
- };
14
- type PersistentClientHandle = {
15
- client: JazzClient;
16
- shutdown(): Promise<void>;
17
- };
18
- export declare const TEST_SCHEMA: WasmSchema;
19
- export declare const allTodosQuery: QueryBuilder<Todo>;
20
- export declare function todosByDone(done: boolean): QueryBuilder<Todo>;
21
- export declare function todoValues(title: string, done: boolean): Value[];
22
- export declare function readRowTitle(row: {
23
- values: Value[];
24
- }): string;
25
- export declare function readRowDone(row: {
26
- values: Value[];
27
- }): boolean;
28
- export declare function createNapiFjallTestEnv(): {
29
- createPersistentStore(label: string): Promise<PersistentStore>;
30
- openPersistentClient(store: PersistentStore): Promise<PersistentClientHandle>;
31
- waitForRows(client: JazzClient, query: QueryBuilder<Todo>, predicate: (rows: Row[]) => boolean, timeoutMs?: number): Promise<Row[]>;
32
- };
33
- export {};
34
- //# sourceMappingURL=napi.fjall.test-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"napi.fjall.test-helpers.d.ts","sourceRoot":"","sources":["../../src/runtime/napi.fjall.test-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAOzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,IAAI,CAa5C,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAe7D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,CAKhE;AAkBD,wBAAgB,YAAY,CAAC,GAAG,EAAE;IAAE,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,MAAM,CAE7D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE;IAAE,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,OAAO,CAE7D;AAED,wBAAgB,sBAAsB,IAAI;IACxC,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/D,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC9E,WAAW,CACT,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EACzB,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;CACnB,CAwHA"}