@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,211 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InstantDuxRoom = exports.rooms = exports.defaultActivityStopTimeout = void 0;
4
+ exports.useTopicEffect = useTopicEffect;
5
+ exports.usePublishTopic = usePublishTopic;
6
+ exports.usePresence = usePresence;
7
+ exports.useSyncPresence = useSyncPresence;
8
+ exports.useTypingIndicator = useTypingIndicator;
9
+ const vue_1 = require("vue");
10
+ const utils_js_1 = require("./utils.js");
11
+ exports.defaultActivityStopTimeout = 1_000;
12
+ // ------
13
+ // Topics
14
+ /**
15
+ * Listen for broadcasted events given a room and topic.
16
+ *
17
+ * @see https://instantdb.com/docs/presence-and-topics
18
+ */
19
+ function useTopicEffect(room, topic, onEvent) {
20
+ (0, vue_1.watchEffect)((onCleanup) => {
21
+ // DUX-DELTA(ssr): no topic subscription on the server.
22
+ if (!(0, utils_js_1.isClient)())
23
+ return;
24
+ // END DUX-DELTA
25
+ const type = (0, vue_1.toValue)(room.type);
26
+ const id = (0, vue_1.toValue)(room.id);
27
+ const unsub = room.core._reactor.subscribeTopic(type, id, topic, (event, peer) => {
28
+ onEvent(event, peer);
29
+ });
30
+ onCleanup(unsub);
31
+ });
32
+ }
33
+ /**
34
+ * Broadcast an event to a room.
35
+ *
36
+ * @see https://instantdb.com/docs/presence-and-topics
37
+ */
38
+ function usePublishTopic(room, topic) {
39
+ (0, vue_1.watchEffect)((onCleanup) => {
40
+ // DUX-DELTA(ssr): no room join on the server.
41
+ if (!(0, utils_js_1.isClient)())
42
+ return;
43
+ // END DUX-DELTA
44
+ const type = (0, vue_1.toValue)(room.type);
45
+ const id = (0, vue_1.toValue)(room.id);
46
+ const unsub = room.core._reactor.joinRoom(type, id);
47
+ onCleanup(unsub);
48
+ });
49
+ return (data) => {
50
+ room.core._reactor.publishTopic({
51
+ roomType: (0, vue_1.toValue)(room.type),
52
+ roomId: (0, vue_1.toValue)(room.id),
53
+ topic,
54
+ data,
55
+ });
56
+ };
57
+ }
58
+ // ---------
59
+ // Presence
60
+ /**
61
+ * Listen for peer's presence data in a room, and publish the current user's
62
+ * presence.
63
+ *
64
+ * @see https://instantdb.com/docs/presence-and-topics
65
+ */
66
+ function usePresence(room, opts = {}) {
67
+ const initial = (room.core._reactor.getPresence((0, vue_1.toValue)(room.type), (0, vue_1.toValue)(room.id), opts) ?? {
68
+ peers: {},
69
+ isLoading: true,
70
+ });
71
+ const peers = (0, vue_1.shallowRef)(initial.peers);
72
+ const isLoading = (0, vue_1.shallowRef)(initial.isLoading);
73
+ const user = (0, vue_1.shallowRef)(initial.user);
74
+ const error = (0, vue_1.shallowRef)(initial.error);
75
+ (0, vue_1.watchEffect)((onCleanup) => {
76
+ // DUX-DELTA(ssr): no presence subscription on the server.
77
+ if (!(0, utils_js_1.isClient)())
78
+ return;
79
+ // END DUX-DELTA
80
+ const type = (0, vue_1.toValue)(room.type);
81
+ const id = (0, vue_1.toValue)(room.id);
82
+ const unsub = room.core._reactor.subscribePresence(type, id, opts, (data) => {
83
+ peers.value = data.peers;
84
+ isLoading.value = data.isLoading;
85
+ if ('user' in data)
86
+ user.value = data.user;
87
+ if ('error' in data)
88
+ error.value = data.error;
89
+ });
90
+ onCleanup(unsub);
91
+ });
92
+ return {
93
+ peers,
94
+ isLoading,
95
+ user,
96
+ error,
97
+ publishPresence: (data) => {
98
+ room.core._reactor.publishPresence((0, vue_1.toValue)(room.type), (0, vue_1.toValue)(room.id), data);
99
+ },
100
+ };
101
+ }
102
+ /**
103
+ * Publishes presence data to a room.
104
+ *
105
+ * @see https://instantdb.com/docs/presence-and-topics
106
+ */
107
+ function useSyncPresence(room, data) {
108
+ (0, vue_1.watchEffect)((onCleanup) => {
109
+ // DUX-DELTA(ssr): no room join on the server.
110
+ if (!(0, utils_js_1.isClient)())
111
+ return;
112
+ // END DUX-DELTA
113
+ const type = (0, vue_1.toValue)(room.type);
114
+ const id = (0, vue_1.toValue)(room.id);
115
+ const unsub = room.core._reactor.joinRoom(type, id, (0, vue_1.toValue)(data));
116
+ onCleanup(unsub);
117
+ });
118
+ (0, vue_1.watchEffect)(() => {
119
+ // DUX-DELTA(ssr): no presence publish on the server.
120
+ if (!(0, utils_js_1.isClient)())
121
+ return;
122
+ // END DUX-DELTA
123
+ room.core._reactor.publishPresence((0, vue_1.toValue)(room.type), (0, vue_1.toValue)(room.id), (0, vue_1.toValue)(data));
124
+ });
125
+ }
126
+ // -----------------
127
+ // Typing Indicator
128
+ /**
129
+ * Manage typing indicator state.
130
+ *
131
+ * @see https://instantdb.com/docs/presence-and-topics
132
+ */
133
+ function useTypingIndicator(room, inputName, opts = {}) {
134
+ let timeoutId = null;
135
+ const presence = usePresence(room, {
136
+ keys: [inputName],
137
+ });
138
+ const active = (0, vue_1.shallowRef)([]);
139
+ (0, vue_1.watchEffect)(() => {
140
+ if (opts?.writeOnly) {
141
+ active.value = [];
142
+ return;
143
+ }
144
+ // Track peers so we re-run when presence updates
145
+ void presence.peers.value;
146
+ const snapshot = room.core._reactor.getPresence((0, vue_1.toValue)(room.type), (0, vue_1.toValue)(room.id));
147
+ active.value = Object.values(snapshot?.peers ?? {}).filter((p) => p[inputName] === true);
148
+ });
149
+ const setActive = (isActive) => {
150
+ room.core._reactor.publishPresence((0, vue_1.toValue)(room.type), (0, vue_1.toValue)(room.id), {
151
+ [inputName]: isActive ? true : null,
152
+ });
153
+ if (timeoutId) {
154
+ clearTimeout(timeoutId);
155
+ timeoutId = null;
156
+ }
157
+ if (!isActive)
158
+ return;
159
+ if (opts?.timeout === null || opts?.timeout === 0)
160
+ return;
161
+ timeoutId = setTimeout(() => {
162
+ room.core._reactor.publishPresence((0, vue_1.toValue)(room.type), (0, vue_1.toValue)(room.id), {
163
+ [inputName]: null,
164
+ });
165
+ }, opts?.timeout ?? exports.defaultActivityStopTimeout);
166
+ };
167
+ (0, utils_js_1.tryOnScopeDispose)(() => {
168
+ if (timeoutId) {
169
+ clearTimeout(timeoutId);
170
+ timeoutId = null;
171
+ }
172
+ // Clear sticky typing state on unmount, even when timeout is disabled.
173
+ setActive(false);
174
+ });
175
+ const onKeydown = (e) => {
176
+ const isEnter = opts?.stopOnEnter && e.key === 'Enter';
177
+ const isActive = !isEnter;
178
+ setActive(isActive);
179
+ };
180
+ const onBlur = () => {
181
+ setActive(false);
182
+ };
183
+ return {
184
+ active,
185
+ setActive,
186
+ inputProps: { onKeydown, onBlur },
187
+ };
188
+ }
189
+ // --------------
190
+ // Hooks namespace
191
+ exports.rooms = {
192
+ useTopicEffect,
193
+ usePublishTopic,
194
+ usePresence,
195
+ useSyncPresence,
196
+ useTypingIndicator,
197
+ };
198
+ // ------------
199
+ // Class
200
+ class InstantDuxRoom {
201
+ core;
202
+ type;
203
+ id;
204
+ constructor(core, type, id) {
205
+ this.core = core;
206
+ this.type = type;
207
+ this.id = id;
208
+ }
209
+ }
210
+ exports.InstantDuxRoom = InstantDuxRoom;
211
+ //# sourceMappingURL=InstantDuxRoom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstantDuxRoom.js","sourceRoot":"","sources":["../../../../src/vue/baseline/InstantDuxRoom.ts"],"names":[],"mappings":"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","sourcesContent":["// Vendored from @instantdb/vue/src/InstantVueRoom.ts — see UPSTREAM.md.\n// Deltas: class/handle rename (InstantVueRoom → InstantDuxRoom) and the SSR\n// floor guards on each reactor subscription.\nimport type {\n InstantCoreDatabase,\n InstantSchemaDef,\n PresenceOpts,\n PresenceResponse,\n RoomSchemaShape,\n} from '@instantdb/core'\nimport type { ComputedRef, MaybeRefOrGetter, Ref, ShallowRef } from 'vue'\nimport { shallowRef, toValue, watchEffect } from 'vue'\n\nimport { isClient, tryOnScopeDispose } from './utils.js'\n\n// ------\n// Types\n\nexport type PresenceHandle<PresenceShape, Keys extends keyof PresenceShape> = {\n [K in keyof PresenceResponse<PresenceShape, Keys>]: ShallowRef<\n PresenceResponse<PresenceShape, Keys>[K]\n >\n} & {\n publishPresence: (data: Partial<PresenceShape>) => void\n}\n\nexport interface TypingIndicatorOpts {\n timeout?: number | null\n stopOnEnter?: boolean\n // Perf opt - `active` will always be an empty array\n writeOnly?: boolean\n}\n\nexport interface TypingIndicatorHandle<PresenceShape> {\n active: Ref<PresenceShape[]>\n setActive: (active: boolean) => void\n /**\n * Listener keys are lowercased (`onKeydown`, not `onKeyDown`) so that\n * Vue's `v-bind` spread hyphenates them correctly to native DOM events\n * (`keydown`). With camelCase Vue would emit a non-existent `key-down`\n * listener and the indicator would never fire.\n */\n inputProps: {\n onKeydown: (e: KeyboardEvent) => void\n onBlur: () => void\n }\n}\n\nexport const defaultActivityStopTimeout = 1_000\n\n// ------\n// Topics\n\n/**\n * Listen for broadcasted events given a room and topic.\n *\n * @see https://instantdb.com/docs/presence-and-topics\n */\nexport function useTopicEffect<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n TopicType extends keyof RoomSchema[RoomType]['topics'],\n>(\n room: InstantDuxRoom<any, RoomSchema, RoomType>,\n topic: TopicType,\n onEvent: (\n event: RoomSchema[RoomType]['topics'][TopicType],\n peer: RoomSchema[RoomType]['presence'],\n ) => any,\n): void {\n watchEffect((onCleanup) => {\n // DUX-DELTA(ssr): no topic subscription on the server.\n if (!isClient())\n return\n // END DUX-DELTA\n const type = toValue(room.type)\n const id = toValue(room.id)\n const unsub = room.core._reactor.subscribeTopic(\n type,\n id,\n topic,\n (event: any, peer: any) => {\n onEvent(event, peer)\n },\n )\n onCleanup(unsub)\n })\n}\n\n/**\n * Broadcast an event to a room.\n *\n * @see https://instantdb.com/docs/presence-and-topics\n */\nexport function usePublishTopic<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n TopicType extends keyof RoomSchema[RoomType]['topics'],\n>(\n room: InstantDuxRoom<any, RoomSchema, RoomType>,\n topic: TopicType,\n): (data: RoomSchema[RoomType]['topics'][TopicType]) => void {\n watchEffect((onCleanup) => {\n // DUX-DELTA(ssr): no room join on the server.\n if (!isClient())\n return\n // END DUX-DELTA\n const type = toValue(room.type) as string\n const id = toValue(room.id)\n const unsub = room.core._reactor.joinRoom(type, id)\n onCleanup(unsub)\n })\n\n return (data: RoomSchema[RoomType]['topics'][TopicType]) => {\n room.core._reactor.publishTopic({\n roomType: toValue(room.type),\n roomId: toValue(room.id),\n topic,\n data,\n })\n }\n}\n\n// ---------\n// Presence\n\n/**\n * Listen for peer's presence data in a room, and publish the current user's\n * presence.\n *\n * @see https://instantdb.com/docs/presence-and-topics\n */\nexport function usePresence<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n Keys extends keyof RoomSchema[RoomType]['presence'],\n>(\n room: InstantDuxRoom<any, RoomSchema, RoomType>,\n opts: PresenceOpts<RoomSchema[RoomType]['presence'], Keys> = {},\n): PresenceHandle<RoomSchema[RoomType]['presence'], Keys> {\n const initial = (room.core._reactor.getPresence(\n toValue(room.type),\n toValue(room.id),\n opts,\n ) ?? {\n peers: {},\n isLoading: true,\n }) as PresenceResponse<RoomSchema[RoomType]['presence'], Keys>\n\n const peers = shallowRef(initial.peers)\n const isLoading = shallowRef(initial.isLoading)\n const user = shallowRef<any>((initial as any).user)\n const error = shallowRef<any>((initial as any).error)\n\n watchEffect((onCleanup) => {\n // DUX-DELTA(ssr): no presence subscription on the server.\n if (!isClient())\n return\n // END DUX-DELTA\n const type = toValue(room.type)\n const id = toValue(room.id)\n const unsub = room.core._reactor.subscribePresence(\n type,\n id,\n opts,\n (data: any) => {\n peers.value = data.peers\n isLoading.value = data.isLoading\n if ('user' in data)\n user.value = data.user\n if ('error' in data)\n error.value = data.error\n },\n )\n onCleanup(unsub)\n })\n\n return {\n peers,\n isLoading,\n user,\n error,\n publishPresence: (data: Partial<RoomSchema[RoomType]['presence']>) => {\n room.core._reactor.publishPresence(\n toValue(room.type),\n toValue(room.id),\n data,\n )\n },\n } as PresenceHandle<RoomSchema[RoomType]['presence'], Keys>\n}\n\n/**\n * Publishes presence data to a room.\n *\n * @see https://instantdb.com/docs/presence-and-topics\n */\nexport function useSyncPresence<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n>(\n room: InstantDuxRoom<any, RoomSchema, RoomType>,\n data: MaybeRefOrGetter<Partial<RoomSchema[RoomType]['presence']>>,\n): void {\n watchEffect((onCleanup) => {\n // DUX-DELTA(ssr): no room join on the server.\n if (!isClient())\n return\n // END DUX-DELTA\n const type = toValue(room.type) as string\n const id = toValue(room.id)\n const unsub = room.core._reactor.joinRoom(type, id, toValue(data))\n onCleanup(unsub)\n })\n\n watchEffect(() => {\n // DUX-DELTA(ssr): no presence publish on the server.\n if (!isClient())\n return\n // END DUX-DELTA\n room.core._reactor.publishPresence(\n toValue(room.type),\n toValue(room.id),\n toValue(data),\n )\n })\n}\n\n// -----------------\n// Typing Indicator\n\n/**\n * Manage typing indicator state.\n *\n * @see https://instantdb.com/docs/presence-and-topics\n */\nexport function useTypingIndicator<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n>(\n room: InstantDuxRoom<any, RoomSchema, RoomType>,\n inputName: string,\n opts: TypingIndicatorOpts = {},\n): TypingIndicatorHandle<RoomSchema[RoomType]['presence']> {\n let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n const presence = usePresence(room, {\n keys: [inputName] as (keyof RoomSchema[RoomType]['presence'])[],\n })\n\n const active = shallowRef<RoomSchema[RoomType]['presence'][]>([])\n\n watchEffect(() => {\n if (opts?.writeOnly) {\n active.value = []\n return\n }\n // Track peers so we re-run when presence updates\n void presence.peers.value\n const snapshot = room.core._reactor.getPresence(\n toValue(room.type),\n toValue(room.id),\n )\n active.value = Object.values(snapshot?.peers ?? {}).filter(\n (p: any) => p[inputName] === true,\n )\n })\n\n const setActive = (isActive: boolean) => {\n room.core._reactor.publishPresence(toValue(room.type), toValue(room.id), {\n [inputName]: isActive ? true : null,\n } as Partial<RoomSchema[RoomType]['presence']>)\n\n if (timeoutId) {\n clearTimeout(timeoutId)\n timeoutId = null\n }\n\n if (!isActive)\n return\n if (opts?.timeout === null || opts?.timeout === 0)\n return\n\n timeoutId = setTimeout(() => {\n room.core._reactor.publishPresence(toValue(room.type), toValue(room.id), {\n [inputName]: null,\n } as Partial<RoomSchema[RoomType]['presence']>)\n }, opts?.timeout ?? defaultActivityStopTimeout)\n }\n\n tryOnScopeDispose(() => {\n if (timeoutId) {\n clearTimeout(timeoutId)\n timeoutId = null\n }\n // Clear sticky typing state on unmount, even when timeout is disabled.\n setActive(false)\n })\n\n const onKeydown = (e: KeyboardEvent) => {\n const isEnter = opts?.stopOnEnter && e.key === 'Enter'\n const isActive = !isEnter\n setActive(isActive)\n }\n\n const onBlur = () => {\n setActive(false)\n }\n\n return {\n active,\n setActive,\n inputProps: { onKeydown, onBlur },\n }\n}\n\n// --------------\n// Hooks namespace\n\nexport const rooms = {\n useTopicEffect,\n usePublishTopic,\n usePresence,\n useSyncPresence,\n useTypingIndicator,\n}\n\n// ------------\n// Class\n\nexport class InstantDuxRoom<\n Schema extends InstantSchemaDef<any, any, any>,\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n> {\n core: InstantCoreDatabase<Schema, boolean>\n type: ComputedRef<RoomType> | RoomType\n id: ComputedRef<string> | string\n\n constructor(\n core: InstantCoreDatabase<Schema, boolean>,\n type: ComputedRef<RoomType> | RoomType,\n id: ComputedRef<string> | string,\n ) {\n this.core = core\n this.type = type\n this.id = id\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ export declare const Cursor: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ color: {
3
+ type: StringConstructor;
4
+ required: true;
5
+ };
6
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
7
+ [key: string]: any;
8
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
9
+ color: {
10
+ type: StringConstructor;
11
+ required: true;
12
+ };
13
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
14
+ export default Cursor;
15
+ //# sourceMappingURL=Cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cursor.d.ts","sourceRoot":"","sources":["../../../../../src/vue/baseline/components/Cursor.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,MAAM;;;;;;;;;;;;iGAmCjB,CAAA;AAEF,eAAe,MAAM,CAAA"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Cursor = void 0;
4
+ // Vendored from @instantdb/vue/src/components/Cursor.vue — see UPSTREAM.md.
5
+ // DUX-DELTA(components): shipped as a `.ts` render function rather than a
6
+ // `.vue` SFC, so the library needs no SFC compile step and the boundary lint
7
+ // can see the source. Behavior matches the SFC.
8
+ const vue_1 = require("vue");
9
+ const paths = [
10
+ { fill: 'rgba(0,0,0,.2)', useColor: false },
11
+ { fill: 'white', useColor: false },
12
+ { fill: null, useColor: true },
13
+ ];
14
+ exports.Cursor = (0, vue_1.defineComponent)({
15
+ name: 'Cursor',
16
+ props: { color: { type: String, required: true } },
17
+ setup(props) {
18
+ return () => (0, vue_1.h)('svg', {
19
+ style: { height: '35px', width: '35px' },
20
+ viewBox: '0 0 35 35',
21
+ fill: 'none',
22
+ xmlns: 'http://www.w3.org/2000/svg',
23
+ }, paths.map((layer, index) => (0, vue_1.h)('g', {
24
+ key: index,
25
+ fill: layer.useColor ? props.color || 'black' : layer.fill,
26
+ transform: 'matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)',
27
+ }, index === 2
28
+ ? [
29
+ (0, vue_1.h)('path', { d: 'm19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z' }),
30
+ (0, vue_1.h)('path', { d: 'm13 10.814v11.188l2.969-2.866.428-.139h4.768z' }),
31
+ ]
32
+ : [
33
+ (0, vue_1.h)('path', { d: 'm12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z' }),
34
+ (0, vue_1.h)('path', { d: 'm21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z' }),
35
+ ])));
36
+ },
37
+ });
38
+ exports.default = exports.Cursor;
39
+ //# sourceMappingURL=Cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cursor.js","sourceRoot":"","sources":["../../../../../src/vue/baseline/components/Cursor.ts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,gDAAgD;AAChD,6BAAwC;AAExC,MAAM,KAAK,GAAG;IACZ,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3C,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;IAClC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;CACtB,CAAA;AAEG,QAAA,MAAM,GAAG,IAAA,qBAAe,EAAC;IACpC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAClD,KAAK,CAAC,KAAK;QACT,OAAO,GAAG,EAAE,CACV,IAAA,OAAC,EACC,KAAK,EACL;YACE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YACxC,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,4BAA4B;SACpC,EACD,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACzB,IAAA,OAAC,EACC,GAAG,EACH;YACE,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;YAC1D,SAAS,EACP,6DAA6D;SAChE,EACD,KAAK,KAAK,CAAC;YACT,CAAC,CAAC;gBACE,IAAA,OAAC,EAAC,MAAM,EAAE,EAAE,CAAC,EAAE,iDAAiD,EAAE,CAAC;gBACnE,IAAA,OAAC,EAAC,MAAM,EAAE,EAAE,CAAC,EAAE,+CAA+C,EAAE,CAAC;aAClE;YACH,CAAC,CAAC;gBACE,IAAA,OAAC,EAAC,MAAM,EAAE,EAAE,CAAC,EAAE,qDAAqD,EAAE,CAAC;gBACvE,IAAA,OAAC,EAAC,MAAM,EAAE,EAAE,CAAC,EAAE,wDAAwD,EAAE,CAAC;aAC3E,CACN,CACF,CACF,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,kBAAe,cAAM,CAAA","sourcesContent":["// Vendored from @instantdb/vue/src/components/Cursor.vue — see UPSTREAM.md.\n// DUX-DELTA(components): shipped as a `.ts` render function rather than a\n// `.vue` SFC, so the library needs no SFC compile step and the boundary lint\n// can see the source. Behavior matches the SFC.\nimport { defineComponent, h } from 'vue'\n\nconst paths = [\n { fill: 'rgba(0,0,0,.2)', useColor: false },\n { fill: 'white', useColor: false },\n { fill: null, useColor: true },\n] as const\n\nexport const Cursor = defineComponent({\n name: 'Cursor',\n props: { color: { type: String, required: true } },\n setup(props) {\n return () =>\n h(\n 'svg',\n {\n style: { height: '35px', width: '35px' },\n viewBox: '0 0 35 35',\n fill: 'none',\n xmlns: 'http://www.w3.org/2000/svg',\n },\n paths.map((layer, index) =>\n h(\n 'g',\n {\n key: index,\n fill: layer.useColor ? props.color || 'black' : layer.fill,\n transform:\n 'matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)',\n },\n index === 2\n ? [\n h('path', { d: 'm19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z' }),\n h('path', { d: 'm13 10.814v11.188l2.969-2.866.428-.139h4.768z' }),\n ]\n : [\n h('path', { d: 'm12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z' }),\n h('path', { d: 'm21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z' }),\n ],\n ),\n ),\n )\n },\n})\n\nexport default Cursor\n"]}
@@ -0,0 +1,65 @@
1
+ import type { ComputedRef, PropType } from 'vue';
2
+ interface GenericRoom {
3
+ type: ComputedRef<string> | string;
4
+ id: ComputedRef<string> | string;
5
+ core: any;
6
+ }
7
+ export declare const Cursors: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ room: {
9
+ type: PropType<GenericRoom>;
10
+ required: true;
11
+ };
12
+ spaceId: {
13
+ type: StringConstructor;
14
+ required: false;
15
+ };
16
+ as: {
17
+ type: StringConstructor;
18
+ default: string;
19
+ };
20
+ userCursorColor: {
21
+ type: StringConstructor;
22
+ required: false;
23
+ };
24
+ propagate: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ zIndex: {
29
+ type: NumberConstructor;
30
+ default: number;
31
+ };
32
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
33
+ [key: string]: any;
34
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
35
+ room: {
36
+ type: PropType<GenericRoom>;
37
+ required: true;
38
+ };
39
+ spaceId: {
40
+ type: StringConstructor;
41
+ required: false;
42
+ };
43
+ as: {
44
+ type: StringConstructor;
45
+ default: string;
46
+ };
47
+ userCursorColor: {
48
+ type: StringConstructor;
49
+ required: false;
50
+ };
51
+ propagate: {
52
+ type: BooleanConstructor;
53
+ default: boolean;
54
+ };
55
+ zIndex: {
56
+ type: NumberConstructor;
57
+ default: number;
58
+ };
59
+ }>> & Readonly<{}>, {
60
+ as: string;
61
+ propagate: boolean;
62
+ zIndex: number;
63
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
64
+ export default Cursors;
65
+ //# sourceMappingURL=Cursors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cursors.d.ts","sourceRoot":"","sources":["../../../../../src/vue/baseline/components/Cursors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAyBhD,UAAU,WAAW;IACnB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAClC,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAChC,IAAI,EAAE,GAAG,CAAA;CACV;AAED,eAAO,MAAM,OAAO;;cAGQ,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;cAArB,QAAQ,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA8H/C,CAAA;AAEF,eAAe,OAAO,CAAA"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Cursors = void 0;
7
+ // Vendored from @instantdb/vue/src/components/Cursors.vue — see UPSTREAM.md.
8
+ // DUX-DELTA(components): shipped as a `.ts` render function rather than a
9
+ // `.vue` SFC. Behavior matches the SFC: publish the local cursor on
10
+ // pointer/touch move, render peer cursors from presence.
11
+ const vue_1 = require("vue");
12
+ const InstantDuxRoom_js_1 = require("../InstantDuxRoom.js");
13
+ const Cursor_js_1 = __importDefault(require("./Cursor.js"));
14
+ exports.Cursors = (0, vue_1.defineComponent)({
15
+ name: 'Cursors',
16
+ props: {
17
+ room: { type: Object, required: true },
18
+ spaceId: { type: String, required: false },
19
+ as: { type: String, default: 'div' },
20
+ userCursorColor: { type: String, required: false },
21
+ propagate: { type: Boolean, default: false },
22
+ zIndex: { type: Number, default: 99999 },
23
+ },
24
+ setup(props, { slots }) {
25
+ const spaceId = (0, vue_1.computed)(() => props.spaceId
26
+ || `cursors-space-default--${String((0, vue_1.toValue)(props.room.type))}-${(0, vue_1.toValue)(props.room.id)}`);
27
+ const { peers, publishPresence } = (0, InstantDuxRoom_js_1.usePresence)(props.room, {
28
+ keys: [spaceId.value],
29
+ });
30
+ const fullPresence = (0, vue_1.computed)(() => {
31
+ void peers.value;
32
+ return props.room.core._reactor.getPresence((0, vue_1.toValue)(props.room.type), (0, vue_1.toValue)(props.room.id));
33
+ });
34
+ const cursorPeers = (0, vue_1.computed)(() => {
35
+ const sid = spaceId.value;
36
+ return Object.entries(peers.value || {}).flatMap(([peerId, p]) => {
37
+ const cursor = p?.[sid];
38
+ return cursor ? [{ peerId, cursor }] : [];
39
+ });
40
+ });
41
+ function publishCursor(rect, touch) {
42
+ const x = touch.clientX;
43
+ const y = touch.clientY;
44
+ const xPercent = ((x - rect.left) / rect.width) * 100;
45
+ const yPercent = ((y - rect.top) / rect.height) * 100;
46
+ publishPresence({
47
+ [spaceId.value]: { x, y, xPercent, yPercent, color: props.userCursorColor },
48
+ });
49
+ }
50
+ function onMouseMove(e) {
51
+ if (!props.propagate)
52
+ e.stopPropagation();
53
+ const rect = e.currentTarget.getBoundingClientRect();
54
+ publishCursor(rect, e);
55
+ }
56
+ function clearCursor() {
57
+ publishPresence({ [spaceId.value]: undefined });
58
+ }
59
+ function onTouchMove(e) {
60
+ if (e.touches.length !== 1)
61
+ return;
62
+ const touch = e.touches[0];
63
+ if (!touch || !(touch.target instanceof Element))
64
+ return;
65
+ if (!props.propagate)
66
+ e.stopPropagation();
67
+ const rect = touch.target.getBoundingClientRect();
68
+ publishCursor(rect, touch);
69
+ }
70
+ return () => (0, vue_1.h)(props.as, {
71
+ style: { position: 'relative' },
72
+ onMousemove: onMouseMove,
73
+ onMouseout: clearCursor,
74
+ onBlur: clearCursor,
75
+ onTouchmove: onTouchMove,
76
+ onTouchend: clearCursor,
77
+ }, [
78
+ slots.default?.(),
79
+ (0, vue_1.h)('div', {
80
+ style: {
81
+ position: 'absolute',
82
+ top: 0,
83
+ left: 0,
84
+ bottom: 0,
85
+ right: 0,
86
+ overflow: 'hidden',
87
+ pointerEvents: 'none',
88
+ userSelect: 'none',
89
+ zIndex: props.zIndex,
90
+ },
91
+ }, cursorPeers.value.map(({ peerId, cursor }) => (0, vue_1.h)('div', {
92
+ key: peerId,
93
+ style: {
94
+ position: 'absolute',
95
+ top: 0,
96
+ left: 0,
97
+ bottom: 0,
98
+ right: 0,
99
+ transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`,
100
+ transformOrigin: '0 0',
101
+ transition: 'transform 100ms',
102
+ },
103
+ }, slots.cursor
104
+ ? slots.cursor({
105
+ color: cursor.color,
106
+ presence: fullPresence.value?.peers[peerId],
107
+ })
108
+ : (0, vue_1.h)(Cursor_js_1.default, { color: cursor.color ?? '' })))),
109
+ ]);
110
+ },
111
+ });
112
+ exports.default = exports.Cursors;
113
+ //# sourceMappingURL=Cursors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cursors.js","sourceRoot":"","sources":["../../../../../src/vue/baseline/components/Cursors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComputedRef, PropType } from 'vue'\n// Vendored from @instantdb/vue/src/components/Cursors.vue — see UPSTREAM.md.\n// DUX-DELTA(components): shipped as a `.ts` render function rather than a\n// `.vue` SFC. Behavior matches the SFC: publish the local cursor on\n// pointer/touch move, render peer cursors from presence.\nimport { computed, defineComponent, h, toValue } from 'vue'\nimport { usePresence } from '../InstantDuxRoom.js'\nimport Cursor from './Cursor.js'\n\ninterface CursorPresence {\n x: number\n y: number\n xPercent: number\n yPercent: number\n color?: string\n}\n\n// DUX-DELTA(types): the runtime `room` prop is the loose room handle, not a\n// concrete `InstantDuxRoom`. The official SFC infers `RoomSchema`/`RoomType`\n// per use; a `.ts` render fn can't express inferring generic props, and a\n// concrete room would reject one read back through Vue/Pinia reactivity (which\n// unwraps its deep `core`/reactor types). `core` is left loose so the handle\n// assigns however it's stored — no `markRaw` ceremony at the call site. It\n// stays assignable *to* `InstantDuxRoom<any, any, any>` for the internal\n// `usePresence` call.\ninterface GenericRoom {\n type: ComputedRef<string> | string\n id: ComputedRef<string> | string\n core: any\n}\n\nexport const Cursors = defineComponent({\n name: 'Cursors',\n props: {\n room: { type: Object as PropType<GenericRoom>, required: true },\n spaceId: { type: String, required: false },\n as: { type: String, default: 'div' },\n userCursorColor: { type: String, required: false },\n propagate: { type: Boolean, default: false },\n zIndex: { type: Number, default: 99999 },\n },\n setup(props, { slots }) {\n const spaceId = computed(\n () =>\n props.spaceId\n || `cursors-space-default--${String(toValue(props.room.type))}-${toValue(props.room.id)}`,\n )\n\n const { peers, publishPresence } = usePresence(props.room, {\n keys: [spaceId.value] as any,\n })\n\n const fullPresence = computed(() => {\n void peers.value\n return props.room.core._reactor.getPresence(\n toValue(props.room.type),\n toValue(props.room.id),\n )\n })\n\n const cursorPeers = computed(() => {\n const sid = spaceId.value\n return Object.entries(peers.value || {}).flatMap(([peerId, p]) => {\n const cursor = (p as any)?.[sid] as CursorPresence | undefined\n return cursor ? [{ peerId, cursor }] : []\n })\n })\n\n function publishCursor(\n rect: DOMRect,\n touch: { clientX: number, clientY: number },\n ) {\n const x = touch.clientX\n const y = touch.clientY\n const xPercent = ((x - rect.left) / rect.width) * 100\n const yPercent = ((y - rect.top) / rect.height) * 100\n publishPresence({\n [spaceId.value]: { x, y, xPercent, yPercent, color: props.userCursorColor },\n } as any)\n }\n\n function onMouseMove(e: MouseEvent) {\n if (!props.propagate)\n e.stopPropagation()\n const rect = (e.currentTarget as Element).getBoundingClientRect()\n publishCursor(rect, e)\n }\n\n function clearCursor() {\n publishPresence({ [spaceId.value]: undefined } as any)\n }\n\n function onTouchMove(e: TouchEvent) {\n if (e.touches.length !== 1)\n return\n const touch = e.touches[0]\n if (!touch || !(touch.target instanceof Element))\n return\n if (!props.propagate)\n e.stopPropagation()\n const rect = touch.target.getBoundingClientRect()\n publishCursor(rect, touch)\n }\n\n return () =>\n h(\n props.as,\n {\n style: { position: 'relative' },\n onMousemove: onMouseMove,\n onMouseout: clearCursor,\n onBlur: clearCursor,\n onTouchmove: onTouchMove,\n onTouchend: clearCursor,\n },\n [\n slots.default?.(),\n h(\n 'div',\n {\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n zIndex: props.zIndex,\n },\n },\n cursorPeers.value.map(({ peerId, cursor }) =>\n h(\n 'div',\n {\n key: peerId,\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`,\n transformOrigin: '0 0',\n transition: 'transform 100ms',\n },\n },\n slots.cursor\n ? slots.cursor({\n color: cursor.color,\n presence: fullPresence.value?.peers[peerId],\n })\n : h(Cursor, { color: cursor.color ?? '' }),\n ),\n ),\n ),\n ],\n )\n },\n})\n\nexport default Cursors\n"]}
@@ -0,0 +1,37 @@
1
+ import type { PropType, Ref } from 'vue';
2
+ interface AuthGateDb {
3
+ useAuth: () => {
4
+ isLoading: Ref<boolean>;
5
+ error: Ref<unknown>;
6
+ user: Ref<unknown>;
7
+ };
8
+ }
9
+ type AnyDb = AuthGateDb;
10
+ export declare const SignedIn: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
11
+ db: {
12
+ type: PropType<AnyDb>;
13
+ required: true;
14
+ };
15
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
16
+ [key: string]: any;
17
+ }>[] | null | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
18
+ db: {
19
+ type: PropType<AnyDb>;
20
+ required: true;
21
+ };
22
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
23
+ export declare const SignedOut: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
24
+ db: {
25
+ type: PropType<AnyDb>;
26
+ required: true;
27
+ };
28
+ }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
29
+ [key: string]: any;
30
+ }>[] | null | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
31
+ db: {
32
+ type: PropType<AnyDb>;
33
+ required: true;
34
+ };
35
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
36
+ export {};
37
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../src/vue/baseline/components/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAYxC,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM;QACb,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QACvB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QACnB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;KACnB,CAAA;CACF;AACD,KAAK,KAAK,GAAG,UAAU,CAAA;AAGvB,eAAO,MAAM,QAAQ;;cAEY,QAAQ,CAAC,KAAK,CAAC;;;;;;;cAAf,QAAQ,CAAC,KAAK,CAAC;;;iGAM9C,CAAA;AAEF,eAAO,MAAM,SAAS;;cAEW,QAAQ,CAAC,KAAK,CAAC;;;;;;;cAAf,QAAQ,CAAC,KAAK,CAAC;;;iGAM9C,CAAA"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SignedOut = exports.SignedIn = void 0;
4
+ // Vendored from @instantdb/vue/src/components/SignedIn.vue + SignedOut.vue —
5
+ // see UPSTREAM.md.
6
+ // DUX-DELTA(components): shipped as `.ts` render functions rather than `.vue`
7
+ // SFCs. Behavior matches the SFCs: render the default slot only when the auth
8
+ // gate is satisfied and not loading/errored.
9
+ const vue_1 = require("vue");
10
+ // END DUX-DELTA
11
+ exports.SignedIn = (0, vue_1.defineComponent)({
12
+ name: 'SignedIn',
13
+ props: { db: { type: Object, required: true } },
14
+ setup(props, { slots }) {
15
+ const { isLoading, error, user } = props.db.useAuth();
16
+ return () => !isLoading.value && !error.value && user.value ? slots.default?.() : null;
17
+ },
18
+ });
19
+ exports.SignedOut = (0, vue_1.defineComponent)({
20
+ name: 'SignedOut',
21
+ props: { db: { type: Object, required: true } },
22
+ setup(props, { slots }) {
23
+ const { isLoading, error, user } = props.db.useAuth();
24
+ return () => !isLoading.value && !error.value && !user.value ? slots.default?.() : null;
25
+ },
26
+ });
27
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../src/vue/baseline/components/auth.ts"],"names":[],"mappings":";;;AACA,6EAA6E;AAC7E,mBAAmB;AACnB,8EAA8E;AAC9E,8EAA8E;AAC9E,6CAA6C;AAC7C,6BAAqC;AAcrC,gBAAgB;AAEH,QAAA,QAAQ,GAAG,IAAA,qBAAe,EAAC;IACtC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAClE,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAA;QACrD,OAAO,GAAG,EAAE,CACV,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7E,CAAC;CACF,CAAC,CAAA;AAEW,QAAA,SAAS,GAAG,IAAA,qBAAe,EAAC;IACvC,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAClE,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAA;QACrD,OAAO,GAAG,EAAE,CACV,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9E,CAAC;CACF,CAAC,CAAA","sourcesContent":["import type { PropType, Ref } from 'vue'\n// Vendored from @instantdb/vue/src/components/SignedIn.vue + SignedOut.vue —\n// see UPSTREAM.md.\n// DUX-DELTA(components): shipped as `.ts` render functions rather than `.vue`\n// SFCs. Behavior matches the SFCs: render the default slot only when the auth\n// gate is satisfied and not loading/errored.\nimport { defineComponent } from 'vue'\n\n// DUX-DELTA(types): the `db` prop is the minimal auth-gate surface, not the\n// full baseline db. The public surface is the overlay `IdbClient` (the only db\n// users hold); both it and the baseline satisfy this, so `:db=\"db\"` typechecks\n// with the public db without the components reaching up into the overlay layer.\ninterface AuthGateDb {\n useAuth: () => {\n isLoading: Ref<boolean>\n error: Ref<unknown>\n user: Ref<unknown>\n }\n}\ntype AnyDb = AuthGateDb\n// END DUX-DELTA\n\nexport const SignedIn = defineComponent({\n name: 'SignedIn',\n props: { db: { type: Object as PropType<AnyDb>, required: true } },\n setup(props, { slots }) {\n const { isLoading, error, user } = props.db.useAuth()\n return () =>\n !isLoading.value && !error.value && user.value ? slots.default?.() : null\n },\n})\n\nexport const SignedOut = defineComponent({\n name: 'SignedOut',\n props: { db: { type: Object as PropType<AnyDb>, required: true } },\n setup(props, { slots }) {\n const { isLoading, error, user } = props.db.useAuth()\n return () =>\n !isLoading.value && !error.value && !user.value ? slots.default?.() : null\n },\n})\n"]}
@@ -0,0 +1,11 @@
1
+ export { SignedIn, SignedOut } from './components/auth.js';
2
+ export { Cursor } from './components/Cursor.js';
3
+ export { Cursors } from './components/Cursors.js';
4
+ export { init, InstantDuxDatabase } from './InstantDuxDatabase.js';
5
+ export type { UseAuthReturn, UseQueryReturn } from './InstantDuxDatabase.js';
6
+ export { InstantDuxRoom, rooms, usePresence, usePublishTopic, useSyncPresence, useTopicEffect, useTypingIndicator, } from './InstantDuxRoom.js';
7
+ export type { PresenceHandle, TypingIndicatorHandle, TypingIndicatorOpts, } from './InstantDuxRoom.js';
8
+ export { useInfiniteQuery } from './useInfiniteQuery.js';
9
+ export type { InfiniteQueryResult } from './useInfiniteQuery.js';
10
+ export { isClient, tryOnScopeDispose } from './utils.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vue/baseline/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAClE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EACL,cAAc,EACd,KAAK,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tryOnScopeDispose = exports.isClient = exports.useInfiniteQuery = exports.useTypingIndicator = exports.useTopicEffect = exports.useSyncPresence = exports.usePublishTopic = exports.usePresence = exports.rooms = exports.InstantDuxRoom = exports.InstantDuxDatabase = exports.init = exports.Cursors = exports.Cursor = exports.SignedOut = exports.SignedIn = void 0;
4
+ // The internal baseline surface — consumed only by the overlay and the parity
5
+ // harness, never re-exported from `/vue`. See UPSTREAM.md.
6
+ var auth_js_1 = require("./components/auth.js");
7
+ Object.defineProperty(exports, "SignedIn", { enumerable: true, get: function () { return auth_js_1.SignedIn; } });
8
+ Object.defineProperty(exports, "SignedOut", { enumerable: true, get: function () { return auth_js_1.SignedOut; } });
9
+ var Cursor_js_1 = require("./components/Cursor.js");
10
+ Object.defineProperty(exports, "Cursor", { enumerable: true, get: function () { return Cursor_js_1.Cursor; } });
11
+ var Cursors_js_1 = require("./components/Cursors.js");
12
+ Object.defineProperty(exports, "Cursors", { enumerable: true, get: function () { return Cursors_js_1.Cursors; } });
13
+ var InstantDuxDatabase_js_1 = require("./InstantDuxDatabase.js");
14
+ Object.defineProperty(exports, "init", { enumerable: true, get: function () { return InstantDuxDatabase_js_1.init; } });
15
+ Object.defineProperty(exports, "InstantDuxDatabase", { enumerable: true, get: function () { return InstantDuxDatabase_js_1.InstantDuxDatabase; } });
16
+ var InstantDuxRoom_js_1 = require("./InstantDuxRoom.js");
17
+ Object.defineProperty(exports, "InstantDuxRoom", { enumerable: true, get: function () { return InstantDuxRoom_js_1.InstantDuxRoom; } });
18
+ Object.defineProperty(exports, "rooms", { enumerable: true, get: function () { return InstantDuxRoom_js_1.rooms; } });
19
+ Object.defineProperty(exports, "usePresence", { enumerable: true, get: function () { return InstantDuxRoom_js_1.usePresence; } });
20
+ Object.defineProperty(exports, "usePublishTopic", { enumerable: true, get: function () { return InstantDuxRoom_js_1.usePublishTopic; } });
21
+ Object.defineProperty(exports, "useSyncPresence", { enumerable: true, get: function () { return InstantDuxRoom_js_1.useSyncPresence; } });
22
+ Object.defineProperty(exports, "useTopicEffect", { enumerable: true, get: function () { return InstantDuxRoom_js_1.useTopicEffect; } });
23
+ Object.defineProperty(exports, "useTypingIndicator", { enumerable: true, get: function () { return InstantDuxRoom_js_1.useTypingIndicator; } });
24
+ var useInfiniteQuery_js_1 = require("./useInfiniteQuery.js");
25
+ Object.defineProperty(exports, "useInfiniteQuery", { enumerable: true, get: function () { return useInfiniteQuery_js_1.useInfiniteQuery; } });
26
+ var utils_js_1 = require("./utils.js");
27
+ Object.defineProperty(exports, "isClient", { enumerable: true, get: function () { return utils_js_1.isClient; } });
28
+ Object.defineProperty(exports, "tryOnScopeDispose", { enumerable: true, get: function () { return utils_js_1.tryOnScopeDispose; } });
29
+ //# sourceMappingURL=index.js.map