@mszr/idb-dux 1.0.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 (453) hide show
  1. package/LICENSE +194 -0
  2. package/README.md +84 -0
  3. package/dist/commonjs/admin/index.d.ts +18 -0
  4. package/dist/commonjs/admin/index.d.ts.map +1 -0
  5. package/dist/commonjs/admin/index.js +31 -0
  6. package/dist/commonjs/admin/index.js.map +1 -0
  7. package/dist/commonjs/admin/init.d.ts +67 -0
  8. package/dist/commonjs/admin/init.d.ts.map +1 -0
  9. package/dist/commonjs/admin/init.js +86 -0
  10. package/dist/commonjs/admin/init.js.map +1 -0
  11. package/dist/commonjs/admin/query.d.ts +21 -0
  12. package/dist/commonjs/admin/query.d.ts.map +1 -0
  13. package/dist/commonjs/admin/query.js +46 -0
  14. package/dist/commonjs/admin/query.js.map +1 -0
  15. package/dist/commonjs/admin/types.d.ts +124 -0
  16. package/dist/commonjs/admin/types.d.ts.map +1 -0
  17. package/dist/commonjs/admin/types.js +3 -0
  18. package/dist/commonjs/admin/types.js.map +1 -0
  19. package/dist/commonjs/admin/webhooks.d.ts +11 -0
  20. package/dist/commonjs/admin/webhooks.d.ts.map +1 -0
  21. package/dist/commonjs/admin/webhooks.js +8 -0
  22. package/dist/commonjs/admin/webhooks.js.map +1 -0
  23. package/dist/commonjs/errors.d.ts +13 -0
  24. package/dist/commonjs/errors.d.ts.map +1 -0
  25. package/dist/commonjs/errors.js +19 -0
  26. package/dist/commonjs/errors.js.map +1 -0
  27. package/dist/commonjs/index.d.ts +13 -0
  28. package/dist/commonjs/index.d.ts.map +1 -0
  29. package/dist/commonjs/index.js +29 -0
  30. package/dist/commonjs/index.js.map +1 -0
  31. package/dist/commonjs/nuxt/defineAuthSyncHandler.d.ts +15 -0
  32. package/dist/commonjs/nuxt/defineAuthSyncHandler.d.ts.map +1 -0
  33. package/dist/commonjs/nuxt/defineAuthSyncHandler.js +44 -0
  34. package/dist/commonjs/nuxt/defineAuthSyncHandler.js.map +1 -0
  35. package/dist/commonjs/nuxt/defineServerKit.d.ts +5 -0
  36. package/dist/commonjs/nuxt/defineServerKit.d.ts.map +1 -0
  37. package/dist/commonjs/nuxt/defineServerKit.js +49 -0
  38. package/dist/commonjs/nuxt/defineServerKit.js.map +1 -0
  39. package/dist/commonjs/nuxt/defineWebhookHandler.d.ts +17 -0
  40. package/dist/commonjs/nuxt/defineWebhookHandler.d.ts.map +1 -0
  41. package/dist/commonjs/nuxt/defineWebhookHandler.js +24 -0
  42. package/dist/commonjs/nuxt/defineWebhookHandler.js.map +1 -0
  43. package/dist/commonjs/nuxt/index.d.ts +15 -0
  44. package/dist/commonjs/nuxt/index.d.ts.map +1 -0
  45. package/dist/commonjs/nuxt/index.js +24 -0
  46. package/dist/commonjs/nuxt/index.js.map +1 -0
  47. package/dist/commonjs/nuxt/types.d.ts +54 -0
  48. package/dist/commonjs/nuxt/types.d.ts.map +1 -0
  49. package/dist/commonjs/nuxt/types.js +3 -0
  50. package/dist/commonjs/nuxt/types.js.map +1 -0
  51. package/dist/commonjs/package.json +3 -0
  52. package/dist/commonjs/perms/ast.d.ts +98 -0
  53. package/dist/commonjs/perms/ast.d.ts.map +1 -0
  54. package/dist/commonjs/perms/ast.js +148 -0
  55. package/dist/commonjs/perms/ast.js.map +1 -0
  56. package/dist/commonjs/perms/builder.d.ts +18 -0
  57. package/dist/commonjs/perms/builder.d.ts.map +1 -0
  58. package/dist/commonjs/perms/builder.js +260 -0
  59. package/dist/commonjs/perms/builder.js.map +1 -0
  60. package/dist/commonjs/perms/context.d.ts +27 -0
  61. package/dist/commonjs/perms/context.d.ts.map +1 -0
  62. package/dist/commonjs/perms/context.js +96 -0
  63. package/dist/commonjs/perms/context.js.map +1 -0
  64. package/dist/commonjs/perms/index.d.ts +13 -0
  65. package/dist/commonjs/perms/index.d.ts.map +1 -0
  66. package/dist/commonjs/perms/index.js +6 -0
  67. package/dist/commonjs/perms/index.js.map +1 -0
  68. package/dist/commonjs/perms/types.d.ts +353 -0
  69. package/dist/commonjs/perms/types.d.ts.map +1 -0
  70. package/dist/commonjs/perms/types.js +3 -0
  71. package/dist/commonjs/perms/types.js.map +1 -0
  72. package/dist/commonjs/perms/validate.d.ts +31 -0
  73. package/dist/commonjs/perms/validate.d.ts.map +1 -0
  74. package/dist/commonjs/perms/validate.js +66 -0
  75. package/dist/commonjs/perms/validate.js.map +1 -0
  76. package/dist/commonjs/query/constants.d.ts +13 -0
  77. package/dist/commonjs/query/constants.d.ts.map +1 -0
  78. package/dist/commonjs/query/constants.js +16 -0
  79. package/dist/commonjs/query/constants.js.map +1 -0
  80. package/dist/commonjs/query/defineQuery.d.ts +33 -0
  81. package/dist/commonjs/query/defineQuery.d.ts.map +1 -0
  82. package/dist/commonjs/query/defineQuery.js +28 -0
  83. package/dist/commonjs/query/defineQuery.js.map +1 -0
  84. package/dist/commonjs/query/index.d.ts +9 -0
  85. package/dist/commonjs/query/index.d.ts.map +1 -0
  86. package/dist/commonjs/query/index.js +16 -0
  87. package/dist/commonjs/query/index.js.map +1 -0
  88. package/dist/commonjs/query/keys.d.ts +33 -0
  89. package/dist/commonjs/query/keys.d.ts.map +1 -0
  90. package/dist/commonjs/query/keys.js +3 -0
  91. package/dist/commonjs/query/keys.js.map +1 -0
  92. package/dist/commonjs/query/shapeResult.d.ts +36 -0
  93. package/dist/commonjs/query/shapeResult.d.ts.map +1 -0
  94. package/dist/commonjs/query/shapeResult.js +173 -0
  95. package/dist/commonjs/query/shapeResult.js.map +1 -0
  96. package/dist/commonjs/query/types.d.ts +187 -0
  97. package/dist/commonjs/query/types.d.ts.map +1 -0
  98. package/dist/commonjs/query/types.js +3 -0
  99. package/dist/commonjs/query/types.js.map +1 -0
  100. package/dist/commonjs/query/validation.d.ts +61 -0
  101. package/dist/commonjs/query/validation.d.ts.map +1 -0
  102. package/dist/commonjs/query/validation.js +3 -0
  103. package/dist/commonjs/query/validation.js.map +1 -0
  104. package/dist/commonjs/query/wire.d.ts +13 -0
  105. package/dist/commonjs/query/wire.d.ts.map +1 -0
  106. package/dist/commonjs/query/wire.js +77 -0
  107. package/dist/commonjs/query/wire.js.map +1 -0
  108. package/dist/commonjs/schema/defineSchema.d.ts +110 -0
  109. package/dist/commonjs/schema/defineSchema.d.ts.map +1 -0
  110. package/dist/commonjs/schema/defineSchema.js +72 -0
  111. package/dist/commonjs/schema/defineSchema.js.map +1 -0
  112. package/dist/commonjs/schema/fields.d.ts +33 -0
  113. package/dist/commonjs/schema/fields.d.ts.map +1 -0
  114. package/dist/commonjs/schema/fields.js +3 -0
  115. package/dist/commonjs/schema/fields.js.map +1 -0
  116. package/dist/commonjs/schema/index.d.ts +9 -0
  117. package/dist/commonjs/schema/index.d.ts.map +1 -0
  118. package/dist/commonjs/schema/index.js +10 -0
  119. package/dist/commonjs/schema/index.js.map +1 -0
  120. package/dist/commonjs/schema/namespace.d.ts +82 -0
  121. package/dist/commonjs/schema/namespace.d.ts.map +1 -0
  122. package/dist/commonjs/schema/namespace.js +37 -0
  123. package/dist/commonjs/schema/namespace.js.map +1 -0
  124. package/dist/commonjs/schema/register.d.ts +37 -0
  125. package/dist/commonjs/schema/register.d.ts.map +1 -0
  126. package/dist/commonjs/schema/register.js +3 -0
  127. package/dist/commonjs/schema/register.js.map +1 -0
  128. package/dist/commonjs/schema/singularize.d.ts +45 -0
  129. package/dist/commonjs/schema/singularize.d.ts.map +1 -0
  130. package/dist/commonjs/schema/singularize.js +47 -0
  131. package/dist/commonjs/schema/singularize.js.map +1 -0
  132. package/dist/commonjs/schema/types.d.ts +39 -0
  133. package/dist/commonjs/schema/types.d.ts.map +1 -0
  134. package/dist/commonjs/schema/types.js +3 -0
  135. package/dist/commonjs/schema/types.js.map +1 -0
  136. package/dist/commonjs/schema/util.d.ts +11 -0
  137. package/dist/commonjs/schema/util.d.ts.map +1 -0
  138. package/dist/commonjs/schema/util.js +3 -0
  139. package/dist/commonjs/schema/util.js.map +1 -0
  140. package/dist/commonjs/tx/index.d.ts +4 -0
  141. package/dist/commonjs/tx/index.d.ts.map +1 -0
  142. package/dist/commonjs/tx/index.js +11 -0
  143. package/dist/commonjs/tx/index.js.map +1 -0
  144. package/dist/commonjs/tx/typedTx.d.ts +15 -0
  145. package/dist/commonjs/tx/typedTx.d.ts.map +1 -0
  146. package/dist/commonjs/tx/typedTx.js +54 -0
  147. package/dist/commonjs/tx/typedTx.js.map +1 -0
  148. package/dist/commonjs/tx/types.d.ts +104 -0
  149. package/dist/commonjs/tx/types.d.ts.map +1 -0
  150. package/dist/commonjs/tx/types.js +3 -0
  151. package/dist/commonjs/tx/types.js.map +1 -0
  152. package/dist/commonjs/vue/baseline/InstantDuxDatabase.d.ts +52 -0
  153. package/dist/commonjs/vue/baseline/InstantDuxDatabase.d.ts.map +1 -0
  154. package/dist/commonjs/vue/baseline/InstantDuxDatabase.js +157 -0
  155. package/dist/commonjs/vue/baseline/InstantDuxDatabase.js.map +1 -0
  156. package/dist/commonjs/vue/baseline/InstantDuxRoom.d.ts +72 -0
  157. package/dist/commonjs/vue/baseline/InstantDuxRoom.d.ts.map +1 -0
  158. package/dist/commonjs/vue/baseline/InstantDuxRoom.js +211 -0
  159. package/dist/commonjs/vue/baseline/InstantDuxRoom.js.map +1 -0
  160. package/dist/commonjs/vue/baseline/components/Cursor.d.ts +15 -0
  161. package/dist/commonjs/vue/baseline/components/Cursor.d.ts.map +1 -0
  162. package/dist/commonjs/vue/baseline/components/Cursor.js +39 -0
  163. package/dist/commonjs/vue/baseline/components/Cursor.js.map +1 -0
  164. package/dist/commonjs/vue/baseline/components/Cursors.d.ts +65 -0
  165. package/dist/commonjs/vue/baseline/components/Cursors.d.ts.map +1 -0
  166. package/dist/commonjs/vue/baseline/components/Cursors.js +113 -0
  167. package/dist/commonjs/vue/baseline/components/Cursors.js.map +1 -0
  168. package/dist/commonjs/vue/baseline/components/auth.d.ts +37 -0
  169. package/dist/commonjs/vue/baseline/components/auth.d.ts.map +1 -0
  170. package/dist/commonjs/vue/baseline/components/auth.js +27 -0
  171. package/dist/commonjs/vue/baseline/components/auth.js.map +1 -0
  172. package/dist/commonjs/vue/baseline/index.d.ts +11 -0
  173. package/dist/commonjs/vue/baseline/index.d.ts.map +1 -0
  174. package/dist/commonjs/vue/baseline/index.js +29 -0
  175. package/dist/commonjs/vue/baseline/index.js.map +1 -0
  176. package/dist/commonjs/vue/baseline/useInfiniteQuery.d.ts +19 -0
  177. package/dist/commonjs/vue/baseline/useInfiniteQuery.d.ts.map +1 -0
  178. package/dist/commonjs/vue/baseline/useInfiniteQuery.js +65 -0
  179. package/dist/commonjs/vue/baseline/useInfiniteQuery.js.map +1 -0
  180. package/dist/commonjs/vue/baseline/utils.d.ts +9 -0
  181. package/dist/commonjs/vue/baseline/utils.d.ts.map +1 -0
  182. package/dist/commonjs/vue/baseline/utils.js +29 -0
  183. package/dist/commonjs/vue/baseline/utils.js.map +1 -0
  184. package/dist/commonjs/vue/baseline/version.d.ts +3 -0
  185. package/dist/commonjs/vue/baseline/version.d.ts.map +1 -0
  186. package/dist/commonjs/vue/baseline/version.js +6 -0
  187. package/dist/commonjs/vue/baseline/version.js.map +1 -0
  188. package/dist/commonjs/vue/index.d.ts +21 -0
  189. package/dist/commonjs/vue/index.d.ts.map +1 -0
  190. package/dist/commonjs/vue/index.js +31 -0
  191. package/dist/commonjs/vue/index.js.map +1 -0
  192. package/dist/commonjs/vue/overlay/db.d.ts +106 -0
  193. package/dist/commonjs/vue/overlay/db.d.ts.map +1 -0
  194. package/dist/commonjs/vue/overlay/db.js +105 -0
  195. package/dist/commonjs/vue/overlay/db.js.map +1 -0
  196. package/dist/commonjs/vue/overlay/defineDb.d.ts +34 -0
  197. package/dist/commonjs/vue/overlay/defineDb.d.ts.map +1 -0
  198. package/dist/commonjs/vue/overlay/defineDb.js +48 -0
  199. package/dist/commonjs/vue/overlay/defineDb.js.map +1 -0
  200. package/dist/commonjs/vue/overlay/result.d.ts +29 -0
  201. package/dist/commonjs/vue/overlay/result.d.ts.map +1 -0
  202. package/dist/commonjs/vue/overlay/result.js +75 -0
  203. package/dist/commonjs/vue/overlay/result.js.map +1 -0
  204. package/dist/commonjs/vue/overlay/rooms/index.d.ts +79 -0
  205. package/dist/commonjs/vue/overlay/rooms/index.d.ts.map +1 -0
  206. package/dist/commonjs/vue/overlay/rooms/index.js +28 -0
  207. package/dist/commonjs/vue/overlay/rooms/index.js.map +1 -0
  208. package/dist/commonjs/vue/overlay/types.d.ts +73 -0
  209. package/dist/commonjs/vue/overlay/types.d.ts.map +1 -0
  210. package/dist/commonjs/vue/overlay/types.js +3 -0
  211. package/dist/commonjs/vue/overlay/types.js.map +1 -0
  212. package/dist/commonjs/webhooks/defineWebhookHandlers.d.ts +27 -0
  213. package/dist/commonjs/webhooks/defineWebhookHandlers.d.ts.map +1 -0
  214. package/dist/commonjs/webhooks/defineWebhookHandlers.js +33 -0
  215. package/dist/commonjs/webhooks/defineWebhookHandlers.js.map +1 -0
  216. package/dist/commonjs/webhooks/index.d.ts +15 -0
  217. package/dist/commonjs/webhooks/index.d.ts.map +1 -0
  218. package/dist/commonjs/webhooks/index.js +21 -0
  219. package/dist/commonjs/webhooks/index.js.map +1 -0
  220. package/dist/commonjs/webhooks/init.d.ts +13 -0
  221. package/dist/commonjs/webhooks/init.d.ts.map +1 -0
  222. package/dist/commonjs/webhooks/init.js +39 -0
  223. package/dist/commonjs/webhooks/init.js.map +1 -0
  224. package/dist/commonjs/webhooks/types.d.ts +136 -0
  225. package/dist/commonjs/webhooks/types.d.ts.map +1 -0
  226. package/dist/commonjs/webhooks/types.js +3 -0
  227. package/dist/commonjs/webhooks/types.js.map +1 -0
  228. package/dist/esm/admin/index.d.ts +18 -0
  229. package/dist/esm/admin/index.d.ts.map +1 -0
  230. package/dist/esm/admin/index.js +21 -0
  231. package/dist/esm/admin/index.js.map +1 -0
  232. package/dist/esm/admin/init.d.ts +67 -0
  233. package/dist/esm/admin/init.d.ts.map +1 -0
  234. package/dist/esm/admin/init.js +81 -0
  235. package/dist/esm/admin/init.js.map +1 -0
  236. package/dist/esm/admin/query.d.ts +21 -0
  237. package/dist/esm/admin/query.d.ts.map +1 -0
  238. package/dist/esm/admin/query.js +42 -0
  239. package/dist/esm/admin/query.js.map +1 -0
  240. package/dist/esm/admin/types.d.ts +124 -0
  241. package/dist/esm/admin/types.d.ts.map +1 -0
  242. package/dist/esm/admin/types.js +2 -0
  243. package/dist/esm/admin/types.js.map +1 -0
  244. package/dist/esm/admin/webhooks.d.ts +11 -0
  245. package/dist/esm/admin/webhooks.d.ts.map +1 -0
  246. package/dist/esm/admin/webhooks.js +5 -0
  247. package/dist/esm/admin/webhooks.js.map +1 -0
  248. package/dist/esm/errors.d.ts +13 -0
  249. package/dist/esm/errors.d.ts.map +1 -0
  250. package/dist/esm/errors.js +16 -0
  251. package/dist/esm/errors.js.map +1 -0
  252. package/dist/esm/index.d.ts +13 -0
  253. package/dist/esm/index.d.ts.map +1 -0
  254. package/dist/esm/index.js +13 -0
  255. package/dist/esm/index.js.map +1 -0
  256. package/dist/esm/nuxt/defineAuthSyncHandler.d.ts +15 -0
  257. package/dist/esm/nuxt/defineAuthSyncHandler.d.ts.map +1 -0
  258. package/dist/esm/nuxt/defineAuthSyncHandler.js +41 -0
  259. package/dist/esm/nuxt/defineAuthSyncHandler.js.map +1 -0
  260. package/dist/esm/nuxt/defineServerKit.d.ts +5 -0
  261. package/dist/esm/nuxt/defineServerKit.d.ts.map +1 -0
  262. package/dist/esm/nuxt/defineServerKit.js +46 -0
  263. package/dist/esm/nuxt/defineServerKit.js.map +1 -0
  264. package/dist/esm/nuxt/defineWebhookHandler.d.ts +17 -0
  265. package/dist/esm/nuxt/defineWebhookHandler.d.ts.map +1 -0
  266. package/dist/esm/nuxt/defineWebhookHandler.js +21 -0
  267. package/dist/esm/nuxt/defineWebhookHandler.js.map +1 -0
  268. package/dist/esm/nuxt/index.d.ts +15 -0
  269. package/dist/esm/nuxt/index.d.ts.map +1 -0
  270. package/dist/esm/nuxt/index.js +17 -0
  271. package/dist/esm/nuxt/index.js.map +1 -0
  272. package/dist/esm/nuxt/types.d.ts +54 -0
  273. package/dist/esm/nuxt/types.d.ts.map +1 -0
  274. package/dist/esm/nuxt/types.js +2 -0
  275. package/dist/esm/nuxt/types.js.map +1 -0
  276. package/dist/esm/package.json +3 -0
  277. package/dist/esm/perms/ast.d.ts +98 -0
  278. package/dist/esm/perms/ast.d.ts.map +1 -0
  279. package/dist/esm/perms/ast.js +140 -0
  280. package/dist/esm/perms/ast.js.map +1 -0
  281. package/dist/esm/perms/builder.d.ts +18 -0
  282. package/dist/esm/perms/builder.d.ts.map +1 -0
  283. package/dist/esm/perms/builder.js +257 -0
  284. package/dist/esm/perms/builder.js.map +1 -0
  285. package/dist/esm/perms/context.d.ts +27 -0
  286. package/dist/esm/perms/context.d.ts.map +1 -0
  287. package/dist/esm/perms/context.js +93 -0
  288. package/dist/esm/perms/context.js.map +1 -0
  289. package/dist/esm/perms/index.d.ts +13 -0
  290. package/dist/esm/perms/index.d.ts.map +1 -0
  291. package/dist/esm/perms/index.js +2 -0
  292. package/dist/esm/perms/index.js.map +1 -0
  293. package/dist/esm/perms/types.d.ts +353 -0
  294. package/dist/esm/perms/types.d.ts.map +1 -0
  295. package/dist/esm/perms/types.js +2 -0
  296. package/dist/esm/perms/types.js.map +1 -0
  297. package/dist/esm/perms/validate.d.ts +31 -0
  298. package/dist/esm/perms/validate.d.ts.map +1 -0
  299. package/dist/esm/perms/validate.js +61 -0
  300. package/dist/esm/perms/validate.js.map +1 -0
  301. package/dist/esm/query/constants.d.ts +13 -0
  302. package/dist/esm/query/constants.d.ts.map +1 -0
  303. package/dist/esm/query/constants.js +13 -0
  304. package/dist/esm/query/constants.js.map +1 -0
  305. package/dist/esm/query/defineQuery.d.ts +33 -0
  306. package/dist/esm/query/defineQuery.d.ts.map +1 -0
  307. package/dist/esm/query/defineQuery.js +24 -0
  308. package/dist/esm/query/defineQuery.js.map +1 -0
  309. package/dist/esm/query/index.d.ts +9 -0
  310. package/dist/esm/query/index.d.ts.map +1 -0
  311. package/dist/esm/query/index.js +5 -0
  312. package/dist/esm/query/index.js.map +1 -0
  313. package/dist/esm/query/keys.d.ts +33 -0
  314. package/dist/esm/query/keys.d.ts.map +1 -0
  315. package/dist/esm/query/keys.js +2 -0
  316. package/dist/esm/query/keys.js.map +1 -0
  317. package/dist/esm/query/shapeResult.d.ts +36 -0
  318. package/dist/esm/query/shapeResult.d.ts.map +1 -0
  319. package/dist/esm/query/shapeResult.js +168 -0
  320. package/dist/esm/query/shapeResult.js.map +1 -0
  321. package/dist/esm/query/types.d.ts +187 -0
  322. package/dist/esm/query/types.d.ts.map +1 -0
  323. package/dist/esm/query/types.js +2 -0
  324. package/dist/esm/query/types.js.map +1 -0
  325. package/dist/esm/query/validation.d.ts +61 -0
  326. package/dist/esm/query/validation.d.ts.map +1 -0
  327. package/dist/esm/query/validation.js +2 -0
  328. package/dist/esm/query/validation.js.map +1 -0
  329. package/dist/esm/query/wire.d.ts +13 -0
  330. package/dist/esm/query/wire.d.ts.map +1 -0
  331. package/dist/esm/query/wire.js +74 -0
  332. package/dist/esm/query/wire.js.map +1 -0
  333. package/dist/esm/schema/defineSchema.d.ts +110 -0
  334. package/dist/esm/schema/defineSchema.d.ts.map +1 -0
  335. package/dist/esm/schema/defineSchema.js +69 -0
  336. package/dist/esm/schema/defineSchema.js.map +1 -0
  337. package/dist/esm/schema/fields.d.ts +33 -0
  338. package/dist/esm/schema/fields.d.ts.map +1 -0
  339. package/dist/esm/schema/fields.js +2 -0
  340. package/dist/esm/schema/fields.js.map +1 -0
  341. package/dist/esm/schema/index.d.ts +9 -0
  342. package/dist/esm/schema/index.d.ts.map +1 -0
  343. package/dist/esm/schema/index.js +4 -0
  344. package/dist/esm/schema/index.js.map +1 -0
  345. package/dist/esm/schema/namespace.d.ts +82 -0
  346. package/dist/esm/schema/namespace.d.ts.map +1 -0
  347. package/dist/esm/schema/namespace.js +34 -0
  348. package/dist/esm/schema/namespace.js.map +1 -0
  349. package/dist/esm/schema/register.d.ts +37 -0
  350. package/dist/esm/schema/register.d.ts.map +1 -0
  351. package/dist/esm/schema/register.js +2 -0
  352. package/dist/esm/schema/register.js.map +1 -0
  353. package/dist/esm/schema/singularize.d.ts +45 -0
  354. package/dist/esm/schema/singularize.d.ts.map +1 -0
  355. package/dist/esm/schema/singularize.js +44 -0
  356. package/dist/esm/schema/singularize.js.map +1 -0
  357. package/dist/esm/schema/types.d.ts +39 -0
  358. package/dist/esm/schema/types.d.ts.map +1 -0
  359. package/dist/esm/schema/types.js +2 -0
  360. package/dist/esm/schema/types.js.map +1 -0
  361. package/dist/esm/schema/util.d.ts +11 -0
  362. package/dist/esm/schema/util.d.ts.map +1 -0
  363. package/dist/esm/schema/util.js +2 -0
  364. package/dist/esm/schema/util.js.map +1 -0
  365. package/dist/esm/tx/index.d.ts +4 -0
  366. package/dist/esm/tx/index.d.ts.map +1 -0
  367. package/dist/esm/tx/index.js +5 -0
  368. package/dist/esm/tx/index.js.map +1 -0
  369. package/dist/esm/tx/typedTx.d.ts +15 -0
  370. package/dist/esm/tx/typedTx.d.ts.map +1 -0
  371. package/dist/esm/tx/typedTx.js +51 -0
  372. package/dist/esm/tx/typedTx.js.map +1 -0
  373. package/dist/esm/tx/types.d.ts +104 -0
  374. package/dist/esm/tx/types.d.ts.map +1 -0
  375. package/dist/esm/tx/types.js +2 -0
  376. package/dist/esm/tx/types.js.map +1 -0
  377. package/dist/esm/vue/baseline/InstantDuxDatabase.d.ts +52 -0
  378. package/dist/esm/vue/baseline/InstantDuxDatabase.d.ts.map +1 -0
  379. package/dist/esm/vue/baseline/InstantDuxDatabase.js +149 -0
  380. package/dist/esm/vue/baseline/InstantDuxDatabase.js.map +1 -0
  381. package/dist/esm/vue/baseline/InstantDuxRoom.d.ts +72 -0
  382. package/dist/esm/vue/baseline/InstantDuxRoom.d.ts.map +1 -0
  383. package/dist/esm/vue/baseline/InstantDuxRoom.js +202 -0
  384. package/dist/esm/vue/baseline/InstantDuxRoom.js.map +1 -0
  385. package/dist/esm/vue/baseline/components/Cursor.d.ts +15 -0
  386. package/dist/esm/vue/baseline/components/Cursor.d.ts.map +1 -0
  387. package/dist/esm/vue/baseline/components/Cursor.js +36 -0
  388. package/dist/esm/vue/baseline/components/Cursor.js.map +1 -0
  389. package/dist/esm/vue/baseline/components/Cursors.d.ts +65 -0
  390. package/dist/esm/vue/baseline/components/Cursors.d.ts.map +1 -0
  391. package/dist/esm/vue/baseline/components/Cursors.js +107 -0
  392. package/dist/esm/vue/baseline/components/Cursors.js.map +1 -0
  393. package/dist/esm/vue/baseline/components/auth.d.ts +37 -0
  394. package/dist/esm/vue/baseline/components/auth.d.ts.map +1 -0
  395. package/dist/esm/vue/baseline/components/auth.js +24 -0
  396. package/dist/esm/vue/baseline/components/auth.js.map +1 -0
  397. package/dist/esm/vue/baseline/index.d.ts +11 -0
  398. package/dist/esm/vue/baseline/index.d.ts.map +1 -0
  399. package/dist/esm/vue/baseline/index.js +10 -0
  400. package/dist/esm/vue/baseline/index.js.map +1 -0
  401. package/dist/esm/vue/baseline/useInfiniteQuery.d.ts +19 -0
  402. package/dist/esm/vue/baseline/useInfiniteQuery.d.ts.map +1 -0
  403. package/dist/esm/vue/baseline/useInfiniteQuery.js +62 -0
  404. package/dist/esm/vue/baseline/useInfiniteQuery.js.map +1 -0
  405. package/dist/esm/vue/baseline/utils.d.ts +9 -0
  406. package/dist/esm/vue/baseline/utils.d.ts.map +1 -0
  407. package/dist/esm/vue/baseline/utils.js +25 -0
  408. package/dist/esm/vue/baseline/utils.js.map +1 -0
  409. package/dist/esm/vue/baseline/version.d.ts +3 -0
  410. package/dist/esm/vue/baseline/version.d.ts.map +1 -0
  411. package/dist/esm/vue/baseline/version.js +4 -0
  412. package/dist/esm/vue/baseline/version.js.map +1 -0
  413. package/dist/esm/vue/index.d.ts +21 -0
  414. package/dist/esm/vue/index.d.ts.map +1 -0
  415. package/dist/esm/vue/index.js +18 -0
  416. package/dist/esm/vue/index.js.map +1 -0
  417. package/dist/esm/vue/overlay/db.d.ts +106 -0
  418. package/dist/esm/vue/overlay/db.d.ts.map +1 -0
  419. package/dist/esm/vue/overlay/db.js +101 -0
  420. package/dist/esm/vue/overlay/db.js.map +1 -0
  421. package/dist/esm/vue/overlay/defineDb.d.ts +34 -0
  422. package/dist/esm/vue/overlay/defineDb.d.ts.map +1 -0
  423. package/dist/esm/vue/overlay/defineDb.js +44 -0
  424. package/dist/esm/vue/overlay/defineDb.js.map +1 -0
  425. package/dist/esm/vue/overlay/result.d.ts +29 -0
  426. package/dist/esm/vue/overlay/result.d.ts.map +1 -0
  427. package/dist/esm/vue/overlay/result.js +71 -0
  428. package/dist/esm/vue/overlay/result.js.map +1 -0
  429. package/dist/esm/vue/overlay/rooms/index.d.ts +79 -0
  430. package/dist/esm/vue/overlay/rooms/index.d.ts.map +1 -0
  431. package/dist/esm/vue/overlay/rooms/index.js +25 -0
  432. package/dist/esm/vue/overlay/rooms/index.js.map +1 -0
  433. package/dist/esm/vue/overlay/types.d.ts +73 -0
  434. package/dist/esm/vue/overlay/types.d.ts.map +1 -0
  435. package/dist/esm/vue/overlay/types.js +2 -0
  436. package/dist/esm/vue/overlay/types.js.map +1 -0
  437. package/dist/esm/webhooks/defineWebhookHandlers.d.ts +27 -0
  438. package/dist/esm/webhooks/defineWebhookHandlers.d.ts.map +1 -0
  439. package/dist/esm/webhooks/defineWebhookHandlers.js +30 -0
  440. package/dist/esm/webhooks/defineWebhookHandlers.js.map +1 -0
  441. package/dist/esm/webhooks/index.d.ts +15 -0
  442. package/dist/esm/webhooks/index.d.ts.map +1 -0
  443. package/dist/esm/webhooks/index.js +14 -0
  444. package/dist/esm/webhooks/index.js.map +1 -0
  445. package/dist/esm/webhooks/init.d.ts +13 -0
  446. package/dist/esm/webhooks/init.d.ts.map +1 -0
  447. package/dist/esm/webhooks/init.js +36 -0
  448. package/dist/esm/webhooks/init.js.map +1 -0
  449. package/dist/esm/webhooks/types.d.ts +136 -0
  450. package/dist/esm/webhooks/types.d.ts.map +1 -0
  451. package/dist/esm/webhooks/types.js +2 -0
  452. package/dist/esm/webhooks/types.js.map +1 -0
  453. package/package.json +149 -0
