@abloatai/transaction 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (723) hide show
  1. package/CONVENTIONS.md +83 -0
  2. package/README.md +48 -0
  3. package/dist/ablo.d.ts +90 -0
  4. package/dist/ablo.d.ts.map +1 -0
  5. package/dist/ablo.js +34 -0
  6. package/dist/ablo.js.map +1 -0
  7. package/dist/ai-sdk/coordinatedTool.d.ts +123 -0
  8. package/dist/ai-sdk/coordinatedTool.d.ts.map +1 -0
  9. package/dist/ai-sdk/coordinatedTool.js +135 -0
  10. package/dist/ai-sdk/coordinatedTool.js.map +1 -0
  11. package/dist/ai-sdk/index.d.ts +2 -0
  12. package/dist/ai-sdk/index.d.ts.map +1 -0
  13. package/dist/ai-sdk/index.js +2 -0
  14. package/dist/ai-sdk/index.js.map +1 -0
  15. package/dist/auth/apiKey.d.ts +154 -0
  16. package/dist/auth/apiKey.d.ts.map +1 -0
  17. package/dist/auth/apiKey.js +408 -0
  18. package/dist/auth/apiKey.js.map +1 -0
  19. package/dist/auth/bootstrapScope.d.ts +16 -0
  20. package/dist/auth/bootstrapScope.d.ts.map +1 -0
  21. package/dist/auth/bootstrapScope.js +2 -0
  22. package/dist/auth/bootstrapScope.js.map +1 -0
  23. package/dist/auth/browserCredentialSafety.d.ts +7 -0
  24. package/dist/auth/browserCredentialSafety.d.ts.map +1 -0
  25. package/dist/auth/browserCredentialSafety.js +29 -0
  26. package/dist/auth/browserCredentialSafety.js.map +1 -0
  27. package/dist/auth/capability.d.ts +241 -0
  28. package/dist/auth/capability.d.ts.map +1 -0
  29. package/dist/auth/capability.js +253 -0
  30. package/dist/auth/capability.js.map +1 -0
  31. package/dist/auth/capabilityLifecycle.d.ts +47 -0
  32. package/dist/auth/capabilityLifecycle.d.ts.map +1 -0
  33. package/dist/auth/capabilityLifecycle.js +108 -0
  34. package/dist/auth/capabilityLifecycle.js.map +1 -0
  35. package/dist/auth/credentialEndpoint.d.ts +10 -0
  36. package/dist/auth/credentialEndpoint.d.ts.map +1 -0
  37. package/dist/auth/credentialEndpoint.js +58 -0
  38. package/dist/auth/credentialEndpoint.js.map +1 -0
  39. package/dist/auth/credentialEndpointProtocol.d.ts +24 -0
  40. package/dist/auth/credentialEndpointProtocol.d.ts.map +1 -0
  41. package/dist/auth/credentialEndpointProtocol.js +34 -0
  42. package/dist/auth/credentialEndpointProtocol.js.map +1 -0
  43. package/dist/auth/credentialKind.d.ts +4 -0
  44. package/dist/auth/credentialKind.d.ts.map +1 -0
  45. package/dist/auth/credentialKind.js +15 -0
  46. package/dist/auth/credentialKind.js.map +1 -0
  47. package/dist/auth/credentialPolicy.d.ts +141 -0
  48. package/dist/auth/credentialPolicy.d.ts.map +1 -0
  49. package/dist/auth/credentialPolicy.js +113 -0
  50. package/dist/auth/credentialPolicy.js.map +1 -0
  51. package/dist/auth/credentialResult.d.ts +7 -0
  52. package/dist/auth/credentialResult.d.ts.map +1 -0
  53. package/dist/auth/credentialResult.js +9 -0
  54. package/dist/auth/credentialResult.js.map +1 -0
  55. package/dist/auth/credentialSource.d.ts +31 -0
  56. package/dist/auth/credentialSource.d.ts.map +1 -0
  57. package/dist/auth/credentialSource.js +56 -0
  58. package/dist/auth/credentialSource.js.map +1 -0
  59. package/dist/auth/hostedEndpoints.d.ts +22 -0
  60. package/dist/auth/hostedEndpoints.d.ts.map +1 -0
  61. package/dist/auth/hostedEndpoints.js +22 -0
  62. package/dist/auth/hostedEndpoints.js.map +1 -0
  63. package/dist/auth/identity.d.ts +62 -0
  64. package/dist/auth/identity.d.ts.map +1 -0
  65. package/dist/auth/identity.js +224 -0
  66. package/dist/auth/identity.js.map +1 -0
  67. package/dist/auth/index.d.ts +189 -0
  68. package/dist/auth/index.d.ts.map +1 -0
  69. package/dist/auth/index.js +312 -0
  70. package/dist/auth/index.js.map +1 -0
  71. package/dist/auth/schemas.d.ts +41 -0
  72. package/dist/auth/schemas.d.ts.map +1 -0
  73. package/dist/auth/schemas.js +69 -0
  74. package/dist/auth/schemas.js.map +1 -0
  75. package/dist/auth/sessionMint.d.ts +29 -0
  76. package/dist/auth/sessionMint.d.ts.map +1 -0
  77. package/dist/auth/sessionMint.js +92 -0
  78. package/dist/auth/sessionMint.js.map +1 -0
  79. package/dist/auth/token.d.ts +4 -0
  80. package/dist/auth/token.d.ts.map +1 -0
  81. package/dist/auth/token.js +4 -0
  82. package/dist/auth/token.js.map +1 -0
  83. package/dist/batching/index.d.ts +56 -0
  84. package/dist/batching/index.d.ts.map +1 -0
  85. package/dist/batching/index.js +148 -0
  86. package/dist/batching/index.js.map +1 -0
  87. package/dist/coordination/awaitClaimGrant.d.ts +57 -0
  88. package/dist/coordination/awaitClaimGrant.d.ts.map +1 -0
  89. package/dist/coordination/awaitClaimGrant.js +138 -0
  90. package/dist/coordination/awaitClaimGrant.js.map +1 -0
  91. package/dist/coordination/claimHeartbeatLoop.d.ts +85 -0
  92. package/dist/coordination/claimHeartbeatLoop.d.ts.map +1 -0
  93. package/dist/coordination/claimHeartbeatLoop.js +109 -0
  94. package/dist/coordination/claimHeartbeatLoop.js.map +1 -0
  95. package/dist/coordination/claimMeta.d.ts +50 -0
  96. package/dist/coordination/claimMeta.d.ts.map +1 -0
  97. package/dist/coordination/claimMeta.js +53 -0
  98. package/dist/coordination/claimMeta.js.map +1 -0
  99. package/dist/coordination/events.d.ts +75 -0
  100. package/dist/coordination/events.d.ts.map +1 -0
  101. package/dist/coordination/events.js +8 -0
  102. package/dist/coordination/events.js.map +1 -0
  103. package/dist/coordination/index.d.ts +20 -0
  104. package/dist/coordination/index.d.ts.map +1 -0
  105. package/dist/coordination/index.js +46 -0
  106. package/dist/coordination/index.js.map +1 -0
  107. package/dist/coordination/locator.d.ts +106 -0
  108. package/dist/coordination/locator.d.ts.map +1 -0
  109. package/dist/coordination/locator.js +110 -0
  110. package/dist/coordination/locator.js.map +1 -0
  111. package/dist/coordination/schema.d.ts +1332 -0
  112. package/dist/coordination/schema.d.ts.map +1 -0
  113. package/dist/coordination/schema.js +1137 -0
  114. package/dist/coordination/schema.js.map +1 -0
  115. package/dist/coordination/targetConflict.d.ts +3 -0
  116. package/dist/coordination/targetConflict.d.ts.map +1 -0
  117. package/dist/coordination/targetConflict.js +74 -0
  118. package/dist/coordination/targetConflict.js.map +1 -0
  119. package/dist/coordination/trace.d.ts +79 -0
  120. package/dist/coordination/trace.d.ts.map +1 -0
  121. package/dist/coordination/trace.js +139 -0
  122. package/dist/coordination/trace.js.map +1 -0
  123. package/dist/docs/catalog.d.ts +73 -0
  124. package/dist/docs/catalog.d.ts.map +1 -0
  125. package/dist/docs/catalog.js +231 -0
  126. package/dist/docs/catalog.js.map +1 -0
  127. package/dist/docs/index.d.ts +11 -0
  128. package/dist/docs/index.d.ts.map +1 -0
  129. package/dist/docs/index.js +11 -0
  130. package/dist/docs/index.js.map +1 -0
  131. package/dist/durableWrites.d.ts +63 -0
  132. package/dist/durableWrites.d.ts.map +1 -0
  133. package/dist/durableWrites.js +72 -0
  134. package/dist/durableWrites.js.map +1 -0
  135. package/dist/environment.d.ts +106 -0
  136. package/dist/environment.d.ts.map +1 -0
  137. package/dist/environment.js +109 -0
  138. package/dist/environment.js.map +1 -0
  139. package/dist/errorCodes.d.ts +411 -0
  140. package/dist/errorCodes.d.ts.map +1 -0
  141. package/dist/errorCodes.js +500 -0
  142. package/dist/errorCodes.js.map +1 -0
  143. package/dist/errors.d.ts +429 -0
  144. package/dist/errors.d.ts.map +1 -0
  145. package/dist/errors.js +687 -0
  146. package/dist/errors.js.map +1 -0
  147. package/dist/footprint.d.ts +112 -0
  148. package/dist/footprint.d.ts.map +1 -0
  149. package/dist/footprint.js +0 -0
  150. package/dist/footprint.js.map +1 -0
  151. package/dist/headlessClient.d.ts +10 -0
  152. package/dist/headlessClient.d.ts.map +1 -0
  153. package/dist/headlessClient.js +114 -0
  154. package/dist/headlessClient.js.map +1 -0
  155. package/dist/index.d.ts +21 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +21 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/keys/index.d.ts +88 -0
  160. package/dist/keys/index.d.ts.map +1 -0
  161. package/dist/keys/index.js +208 -0
  162. package/dist/keys/index.js.map +1 -0
  163. package/dist/log/syncDeltaRow.d.ts +159 -0
  164. package/dist/log/syncDeltaRow.d.ts.map +1 -0
  165. package/dist/log/syncDeltaRow.js +96 -0
  166. package/dist/log/syncDeltaRow.js.map +1 -0
  167. package/dist/logger.d.ts +17 -0
  168. package/dist/logger.d.ts.map +1 -0
  169. package/dist/logger.js +8 -0
  170. package/dist/logger.js.map +1 -0
  171. package/dist/observability.d.ts +54 -0
  172. package/dist/observability.d.ts.map +1 -0
  173. package/dist/observability.js +20 -0
  174. package/dist/observability.js.map +1 -0
  175. package/dist/policy/types.d.ts +218 -0
  176. package/dist/policy/types.d.ts.map +1 -0
  177. package/dist/policy/types.js +127 -0
  178. package/dist/policy/types.js.map +1 -0
  179. package/dist/resources/functionalUpdate.d.ts +80 -0
  180. package/dist/resources/functionalUpdate.d.ts.map +1 -0
  181. package/dist/resources/functionalUpdate.js +88 -0
  182. package/dist/resources/functionalUpdate.js.map +1 -0
  183. package/dist/resources/httpResources.d.ts +449 -0
  184. package/dist/resources/httpResources.d.ts.map +1 -0
  185. package/dist/resources/httpResources.js +8 -0
  186. package/dist/resources/httpResources.js.map +1 -0
  187. package/dist/resources/modelOperations.d.ts +380 -0
  188. package/dist/resources/modelOperations.d.ts.map +1 -0
  189. package/dist/resources/modelOperations.js +13 -0
  190. package/dist/resources/modelOperations.js.map +1 -0
  191. package/dist/resources/mutationOptions.d.ts +67 -0
  192. package/dist/resources/mutationOptions.d.ts.map +1 -0
  193. package/dist/resources/mutationOptions.js +10 -0
  194. package/dist/resources/mutationOptions.js.map +1 -0
  195. package/dist/resources/where.d.ts +102 -0
  196. package/dist/resources/where.d.ts.map +1 -0
  197. package/dist/resources/where.js +116 -0
  198. package/dist/resources/where.js.map +1 -0
  199. package/dist/resources/writeOptionsSchema.d.ts +48 -0
  200. package/dist/resources/writeOptionsSchema.d.ts.map +1 -0
  201. package/dist/resources/writeOptionsSchema.js +74 -0
  202. package/dist/resources/writeOptionsSchema.js.map +1 -0
  203. package/dist/schema/coordination.d.ts +113 -0
  204. package/dist/schema/coordination.d.ts.map +1 -0
  205. package/dist/schema/coordination.js +134 -0
  206. package/dist/schema/coordination.js.map +1 -0
  207. package/dist/schema/ddl.d.ts +98 -0
  208. package/dist/schema/ddl.d.ts.map +1 -0
  209. package/dist/schema/ddl.js +492 -0
  210. package/dist/schema/ddl.js.map +1 -0
  211. package/dist/schema/ddlLock.d.ts +36 -0
  212. package/dist/schema/ddlLock.d.ts.map +1 -0
  213. package/dist/schema/ddlLock.js +47 -0
  214. package/dist/schema/ddlLock.js.map +1 -0
  215. package/dist/schema/diff.d.ts +226 -0
  216. package/dist/schema/diff.d.ts.map +1 -0
  217. package/dist/schema/diff.js +290 -0
  218. package/dist/schema/diff.js.map +1 -0
  219. package/dist/schema/field.d.ts +121 -0
  220. package/dist/schema/field.d.ts.map +1 -0
  221. package/dist/schema/field.js +266 -0
  222. package/dist/schema/field.js.map +1 -0
  223. package/dist/schema/fieldRef.d.ts +58 -0
  224. package/dist/schema/fieldRef.d.ts.map +1 -0
  225. package/dist/schema/fieldRef.js +26 -0
  226. package/dist/schema/fieldRef.js.map +1 -0
  227. package/dist/schema/generate.d.ts +20 -0
  228. package/dist/schema/generate.d.ts.map +1 -0
  229. package/dist/schema/generate.js +87 -0
  230. package/dist/schema/generate.js.map +1 -0
  231. package/dist/schema/index.d.ts +43 -0
  232. package/dist/schema/index.d.ts.map +1 -0
  233. package/dist/schema/index.js +81 -0
  234. package/dist/schema/index.js.map +1 -0
  235. package/dist/schema/loadStrategy.d.ts +46 -0
  236. package/dist/schema/loadStrategy.d.ts.map +1 -0
  237. package/dist/schema/loadStrategy.js +47 -0
  238. package/dist/schema/loadStrategy.js.map +1 -0
  239. package/dist/schema/model.d.ts +380 -0
  240. package/dist/schema/model.d.ts.map +1 -0
  241. package/dist/schema/model.js +124 -0
  242. package/dist/schema/model.js.map +1 -0
  243. package/dist/schema/openapi.d.ts +59 -0
  244. package/dist/schema/openapi.d.ts.map +1 -0
  245. package/dist/schema/openapi.js +508 -0
  246. package/dist/schema/openapi.js.map +1 -0
  247. package/dist/schema/queries.d.ts +202 -0
  248. package/dist/schema/queries.d.ts.map +1 -0
  249. package/dist/schema/queries.js +144 -0
  250. package/dist/schema/queries.js.map +1 -0
  251. package/dist/schema/relation.d.ts +205 -0
  252. package/dist/schema/relation.d.ts.map +1 -0
  253. package/dist/schema/relation.js +105 -0
  254. package/dist/schema/relation.js.map +1 -0
  255. package/dist/schema/residency.d.ts +30 -0
  256. package/dist/schema/residency.d.ts.map +1 -0
  257. package/dist/schema/residency.js +26 -0
  258. package/dist/schema/residency.js.map +1 -0
  259. package/dist/schema/roles.d.ts +250 -0
  260. package/dist/schema/roles.d.ts.map +1 -0
  261. package/dist/schema/roles.js +231 -0
  262. package/dist/schema/roles.js.map +1 -0
  263. package/dist/schema/schema.d.ts +352 -0
  264. package/dist/schema/schema.d.ts.map +1 -0
  265. package/dist/schema/schema.js +326 -0
  266. package/dist/schema/schema.js.map +1 -0
  267. package/dist/schema/select.d.ts +41 -0
  268. package/dist/schema/select.d.ts.map +1 -0
  269. package/dist/schema/select.js +91 -0
  270. package/dist/schema/select.js.map +1 -0
  271. package/dist/schema/serialize.d.ts +116 -0
  272. package/dist/schema/serialize.d.ts.map +1 -0
  273. package/dist/schema/serialize.js +278 -0
  274. package/dist/schema/serialize.js.map +1 -0
  275. package/dist/schema/sugar.d.ts +110 -0
  276. package/dist/schema/sugar.d.ts.map +1 -0
  277. package/dist/schema/sugar.js +84 -0
  278. package/dist/schema/sugar.js.map +1 -0
  279. package/dist/schema/tenancy.d.ts +140 -0
  280. package/dist/schema/tenancy.d.ts.map +1 -0
  281. package/dist/schema/tenancy.js +191 -0
  282. package/dist/schema/tenancy.js.map +1 -0
  283. package/dist/server/adapter.d.ts +174 -0
  284. package/dist/server/adapter.d.ts.map +1 -0
  285. package/dist/server/adapter.js +19 -0
  286. package/dist/server/adapter.js.map +1 -0
  287. package/dist/server/commit.d.ts +108 -0
  288. package/dist/server/commit.d.ts.map +1 -0
  289. package/dist/server/commit.js +2 -0
  290. package/dist/server/commit.js.map +1 -0
  291. package/dist/server/index.d.ts +15 -0
  292. package/dist/server/index.d.ts.map +1 -0
  293. package/dist/server/index.js +3 -0
  294. package/dist/server/index.js.map +1 -0
  295. package/dist/server/readConfig.d.ts +81 -0
  296. package/dist/server/readConfig.d.ts.map +1 -0
  297. package/dist/server/readConfig.js +9 -0
  298. package/dist/server/readConfig.js.map +1 -0
  299. package/dist/server/storageMode.d.ts +24 -0
  300. package/dist/server/storageMode.d.ts.map +1 -0
  301. package/dist/server/storageMode.js +18 -0
  302. package/dist/server/storageMode.js.map +1 -0
  303. package/dist/source/adapter.d.ts +84 -0
  304. package/dist/source/adapter.d.ts.map +1 -0
  305. package/dist/source/adapter.js +25 -0
  306. package/dist/source/adapter.js.map +1 -0
  307. package/dist/source/adapters/drizzle.d.ts +49 -0
  308. package/dist/source/adapters/drizzle.d.ts.map +1 -0
  309. package/dist/source/adapters/drizzle.js +220 -0
  310. package/dist/source/adapters/drizzle.js.map +1 -0
  311. package/dist/source/adapters/kysely.d.ts +43 -0
  312. package/dist/source/adapters/kysely.d.ts.map +1 -0
  313. package/dist/source/adapters/kysely.js +206 -0
  314. package/dist/source/adapters/kysely.js.map +1 -0
  315. package/dist/source/adapters/kyselyMutationCore.d.ts +77 -0
  316. package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -0
  317. package/dist/source/adapters/kyselyMutationCore.js +126 -0
  318. package/dist/source/adapters/kyselyMutationCore.js.map +1 -0
  319. package/dist/source/adapters/memory.d.ts +14 -0
  320. package/dist/source/adapters/memory.d.ts.map +1 -0
  321. package/dist/source/adapters/memory.js +131 -0
  322. package/dist/source/adapters/memory.js.map +1 -0
  323. package/dist/source/adapters/prisma.d.ts +64 -0
  324. package/dist/source/adapters/prisma.d.ts.map +1 -0
  325. package/dist/source/adapters/prisma.js +203 -0
  326. package/dist/source/adapters/prisma.js.map +1 -0
  327. package/dist/source/conformance.d.ts +38 -0
  328. package/dist/source/conformance.d.ts.map +1 -0
  329. package/dist/source/conformance.js +216 -0
  330. package/dist/source/conformance.js.map +1 -0
  331. package/dist/source/connector.d.ts +96 -0
  332. package/dist/source/connector.d.ts.map +1 -0
  333. package/dist/source/connector.js +267 -0
  334. package/dist/source/connector.js.map +1 -0
  335. package/dist/source/connectorProtocol.d.ts +155 -0
  336. package/dist/source/connectorProtocol.d.ts.map +1 -0
  337. package/dist/source/connectorProtocol.js +164 -0
  338. package/dist/source/connectorProtocol.js.map +1 -0
  339. package/dist/source/contract.d.ts +196 -0
  340. package/dist/source/contract.d.ts.map +1 -0
  341. package/dist/source/contract.js +165 -0
  342. package/dist/source/contract.js.map +1 -0
  343. package/dist/source/drizzle.d.ts +2 -0
  344. package/dist/source/drizzle.d.ts.map +1 -0
  345. package/dist/source/drizzle.js +2 -0
  346. package/dist/source/drizzle.js.map +1 -0
  347. package/dist/source/factory.d.ts +93 -0
  348. package/dist/source/factory.d.ts.map +1 -0
  349. package/dist/source/factory.js +287 -0
  350. package/dist/source/factory.js.map +1 -0
  351. package/dist/source/idempotency.d.ts +62 -0
  352. package/dist/source/idempotency.d.ts.map +1 -0
  353. package/dist/source/idempotency.js +145 -0
  354. package/dist/source/idempotency.js.map +1 -0
  355. package/dist/source/index.d.ts +24 -0
  356. package/dist/source/index.d.ts.map +1 -0
  357. package/dist/source/index.js +29 -0
  358. package/dist/source/index.js.map +1 -0
  359. package/dist/source/kysely.d.ts +3 -0
  360. package/dist/source/kysely.d.ts.map +1 -0
  361. package/dist/source/kysely.js +3 -0
  362. package/dist/source/kysely.js.map +1 -0
  363. package/dist/source/migrations.d.ts +22 -0
  364. package/dist/source/migrations.d.ts.map +1 -0
  365. package/dist/source/migrations.js +104 -0
  366. package/dist/source/migrations.js.map +1 -0
  367. package/dist/source/next.d.ts +33 -0
  368. package/dist/source/next.d.ts.map +1 -0
  369. package/dist/source/next.js +26 -0
  370. package/dist/source/next.js.map +1 -0
  371. package/dist/source/pushQueue.d.ts +135 -0
  372. package/dist/source/pushQueue.d.ts.map +1 -0
  373. package/dist/source/pushQueue.js +257 -0
  374. package/dist/source/pushQueue.js.map +1 -0
  375. package/dist/source/signing.d.ts +93 -0
  376. package/dist/source/signing.d.ts.map +1 -0
  377. package/dist/source/signing.js +163 -0
  378. package/dist/source/signing.js.map +1 -0
  379. package/dist/source/types.d.ts +402 -0
  380. package/dist/source/types.d.ts.map +1 -0
  381. package/dist/source/types.js +60 -0
  382. package/dist/source/types.js.map +1 -0
  383. package/dist/syncLog/contract.d.ts +21 -0
  384. package/dist/syncLog/contract.d.ts.map +1 -0
  385. package/dist/syncLog/contract.js +20 -0
  386. package/dist/syncLog/contract.js.map +1 -0
  387. package/dist/syncLog/index.d.ts +2 -0
  388. package/dist/syncLog/index.d.ts.map +1 -0
  389. package/dist/syncLog/index.js +2 -0
  390. package/dist/syncLog/index.js.map +1 -0
  391. package/dist/testing/fixtures/httpResponses.d.ts +74 -0
  392. package/dist/testing/fixtures/httpResponses.d.ts.map +1 -0
  393. package/dist/testing/fixtures/httpResponses.js +102 -0
  394. package/dist/testing/fixtures/httpResponses.js.map +1 -0
  395. package/dist/transactionLayer.d.ts +110 -0
  396. package/dist/transactionLayer.d.ts.map +1 -0
  397. package/dist/transactionLayer.js +25 -0
  398. package/dist/transactionLayer.js.map +1 -0
  399. package/dist/transactions/settlement/commitEnvelope.d.ts +144 -0
  400. package/dist/transactions/settlement/commitEnvelope.d.ts.map +1 -0
  401. package/dist/transactions/settlement/commitEnvelope.js +162 -0
  402. package/dist/transactions/settlement/commitEnvelope.js.map +1 -0
  403. package/dist/transactions/settlement/httpCommitEnvelope.d.ts +54 -0
  404. package/dist/transactions/settlement/httpCommitEnvelope.d.ts.map +1 -0
  405. package/dist/transactions/settlement/httpCommitEnvelope.js +208 -0
  406. package/dist/transactions/settlement/httpCommitEnvelope.js.map +1 -0
  407. package/dist/transactions/settlement/idempotencyKey.d.ts +11 -0
  408. package/dist/transactions/settlement/idempotencyKey.d.ts.map +1 -0
  409. package/dist/transactions/settlement/idempotencyKey.js +10 -0
  410. package/dist/transactions/settlement/idempotencyKey.js.map +1 -0
  411. package/dist/transactions/settlement/pendingWrite.d.ts +113 -0
  412. package/dist/transactions/settlement/pendingWrite.d.ts.map +1 -0
  413. package/dist/transactions/settlement/pendingWrite.js +21 -0
  414. package/dist/transactions/settlement/pendingWrite.js.map +1 -0
  415. package/dist/transport/commitFrames.d.ts +91 -0
  416. package/dist/transport/commitFrames.d.ts.map +1 -0
  417. package/dist/transport/commitFrames.js +135 -0
  418. package/dist/transport/commitFrames.js.map +1 -0
  419. package/dist/transport/connectionManager.d.ts +216 -0
  420. package/dist/transport/connectionManager.d.ts.map +1 -0
  421. package/dist/transport/connectionManager.js +674 -0
  422. package/dist/transport/connectionManager.js.map +1 -0
  423. package/dist/transport/credentialLifecycle.d.ts +178 -0
  424. package/dist/transport/credentialLifecycle.d.ts.map +1 -0
  425. package/dist/transport/credentialLifecycle.js +324 -0
  426. package/dist/transport/credentialLifecycle.js.map +1 -0
  427. package/dist/transport/heartbeat.d.ts +66 -0
  428. package/dist/transport/heartbeat.d.ts.map +1 -0
  429. package/dist/transport/heartbeat.js +94 -0
  430. package/dist/transport/heartbeat.js.map +1 -0
  431. package/dist/transport/httpClient.d.ts +143 -0
  432. package/dist/transport/httpClient.d.ts.map +1 -0
  433. package/dist/transport/httpClient.js +150 -0
  434. package/dist/transport/httpClient.js.map +1 -0
  435. package/dist/transport/httpFeed.d.ts +4 -0
  436. package/dist/transport/httpFeed.d.ts.map +1 -0
  437. package/dist/transport/httpFeed.js +94 -0
  438. package/dist/transport/httpFeed.js.map +1 -0
  439. package/dist/transport/httpOptions.d.ts +34 -0
  440. package/dist/transport/httpOptions.d.ts.map +1 -0
  441. package/dist/transport/httpOptions.js +13 -0
  442. package/dist/transport/httpOptions.js.map +1 -0
  443. package/dist/transport/httpTransport.d.ts +68 -0
  444. package/dist/transport/httpTransport.d.ts.map +1 -0
  445. package/dist/transport/httpTransport.js +1433 -0
  446. package/dist/transport/httpTransport.js.map +1 -0
  447. package/dist/transport/networkProbe.d.ts +85 -0
  448. package/dist/transport/networkProbe.d.ts.map +1 -0
  449. package/dist/transport/networkProbe.js +208 -0
  450. package/dist/transport/networkProbe.js.map +1 -0
  451. package/dist/transport/wsFrameHandlers.d.ts +129 -0
  452. package/dist/transport/wsFrameHandlers.d.ts.map +1 -0
  453. package/dist/transport/wsFrameHandlers.js +429 -0
  454. package/dist/transport/wsFrameHandlers.js.map +1 -0
  455. package/dist/transport/wsTransport.d.ts +575 -0
  456. package/dist/transport/wsTransport.d.ts.map +1 -0
  457. package/dist/transport/wsTransport.js +1024 -0
  458. package/dist/transport/wsTransport.js.map +1 -0
  459. package/dist/types/assertExact.d.ts +18 -0
  460. package/dist/types/assertExact.d.ts.map +1 -0
  461. package/dist/types/assertExact.js +2 -0
  462. package/dist/types/assertExact.js.map +1 -0
  463. package/dist/types/global.d.ts +108 -0
  464. package/dist/types/global.d.ts.map +1 -0
  465. package/dist/types/global.js +41 -0
  466. package/dist/types/global.js.map +1 -0
  467. package/dist/types/index.d.ts +206 -0
  468. package/dist/types/index.d.ts.map +1 -0
  469. package/dist/types/index.js +57 -0
  470. package/dist/types/index.js.map +1 -0
  471. package/dist/types/modelData.d.ts +11 -0
  472. package/dist/types/modelData.d.ts.map +1 -0
  473. package/dist/types/modelData.js +10 -0
  474. package/dist/types/modelData.js.map +1 -0
  475. package/dist/types/participant.d.ts +21 -0
  476. package/dist/types/participant.d.ts.map +1 -0
  477. package/dist/types/participant.js +11 -0
  478. package/dist/types/participant.js.map +1 -0
  479. package/dist/types/streams.d.ts +545 -0
  480. package/dist/types/streams.d.ts.map +1 -0
  481. package/dist/types/streams.js +12 -0
  482. package/dist/types/streams.js.map +1 -0
  483. package/dist/utils/asyncIterator.d.ts +35 -0
  484. package/dist/utils/asyncIterator.d.ts.map +1 -0
  485. package/dist/utils/asyncIterator.js +136 -0
  486. package/dist/utils/asyncIterator.js.map +1 -0
  487. package/dist/utils/duration.d.ts +51 -0
  488. package/dist/utils/duration.d.ts.map +1 -0
  489. package/dist/utils/duration.js +78 -0
  490. package/dist/utils/duration.js.map +1 -0
  491. package/dist/utils/json.d.ts +58 -0
  492. package/dist/utils/json.d.ts.map +1 -0
  493. package/dist/utils/json.js +277 -0
  494. package/dist/utils/json.js.map +1 -0
  495. package/dist/webhooks/events.d.ts +44 -0
  496. package/dist/webhooks/events.d.ts.map +1 -0
  497. package/dist/webhooks/events.js +43 -0
  498. package/dist/webhooks/events.js.map +1 -0
  499. package/dist/webhooks/index.d.ts +9 -0
  500. package/dist/webhooks/index.d.ts.map +1 -0
  501. package/dist/webhooks/index.js +9 -0
  502. package/dist/webhooks/index.js.map +1 -0
  503. package/dist/wire/accountResponses.d.ts +463 -0
  504. package/dist/wire/accountResponses.d.ts.map +1 -0
  505. package/dist/wire/accountResponses.js +294 -0
  506. package/dist/wire/accountResponses.js.map +1 -0
  507. package/dist/wire/auth.d.ts +57 -0
  508. package/dist/wire/auth.d.ts.map +1 -0
  509. package/dist/wire/auth.js +71 -0
  510. package/dist/wire/auth.js.map +1 -0
  511. package/dist/wire/bootstrapReason.d.ts +10 -0
  512. package/dist/wire/bootstrapReason.d.ts.map +1 -0
  513. package/dist/wire/bootstrapReason.js +9 -0
  514. package/dist/wire/bootstrapReason.js.map +1 -0
  515. package/dist/wire/claimEvent.d.ts +70 -0
  516. package/dist/wire/claimEvent.d.ts.map +1 -0
  517. package/dist/wire/claimEvent.js +74 -0
  518. package/dist/wire/claimEvent.js.map +1 -0
  519. package/dist/wire/claims.d.ts +475 -0
  520. package/dist/wire/claims.d.ts.map +1 -0
  521. package/dist/wire/claims.js +326 -0
  522. package/dist/wire/claims.js.map +1 -0
  523. package/dist/wire/commit.d.ts +604 -0
  524. package/dist/wire/commit.d.ts.map +1 -0
  525. package/dist/wire/commit.js +322 -0
  526. package/dist/wire/commit.js.map +1 -0
  527. package/dist/wire/delta.d.ts +251 -0
  528. package/dist/wire/delta.d.ts.map +1 -0
  529. package/dist/wire/delta.js +148 -0
  530. package/dist/wire/delta.js.map +1 -0
  531. package/dist/wire/errorEnvelope.d.ts +73 -0
  532. package/dist/wire/errorEnvelope.d.ts.map +1 -0
  533. package/dist/wire/errorEnvelope.js +124 -0
  534. package/dist/wire/errorEnvelope.js.map +1 -0
  535. package/dist/wire/feedCursor.d.ts +61 -0
  536. package/dist/wire/feedCursor.d.ts.map +1 -0
  537. package/dist/wire/feedCursor.js +83 -0
  538. package/dist/wire/feedCursor.js.map +1 -0
  539. package/dist/wire/feedEvent.d.ts +264 -0
  540. package/dist/wire/feedEvent.d.ts.map +1 -0
  541. package/dist/wire/feedEvent.js +66 -0
  542. package/dist/wire/feedEvent.js.map +1 -0
  543. package/dist/wire/frames.d.ts +195 -0
  544. package/dist/wire/frames.d.ts.map +1 -0
  545. package/dist/wire/frames.js +51 -0
  546. package/dist/wire/frames.js.map +1 -0
  547. package/dist/wire/inboundFrames.d.ts +490 -0
  548. package/dist/wire/inboundFrames.d.ts.map +1 -0
  549. package/dist/wire/inboundFrames.js +117 -0
  550. package/dist/wire/inboundFrames.js.map +1 -0
  551. package/dist/wire/index.d.ts +55 -0
  552. package/dist/wire/index.d.ts.map +1 -0
  553. package/dist/wire/index.js +84 -0
  554. package/dist/wire/index.js.map +1 -0
  555. package/dist/wire/listEnvelope.d.ts +38 -0
  556. package/dist/wire/listEnvelope.d.ts.map +1 -0
  557. package/dist/wire/listEnvelope.js +43 -0
  558. package/dist/wire/listEnvelope.js.map +1 -0
  559. package/dist/wire/modelMutations.d.ts +32 -0
  560. package/dist/wire/modelMutations.d.ts.map +1 -0
  561. package/dist/wire/modelMutations.js +53 -0
  562. package/dist/wire/modelMutations.js.map +1 -0
  563. package/dist/wire/modelResponses.d.ts +79 -0
  564. package/dist/wire/modelResponses.d.ts.map +1 -0
  565. package/dist/wire/modelResponses.js +44 -0
  566. package/dist/wire/modelResponses.js.map +1 -0
  567. package/dist/wire/modelShape.d.ts +79 -0
  568. package/dist/wire/modelShape.d.ts.map +1 -0
  569. package/dist/wire/modelShape.js +75 -0
  570. package/dist/wire/modelShape.js.map +1 -0
  571. package/dist/wire/protocol.d.ts +39 -0
  572. package/dist/wire/protocol.d.ts.map +1 -0
  573. package/dist/wire/protocol.js +39 -0
  574. package/dist/wire/protocol.js.map +1 -0
  575. package/dist/wire/protocolVersion.d.ts +74 -0
  576. package/dist/wire/protocolVersion.d.ts.map +1 -0
  577. package/dist/wire/protocolVersion.js +84 -0
  578. package/dist/wire/protocolVersion.js.map +1 -0
  579. package/package.json +187 -0
  580. package/src/ablo.ts +139 -0
  581. package/src/ai-sdk/coordinatedTool.ts +214 -0
  582. package/src/ai-sdk/index.ts +7 -0
  583. package/src/auth/apiKey.ts +540 -0
  584. package/src/auth/bootstrapScope.ts +15 -0
  585. package/src/auth/browserCredentialSafety.ts +48 -0
  586. package/src/auth/capability.ts +326 -0
  587. package/src/auth/capabilityLifecycle.ts +174 -0
  588. package/src/auth/credentialEndpoint.ts +79 -0
  589. package/src/auth/credentialEndpointProtocol.ts +51 -0
  590. package/src/auth/credentialKind.ts +20 -0
  591. package/src/auth/credentialPolicy.ts +244 -0
  592. package/src/auth/credentialResult.ts +23 -0
  593. package/src/auth/credentialSource.ts +99 -0
  594. package/src/auth/hostedEndpoints.ts +24 -0
  595. package/src/auth/identity.ts +330 -0
  596. package/src/auth/index.ts +592 -0
  597. package/src/auth/schemas.ts +94 -0
  598. package/src/auth/sessionMint.ts +126 -0
  599. package/src/auth/token.ts +4 -0
  600. package/src/batching/index.ts +200 -0
  601. package/src/coordination/awaitClaimGrant.ts +243 -0
  602. package/src/coordination/claimHeartbeatLoop.ts +165 -0
  603. package/src/coordination/claimMeta.ts +56 -0
  604. package/src/coordination/events.ts +86 -0
  605. package/src/coordination/index.ts +181 -0
  606. package/src/coordination/locator.ts +200 -0
  607. package/src/coordination/schema.ts +1346 -0
  608. package/src/coordination/targetConflict.ts +85 -0
  609. package/src/coordination/trace.ts +173 -0
  610. package/src/docs/catalog.ts +274 -0
  611. package/src/docs/index.ts +18 -0
  612. package/src/durableWrites.ts +134 -0
  613. package/src/environment.ts +132 -0
  614. package/src/errorCodes.ts +1591 -0
  615. package/src/errors.ts +918 -0
  616. package/src/footprint.ts +0 -0
  617. package/src/headlessClient.ts +161 -0
  618. package/src/index.ts +52 -0
  619. package/src/keys/index.ts +254 -0
  620. package/src/log/syncDeltaRow.ts +119 -0
  621. package/src/logger.ts +22 -0
  622. package/src/observability.ts +85 -0
  623. package/src/policy/types.ts +292 -0
  624. package/src/resources/functionalUpdate.ts +151 -0
  625. package/src/resources/httpResources.ts +520 -0
  626. package/src/resources/modelOperations.ts +444 -0
  627. package/src/resources/mutationOptions.ts +66 -0
  628. package/src/resources/where.ts +160 -0
  629. package/src/resources/writeOptionsSchema.ts +91 -0
  630. package/src/schema/coordination.ts +161 -0
  631. package/src/schema/ddl.ts +593 -0
  632. package/src/schema/ddlLock.ts +53 -0
  633. package/src/schema/diff.ts +489 -0
  634. package/src/schema/field.ts +321 -0
  635. package/src/schema/fieldRef.ts +88 -0
  636. package/src/schema/generate.ts +95 -0
  637. package/src/schema/index.ts +278 -0
  638. package/src/schema/loadStrategy.ts +52 -0
  639. package/src/schema/model.ts +476 -0
  640. package/src/schema/openapi.ts +658 -0
  641. package/src/schema/queries.ts +273 -0
  642. package/src/schema/relation.ts +291 -0
  643. package/src/schema/residency.ts +30 -0
  644. package/src/schema/roles.ts +325 -0
  645. package/src/schema/schema.ts +825 -0
  646. package/src/schema/select.ts +115 -0
  647. package/src/schema/serialize.ts +373 -0
  648. package/src/schema/sugar.ts +194 -0
  649. package/src/schema/tenancy.ts +221 -0
  650. package/src/server/adapter.ts +203 -0
  651. package/src/server/commit.ts +109 -0
  652. package/src/server/index.ts +26 -0
  653. package/src/server/readConfig.ts +82 -0
  654. package/src/server/storageMode.ts +20 -0
  655. package/src/source/adapter.ts +85 -0
  656. package/src/source/adapters/drizzle.ts +291 -0
  657. package/src/source/adapters/kysely.ts +346 -0
  658. package/src/source/adapters/kyselyMutationCore.ts +220 -0
  659. package/src/source/adapters/memory.ts +154 -0
  660. package/src/source/adapters/prisma.ts +282 -0
  661. package/src/source/conformance.ts +287 -0
  662. package/src/source/connector.ts +394 -0
  663. package/src/source/connectorProtocol.ts +189 -0
  664. package/src/source/contract.ts +221 -0
  665. package/src/source/drizzle.ts +1 -0
  666. package/src/source/factory.ts +444 -0
  667. package/src/source/idempotency.ts +189 -0
  668. package/src/source/index.ts +182 -0
  669. package/src/source/kysely.ts +2 -0
  670. package/src/source/migrations.ts +109 -0
  671. package/src/source/next.ts +38 -0
  672. package/src/source/pushQueue.ts +368 -0
  673. package/src/source/signing.ts +279 -0
  674. package/src/source/types.ts +502 -0
  675. package/src/syncLog/contract.ts +32 -0
  676. package/src/syncLog/index.ts +1 -0
  677. package/src/testing/fixtures/httpResponses.ts +155 -0
  678. package/src/transactionLayer.ts +122 -0
  679. package/src/transactions/settlement/commitEnvelope.ts +192 -0
  680. package/src/transactions/settlement/httpCommitEnvelope.ts +250 -0
  681. package/src/transactions/settlement/idempotencyKey.ts +11 -0
  682. package/src/transactions/settlement/pendingWrite.ts +24 -0
  683. package/src/transport/commitFrames.ts +225 -0
  684. package/src/transport/connectionManager.ts +856 -0
  685. package/src/transport/credentialLifecycle.ts +389 -0
  686. package/src/transport/heartbeat.ts +118 -0
  687. package/src/transport/httpClient.ts +354 -0
  688. package/src/transport/httpFeed.ts +111 -0
  689. package/src/transport/httpOptions.ts +41 -0
  690. package/src/transport/httpTransport.ts +1976 -0
  691. package/src/transport/networkProbe.ts +249 -0
  692. package/src/transport/wsFrameHandlers.ts +619 -0
  693. package/src/transport/wsTransport.ts +1491 -0
  694. package/src/types/assertExact.ts +17 -0
  695. package/src/types/global.ts +123 -0
  696. package/src/types/index.ts +270 -0
  697. package/src/types/modelData.ts +11 -0
  698. package/src/types/participant.ts +22 -0
  699. package/src/types/streams.ts +702 -0
  700. package/src/utils/asyncIterator.ts +141 -0
  701. package/src/utils/duration.ts +88 -0
  702. package/src/utils/json.ts +281 -0
  703. package/src/webhooks/events.ts +96 -0
  704. package/src/webhooks/index.ts +12 -0
  705. package/src/wire/accountResponses.ts +328 -0
  706. package/src/wire/auth.ts +86 -0
  707. package/src/wire/bootstrapReason.ts +10 -0
  708. package/src/wire/claimEvent.ts +85 -0
  709. package/src/wire/claims.ts +370 -0
  710. package/src/wire/commit.ts +379 -0
  711. package/src/wire/delta.ts +173 -0
  712. package/src/wire/errorEnvelope.ts +133 -0
  713. package/src/wire/feedCursor.ts +91 -0
  714. package/src/wire/feedEvent.ts +74 -0
  715. package/src/wire/frames.ts +77 -0
  716. package/src/wire/inboundFrames.ts +182 -0
  717. package/src/wire/index.ts +328 -0
  718. package/src/wire/listEnvelope.ts +51 -0
  719. package/src/wire/modelMutations.ts +55 -0
  720. package/src/wire/modelResponses.ts +48 -0
  721. package/src/wire/modelShape.ts +83 -0
  722. package/src/wire/protocol.ts +39 -0
  723. package/src/wire/protocolVersion.ts +97 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Field builders for schema definitions. Each helper — {@link field}.string(),
