@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,136 @@
1
+ /**
2
+ * The `IdbWebhook*` boundary module — every rename from `@instantdb/webhooks`
3
+ * lives here and nowhere else (wrap-and-map, dux-spec-workspace.md §5.1).
4
+ *
5
+ * Two kinds of types live side by side:
6
+ *
7
+ * - **aliases** for shapes with no entity content (`IdbWebhook`, the manager,
8
+ * the op payloads, the unions): pure renames over the official types, so
9
+ * upstream changes ride in for free and break loudly at the wrap points.
10
+ * - **authored-fresh** for the handler surface (`IdbWebhookChange`,
11
+ * `IdbWebhookHandlers`): a change's `before`/`after` is the same
12
+ * `IdbEntity<'ns'>` a query and a tx speak — one entity type everywhere, by
13
+ * construction (dux-spec-webhooks.md §2). `WebhookEntity` is dropped — it
14
+ * resolves to `IdbEntity` already.
15
+ *
16
+ * Everything is registration-typed — no schema generic at any call site, with
17
+ * the trailing escape-hatch param for multi-schema tools.
18
+ */
19
+ import type { CreateWebhookParams, UpdateWebhookParams, WebhookAction, WebhookAttempt, WebhookBody, WebhookEventInfo, WebhookEventsPage, WebhookEventStatus, WebhookInfo, WebhookPayload, Webhooks, WebhooksManager, WebhookStatus } from '@instantdb/webhooks';
20
+ import type { IdbSchema } from '../schema/defineSchema.js';
21
+ import type { IdbRegisteredSchema } from '../schema/register.js';
22
+ import type { IdbEntity, IdbNamespaceName } from '../schema/types.js';
23
+ /** A configured webhook subscription. */
24
+ export type IdbWebhook = WebhookInfo;
25
+ /** A single delivery event for a webhook. */
26
+ export type IdbWebhookEvent = WebhookEventInfo;
27
+ /** One HTTP delivery attempt of an event. */
28
+ export type IdbWebhookAttempt = WebhookAttempt;
29
+ /** A page of delivery events. */
30
+ export type IdbWebhookEventsPage = WebhookEventsPage;
31
+ /** The verified delivery pointer `verify` returns — `payloadUrl` + `token`. */
32
+ export type IdbWebhookBody = WebhookBody;
33
+ /** The write actions a webhook can deliver. */
34
+ export type IdbWebhookAction = WebhookAction;
35
+ /** Whether a webhook is currently delivering events. */
36
+ export type IdbWebhookStatus = WebhookStatus;
37
+ /** A delivery event's stage in the retry lifecycle. */
38
+ export type IdbWebhookEventStatus = WebhookEventStatus;
39
+ /** The `manager.create` payload. */
40
+ export type IdbWebhookCreate<S extends IdbSchema = IdbRegisteredSchema> = CreateWebhookParams<S>;
41
+ /** The `manager.update` payload — every field optional. */
42
+ export type IdbWebhookUpdate<S extends IdbSchema = IdbRegisteredSchema> = UpdateWebhookParams<S>;
43
+ /** The delivered batch of changes for one webhook event. */
44
+ export type IdbWebhookPayload<S extends IdbSchema = IdbRegisteredSchema> = WebhookPayload<S>;
45
+ /** Subscription CRUD + delivery-event inspection. Method names verbatim. */
46
+ export type IdbWebhookManager<S extends IdbSchema = IdbRegisteredSchema> = WebhooksManager<S>;
47
+ /** One change shaped per action: the `before`/`after` an action carries. */
48
+ type ChangeFor<S extends IdbSchema, NS extends IdbNamespaceName<S>, Action extends IdbWebhookAction> = Action extends 'create' ? {
49
+ namespace: NS;
50
+ id: string;
51
+ action: 'create';
52
+ before: null;
53
+ after: IdbEntity<NS, S>;
54
+ idempotencyKey: string;
55
+ } : Action extends 'update' ? {
56
+ namespace: NS;
57
+ id: string;
58
+ action: 'update';
59
+ before: IdbEntity<NS, S>;
60
+ after: IdbEntity<NS, S>;
61
+ idempotencyKey: string;
62
+ } : {
63
+ namespace: NS;
64
+ id: string;
65
+ action: 'delete';
66
+ before: IdbEntity<NS, S>;
67
+ after: null;
68
+ idempotencyKey: string;
69
+ };
70
+ /**
71
+ * One entity change a webhook delivers — `namespace`, `action`, and the
72
+ * `before`/`after` entities (`IdbEntity<'ns'>`, the same type queries and tx
73
+ * speak). Narrow with the optional `NS`/`Action` params; left wide it's the
74
+ * discriminated union over every namespace and action a `$default` handler
75
+ * sees. (Replaces the official `WebhookPayloadRecord` + `WebhookPayloadRecordFor`
76
+ * pair — one utility, optional narrowing, the `IdbEntity` pattern.)
77
+ */
78
+ export type IdbWebhookChange<NS extends IdbNamespaceName<S> = IdbNamespaceName, Action extends IdbWebhookAction = IdbWebhookAction, S extends IdbSchema = IdbRegisteredSchema> = NS extends IdbNamespaceName<S> ? Action extends IdbWebhookAction ? ChangeFor<S, NS, Action> : never : never;
79
+ type IdbWebhookHandlerFn<S extends IdbSchema, NS extends IdbNamespaceName<S>, Action extends IdbWebhookAction> = (change: IdbWebhookChange<NS, Action, S>) => unknown | Promise<unknown>;
80
+ /**
81
+ * The handler map: `namespace.action`, a per-namespace `$default`, and a
82
+ * top-level `$default`. Authored as a plain object literal — contextual typing
83
+ * narrows each handler's `change` per namespace and action, so the official
84
+ * `typedHandlers`/`combineHandlers` ceremony dissolves ([§4](./dux-spec-webhooks.md#4-authoring--definewebhookhandlers)).
85
+ */
86
+ export type IdbWebhookHandlers<S extends IdbSchema = IdbRegisteredSchema> = {
87
+ [NS in IdbNamespaceName<S>]?: {
88
+ [A in IdbWebhookAction | '$default']?: IdbWebhookHandlerFn<S, NS, A extends IdbWebhookAction ? A : IdbWebhookAction>;
89
+ };
90
+ } & {
91
+ $default?: IdbWebhookHandlerFn<S, IdbNamespaceName<S>, IdbWebhookAction>;
92
+ };
93
+ /**
94
+ * `init` config. Optional in full — handling needs none. `appId` +
95
+ * `adminToken` unlock the `manager`; `apiURI` is for self-hosting.
96
+ */
97
+ export interface IdbWebhookConfig {
98
+ appId?: string | null | undefined;
99
+ adminToken?: string | null | undefined;
100
+ apiURI?: string | null | undefined;
101
+ }
102
+ /** Tolerance/clock options shared by `verify` and `process`. */
103
+ export type IdbWebhookVerifyOpts = NonNullable<Parameters<Webhooks<IdbSchema>['validateRequest']>[1]>;
104
+ /** The Node `IncomingMessage`-shaped request `processNode` accepts. */
105
+ export type IdbWebhookNodeRequest = Parameters<Webhooks<IdbSchema>['processNodeRequest']>[1];
106
+ /** `processNode` options — `verify` options plus a raw-body override. */
107
+ export type IdbWebhookNodeOpts = NonNullable<Parameters<Webhooks<IdbSchema>['processNodeRequest']>[2]>;
108
+ /**
109
+ * The webhook handle `init` returns. The pipeline verbs are always present;
110
+ * `manager` requires `appId` + `adminToken` and throws if used without them.
111
+ */
112
+ export interface IdbWebhooks<S extends IdbSchema = IdbRegisteredSchema> {
113
+ /** Subscription CRUD + event inspection. Requires `appId` + `adminToken`. */
114
+ manager: IdbWebhookManager<S>;
115
+ /**
116
+ * Cryptographically verify a delivery and return its `payloadUrl` + `token`.
117
+ * Pass the `Request`, or the raw `{ signature, body }` for custom flows.
118
+ */
119
+ verify: {
120
+ (request: Request, opts?: IdbWebhookVerifyOpts): Promise<IdbWebhookBody>;
121
+ (input: {
122
+ signature: string;
123
+ body: string | (() => Promise<string>);
124
+ }, opts?: IdbWebhookVerifyOpts): Promise<IdbWebhookBody>;
125
+ };
126
+ /** Fetch the payload a verified delivery references. */
127
+ fetchPayload: (body: IdbWebhookBody) => Promise<IdbWebhookPayload<S>>;
128
+ /** Route each change in a payload to its handler. */
129
+ dispatch: (handlers: IdbWebhookHandlers<S>, payload: IdbWebhookPayload<S>) => Promise<void>;
130
+ /** The one-liner: verify → fetch payload → dispatch (Web `Request`). */
131
+ process: (handlers: IdbWebhookHandlers<S>, request: Request, opts?: IdbWebhookVerifyOpts) => Promise<void>;
132
+ /** `process` for a Node `IncomingMessage` (raw-body rules preserved). */
133
+ processNode: (handlers: IdbWebhookHandlers<S>, req: IdbWebhookNodeRequest, opts?: IdbWebhookNodeOpts) => Promise<void>;
134
+ }
135
+ export {};
136
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/webhooks/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,eAAe,EACf,aAAa,EACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAKrE,yCAAyC;AACzC,MAAM,MAAM,UAAU,GAAG,WAAW,CAAA;AACpC,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAA;AAC9C,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAA;AAC9C,iCAAiC;AACjC,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAA;AACpD,+EAA+E;AAC/E,MAAM,MAAM,cAAc,GAAG,WAAW,CAAA;AACxC,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAC5C,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAC5C,uDAAuD;AACvD,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAA;AAEtD,oCAAoC;AACpC,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAClE,mBAAmB,CAAC,CAAC,CAAC,CAAA;AAC1B,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAClE,mBAAmB,CAAC,CAAC,CAAC,CAAA;AAE1B,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACnE,cAAc,CAAC,CAAC,CAAC,CAAA;AAErB,4EAA4E;AAC5E,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACnE,eAAe,CAAC,CAAC,CAAC,CAAA;AAKtB,4EAA4E;AAC5E,KAAK,SAAS,CACZ,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC9B,MAAM,SAAS,gBAAgB,IAC7B,MAAM,SAAS,QAAQ,GACvB;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC9G,MAAM,SAAS,QAAQ,GACrB;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC1H;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpH;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,CAC1B,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,EACjD,MAAM,SAAS,gBAAgB,GAAG,gBAAgB,EAClD,CAAC,SAAS,SAAS,GAAG,mBAAmB,IACvC,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAC9B,MAAM,SAAS,gBAAgB,GAC7B,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GACxB,KAAK,GACP,KAAK,CAAA;AAKT,KAAK,mBAAmB,CACtB,CAAC,SAAS,SAAS,EACnB,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC9B,MAAM,SAAS,gBAAgB,IAC7B,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB,IAAI;KACzE,EAAE,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SAC3B,CAAC,IAAI,gBAAgB,GAAG,UAAU,CAAC,CAAC,EAAE,mBAAmB,CACxD,CAAC,EACD,EAAE,EACF,CAAC,SAAS,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,CAClD;KACF;CACF,GAAG;IACF,QAAQ,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAA;CACzE,CAAA;AAKD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CACnC;AAED,gEAAgE;AAChE,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CACtD,CAAA;AAED,uEAAuE;AACvE,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAC5C,QAAQ,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAC1C,CAAC,CAAC,CAAC,CAAA;AAEJ,yEAAyE;AACzE,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAC1C,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CACzD,CAAA;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,mBAAmB;IACpE,6EAA6E;IAC7E,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAA;IAC7B;;;OAGG;IACH,MAAM,EAAE;QACN,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;QACxE,CACE,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;SAAE,EACpE,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAAA;KAC3B,CAAA;IACD,wDAAwD;IACxD,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,qDAAqD;IACrD,QAAQ,EAAE,CACR,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC/B,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,wEAAwE;IACxE,OAAO,EAAE,CACP,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC/B,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,oBAAoB,KACxB,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,yEAAyE;IACzE,WAAW,EAAE,CACX,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC/B,GAAG,EAAE,qBAAqB,EAC1B,IAAI,CAAC,EAAE,kBAAkB,KACtB,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB"}
@@ -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/webhooks/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The `IdbWebhook*` boundary module — every rename from `@instantdb/webhooks`\n * lives here and nowhere else (wrap-and-map, dux-spec-workspace.md §5.1).\n *\n * Two kinds of types live side by side:\n *\n * - **aliases** for shapes with no entity content (`IdbWebhook`, the manager,\n * the op payloads, the unions): pure renames over the official types, so\n * upstream changes ride in for free and break loudly at the wrap points.\n * - **authored-fresh** for the handler surface (`IdbWebhookChange`,\n * `IdbWebhookHandlers`): a change's `before`/`after` is the same\n * `IdbEntity<'ns'>` a query and a tx speak — one entity type everywhere, by\n * construction (dux-spec-webhooks.md §2). `WebhookEntity` is dropped — it\n * resolves to `IdbEntity` already.\n *\n * Everything is registration-typed — no schema generic at any call site, with\n * the trailing escape-hatch param for multi-schema tools.\n */\nimport type {\n CreateWebhookParams,\n UpdateWebhookParams,\n WebhookAction,\n WebhookAttempt,\n WebhookBody,\n WebhookEventInfo,\n WebhookEventsPage,\n WebhookEventStatus,\n WebhookInfo,\n WebhookPayload,\n Webhooks,\n WebhooksManager,\n WebhookStatus,\n} from '@instantdb/webhooks'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbEntity, IdbNamespaceName } from '../schema/types.js'\n\n// ==========\n// aliases — official shapes, dux names\n\n/** A configured webhook subscription. */\nexport type IdbWebhook = WebhookInfo\n/** A single delivery event for a webhook. */\nexport type IdbWebhookEvent = WebhookEventInfo\n/** One HTTP delivery attempt of an event. */\nexport type IdbWebhookAttempt = WebhookAttempt\n/** A page of delivery events. */\nexport type IdbWebhookEventsPage = WebhookEventsPage\n/** The verified delivery pointer `verify` returns — `payloadUrl` + `token`. */\nexport type IdbWebhookBody = WebhookBody\n/** The write actions a webhook can deliver. */\nexport type IdbWebhookAction = WebhookAction\n/** Whether a webhook is currently delivering events. */\nexport type IdbWebhookStatus = WebhookStatus\n/** A delivery event's stage in the retry lifecycle. */\nexport type IdbWebhookEventStatus = WebhookEventStatus\n\n/** The `manager.create` payload. */\nexport type IdbWebhookCreate<S extends IdbSchema = IdbRegisteredSchema>\n = CreateWebhookParams<S>\n/** The `manager.update` payload — every field optional. */\nexport type IdbWebhookUpdate<S extends IdbSchema = IdbRegisteredSchema>\n = UpdateWebhookParams<S>\n\n/** The delivered batch of changes for one webhook event. */\nexport type IdbWebhookPayload<S extends IdbSchema = IdbRegisteredSchema>\n = WebhookPayload<S>\n\n/** Subscription CRUD + delivery-event inspection. Method names verbatim. */\nexport type IdbWebhookManager<S extends IdbSchema = IdbRegisteredSchema>\n = WebhooksManager<S>\n\n// ==========\n// the change — authored fresh over IdbEntity\n\n/** One change shaped per action: the `before`/`after` an action carries. */\ntype ChangeFor<\n S extends IdbSchema,\n NS extends IdbNamespaceName<S>,\n Action extends IdbWebhookAction,\n> = Action extends 'create'\n ? { namespace: NS, id: string, action: 'create', before: null, after: IdbEntity<NS, S>, idempotencyKey: string }\n : Action extends 'update'\n ? { namespace: NS, id: string, action: 'update', before: IdbEntity<NS, S>, after: IdbEntity<NS, S>, idempotencyKey: string }\n : { namespace: NS, id: string, action: 'delete', before: IdbEntity<NS, S>, after: null, idempotencyKey: string }\n\n/**\n * One entity change a webhook delivers — `namespace`, `action`, and the\n * `before`/`after` entities (`IdbEntity<'ns'>`, the same type queries and tx\n * speak). Narrow with the optional `NS`/`Action` params; left wide it's the\n * discriminated union over every namespace and action a `$default` handler\n * sees. (Replaces the official `WebhookPayloadRecord` + `WebhookPayloadRecordFor`\n * pair — one utility, optional narrowing, the `IdbEntity` pattern.)\n */\nexport type IdbWebhookChange<\n NS extends IdbNamespaceName<S> = IdbNamespaceName,\n Action extends IdbWebhookAction = IdbWebhookAction,\n S extends IdbSchema = IdbRegisteredSchema,\n> = NS extends IdbNamespaceName<S>\n ? Action extends IdbWebhookAction\n ? ChangeFor<S, NS, Action>\n : never\n : never\n\n// ==========\n// handlers — authored fresh so changes resolve to IdbWebhookChange\n\ntype IdbWebhookHandlerFn<\n S extends IdbSchema,\n NS extends IdbNamespaceName<S>,\n Action extends IdbWebhookAction,\n> = (change: IdbWebhookChange<NS, Action, S>) => unknown | Promise<unknown>\n\n/**\n * The handler map: `namespace.action`, a per-namespace `$default`, and a\n * top-level `$default`. Authored as a plain object literal — contextual typing\n * narrows each handler's `change` per namespace and action, so the official\n * `typedHandlers`/`combineHandlers` ceremony dissolves ([§4](./dux-spec-webhooks.md#4-authoring--definewebhookhandlers)).\n */\nexport type IdbWebhookHandlers<S extends IdbSchema = IdbRegisteredSchema> = {\n [NS in IdbNamespaceName<S>]?: {\n [A in IdbWebhookAction | '$default']?: IdbWebhookHandlerFn<\n S,\n NS,\n A extends IdbWebhookAction ? A : IdbWebhookAction\n >\n }\n} & {\n $default?: IdbWebhookHandlerFn<S, IdbNamespaceName<S>, IdbWebhookAction>\n}\n\n// ==========\n// init config + the handle\n\n/**\n * `init` config. Optional in full — handling needs none. `appId` +\n * `adminToken` unlock the `manager`; `apiURI` is for self-hosting.\n */\nexport interface IdbWebhookConfig {\n appId?: string | null | undefined\n adminToken?: string | null | undefined\n apiURI?: string | null | undefined\n}\n\n/** Tolerance/clock options shared by `verify` and `process`. */\nexport type IdbWebhookVerifyOpts = NonNullable<\n Parameters<Webhooks<IdbSchema>['validateRequest']>[1]\n>\n\n/** The Node `IncomingMessage`-shaped request `processNode` accepts. */\nexport type IdbWebhookNodeRequest = Parameters<\n Webhooks<IdbSchema>['processNodeRequest']\n>[1]\n\n/** `processNode` options — `verify` options plus a raw-body override. */\nexport type IdbWebhookNodeOpts = NonNullable<\n Parameters<Webhooks<IdbSchema>['processNodeRequest']>[2]\n>\n\n/**\n * The webhook handle `init` returns. The pipeline verbs are always present;\n * `manager` requires `appId` + `adminToken` and throws if used without them.\n */\nexport interface IdbWebhooks<S extends IdbSchema = IdbRegisteredSchema> {\n /** Subscription CRUD + event inspection. Requires `appId` + `adminToken`. */\n manager: IdbWebhookManager<S>\n /**\n * Cryptographically verify a delivery and return its `payloadUrl` + `token`.\n * Pass the `Request`, or the raw `{ signature, body }` for custom flows.\n */\n verify: {\n (request: Request, opts?: IdbWebhookVerifyOpts): Promise<IdbWebhookBody>\n (\n input: { signature: string, body: string | (() => Promise<string>) },\n opts?: IdbWebhookVerifyOpts,\n ): Promise<IdbWebhookBody>\n }\n /** Fetch the payload a verified delivery references. */\n fetchPayload: (body: IdbWebhookBody) => Promise<IdbWebhookPayload<S>>\n /** Route each change in a payload to its handler. */\n dispatch: (\n handlers: IdbWebhookHandlers<S>,\n payload: IdbWebhookPayload<S>,\n ) => Promise<void>\n /** The one-liner: verify → fetch payload → dispatch (Web `Request`). */\n process: (\n handlers: IdbWebhookHandlers<S>,\n request: Request,\n opts?: IdbWebhookVerifyOpts,\n ) => Promise<void>\n /** `process` for a Node `IncomingMessage` (raw-body rules preserved). */\n processNode: (\n handlers: IdbWebhookHandlers<S>,\n req: IdbWebhookNodeRequest,\n opts?: IdbWebhookNodeOpts,\n ) => Promise<void>\n}\n"]}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `@mszr/idb-dux/admin` — the full server surface.
3
+ *
4
+ * `init` owns `@instantdb/admin` (optional peer); shaped `query` +
5
+ * `subscribeQuery`, typed tx and debug, `asUser`, the pass-throughs, and
6
+ * `adminDb.webhooks`. Framework-agnostic, token-scoped, never bundled
7
+ * client-side.
8
+ *
9
+ * Spec: `../../../docs/dux-spec-admin.md`.
10
+ */
11
+ export { IdbApiError, IdbError } from '../errors.js';
12
+ export type { IdbIssue } from '../errors.js';
13
+ export type { IdbRoomPresence } from '../schema/index.js';
14
+ export { id, lookup } from '../tx/index.js';
15
+ export { IdbAdminClient, init } from './init.js';
16
+ export type { IdbAdminCheckResult, IdbAdminConfig, IdbAdminDebugQueryOpts, IdbAdminDebugTransactOpts, IdbAdminDebugTransactResult, IdbAdminImpersonation, IdbAdminTransactResult, IdbAuthUser, IdbQuerySessionInfo, IdbQuerySubscription, IdbQuerySubscriptionCallback, IdbQuerySubscriptionPayload, IdbReadableStream, IdbStorageDeleteResult, IdbStorageFileOpts, IdbStorageUploadResult, IdbStreamReadOpts, IdbStreamWriteOpts, IdbSubscriptionReadyState, IdbWritableStream, } from './types.js';
17
+ export { createInstantRouteHandler, type InstantRouteHandlerBody, type InstantRouteHandlerPayloadByType, type InstantRouteHandlerType, } from '@instantdb/admin';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACpD,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAInB,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EACrC,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `@mszr/idb-dux/admin` — the full server surface.
3
+ *
4
+ * `init` owns `@instantdb/admin` (optional peer); shaped `query` +
5
+ * `subscribeQuery`, typed tx and debug, `asUser`, the pass-throughs, and
6
+ * `adminDb.webhooks`. Framework-agnostic, token-scoped, never bundled
7
+ * client-side.
8
+ *
9
+ * Spec: `../../../docs/dux-spec-admin.md`.
10
+ */
11
+ // The branded error family — `e instanceof IdbError` (the admin fetch path
12
+ // throws `IdbApiError`, which extends `IdbError`).
13
+ export { IdbApiError, IdbError } from '../errors.js';
14
+ // Re-exports — official names kept at the boundary.
15
+ export { id, lookup } from '../tx/index.js';
16
+ export { IdbAdminClient, init } from './init.js';
17
+ // The official first-party route handler, re-exported for apps that want the
18
+ // official cookie shape ([dux-spec-nuxt.md §3]) — and the only path by which
19
+ // `/nuxt` reaches it (the official package enters via this layer).
20
+ export { createInstantRouteHandler, } from '@instantdb/admin';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,2EAA2E;AAC3E,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAIpD,oDAAoD;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAuBhD,6EAA6E;AAC7E,6EAA6E;AAC7E,mEAAmE;AACnE,OAAO,EACL,yBAAyB,GAI1B,MAAM,kBAAkB,CAAA","sourcesContent":["/**\n * `@mszr/idb-dux/admin` — the full server surface.\n *\n * `init` owns `@instantdb/admin` (optional peer); shaped `query` +\n * `subscribeQuery`, typed tx and debug, `asUser`, the pass-throughs, and\n * `adminDb.webhooks`. Framework-agnostic, token-scoped, never bundled\n * client-side.\n *\n * Spec: `../../../docs/dux-spec-admin.md`.\n */\n\n// The branded error family — `e instanceof IdbError` (the admin fetch path\n// throws `IdbApiError`, which extends `IdbError`).\nexport { IdbApiError, IdbError } from '../errors.js'\nexport type { IdbIssue } from '../errors.js'\n// Schema-rooted room type extractor — `rooms.getPresence` reads against it.\nexport type { IdbRoomPresence } from '../schema/index.js'\n// Re-exports — official names kept at the boundary.\nexport { id, lookup } from '../tx/index.js'\nexport { IdbAdminClient, init } from './init.js'\nexport type {\n IdbAdminCheckResult,\n IdbAdminConfig,\n IdbAdminDebugQueryOpts,\n IdbAdminDebugTransactOpts,\n IdbAdminDebugTransactResult,\n IdbAdminImpersonation,\n IdbAdminTransactResult,\n IdbAuthUser,\n IdbQuerySessionInfo,\n IdbQuerySubscription,\n IdbQuerySubscriptionCallback,\n IdbQuerySubscriptionPayload,\n IdbReadableStream,\n IdbStorageDeleteResult,\n IdbStorageFileOpts,\n IdbStorageUploadResult,\n IdbStreamReadOpts,\n IdbStreamWriteOpts,\n IdbSubscriptionReadyState,\n IdbWritableStream,\n} from './types.js'\n// The official first-party route handler, re-exported for apps that want the\n// official cookie shape ([dux-spec-nuxt.md §3]) — and the only path by which\n// `/nuxt` reaches it (the official package enters via this layer).\nexport {\n createInstantRouteHandler,\n type InstantRouteHandlerBody,\n type InstantRouteHandlerPayloadByType,\n type InstantRouteHandlerType,\n} from '@instantdb/admin'\n"]}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * `/admin` setup and the composed admin db. dux's `init` owns
3
+ * `@instantdb/admin` as an optional peer — apps never construct an official
4
+ * admin db to hand in ([dux-spec-admin.md §2]). `IdbAdminClient` wraps the
5
+ * official instance: the data plane is shaped, tx/debug carry the schema-typed
6
+ * machinery, and every pass-through keeps its official verb.
7
+ *
8
+ * `asUser` rebuilds the same wrapper over the scoped official instance, which
9
+ * is what keeps every treatment intact on the permission-scoped db.
10
+ */
11
+ import type { InstantAdminDatabase } from '@instantdb/admin';
12
+ import type { IdbQueryData, IdbQueryOptions, IdbValidQuery } from '../query/index.js';
13
+ import type { IdbSchema } from '../schema/defineSchema.js';
14
+ import type { IdbRegisteredSchema } from '../schema/register.js';
15
+ import type { IdbTx, IdbTxChunkInput } from '../tx/index.js';
16
+ import type { IdbWebhooks } from '../webhooks/index.js';
17
+ import type { IdbAdminCheckResult, IdbAdminConfig, IdbAdminDebugQueryOpts, IdbAdminDebugTransactOpts, IdbAdminDebugTransactResult, IdbAdminImpersonation, IdbAdminTransactResult, IdbQuerySubscription, IdbQuerySubscriptionCallback } from './types.js';
18
+ type OfficialDb<S extends IdbSchema> = InstantAdminDatabase<S, false>;
19
+ /** The full server surface — the dux data plane over `@instantdb/admin`. */
20
+ export declare class IdbAdminClient<S extends IdbSchema = IdbRegisteredSchema> {
21
+ #private;
22
+ /** The schema-typed tx chain — shared machinery with `/vue` ([root §5]). */
23
+ readonly tx: IdbTx<S>;
24
+ constructor(official: OfficialDb<S>, schema: IdbSchema | undefined);
25
+ /**
26
+ * Read once. Destructure top-level scopes directly — full shaping
27
+ * (`$only`/`$at`/`$as`/`$m`, array normalization, singularization) per the
28
+ * root spec. `opts` carries schema-typed `ruleParams`.
29
+ */
30
+ query: <const Q extends IdbValidQuery<Q, S>>(query: Q, opts?: IdbQueryOptions<S>) => Promise<IdbQueryData<Q, S>>;
31
+ /**
32
+ * Live-subscribe with the same per-emission shaping. Pass a callback, or
33
+ * iterate the handle with `for await`; `close()` stops it.
34
+ */
35
+ subscribeQuery: <const Q extends IdbValidQuery<Q, S>>(query: Q, cb?: IdbQuerySubscriptionCallback<Q, S>, opts?: IdbQueryOptions<S>) => IdbQuerySubscription<Q, S>;
36
+ /** Write data — the typed tx chain, schema-typed `ruleParams`, dot-path `.link`. */
37
+ transact: (chunks: IdbTxChunkInput<S> | IdbTxChunkInput<S>[]) => Promise<IdbAdminTransactResult>;
38
+ /**
39
+ * Like `query`, but returns permission-check debug info alongside the shaped
40
+ * result. Requires a user/guest context — call it on an `asUser` db.
41
+ */
42
+ debugQuery: <const Q extends IdbValidQuery<Q, S>>(query: Q, opts?: IdbAdminDebugQueryOpts<S>) => Promise<{
43
+ result: IdbQueryData<Q, S>;
44
+ checkResults: IdbAdminCheckResult[];
45
+ }>;
46
+ /** Like `transact`, but writes nothing — returns permission-check debug info. */
47
+ debugTransact: (chunks: IdbTxChunkInput<S> | IdbTxChunkInput<S>[], opts?: IdbAdminDebugTransactOpts) => Promise<IdbAdminDebugTransactResult>;
48
+ /** Scope every read/write to a user, guest, or token — same dux surface, permission-scoped. */
49
+ asUser: (opts: IdbAdminImpersonation) => IdbAdminClient<S>;
50
+ get auth(): OfficialDb<S>['auth'];
51
+ get storage(): OfficialDb<S>['storage'];
52
+ get streams(): OfficialDb<S>['streams'];
53
+ get rooms(): OfficialDb<S>['rooms'];
54
+ /** Webhook handling + management, admin-token wired ([§5]). */
55
+ get webhooks(): IdbWebhooks<S>;
56
+ }
57
+ /**
58
+ * Create the admin db. `appId` + `adminToken` + `schema` is the usual setup;
59
+ * the schema unlocks shaping and typed `ruleParams`.
60
+ *
61
+ * @example
62
+ * const adminDb = init({ appId, adminToken, schema })
63
+ * const { workspaces } = await adminDb.query(q({ workspaces: {} }))
64
+ */
65
+ export declare function init<S extends IdbSchema = IdbRegisteredSchema>(config: IdbAdminConfig<S>): IdbAdminClient<S>;
66
+ export {};
67
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/admin/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { init as adminInit } from '@instantdb/admin';
2
+ import { shapeResult, shapingSchema, toWireQuery } from '../query/index.js';
3
+ import { typedTx } from '../tx/index.js';
4
+ import { runQuery, runSubscribeQuery } from './query.js';
5
+ import { adminWebhooks } from './webhooks.js';
6
+ /** The full server surface — the dux data plane over `@instantdb/admin`. */
7
+ export class IdbAdminClient {
8
+ /** The schema-typed tx chain — shared machinery with `/vue` ([root §5]). */
9
+ tx = typedTx();
10
+ #official;
11
+ #schema;
12
+ #webhooks;
13
+ constructor(official, schema) {
14
+ this.#official = official;
15
+ this.#schema = shapingSchema(schema);
16
+ }
17
+ // ----- the data plane -----
18
+ /**
19
+ * Read once. Destructure top-level scopes directly — full shaping
20
+ * (`$only`/`$at`/`$as`/`$m`, array normalization, singularization) per the
21
+ * root spec. `opts` carries schema-typed `ruleParams`.
22
+ */
23
+ query = (query, opts) => runQuery(this.#official, this.#schema, query, opts);
24
+ /**
25
+ * Live-subscribe with the same per-emission shaping. Pass a callback, or
26
+ * iterate the handle with `for await`; `close()` stops it.
27
+ */
28
+ subscribeQuery = (query, cb, opts) => runSubscribeQuery(this.#official, this.#schema, query, cb, opts);
29
+ // ----- typed tx + debug -----
30
+ /** Write data — the typed tx chain, schema-typed `ruleParams`, dot-path `.link`. */
31
+ transact = (chunks) => this.#official.transact(chunks);
32
+ /**
33
+ * Like `query`, but returns permission-check debug info alongside the shaped
34
+ * result. Requires a user/guest context — call it on an `asUser` db.
35
+ */
36
+ debugQuery = async (query, opts) => {
37
+ const { result, checkResults } = await this.#official.debugQuery(toWireQuery(query), opts);
38
+ return {
39
+ result: shapeResult(result, query, this.#schema),
40
+ checkResults,
41
+ };
42
+ };
43
+ /** Like `transact`, but writes nothing — returns permission-check debug info. */
44
+ debugTransact = (chunks, opts) => this.#official.debugTransact(chunks, opts);
45
+ // ----- asUser + pass-throughs -----
46
+ /** Scope every read/write to a user, guest, or token — same dux surface, permission-scoped. */
47
+ asUser = (opts) => new IdbAdminClient(this.#official.asUser(opts), this.#schema);
48
+ get auth() {
49
+ return this.#official.auth;
50
+ }
51
+ get storage() {
52
+ return this.#official.storage;
53
+ }
54
+ get streams() {
55
+ return this.#official.streams;
56
+ }
57
+ get rooms() {
58
+ return this.#official.rooms;
59
+ }
60
+ /** Webhook handling + management, admin-token wired ([§5]). */
61
+ get webhooks() {
62
+ return (this.#webhooks ??= adminWebhooks({
63
+ appId: this.#official.config.appId,
64
+ adminToken: this.#official.config.adminToken,
65
+ apiURI: this.#official.config.apiURI,
66
+ }));
67
+ }
68
+ }
69
+ /**
70
+ * Create the admin db. `appId` + `adminToken` + `schema` is the usual setup;
71
+ * the schema unlocks shaping and typed `ruleParams`.
72
+ *
73
+ * @example
74
+ * const adminDb = init({ appId, adminToken, schema })
75
+ * const { workspaces } = await adminDb.query(q({ workspaces: {} }))
76
+ */
77
+ export function init(config) {
78
+ const official = adminInit(config);
79
+ return new IdbAdminClient(official, config.schema);
80
+ }
81
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/admin/init.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `/admin` setup and the composed admin db. dux's `init` owns\n * `@instantdb/admin` as an optional peer — apps never construct an official\n * admin db to hand in ([dux-spec-admin.md §2]). `IdbAdminClient` wraps the\n * official instance: the data plane is shaped, tx/debug carry the schema-typed\n * machinery, and every pass-through keeps its official verb.\n *\n * `asUser` rebuilds the same wrapper over the scoped official instance, which\n * is what keeps every treatment intact on the permission-scoped db.\n */\nimport type { InstantAdminDatabase } from '@instantdb/admin'\nimport type {\n IdbQueryData,\n IdbQueryOptions,\n IdbValidQuery,\n} from '../query/index.js'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type { IdbRegisteredSchema } from '../schema/register.js'\nimport type { IdbTx, IdbTxChunkInput } from '../tx/index.js'\nimport type { IdbWebhooks } from '../webhooks/index.js'\nimport type {\n IdbAdminCheckResult,\n IdbAdminConfig,\n IdbAdminDebugQueryOpts,\n IdbAdminDebugTransactOpts,\n IdbAdminDebugTransactResult,\n IdbAdminImpersonation,\n IdbAdminTransactResult,\n IdbQuerySubscription,\n IdbQuerySubscriptionCallback,\n} from './types.js'\nimport { init as adminInit } from '@instantdb/admin'\nimport { shapeResult, shapingSchema, toWireQuery } from '../query/index.js'\nimport { typedTx } from '../tx/index.js'\nimport { runQuery, runSubscribeQuery } from './query.js'\nimport { adminWebhooks } from './webhooks.js'\n\ntype OfficialDb<S extends IdbSchema> = InstantAdminDatabase<S, false>\n\n/** The full server surface — the dux data plane over `@instantdb/admin`. */\nexport class IdbAdminClient<S extends IdbSchema = IdbRegisteredSchema> {\n /** The schema-typed tx chain — shared machinery with `/vue` ([root §5]). */\n public readonly tx: IdbTx<S> = typedTx<S>()\n\n readonly #official: OfficialDb<S>\n readonly #schema: IdbSchema\n #webhooks: IdbWebhooks<S> | undefined\n\n constructor(official: OfficialDb<S>, schema: IdbSchema | undefined) {\n this.#official = official\n this.#schema = shapingSchema(schema)\n }\n\n // ----- the data plane -----\n\n /**\n * Read once. Destructure top-level scopes directly — full shaping\n * (`$only`/`$at`/`$as`/`$m`, array normalization, singularization) per the\n * root spec. `opts` carries schema-typed `ruleParams`.\n */\n query = <const Q extends IdbValidQuery<Q, S>>(\n query: Q,\n opts?: IdbQueryOptions<S>,\n ): Promise<IdbQueryData<Q, S>> =>\n runQuery(this.#official, this.#schema, query as Record<string, any>, opts) as Promise<\n IdbQueryData<Q, S>\n >\n\n /**\n * Live-subscribe with the same per-emission shaping. Pass a callback, or\n * iterate the handle with `for await`; `close()` stops it.\n */\n subscribeQuery = <const Q extends IdbValidQuery<Q, S>>(\n query: Q,\n cb?: IdbQuerySubscriptionCallback<Q, S>,\n opts?: IdbQueryOptions<S>,\n ): IdbQuerySubscription<Q, S> =>\n runSubscribeQuery<Q, S>(this.#official, this.#schema, query as Record<string, any>, cb, opts)\n\n // ----- typed tx + debug -----\n\n /** Write data — the typed tx chain, schema-typed `ruleParams`, dot-path `.link`. */\n transact = (chunks: IdbTxChunkInput<S> | IdbTxChunkInput<S>[]): Promise<IdbAdminTransactResult> =>\n this.#official.transact(chunks as any)\n\n /**\n * Like `query`, but returns permission-check debug info alongside the shaped\n * result. Requires a user/guest context — call it on an `asUser` db.\n */\n debugQuery = async <const Q extends IdbValidQuery<Q, S>>(\n query: Q,\n opts?: IdbAdminDebugQueryOpts<S>,\n ): Promise<{ result: IdbQueryData<Q, S>, checkResults: IdbAdminCheckResult[] }> => {\n const { result, checkResults } = await this.#official.debugQuery(\n toWireQuery(query as Record<string, any>) as any,\n opts as any,\n )\n return {\n result: shapeResult(result, query as Record<string, any>, this.#schema) as IdbQueryData<Q, S>,\n checkResults,\n }\n }\n\n /** Like `transact`, but writes nothing — returns permission-check debug info. */\n debugTransact = (\n chunks: IdbTxChunkInput<S> | IdbTxChunkInput<S>[],\n opts?: IdbAdminDebugTransactOpts,\n ): Promise<IdbAdminDebugTransactResult> =>\n this.#official.debugTransact(chunks as any, opts as any)\n\n // ----- asUser + pass-throughs -----\n\n /** Scope every read/write to a user, guest, or token — same dux surface, permission-scoped. */\n asUser = (opts: IdbAdminImpersonation): IdbAdminClient<S> =>\n new IdbAdminClient<S>(this.#official.asUser(opts) as OfficialDb<S>, this.#schema)\n\n get auth(): OfficialDb<S>['auth'] {\n return this.#official.auth\n }\n\n get storage(): OfficialDb<S>['storage'] {\n return this.#official.storage\n }\n\n get streams(): OfficialDb<S>['streams'] {\n return this.#official.streams\n }\n\n get rooms(): OfficialDb<S>['rooms'] {\n return this.#official.rooms\n }\n\n /** Webhook handling + management, admin-token wired ([§5]). */\n get webhooks(): IdbWebhooks<S> {\n return (this.#webhooks ??= adminWebhooks<S>({\n appId: this.#official.config.appId,\n adminToken: this.#official.config.adminToken,\n apiURI: this.#official.config.apiURI,\n }))\n }\n}\n\n/**\n * Create the admin db. `appId` + `adminToken` + `schema` is the usual setup;\n * the schema unlocks shaping and typed `ruleParams`.\n *\n * @example\n * const adminDb = init({ appId, adminToken, schema })\n * const { workspaces } = await adminDb.query(q({ workspaces: {} }))\n */\nexport function init<S extends IdbSchema = IdbRegisteredSchema>(\n config: IdbAdminConfig<S>,\n): IdbAdminClient<S> {\n const official = adminInit<S, false>(config as any) as OfficialDb<S>\n return new IdbAdminClient<S>(official, config.schema)\n}\n"]}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The admin data plane — `query` and `subscribeQuery` shaped through the same
3
+ * `shapeResult` the client uses ([dux-spec-admin.md §3]). The admin surface
4
+ * contains zero shaping logic of its own: it wires the query out (`toWireQuery`)
5
+ * and reshapes what comes back (`shapeResult`), so a one-shot and a
6
+ * subscription of the same query deliver the same shape by construction.
7
+ */
8
+ import type { InstantAdminDatabase } from '@instantdb/admin';
9
+ import type { IdbSchema } from '../schema/defineSchema.js';
10
+ import type { IdbQuerySubscription, IdbQuerySubscriptionCallback } from './types.js';
11
+ type AnyRecord = Record<string, any>;
12
+ type OfficialDb = InstantAdminDatabase<any, false>;
13
+ /** Run a one-shot read and shape the result. */
14
+ export declare function runQuery(official: OfficialDb, schema: IdbSchema, query: AnyRecord, opts: AnyRecord | undefined): Promise<AnyRecord>;
15
+ /**
16
+ * Subscribe, shaping each emission. The official callback and async-iterator
17
+ * contracts are preserved; only `data` is reshaped on the way through.
18
+ */
19
+ export declare function runSubscribeQuery<Q, S extends IdbSchema>(official: OfficialDb, schema: IdbSchema, query: AnyRecord, cb: IdbQuerySubscriptionCallback<Q, S> | undefined, opts: AnyRecord | undefined): IdbQuerySubscription<Q, S>;
20
+ export {};
21
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/admin/query.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAE7B,MAAM,YAAY,CAAA;AAGnB,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACpC,KAAK,UAAU,GAAG,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAalD,gDAAgD;AAChD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,GAAG,SAAS,GAC1B,OAAO,CAAC,SAAS,CAAC,CAGpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EACtD,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,EAClD,IAAI,EAAE,SAAS,GAAG,SAAS,GAC1B,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CA2B5B"}
@@ -0,0 +1,42 @@
1
+ import { shapeResult, toWireQuery } from '../query/index.js';
2
+ /** Shape one subscription emission's `data`, leaving the error arm untouched. */
3
+ function shapePayload(payload, query, schema) {
4
+ if (payload.type !== 'ok')
5
+ return payload;
6
+ return { ...payload, data: shapeResult(payload.data, query, schema) };
7
+ }
8
+ /** Run a one-shot read and shape the result. */
9
+ export async function runQuery(official, schema, query, opts) {
10
+ const data = await official.query(toWireQuery(query), opts);
11
+ return shapeResult(data, query, schema);
12
+ }
13
+ /**
14
+ * Subscribe, shaping each emission. The official callback and async-iterator
15
+ * contracts are preserved; only `data` is reshaped on the way through.
16
+ */
17
+ export function runSubscribeQuery(official, schema, query, cb, opts) {
18
+ const wire = toWireQuery(query);
19
+ const wrappedCb = cb
20
+ ? (payload) => cb(shapePayload(payload, query, schema))
21
+ : undefined;
22
+ const sub = official.subscribeQuery(wire, wrappedCb, opts);
23
+ async function* shaped() {
24
+ for await (const payload of sub)
25
+ yield shapePayload(payload, query, schema);
26
+ }
27
+ return {
28
+ close: () => sub.close(),
29
+ [Symbol.iterator]: () => sub[Symbol.iterator](),
30
+ [Symbol.asyncIterator]: () => shaped(),
31
+ get readyState() {
32
+ return sub.readyState;
33
+ },
34
+ get isClosed() {
35
+ return sub.isClosed;
36
+ },
37
+ get sessionInfo() {
38
+ return sub.sessionInfo;
39
+ },
40
+ };
41
+ }
42
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/admin/query.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAK5D,iFAAiF;AACjF,SAAS,YAAY,CACnB,OAAkB,EAClB,KAAgB,EAChB,MAAiB;IAEjB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;QACvB,OAAO,OAAO,CAAA;IAChB,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAA;AACvE,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAoB,EACpB,MAAiB,EACjB,KAAgB,EAChB,IAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAQ,EAAE,IAAW,CAAC,CAAA;IACzE,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAoB,EACpB,MAAiB,EACjB,KAAgB,EAChB,EAAkD,EAClD,IAA2B;IAE3B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,EAAE;QAClB,CAAC,CAAC,CAAC,OAAkB,EAAE,EAAE,CACrB,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAsC,CAAC;QACjF,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAW,EAAE,SAAgB,EAAE,IAAW,CAAC,CAAA;IAE/E,KAAK,SAAS,CAAC,CAAC,MAAM;QACpB,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,GAAG;YAC7B,MAAM,YAAY,CAAC,OAAoB,EAAE,KAAK,EAAE,MAAM,CAAsC,CAAA;IAChG,CAAC;IAED,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE;QACxB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QAC/C,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;QACtC,IAAI,UAAU;YACZ,OAAO,GAAG,CAAC,UAAU,CAAA;QACvB,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,GAAG,CAAC,QAAQ,CAAA;QACrB,CAAC;QACD,IAAI,WAAW;YACb,OAAO,GAAG,CAAC,WAAW,CAAA;QACxB,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["/**\n * The admin data plane — `query` and `subscribeQuery` shaped through the same\n * `shapeResult` the client uses ([dux-spec-admin.md §3]). The admin surface\n * contains zero shaping logic of its own: it wires the query out (`toWireQuery`)\n * and reshapes what comes back (`shapeResult`), so a one-shot and a\n * subscription of the same query deliver the same shape by construction.\n */\nimport type { InstantAdminDatabase } from '@instantdb/admin'\nimport type { IdbSchema } from '../schema/defineSchema.js'\nimport type {\n IdbQuerySubscription,\n IdbQuerySubscriptionCallback,\n IdbQuerySubscriptionPayload,\n} from './types.js'\nimport { shapeResult, toWireQuery } from '../query/index.js'\n\ntype AnyRecord = Record<string, any>\ntype OfficialDb = InstantAdminDatabase<any, false>\n\n/** Shape one subscription emission's `data`, leaving the error arm untouched. */\nfunction shapePayload(\n payload: AnyRecord,\n query: AnyRecord,\n schema: IdbSchema,\n): AnyRecord {\n if (payload.type !== 'ok')\n return payload\n return { ...payload, data: shapeResult(payload.data, query, schema) }\n}\n\n/** Run a one-shot read and shape the result. */\nexport async function runQuery(\n official: OfficialDb,\n schema: IdbSchema,\n query: AnyRecord,\n opts: AnyRecord | undefined,\n): Promise<AnyRecord> {\n const data = await official.query(toWireQuery(query) as any, opts as any)\n return shapeResult(data, query, schema)\n}\n\n/**\n * Subscribe, shaping each emission. The official callback and async-iterator\n * contracts are preserved; only `data` is reshaped on the way through.\n */\nexport function runSubscribeQuery<Q, S extends IdbSchema>(\n official: OfficialDb,\n schema: IdbSchema,\n query: AnyRecord,\n cb: IdbQuerySubscriptionCallback<Q, S> | undefined,\n opts: AnyRecord | undefined,\n): IdbQuerySubscription<Q, S> {\n const wire = toWireQuery(query)\n const wrappedCb = cb\n ? (payload: AnyRecord) =>\n cb(shapePayload(payload, query, schema) as IdbQuerySubscriptionPayload<Q, S>)\n : undefined\n const sub = official.subscribeQuery(wire as any, wrappedCb as any, opts as any)\n\n async function* shaped(): AsyncIterableIterator<IdbQuerySubscriptionPayload<Q, S>> {\n for await (const payload of sub)\n yield shapePayload(payload as AnyRecord, query, schema) as IdbQuerySubscriptionPayload<Q, S>\n }\n\n return {\n close: () => sub.close(),\n [Symbol.iterator]: () => sub[Symbol.iterator](),\n [Symbol.asyncIterator]: () => shaped(),\n get readyState() {\n return sub.readyState\n },\n get isClosed() {\n return sub.isClosed\n },\n get sessionInfo() {\n return sub.sessionInfo\n },\n }\n}\n"]}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * The `/admin` boundary module — every rename from `@instantdb/admin` lives
3
+ * here and nowhere else (wrap-and-map, dux-spec-workspace.md §5.1). Two kinds
4
+ * of type live side by side:
5
+ *
6
+ * - **aliases** for shapes dux keeps verbatim (`IdbAuthUser`, the storage and
7
+ * stream option/result types, the debug check result): pure renames over the
8
+ * official types, so upstream changes ride in for free and break loudly at
9
+ * the wrap points.
10
+ * - **authored-fresh** for the subscription surface (`IdbQuerySubscription` and
11
+ * its payload/callback): a subscription emits the *shaped* data plane, the
12
+ * same `IdbQueryData<Q>` `query` returns — so its payload is dux-typed, not a
13
+ * pass-through of the official `InstaQLResponse` shape.
14
+ *
15
+ * Everything is registration-typed — no schema generic at any call site, with
16
+ * the trailing escape-hatch param for multi-schema tools.
17
+ */
18
+ import type { CreateReadStreamOpts, CreateWriteStreamOpts, DebugCheckResult, DeleteFileResponse, FileOpts, ImpersonationOpts, InstantAdminDatabase, InstantAPIError, InstantConfig, SubscriptionReadyState, UploadFileResponse, User } from '@instantdb/admin';
19
+ import type { IdbQueryData, IdbQueryPageInfo } from '../query/index.js';
20
+ import type { IdbSchema } from '../schema/defineSchema.js';
21
+ import type { IdbRegisteredSchema } from '../schema/register.js';
22
+ /**
23
+ * `init` config — everything the official admin SDK supports, minus
24
+ * `useDateObjects` (dux types `i.date()` fields as the wire format on every
25
+ * surface) and with `schema` typed as your registered `S`. The schema unlocks
26
+ * shaping and typed `ruleParams`; `apiURI` is for self-hosting.
27
+ */
28
+ export type IdbAdminConfig<S extends IdbSchema = IdbRegisteredSchema> = Omit<InstantConfig<S, false>, 'useDateObjects' | 'schema'> & {
29
+ schema?: S;
30
+ };
31
+ /** The authenticated user (official `User`). */
32
+ export type IdbAuthUser = User;
33
+ /** The scope `asUser` accepts — a user email, an auth token, or a guest. */
34
+ export type IdbAdminImpersonation = ImpersonationOpts;
35
+ /** Per-file upload metadata (official `FileOpts`). */
36
+ export type IdbStorageFileOpts = FileOpts;
37
+ /** The result of a storage upload. */
38
+ export type IdbStorageUploadResult = UploadFileResponse;
39
+ /** The result of a storage delete. */
40
+ export type IdbStorageDeleteResult = DeleteFileResponse;
41
+ /** Options for opening a read stream. */
42
+ export type IdbStreamReadOpts = CreateReadStreamOpts;
43
+ /** Options for opening a write stream. */
44
+ export type IdbStreamWriteOpts = CreateWriteStreamOpts;
45
+ type AdminStreams = InstantAdminDatabase<IdbSchema, false>['streams'];
46
+ /** A live readable stream of string chunks. */
47
+ export type IdbReadableStream = ReturnType<AdminStreams['createReadStream']>;
48
+ /** A live writable stream of string chunks. */
49
+ export type IdbWritableStream = ReturnType<AdminStreams['createWriteStream']>;
50
+ /** One entity's permission-check result from `debugQuery` (official `DebugCheckResult`). */
51
+ export type IdbAdminCheckResult = DebugCheckResult;
52
+ /** The summary `debugTransact` returns — tx id + an all-checks-ok flag. */
53
+ export type IdbAdminDebugTransactResult = Awaited<ReturnType<InstantAdminDatabase<IdbSchema, false>['debugTransact']>>;
54
+ /** The acknowledgement a write returns. */
55
+ export type IdbAdminTransactResult = Awaited<ReturnType<InstantAdminDatabase<IdbSchema, false>['transact']>>;
56
+ /** Whether a subscription's connection is open, connecting, or closed. */
57
+ export type IdbSubscriptionReadyState = SubscriptionReadyState;
58
+ /**
59
+ * Debug info about a subscription's session. Mirrors the official
60
+ * `SubscribeQuerySessionInfo` shape, authored fresh because that type isn't
61
+ * separately exported (the surrounding payload generic can't be instantiated
62
+ * without a concrete query to satisfy its `ValidQuery` constraint).
63
+ */
64
+ export interface IdbQuerySessionInfo {
65
+ machineId: string;
66
+ sessionId: string;
67
+ }
68
+ /**
69
+ * One emission from `subscribeQuery` — `data` is the shaped data plane
70
+ * (`IdbQueryData<Q>`, identical to `query`'s return), so a subscription and a
71
+ * one-shot of the same query deliver the same shape.
72
+ */
73
+ export type IdbQuerySubscriptionPayload<Q, S extends IdbSchema = IdbRegisteredSchema> = {
74
+ type: 'ok';
75
+ data: IdbQueryData<Q, S>;
76
+ pageInfo: IdbQueryPageInfo<Q> | undefined;
77
+ sessionInfo: IdbQuerySessionInfo | null;
78
+ } | {
79
+ type: 'error';
80
+ error: InstantAPIError;
81
+ readyState: IdbSubscriptionReadyState;
82
+ isClosed: boolean;
83
+ sessionInfo: IdbQuerySessionInfo | null;
84
+ };
85
+ /** The callback form of `subscribeQuery`. */
86
+ export type IdbQuerySubscriptionCallback<Q, S extends IdbSchema = IdbRegisteredSchema> = (payload: IdbQuerySubscriptionPayload<Q, S>) => void;
87
+ /**
88
+ * A live subscription handle (official `SubscribeQueryResponse`, payloads
89
+ * dux-shaped). Iterate it with `for await`, or pass a callback to
90
+ * `subscribeQuery`; `close()` stops it.
91
+ */
92
+ export interface IdbQuerySubscription<Q, S extends IdbSchema = IdbRegisteredSchema> {
93
+ /** Stop the subscription and close the connection. */
94
+ close: () => void;
95
+ /** Guards against synchronous iteration. */
96
+ [Symbol.iterator]: () => never;
97
+ /** Async iterator of shaped query payloads. */
98
+ [Symbol.asyncIterator]: () => AsyncIterableIterator<IdbQuerySubscriptionPayload<Q, S>>;
99
+ /** Ready state of the connection. */
100
+ readonly readyState: IdbSubscriptionReadyState;
101
+ /** `true` once closed and no more payloads will arrive. */
102
+ readonly isClosed: boolean;
103
+ /** Session debug info; `null` while the session initializes. */
104
+ readonly sessionInfo: IdbQuerySessionInfo | null;
105
+ }
106
+ /**
107
+ * `debugQuery` options — typed `ruleParams` plus the rules/ip/origin overrides
108
+ * the permission inspector accepts.
109
+ */
110
+ export interface IdbAdminDebugQueryOpts<S extends IdbSchema = IdbRegisteredSchema> {
111
+ ruleParams?: import('../query/index.js').IdbSchemaRuleParams<S>;
112
+ rules?: unknown;
113
+ ip?: string | null | undefined;
114
+ origin?: string | null | undefined;
115
+ cardinalityInference?: boolean;
116
+ }
117
+ /** `debugTransact` options — rules/ip/origin overrides for the inspector. */
118
+ export interface IdbAdminDebugTransactOpts {
119
+ rules?: unknown;
120
+ ip?: string | null | undefined;
121
+ origin?: string | null | undefined;
122
+ }
123
+ export {};
124
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/admin/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map