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

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 (225) hide show
  1. package/bin/docs-index.db +0 -0
  2. package/bin/docs-index.txt +1624 -542
  3. package/bin/jazz-tools.js +19 -40
  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/bin/native/jazz-tools-windows-x64.exe +0 -0
  9. package/dist/backend/create-jazz-context.d.ts +31 -6
  10. package/dist/backend/create-jazz-context.d.ts.map +1 -1
  11. package/dist/backend/create-jazz-context.js +35 -5
  12. package/dist/backend/create-jazz-context.js.map +1 -1
  13. package/dist/backend/create-jazz-context.test.js +61 -6
  14. package/dist/backend/create-jazz-context.test.js.map +1 -1
  15. package/dist/cli.d.ts +29 -2
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/cli.js +648 -246
  18. package/dist/cli.js.map +1 -1
  19. package/dist/cli.test.js +512 -297
  20. package/dist/cli.test.js.map +1 -1
  21. package/dist/codegen/schema-reader.d.ts.map +1 -1
  22. package/dist/codegen/schema-reader.js +6 -1
  23. package/dist/codegen/schema-reader.js.map +1 -1
  24. package/dist/dev-tools/dev-tools.d.ts.map +1 -1
  25. package/dist/dev-tools/dev-tools.js +61 -13
  26. package/dist/dev-tools/dev-tools.js.map +1 -1
  27. package/dist/dev-tools/dev-tools.test.js +166 -0
  28. package/dist/dev-tools/dev-tools.test.js.map +1 -1
  29. package/dist/dev-tools/extension-panel.d.ts.map +1 -1
  30. package/dist/dev-tools/extension-panel.js +30 -7
  31. package/dist/dev-tools/extension-panel.js.map +1 -1
  32. package/dist/dev-tools/protocol.d.ts +49 -1
  33. package/dist/dev-tools/protocol.d.ts.map +1 -1
  34. package/dist/dev-tools/protocol.js +3 -0
  35. package/dist/dev-tools/protocol.js.map +1 -1
  36. package/dist/drivers/index.d.ts +1 -1
  37. package/dist/drivers/index.d.ts.map +1 -1
  38. package/dist/drivers/schema-wire.d.ts.map +1 -1
  39. package/dist/drivers/schema-wire.js +12 -1
  40. package/dist/drivers/schema-wire.js.map +1 -1
  41. package/dist/drivers/schema-wire.test.d.ts +2 -0
  42. package/dist/drivers/schema-wire.test.d.ts.map +1 -0
  43. package/dist/drivers/schema-wire.test.js +31 -0
  44. package/dist/drivers/schema-wire.test.js.map +1 -0
  45. package/dist/drivers/types.d.ts +2 -0
  46. package/dist/drivers/types.d.ts.map +1 -1
  47. package/dist/dsl.d.ts +139 -95
  48. package/dist/dsl.d.ts.map +1 -1
  49. package/dist/dsl.js +64 -8
  50. package/dist/dsl.js.map +1 -1
  51. package/dist/dsl.test.js +78 -8
  52. package/dist/dsl.test.js.map +1 -1
  53. package/dist/index.d.ts +32 -3
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +16 -3
  56. package/dist/index.js.map +1 -1
  57. package/dist/magic-columns.d.ts +3 -1
  58. package/dist/magic-columns.d.ts.map +1 -1
  59. package/dist/magic-columns.js +20 -4
  60. package/dist/magic-columns.js.map +1 -1
  61. package/dist/mcp/build-index.test.js +1 -1
  62. package/dist/migrations.d.ts +126 -0
  63. package/dist/migrations.d.ts.map +1 -0
  64. package/dist/migrations.js +112 -0
  65. package/dist/migrations.js.map +1 -0
  66. package/dist/permissions/index.test.js +35 -0
  67. package/dist/permissions/index.test.js.map +1 -1
  68. package/dist/react-native/create-jazz-client.test.js +62 -42
  69. package/dist/react-native/create-jazz-client.test.js.map +1 -1
  70. package/dist/react-native/jazz-rn-runtime-adapter.d.ts +18 -3
  71. package/dist/react-native/jazz-rn-runtime-adapter.d.ts.map +1 -1
  72. package/dist/react-native/jazz-rn-runtime-adapter.js +110 -6
  73. package/dist/react-native/jazz-rn-runtime-adapter.js.map +1 -1
  74. package/dist/react-native/jazz-rn-runtime-adapter.test.js +149 -4
  75. package/dist/react-native/jazz-rn-runtime-adapter.test.js.map +1 -1
  76. package/dist/reconcile-array.d.ts +29 -0
  77. package/dist/reconcile-array.d.ts.map +1 -0
  78. package/dist/reconcile-array.js +110 -0
  79. package/dist/reconcile-array.js.map +1 -0
  80. package/dist/reconcile-array.test.d.ts +2 -0
  81. package/dist/reconcile-array.test.d.ts.map +1 -0
  82. package/dist/reconcile-array.test.js +118 -0
  83. package/dist/reconcile-array.test.js.map +1 -0
  84. package/dist/runtime/client.d.ts +24 -20
  85. package/dist/runtime/client.d.ts.map +1 -1
  86. package/dist/runtime/client.for-request.test.js +8 -8
  87. package/dist/runtime/client.for-request.test.js.map +1 -1
  88. package/dist/runtime/client.js +58 -25
  89. package/dist/runtime/client.js.map +1 -1
  90. package/dist/runtime/client.mutations.test.js +72 -1
  91. package/dist/runtime/client.mutations.test.js.map +1 -1
  92. package/dist/runtime/cloud-server.integration.test.js +145 -88
  93. package/dist/runtime/cloud-server.integration.test.js.map +1 -1
  94. package/dist/runtime/db.d.ts +3 -7
  95. package/dist/runtime/db.d.ts.map +1 -1
  96. package/dist/runtime/db.js +16 -14
  97. package/dist/runtime/db.js.map +1 -1
  98. package/dist/runtime/db.schema-order.test.js +8 -8
  99. package/dist/runtime/db.schema-order.test.js.map +1 -1
  100. package/dist/runtime/index.d.ts +1 -1
  101. package/dist/runtime/index.d.ts.map +1 -1
  102. package/dist/runtime/index.js +1 -1
  103. package/dist/runtime/index.js.map +1 -1
  104. package/dist/runtime/napi.integration.test.js +113 -136
  105. package/dist/runtime/napi.integration.test.js.map +1 -1
  106. package/dist/runtime/query-adapter.d.ts.map +1 -1
  107. package/dist/runtime/query-adapter.js +22 -2
  108. package/dist/runtime/query-adapter.js.map +1 -1
  109. package/dist/runtime/query-adapter.test.js +81 -5
  110. package/dist/runtime/query-adapter.test.js.map +1 -1
  111. package/dist/runtime/row-transformer.js +2 -2
  112. package/dist/runtime/row-transformer.js.map +1 -1
  113. package/dist/runtime/row-transformer.test.js +9 -9
  114. package/dist/runtime/row-transformer.test.js.map +1 -1
  115. package/dist/runtime/schema-fetch.d.ts +103 -1
  116. package/dist/runtime/schema-fetch.d.ts.map +1 -1
  117. package/dist/runtime/schema-fetch.js +106 -0
  118. package/dist/runtime/schema-fetch.js.map +1 -1
  119. package/dist/runtime/sync-transport.d.ts.map +1 -1
  120. package/dist/runtime/sync-transport.js +15 -0
  121. package/dist/runtime/sync-transport.js.map +1 -1
  122. package/dist/runtime/sync-transport.test.js +33 -0
  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 +217 -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 +15 -13
  177. package/dist/codegen/codegen.test.d.ts +0 -2
  178. package/dist/codegen/codegen.test.d.ts.map +0 -1
  179. package/dist/codegen/codegen.test.js +0 -1134
  180. package/dist/codegen/codegen.test.js.map +0 -1
  181. package/dist/codegen/index.d.ts +0 -18
  182. package/dist/codegen/index.d.ts.map +0 -1
  183. package/dist/codegen/index.js +0 -22
  184. package/dist/codegen/index.js.map +0 -1
  185. package/dist/codegen/query-builder-generator.d.ts +0 -26
  186. package/dist/codegen/query-builder-generator.d.ts.map +0 -1
  187. package/dist/codegen/query-builder-generator.js +0 -377
  188. package/dist/codegen/query-builder-generator.js.map +0 -1
  189. package/dist/codegen/type-generator.d.ts +0 -30
  190. package/dist/codegen/type-generator.d.ts.map +0 -1
  191. package/dist/codegen/type-generator.js +0 -368
  192. package/dist/codegen/type-generator.js.map +0 -1
  193. package/dist/runtime/napi.fjall.db.all.integration.test.d.ts +0 -2
  194. package/dist/runtime/napi.fjall.db.all.integration.test.d.ts.map +0 -1
  195. package/dist/runtime/napi.fjall.db.all.integration.test.js +0 -76
  196. package/dist/runtime/napi.fjall.db.all.integration.test.js.map +0 -1
  197. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.d.ts +0 -2
  198. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.d.ts.map +0 -1
  199. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.js +0 -47
  200. package/dist/runtime/napi.fjall.db.subscribeAll.integration.test.js.map +0 -1
  201. package/dist/runtime/napi.fjall.test-helpers.d.ts +0 -34
  202. package/dist/runtime/napi.fjall.test-helpers.d.ts.map +0 -1
  203. package/dist/runtime/napi.fjall.test-helpers.js +0 -172
  204. package/dist/runtime/napi.fjall.test-helpers.js.map +0 -1
  205. package/dist/sql-gen.d.ts +0 -5
  206. package/dist/sql-gen.d.ts.map +0 -1
  207. package/dist/sql-gen.js +0 -234
  208. package/dist/sql-gen.js.map +0 -1
  209. package/dist/sql-gen.test.d.ts +0 -2
  210. package/dist/sql-gen.test.d.ts.map +0 -1
  211. package/dist/sql-gen.test.js +0 -481
  212. package/dist/sql-gen.test.js.map +0 -1
  213. package/dist/svelte/context.test.d.ts +0 -2
  214. package/dist/svelte/context.test.d.ts.map +0 -1
  215. package/dist/svelte/context.test.js +0 -55
  216. package/dist/svelte/use-all.test.d.ts +0 -2
  217. package/dist/svelte/use-all.test.d.ts.map +0 -1
  218. package/dist/svelte/use-all.test.js +0 -147
  219. package/dist/testing/fixtures/basic/app.d.ts +0 -59
  220. package/dist/testing/fixtures/basic/app.d.ts.map +0 -1
  221. package/dist/testing/fixtures/basic/app.js.map +0 -1
  222. package/dist/testing/fixtures/basic/current.d.ts +0 -2
  223. package/dist/testing/fixtures/basic/current.d.ts.map +0 -1
  224. package/dist/testing/fixtures/basic/current.js +0 -6
  225. package/dist/testing/fixtures/basic/current.js.map +0 -1
