@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,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineSchema = defineSchema;
4
+ const core_1 = require("@instantdb/core");
5
+ // ==========
6
+ // defineSchema
7
+ /**
8
+ * The schema authority: namespaces, fields, links, rooms, ruleParams,
9
+ * options — the single home for everything that describes your data.
10
+ *
11
+ * Returns an actual official `InstantSchemaDef` instance (CLI push and the
12
+ * platform API consume it as-is); dux metadata rides along non-enumerably.
13
+ *
14
+ * @example
15
+ * export const schema = defineSchema({
16
+ * namespaces: {
17
+ * tasks: i.namespace({
18
+ * fields: { title: i.string().indexed() },
19
+ * }),
20
+ * },
21
+ * })
22
+ *
23
+ * declare module '@mszr/idb-dux' {
24
+ * interface IdbRegister { schema: typeof schema }
25
+ * }
26
+ */
27
+ function defineSchema(config) {
28
+ const links = config.links ?? {};
29
+ // The official schema constructor builds the enriched entity defs and the
30
+ // canonical instance; dux only prepares official-dialect inputs for it, so
31
+ // the projection matches `i.schema` output by construction.
32
+ const schema = core_1.i.schema({
33
+ entities: config.namespaces,
34
+ links: stripDialect(links),
35
+ rooms: config.rooms ?? {},
36
+ });
37
+ Object.defineProperty(schema, '$dux', {
38
+ value: {
39
+ namespaces: Object.fromEntries(Object.entries(config.namespaces).map(([name, def]) => [
40
+ name,
41
+ def.$dux
42
+ ?? { singular: undefined, ruleParams: undefined },
43
+ ])),
44
+ linkSingulars: collectLinkSingulars(links),
45
+ options: { singularize: config.options?.singularize ?? 'auto' },
46
+ },
47
+ enumerable: false,
48
+ });
49
+ return schema;
50
+ }
51
+ /** Remove dux-only keys so `schema.links` is wire-clean official dialect. */
52
+ function stripDialect(links) {
53
+ return Object.fromEntries(Object.entries(links).map(([name, { forward, reverse }]) => {
54
+ const { singular: _f, ...forwardRest } = forward;
55
+ const { singular: _r, ...reverseRest } = reverse;
56
+ return [name, { forward: forwardRest, reverse: reverseRest }];
57
+ }));
58
+ }
59
+ /** Hoist declared label singulars into `$dux.linkSingulars[namespace][label]`. */
60
+ function collectLinkSingulars(links) {
61
+ const result = {};
62
+ for (const { forward, reverse } of Object.values(links)) {
63
+ for (const side of [forward, reverse]) {
64
+ if (side.singular === undefined)
65
+ continue;
66
+ const labels = (result[side.on] ??= {});
67
+ labels[side.label] = side.singular;
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+ //# sourceMappingURL=defineSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defineSchema.js","sourceRoot":"","sources":["../../../src/schema/defineSchema.ts"],"names":[],"mappings":";;AA2JA,oCA2CC;AA7LD,0CAAgD;AA2HhD,aAAa;AACb,eAAe;AAEf;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,YAAY,CAM1B,MAA0D;IAM1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAK,EAAY,CAAA;IAE3C,0EAA0E;IAC1E,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,MAAM,GAAG,QAAS,CAAC,MAAM,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,UAAU;QAC3B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAkB;QAC3C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;KAC1B,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;QACpC,KAAK,EAAE;YACL,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;gBACrD,IAAI;gBACH,GAAgC,CAAC,IAAI;uBACnC,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE;aAClD,CAAC,CACH;YACD,aAAa,EAAE,oBAAoB,CAAC,KAAK,CAAC;YAC1C,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,MAAM,EAAE;SAChE;QACD,UAAU,EAAE,KAAK;KAClB,CAAC,CAAA;IAEF,OAAO,MAIN,CAAA;AACH,CAAC;AAED,6EAA6E;AAC7E,SAAS,YAAY,CAAC,KAAuB;IAC3C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QACzD,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAA;QAChD,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAA;QAChD,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CACH,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,oBAAoB,CAC3B,KAAuB;IAEvB,MAAM,MAAM,GAA2C,EAAE,CAAA;IACzD,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAC7B,SAAQ;YACV,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;YACvC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;QACpC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import type {\n CardinalityKind,\n EntitiesWithLinks,\n InstantSchemaDef as InstantSchemaDefType,\n LinksDef,\n RoomsDef,\n} from '@instantdb/core'\nimport type { IdbNamespaceDef, IdbNamespaceMeta, IdbNamespacesDef } from './namespace.js'\nimport type { Expand } from './util.js'\nimport { i as officialI } from '@instantdb/core'\n\n// ==========\n// links\n\ninterface IdbLinkSide<On extends string> {\n on: On\n label: string\n has: CardinalityKind\n /**\n * The singular form of this label — governs the output key when `$only`/\n * `$at` is applied to the nested link. Defaults to the built-in English\n * algorithm when omitted. Stripped from the wire projection.\n */\n singular?: string\n onDelete?: 'cascade'\n}\n\nexport interface IdbLinkDef<On extends string> {\n forward: IdbLinkSide<On> & { required?: boolean }\n reverse: IdbLinkSide<On>\n}\n\nexport type IdbLinksDef<Namespaces> = Record<\n string,\n IdbLinkDef<keyof Namespaces & string>\n>\n\n// ==========\n// options\n\nexport interface IdbSchemaOptions {\n /**\n * How `$only`/`$at` result keys are singularized, inherited by every dux\n * init from the schema:\n *\n * - `'auto'` (default) — the schema's `singular` if declared, otherwise the\n * built-in English algorithm\n * - `'explicit'` — the schema's `singular` if declared, otherwise the key\n * stays as-is (`$as` required for unregistered plurals)\n * - `'off'` — never singularize; keys keep their names (`$as` to rename)\n */\n singularize?: 'auto' | 'off' | 'explicit'\n}\n\ninterface ResolveOptions<Options extends IdbSchemaOptions> {\n singularize: Options['singularize'] extends 'off' | 'explicit'\n ? Options['singularize']\n : 'auto'\n}\n\n// ==========\n// schema meta\n\n/** The loose shape of a schema's `$dux` meta — the constraint side. */\nexport interface IdbSchemaMetaShape {\n readonly namespaces: Record<string, IdbNamespaceMeta>\n /** namespace → link label → declared singular (declared labels only). */\n readonly linkSingulars: Record<string, Record<string, string>>\n readonly options: { readonly singularize: 'auto' | 'off' | 'explicit' }\n}\n\ntype SideSingulars<Links, NS, Dir extends 'forward' | 'reverse'> = {\n [K in keyof Links as Links[K] extends Record<Dir, { on: NS, label: infer L extends string, singular: string }>\n ? L\n : never]: Links[K] extends Record<Dir, { singular: infer Sg extends string }>\n ? Sg\n : never\n}\n\ntype LinkSingularsOf<Namespaces, Links> = {\n [NS in keyof Namespaces]: Expand<\n SideSingulars<Links, NS, 'forward'> & SideSingulars<Links, NS, 'reverse'>\n >\n}\n\ntype MetaOfNamespace<Def> = Def extends { readonly $dux: infer Meta extends IdbNamespaceMeta }\n ? Meta\n : IdbNamespaceMeta<undefined, undefined>\n\n/** The computed `$dux` meta of a schema, as `defineSchema` derives it. */\nexport interface IdbSchemaMeta<\n Namespaces extends IdbNamespacesDef,\n Links,\n Options extends IdbSchemaOptions,\n> {\n readonly namespaces: { [K in keyof Namespaces]: MetaOfNamespace<Namespaces[K]> }\n readonly linkSingulars: LinkSingularsOf<Namespaces, Links>\n readonly options: ResolveOptions<Options>\n}\n\n// ==========\n// the schema type\n\n/**\n * Every dux schema: a real official `InstantSchemaDef` instance whose\n * enumerable projection is exactly what Instant's tooling consumes, with dux\n * metadata riding along non-enumerably under `$dux`. The official rename is\n * `IdbSchema` — this is the parameterized form behind it.\n */\nexport type IdbSchemaDef<\n Entities extends Record<string, any>,\n Rooms extends RoomsDef,\n Meta extends IdbSchemaMetaShape,\n> = InstantSchemaDefType<Entities, LinksDef<any>, Rooms> & {\n readonly $dux: Meta\n}\n\n/** The schema type — what `defineSchema` returns, loosely. */\nexport type IdbSchema = IdbSchemaDef<any, any, IdbSchemaMetaShape>\n\nexport interface IdbSchemaConfig<\n Namespaces extends IdbNamespacesDef,\n Links extends IdbLinksDef<Namespaces>,\n Rooms extends RoomsDef,\n Options extends IdbSchemaOptions,\n> {\n namespaces: Namespaces\n links?: Links\n rooms?: Rooms\n options?: Options\n}\n\n// ==========\n// defineSchema\n\n/**\n * The schema authority: namespaces, fields, links, rooms, ruleParams,\n * options — the single home for everything that describes your data.\n *\n * Returns an actual official `InstantSchemaDef` instance (CLI push and the\n * platform API consume it as-is); dux metadata rides along non-enumerably.\n *\n * @example\n * export const schema = defineSchema({\n * namespaces: {\n * tasks: i.namespace({\n * fields: { title: i.string().indexed() },\n * }),\n * },\n * })\n *\n * declare module '@mszr/idb-dux' {\n * interface IdbRegister { schema: typeof schema }\n * }\n */\nexport function defineSchema<\n Namespaces extends IdbNamespacesDef,\n const Links extends IdbLinksDef<Namespaces> = {},\n Rooms extends RoomsDef = {},\n const Options extends IdbSchemaOptions = {},\n>(\n config: IdbSchemaConfig<Namespaces, Links, Rooms, Options>,\n): IdbSchemaDef<\n EntitiesWithLinks<Namespaces, Links>,\n Rooms,\n IdbSchemaMeta<Namespaces, Links, Options>\n> {\n const links = config.links ?? ({} as Links)\n\n // The official schema constructor builds the enriched entity defs and the\n // canonical instance; dux only prepares official-dialect inputs for it, so\n // the projection matches `i.schema` output by construction.\n const schema = officialI.schema({\n entities: config.namespaces,\n links: stripDialect(links) as LinksDef<any>,\n rooms: config.rooms ?? {},\n })\n\n Object.defineProperty(schema, '$dux', {\n value: {\n namespaces: Object.fromEntries(\n Object.entries(config.namespaces).map(([name, def]) => [\n name,\n (def as Partial<IdbNamespaceDef>).$dux\n ?? { singular: undefined, ruleParams: undefined },\n ]),\n ),\n linkSingulars: collectLinkSingulars(links),\n options: { singularize: config.options?.singularize ?? 'auto' },\n },\n enumerable: false,\n })\n\n return schema as unknown as IdbSchemaDef<\n EntitiesWithLinks<Namespaces, Links>,\n Rooms,\n IdbSchemaMeta<Namespaces, Links, Options>\n >\n}\n\n/** Remove dux-only keys so `schema.links` is wire-clean official dialect. */\nfunction stripDialect(links: IdbLinksDef<any>): IdbLinksDef<any> {\n return Object.fromEntries(\n Object.entries(links).map(([name, { forward, reverse }]) => {\n const { singular: _f, ...forwardRest } = forward\n const { singular: _r, ...reverseRest } = reverse\n return [name, { forward: forwardRest, reverse: reverseRest }]\n }),\n )\n}\n\n/** Hoist declared label singulars into `$dux.linkSingulars[namespace][label]`. */\nfunction collectLinkSingulars(\n links: IdbLinksDef<any>,\n): Record<string, Record<string, string>> {\n const result: Record<string, Record<string, string>> = {}\n for (const { forward, reverse } of Object.values(links)) {\n for (const side of [forward, reverse]) {\n if (side.singular === undefined)\n continue\n const labels = (result[side.on] ??= {})\n labels[side.label] = side.singular\n }\n }\n return result\n}\n"]}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Schema-derived field and link helpers, shared by the query and tx layers.
3
+ * Internal — the public surface exposes them only through `Idb*` types.
4
+ *
5
+ * Field-subset keys are detected by inferring the relevant `DataAttrDef`
6
+ * type param (core's UniqueKeys/IndexedKeys pattern) — `IsUnique`/`IsIndexed`
7
+ * are not structural properties, so assignability tests cannot see them.
8
+ */
9
+ import type { DataAttrDef } from '@instantdb/core';
10
+ import type { IdbSchema } from './defineSchema.js';
11
+ export type AttrsOf<S extends IdbSchema, NS extends string> = S['entities'][NS]['attrs'];
12
+ export type LinksOf<S extends IdbSchema, NS extends string> = S['entities'][NS]['links'];
13
+ export type FieldKeys<S extends IdbSchema, NS extends string> = keyof AttrsOf<S, NS> & string;
14
+ export type LinkLabels<S extends IdbSchema, NS extends string> = keyof LinksOf<S, NS> & string;
15
+ export type LinkTarget<S extends IdbSchema, NS extends string, L extends string> = LinksOf<S, NS>[L] extends {
16
+ entityName: infer T extends string;
17
+ } ? T : never;
18
+ export type LinkCardinality<S extends IdbSchema, NS extends string, L extends string> = LinksOf<S, NS>[L] extends {
19
+ cardinality: infer C;
20
+ } ? C : never;
21
+ export type AttrValue<A> = A extends DataAttrDef<infer V, any, any, any> ? V : never;
22
+ /** The wire form of a field value — `i.date()` fields travel as string | number. */
23
+ export type WireValue<V> = V extends Date ? string | number | Date : V;
24
+ export type IndexedFieldKeys<S extends IdbSchema, NS extends string> = {
25
+ [K in keyof AttrsOf<S, NS>]: AttrsOf<S, NS>[K] extends DataAttrDef<any, any, infer I, any> ? I extends true ? K & string : never : never;
26
+ }[keyof AttrsOf<S, NS>];
27
+ export type UniqueFieldKeys<S extends IdbSchema, NS extends string> = {
28
+ [K in keyof AttrsOf<S, NS>]: AttrsOf<S, NS>[K] extends DataAttrDef<any, any, any, infer U> ? U extends true ? K & string : never : never;
29
+ }[keyof AttrsOf<S, NS>];
30
+ export type PrimitiveFieldKeys<S extends IdbSchema, NS extends string> = {
31
+ [K in keyof AttrsOf<S, NS>]: AttrsOf<S, NS>[K] extends DataAttrDef<infer V, any, any, any> ? [V] extends [string | number | boolean] ? K & string : never : never;
32
+ }[keyof AttrsOf<S, NS>];
33
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACxF,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAExF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAA;AAC7F,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAA;AAE9F,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,MAAM,EACjB,CAAC,SAAS,MAAM,IACd,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC,SAAS,MAAM,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAEhF,MAAM,MAAM,eAAe,CACzB,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,MAAM,EACjB,CAAC,SAAS,MAAM,IACd,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;IAAE,WAAW,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAElE,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAEpF,oFAAoF;AACpF,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,CAAA;AAEtE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI;KACpE,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GACtF,CAAC,SAAS,IAAI,GACZ,CAAC,GAAG,MAAM,GACV,KAAK,GACP,KAAK;CACV,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAEvB,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI;KACnE,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GACtF,CAAC,SAAS,IAAI,GACZ,CAAC,GAAG,MAAM,GACV,KAAK,GACP,KAAK;CACV,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AAEvB,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,SAAS,MAAM,IAAI;KACtE,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACtF,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GACnC,CAAC,GAAG,MAAM,GACV,KAAK,GACT,KAAK;CACV,CAAC,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../src/schema/fields.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Schema-derived field and link helpers, shared by the query and tx layers.\n * Internal — the public surface exposes them only through `Idb*` types.\n *\n * Field-subset keys are detected by inferring the relevant `DataAttrDef`\n * type param (core's UniqueKeys/IndexedKeys pattern) — `IsUnique`/`IsIndexed`\n * are not structural properties, so assignability tests cannot see them.\n */\nimport type { DataAttrDef } from '@instantdb/core'\nimport type { IdbSchema } from './defineSchema.js'\n\nexport type AttrsOf<S extends IdbSchema, NS extends string> = S['entities'][NS]['attrs']\nexport type LinksOf<S extends IdbSchema, NS extends string> = S['entities'][NS]['links']\n\nexport type FieldKeys<S extends IdbSchema, NS extends string> = keyof AttrsOf<S, NS> & string\nexport type LinkLabels<S extends IdbSchema, NS extends string> = keyof LinksOf<S, NS> & string\n\nexport type LinkTarget<\n S extends IdbSchema,\n NS extends string,\n L extends string,\n> = LinksOf<S, NS>[L] extends { entityName: infer T extends string } ? T : never\n\nexport type LinkCardinality<\n S extends IdbSchema,\n NS extends string,\n L extends string,\n> = LinksOf<S, NS>[L] extends { cardinality: infer C } ? C : never\n\nexport type AttrValue<A> = A extends DataAttrDef<infer V, any, any, any> ? V : never\n\n/** The wire form of a field value — `i.date()` fields travel as string | number. */\nexport type WireValue<V> = V extends Date ? string | number | Date : V\n\nexport type IndexedFieldKeys<S extends IdbSchema, NS extends string> = {\n [K in keyof AttrsOf<S, NS>]: AttrsOf<S, NS>[K] extends DataAttrDef<any, any, infer I, any>\n ? I extends true\n ? K & string\n : never\n : never\n}[keyof AttrsOf<S, NS>]\n\nexport type UniqueFieldKeys<S extends IdbSchema, NS extends string> = {\n [K in keyof AttrsOf<S, NS>]: AttrsOf<S, NS>[K] extends DataAttrDef<any, any, any, infer U>\n ? U extends true\n ? K & string\n : never\n : never\n}[keyof AttrsOf<S, NS>]\n\nexport type PrimitiveFieldKeys<S extends IdbSchema, NS extends string> = {\n [K in keyof AttrsOf<S, NS>]: AttrsOf<S, NS>[K] extends DataAttrDef<infer V, any, any, any>\n ? [V] extends [string | number | boolean]\n ? K & string\n : never\n : never\n}[keyof AttrsOf<S, NS>]\n"]}
@@ -0,0 +1,9 @@
1
+ export type { IdbLinkDef, IdbLinksDef, IdbSchema, IdbSchemaConfig, IdbSchemaDef, IdbSchemaMeta, IdbSchemaMetaShape, IdbSchemaOptions, } from './defineSchema.js';
2
+ export { defineSchema } from './defineSchema.js';
3
+ export type { IdbNamespaceConfig, IdbNamespaceDef, IdbNamespaceMeta, IdbNamespacesDef, } from './namespace.js';
4
+ export { i } from './namespace.js';
5
+ export type { IdbRegister, IdbRegisteredSchema, IdbUnknownSchema, } from './register.js';
6
+ export { singularize } from './singularize.js';
7
+ export type { Singularize } from './singularize.js';
8
+ export type { IdbEntity, IdbEntityWithLinks, IdbNamespaceName, IdbRoomName, IdbRoomPresence, IdbRooms, IdbRoomTopics, } from './types.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,eAAe,EACf,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,CAAC,EAAE,MAAM,gBAAgB,CAAA;AAClC,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,QAAQ,EACR,aAAa,GACd,MAAM,YAAY,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.singularize = exports.i = exports.defineSchema = void 0;
4
+ var defineSchema_js_1 = require("./defineSchema.js");
5
+ Object.defineProperty(exports, "defineSchema", { enumerable: true, get: function () { return defineSchema_js_1.defineSchema; } });
6
+ var namespace_js_1 = require("./namespace.js");
7
+ Object.defineProperty(exports, "i", { enumerable: true, get: function () { return namespace_js_1.i; } });
8
+ var singularize_js_1 = require("./singularize.js");
9
+ Object.defineProperty(exports, "singularize", { enumerable: true, get: function () { return singularize_js_1.singularize; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/index.ts"],"names":[],"mappings":";;;AAUA,qDAAgD;AAAvC,+GAAA,YAAY,OAAA;AAOrB,+CAAkC;AAAzB,iGAAA,CAAC,OAAA;AAMV,mDAA8C;AAArC,6GAAA,WAAW,OAAA","sourcesContent":["export type {\n IdbLinkDef,\n IdbLinksDef,\n IdbSchema,\n IdbSchemaConfig,\n IdbSchemaDef,\n IdbSchemaMeta,\n IdbSchemaMetaShape,\n IdbSchemaOptions,\n} from './defineSchema.js'\nexport { defineSchema } from './defineSchema.js'\nexport type {\n IdbNamespaceConfig,\n IdbNamespaceDef,\n IdbNamespaceMeta,\n IdbNamespacesDef,\n} from './namespace.js'\nexport { i } from './namespace.js'\nexport type {\n IdbRegister,\n IdbRegisteredSchema,\n IdbUnknownSchema,\n} from './register.js'\nexport { singularize } from './singularize.js'\nexport type { Singularize } from './singularize.js'\nexport type {\n IdbEntity,\n IdbEntityWithLinks,\n IdbNamespaceName,\n IdbRoomName,\n IdbRoomPresence,\n IdbRooms,\n IdbRoomTopics,\n} from './types.js'\n"]}
@@ -0,0 +1,82 @@
1
+ import type { AttrsDefs, DataAttrDef, EntityDef as EntityDefType } from '@instantdb/core';
2
+ /**
3
+ * The dux metadata a namespace declaration carries into `defineSchema`,
4
+ * where it is hoisted onto the schema's own (non-enumerable) `$dux` meta.
5
+ */
6
+ export interface IdbNamespaceMeta<Singular extends string | undefined = string | undefined, RuleParams extends AttrsDefs | undefined = AttrsDefs | undefined> {
7
+ readonly singular: Singular;
8
+ readonly ruleParams: RuleParams;
9
+ }
10
+ /**
11
+ * What `i.namespace()` returns: a real official `EntityDef` (so the schema's
12
+ * enumerable projection stays exactly what Instant's tooling consumes), with
13
+ * the dux metadata riding along non-enumerably under `$dux`.
14
+ */
15
+ export type IdbNamespaceDef<Fields extends AttrsDefs = AttrsDefs, Singular extends string | undefined = string | undefined, RuleParams extends AttrsDefs | undefined = AttrsDefs | undefined> = EntityDefType<Fields, {}, void> & {
16
+ readonly $dux: IdbNamespaceMeta<Singular, RuleParams>;
17
+ };
18
+ /**
19
+ * The constraint for `defineSchema`'s `namespaces` block. Deliberately the
20
+ * official* `EntityDef` shape, without the `$dux` slot: a generic constraint
21
+ * doubles as the contextual type of the config literal, and a contextual
22
+ * `$dux: IdbNamespaceMeta<any, any>` would poison `i.namespace`'s inference
23
+ * (literal singulars widen, ruleParams collapse to `any`). The meta is
24
+ * extracted conditionally where it's needed instead.
25
+ */
26
+ export type IdbNamespacesDef = Record<string, EntityDefType<any, any, any>>;
27
+ /**
28
+ * The validation arm for `fields`/`ruleParams`: non-builder members carry
29
+ * the diagnostic on the offending key; valid members contribute nothing.
30
+ */
31
+ type ValidFieldBuilders<F> = {
32
+ [K in keyof F]: F[K] extends DataAttrDef<any, any, any, any> ? unknown : `QERR_SCHEMA_FIELD_INVALID: ${K & string} must be a field builder (i.string(), i.number(), …)`;
33
+ };
34
+ /**
35
+ * `Fields` and `RuleParams` are deliberately unconstrained: a generic's
36
+ * constraint becomes the contextual type of the matching config property, and
37
+ * an `AttrsDefs` context degrades unchained builder calls (a bare
38
+ * `i.string()`) to `DataAttrDef<any, …>`. Validation rides in a parallel
39
+ * intersection arm instead, and the return type re-tightens via `Extract`.
40
+ */
41
+ export interface IdbNamespaceConfig<Fields, Singular, RuleParams> {
42
+ /**
43
+ * The singular form of the namespace name — the single source of truth for
44
+ * auto-singularization of `$only`/`$at` result keys. Defaults to the
45
+ * built-in English algorithm when omitted.
46
+ */
47
+ singular?: Singular;
48
+ /** The namespace's local data attributes. */
49
+ fields: Fields & ValidFieldBuilders<Fields>;
50
+ /**
51
+ * The namespace's rule params, declared once and typed end-to-end: in the
52
+ * tx chain, in query options, and in perms.
53
+ */
54
+ ruleParams?: RuleParams & ValidFieldBuilders<RuleParams>;
55
+ }
56
+ /**
57
+ * The namespace constructor — the single home for everything that describes
58
+ * a namespace: its fields, its singular name, and its rule params.
59
+ *
60
+ * @example
61
+ * workspaces: i.namespace({
62
+ * fields: { name: i.string().indexed() },
63
+ * ruleParams: { inviteCode: i.string() },
64
+ * }),
65
+ */
66
+ declare function namespace<Fields, const Singular extends string | undefined = undefined, RuleParams = undefined>(config: IdbNamespaceConfig<Fields, Singular, RuleParams>): IdbNamespaceDef<Extract<Fields, AttrsDefs>, Singular, Extract<RuleParams, AttrsDefs | undefined>>;
67
+ /**
68
+ * dux's authoring dialect: `i.namespace` plus the official field builders.
69
+ * There is no `i.entity` / `i.schema` / `i.graph` — one dialect, one
70
+ * vocabulary; the builders themselves are the official implementations.
71
+ */
72
+ export declare const i: {
73
+ namespace: typeof namespace;
74
+ string: <StringEnum extends string = string>() => DataAttrDef<StringEnum, true, false>;
75
+ number: () => DataAttrDef<number, true, false>;
76
+ boolean: () => DataAttrDef<boolean, true, false>;
77
+ date: () => DataAttrDef<Date, true, false>;
78
+ json: <T = any>() => DataAttrDef<T, true, false>;
79
+ any: () => DataAttrDef<any, true, false>;
80
+ };
81
+ export {};
82
+ //# sourceMappingURL=namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/schema/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAGzF;;;GAGG;AACH,MAAM,WAAW,gBAAgB,CAC/B,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACxD,UAAU,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS;IAEhE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,CACzB,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACxD,UAAU,SAAS,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,IAC9D,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;CACtD,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAE3E;;;GAGG;AACH,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACxD,OAAO,GACP,8BAA8B,CAAC,GAAG,MAAM,sDAAsD;CACnG,CAAA;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC3C;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;CACzD;AAED;;;;;;;;;GASG;AACH,iBAAS,SAAS,CAChB,MAAM,EACN,KAAK,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACrD,UAAU,GAAG,SAAS,EAEtB,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,GACvD,eAAe,CAChB,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,QAAQ,EACR,OAAO,CAAC,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC,CAC3C,CAWA;AAED;;;;GAIG;AACH,eAAO,MAAM,CAAC;;;;;;;;CAQb,CAAA"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.i = void 0;
4
+ const core_1 = require("@instantdb/core");
5
+ /**
6
+ * The namespace constructor — the single home for everything that describes
7
+ * a namespace: its fields, its singular name, and its rule params.
8
+ *
9
+ * @example
10
+ * workspaces: i.namespace({
11
+ * fields: { name: i.string().indexed() },
12
+ * ruleParams: { inviteCode: i.string() },
13
+ * }),
14
+ */
15
+ function namespace(config) {
16
+ const def = core_1.i.entity(config.fields);
17
+ Object.defineProperty(def, '$dux', {
18
+ value: { singular: config.singular, ruleParams: config.ruleParams },
19
+ enumerable: false,
20
+ });
21
+ return def;
22
+ }
23
+ /**
24
+ * dux's authoring dialect: `i.namespace` plus the official field builders.
25
+ * There is no `i.entity` / `i.schema` / `i.graph` — one dialect, one
26
+ * vocabulary; the builders themselves are the official implementations.
27
+ */
28
+ exports.i = {
29
+ namespace,
30
+ string: core_1.i.string,
31
+ number: core_1.i.number,
32
+ boolean: core_1.i.boolean,
33
+ date: core_1.i.date,
34
+ json: core_1.i.json,
35
+ any: core_1.i.any,
36
+ };
37
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/schema/namespace.ts"],"names":[],"mappings":";;;AACA,0CAAgD;AAsEhD;;;;;;;;;GASG;AACH,SAAS,SAAS,CAKhB,MAAwD;IAMxD,MAAM,GAAG,GAAG,QAAS,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;AACU,QAAA,CAAC,GAAG;IACf,SAAS;IACT,MAAM,EAAE,QAAS,CAAC,MAAM;IACxB,MAAM,EAAE,QAAS,CAAC,MAAM;IACxB,OAAO,EAAE,QAAS,CAAC,OAAO;IAC1B,IAAI,EAAE,QAAS,CAAC,IAAI;IACpB,IAAI,EAAE,QAAS,CAAC,IAAI;IACpB,GAAG,EAAE,QAAS,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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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,47 @@
1
+ "use strict";
2
+ /**
3
+ * The default English singularization algorithm, shipped twice from one rule
4
+ * set: `singularize` (runtime) and `Singularize<>` (type space). The two must
5
+ * never disagree — their equivalence is locked by a word-list test that runs
6
+ * both planes over the same fixtures.
7
+ *
8
+ * The algorithm is deliberately small and predictable: a short irregulars
9
+ * table plus ordered suffix rules. Anything it gets wrong is declared
10
+ * explicitly in the schema (`singular` on a namespace or link label), which
11
+ * always wins over the algorithm.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.singularize = singularize;
15
+ /** Words the suffix rules would mangle. One source for both planes. */
16
+ const IRREGULARS = {
17
+ people: 'person',
18
+ children: 'child',
19
+ men: 'man',
20
+ women: 'woman',
21
+ feet: 'foot',
22
+ teeth: 'tooth',
23
+ geese: 'goose',
24
+ mice: 'mouse',
25
+ movies: 'movie',
26
+ cookies: 'cookie',
27
+ caches: 'cache',
28
+ statuses: 'status',
29
+ buses: 'bus',
30
+ quizzes: 'quiz',
31
+ heroes: 'hero',
32
+ };
33
+ /** The same ordered rules, at runtime. Mirrors `Singularize<>` exactly. */
34
+ function singularize(word) {
35
+ if (word in IRREGULARS)
36
+ return IRREGULARS[word];
37
+ if (word.endsWith('ies') && word.length >= 5)
38
+ return `${word.slice(0, -3)}y`;
39
+ if (/(?:ss|zz|ch|sh|x)es$/.test(word))
40
+ return word.slice(0, -2);
41
+ if (word.endsWith('ss'))
42
+ return word;
43
+ if (word.endsWith('s'))
44
+ return word.slice(0, -1);
45
+ return word;
46
+ }
47
+ //# sourceMappingURL=singularize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singularize.js","sourceRoot":"","sources":["../../../src/schema/singularize.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA+CH,kCAYC;AAzDD,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,SAAgB,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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lookup = exports.id = exports.typedTx = void 0;
4
+ var typedTx_js_1 = require("./typedTx.js");
5
+ Object.defineProperty(exports, "typedTx", { enumerable: true, get: function () { return typedTx_js_1.typedTx; } });
6
+ // `id` and `lookup` keep their official names — values are unprefixed at the
7
+ // boundary; `lookup` remains available for direct use beside dot-path links.
8
+ var core_1 = require("@instantdb/core");
9
+ Object.defineProperty(exports, "id", { enumerable: true, get: function () { return core_1.id; } });
10
+ Object.defineProperty(exports, "lookup", { enumerable: true, get: function () { return core_1.lookup; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tx/index.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAA7B,qGAAA,OAAO,OAAA;AAYhB,6EAA6E;AAC7E,6EAA6E;AAC7E,wCAA4C;AAAnC,0FAAA,EAAE,OAAA;AAAE,8FAAA,MAAM,OAAA","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