typeferry 0.6.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 (392) hide show
  1. package/README.md +88 -0
  2. package/dist/auth/client/cross-tab-sync.d.ts +21 -0
  3. package/dist/auth/client/cross-tab-sync.js +56 -0
  4. package/dist/auth/client/cross-tab-sync.js.map +1 -0
  5. package/dist/auth/client/index.d.ts +2 -0
  6. package/dist/auth/client/index.js +3 -0
  7. package/dist/auth/client/index.js.map +1 -0
  8. package/dist/auth/client/oauth/google-provider.d.ts +11 -0
  9. package/dist/auth/client/oauth/google-provider.js +11 -0
  10. package/dist/auth/client/oauth/google-provider.js.map +1 -0
  11. package/dist/auth/client/oauth/index.d.ts +4 -0
  12. package/dist/auth/client/oauth/index.js +3 -0
  13. package/dist/auth/client/oauth/index.js.map +1 -0
  14. package/dist/auth/client/oauth/use-google-login.d.ts +39 -0
  15. package/dist/auth/client/oauth/use-google-login.js +55 -0
  16. package/dist/auth/client/oauth/use-google-login.js.map +1 -0
  17. package/dist/auth/client/token-refresh.d.ts +21 -0
  18. package/dist/auth/client/token-refresh.js +212 -0
  19. package/dist/auth/client/token-refresh.js.map +1 -0
  20. package/dist/auth/index.d.ts +7 -0
  21. package/dist/auth/index.js +9 -0
  22. package/dist/auth/index.js.map +1 -0
  23. package/dist/auth/server/cookie-utils.d.ts +42 -0
  24. package/dist/auth/server/cookie-utils.js +91 -0
  25. package/dist/auth/server/cookie-utils.js.map +1 -0
  26. package/dist/auth/server/device-info.d.ts +23 -0
  27. package/dist/auth/server/device-info.js +52 -0
  28. package/dist/auth/server/device-info.js.map +1 -0
  29. package/dist/auth/server/index.d.ts +4 -0
  30. package/dist/auth/server/index.js +5 -0
  31. package/dist/auth/server/index.js.map +1 -0
  32. package/dist/auth/server/jwt-utils.d.ts +29 -0
  33. package/dist/auth/server/jwt-utils.js +53 -0
  34. package/dist/auth/server/jwt-utils.js.map +1 -0
  35. package/dist/auth/server/oauth/google.d.ts +31 -0
  36. package/dist/auth/server/oauth/google.js +40 -0
  37. package/dist/auth/server/oauth/google.js.map +1 -0
  38. package/dist/auth/server/oauth/index.d.ts +3 -0
  39. package/dist/auth/server/oauth/index.js +2 -0
  40. package/dist/auth/server/oauth/index.js.map +1 -0
  41. package/dist/auth/server/oauth/types.d.ts +37 -0
  42. package/dist/auth/server/oauth/types.js +2 -0
  43. package/dist/auth/server/oauth/types.js.map +1 -0
  44. package/dist/auth/server/session-manager.d.ts +46 -0
  45. package/dist/auth/server/session-manager.js +167 -0
  46. package/dist/auth/server/session-manager.js.map +1 -0
  47. package/dist/auth/types.d.ts +197 -0
  48. package/dist/auth/types.js +2 -0
  49. package/dist/auth/types.js.map +1 -0
  50. package/dist/client/call-method-proxy.d.ts +2 -0
  51. package/dist/client/call-method-proxy.js +22 -0
  52. package/dist/client/call-method-proxy.js.map +1 -0
  53. package/dist/client/client-channel.d.ts +43 -0
  54. package/dist/client/client-channel.js +148 -0
  55. package/dist/client/client-channel.js.map +1 -0
  56. package/dist/client/client-http.d.ts +27 -0
  57. package/dist/client/client-http.js +106 -0
  58. package/dist/client/client-http.js.map +1 -0
  59. package/dist/client/client-socket.d.ts +85 -0
  60. package/dist/client/client-socket.js +317 -0
  61. package/dist/client/client-socket.js.map +1 -0
  62. package/dist/client/client.d.ts +149 -0
  63. package/dist/client/client.js +401 -0
  64. package/dist/client/client.js.map +1 -0
  65. package/dist/client/context-manager.d.ts +54 -0
  66. package/dist/client/context-manager.js +89 -0
  67. package/dist/client/context-manager.js.map +1 -0
  68. package/dist/client/idle-timer.d.ts +35 -0
  69. package/dist/client/idle-timer.js +101 -0
  70. package/dist/client/idle-timer.js.map +1 -0
  71. package/dist/client/index.d.ts +6 -0
  72. package/dist/client/index.js +7 -0
  73. package/dist/client/index.js.map +1 -0
  74. package/dist/client/logger.d.ts +76 -0
  75. package/dist/client/logger.js +129 -0
  76. package/dist/client/logger.js.map +1 -0
  77. package/dist/client/visibility-manager.d.ts +62 -0
  78. package/dist/client/visibility-manager.js +177 -0
  79. package/dist/client/visibility-manager.js.map +1 -0
  80. package/dist/ejson/adjust-types-from-json-value.d.ts +1 -0
  81. package/dist/ejson/adjust-types-from-json-value.js +35 -0
  82. package/dist/ejson/adjust-types-from-json-value.js.map +1 -0
  83. package/dist/ejson/base64.d.ts +11 -0
  84. package/dist/ejson/base64.js +87 -0
  85. package/dist/ejson/base64.js.map +1 -0
  86. package/dist/ejson/built-in-converters.d.ts +1 -0
  87. package/dist/ejson/built-in-converters.js +137 -0
  88. package/dist/ejson/built-in-converters.js.map +1 -0
  89. package/dist/ejson/clone.d.ts +1 -0
  90. package/dist/ejson/clone.js +80 -0
  91. package/dist/ejson/clone.js.map +1 -0
  92. package/dist/ejson/custom-models.d.ts +38 -0
  93. package/dist/ejson/custom-models.js +76 -0
  94. package/dist/ejson/custom-models.js.map +1 -0
  95. package/dist/ejson/custom-types.d.ts +1 -0
  96. package/dist/ejson/custom-types.js +2 -0
  97. package/dist/ejson/custom-types.js.map +1 -0
  98. package/dist/ejson/equals.d.ts +1 -0
  99. package/dist/ejson/equals.js +117 -0
  100. package/dist/ejson/equals.js.map +1 -0
  101. package/dist/ejson/from-json-value.d.ts +1 -0
  102. package/dist/ejson/from-json-value.js +13 -0
  103. package/dist/ejson/from-json-value.js.map +1 -0
  104. package/dist/ejson/helpers/adjust-types-to-json-value.d.ts +1 -0
  105. package/dist/ejson/helpers/adjust-types-to-json-value.js +36 -0
  106. package/dist/ejson/helpers/adjust-types-to-json-value.js.map +1 -0
  107. package/dist/ejson/helpers/from-json-value-helper.d.ts +1 -0
  108. package/dist/ejson/helpers/from-json-value-helper.js +24 -0
  109. package/dist/ejson/helpers/from-json-value-helper.js.map +1 -0
  110. package/dist/ejson/helpers/to-json-value-helper.d.ts +1 -0
  111. package/dist/ejson/helpers/to-json-value-helper.js +15 -0
  112. package/dist/ejson/helpers/to-json-value-helper.js.map +1 -0
  113. package/dist/ejson/index.d.ts +27 -0
  114. package/dist/ejson/index.js +54 -0
  115. package/dist/ejson/index.js.map +1 -0
  116. package/dist/ejson/is-binary.d.ts +2 -0
  117. package/dist/ejson/is-binary.js +5 -0
  118. package/dist/ejson/is-binary.js.map +1 -0
  119. package/dist/ejson/parse.d.ts +6 -0
  120. package/dist/ejson/parse.js +12 -0
  121. package/dist/ejson/parse.js.map +1 -0
  122. package/dist/ejson/stable-stringify.d.ts +10 -0
  123. package/dist/ejson/stable-stringify.js +25 -0
  124. package/dist/ejson/stable-stringify.js.map +1 -0
  125. package/dist/ejson/stringify.d.ts +5 -0
  126. package/dist/ejson/stringify.js +15 -0
  127. package/dist/ejson/stringify.js.map +1 -0
  128. package/dist/ejson/to-json-value.d.ts +1 -0
  129. package/dist/ejson/to-json-value.js +17 -0
  130. package/dist/ejson/to-json-value.js.map +1 -0
  131. package/dist/ejson/utils.d.ts +18 -0
  132. package/dist/ejson/utils.js +43 -0
  133. package/dist/ejson/utils.js.map +1 -0
  134. package/dist/mongodb/change-streams.d.ts +31 -0
  135. package/dist/mongodb/change-streams.js +142 -0
  136. package/dist/mongodb/change-streams.js.map +1 -0
  137. package/dist/mongodb/client.d.ts +13 -0
  138. package/dist/mongodb/client.js +30 -0
  139. package/dist/mongodb/client.js.map +1 -0
  140. package/dist/mongodb/decorators/collection.d.ts +9 -0
  141. package/dist/mongodb/decorators/collection.js +26 -0
  142. package/dist/mongodb/decorators/collection.js.map +1 -0
  143. package/dist/mongodb/decorators/index.d.ts +4 -0
  144. package/dist/mongodb/decorators/index.js +5 -0
  145. package/dist/mongodb/decorators/index.js.map +1 -0
  146. package/dist/mongodb/decorators/metadata.d.ts +21 -0
  147. package/dist/mongodb/decorators/metadata.js +29 -0
  148. package/dist/mongodb/decorators/metadata.js.map +1 -0
  149. package/dist/mongodb/decorators/register.d.ts +3 -0
  150. package/dist/mongodb/decorators/register.js +10 -0
  151. package/dist/mongodb/decorators/register.js.map +1 -0
  152. package/dist/mongodb/decorators/watch.d.ts +4 -0
  153. package/dist/mongodb/decorators/watch.js +10 -0
  154. package/dist/mongodb/decorators/watch.js.map +1 -0
  155. package/dist/mongodb/filters.d.ts +20 -0
  156. package/dist/mongodb/filters.js +40 -0
  157. package/dist/mongodb/filters.js.map +1 -0
  158. package/dist/mongodb/find-one-or-create.d.ts +4 -0
  159. package/dist/mongodb/find-one-or-create.js +16 -0
  160. package/dist/mongodb/find-one-or-create.js.map +1 -0
  161. package/dist/mongodb/index.d.ts +10 -0
  162. package/dist/mongodb/index.js +11 -0
  163. package/dist/mongodb/index.js.map +1 -0
  164. package/dist/mongodb/live/client.d.ts +52 -0
  165. package/dist/mongodb/live/client.js +266 -0
  166. package/dist/mongodb/live/client.js.map +1 -0
  167. package/dist/mongodb/live/engine.d.ts +55 -0
  168. package/dist/mongodb/live/engine.js +440 -0
  169. package/dist/mongodb/live/engine.js.map +1 -0
  170. package/dist/mongodb/live/index.d.ts +5 -0
  171. package/dist/mongodb/live/index.js +6 -0
  172. package/dist/mongodb/live/index.js.map +1 -0
  173. package/dist/mongodb/live/observer.d.ts +58 -0
  174. package/dist/mongodb/live/observer.js +246 -0
  175. package/dist/mongodb/live/observer.js.map +1 -0
  176. package/dist/mongodb/live/publication.d.ts +4 -0
  177. package/dist/mongodb/live/publication.js +30 -0
  178. package/dist/mongodb/live/publication.js.map +1 -0
  179. package/dist/mongodb/live/source.d.ts +55 -0
  180. package/dist/mongodb/live/source.js +197 -0
  181. package/dist/mongodb/live/source.js.map +1 -0
  182. package/dist/mongodb/live/types.d.ts +266 -0
  183. package/dist/mongodb/live/types.js +29 -0
  184. package/dist/mongodb/live/types.js.map +1 -0
  185. package/dist/mongodb/live/window.d.ts +7 -0
  186. package/dist/mongodb/live/window.js +93 -0
  187. package/dist/mongodb/live/window.js.map +1 -0
  188. package/dist/mongodb/registry.d.ts +35 -0
  189. package/dist/mongodb/registry.js +129 -0
  190. package/dist/mongodb/registry.js.map +1 -0
  191. package/dist/mongodb/schema.d.ts +16 -0
  192. package/dist/mongodb/schema.js +43 -0
  193. package/dist/mongodb/schema.js.map +1 -0
  194. package/dist/mongodb/timestamps.d.ts +17 -0
  195. package/dist/mongodb/timestamps.js +27 -0
  196. package/dist/mongodb/timestamps.js.map +1 -0
  197. package/dist/mongodb/types.d.ts +120 -0
  198. package/dist/mongodb/types.js +10 -0
  199. package/dist/mongodb/types.js.map +1 -0
  200. package/dist/react/components/client-provider.d.ts +8 -0
  201. package/dist/react/components/client-provider.js +23 -0
  202. package/dist/react/components/client-provider.js.map +1 -0
  203. package/dist/react/components/index.d.ts +1 -0
  204. package/dist/react/components/index.js +2 -0
  205. package/dist/react/components/index.js.map +1 -0
  206. package/dist/react/hooks/index.d.ts +13 -0
  207. package/dist/react/hooks/index.js +14 -0
  208. package/dist/react/hooks/index.js.map +1 -0
  209. package/dist/react/hooks/use-auth.d.ts +4 -0
  210. package/dist/react/hooks/use-auth.js +35 -0
  211. package/dist/react/hooks/use-auth.js.map +1 -0
  212. package/dist/react/hooks/use-caller.d.ts +5 -0
  213. package/dist/react/hooks/use-caller.js +13 -0
  214. package/dist/react/hooks/use-caller.js.map +1 -0
  215. package/dist/react/hooks/use-channel.d.ts +1 -0
  216. package/dist/react/hooks/use-channel.js +7 -0
  217. package/dist/react/hooks/use-channel.js.map +1 -0
  218. package/dist/react/hooks/use-circuit-breaker.d.ts +6 -0
  219. package/dist/react/hooks/use-circuit-breaker.js +16 -0
  220. package/dist/react/hooks/use-circuit-breaker.js.map +1 -0
  221. package/dist/react/hooks/use-client.d.ts +3 -0
  222. package/dist/react/hooks/use-client.js +13 -0
  223. package/dist/react/hooks/use-client.js.map +1 -0
  224. package/dist/react/hooks/use-connection-state.d.ts +13 -0
  225. package/dist/react/hooks/use-connection-state.js +55 -0
  226. package/dist/react/hooks/use-connection-state.js.map +1 -0
  227. package/dist/react/hooks/use-creation.d.ts +5 -0
  228. package/dist/react/hooks/use-creation.js +17 -0
  229. package/dist/react/hooks/use-creation.js.map +1 -0
  230. package/dist/react/hooks/use-deps-change.d.ts +1 -0
  231. package/dist/react/hooks/use-deps-change.js +11 -0
  232. package/dist/react/hooks/use-deps-change.js.map +1 -0
  233. package/dist/react/hooks/use-local-event.d.ts +13 -0
  234. package/dist/react/hooks/use-local-event.js +32 -0
  235. package/dist/react/hooks/use-local-event.js.map +1 -0
  236. package/dist/react/hooks/use-method-refresh.d.ts +15 -0
  237. package/dist/react/hooks/use-method-refresh.js +48 -0
  238. package/dist/react/hooks/use-method-refresh.js.map +1 -0
  239. package/dist/react/hooks/use-method.d.ts +26 -0
  240. package/dist/react/hooks/use-method.js +161 -0
  241. package/dist/react/hooks/use-method.js.map +1 -0
  242. package/dist/react/hooks/use-mongodb-live-publication.d.ts +13 -0
  243. package/dist/react/hooks/use-mongodb-live-publication.js +26 -0
  244. package/dist/react/hooks/use-mongodb-live-publication.js.map +1 -0
  245. package/dist/react/hooks/use-object.d.ts +2 -0
  246. package/dist/react/hooks/use-object.js +22 -0
  247. package/dist/react/hooks/use-object.js.map +1 -0
  248. package/dist/react/hooks/use-subscribe.d.ts +8 -0
  249. package/dist/react/hooks/use-subscribe.js +49 -0
  250. package/dist/react/hooks/use-subscribe.js.map +1 -0
  251. package/dist/react/hooks/use-throttled-events.d.ts +7 -0
  252. package/dist/react/hooks/use-throttled-events.js +11 -0
  253. package/dist/react/hooks/use-throttled-events.js.map +1 -0
  254. package/dist/react/hooks/use-token-refresh.d.ts +13 -0
  255. package/dist/react/hooks/use-token-refresh.js +40 -0
  256. package/dist/react/hooks/use-token-refresh.js.map +1 -0
  257. package/dist/react/index.d.ts +2 -0
  258. package/dist/react/index.js +3 -0
  259. package/dist/react/index.js.map +1 -0
  260. package/dist/server/client-node.d.ts +76 -0
  261. package/dist/server/client-node.js +159 -0
  262. package/dist/server/client-node.js.map +1 -0
  263. package/dist/server/create-method-proxy.d.ts +2 -0
  264. package/dist/server/create-method-proxy.js +16 -0
  265. package/dist/server/create-method-proxy.js.map +1 -0
  266. package/dist/server/decorators/cached.d.ts +37 -0
  267. package/dist/server/decorators/cached.js +65 -0
  268. package/dist/server/decorators/cached.js.map +1 -0
  269. package/dist/server/decorators/index.d.ts +14 -0
  270. package/dist/server/decorators/index.js +13 -0
  271. package/dist/server/decorators/index.js.map +1 -0
  272. package/dist/server/decorators/infer.d.ts +78 -0
  273. package/dist/server/decorators/infer.js +11 -0
  274. package/dist/server/decorators/infer.js.map +1 -0
  275. package/dist/server/decorators/metadata.d.ts +60 -0
  276. package/dist/server/decorators/metadata.js +77 -0
  277. package/dist/server/decorators/metadata.js.map +1 -0
  278. package/dist/server/decorators/method.d.ts +14 -0
  279. package/dist/server/decorators/method.js +25 -0
  280. package/dist/server/decorators/method.js.map +1 -0
  281. package/dist/server/decorators/namespace.d.ts +25 -0
  282. package/dist/server/decorators/namespace.js +34 -0
  283. package/dist/server/decorators/namespace.js.map +1 -0
  284. package/dist/server/decorators/protected.d.ts +36 -0
  285. package/dist/server/decorators/protected.js +61 -0
  286. package/dist/server/decorators/protected.js.map +1 -0
  287. package/dist/server/decorators/register.d.ts +25 -0
  288. package/dist/server/decorators/register.js +72 -0
  289. package/dist/server/decorators/register.js.map +1 -0
  290. package/dist/server/decorators/schema.d.ts +17 -0
  291. package/dist/server/decorators/schema.js +27 -0
  292. package/dist/server/decorators/schema.js.map +1 -0
  293. package/dist/server/decorators/use.d.ts +22 -0
  294. package/dist/server/decorators/use.js +32 -0
  295. package/dist/server/decorators/use.js.map +1 -0
  296. package/dist/server/default-methods.d.ts +8 -0
  297. package/dist/server/default-methods.js +8 -0
  298. package/dist/server/default-methods.js.map +1 -0
  299. package/dist/server/event.d.ts +42 -0
  300. package/dist/server/event.js +53 -0
  301. package/dist/server/event.js.map +1 -0
  302. package/dist/server/index.d.ts +10 -0
  303. package/dist/server/index.js +11 -0
  304. package/dist/server/index.js.map +1 -0
  305. package/dist/server/method.d.ts +95 -0
  306. package/dist/server/method.js +113 -0
  307. package/dist/server/method.js.map +1 -0
  308. package/dist/server/methods.d.ts +11 -0
  309. package/dist/server/methods.js +74 -0
  310. package/dist/server/methods.js.map +1 -0
  311. package/dist/server/request-types.d.ts +20 -0
  312. package/dist/server/request-types.js +8 -0
  313. package/dist/server/request-types.js.map +1 -0
  314. package/dist/server/room-registry.d.ts +28 -0
  315. package/dist/server/room-registry.js +83 -0
  316. package/dist/server/room-registry.js.map +1 -0
  317. package/dist/server/server-channel.d.ts +32 -0
  318. package/dist/server/server-channel.js +104 -0
  319. package/dist/server/server-channel.js.map +1 -0
  320. package/dist/server/server.d.ts +124 -0
  321. package/dist/server/server.js +243 -0
  322. package/dist/server/server.js.map +1 -0
  323. package/dist/server/transports/hono-rate-limit.d.ts +15 -0
  324. package/dist/server/transports/hono-rate-limit.js +36 -0
  325. package/dist/server/transports/hono-rate-limit.js.map +1 -0
  326. package/dist/server/transports/index.d.ts +4 -0
  327. package/dist/server/transports/index.js +5 -0
  328. package/dist/server/transports/index.js.map +1 -0
  329. package/dist/server/transports/node-hono-transport-contract.d.ts +16 -0
  330. package/dist/server/transports/node-hono-transport-contract.js +18 -0
  331. package/dist/server/transports/node-hono-transport-contract.js.map +1 -0
  332. package/dist/server/transports/node-hono-transport.d.ts +47 -0
  333. package/dist/server/transports/node-hono-transport.js +327 -0
  334. package/dist/server/transports/node-hono-transport.js.map +1 -0
  335. package/dist/server/transports/redis-transport.d.ts +34 -0
  336. package/dist/server/transports/redis-transport.js +84 -0
  337. package/dist/server/transports/redis-transport.js.map +1 -0
  338. package/dist/server/transports/websocket-transport.d.ts +42 -0
  339. package/dist/server/transports/websocket-transport.js +174 -0
  340. package/dist/server/transports/websocket-transport.js.map +1 -0
  341. package/dist/server/transports/ws-shared.d.ts +37 -0
  342. package/dist/server/transports/ws-shared.js +188 -0
  343. package/dist/server/transports/ws-shared.js.map +1 -0
  344. package/dist/server/typeferry-async-local-storage.d.ts +5 -0
  345. package/dist/server/typeferry-async-local-storage.js +6 -0
  346. package/dist/server/typeferry-async-local-storage.js.map +1 -0
  347. package/dist/server/types.d.ts +27 -0
  348. package/dist/server/types.js +11 -0
  349. package/dist/server/types.js.map +1 -0
  350. package/dist/utils/constants.d.ts +72 -0
  351. package/dist/utils/constants.js +79 -0
  352. package/dist/utils/constants.js.map +1 -0
  353. package/dist/utils/environment.d.ts +8 -0
  354. package/dist/utils/environment.js +17 -0
  355. package/dist/utils/environment.js.map +1 -0
  356. package/dist/utils/errors.d.ts +26 -0
  357. package/dist/utils/errors.js +35 -0
  358. package/dist/utils/errors.js.map +1 -0
  359. package/dist/utils/event-emitter.d.ts +37 -0
  360. package/dist/utils/event-emitter.js +104 -0
  361. package/dist/utils/event-emitter.js.map +1 -0
  362. package/dist/utils/events.d.ts +7 -0
  363. package/dist/utils/events.js +23 -0
  364. package/dist/utils/events.js.map +1 -0
  365. package/dist/utils/helpers.d.ts +14 -0
  366. package/dist/utils/helpers.js +40 -0
  367. package/dist/utils/helpers.js.map +1 -0
  368. package/dist/utils/index.d.ts +11 -0
  369. package/dist/utils/index.js +12 -0
  370. package/dist/utils/index.js.map +1 -0
  371. package/dist/utils/intercept.d.ts +7 -0
  372. package/dist/utils/intercept.js +21 -0
  373. package/dist/utils/intercept.js.map +1 -0
  374. package/dist/utils/iterator.d.ts +9 -0
  375. package/dist/utils/iterator.js +28 -0
  376. package/dist/utils/iterator.js.map +1 -0
  377. package/dist/utils/lodash.d.ts +33 -0
  378. package/dist/utils/lodash.js +123 -0
  379. package/dist/utils/lodash.js.map +1 -0
  380. package/dist/utils/presentation.d.ts +19 -0
  381. package/dist/utils/presentation.js +25 -0
  382. package/dist/utils/presentation.js.map +1 -0
  383. package/dist/utils/promise.d.ts +6 -0
  384. package/dist/utils/promise.js +17 -0
  385. package/dist/utils/promise.js.map +1 -0
  386. package/dist/utils/protocol.d.ts +110 -0
  387. package/dist/utils/protocol.js +59 -0
  388. package/dist/utils/protocol.js.map +1 -0
  389. package/dist/utils/types.d.ts +23 -0
  390. package/dist/utils/types.js +2 -0
  391. package/dist/utils/types.js.map +1 -0
  392. package/package.json +187 -0