@@ -215,7 +215,7 @@ describe("buildIndex", () => {
215
215
  contentDir: contentDir(),
216
216
  outputDir: outputDir(),
217
217
  });
218
- }, 10_000);
218
+ }, 30_000);
219
219
  afterAll(async () => {
220
220
  await cleanupFixtureTree(tmpDir);
221
221
  });
@@ -0,0 +1,126 @@
1
+ import type { AnyTypedColumnBuilder, ColumnBuilderOptional, ColumnBuilderReferences, ColumnBuilderSqlType } from "./dsl.js";
2
+ import type { AddOp, DropOp, Lens, RenameOp, Schema as SchemaAst, TSTypeFromSqlType } from "./schema.js";
3
+ import type { CompactSchema, Schema as AppSchema, SchemaDefinition, Simplify } from "./typed-app.js";
4
+ type SchemaLike = SchemaDefinition | AppSchema<any>;
5
+ type NormalizedSchema<TSchema extends SchemaLike> = TSchema extends AppSchema<infer TDefinition> ? CompactSchema<TDefinition> : TSchema extends SchemaDefinition ? CompactSchema<TSchema> : never;
6
+ type TableName<TSchema extends SchemaLike> = Extract<keyof NormalizedSchema<TSchema>, string>;
7
+ type SharedTableName<TFrom extends SchemaLike, TTo extends SchemaLike> = Extract<TableName<TFrom>, TableName<TTo>>;
8
+ type ColumnName<TSchema extends SchemaLike, TTable extends TableName<TSchema>> = Extract<keyof NormalizedSchema<TSchema>[TTable], string>;
9
+ type CommonColumnName<TFrom extends SchemaLike, TTo extends SchemaLike, TTable extends SharedTableName<TFrom, TTo>> = Extract<ColumnName<TFrom, TTable>, ColumnName<TTo, TTable>>;
10
+ type BuilderForColumn<TSchema extends SchemaLike, TTable extends TableName<TSchema>, TColumn extends ColumnName<TSchema, TTable>> = NormalizedSchema<TSchema>[TTable][TColumn];
11
+ type ColumnValue<TBuilder extends AnyTypedColumnBuilder> = TSTypeFromSqlType<ColumnBuilderSqlType<TBuilder>>;
12
+ type DefaultValueForBuilder<TBuilder extends AnyTypedColumnBuilder> = ColumnBuilderOptional<TBuilder> extends true ? ColumnValue<TBuilder> | null : ColumnValue<TBuilder>;
13
+ type AddedColumnName<TFrom extends SchemaLike, TTo extends SchemaLike, TTable extends SharedTableName<TFrom, TTo>> = Exclude<ColumnName<TTo, TTable>, ColumnName<TFrom, TTable>>;
14
+ type RemovedColumnName<TFrom extends SchemaLike, TTo extends SchemaLike, TTable extends SharedTableName<TFrom, TTo>> = Exclude<ColumnName<TFrom, TTable>, ColumnName<TTo, TTable>>;
15
+ type BuilderIdentity<TBuilder extends AnyTypedColumnBuilder> = readonly [
16
+ ColumnBuilderSqlType<TBuilder>,
17
+ ColumnBuilderOptional<TBuilder>,
18
+ ColumnBuilderReferences<TBuilder>
19
+ ];
20
+ type BuildersEqual<TLeft extends AnyTypedColumnBuilder, TRight extends AnyTypedColumnBuilder> = [
21
+ BuilderIdentity<TLeft>
22
+ ] extends [BuilderIdentity<TRight>] ? [BuilderIdentity<TRight>] extends [BuilderIdentity<TLeft>] ? true : false : false;
23
+ type AddOperationForBuilder<TBuilder extends AnyTypedColumnBuilder> = AddOp<ColumnBuilderSqlType<TBuilder>, DefaultValueForBuilder<TBuilder>>;
24
+ type DropOperationForBuilder<TBuilder extends AnyTypedColumnBuilder> = DropOp<ColumnBuilderSqlType<TBuilder>, DefaultValueForBuilder<TBuilder>>;
25
+ export type MigrationTableShape<TFrom extends SchemaLike, TTo extends SchemaLike, TTable extends SharedTableName<TFrom, TTo>> = Simplify<{
26
+ [TColumn in AddedColumnName<TFrom, TTo, TTable>]?: AddOperationForBuilder<BuilderForColumn<TTo, TTable, TColumn>> | RenameOp<RemovedColumnName<TFrom, TTo, TTable>>;
27
+ } & {
28
+ [TColumn in RemovedColumnName<TFrom, TTo, TTable>]?: DropOperationForBuilder<BuilderForColumn<TFrom, TTable, TColumn>>;
29
+ }>;
30
+ export type MigrationShape<TFrom extends SchemaLike, TTo extends SchemaLike> = Simplify<{
31
+ [TTable in SharedTableName<TFrom, TTo>]?: MigrationTableShape<TFrom, TTo, TTable>;
32
+ }>;
33
+ type MigrationTables<TMigrate> = NonNullable<TMigrate> extends Record<string, unknown> ? NonNullable<TMigrate> : {};
34
+ type TableOpsFor<TMigrate, TTable extends string> = TTable extends keyof MigrationTables<TMigrate> ? MigrationTables<TMigrate>[TTable] extends Record<string, unknown> ? MigrationTables<TMigrate>[TTable] : {} : {};
35
+ type TableOpFor<TMigrate, TTable extends string, TColumn extends string> = TColumn extends keyof TableOpsFor<TMigrate, TTable> ? TableOpsFor<TMigrate, TTable>[TColumn] : never;
36
+ type RenameSourcesForTable<TTableOps> = TTableOps extends Record<string, unknown> ? {
37
+ [TColumn in Extract<keyof TTableOps, string>]: TTableOps[TColumn] extends RenameOp<infer TOldName extends string> ? TOldName : never;
38
+ }[Extract<keyof TTableOps, string>] : never;
39
+ type UnknownMigrationTables<TFrom extends SchemaLike, TTo extends SchemaLike, TMigrate> = Exclude<Extract<keyof MigrationTables<TMigrate>, string>, SharedTableName<TFrom, TTo>>;
40
+ type UnknownMigrationColumns<TFrom extends SchemaLike, TTo extends SchemaLike, TMigrate> = {
41
+ [TTable in SharedTableName<TFrom, TTo>]: Exclude<Extract<keyof TableOpsFor<TMigrate, TTable>, string>, AddedColumnName<TFrom, TTo, TTable> | RemovedColumnName<TFrom, TTo, TTable>> extends infer TUnknownColumn ? [TUnknownColumn] extends [never] ? never : {
42
+ readonly table: TTable;
43
+ readonly column: Extract<TUnknownColumn, string>;
44
+ readonly problem: "Migration tables may only mention added or removed columns";
45
+ } : never;
46
+ }[SharedTableName<TFrom, TTo>];
47
+ type ValidateAddedColumnOperation<TFrom extends SchemaLike, TTo extends SchemaLike, TTable extends SharedTableName<TFrom, TTo>, TColumn extends AddedColumnName<TFrom, TTo, TTable>, TMigrate> = TableOpFor<TMigrate, TTable, TColumn> extends infer TOperation ? [TOperation] extends [never] ? {
48
+ readonly table: TTable;
49
+ readonly column: TColumn;
50
+ readonly problem: "Added columns must use col.add.*(...) or col.renameFrom(...)";
51
+ } : TOperation extends AddOperationForBuilder<BuilderForColumn<TTo, TTable, TColumn>> ? never : TOperation extends RenameOp<infer TOldName extends string> ? TOldName extends RemovedColumnName<TFrom, TTo, TTable> ? BuildersEqual<BuilderForColumn<TFrom, TTable, TOldName>, BuilderForColumn<TTo, TTable, TColumn>> extends true ? never : {
52
+ readonly table: TTable;
53
+ readonly column: TColumn;
54
+ readonly renameFrom: TOldName;
55
+ readonly problem: "col.renameFrom(...) must point at a removed column with the same type";
56
+ } : {
57
+ readonly table: TTable;
58
+ readonly column: TColumn;
59
+ readonly renameFrom: TOldName;
60
+ readonly problem: "col.renameFrom(...) must point at a removed column in the same table";
61
+ } : {
62
+ readonly table: TTable;
63
+ readonly column: TColumn;
64
+ readonly problem: "Added columns must use col.add.*(...) or col.renameFrom(...)";
65
+ } : never;
66
+ type AddedColumnOperationErrors<TFrom extends SchemaLike, TTo extends SchemaLike, TMigrate> = {
67
+ [TTable in SharedTableName<TFrom, TTo>]: {
68
+ [TColumn in AddedColumnName<TFrom, TTo, TTable>]: ValidateAddedColumnOperation<TFrom, TTo, TTable, TColumn, TMigrate>;
69
+ }[AddedColumnName<TFrom, TTo, TTable>];
70
+ }[SharedTableName<TFrom, TTo>];
71
+ type ValidateRemovedColumnOperation<TFrom extends SchemaLike, TTo extends SchemaLike, TTable extends SharedTableName<TFrom, TTo>, TColumn extends RemovedColumnName<TFrom, TTo, TTable>, TMigrate> = TColumn extends RenameSourcesForTable<TableOpsFor<TMigrate, TTable>> ? TableOpFor<TMigrate, TTable, TColumn> extends never ? never : {
72
+ readonly table: TTable;
73
+ readonly column: TColumn;
74
+ readonly problem: "Removed columns cannot be both dropped and renamed from";
75
+ } : [TableOpFor<TMigrate, TTable, TColumn>] extends [never] ? {
76
+ readonly table: TTable;
77
+ readonly column: TColumn;
78
+ readonly problem: "Removed columns must use col.drop.*(...) or be referenced by col.renameFrom(...)";
79
+ } : [TableOpFor<TMigrate, TTable, TColumn>] extends [
80
+ DropOperationForBuilder<BuilderForColumn<TFrom, TTable, TColumn>>
81
+ ] ? never : {
82
+ readonly table: TTable;
83
+ readonly column: TColumn;
84
+ readonly problem: "Removed columns must use col.drop.*(...) or be referenced by col.renameFrom(...)";
85
+ };
86
+ type RemovedColumnOperationErrors<TFrom extends SchemaLike, TTo extends SchemaLike, TMigrate> = {
87
+ [TTable in SharedTableName<TFrom, TTo>]: {
88
+ [TColumn in RemovedColumnName<TFrom, TTo, TTable>]: ValidateRemovedColumnOperation<TFrom, TTo, TTable, TColumn, TMigrate>;
89
+ }[RemovedColumnName<TFrom, TTo, TTable>];
90
+ }[SharedTableName<TFrom, TTo>];
91
+ type UnsupportedSharedColumnChanges<TFrom extends SchemaLike, TTo extends SchemaLike> = {
92
+ [TTable in SharedTableName<TFrom, TTo>]: {
93
+ [TColumn in CommonColumnName<TFrom, TTo, TTable>]: BuildersEqual<BuilderForColumn<TFrom, TTable, TColumn>, BuilderForColumn<TTo, TTable, TColumn>> extends true ? never : {
94
+ readonly table: TTable;
95
+ readonly column: TColumn;
96
+ readonly problem: "Columns with the same name must keep the same type, optionality, and ref target";
97
+ };
98
+ }[CommonColumnName<TFrom, TTo, TTable>];
99
+ }[SharedTableName<TFrom, TTo>];
100
+ type MigrationValidationErrors<TFrom extends SchemaLike, TTo extends SchemaLike, TMigrate> = (UnknownMigrationTables<TFrom, TTo, TMigrate> extends infer TUnknownTable ? [TUnknownTable] extends [never] ? never : {
101
+ readonly table: Extract<TUnknownTable, string>;
102
+ readonly problem: "Migration only supports tables present in both from and to";
103
+ } : never) | UnknownMigrationColumns<TFrom, TTo, TMigrate> | AddedColumnOperationErrors<TFrom, TTo, TMigrate> | RemovedColumnOperationErrors<TFrom, TTo, TMigrate> | UnsupportedSharedColumnChanges<TFrom, TTo>;
104
+ type ValidateMigrationConfig<TFrom extends SchemaLike, TTo extends SchemaLike, TMigrate> = [
105
+ MigrationValidationErrors<TFrom, TTo, TMigrate>
106
+ ] extends [never] ? unknown : {
107
+ readonly __migrationValidationError__: "Migration definitions must cover every added or removed column";
108
+ readonly __migrationErrors__: MigrationValidationErrors<TFrom, TTo, TMigrate>;
109
+ };
110
+ export interface DefinedMigration<TFrom extends SchemaLike = SchemaLike, TTo extends SchemaLike = SchemaLike> {
111
+ readonly fromHash: string;
112
+ readonly toHash: string;
113
+ readonly from: TFrom;
114
+ readonly to: TTo;
115
+ readonly forward: Lens[];
116
+ }
117
+ export declare function schemaDefinitionToAst(definition: SchemaDefinition | AppSchema<any>): SchemaAst;
118
+ export declare function defineMigration<const TFrom extends SchemaLike, const TTo extends SchemaLike, const TMigrate extends MigrationShape<TFrom, TTo> | undefined = undefined>(config: {
119
+ fromHash: string;
120
+ toHash: string;
121
+ from: TFrom;
122
+ to: TTo;
123
+ migrate?: TMigrate;
124
+ } & ValidateMigrationConfig<TFrom, TTo, TMigrate>): DefinedMigration<TFrom, TTo>;
125
+ export {};
126
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { assertUserColumnNameAllowed } from "./magic-columns.js";
2
+ import { unwrapTableDefinition } from "./typed-app.js";
3
+ function tableDefinitionToAst(tableName, definition) {
4
+ const columnsDefinition = unwrapTableDefinition(definition);
5
+ return {
6
+ name: tableName,
7
+ columns: Object.entries(columnsDefinition).map(([columnName, builder]) => {
8
+ assertUserColumnNameAllowed(columnName);
9
+ return builder._build(columnName);
10
+ }),
11
+ };
12
+ }
13
+ function normalizeSchemaDefinition(definition) {
14
+ return Object.fromEntries(Object.entries(definition).map(([tableName, tableDefinition]) => [
15
+ tableName,
16
+ unwrapTableDefinition(tableDefinition),
17
+ ]));
18
+ }
19
+ function definitionToSchema(definition) {
20
+ const normalizedDefinition = normalizeSchemaDefinition(definition);
21
+ return {
22
+ tables: Object.entries(normalizedDefinition).map(([tableName, tableDefinition]) => tableDefinitionToAst(tableName, tableDefinition)),
23
+ };
24
+ }
25
+ function buildForwardLenses(migrate, fromDefinition, toDefinition) {
26
+ if (!migrate) {
27
+ return [];
28
+ }
29
+ const forward = [];
30
+ for (const [tableName, rawTableOps] of Object.entries(migrate)) {
31
+ if (!rawTableOps || typeof rawTableOps !== "object") {
32
+ continue;
33
+ }
34
+ const tableOps = rawTableOps;
35
+ const operations = [];
36
+ const renamedSources = new Set();
37
+ const droppedColumns = new Set();
38
+ for (const [columnName, operation] of Object.entries(tableOps)) {
39
+ switch (operation._type) {
40
+ case "rename": {
41
+ assertUserColumnNameAllowed(columnName);
42
+ if (renamedSources.has(operation.oldName)) {
43
+ throw new Error(`Migration for ${tableName} renames ${operation.oldName} more than once.`);
44
+ }
45
+ if (droppedColumns.has(operation.oldName)) {
46
+ throw new Error(`Migration for ${tableName} cannot both drop and rename ${operation.oldName}.`);
47
+ }
48
+ renamedSources.add(operation.oldName);
49
+ operations.push({
50
+ type: "rename",
51
+ column: operation.oldName,
52
+ value: columnName,
53
+ });
54
+ break;
55
+ }
56
+ case "add": {
57
+ assertUserColumnNameAllowed(columnName);
58
+ const builder = toDefinition[tableName]?.[columnName];
59
+ if (!builder) {
60
+ throw new Error(`Migration references unknown target column ${tableName}.${columnName}.`);
61
+ }
62
+ operations.push({
63
+ type: "introduce",
64
+ column: columnName,
65
+ sqlType: builder._sqlType,
66
+ value: operation.default,
67
+ });
68
+ break;
69
+ }
70
+ case "drop": {
71
+ if (renamedSources.has(columnName)) {
72
+ throw new Error(`Migration for ${tableName} cannot both drop and rename ${columnName}.`);
73
+ }
74
+ droppedColumns.add(columnName);
75
+ const builder = fromDefinition[tableName]?.[columnName];
76
+ if (!builder) {
77
+ throw new Error(`Migration references unknown source column ${tableName}.${columnName}.`);
78
+ }
79
+ operations.push({
80
+ type: "drop",
81
+ column: columnName,
82
+ sqlType: builder._sqlType,
83
+ value: operation.backwardsDefault,
84
+ });
85
+ break;
86
+ }
87
+ }
88
+ }
89
+ if (operations.length > 0) {
90
+ forward.push({
91
+ table: tableName,
92
+ operations,
93
+ });
94
+ }
95
+ }
96
+ return forward;
97
+ }
98
+ export function schemaDefinitionToAst(definition) {
99
+ return definitionToSchema(definition);
100
+ }
101
+ export function defineMigration(config) {
102
+ const fromDefinition = normalizeSchemaDefinition(config.from);
103
+ const toDefinition = normalizeSchemaDefinition(config.to);
104
+ return {
105
+ fromHash: config.fromHash,
106
+ toHash: config.toHash,
107
+ from: config.from,
108
+ to: config.to,
109
+ forward: buildForwardLenses(config.migrate, fromDefinition, toDefinition),
110
+ };
111
+ }
112
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
@@ -239,6 +239,41 @@ describe("permissions DSL", () => {
239
239
  },
240
240
  });