3
+ * .number(), .enum(), and so on — returns an ordinary Zod schema with a little
4
+ * sync-engine metadata attached (its type tag and whether it is indexed) plus a
5
+ * couple of chainable methods. The metadata is tucked into the schema's description
6
+ * as a JSON string so it survives `.optional()`, `.nullable()`, and `.default()`
7
+ * chaining, and {@link resolveFieldMeta} reads it back out as a {@link FieldMeta}.
8
+ *
9
+ * Usage:
10
+ * import { field } from '@abloatai/transaction/schema';
11
+ *
12
+ * const tasks = model({
13
+ * title: field.string(),
14
+ * projectId: field.string().indexed(), // fluent chain
15
+ * priority: field.number().optional(),
16
+ * status: field.enum(['todo', 'doing', 'done']),
17
+ * });
18
+ *
19
+ * Or use Zod directly (no metadata, but still works):
20
+ * import { z } from 'zod';
21
+ *
22
+ * const tasks = model({
23
+ * title: z.string(),
24
+ * });
25
+ */
26
+ import { z } from 'zod';
27
+ /**
28
+ * The sync-engine metadata describing one field, available at runtime through a
29
+ * model's `fields` map. The {@link field} builders attach it, and the migration
30
+ * planner, type generator, and OpenAPI generator all read it.
31
+ *
32
+ * Declared in `wire/modelShape.ts` and inferred here, not restated: this record
33
+ * crosses the wire twice — serialized into the pushed artifact, and reported
34
+ * back by `GET /api/schema` — so a second declaration would be a copy that
35
+ * drifts in whichever direction nobody is looking.
36
+ */
37
+ export type { FieldMeta } from '../wire/modelShape.js';
38
+ import type { FieldMeta } from '../wire/modelShape.js';
39
+ /**
40
+ * Extract FieldMeta from a Zod schema. Returns null if no sync-engine
41
+ * metadata is attached (e.g., raw `z.string()` usage).
42
+ *
43
+ * Walks through `.optional()` and `.nullable()` wrappers to find the
44
+ * underlying description.
45
+ */
46
+ export declare function getFieldMeta(schema: z.ZodType): FieldMeta | null;
47
+ /**
48
+ * Infers a {@link FieldMeta} from a plain Zod schema that carries no field-builder
49
+ * metadata — for example a bare `z.string()`. It unwraps `.optional()`,
50
+ * `.nullable()`, and `.default()` to reach the inner type, then maps that Zod type
51
+ * to a sync-engine type tag. Most callers should use {@link resolveFieldMeta}
52
+ * instead, which tries the attached metadata first and falls back to this.
53
+ */
54
+ export declare function inferFieldMetaFromZod(schema: z.ZodType): FieldMeta;
55
+ /**
56
+ * Resolves a {@link FieldMeta} for any Zod schema, whether it was built with a
57
+ * {@link field} builder (which attaches metadata) or with plain Zod (which needs
58
+ * inference). This is the single entry point for "given a Zod field, tell me its
59
+ * sync-engine type tag and whether it is optional"; the model and query builders use
60
+ * it to populate their field maps, and the serializer reads those maps.
61
+ *
62
+ * It always returns a value and never returns null. A Zod type it does not recognize
63
+ * falls through to the `string` tag by design.
64
+ */
65
+ export declare function resolveFieldMeta(schema: z.ZodType): FieldMeta;
66
+ /** A Zod schema returned by a {@link field} builder — the underlying Zod type plus
67
+ * two chainable methods: `indexed()` marks the field for a database index, and
68
+ * `from(column)` overrides the physical column name it maps to. */
69
+ export type FieldBuilder<T extends z.ZodType> = T & {
70
+ indexed(): FieldBuilder<T>;
71
+ from(column: string): FieldBuilder<T>;
72
+ };
73
+ export declare const field: {
74
+ /** Defines a text field. */
75
+ readonly string: () => FieldBuilder<z.ZodString>;
76
+ /** Defines a numeric field. */
77
+ readonly number: () => FieldBuilder<z.ZodNumber>;
78
+ /** Defines a true/false field. */
79
+ readonly boolean: () => FieldBuilder<z.ZodBoolean>;
80
+ /** Defines a timestamp field, represented as a JavaScript `Date`. */
81
+ readonly date: () => FieldBuilder<z.ZodDate>;
82
+ /** Defines a field constrained to a fixed set of string values. */
83
+ readonly enum: <const T extends readonly [string, ...string[]]>(values: T) => FieldBuilder<z.ZodEnum<{ [k_1 in T[number]]: k_1; } extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never>>;
84
+ /**
85
+ * Defines a JSON field, with three call shapes:
86
+ *
87
+ * ```ts
88
+ * field.json() // unknown JSON blob
89
+ * field.json(z.array(z.string())) // typed JSON with Zod schema
90
+ * field.json({ icon: z.string().default('default') }) // typed sub-properties with defaults
91
+ * ```
92
+ *
93
+ * The third form is especially handy for metadata fields. It wraps the plain
94
+ * object in `z.object()` automatically, and the model runtime adds a
95
+ * `${field}Json` getter that parses the JSON string on read, applies the Zod
96
+ * defaults, and caches the result.
97
+ *
98
+ * Example:
99
+ * ```ts
100
+ * const reports = model({
101
+ * metadata: field.json({
102
+ * icon: z.string().default('report'),
103
+ * color: z.string().default('#F59E0B'),
104
+ * summary: z.string().optional(),
105
+ * }),
106
+ * });
107
+ *
108
+ * // At runtime:
109
+ * report.metadata // raw JSON string (unchanged)
110
+ * report.metadataJson // { icon: 'report', color: '#F59E0B', summary: undefined }
111
+ * report.metadataJson.icon // 'report' (typed, with default)
112
+ * ```
113
+ */
114
+ readonly json: <T extends z.ZodType = z.ZodUnknown>(schemaOrShape?: T | z.ZodRawShape) => FieldBuilder<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
115
+ /** Defines an indexed text field — shorthand for `field.string().indexed()`. */
116
+ readonly id: () => FieldBuilder<z.ZodString>;
117
+ };
118
+ /** Marks a Zod schema as indexed so lookups on it use a database index. This is the
119
+ * standalone-function form of the `.indexed()` chain method. */
120
+ export declare function indexed<T extends z.ZodType>(schema: T): T;
121
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/schema/field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB;;;;;;;;;GASG;AACH,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAuBvD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAkChE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAgDlE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,SAAS,CAI7D;AAQD;;oEAEoE;AACpE,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG;IAClD,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CACvC,CAAC;AA6BF,eAAO,MAAM,KAAK;IAChB,4BAA4B;;IAK5B,+BAA+B;;IAK/B,kCAAkC;;IAKlC,qEAAqE;;IAKrE,mEAAmE;0BACxD,CAAC,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC;IAI9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;oBACE,CAAC,SAAS,CAAC,CAAC,OAAO,iCAAiC,CAAC,GAAG,CAAC,CAAC,WAAW;IAa1E,gFAAgF;;CAIxE,CAAC;AAIX;iEACiE;AACjE,wBAAgB,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAOzD"}
@@ -0,0 +1,266 @@
1
+ /**
2
+ * Field builders for schema definitions. Each helper — {@link field}.string(),
3
+ * .number(), .enum(), and so on — returns an ordinary Zod schema with a little
4
+ * sync-engine metadata attached (its type tag and whether it is indexed) plus a
5
+ * couple of chainable methods. The metadata is tucked into the schema's description
6
+ * as a JSON string so it survives `.optional()`, `.nullable()`, and `.default()`
7
+ * chaining, and {@link resolveFieldMeta} reads it back out as a {@link FieldMeta}.
8
+ *
9
+ * Usage:
10
+ * import { field } from '@abloatai/transaction/schema';
11
+ *
12
+ * const tasks = model({
13
+ * title: field.string(),
14
+ * projectId: field.string().indexed(), // fluent chain
15
+ * priority: field.number().optional(),
16
+ * status: field.enum(['todo', 'doing', 'done']),
17
+ * });
18
+ *
19
+ * Or use Zod directly (no metadata, but still works):
20
+ * import { z } from 'zod';
21
+ *
22
+ * const tasks = model({
23
+ * title: z.string(),
24
+ * });
25
+ */
26
+ import { z } from 'zod';
27
+ import { AbloValidationError } from '../errors.js';
28
+ // ── Helpers ───────────────────────────────────────────────────────────────
29
+ /** Distinguish a Zod schema from a plain object shape (ZodRawShape). */
30
+ function isZodSchema(value) {
31
+ return (typeof value === 'object' &&
32
+ value !== null &&
33
+ '_def' in value &&
34
+ typeof value._def === 'object');
35
+ }
36
+ // ── Metadata encoding ─────────────────────────────────────────────────────
37
+ //
38
+ // We stash metadata in `.describe('__sync:{json}')` so it rides along with
39
+ // the Zod schema through `.optional()`, `.nullable()`, etc. At schema-build
40
+ // time we parse it back out into structured FieldMeta.
41
+ const META_PREFIX = '__sync:';
42
+ function encodeMeta(meta) {
43
+ return META_PREFIX + JSON.stringify(meta);
44
+ }
45
+ function decodeMeta(description) {
46
+ if (!description?.startsWith(META_PREFIX))
47
+ return null;
48
+ try {
49
+ return JSON.parse(description.slice(META_PREFIX.length));
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ /**
56
+ * Extract FieldMeta from a Zod schema. Returns null if no sync-engine
57
+ * metadata is attached (e.g., raw `z.string()` usage).
58
+ *
59
+ * Walks through `.optional()` and `.nullable()` wrappers to find the
60
+ * underlying description.
61
+ */
62
+ export function getFieldMeta(schema) {
63
+ let current = schema;
64
+ let isOptional = false;
65
+ // Unwrap optional / nullable / default to reach the inner type
66
+ // (these are the wrappers that preserve .describe() but may hide it).
67
+ // `instanceof` keeps the narrowing typed; no `_def` digging.
68
+ const MAX_UNWRAP = 5;
69
+ for (let i = 0; i < MAX_UNWRAP; i++) {
70
+ if (current instanceof z.ZodOptional) {
71
+ isOptional = true;
72
+ current = current.unwrap();
73
+ continue;
74
+ }
75
+ if (current instanceof z.ZodNullable) {
76
+ isOptional = true;
77
+ current = current.unwrap();
78
+ continue;
79
+ }
80
+ if (current instanceof z.ZodDefault) {
81
+ // .removeDefault() — v4 deprecates in favor of .unwrap() but
82
+ // the installed @types only expose removeDefault on ZodDefault.
83
+ current = current.unwrap();
84
+ continue;
85
+ }
86
+ break;
87
+ }
88
+ // The description lives on the innermost schema we reached.
89
+ const description = current.description ?? schema.description;
90
+ const base = decodeMeta(description);
91
+ if (!base)
92
+ return null;
93
+ return { ...base, isOptional };
94
+ }
95
+ /**
96
+ * Infers a {@link FieldMeta} from a plain Zod schema that carries no field-builder
97
+ * metadata — for example a bare `z.string()`. It unwraps `.optional()`,
98
+ * `.nullable()`, and `.default()` to reach the inner type, then maps that Zod type
99
+ * to a sync-engine type tag. Most callers should use {@link resolveFieldMeta}
100
+ * instead, which tries the attached metadata first and falls back to this.
101
+ */
102
+ export function inferFieldMetaFromZod(schema) {
103
+ let current = schema;
104
+ let isOptional = false;
105
+ const MAX_UNWRAP = 5;
106
+ for (let i = 0; i < MAX_UNWRAP; i++) {
107
+ if (current instanceof z.ZodOptional || current instanceof z.ZodNullable) {
108
+ isOptional = true;
109
+ current = current.unwrap();
110
+ continue;
111
+ }
112
+ if (current instanceof z.ZodDefault) {
113
+ current = current.unwrap();
114
+ continue;
115
+ }
116
+ break;
117
+ }
118
+ let type = 'string';
119
+ let enumValues;
120
+ if (current instanceof z.ZodString) {
121
+ type = 'string';
122
+ }
123
+ else if (current instanceof z.ZodNumber) {
124
+ type = 'number';
125
+ }
126
+ else if (current instanceof z.ZodBoolean) {
127
+ type = 'boolean';
128
+ }
129
+ else if (current instanceof z.ZodDate) {
130
+ type = 'date';
131
+ }
132
+ else if (current instanceof z.ZodEnum) {
133
+ type = 'enum';
134
+ // ZodEnum.options is the public v4 accessor for enum values.
135
+ enumValues = current.options;
136
+ }
137
+ else if (current instanceof z.ZodObject ||
138
+ current instanceof z.ZodArray ||
139
+ current instanceof z.ZodRecord ||
140
+ current instanceof z.ZodUnion ||
141
+ current instanceof z.ZodUnknown ||
142
+ // `z.custom<T>()` is opaque — its shape cannot be inspected — so it is treated
143
+ // as a JSON blob rather than falling through to the `'string'` default. The type
144
+ // tag drives how the runtime observes the field, and an opaque custom value
145
+ // should be tracked by reference rather than deeply.
146
+ current instanceof z.ZodCustom) {
147
+ type = 'json';
148
+ }
149
+ return { type, isOptional, isIndexed: false, enumValues };
150
+ }
151
+ /**
152
+ * Resolves a {@link FieldMeta} for any Zod schema, whether it was built with a
153
+ * {@link field} builder (which attaches metadata) or with plain Zod (which needs
154
+ * inference). This is the single entry point for "given a Zod field, tell me its
155
+ * sync-engine type tag and whether it is optional"; the model and query builders use
156
+ * it to populate their field maps, and the serializer reads those maps.
157
+ *
158
+ * It always returns a value and never returns null. A Zod type it does not recognize
159
+ * falls through to the `string` tag by design.
160
+ */
161
+ export function resolveFieldMeta(schema) {
162
+ const attached = getFieldMeta(schema);
163
+ if (attached)
164
+ return attached;
165
+ return inferFieldMetaFromZod(schema);
166
+ }
167
+ function assertColumnName(column) {
168
+ if (!/^[a-zA-Z_][a-zA-Z0-9_]{0,62}$/.test(column)) {
169
+ throw new AbloValidationError(`field.from(): invalid column identifier ${JSON.stringify(column)}`, { code: 'schema_definition_invalid' });
170
+ }
171
+ }
172
+ /** Add sync-engine chain methods to a Zod schema without disturbing its type. */
173
+ function withFieldMethods(schema, meta) {
174
+ const described = schema.describe(encodeMeta(meta));
175
+ described.indexed = () => withFieldMethods(schema, { ...meta, isIndexed: true });
176
+ described.from = (column) => {
177
+ assertColumnName(column);
178
+ return withFieldMethods(schema, { ...meta, column });
179
+ };
180
+ return described;
181
+ }
182
+ function buildField(schema, baseMeta) {
183
+ return withFieldMethods(schema, { ...baseMeta, isIndexed: false });
184
+ }
185
+ export const field = {
186
+ /** Defines a text field. */
187
+ string() {
188
+ return buildField(z.string(), { type: 'string' });
189
+ },
190
+ /** Defines a numeric field. */
191
+ number() {
192
+ return buildField(z.number(), { type: 'number' });
193
+ },
194
+ /** Defines a true/false field. */
195
+ boolean() {
196
+ return buildField(z.boolean(), { type: 'boolean' });
197
+ },
198
+ /** Defines a timestamp field, represented as a JavaScript `Date`. */
199
+ date() {
200
+ return buildField(z.date(), { type: 'date' });
201
+ },
202
+ /** Defines a field constrained to a fixed set of string values. */
203
+ enum(values) {
204
+ return buildField(z.enum(values), { type: 'enum', enumValues: values });
205
+ },
206
+ /**
207
+ * Defines a JSON field, with three call shapes:
208
+ *
209
+ * ```ts
210
+ * field.json() // unknown JSON blob
211
+ * field.json(z.array(z.string())) // typed JSON with Zod schema
212
+ * field.json({ icon: z.string().default('default') }) // typed sub-properties with defaults
213
+ * ```
214
+ *
215
+ * The third form is especially handy for metadata fields. It wraps the plain
216
+ * object in `z.object()` automatically, and the model runtime adds a
217
+ * `${field}Json` getter that parses the JSON string on read, applies the Zod
218
+ * defaults, and caches the result.
219
+ *
220
+ * Example:
221
+ * ```ts
222
+ * const reports = model({
223
+ * metadata: field.json({
224
+ * icon: z.string().default('report'),
225
+ * color: z.string().default('#F59E0B'),
226
+ * summary: z.string().optional(),
227
+ * }),
228
+ * });
229
+ *
230
+ * // At runtime:
231
+ * report.metadata // raw JSON string (unchanged)
232
+ * report.metadataJson // { icon: 'report', color: '#F59E0B', summary: undefined }
233
+ * report.metadataJson.icon // 'report' (typed, with default)
234
+ * ```
235
+ */
236
+ json(schemaOrShape) {
237
+ let inner;
238
+ if (!schemaOrShape) {
239
+ inner = z.unknown();
240
+ }
241
+ else if (isZodSchema(schemaOrShape)) {
242
+ inner = schemaOrShape;
243
+ }
244
+ else {
245
+ // Plain object shape → wrap in z.object() for the sub-property pattern
246
+ inner = z.object(schemaOrShape);
247
+ }
248
+ return buildField(inner, { type: 'json' });
249
+ },
250
+ /** Defines an indexed text field — shorthand for `field.string().indexed()`. */
251
+ id() {
252
+ return field.string().indexed();
253
+ },
254
+ };
255
+ // ── Function form ────────────────────────────────────────────────────────
256
+ /** Marks a Zod schema as indexed so lookups on it use a database index. This is the
257
+ * standalone-function form of the `.indexed()` chain method. */
258
+ export function indexed(schema) {
259
+ // Try to preserve existing metadata type tag if present.
260
+ const meta = decodeMeta(schema.description);
261
+ const newMeta = meta
262
+ ? { ...meta, isIndexed: true }
263
+ : { type: 'string', isIndexed: true };
264
+ return schema.describe(encodeMeta(newMeta));
265
+ }
266
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/schema/field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * A reference to one field of one model — the field as a value rather than as
3
+ * a quoted name.
4
+ *
5
+ * A model is declared as Zod schemas keyed by name, so a field's name lives on
6
+ * the object key and never on the value: `model({ status: z.enum([...]) })`
7
+ * gives you nothing to point at, and every surface that needs to name a field
8
+ * has had to quote it. `fields: ['titel']` then compiles, is granted, excludes
9
+ * nobody, and leaves the write of `title` unguarded — the conflict rule
10
+ * compares names as opaque strings, so an invented one matches no other claim
11
+ * and nothing reports it.
12
+ *
13
+ * {@link Schema.fields} carries one of these per field, stamped from the key
14
+ * `defineSchema` is already holding. Referencing a field that does not exist
15
+ * stops compiling, and renaming one is a compile error at every use rather than
16
+ * a claim that quietly stops matching.
17
+ *
18
+ * An object rather than a branded string, for the reason `ClaimPart` is one: a
19
+ * brand makes a concrete schema's claim params mutually unassignable with the
20
+ * erased `SchemaRecord` view, and the react context boundary erases and
21
+ * restores exactly that way. Objects stay pairwise comparable across it, which
22
+ * a union of literal keys does not — function parameters are contravariant, so
23
+ * a claim accepting `'title' | 'status'` is not assignable to one accepting
24
+ * `string`.
25
+ *
26
+ * `model` rides along so a reference carries where it came from. Claiming
27
+ * `users.email` through `ablo.tasks` is a mistake nothing can currently see.
28
+ */
29
+ export interface FieldRef<Model extends string = string, Field extends string = string> {
30
+ /** The schema key of the model this field belongs to. */
31
+ readonly model: Model;
32
+ /** The field's own name — the key it was declared under. */
33
+ readonly field: Field;
34
+ }
35
+ /** Whether a value is a {@link FieldRef}. */
36
+ export declare function isFieldRef(value: unknown): value is FieldRef;
37
+ /** Build the reference for one declared field. */
38
+ export declare function fieldRef<const Model extends string, const Field extends string>(model: Model, field: Field): FieldRef<Model, Field>;
39
+ /** The fields of one model as selectable values. */
40
+ export type FieldSelection<T> = {
41
+ readonly [K in Extract<keyof T, string>]: FieldRef<string, K>;
42
+ };
43
+ /**
44
+ * A model-bound field selector. The callback receives only the fields inferred
45
+ * from that model's Zod shape, so selection is property access rather than a
46
+ * quoted name.
47
+ */
48
+ export type FieldSelector<T> = (fields: FieldSelection<T>) => FieldRef<string, Extract<keyof T, string>> | readonly [
49
+ FieldRef<string, Extract<keyof T, string>>,
50
+ ...FieldRef<string, Extract<keyof T, string>>[]
51
+ ];
52
+ /**
53
+ * Build the lazy selector object used by model operations. A Proxy avoids
54
+ * materializing another field registry in each client; runtime authority still
55
+ * validates the selected names against the active Zod-derived model map.
56
+ */
57
+ export declare function fieldSelection<T>(model: string): FieldSelection<T>;
58
+ //# sourceMappingURL=fieldRef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldRef.d.ts","sourceRoot":"","sources":["../../src/schema/fieldRef.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,QAAQ,CACvB,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,KAAK,SAAS,MAAM,GAAG,MAAM;IAE7B,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAO5D;AAED,kDAAkD;AAClD,wBAAgB,QAAQ,CACtB,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAEpD;AAED,oDAAoD;AACpD,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,QAAQ,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CAC9D,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAC7B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,KAEvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC1C,SAAS;IACP,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;CAChD,CAAC;AAEN;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAOlE"}
@@ -0,0 +1,26 @@
1
+ /** Whether a value is a {@link FieldRef}. */
2
+ export function isFieldRef(value) {
3
+ return (typeof value === 'object' &&
4
+ value !== null &&
5
+ typeof value.field === 'string' &&
6
+ typeof value.model === 'string');
7
+ }
8
+ /** Build the reference for one declared field. */
9
+ export function fieldRef(model, field) {
10
+ return { model, field };
11
+ }
12
+ /**
13
+ * Build the lazy selector object used by model operations. A Proxy avoids
14
+ * materializing another field registry in each client; runtime authority still
15
+ * validates the selected names against the active Zod-derived model map.
16
+ */
17
+ export function fieldSelection(model) {
18
+ return new Proxy(Object.create(null), {
19
+ get: (_target, property) => {
20
+ if (typeof property !== 'string')
21
+ return undefined;
22
+ return fieldRef(model, property);
23
+ },
24
+ });
25
+ }
26
+ //# sourceMappingURL=fieldRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldRef.js","sourceRoot":"","sources":["../../src/schema/fieldRef.ts"],"names":[],"mappings":"AAsCA,6CAA6C;AAC7C,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ;QAC7C,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,QAAQ,CAGtB,KAAY,EAAE,KAAY;IAC1B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAqBD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAI,KAAa;IAC7C,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAsB,EAAE;QACzD,GAAG,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YACzB,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAC;YACnD,OAAO,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Generates TypeScript types from a serialized schema. Given the schema, it produces
3
+ * the source text of a `.ts` module containing one row interface per model plus an
4
+ * `AbloSchema` map, so an app is typed against the same schema the database and sync
5
+ * layer enforce. This function is pure and returns the source as a string; the
6
+ * command-line tool writes it to disk.
7
+ *
8
+ * It is the counterpart to the migration planner in {@link diffSchema}: you write one
9
+ * schema definition, push it (which migrates the database), and generate types from
10
+ * that same schema, so the types you code against, the rows the database stores, and
11
+ * the entities the sync layer moves all describe the same thing.
12
+ *
13
+ * The generated interface covers the base columns plus each declared field, with
14
+ * enums emitted as string-literal unions. Relations are not expanded here — the
15
+ * runtime SDK resolves those through its typed accessors.
16
+ */
17
+ import type { SchemaJSON } from './serialize.js';
18
+ /** Emit a TypeScript module of row interfaces + the `AbloSchema` map. */
19
+ export declare function generateTypes(schema: SchemaJSON): string;
20
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/schema/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,gBAAgB,CAAC;AAqC5D,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAqCxD"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Generates TypeScript types from a serialized schema. Given the schema, it produces
3
+ * the source text of a `.ts` module containing one row interface per model plus an
4
+ * `AbloSchema` map, so an app is typed against the same schema the database and sync
5
+ * layer enforce. This function is pure and returns the source as a string; the
6
+ * command-line tool writes it to disk.
7
+ *
8
+ * It is the counterpart to the migration planner in {@link diffSchema}: you write one
9
+ * schema definition, push it (which migrates the database), and generate types from
10
+ * that same schema, so the types you code against, the rows the database stores, and
11
+ * the entities the sync layer moves all describe the same thing.
12
+ *
13
+ * The generated interface covers the base columns plus each declared field, with
14
+ * enums emitted as string-literal unions. Relations are not expanded here — the
15
+ * runtime SDK resolves those through its typed accessors.
16
+ */
17
+ import { BASE_FIELDS } from './schema.js';
18
+ function tsType(meta) {
19
+ switch (meta.type) {
20
+ case 'string':
21
+ return 'string';
22
+ case 'number':
23
+ return 'number';
24
+ case 'boolean':
25
+ return 'boolean';
26
+ case 'date':
27
+ // `baseFieldsSchema` uses `z.date()` and the driver hydrates timestamptz
28
+ // to Date — declared date fields match.
29
+ return 'Date';
30
+ case 'json':
31
+ return 'unknown';
32
+ case 'enum':
33
+ return meta.enumValues && meta.enumValues.length > 0
34
+ ? meta.enumValues.map((v) => `'${v.replace(/'/g, "\\'")}'`).join(' | ')
35
+ : 'string';
36
+ default:
37
+ return 'unknown';
38
+ }
39
+ }
40
+ /** A valid PascalCase TS identifier from a model's typename (or its key). */
41
+ function interfaceName(model, key) {
42
+ const raw = model.typename && model.typename.trim() ? model.typename : key;
43
+ const id = raw
44
+ .replace(/[^A-Za-z0-9]+/g, ' ')
45
+ .trim()
46
+ .split(/\s+/)
47
+ .map((p) => p.charAt(0).toUpperCase() + p.slice(1))
48
+ .join('');
49
+ return /^[A-Za-z_]/.test(id) ? id : `Model${id}`;
50
+ }
51
+ /** Emit a TypeScript module of row interfaces + the `AbloSchema` map. */
52
+ export function generateTypes(schema) {
53
+ const lines = [
54
+ '// Generated by `ablo generate` — do not edit by hand.',
55
+ '// Re-run `ablo generate` after pushing a schema change.',
56
+ '',
57
+ ];
58
+ const nameByKey = new Map();
59
+ for (const [key, model] of Object.entries(schema.models)) {
60
+ nameByKey.set(key, interfaceName(model, key));
61
+ }
62
+ for (const [key, model] of Object.entries(schema.models)) {
63
+ lines.push(`export interface ${nameByKey.get(key)} {`);
64
+ lines.push(' id: string;');
65
+ lines.push(' createdAt: Date;');
66
+ lines.push(' updatedAt: Date;');
67
+ lines.push(' organizationId?: string;');
68
+ lines.push(' createdBy?: string;');
69
+ for (const [fieldName, meta] of Object.entries(model.fields)) {
70
+ // A model that redeclares a base column doesn't double-emit it.
71
+ if (BASE_FIELDS.includes(fieldName))
72
+ continue;
73
+ lines.push(` ${fieldName}${meta.isOptional ? '?' : ''}: ${tsType(meta)};`);
74
+ }
75
+ lines.push('}');
76
+ lines.push('');
77
+ }
78
+ // The model map — parameterize the Ablo client with this for typed access.
79
+ lines.push('export interface AbloSchema {');
80
+ for (const key of Object.keys(schema.models)) {
81
+ lines.push(` ${JSON.stringify(key)}: ${nameByKey.get(key)};`);
82
+ }
83
+ lines.push('}');
84
+ lines.push('');
85
+ return lines.join('\n');
86
+ }
87
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/schema/generate.ts"],"names":[],"mappings":"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"}