@@ -0,0 +1,4 @@
1
+ export * from './collection.js';
2
+ export * from './metadata.js';
3
+ export * from './register.js';
4
+ export * from './watch.js';
@@ -0,0 +1,5 @@
1
+ export * from './collection.js';
2
+ export * from './metadata.js';
3
+ export * from './register.js';
4
+ export * from './watch.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mongodb/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { Document } from 'mongodb';
2
+ import type { MongoCollectionClass, MongoCollectionDefinition, MongoIndexDefinition, MongoWatchDefinition } from '../types.js';
3
+ /** Internal metadata stored for decorated MongoDB collection classes. */
4
+ export interface MutableMongoCollectionDefinition<TDocument extends Document = Document> {
5
+ /** Decorated class that owns this metadata. */
6
+ Class: MongoCollectionClass;
7
+ /** MongoDB collection name. */
8
+ name?: string;
9
+ /** Optional Zod schema stored by `@MongoSchema`. */
10
+ schema?: MongoCollectionDefinition<TDocument>['schema'];
11
+ /** Declared index metadata. */
12
+ indexes: MongoIndexDefinition[];
13
+ /** Declared watch metadata. */
14
+ watches: MongoWatchDefinition<TDocument>[];
15
+ }
16
+ /** WeakMap store for MongoDB collection decorator metadata. */
17
+ export declare const MONGO_COLLECTION_META: WeakMap<MongoCollectionClass, MutableMongoCollectionDefinition<Document>>;
18
+ /** Returns existing mutable collection metadata or creates an empty record. */
19
+ export declare function getOrCreateMongoCollectionMeta(Class: MongoCollectionClass): MutableMongoCollectionDefinition;
20
+ /** Reads immutable collection metadata when registration validates it exists. */
21
+ export declare function getMongoCollectionMeta(Class: MongoCollectionClass): MongoCollectionDefinition | undefined;
@@ -0,0 +1,29 @@
1
+ /** WeakMap store for MongoDB collection decorator metadata. */
2
+ export const MONGO_COLLECTION_META = new WeakMap();
3
+ /** Returns existing mutable collection metadata or creates an empty record. */
4
+ export function getOrCreateMongoCollectionMeta(Class) {
5
+ let meta = MONGO_COLLECTION_META.get(Class);
6
+ if (!meta) {
7
+ meta = {
8
+ Class,
9
+ indexes: [],
10
+ watches: [],
11
+ };
12
+ MONGO_COLLECTION_META.set(Class, meta);
13
+ }
14
+ return meta;
15
+ }
16
+ /** Reads immutable collection metadata when registration validates it exists. */
17
+ export function getMongoCollectionMeta(Class) {
18
+ const meta = MONGO_COLLECTION_META.get(Class);
19
+ if (!meta?.name)
20
+ return undefined;
21
+ return {
22
+ Class,
23
+ name: meta.name,
24
+ schema: meta.schema,
25
+ indexes: [...meta.indexes],
26
+ watches: [...meta.watches],
27
+ };
28
+ }
29
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/mongodb/decorators/metadata.ts"],"names":[],"mappings":"AAyBA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAG7C,CAAA;AAEH,+EAA+E;AAC/E,MAAM,UAAU,8BAA8B,CAC5C,KAA2B;IAE3B,IAAI,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,GAAG;YACL,KAAK;YACL,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACZ,CAAA;QACD,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CACpC,KAA2B;IAE3B,MAAM,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7C,IAAI,CAAC,IAAI,EAAE,IAAI;QAAE,OAAO,SAAS,CAAA;IAEjC,OAAO;QACL,KAAK;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;KAC3B,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MongoCollectionClass, MongoCollectionDefinition } from '../types.js';
2
+ /** Reads and validates metadata for a decorated MongoDB collection class. */
3
+ export declare function getMongoCollectionDefinition(Class: MongoCollectionClass): MongoCollectionDefinition;
@@ -0,0 +1,10 @@
1
+ import { getMongoCollectionMeta } from './metadata.js';
2
+ /** Reads and validates metadata for a decorated MongoDB collection class. */
3
+ export function getMongoCollectionDefinition(Class) {
4
+ const definition = getMongoCollectionMeta(Class);
5
+ if (!definition) {
6
+ throw new Error(`Class "${Class.name}" is missing @MongoCollection decorator.`);
7
+ }
8
+ return definition;
9
+ }
10
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/mongodb/decorators/register.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,6EAA6E;AAC7E,MAAM,UAAU,4BAA4B,CAC1C,KAA2B;IAE3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;IAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,CAAC,IAAI,0CAA0C,CAC/D,CAAA;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Document } from 'mongodb';
2
+ import type { MongoCollectionClass, MongoWatchDefinition } from '../types.js';
3
+ /** Declares a MongoDB change stream that emits through TypeFerry events. */
4
+ export declare function MongoWatch<TDocument extends Document = Document>(definition: MongoWatchDefinition<TDocument>): <TClass extends MongoCollectionClass>(Class: TClass, context: ClassDecoratorContext<TClass>) => TClass;
@@ -0,0 +1,10 @@
1
+ import { getOrCreateMongoCollectionMeta } from './metadata.js';
2
+ /** Declares a MongoDB change stream that emits through TypeFerry events. */
3
+ export function MongoWatch(definition) {
4
+ return function (Class, _context) {
5
+ const meta = getOrCreateMongoCollectionMeta(Class);
6
+ meta.watches.push(definition);
7
+ return Class;
8
+ };
9
+ }
10
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/mongodb/decorators/watch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAA;AAE3D,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CACxB,UAA2C;IAK3C,OAAO,UACL,KAAa,EACb,QAAuC;QAEvC,MAAM,IAAI,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAA;QAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAA4C,CAAC,CAAA;QAC/D,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Document, ObjectId, UpdateFilter } from 'mongodb';
2
+ /** Contract for documents that use the explicit soft-delete helpers. */
3
+ export interface SoftDeleted extends Document {
4
+ /** Deletion timestamp, or `null` while active. */
5
+ deletedAt?: Date | null;
6
+ /** User id that deleted the document, when available. */
7
+ deletedBy?: ObjectId | null;
8
+ }
9
+ /** Adds an explicit active-document predicate to a native MongoDB filter. */
10
+ export declare function active<TFilter extends Document>(filter?: TFilter): TFilter & {
11
+ deletedAt: null;
12
+ };
13
+ /** Builds a native update that marks a document as soft-deleted. */
14
+ export declare function markDeleted(deletedBy: string | ObjectId, options?: {
15
+ readonly now?: Date;
16
+ }): UpdateFilter<SoftDeleted>;
17
+ /** Builds a native update that removes soft-delete markers. */
18
+ export declare function markRestored(): UpdateFilter<SoftDeleted>;
19
+ /** Converts a whitespace-delimited projection string into a driver projection document. */
20
+ export declare function projection(fields: string): Document;
@@ -0,0 +1,40 @@
1
+ import { toObjectId } from './schema.js';
2
+ /** Adds an explicit active-document predicate to a native MongoDB filter. */
3
+ export function active(filter = {}) {
4
+ if (Object.prototype.hasOwnProperty.call(filter, 'deletedAt')) {
5
+ throw new Error('active() cannot override an explicit deletedAt filter.');
6
+ }
7
+ return {
8
+ ...filter,
9
+ deletedAt: null,
10
+ };
11
+ }
12
+ /** Builds a native update that marks a document as soft-deleted. */
13
+ export function markDeleted(deletedBy, options = {}) {
14
+ return {
15
+ $set: {
16
+ deletedAt: options.now ?? new Date(),
17
+ deletedBy: toObjectId(deletedBy),
18
+ },
19
+ };
20
+ }
21
+ /** Builds a native update that removes soft-delete markers. */
22
+ export function markRestored() {
23
+ return {
24
+ $unset: {
25
+ deletedAt: '',
26
+ deletedBy: '',
27
+ },
28
+ };
29
+ }
30
+ /** Converts a whitespace-delimited projection string into a driver projection document. */
31
+ export function projection(fields) {
32
+ return fields
33
+ .split(/\s+/)
34
+ .filter(Boolean)
35
+ .reduce((projected, field) => {
36
+ projected[field] = 1;
37
+ return projected;
38
+ }, {});
39
+ }
40
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/mongodb/filters.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAUrC,6EAA6E;AAC7E,MAAM,UAAU,MAAM,CACpB,SAAkB,EAAa;IAE/B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO;QACL,GAAG,MAAM;QACT,SAAS,EAAE,IAAI;KAChB,CAAA;AACH,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,WAAW,CACzB,SAA4B,EAC5B,UAAmC,EAAE;IAErC,OAAO;QACL,IAAI,EAAE;YACJ,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE;YACpC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC;SACjC;KACF,CAAA;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,YAAY;IAC1B,OAAO;QACL,MAAM,EAAE;YACN,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,EAAE;SACd;KAC2B,CAAA;AAChC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM;SACV,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC;SACf,MAAM,CAAW,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACrC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC,EAAE,EAAE,CAAC,CAAA;AACV,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Collection, Document, Filter, OptionalUnlessRequiredId } from 'mongodb';
2
+ import type { MongoSessionOptions } from './types.js';
3
+ /** Finds one matching document or atomically creates it with `$setOnInsert`. */
4
+ export declare function findOneOrCreate<TDocument extends Document>(collection: Collection<TDocument>, filter: Filter<TDocument>, create: OptionalUnlessRequiredId<TDocument>, options?: MongoSessionOptions): Promise<TDocument>;
@@ -0,0 +1,16 @@
1
+ /** Finds one matching document or atomically creates it with `$setOnInsert`. */
2
+ export async function findOneOrCreate(collection, filter, create, options = {}) {
3
+ const update = {
4
+ $setOnInsert: create,
5
+ };
6
+ const document = await collection.findOneAndUpdate(filter, update, {
7
+ upsert: true,
8
+ returnDocument: 'after',
9
+ session: options.session,
10
+ });
11
+ if (!document) {
12
+ throw new Error('findOneOrCreate failed to return an upserted document.');
13
+ }
14
+ return document;
15
+ }
16
+ //# sourceMappingURL=find-one-or-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-one-or-create.js","sourceRoot":"","sources":["../../src/mongodb/find-one-or-create.ts"],"names":[],"mappings":"AAUA,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAiC,EACjC,MAAyB,EACzB,MAA2C,EAC3C,UAA+B,EAAE;IAEjC,MAAM,MAAM,GAAG;QACb,YAAY,EAAE,MAAM;KACM,CAAA;IAE5B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;QACjE,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,OAAO;QACvB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAA;IAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO,QAAqB,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from './change-streams.js';
2
+ export * from './client.js';
3
+ export * from './decorators/index.js';
4
+ export * from './filters.js';
5
+ export * from './find-one-or-create.js';
6
+ export * from './live/index.js';
7
+ export * from './registry.js';
8
+ export * from './schema.js';
9
+ export * from './timestamps.js';
10
+ export * from './types.js';
@@ -0,0 +1,11 @@
1
+ export * from './change-streams.js';
2
+ export * from './client.js';
3
+ export * from './decorators/index.js';
4
+ export * from './filters.js';
5
+ export * from './find-one-or-create.js';
6
+ export * from './live/index.js';
7
+ export * from './registry.js';
8
+ export * from './schema.js';
9
+ export * from './timestamps.js';
10
+ export * from './types.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mongodb/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA"}
@@ -0,0 +1,52 @@
1
+ import type { Client } from '../../client/index.js';
2
+ import { type MongoLiveArgsOf, type MongoLiveClientDocument, type MongoLiveDocumentOf, type MongoLivePublicationDescriptor, type MongoLiveViewSnapshot } from './types.js';
3
+ /** Options used to create one framework-independent MongoDB live view. */
4
+ export interface CreateMongoLiveViewOptions<TDescriptor extends MongoLivePublicationDescriptor<string, unknown, MongoLiveClientDocument>> {
5
+ /** Connected TypeFerry client that owns the WebSocket subscription. */
6
+ readonly client: Client;
7
+ /** Typed named publication descriptor. */
8
+ readonly publication: TDescriptor;
9
+ /** Arguments inferred from the publication descriptor. */
10
+ readonly args: MongoLiveArgsOf<TDescriptor>;
11
+ }
12
+ /** Framework-independent materialized MongoDB live query. */
13
+ export declare class MongoLiveView<TDescriptor extends MongoLivePublicationDescriptor<string, unknown, MongoLiveClientDocument>> {
14
+ private readonly options;
15
+ private readonly subscriptionId;
16
+ private readonly documents;
17
+ private readonly listeners;
18
+ private readonly bufferedDeltas;
19
+ private generation;
20
+ private sequence;
21
+ private stopped;
22
+ private startPromise;
23
+ private resyncPromise;
24
+ private connectionEpoch;
25
+ private ordered;
26
+ private orderedDocuments;
27
+ private snapshot;
28
+ /** Creates an idle live handle; call `start()` to subscribe. */
29
+ constructor(options: CreateMongoLiveViewOptions<TDescriptor>);
30
+ /** Returns the immutable state consumed by framework adapters. */
31
+ readonly getSnapshot: () => MongoLiveViewSnapshot<MongoLiveDocumentOf<TDescriptor>>;
32
+ /** Registers a state listener compatible with `useSyncExternalStore`. */
33
+ readonly subscribe: (listener: () => void) => (() => void);
34
+ /** Starts the WebSocket subscription once. */
35
+ start(): Promise<void>;
36
+ /** Replaces local state from an authoritative server snapshot. */
37
+ resync(): Promise<void>;
38
+ /** Stops local delivery and releases the server subscription when connected. */
39
+ stop(): Promise<void>;
40
+ private subscribeRemote;
41
+ private applySnapshot;
42
+ private readonly handleEvent;
43
+ private applyDelta;
44
+ private readonly handleInitialized;
45
+ private readonly handleClosed;
46
+ private fail;
47
+ private updateSnapshot;
48
+ private currentDocuments;
49
+ private notify;
50
+ }
51
+ /** Creates one typed framework-independent MongoDB live view. */
52
+ export declare function createMongoLiveView<TDescriptor extends MongoLivePublicationDescriptor<string, unknown, MongoLiveClientDocument>>(options: CreateMongoLiveViewOptions<TDescriptor>): MongoLiveView<TDescriptor>;
@@ -0,0 +1,266 @@
1
+ import { ClientEvents, NO_CHANNEL, Presentation } from '../../utils/index.js';
2
+ import { canonicalId } from './observer.js';
3
+ import { MONGO_LIVE_EVENT, MONGO_LIVE_ORDERED_WINDOW_CAPABILITY, MONGO_LIVE_TYPED_OBJECT_ID_CAPABILITY, MONGO_LIVE_RESYNC_METHOD, MONGO_LIVE_SUBSCRIBE_METHOD, MONGO_LIVE_UNSUBSCRIBE_METHOD, } from './types.js';
4
+ import { applyMongoLiveWindowSplice } from './window.js';
5
+ const MONGO_LIVE_MAX_EARLY_DELTAS = 1_000;
6
+ /** Framework-independent materialized MongoDB live query. */
7
+ export class MongoLiveView {
8
+ options;
9
+ subscriptionId = Presentation.uuid();
10
+ documents = new Map();
11
+ listeners = new Set();
12
+ bufferedDeltas = [];
13
+ generation = null;
14
+ sequence = 0;
15
+ stopped = false;
16
+ startPromise = null;
17
+ resyncPromise = null;
18
+ connectionEpoch = 0;
19
+ ordered = false;
20
+ orderedDocuments = [];
21
+ snapshot = {
22
+ status: 'connecting',
23
+ documents: [],
24
+ error: null,
25
+ };
26
+ /** Creates an idle live handle; call `start()` to subscribe. */
27
+ constructor(options) {
28
+ this.options = options;
29
+ this.options.client.on(MONGO_LIVE_EVENT, this.handleEvent);
30
+ this.options.client.on(ClientEvents.INITIALIZED, this.handleInitialized);
31
+ this.options.client.on(ClientEvents.WEBSOCKET_CLOSED, this.handleClosed);
32
+ this.options.client.on(ClientEvents.LOGOUT, this.handleClosed);
33
+ }
34
+ /** Returns the immutable state consumed by framework adapters. */
35
+ getSnapshot = () => this.snapshot;
36
+ /** Registers a state listener compatible with `useSyncExternalStore`. */
37
+ subscribe = (listener) => {
38
+ this.listeners.add(listener);
39
+ return () => {
40
+ this.listeners.delete(listener);
41
+ };
42
+ };
43
+ /** Starts the WebSocket subscription once. */
44
+ start() {
45
+ if (this.stopped)
46
+ return Promise.resolve();
47
+ if (!this.startPromise) {
48
+ const epoch = this.connectionEpoch;
49
+ const promise = this.subscribeRemote(epoch).finally(() => {
50
+ if (this.startPromise === promise)
51
+ this.startPromise = null;
52
+ });
53
+ this.startPromise = promise;
54
+ }
55
+ return this.startPromise;
56
+ }
57
+ /** Replaces local state from an authoritative server snapshot. */
58
+ resync() {
59
+ if (this.stopped)
60
+ return Promise.resolve();
61
+ if (!this.generation)
62
+ return this.start();
63
+ if (!this.resyncPromise) {
64
+ this.updateSnapshot('resyncing');
65
+ const epoch = this.connectionEpoch;
66
+ const promise = this.options.client
67
+ .call(MONGO_LIVE_RESYNC_METHOD, {
68
+ subscriptionId: this.subscriptionId,
69
+ staleGeneration: this.generation,
70
+ }, liveCallOptions)
71
+ .then(snapshot => {
72
+ if (epoch === this.connectionEpoch)
73
+ this.applySnapshot(snapshot);
74
+ })
75
+ .catch(error => {
76
+ if (epoch === this.connectionEpoch)
77
+ this.fail(error);
78
+ })
79
+ .finally(() => {
80
+ if (this.resyncPromise === promise)
81
+ this.resyncPromise = null;
82
+ });
83
+ this.resyncPromise = promise;
84
+ }
85
+ return this.resyncPromise;
86
+ }
87
+ /** Stops local delivery and releases the server subscription when connected. */
88
+ async stop() {
89
+ if (this.stopped)
90
+ return;
91
+ this.stopped = true;
92
+ this.options.client.off(MONGO_LIVE_EVENT, this.handleEvent);
93
+ this.options.client.off(ClientEvents.INITIALIZED, this.handleInitialized);
94
+ this.options.client.off(ClientEvents.WEBSOCKET_CLOSED, this.handleClosed);
95
+ this.options.client.off(ClientEvents.LOGOUT, this.handleClosed);
96
+ this.documents.clear();
97
+ this.orderedDocuments = [];
98
+ this.bufferedDeltas.length = 0;
99
+ this.updateSnapshot('stopped');
100
+ if (this.options.client.clientSocket.ready) {
101
+ await this.options.client
102
+ .call(MONGO_LIVE_UNSUBSCRIBE_METHOD, { subscriptionId: this.subscriptionId }, { ...liveCallOptions, ignoreInit: true })
103
+ .catch(() => undefined);
104
+ }
105
+ }
106
+ async subscribeRemote(epoch) {
107
+ this.updateSnapshot('connecting');
108
+ try {
109
+ const snapshot = await this.options.client.call(MONGO_LIVE_SUBSCRIBE_METHOD, {
110
+ subscriptionId: this.subscriptionId,
111
+ publication: this.options.publication.name,
112
+ args: this.options.args,
113
+ capabilities: [
114
+ MONGO_LIVE_ORDERED_WINDOW_CAPABILITY,
115
+ MONGO_LIVE_TYPED_OBJECT_ID_CAPABILITY,
116
+ ],
117
+ }, liveCallOptions);
118
+ if (epoch === this.connectionEpoch)
119
+ this.applySnapshot(snapshot);
120
+ }
121
+ catch (error) {
122
+ if (epoch === this.connectionEpoch)
123
+ this.fail(error);
124
+ }
125
+ }
126
+ applySnapshot(snapshot) {
127
+ if (this.stopped)
128
+ return;
129
+ this.documents.clear();
130
+ this.ordered = snapshot.ordered ?? false;
131
+ if (this.ordered) {
132
+ this.orderedDocuments = [...snapshot.documents];
133
+ }
134
+ else {
135
+ this.orderedDocuments = [];
136
+ for (const document of snapshot.documents) {
137
+ this.documents.set(canonicalId(document._id), document);
138
+ }
139
+ }
140
+ this.generation = snapshot.generation;
141
+ this.sequence = snapshot.sequence;
142
+ const buffered = this.bufferedDeltas.splice(0);
143
+ for (const delta of buffered) {
144
+ if (delta.generation !== this.generation)
145
+ continue;
146
+ if (delta.sequence <= this.sequence)
147
+ continue;
148
+ if (!this.applyDelta(delta)) {
149
+ const activeResync = this.resyncPromise;
150
+ if (activeResync) {
151
+ void activeResync.then(() => this.resync());
152
+ }
153
+ else {
154
+ void this.resync();
155
+ }
156
+ return;
157
+ }
158
+ }
159
+ this.updateSnapshot('ready');
160
+ }
161
+ handleEvent = (event) => {
162
+ if (this.stopped || event.subscriptionId !== this.subscriptionId)
163
+ return;
164
+ if (event.type === 'resync-required') {
165
+ if (!this.generation || event.staleGeneration === this.generation) {
166
+ void this.resync();
167
+ }
168
+ return;
169
+ }
170
+ const delta = event;
171
+ if (this.snapshot.status !== 'ready' || !this.generation) {
172
+ if (this.bufferedDeltas.length >= MONGO_LIVE_MAX_EARLY_DELTAS) {
173
+ this.bufferedDeltas.length = 0;
174
+ if (this.generation)
175
+ void this.resync();
176
+ return;
177
+ }
178
+ this.bufferedDeltas.push(delta);
179
+ return;
180
+ }
181
+ if (delta.generation !== this.generation) {
182
+ void this.resync();
183
+ return;
184
+ }
185
+ if (delta.sequence <= this.sequence)
186
+ return;
187
+ if (!this.applyDelta(delta))
188
+ void this.resync();
189
+ };
190
+ applyDelta(delta) {
191
+ if (delta.sequence !== this.sequence + 1)
192
+ return false;
193
+ for (const operation of delta.operations) {
194
+ if (operation.type === 'window-splice') {
195
+ if (!this.ordered)
196
+ return false;
197
+ const applied = applyMongoLiveWindowSplice(this.orderedDocuments, operation);
198
+ if (!applied)
199
+ return false;
200
+ this.orderedDocuments = applied;
201
+ continue;
202
+ }
203
+ if (this.ordered)
204
+ return false;
205
+ if (operation.type === 'removed') {
206
+ this.documents.delete(canonicalId(operation.id));
207
+ }
208
+ else {
209
+ this.documents.set(canonicalId(operation.document._id), operation.document);
210
+ }
211
+ }
212
+ this.sequence = delta.sequence;
213
+ this.updateSnapshot('ready');
214
+ return true;
215
+ }
216
+ handleInitialized = () => {
217
+ if (!this.stopped)
218
+ void this.start();
219
+ };
220
+ handleClosed = () => {
221
+ if (!this.stopped) {
222
+ this.connectionEpoch += 1;
223
+ this.startPromise = null;
224
+ this.resyncPromise = null;
225
+ this.generation = null;
226
+ this.sequence = 0;
227
+ this.bufferedDeltas.length = 0;
228
+ this.updateSnapshot('connecting');
229
+ }
230
+ };
231
+ fail(error) {
232
+ const normalized = error instanceof Error ? error : new Error(String(error));
233
+ this.snapshot = {
234
+ status: 'error',
235
+ documents: this.currentDocuments(),
236
+ error: normalized,
237
+ };
238
+ this.notify();
239
+ }
240
+ updateSnapshot(status) {
241
+ this.snapshot = {
242
+ status,
243
+ documents: this.currentDocuments(),
244
+ error: null,
245
+ };
246
+ this.notify();
247
+ }
248
+ currentDocuments() {
249
+ return this.ordered
250
+ ? [...this.orderedDocuments]
251
+ : [...this.documents.values()];
252
+ }
253
+ notify() {
254
+ for (const listener of this.listeners)
255
+ listener();
256
+ }
257
+ }
258
+ /** Creates one typed framework-independent MongoDB live view. */
259
+ export function createMongoLiveView(options) {
260
+ return new MongoLiveView(options);
261
+ }
262
+ const liveCallOptions = {
263
+ http: false,
264
+ httpFallback: false,
265
+ };
266
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/mongodb/live/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { Collection, Document } from "mongodb";
2
+ import { type Server } from "../../server/index.js";
3
+ import { type MongoLiveOptions, type MongoLiveRuntimePublication } from "./types.js";
4
+ /** Runtime dependencies supplied by the MongoDB registry. */
5
+ export interface MongoLiveEngineDependencies {
6
+ /** TypeFerry server receiving live RPC registrations. */
7
+ readonly server: Server;
8
+ /** Resolves a publication collection token to a native collection. */
9
+ readonly resolveCollection: (publication: MongoLiveRuntimePublication) => Collection<Document>;
10
+ /** Returns the stable registered collection name. */
11
+ readonly collectionName: (publication: MongoLiveRuntimePublication) => string;
12
+ /** Capacity and publication configuration. */
13
+ readonly options: MongoLiveOptions;
14
+ }
15
+ /** Owns MongoDB live publications, sources, and connection subscriptions. */
16
+ export declare class MongoLiveEngine {
17
+ private readonly dependencies;
18
+ private readonly publications;
19
+ private readonly subscriptions;
20
+ private readonly sources;
21
+ private readonly pendingAuthorizations;
22
+ private readonly resyncSnapshots;
23
+ private readonly nodeMutations;
24
+ private readonly activeMutations;
25
+ private readonly ownedMethods;
26
+ private ownedEvent;
27
+ private closed;
28
+ private readonly maxSubscriptionsPerConnection;
29
+ private readonly maxSnapshotDocuments;
30
+ private readonly maxWindowSkip;
31
+ private readonly maxBufferedBytes;
32
+ private readonly slowConsumerGraceMs;
33
+ /** Creates and atomically registers the live extension. */
34
+ constructor(dependencies: MongoLiveEngineDependencies);
35
+ /** Stops new work and releases every source, observer, and server listener. */
36
+ close(): Promise<void>;
37
+ private registerServerSurface;
38
+ private subscribe;
39
+ private resync;
40
+ private unsubscribe;
41
+ private createSubscription;
42
+ private getSource;
43
+ private deliver;
44
+ private markStale;
45
+ private stopSubscription;
46
+ private assertWebSocket;
47
+ private assertActive;
48
+ private trackPending;
49
+ private untrackPending;
50
+ private serialize;
51
+ private readonly handleDisconnection;
52
+ private readonly handleLogout;
53
+ private abortPending;
54
+ private stopNode;
55
+ }