241
241
  });
242
+ it("compiles provenance magic column policies", () => {
243
+ const compiled = definePermissions(app, ({ policy, session }) => [
244
+ policy.todos.allowRead.where({ $createdBy: session.userId }),
245
+ policy.todos.allowUpdate
246
+ .whereOld({ $createdBy: session.userId })
247
+ .whereNew({ $updatedBy: session.userId }),
248
+ ]);
249
+ expect(compiled.todos.select?.using).toEqual({
250
+ type: "Cmp",
251
+ column: "$createdBy",
252
+ op: "Eq",
253
+ value: {
254
+ type: "SessionRef",
255
+ path: ["userId"],
256
+ },
257
+ });
258
+ expect(compiled.todos.update?.using).toEqual({
259
+ type: "Cmp",
260
+ column: "$createdBy",
261
+ op: "Eq",
262
+ value: {
263
+ type: "SessionRef",
264
+ path: ["userId"],
265
+ },
266
+ });
267
+ expect(compiled.todos.update?.with_check).toEqual({
268
+ type: "Cmp",
269
+ column: "$updatedBy",
270
+ op: "Eq",
271
+ value: {
272
+ type: "SessionRef",
273
+ path: ["userId"],
274
+ },
275
+ });
276
+ });
242
277
  it("supports plural action aliases and OR-merges repeated rules", () => {
243
278
  const compiled = definePermissions(app, ({ policy, anyOf, allowedTo, session }) => [
244
279
  policy.todos.allowReads.where({ ownerId: session.userId }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/permissions/index.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/permissions/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,50 @@
1
1
  import { afterEach, describe, expect, it, vi } from "vitest";
2
+ import { createJazzClient } from "./create-jazz-client.js";
3
+ const mocks = vi.hoisted(() => {
4
+ const resolveLocalAuthDefaults = vi.fn();
5
+ const resolveClientSession = vi.fn();
6
+ const createDb = vi.fn();
7
+ const managerCtor = vi.fn();
8
+ const managerInit = vi.fn();
9
+ const managerShutdown = vi.fn();
10
+ class MockSubscriptionsOrchestrator {
11
+ constructor(config, instanceDb, sessionArg) {
12
+ managerCtor(config, instanceDb, sessionArg);
13
+ }
14
+ init = managerInit;
15
+ shutdown = managerShutdown;
16
+ }
17
+ return {
18
+ resolveLocalAuthDefaults,
19
+ resolveClientSession,
20
+ createDb,
21
+ managerCtor,
22
+ managerInit,
23
+ managerShutdown,
24
+ MockSubscriptionsOrchestrator,
25
+ };
26
+ });
27
+ vi.mock("../runtime/local-auth.js", () => ({
28
+ resolveLocalAuthDefaults: mocks.resolveLocalAuthDefaults,
29
+ }));
30
+ vi.mock("../runtime/client-session.js", () => ({
31
+ resolveClientSession: mocks.resolveClientSession,
32
+ }));
33
+ vi.mock("./db.js", async () => {
34
+ const actual = await vi.importActual("./db.js");
35
+ return {
36
+ ...actual,
37
+ createDb: mocks.createDb,
38
+ };
39
+ });
40
+ vi.mock("../subscriptions-orchestrator.js", async () => {
41
+ const actual = await vi.importActual("../subscriptions-orchestrator.js");
42
+ return {
43
+ ...actual,
44
+ SubscriptionsOrchestrator: mocks.MockSubscriptionsOrchestrator,
45
+ };
46
+ });
2
47
  async function setupCreateClient(options = {}) {
3
- vi.resetModules();
4
48
  const resolvedConfig = options.resolvedConfig ?? {
5
49
  appId: "rn-create-client-resolved",
6
50
  localAuthMode: "anonymous",
@@ -8,70 +52,46 @@ async function setupCreateClient(options = {}) {
8
52
  };
9
53
  const dbShutdown = vi.fn(async () => { });
10
54
  const db = { shutdown: dbShutdown };
11
- const resolveLocalAuthDefaults = vi.fn((input) => resolvedConfig);
12
- const resolveClientSession = vi.fn(async () => {
55
+ mocks.resolveLocalAuthDefaults.mockImplementation((_input) => resolvedConfig);
56
+ mocks.resolveClientSession.mockImplementation(async () => {
13
57
  if (options.sessionError) {
14
58
  throw options.sessionError;
15
59
  }
16
60
  return options.session ?? null;
17
61
  });
18
- const createDb = vi.fn(async (_config) => {
62
+ mocks.createDb.mockImplementation(async (_config) => {
19
63
  if (options.dbError) {
20
64
  throw options.dbError;
21
65
  }
22
66
  return db;
23
67
  });
24
- const managerCtor = vi.fn();
25
- const managerInit = vi.fn(async () => {
68
+ mocks.managerInit.mockImplementation(async () => {
26
69
  if (options.orchestratorInitError) {
27
70
  throw options.orchestratorInitError;
28
71
  }
29
72
  });
30
- const managerShutdown = vi.fn(async () => { });
31
- vi.doMock("../runtime/local-auth.js", () => ({
32
- resolveLocalAuthDefaults,
33
- }));
34
- vi.doMock("../runtime/client-session.js", () => ({
35
- resolveClientSession,
36
- }));
37
- vi.doMock("./db.js", () => ({
38
- createDb,
39
- }));
40
- vi.doMock("../subscriptions-orchestrator.js", async () => {
41
- const actual = await vi.importActual("../subscriptions-orchestrator.js");
42
- class MockSubscriptionsOrchestrator {
43
- constructor(config, instanceDb, sessionArg) {
44
- managerCtor(config, instanceDb, sessionArg);
45
- }
46
- init = managerInit;
47
- shutdown = managerShutdown;
48
- }
49
- return {
50
- ...actual,
51
- SubscriptionsOrchestrator: MockSubscriptionsOrchestrator,
52
- };
53
- });
54
- const { createJazzClient } = await import("./create-jazz-client.js");
73
+ mocks.managerShutdown.mockImplementation(async () => { });
55
74
  return {
56
75
  createJazzClient,
57
- createDb,
58
- resolveLocalAuthDefaults,
59
- resolveClientSession,
76
+ createDb: mocks.createDb,
77
+ resolveLocalAuthDefaults: mocks.resolveLocalAuthDefaults,
78
+ resolveClientSession: mocks.resolveClientSession,
60
79
  resolvedConfig,
61
80
  db,
62
81
  dbShutdown,
63
- managerCtor,
64
- managerInit,
65
- managerShutdown,
82
+ managerCtor: mocks.managerCtor,
83
+ managerInit: mocks.managerInit,
84
+ managerShutdown: mocks.managerShutdown,
66
85
  };
67
86
  }
68
87
  afterEach(() => {
88
+ mocks.resolveLocalAuthDefaults.mockReset();
89
+ mocks.resolveClientSession.mockReset();
90
+ mocks.createDb.mockReset();
91
+ mocks.managerCtor.mockReset();
92
+ mocks.managerInit.mockReset();
93
+ mocks.managerShutdown.mockReset();
69
94
  vi.clearAllMocks();
70
- vi.resetModules();
71
- vi.doUnmock("../runtime/local-auth.js");
72
- vi.doUnmock("../runtime/client-session.js");
73
- vi.doUnmock("./db.js");
74
- vi.doUnmock("../subscriptions-orchestrator.js");
75
95
  });
76
96
  describe("react-native/create-jazz-client", () => {
77
97
  it("RNC-U01 initializes client session + manager and shuts down cleanly", async () => {