@@ -0,0 +1,34 @@
1
+ import { i as officialI } from '@instantdb/core';
2
+ /**
3
+ * The namespace constructor — the single home for everything that describes
4
+ * a namespace: its fields, its singular name, and its rule params.
5
+ *
6
+ * @example
7
+ * workspaces: i.namespace({
8
+ * fields: { name: i.string().indexed() },
9
+ * ruleParams: { inviteCode: i.string() },
10
+ * }),
11
+ */
12
+ function namespace(config) {
13
+ const def = officialI.entity(config.fields);
14
+ Object.defineProperty(def, '$dux', {
15
+ value: { singular: config.singular, ruleParams: config.ruleParams },
16
+ enumerable: false,
17
+ });
18
+ return def;
19
+ }
20
+ /**
21
+ * dux's authoring dialect: `i.namespace` plus the official field builders.
22
+ * There is no `i.entity` / `i.schema` / `i.graph` — one dialect, one
23
+ * vocabulary; the builders themselves are the official implementations.
24
+ */
25
+ export const i = {
26
+ namespace,
27
+ string: officialI.string,
28
+ number: officialI.number,
29
+ boolean: officialI.boolean,
30
+ date: officialI.date,
31
+ json: officialI.json,
32
+ any: officialI.any,
33
+ };
34
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/schema/namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAsEhD;;;;;;;;;GASG;AACH,SAAS,SAAS,CAKhB,MAAwD;IAMxD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAmB,CAItD,CAAA;IACD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;QACjC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;QACnE,UAAU,EAAE,KAAK;KAClB,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,SAAS;IACT,MAAM,EAAE,SAAS,CAAC,MAAM;IACxB,MAAM,EAAE,SAAS,CAAC,MAAM;IACxB,OAAO,EAAE,SAAS,CAAC,OAAO;IAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;IACpB,IAAI,EAAE,SAAS,CAAC,IAAI;IACpB,GAAG,EAAE,SAAS,CAAC,GAAG;CACnB,CAAA","sourcesContent":["import type { AttrsDefs, DataAttrDef, EntityDef as EntityDefType } from '@instantdb/core'\nimport { i as officialI } from '@instantdb/core'\n\n/**\n * The dux metadata a namespace declaration carries into `defineSchema`,\n * where it is hoisted onto the schema's own (non-enumerable) `$dux` meta.\n */\nexport interface IdbNamespaceMeta<\n Singular extends string | undefined = string | undefined,\n RuleParams extends AttrsDefs | undefined = AttrsDefs | undefined,\n> {\n readonly singular: Singular\n readonly ruleParams: RuleParams\n}\n\n/**\n * What `i.namespace()` returns: a real official `EntityDef` (so the schema's\n * enumerable projection stays exactly what Instant's tooling consumes), with\n * the dux metadata riding along non-enumerably under `$dux`.\n */\nexport type IdbNamespaceDef<\n Fields extends AttrsDefs = AttrsDefs,\n Singular extends string | undefined = string | undefined,\n RuleParams extends AttrsDefs | undefined = AttrsDefs | undefined,\n> = EntityDefType<Fields, {}, void> & {\n readonly $dux: IdbNamespaceMeta<Singular, RuleParams>\n}\n\n/**\n * The constraint for `defineSchema`'s `namespaces` block. Deliberately the\n * official* `EntityDef` shape, without the `$dux` slot: a generic constraint\n * doubles as the contextual type of the config literal, and a contextual\n * `$dux: IdbNamespaceMeta<any, any>` would poison `i.namespace`'s inference\n * (literal singulars widen, ruleParams collapse to `any`). The meta is\n * extracted conditionally where it's needed instead.\n */\nexport type IdbNamespacesDef = Record<string, EntityDefType<any, any, any>>\n\n/**\n * The validation arm for `fields`/`ruleParams`: non-builder members carry\n * the diagnostic on the offending key; valid members contribute nothing.\n */\ntype ValidFieldBuilders<F> = {\n [K in keyof F]: F[K] extends DataAttrDef<any, any, any, any>\n ? unknown\n : `QERR_SCHEMA_FIELD_INVALID: ${K & string} must be a field builder (i.string(), i.number(), …)`\n}\n\n/**\n * `Fields` and `RuleParams` are deliberately unconstrained: a generic's\n * constraint becomes the contextual type of the matching config property, and\n * an `AttrsDefs` context degrades unchained builder calls (a bare\n * `i.string()`) to `DataAttrDef<any, …>`. Validation rides in a parallel\n * intersection arm instead, and the return type re-tightens via `Extract`.\n */\nexport interface IdbNamespaceConfig<Fields, Singular, RuleParams> {\n /**\n * The singular form of the namespace name — the single source of truth for\n * auto-singularization of `$only`/`$at` result keys. Defaults to the\n * built-in English algorithm when omitted.\n */\n singular?: Singular\n /** The namespace's local data attributes. */\n fields: Fields & ValidFieldBuilders<Fields>\n /**\n * The namespace's rule params, declared once and typed end-to-end: in the\n * tx chain, in query options, and in perms.\n */\n ruleParams?: RuleParams & ValidFieldBuilders<RuleParams>\n}\n\n/**\n * The namespace constructor — the single home for everything that describes\n * a namespace: its fields, its singular name, and its rule params.\n *\n * @example\n * workspaces: i.namespace({\n * fields: { name: i.string().indexed() },\n * ruleParams: { inviteCode: i.string() },\n * }),\n */\nfunction namespace<\n Fields,\n const Singular extends string | undefined = undefined,\n RuleParams = undefined,\n>(\n config: IdbNamespaceConfig<Fields, Singular, RuleParams>,\n): IdbNamespaceDef<\n Extract<Fields, AttrsDefs>,\n Singular,\n Extract<RuleParams, AttrsDefs | undefined>\n> {\n const def = officialI.entity(config.fields as AttrsDefs) as IdbNamespaceDef<\n Extract<Fields, AttrsDefs>,\n Singular,\n Extract<RuleParams, AttrsDefs | undefined>\n >\n Object.defineProperty(def, '$dux', {\n value: { singular: config.singular, ruleParams: config.ruleParams },\n enumerable: false,\n })\n return def\n}\n\n/**\n * dux's authoring dialect: `i.namespace` plus the official field builders.\n * There is no `i.entity` / `i.schema` / `i.graph` — one dialect, one\n * vocabulary; the builders themselves are the official implementations.\n */\nexport const i = {\n namespace,\n string: officialI.string,\n number: officialI.number,\n boolean: officialI.boolean,\n date: officialI.date,\n json: officialI.json,\n any: officialI.any,\n}\n"]}
@@ -0,0 +1,37 @@
1
+ import type { InstantUnknownSchemaDef } from '@instantdb/core';
2
+ import type { IdbSchema, IdbSchemaDef } from './defineSchema.js';
3
+ /**
4
+ * Tell dux your schema once — every `Idb*` type utility and the exported `q`
5
+ * then default to it, project-wide:
6
+ *
7
+ * ```ts
8
+ * // instant.schema.ts
9
+ * export const schema = defineSchema({ ... })
10
+ *
11
+ * declare module '@mszr/idb-dux' {
12
+ * interface IdbRegister { schema: typeof schema }
13
+ * }
14
+ * ```
15
+ *
16
+ * Registration supplies types, not values — factories that need the schema
17
+ * object (`defineDb`, `init`, `definePerms(schema)`) still receive it
18
+ * explicitly.
19
+ */
20
+ export interface IdbRegister {
21
+ }
22
+ /** The fallback when no schema is registered: untyped namespaces, default options. */
23
+ export type IdbUnknownSchema = IdbSchemaDef<InstantUnknownSchemaDef['entities'], InstantUnknownSchemaDef['rooms'], {
24
+ readonly namespaces: Record<string, {
25
+ singular: undefined;
26
+ ruleParams: undefined;
27
+ }>;
28
+ readonly linkSingulars: Record<string, Record<string, never>>;
29
+ readonly options: {
30
+ readonly singularize: 'auto';
31
+ };
32
+ }>;
33
+ /** The registered schema, or `IdbUnknownSchema` when nothing is registered. */
34
+ export type IdbRegisteredSchema = IdbRegister extends {
35
+ schema: infer S;
36
+ } ? S extends IdbSchema ? S : IdbUnknownSchema : IdbUnknownSchema;
37
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/schema/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;CAAG;AAE/B,sFAAsF;AACtF,MAAM,MAAM,gBAAgB,GAAG,YAAY,CACzC,uBAAuB,CAAC,UAAU,CAAC,EACnC,uBAAuB,CAAC,OAAO,CAAC,EAChC;IACE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAC;QAAC,UAAU,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;IACnF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7D,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CACnD,CACF,CAAA;AAED,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAAG,WAAW,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACrE,CAAC,SAAS,SAAS,GACjB,CAAC,GACD,gBAAgB,GAClB,gBAAgB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/schema/register.ts"],"names":[],"mappings":"","sourcesContent":["import type { InstantUnknownSchemaDef } from '@instantdb/core'\nimport type { IdbSchema, IdbSchemaDef } from './defineSchema.js'\n\n/**\n * Tell dux your schema once — every `Idb*` type utility and the exported `q`\n * then default to it, project-wide:\n *\n * ```ts\n * // instant.schema.ts\n * export const schema = defineSchema({ ... })\n *\n * declare module '@mszr/idb-dux' {\n * interface IdbRegister { schema: typeof schema }\n * }\n * ```\n *\n * Registration supplies types, not values — factories that need the schema\n * object (`defineDb`, `init`, `definePerms(schema)`) still receive it\n * explicitly.\n */\nexport interface IdbRegister {}\n\n/** The fallback when no schema is registered: untyped namespaces, default options. */\nexport type IdbUnknownSchema = IdbSchemaDef<\n InstantUnknownSchemaDef['entities'],\n InstantUnknownSchemaDef['rooms'],\n {\n readonly namespaces: Record<string, { singular: undefined, ruleParams: undefined }>\n readonly linkSingulars: Record<string, Record<string, never>>\n readonly options: { readonly singularize: 'auto' }\n }\n>\n\n/** The registered schema, or `IdbUnknownSchema` when nothing is registered. */\nexport type IdbRegisteredSchema = IdbRegister extends { schema: infer S }\n ? S extends IdbSchema\n ? S\n : IdbUnknownSchema\n : IdbUnknownSchema\n"]}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The default English singularization algorithm, shipped twice from one rule
3
+ * set: `singularize` (runtime) and `Singularize<>` (type space). The two must
4
+ * never disagree — their equivalence is locked by a word-list test that runs
5
+ * both planes over the same fixtures.
6
+ *
7
+ * The algorithm is deliberately small and predictable: a short irregulars
8
+ * table plus ordered suffix rules. Anything it gets wrong is declared
9
+ * explicitly in the schema (`singular` on a namespace or link label), which
10
+ * always wins over the algorithm.
11
+ */
12
+ /** Words the suffix rules would mangle. One source for both planes. */
13
+ declare const IRREGULARS: {
14
+ readonly people: "person";
15
+ readonly children: "child";
16
+ readonly men: "man";
17
+ readonly women: "woman";
18
+ readonly feet: "foot";
19
+ readonly teeth: "tooth";
20
+ readonly geese: "goose";
21
+ readonly mice: "mouse";
22
+ readonly movies: "movie";
23
+ readonly cookies: "cookie";
24
+ readonly caches: "cache";
25
+ readonly statuses: "status";
26
+ readonly buses: "bus";
27
+ readonly quizzes: "quiz";
28
+ readonly heroes: "hero";
29
+ };
30
+ type Irregulars = typeof IRREGULARS;
31
+ /**
32
+ * The ordered rules, in type space. Mirrors `singularize` exactly:
33
+ *
34
+ * 1. irregulars table
35
+ * 2. `…ies` → `…y` (stems of 2+ chars only, so `ties` → `tie`, not `ty`)
36
+ * 3. `…sses` / `…zzes` / `…ches` / `…shes` / `…xes` → strip `es`
37
+ * 4. `…ss` → unchanged (`class` is already singular)
38
+ * 5. `…s` → strip `s`
39
+ * 6. anything else → unchanged
40
+ */
41
+ export type Singularize<Word extends string> = Word extends keyof Irregulars ? Irregulars[Word] : Word extends `${infer C1}${infer C2}${infer Rest}ies` ? `${C1}${C2}${Rest}y` : Word extends `${infer Stem}sses` ? `${Stem}ss` : Word extends `${infer Stem}zzes` ? `${Stem}zz` : Word extends `${infer Stem}ches` ? `${Stem}ch` : Word extends `${infer Stem}shes` ? `${Stem}sh` : Word extends `${infer Stem}xes` ? `${Stem}x` : Word extends `${string}ss` ? Word : Word extends `${infer Stem}s` ? Stem : Word;
42
+ /** The same ordered rules, at runtime. Mirrors `Singularize<>` exactly. */
43
+ export declare function singularize(word: string): string;
44
+ export {};
45
+ //# sourceMappingURL=singularize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singularize.d.ts","sourceRoot":"","sources":["../../../src/schema/singularize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uEAAuE;AACvE,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;CAgB2B,CAAA;AAE3C,KAAK,UAAU,GAAG,OAAO,UAAU,CAAA;AAEnC;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,CAAC,IAAI,SAAS,MAAM,IAAI,IAAI,SAAS,MAAM,UAAU,GACxE,UAAU,CAAC,IAAI,CAAC,GAChB,IAAI,SAAS,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,IAAI,KAAK,GACnD,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,GACpB,IAAI,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,GAC5C,IAAI,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,GAC5C,IAAI,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,GAC5C,IAAI,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,GAC5C,IAAI,SAAS,GAAG,MAAM,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,GAC1C,IAAI,SAAS,GAAG,MAAM,IAAI,GAAG,IAAI,GAC/B,IAAI,SAAS,GAAG,MAAM,IAAI,GAAG,GAAG,IAAI,GAClC,IAAI,CAAA;AAExB,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYhD"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The default English singularization algorithm, shipped twice from one rule
3
+ * set: `singularize` (runtime) and `Singularize<>` (type space). The two must
4
+ * never disagree — their equivalence is locked by a word-list test that runs
5
+ * both planes over the same fixtures.
6
+ *
7
+ * The algorithm is deliberately small and predictable: a short irregulars
8
+ * table plus ordered suffix rules. Anything it gets wrong is declared
9
+ * explicitly in the schema (`singular` on a namespace or link label), which
10
+ * always wins over the algorithm.
11
+ */
12
+ /** Words the suffix rules would mangle. One source for both planes. */
13
+ const IRREGULARS = {
14
+ people: 'person',
15
+ children: 'child',
16
+ men: 'man',
17
+ women: 'woman',
18
+ feet: 'foot',
19
+ teeth: 'tooth',
20
+ geese: 'goose',
21
+ mice: 'mouse',
22
+ movies: 'movie',
23
+ cookies: 'cookie',
24
+ caches: 'cache',
25
+ statuses: 'status',
26
+ buses: 'bus',
27
+ quizzes: 'quiz',
28
+ heroes: 'hero',
29
+ };
30
+ /** The same ordered rules, at runtime. Mirrors `Singularize<>` exactly. */
31
+ export function singularize(word) {
32
+ if (word in IRREGULARS)
33
+ return IRREGULARS[word];
34
+ if (word.endsWith('ies') && word.length >= 5)
35
+ return `${word.slice(0, -3)}y`;
36
+ if (/(?:ss|zz|ch|sh|x)es$/.test(word))
37
+ return word.slice(0, -2);
38
+ if (word.endsWith('ss'))
39
+ return word;
40
+ if (word.endsWith('s'))
41
+ return word.slice(0, -1);
42
+ return word;
43
+ }
44
+ //# sourceMappingURL=singularize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singularize.js","sourceRoot":"","sources":["../../../src/schema/singularize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,uEAAuE;AACvE,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,OAAO;IACjB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;CAC2B,CAAA;AA2B3C,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,IAAI,UAAU;QACpB,OAAO,UAAU,CAAC,IAAwB,CAAC,CAAA;IAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAC1C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IAChC,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1B,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["/**\n * The default English singularization algorithm, shipped twice from one rule\n * set: `singularize` (runtime) and `Singularize<>` (type space). The two must\n * never disagree — their equivalence is locked by a word-list test that runs\n * both planes over the same fixtures.\n *\n * The algorithm is deliberately small and predictable: a short irregulars\n * table plus ordered suffix rules. Anything it gets wrong is declared\n * explicitly in the schema (`singular` on a namespace or link label), which\n * always wins over the algorithm.\n */\n\n/** Words the suffix rules would mangle. One source for both planes. */\nconst IRREGULARS = {\n people: 'person',\n children: 'child',\n men: 'man',\n women: 'woman',\n feet: 'foot',\n teeth: 'tooth',\n geese: 'goose',\n mice: 'mouse',\n movies: 'movie',\n cookies: 'cookie',\n caches: 'cache',\n statuses: 'status',\n buses: 'bus',\n quizzes: 'quiz',\n heroes: 'hero',\n} as const satisfies Record<string, string>\n\ntype Irregulars = typeof IRREGULARS\n\n/**\n * The ordered rules, in type space. Mirrors `singularize` exactly:\n *\n * 1. irregulars table\n * 2. `…ies` → `…y` (stems of 2+ chars only, so `ties` → `tie`, not `ty`)\n * 3. `…sses` / `…zzes` / `…ches` / `…shes` / `…xes` → strip `es`\n * 4. `…ss` → unchanged (`class` is already singular)\n * 5. `…s` → strip `s`\n * 6. anything else → unchanged\n */\nexport type Singularize<Word extends string> = Word extends keyof Irregulars\n ? Irregulars[Word]\n : Word extends `${infer C1}${infer C2}${infer Rest}ies`\n ? `${C1}${C2}${Rest}y`\n : Word extends `${infer Stem}sses` ? `${Stem}ss`\n : Word extends `${infer Stem}zzes` ? `${Stem}zz`\n : Word extends `${infer Stem}ches` ? `${Stem}ch`\n : Word extends `${infer Stem}shes` ? `${Stem}sh`\n : Word extends `${infer Stem}xes` ? `${Stem}x`\n : Word extends `${string}ss` ? Word\n : Word extends `${infer Stem}s` ? Stem\n : Word\n\n/** The same ordered rules, at runtime. Mirrors `Singularize<>` exactly. */\nexport function singularize(word: string): string {\n if (word in IRREGULARS)\n return IRREGULARS[word as keyof Irregulars]\n if (word.endsWith('ies') && word.length >= 5)\n return `${word.slice(0, -3)}y`\n if (/(?:ss|zz|ch|sh|x)es$/.test(word))\n return word.slice(0, -2)\n if (word.endsWith('ss'))\n return word\n if (word.endsWith('s'))\n return word.slice(0, -1)\n return word\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import type { LinkAttrDef, PresenceOf, ResolveAttrs, RoomsOf, TopicsOf } from '@instantdb/core';
2
+ import type { IdbSchema } from './defineSchema.js';
3
+ import type { IdbRegisteredSchema } from './register.js';
4
+ import type { Expand } from './util.js';
5
+ /** A namespace name in the schema. */
6
+ export type IdbNamespaceName<S extends IdbSchema = IdbRegisteredSchema> = keyof S['entities'] & string;
7
+ /**
8
+ * The bare entity: `id` + fields only. Links live *between* entities, so the
9
+ * plain entity has none — `IdbEntityWithLinks` adds them, queries shape them.
10
+ */
11
+ export type IdbEntity<NS extends IdbNamespaceName<S>, S extends IdbSchema = IdbRegisteredSchema> = Expand<{
12
+ id: string;
13
+ } & ResolveAttrs<S['entities'], NS, false>>;
14
+ /**
15
+ * The entity plus every link label, one hop, cardinality-aware
16
+ * (`Entity[]` or `Entity | undefined`), fields-only inside — deeper shapes
17
+ * are what queries are for.
18
+ */
19
+ export type IdbEntityWithLinks<NS extends IdbNamespaceName<S>, S extends IdbSchema = IdbRegisteredSchema> = Expand<{
20
+ id: string;
21
+ } & ResolveAttrs<S['entities'], NS, false> & {
22
+ [L in keyof S['entities'][NS]['links']]: S['entities'][NS]['links'][L] extends LinkAttrDef<infer Cardinality, infer Target> ? Target extends IdbNamespaceName<S> ? Cardinality extends 'one' ? IdbEntity<Target, S> | undefined : IdbEntity<Target, S>[] : never : never;
23
+ }>;
24
+ /**
25
+ * Every room defined in the schema's `rooms` block, keyed by room name —
26
+ * the schema-rooted extractor (official `RoomsOf`). Schema is the unmarked
27
+ * root domain, so room shapes read straight off your schema.
28
+ */
29
+ export type IdbRooms<S extends IdbSchema = IdbRegisteredSchema> = RoomsOf<S>;
30
+ /** A room name in the schema. */
31
+ export type IdbRoomName<S extends IdbSchema = IdbRegisteredSchema> = keyof IdbRooms<S> & string;
32
+ /**
33
+ * The presence shape of a room (official `PresenceOf`) — what `usePresence`
34
+ * peers and `db.rooms.getPresence` are typed against.
35
+ */
36
+ export type IdbRoomPresence<RoomType extends IdbRoomName<S>, S extends IdbSchema = IdbRegisteredSchema> = PresenceOf<S, RoomType>;
37
+ /** The topics map of a room (official `TopicsOf`). */
38
+ export type IdbRoomTopics<RoomType extends IdbRoomName<S>, S extends IdbSchema = IdbRegisteredSchema> = TopicsOf<S, RoomType>;
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/schema/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAClE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,CAAA;AAEhC;;;GAGG;AACH,MAAM,MAAM,SAAS,CACnB,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC9B,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,MAAM,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;AAEnE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAC5B,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC9B,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,MAAM,CACR;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAAG;KACvD,CAAC,IAAI,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,CACxF,MAAM,WAAW,EACjB,MAAM,MAAM,CACb,GACG,MAAM,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAChC,WAAW,SAAS,KAAK,GACvB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SAAS,GAChC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GACxB,KAAK,GACP,KAAK;CACV,CACF,CAAA;AAKD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;AAE5E,iCAAiC;AACjC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAC7D,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,MAAM,eAAe,CACzB,QAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,EAC/B,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AAE3B,sDAAsD;AACtD,MAAM,MAAM,aAAa,CACvB,QAAQ,SAAS,WAAW,CAAC,CAAC,CAAC,EAC/B,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/schema/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { LinkAttrDef, PresenceOf, ResolveAttrs, RoomsOf, TopicsOf } from '@instantdb/core'\nimport type { IdbSchema } from './defineSchema.js'\nimport type { IdbRegisteredSchema } from './register.js'\nimport type { Expand } from './util.js'\n\n/** A namespace name in the schema. */\nexport type IdbNamespaceName<S extends IdbSchema = IdbRegisteredSchema>\n = keyof S['entities'] & string\n\n/**\n * The bare entity: `id` + fields only. Links live *between* entities, so the\n * plain entity has none — `IdbEntityWithLinks` adds them, queries shape them.\n */\nexport type IdbEntity<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = Expand<{ id: string } & ResolveAttrs<S['entities'], NS, false>>\n\n/**\n * The entity plus every link label, one hop, cardinality-aware\n * (`Entity[]` or `Entity | undefined`), fields-only inside — deeper shapes\n * are what queries are for.\n */\nexport type IdbEntityWithLinks<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = Expand<\n { id: string } & ResolveAttrs<S['entities'], NS, false> & {\n [L in keyof S['entities'][NS]['links']]: S['entities'][NS]['links'][L] extends LinkAttrDef<\n infer Cardinality,\n infer Target\n >\n ? Target extends IdbNamespaceName<S>\n ? Cardinality extends 'one'\n ? IdbEntity<Target, S> | undefined\n : IdbEntity<Target, S>[]\n : never\n : never\n }\n>\n\n// ==========\n// room type extractors\n\n/**\n * Every room defined in the schema's `rooms` block, keyed by room name —\n * the schema-rooted extractor (official `RoomsOf`). Schema is the unmarked\n * root domain, so room shapes read straight off your schema.\n */\nexport type IdbRooms<S extends IdbSchema = IdbRegisteredSchema> = RoomsOf<S>\n\n/** A room name in the schema. */\nexport type IdbRoomName<S extends IdbSchema = IdbRegisteredSchema>\n = keyof IdbRooms<S> & string\n\n/**\n * The presence shape of a room (official `PresenceOf`) — what `usePresence`\n * peers and `db.rooms.getPresence` are typed against.\n */\nexport type IdbRoomPresence<\n RoomType extends IdbRoomName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = PresenceOf<S, RoomType>\n\n/** The topics map of a room (official `TopicsOf`). */\nexport type IdbRoomTopics<\n RoomType extends IdbRoomName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = TopicsOf<S, RoomType>\n"]}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Flatten a computed object type (mapped-type intersections, alias chains)
3
+ * into a plain `{ key: value }` shape — both for exact type equality and for
4
+ * readable editor hovers.
5
+ */
6
+ export type Expand<T> = T extends infer O ? {
7
+ [K in keyof O]: O[K];
8
+ } : never;
9
+ /** Collapse a union of object types into their intersection. */
10
+ export type UnionToIntersection<U> = (U extends any ? (member: U) => void : never) extends (member: infer I) => void ? I : never;
11
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/schema/util.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAA;AAE5E,gEAAgE;AAChE,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CACnC,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAC5C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,GAC/B,CAAC,GACD,KAAK,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/schema/util.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Flatten a computed object type (mapped-type intersections, alias chains)\n * into a plain `{ key: value }` shape — both for exact type equality and for\n * readable editor hovers.\n */\nexport type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never\n\n/** Collapse a union of object types into their intersection. */\nexport type UnionToIntersection<U> = (\n U extends any ? (member: U) => void : never\n) extends (member: infer I) => void\n ? I\n : never\n"]}
@@ -0,0 +1,4 @@
1
+ export { typedTx } from './typedTx.js';
2
+ export type { IdbTx, IdbTxChunk, IdbTxChunkInput, IdbTxCreate, IdbTxLink, IdbTxNamespace, IdbTxRuleParams, IdbTxUpdate, IdbTxUpdateOpts, } from './types.js';
3
+ export { id, lookup } from '@instantdb/core';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tx/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EACV,KAAK,EACL,UAAU,EACV,eAAe,EACf,WAAW,EACX,SAAS,EACT,cAAc,EACd,eAAe,EACf,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { typedTx } from './typedTx.js';
2
+ // `id` and `lookup` keep their official names — values are unprefixed at the
3
+ // boundary; `lookup` remains available for direct use beside dot-path links.
4
+ export { id, lookup } from '@instantdb/core';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tx/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAYtC,6EAA6E;AAC7E,6EAA6E;AAC7E,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA","sourcesContent":["export { typedTx } from './typedTx.js'\nexport type {\n IdbTx,\n IdbTxChunk,\n IdbTxChunkInput,\n IdbTxCreate,\n IdbTxLink,\n IdbTxNamespace,\n IdbTxRuleParams,\n IdbTxUpdate,\n IdbTxUpdateOpts,\n} from './types.js'\n// `id` and `lookup` keep their official names — values are unprefixed at the\n// boundary; `lookup` remains available for direct use beside dot-path links.\nexport { id, lookup } from '@instantdb/core'\n"]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The typed tx runtime: core's `txInit()` proxy wrapped so `.link()`/
3
+ * `.unlink()` dot-path keys compile to the official `lookup()` wire form.
4
+ * Everything else passes through untouched — the chain stays core's chain.
5
+ */
6
+ import type { IdbSchema } from '../schema/defineSchema.js';
7
+ import type { IdbRegisteredSchema } from '../schema/register.js';
8
+ import type { IdbTx } from './types.js';
9
+ /**
10
+ * Build the typed tx chain for a schema. Schema-independent at runtime —
11
+ * all typing is schema-derived; the only runtime behavior added over core
12
+ * is dot-path `.link` compilation.
13
+ */
14
+ export declare function typedTx<S extends IdbSchema = IdbRegisteredSchema>(): IdbTx<S>;
15
+ //# sourceMappingURL=typedTx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedTx.d.ts","sourceRoot":"","sources":["../../../src/tx/typedTx.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AA8CvC;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,KAAK,KAAK,CAAC,CAAC,CAAC,CAK7E"}
@@ -0,0 +1,51 @@
1
+ import { lookup, txInit } from '@instantdb/core';
2
+ /** `{ 'workspace.inviteCode': code }` → `{ workspace: lookup('inviteCode', code) }` */
3
+ function compileLinkArgs(args) {
4
+ const out = {};
5
+ for (const [key, value] of Object.entries(args)) {
6
+ const dot = key.indexOf('.');
7
+ if (dot === -1)
8
+ out[key] = value;
9
+ else
10
+ out[key.slice(0, dot)] = lookup(key.slice(dot + 1), value);
11
+ }
12
+ return out;
13
+ }
14
+ function wrapChunk(chunk) {
15
+ return new Proxy(chunk, {
16
+ get(target, prop) {
17
+ if (prop === 'link' || prop === 'unlink') {
18
+ return (args) => wrapChunk(target[prop](compileLinkArgs(args)));
19
+ }
20
+ const member = target[prop];
21
+ if (typeof member === 'function')
22
+ return (...args) => wrapChunk(member(...args));
23
+ return member;
24
+ },
25
+ });
26
+ }
27
+ function wrapNamespace(namespace) {
28
+ return new Proxy(namespace, {
29
+ get(target, prop) {
30
+ if (prop === 'lookup') {
31
+ return (attr, value) => wrapChunk(target.lookup(attr, value));
32
+ }
33
+ const member = target[prop];
34
+ return typeof member === 'object' && member !== null
35
+ ? wrapChunk(member)
36
+ : member;
37
+ },
38
+ });
39
+ }
40
+ /**
41
+ * Build the typed tx chain for a schema. Schema-independent at runtime —
42
+ * all typing is schema-derived; the only runtime behavior added over core
43
+ * is dot-path `.link` compilation.
44
+ */
45
+ export function typedTx() {
46
+ const tx = txInit();
47
+ return new Proxy(tx, {
48
+ get: (target, ns) => wrapNamespace(target[ns]),
49
+ });
50
+ }
51
+ //# sourceMappingURL=typedTx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedTx.js","sourceRoot":"","sources":["../../../src/tx/typedTx.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAEhD,uFAAuF;AACvF,SAAS,eAAe,CAAC,IAA6B;IACpD,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,GAAG,KAAK,CAAC,CAAC;YACZ,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;;YAEhB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,KAAU;IAC3B,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;QACtB,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,CAAC,IAA6B,EAAE,EAAE,CACvC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClD,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3B,IAAI,OAAO,MAAM,KAAK,UAAU;gBAC9B,OAAO,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;YAC3D,OAAO,MAAM,CAAA;QACf,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,SAAc;IACnC,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE;QAC1B,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CACtC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;YACzC,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3B,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;gBAClD,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;gBACnB,CAAC,CAAC,MAAM,CAAA;QACZ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;IACnB,OAAO,IAAI,KAAK,CAAC,EAAY,EAAE;QAC7B,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,CAAE,MAAc,CAAC,EAAE,CAAC,CAAC;KACxD,CAAa,CAAA;AAChB,CAAC","sourcesContent":["/**\n * The typed tx runtime: core's `txInit()` proxy wrapped so `.link()`/\n * `.unlink()` dot-path keys compile to the official `lookup()` wire form.\n * Everything else passes through untouched — the chain stays core's chain.\n */\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbTx } from './types.js'\nimport { lookup, txInit } from '@instantdb/core'\n\n/** `{ 'workspace.inviteCode': code }` → `{ workspace: lookup('inviteCode', code) }` */\nfunction compileLinkArgs(args: Record<string, unknown>): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(args)) {\n const dot = key.indexOf('.')\n if (dot === -1)\n out[key] = value\n else\n out[key.slice(0, dot)] = lookup(key.slice(dot + 1), value)\n }\n return out\n}\n\nfunction wrapChunk(chunk: any): any {\n return new Proxy(chunk, {\n get(target, prop) {\n if (prop === 'link' || prop === 'unlink') {\n return (args: Record<string, unknown>) =>\n wrapChunk(target[prop](compileLinkArgs(args)))\n }\n const member = target[prop]\n if (typeof member === 'function')\n return (...args: unknown[]) => wrapChunk(member(...args))\n return member\n },\n })\n}\n\nfunction wrapNamespace(namespace: any): any {\n return new Proxy(namespace, {\n get(target, prop) {\n if (prop === 'lookup') {\n return (attr: string, value: unknown) =>\n wrapChunk(target.lookup(attr, value))\n }\n const member = target[prop]\n return typeof member === 'object' && member !== null\n ? wrapChunk(member)\n : member\n },\n })\n}\n\n/**\n * Build the typed tx chain for a schema. Schema-independent at runtime —\n * all typing is schema-derived; the only runtime behavior added over core\n * is dot-path `.link` compilation.\n */\nexport function typedTx<S extends IdbSchema = IdbRegisteredSchema>(): IdbTx<S> {\n const tx = txInit()\n return new Proxy(tx as object, {\n get: (target, ns) => wrapNamespace((target as any)[ns]),\n }) as IdbTx<S>\n}\n"]}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * The typed-tx types — one machinery for both runtimes (`db.tx` on the
3
+ * client, `adminDb.tx` on the admin surface). Types the two places the
4
+ * official chain goes untyped: `ruleParams` (schema-typed per namespace) and
5
+ * `.link()` dot-path keys (label completes, unique fields narrow, the value
6
+ * is typed; compiles to the official `lookup()` form on the wire).
7
+ */
8
+ import type { CreateParams, DataAttrDef, UpdateParams } from '@instantdb/core';
9
+ import type { IdbSchema } from '../schema/defineSchema.js';
10
+ import type { AttrsOf, AttrValue, LinkCardinality, LinkLabels, LinkTarget, UniqueFieldKeys, WireValue } from '../schema/fields.js';
11
+ import type { IdbRegisteredSchema } from '../schema/register.js';
12
+ import type { IdbNamespaceName } from '../schema/types.js';
13
+ import type { Expand } from '../schema/util.js';
14
+ /** Options for `update`/`merge` — core's `UpdateOpts` (not exported there). */
15
+ export interface IdbTxUpdateOpts {
16
+ upsert?: boolean | undefined;
17
+ }
18
+ /** The `create` payload — required fields required, optionals optional. */
19
+ export type IdbTxCreate<NS extends IdbNamespaceName<S>, S extends IdbSchema = IdbRegisteredSchema> = CreateParams<S, NS>;
20
+ /** The `update`/`merge`-style payload — everything optional. */
21
+ export type IdbTxUpdate<NS extends IdbNamespaceName<S>, S extends IdbSchema = IdbRegisteredSchema> = UpdateParams<S, NS>;
22
+ type PlainLinkValue<Cardinality> = Cardinality extends 'one' ? string : string | readonly string[];
23
+ type LinkDotPaths<S extends IdbSchema, NS extends string> = {
24
+ [L in LinkLabels<S, NS>]: `${L}.${UniqueFieldKeys<S, LinkTarget<S, NS, L>>}`;
25
+ }[LinkLabels<S, NS>];
26
+ type LinkDotPathValue<S extends IdbSchema, NS extends string, P> = P extends `${infer L}.${infer F}` ? WireValue<AttrValue<AttrsOf<S, LinkTarget<S, NS, L>>[F]>> : never;
27
+ /**
28
+ * The `link`/`unlink` payload: plain label keys typed per cardinality, plus
29
+ * one-hop dot-path keys over the linked namespace's unique fields —
30
+ * `{ 'workspace.inviteCode': code }` compiles to the official `lookup()`
31
+ * form on the wire.
32
+ */
33
+ export type IdbTxLink<NS extends IdbNamespaceName<S>, S extends IdbSchema = IdbRegisteredSchema> = {
34
+ [L in LinkLabels<S, NS>]?: PlainLinkValue<LinkCardinality<S, NS, L>>;
35
+ } & {
36
+ [P in LinkDotPaths<S, NS>]?: LinkDotPathValue<S, NS, P>;
37
+ };
38
+ type RequiredRuleParamKeys<RP> = {
39
+ [K in keyof RP]: RP[K] extends DataAttrDef<any, infer R, any, any> ? R extends true ? K : never : never;
40
+ }[keyof RP];
41
+ type OptionalRuleParamKeys<RP> = {
42
+ [K in keyof RP]: RP[K] extends DataAttrDef<any, infer R, any, any> ? R extends false ? K : never : never;
43
+ }[keyof RP];
44
+ type RuleParamsShape<RP> = Expand<{
45
+ [K in RequiredRuleParamKeys<RP>]: WireValue<AttrValue<RP[K]>>;
46
+ } & {
47
+ [K in OptionalRuleParamKeys<RP>]?: WireValue<AttrValue<RP[K]>>;
48
+ }>;
49
+ /**
50
+ * The `ruleParams` payload for a namespace, typed from its collocated
51
+ * declaration in `defineSchema` — unknown keys are TS errors; a namespace
52
+ * with no declaration accepts none.
53
+ */
54
+ export type IdbTxRuleParams<NS extends IdbNamespaceName<S>, S extends IdbSchema = IdbRegisteredSchema> = NS extends keyof S['$dux']['namespaces'] ? S['$dux']['namespaces'][NS]['ruleParams'] extends infer RP ? RP extends Record<string, DataAttrDef<any, any, any, any>> ? RuleParamsShape<RP> : Record<string, `QERR_TX_RULE_PARAMS_UNDECLARED: ${NS} declares no ruleParams — declare them in i.namespace({ ruleParams })`> : never : never;
55
+ /**
56
+ * One tx step. Carries the official `__ops`/`__etype` runtime shape that
57
+ * `transact()` consumes, so interop holds on both runtimes; dux's own
58
+ * `transact` types its parameter as `IdbTxChunk` (the official
59
+ * `TransactionChunk` can't be a *structural supertype* — its method params
60
+ * are contravariant — which is exactly why the dux chain owns its own
61
+ * narrower typing rather than re-deriving the official one).
62
+ */
63
+ export interface IdbTxChunk<S extends IdbSchema = IdbRegisteredSchema, NS extends IdbNamespaceName<S> = IdbNamespaceName<S>> {
64
+ __ops: any[];
65
+ __etype: NS;
66
+ /** Create an entity. Throws if the id already exists. */
67
+ create: (args: IdbTxCreate<NS, S>) => IdbTxChunk<S, NS>;
68
+ /** Upsert by default; `{ upsert: false }` for strict update. */
69
+ update: (args: IdbTxUpdate<NS, S>, opts?: IdbTxUpdateOpts) => IdbTxChunk<S, NS>;
70
+ /** Link entities — plain ids or dot-path unique-field keys. */
71
+ link: (args: IdbTxLink<NS, S>) => IdbTxChunk<S, NS>;
72
+ /** Unlink entities — same payload shape as `link`. */
73
+ unlink: (args: IdbTxLink<NS, S>) => IdbTxChunk<S, NS>;
74
+ /** Delete the entity and all of its links. */
75
+ delete: () => IdbTxChunk<S, NS>;
76
+ /** Deep-merge into the current value (document-style fields). */
77
+ merge: (args: {
78
+ [attribute: string]: any;
79
+ }, opts?: IdbTxUpdateOpts) => IdbTxChunk<S, NS>;
80
+ /** Schema-declared rule params for this namespace. */
81
+ ruleParams: (args: IdbTxRuleParams<NS, S>) => IdbTxChunk<S, NS>;
82
+ }
83
+ export type IdbTxNamespace<S extends IdbSchema, NS extends IdbNamespaceName<S>> = {
84
+ [id: string]: IdbTxChunk<S, NS>;
85
+ } & {
86
+ /** Address an entity by a unique attribute instead of its id. */
87
+ lookup: <K extends UniqueFieldKeys<S, NS>>(attr: K, value: WireValue<AttrValue<AttrsOf<S, NS>[K]>>) => IdbTxChunk<S, NS>;
88
+ };
89
+ /** The typed tx builder — `db.tx` and `adminDb.tx` share this shape. */
90
+ export type IdbTx<S extends IdbSchema = IdbRegisteredSchema> = {
91
+ [NS in IdbNamespaceName<S>]: IdbTxNamespace<S, NS>;
92
+ };
93
+ /**
94
+ * A chunk for *any one* namespace — the type `transact`/`debugTransact` accept.
95
+ * `IdbTxChunk<S>` defaults its `NS` to the full union, whose method params are
96
+ * contravariant, so a chunk narrowed to one namespace (what `tx.tasks[id]…`
97
+ * produces) wouldn't be assignable to it. The per-namespace union is: a
98
+ * `'tasks'` chunk is exactly one of its members.
99
+ */
100
+ export type IdbTxChunkInput<S extends IdbSchema = IdbRegisteredSchema> = {
101
+ [NS in IdbNamespaceName<S>]: IdbTxChunk<S, NS>;
102
+ }[IdbNamespaceName<S>];
103
+ export {};
104
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tx/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tx/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The typed-tx types — one machinery for both runtimes (`db.tx` on the\n * client, `adminDb.tx` on the admin surface). Types the two places the\n * official chain goes untyped: `ruleParams` (schema-typed per namespace) and\n * `.link()` dot-path keys (label completes, unique fields narrow, the value\n * is typed; compiles to the official `lookup()` form on the wire).\n */\nimport type {\n CreateParams,\n DataAttrDef,\n UpdateParams,\n} from '@instantdb/core'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type {\n AttrsOf,\n AttrValue,\n LinkCardinality,\n LinkLabels,\n LinkTarget,\n UniqueFieldKeys,\n WireValue,\n} from '../schema/fields.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbNamespaceName } from '../schema/types.js'\nimport type { Expand } from '../schema/util.js'\n\n// ==========\n// op payloads\n\n/** Options for `update`/`merge` — core's `UpdateOpts` (not exported there). */\nexport interface IdbTxUpdateOpts {\n upsert?: boolean | undefined\n}\n\n/** The `create` payload — required fields required, optionals optional. */\nexport type IdbTxCreate<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = CreateParams<S, NS>\n\n/** The `update`/`merge`-style payload — everything optional. */\nexport type IdbTxUpdate<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = UpdateParams<S, NS>\n\ntype PlainLinkValue<Cardinality> = Cardinality extends 'one'\n ? string\n : string | readonly string[]\n\ntype LinkDotPaths<S extends IdbSchema, NS extends string> = {\n [L in LinkLabels<S, NS>]: `${L}.${UniqueFieldKeys<S, LinkTarget<S, NS, L>>}`\n}[LinkLabels<S, NS>]\n\ntype LinkDotPathValue<\n S extends IdbSchema,\n NS extends string,\n P,\n> = P extends `${infer L}.${infer F}`\n ? WireValue<AttrValue<AttrsOf<S, LinkTarget<S, NS, L>>[F]>>\n : never\n\n/**\n * The `link`/`unlink` payload: plain label keys typed per cardinality, plus\n * one-hop dot-path keys over the linked namespace's unique fields —\n * `{ 'workspace.inviteCode': code }` compiles to the official `lookup()`\n * form on the wire.\n */\nexport type IdbTxLink<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = {\n [L in LinkLabels<S, NS>]?: PlainLinkValue<LinkCardinality<S, NS, L>>\n} & {\n [P in LinkDotPaths<S, NS>]?: LinkDotPathValue<S, NS, P>\n}\n\n// ==========\n// ruleParams\n\ntype RequiredRuleParamKeys<RP> = {\n [K in keyof RP]: RP[K] extends DataAttrDef<any, infer R, any, any>\n ? R extends true\n ? K\n : never\n : never\n}[keyof RP]\n\ntype OptionalRuleParamKeys<RP> = {\n [K in keyof RP]: RP[K] extends DataAttrDef<any, infer R, any, any>\n ? R extends false\n ? K\n : never\n : never\n}[keyof RP]\n\ntype RuleParamsShape<RP> = Expand<\n { [K in RequiredRuleParamKeys<RP>]: WireValue<AttrValue<RP[K]>> } & {\n [K in OptionalRuleParamKeys<RP>]?: WireValue<AttrValue<RP[K]>>\n }\n>\n\n/**\n * The `ruleParams` payload for a namespace, typed from its collocated\n * declaration in `defineSchema` — unknown keys are TS errors; a namespace\n * with no declaration accepts none.\n */\nexport type IdbTxRuleParams<\n NS extends IdbNamespaceName<S>,\n S extends IdbSchema = IdbRegisteredSchema,\n> = NS extends keyof S['$dux']['namespaces']\n ? S['$dux']['namespaces'][NS]['ruleParams'] extends infer RP\n ? RP extends Record<string, DataAttrDef<any, any, any, any>>\n ? RuleParamsShape<RP>\n : Record<\n string,\n `QERR_TX_RULE_PARAMS_UNDECLARED: ${NS} declares no ruleParams — declare them in i.namespace({ ruleParams })`\n >\n : never\n : never\n\n// ==========\n// the chain\n\n/**\n * One tx step. Carries the official `__ops`/`__etype` runtime shape that\n * `transact()` consumes, so interop holds on both runtimes; dux's own\n * `transact` types its parameter as `IdbTxChunk` (the official\n * `TransactionChunk` can't be a *structural supertype* — its method params\n * are contravariant — which is exactly why the dux chain owns its own\n * narrower typing rather than re-deriving the official one).\n */\nexport interface IdbTxChunk<\n S extends IdbSchema = IdbRegisteredSchema,\n NS extends IdbNamespaceName<S> = IdbNamespaceName<S>,\n> {\n // The official op tuple (`Op`) is not exported; this stays structurally\n // assignable to `TransactionChunk.__ops` while remaining inspectable.\n __ops: any[]\n __etype: NS\n /** Create an entity. Throws if the id already exists. */\n create: (args: IdbTxCreate<NS, S>) => IdbTxChunk<S, NS>\n /** Upsert by default; `{ upsert: false }` for strict update. */\n update: (args: IdbTxUpdate<NS, S>, opts?: IdbTxUpdateOpts) => IdbTxChunk<S, NS>\n /** Link entities — plain ids or dot-path unique-field keys. */\n link: (args: IdbTxLink<NS, S>) => IdbTxChunk<S, NS>\n /** Unlink entities — same payload shape as `link`. */\n unlink: (args: IdbTxLink<NS, S>) => IdbTxChunk<S, NS>\n /** Delete the entity and all of its links. */\n delete: () => IdbTxChunk<S, NS>\n /** Deep-merge into the current value (document-style fields). */\n merge: (args: { [attribute: string]: any }, opts?: IdbTxUpdateOpts) => IdbTxChunk<S, NS>\n /** Schema-declared rule params for this namespace. */\n ruleParams: (args: IdbTxRuleParams<NS, S>) => IdbTxChunk<S, NS>\n}\n\nexport type IdbTxNamespace<\n S extends IdbSchema,\n NS extends IdbNamespaceName<S>,\n> = {\n [id: string]: IdbTxChunk<S, NS>\n} & {\n /** Address an entity by a unique attribute instead of its id. */\n lookup: <K extends UniqueFieldKeys<S, NS>>(\n attr: K,\n value: WireValue<AttrValue<AttrsOf<S, NS>[K]>>,\n ) => IdbTxChunk<S, NS>\n}\n\n/** The typed tx builder — `db.tx` and `adminDb.tx` share this shape. */\nexport type IdbTx<S extends IdbSchema = IdbRegisteredSchema> = {\n [NS in IdbNamespaceName<S>]: IdbTxNamespace<S, NS>\n}\n\n/**\n * A chunk for *any one* namespace — the type `transact`/`debugTransact` accept.\n * `IdbTxChunk<S>` defaults its `NS` to the full union, whose method params are\n * contravariant, so a chunk narrowed to one namespace (what `tx.tasks[id]…`\n * produces) wouldn't be assignable to it. The per-namespace union is: a\n * `'tasks'` chunk is exactly one of its members.\n */\nexport type IdbTxChunkInput<S extends IdbSchema = IdbRegisteredSchema> = {\n [NS in IdbNamespaceName<S>]: IdbTxChunk<S, NS>\n}[IdbNamespaceName<S>]\n"]}
@@ -0,0 +1,52 @@
1
+ import type { Auth, ConnectionStatus, IInstantDatabase, InstantConfig, InstantCoreDatabase, InstantSchemaDef, InstaQLOptions, InstaQLResponse, PageInfoResponse, RoomSchemaShape, RoomsOf, Storage, Streams, TransactionChunk, User, ValidQuery } from '@instantdb/core';
2
+ import type { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue';
3
+ import type { InfiniteQueryResult } from './useInfiniteQuery.js';
4
+ import { InstantDuxRoom } from './InstantDuxRoom.js';
5
+ export interface UseQueryReturn<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean> {
6
+ isLoading: Ref<boolean>;
7
+ data: ShallowRef<InstaQLResponse<Schema, Q, UseDates> | undefined>;
8
+ pageInfo: ShallowRef<PageInfoResponse<Q> | undefined>;
9
+ error: ShallowRef<{
10
+ message: string;
11
+ } | undefined>;
12
+ }
13
+ export interface UseAuthReturn {
14
+ isLoading: Ref<boolean>;
15
+ user: ShallowRef<User | null | undefined>;
16
+ error: ShallowRef<{
17
+ message: string;
18
+ } | undefined>;
19
+ }
20
+ export declare class InstantDuxDatabase<Schema extends InstantSchemaDef<any, any, any>, UseDates extends boolean = false, Rooms extends RoomSchemaShape = RoomsOf<Schema>> implements IInstantDatabase<Schema> {
21
+ tx: import("@instantdb/core").TxChunk<Schema>;
22
+ auth: Auth;
23
+ storage: Storage;
24
+ streams: Streams;
25
+ core: InstantCoreDatabase<Schema, UseDates>;
26
+ constructor(core: InstantCoreDatabase<Schema, UseDates>);
27
+ getLocalId: (name: string) => Promise<string>;
28
+ transact: (chunks: TransactionChunk<any, any> | TransactionChunk<any, any>[]) => Promise<import("@instantdb/core").TransactionResult>;
29
+ getAuth(): Promise<User | null>;
30
+ queryOnce: <Q extends ValidQuery<Q, Schema>>(query: Q, opts?: InstaQLOptions) => Promise<{
31
+ data: InstaQLResponse<Schema, Q, UseDates>;
32
+ pageInfo: PageInfoResponse<Q>;
33
+ }>;
34
+ useQuery: <Q extends ValidQuery<Q, Schema>>(query: MaybeRefOrGetter<Q | null>, opts?: MaybeRefOrGetter<InstaQLOptions | null | undefined>) => UseQueryReturn<Schema, Q, UseDates>;
35
+ useInfiniteQuery: <Q extends ValidQuery<Q, Schema>>(query: MaybeRefOrGetter<Q | null>, opts?: MaybeRefOrGetter<InstaQLOptions | undefined>) => InfiniteQueryResult<Schema, Q, UseDates>;
36
+ useAuth: () => UseAuthReturn;
37
+ useUser: () => ComputedRef<User>;
38
+ useConnectionStatus: () => Ref<ConnectionStatus>;
39
+ useLocalId: (name: MaybeRefOrGetter<string>) => Ref<string | null>;
40
+ room<RoomType extends string & keyof Rooms>(type?: MaybeRefOrGetter<RoomType | undefined>, id?: MaybeRefOrGetter<string | undefined>): InstantDuxRoom<Schema, Rooms, RoomType>;
41
+ rooms: {
42
+ useTopicEffect: typeof import("./InstantDuxRoom.js").useTopicEffect;
43
+ usePublishTopic: typeof import("./InstantDuxRoom.js").usePublishTopic;
44
+ usePresence: typeof import("./InstantDuxRoom.js").usePresence;
45
+ useSyncPresence: typeof import("./InstantDuxRoom.js").useSyncPresence;
46
+ useTypingIndicator: typeof import("./InstantDuxRoom.js").useTypingIndicator;
47
+ };
48
+ }
49
+ export declare function init<Schema extends InstantSchemaDef<any, any, any>, UseDates extends boolean = false>(config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {
50
+ useDateObjects?: UseDates;
51
+ }): InstantDuxDatabase<Schema, UseDates>;
52
+ //# sourceMappingURL=InstantDuxDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstantDuxDatabase.d.ts","sourceRoot":"","sources":["../../../../src/vue/baseline/InstantDuxDatabase.ts"],"names":[],"mappings":"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"}