anchordb 0.2.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 (438) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/LICENSE +21 -0
  3. package/README.md +160 -0
  4. package/dist/cjs/conflict/strategies.d.ts +110 -0
  5. package/dist/cjs/conflict/strategies.d.ts.map +1 -0
  6. package/dist/cjs/conflict/strategies.js +298 -0
  7. package/dist/cjs/conflict/strategies.js.map +1 -0
  8. package/dist/cjs/conflict/types.d.ts +38 -0
  9. package/dist/cjs/conflict/types.d.ts.map +1 -0
  10. package/dist/cjs/conflict/types.js +3 -0
  11. package/dist/cjs/conflict/types.js.map +1 -0
  12. package/dist/cjs/core/anchor-db.d.ts +154 -0
  13. package/dist/cjs/core/anchor-db.d.ts.map +1 -0
  14. package/dist/cjs/core/anchor-db.js +273 -0
  15. package/dist/cjs/core/anchor-db.js.map +1 -0
  16. package/dist/cjs/core/errors.d.ts +125 -0
  17. package/dist/cjs/core/errors.d.ts.map +1 -0
  18. package/dist/cjs/core/errors.js +174 -0
  19. package/dist/cjs/core/errors.js.map +1 -0
  20. package/dist/cjs/core/hex.d.ts +4 -0
  21. package/dist/cjs/core/hex.d.ts.map +1 -0
  22. package/dist/cjs/core/hex.js +41 -0
  23. package/dist/cjs/core/hex.js.map +1 -0
  24. package/dist/cjs/core/hlc.d.ts +96 -0
  25. package/dist/cjs/core/hlc.d.ts.map +1 -0
  26. package/dist/cjs/core/hlc.js +161 -0
  27. package/dist/cjs/core/hlc.js.map +1 -0
  28. package/dist/cjs/core/object-id.d.ts +38 -0
  29. package/dist/cjs/core/object-id.d.ts.map +1 -0
  30. package/dist/cjs/core/object-id.js +167 -0
  31. package/dist/cjs/core/object-id.js.map +1 -0
  32. package/dist/cjs/core/random.d.ts +6 -0
  33. package/dist/cjs/core/random.d.ts.map +1 -0
  34. package/dist/cjs/core/random.js +39 -0
  35. package/dist/cjs/core/random.js.map +1 -0
  36. package/dist/cjs/core/runtime.d.ts +96 -0
  37. package/dist/cjs/core/runtime.d.ts.map +1 -0
  38. package/dist/cjs/core/runtime.js +3 -0
  39. package/dist/cjs/core/runtime.js.map +1 -0
  40. package/dist/cjs/core/uuid.d.ts +16 -0
  41. package/dist/cjs/core/uuid.d.ts.map +1 -0
  42. package/dist/cjs/core/uuid.js +37 -0
  43. package/dist/cjs/core/uuid.js.map +1 -0
  44. package/dist/cjs/decorators/index.d.ts +48 -0
  45. package/dist/cjs/decorators/index.d.ts.map +1 -0
  46. package/dist/cjs/decorators/index.js +295 -0
  47. package/dist/cjs/decorators/index.js.map +1 -0
  48. package/dist/cjs/events/emitter.d.ts +16 -0
  49. package/dist/cjs/events/emitter.d.ts.map +1 -0
  50. package/dist/cjs/events/emitter.js +56 -0
  51. package/dist/cjs/events/emitter.js.map +1 -0
  52. package/dist/cjs/index/keys.d.ts +79 -0
  53. package/dist/cjs/index/keys.d.ts.map +1 -0
  54. package/dist/cjs/index/keys.js +208 -0
  55. package/dist/cjs/index/keys.js.map +1 -0
  56. package/dist/cjs/index.d.ts +81 -0
  57. package/dist/cjs/index.d.ts.map +1 -0
  58. package/dist/cjs/index.js +193 -0
  59. package/dist/cjs/index.js.map +1 -0
  60. package/dist/cjs/inspector/agent.d.ts +75 -0
  61. package/dist/cjs/inspector/agent.d.ts.map +1 -0
  62. package/dist/cjs/inspector/agent.js +520 -0
  63. package/dist/cjs/inspector/agent.js.map +1 -0
  64. package/dist/cjs/inspector/auth.d.ts +49 -0
  65. package/dist/cjs/inspector/auth.d.ts.map +1 -0
  66. package/dist/cjs/inspector/auth.js +234 -0
  67. package/dist/cjs/inspector/auth.js.map +1 -0
  68. package/dist/cjs/inspector/bridge.d.ts +141 -0
  69. package/dist/cjs/inspector/bridge.d.ts.map +1 -0
  70. package/dist/cjs/inspector/bridge.js +190 -0
  71. package/dist/cjs/inspector/bridge.js.map +1 -0
  72. package/dist/cjs/inspector/client.d.ts +111 -0
  73. package/dist/cjs/inspector/client.d.ts.map +1 -0
  74. package/dist/cjs/inspector/client.js +218 -0
  75. package/dist/cjs/inspector/client.js.map +1 -0
  76. package/dist/cjs/inspector/protocol.d.ts +160 -0
  77. package/dist/cjs/inspector/protocol.d.ts.map +1 -0
  78. package/dist/cjs/inspector/protocol.js +53 -0
  79. package/dist/cjs/inspector/protocol.js.map +1 -0
  80. package/dist/cjs/inspector/transports/in-process.d.ts +7 -0
  81. package/dist/cjs/inspector/transports/in-process.d.ts.map +1 -0
  82. package/dist/cjs/inspector/transports/in-process.js +58 -0
  83. package/dist/cjs/inspector/transports/in-process.js.map +1 -0
  84. package/dist/cjs/inspector/transports/websocket.d.ts +39 -0
  85. package/dist/cjs/inspector/transports/websocket.d.ts.map +1 -0
  86. package/dist/cjs/inspector/transports/websocket.js +60 -0
  87. package/dist/cjs/inspector/transports/websocket.js.map +1 -0
  88. package/dist/cjs/interop/csv.d.ts +53 -0
  89. package/dist/cjs/interop/csv.d.ts.map +1 -0
  90. package/dist/cjs/interop/csv.js +230 -0
  91. package/dist/cjs/interop/csv.js.map +1 -0
  92. package/dist/cjs/interop/ejson.d.ts +41 -0
  93. package/dist/cjs/interop/ejson.d.ts.map +1 -0
  94. package/dist/cjs/interop/ejson.js +182 -0
  95. package/dist/cjs/interop/ejson.js.map +1 -0
  96. package/dist/cjs/interop/export-import.d.ts +98 -0
  97. package/dist/cjs/interop/export-import.d.ts.map +1 -0
  98. package/dist/cjs/interop/export-import.js +222 -0
  99. package/dist/cjs/interop/export-import.js.map +1 -0
  100. package/dist/cjs/model/document.d.ts +66 -0
  101. package/dist/cjs/model/document.d.ts.map +1 -0
  102. package/dist/cjs/model/document.js +302 -0
  103. package/dist/cjs/model/document.js.map +1 -0
  104. package/dist/cjs/model/model.d.ts +178 -0
  105. package/dist/cjs/model/model.d.ts.map +1 -0
  106. package/dist/cjs/model/model.js +823 -0
  107. package/dist/cjs/model/model.js.map +1 -0
  108. package/dist/cjs/package.json +3 -0
  109. package/dist/cjs/query/aggregation/expressions.d.ts +34 -0
  110. package/dist/cjs/query/aggregation/expressions.d.ts.map +1 -0
  111. package/dist/cjs/query/aggregation/expressions.js +552 -0
  112. package/dist/cjs/query/aggregation/expressions.js.map +1 -0
  113. package/dist/cjs/query/aggregation/pipeline.d.ts +79 -0
  114. package/dist/cjs/query/aggregation/pipeline.d.ts.map +1 -0
  115. package/dist/cjs/query/aggregation/pipeline.js +597 -0
  116. package/dist/cjs/query/aggregation/pipeline.js.map +1 -0
  117. package/dist/cjs/query/aggregation/source.d.ts +35 -0
  118. package/dist/cjs/query/aggregation/source.d.ts.map +1 -0
  119. package/dist/cjs/query/aggregation/source.js +81 -0
  120. package/dist/cjs/query/aggregation/source.js.map +1 -0
  121. package/dist/cjs/query/builder/query.d.ts +113 -0
  122. package/dist/cjs/query/builder/query.d.ts.map +1 -0
  123. package/dist/cjs/query/builder/query.js +215 -0
  124. package/dist/cjs/query/builder/query.js.map +1 -0
  125. package/dist/cjs/query/filter.d.ts +50 -0
  126. package/dist/cjs/query/filter.d.ts.map +1 -0
  127. package/dist/cjs/query/filter.js +275 -0
  128. package/dist/cjs/query/filter.js.map +1 -0
  129. package/dist/cjs/query/path.d.ts +41 -0
  130. package/dist/cjs/query/path.d.ts.map +1 -0
  131. package/dist/cjs/query/path.js +294 -0
  132. package/dist/cjs/query/path.js.map +1 -0
  133. package/dist/cjs/query/update.d.ts +30 -0
  134. package/dist/cjs/query/update.d.ts.map +1 -0
  135. package/dist/cjs/query/update.js +205 -0
  136. package/dist/cjs/query/update.js.map +1 -0
  137. package/dist/cjs/reactive/live-query.d.ts +41 -0
  138. package/dist/cjs/reactive/live-query.d.ts.map +1 -0
  139. package/dist/cjs/reactive/live-query.js +88 -0
  140. package/dist/cjs/reactive/live-query.js.map +1 -0
  141. package/dist/cjs/schema/cast.d.ts +38 -0
  142. package/dist/cjs/schema/cast.d.ts.map +1 -0
  143. package/dist/cjs/schema/cast.js +280 -0
  144. package/dist/cjs/schema/cast.js.map +1 -0
  145. package/dist/cjs/schema/index.d.ts +5 -0
  146. package/dist/cjs/schema/index.d.ts.map +1 -0
  147. package/dist/cjs/schema/index.js +27 -0
  148. package/dist/cjs/schema/index.js.map +1 -0
  149. package/dist/cjs/schema/schema.d.ts +58 -0
  150. package/dist/cjs/schema/schema.d.ts.map +1 -0
  151. package/dist/cjs/schema/schema.js +363 -0
  152. package/dist/cjs/schema/schema.js.map +1 -0
  153. package/dist/cjs/schema/types.d.ts +144 -0
  154. package/dist/cjs/schema/types.d.ts.map +1 -0
  155. package/dist/cjs/schema/types.js +20 -0
  156. package/dist/cjs/schema/types.js.map +1 -0
  157. package/dist/cjs/schema/validate.d.ts +15 -0
  158. package/dist/cjs/schema/validate.d.ts.map +1 -0
  159. package/dist/cjs/schema/validate.js +101 -0
  160. package/dist/cjs/schema/validate.js.map +1 -0
  161. package/dist/cjs/storage/adapters/capacitor-sqlite.d.ts +67 -0
  162. package/dist/cjs/storage/adapters/capacitor-sqlite.d.ts.map +1 -0
  163. package/dist/cjs/storage/adapters/capacitor-sqlite.js +69 -0
  164. package/dist/cjs/storage/adapters/capacitor-sqlite.js.map +1 -0
  165. package/dist/cjs/storage/adapters/expo-sqlite.d.ts +55 -0
  166. package/dist/cjs/storage/adapters/expo-sqlite.d.ts.map +1 -0
  167. package/dist/cjs/storage/adapters/expo-sqlite.js +53 -0
  168. package/dist/cjs/storage/adapters/expo-sqlite.js.map +1 -0
  169. package/dist/cjs/storage/adapters/indexeddb.d.ts +55 -0
  170. package/dist/cjs/storage/adapters/indexeddb.d.ts.map +1 -0
  171. package/dist/cjs/storage/adapters/indexeddb.js +393 -0
  172. package/dist/cjs/storage/adapters/indexeddb.js.map +1 -0
  173. package/dist/cjs/storage/adapters/memory.d.ts +44 -0
  174. package/dist/cjs/storage/adapters/memory.d.ts.map +1 -0
  175. package/dist/cjs/storage/adapters/memory.js +286 -0
  176. package/dist/cjs/storage/adapters/memory.js.map +1 -0
  177. package/dist/cjs/storage/adapters/node-sqlite.d.ts +59 -0
  178. package/dist/cjs/storage/adapters/node-sqlite.d.ts.map +1 -0
  179. package/dist/cjs/storage/adapters/node-sqlite.js +457 -0
  180. package/dist/cjs/storage/adapters/node-sqlite.js.map +1 -0
  181. package/dist/cjs/storage/adapters/sql-base.d.ts +84 -0
  182. package/dist/cjs/storage/adapters/sql-base.d.ts.map +1 -0
  183. package/dist/cjs/storage/adapters/sql-base.js +393 -0
  184. package/dist/cjs/storage/adapters/sql-base.js.map +1 -0
  185. package/dist/cjs/storage/types.d.ts +131 -0
  186. package/dist/cjs/storage/types.d.ts.map +1 -0
  187. package/dist/cjs/storage/types.js +3 -0
  188. package/dist/cjs/storage/types.js.map +1 -0
  189. package/dist/cjs/sync/adapters/rest.d.ts +31 -0
  190. package/dist/cjs/sync/adapters/rest.d.ts.map +1 -0
  191. package/dist/cjs/sync/adapters/rest.js +75 -0
  192. package/dist/cjs/sync/adapters/rest.js.map +1 -0
  193. package/dist/cjs/sync/attach.d.ts +30 -0
  194. package/dist/cjs/sync/attach.d.ts.map +1 -0
  195. package/dist/cjs/sync/attach.js +104 -0
  196. package/dist/cjs/sync/attach.js.map +1 -0
  197. package/dist/cjs/sync/engine.d.ts +96 -0
  198. package/dist/cjs/sync/engine.d.ts.map +1 -0
  199. package/dist/cjs/sync/engine.js +491 -0
  200. package/dist/cjs/sync/engine.js.map +1 -0
  201. package/dist/cjs/sync/protocol.d.ts +128 -0
  202. package/dist/cjs/sync/protocol.d.ts.map +1 -0
  203. package/dist/cjs/sync/protocol.js +38 -0
  204. package/dist/cjs/sync/protocol.js.map +1 -0
  205. package/dist/cjs/sync/queue.d.ts +77 -0
  206. package/dist/cjs/sync/queue.d.ts.map +1 -0
  207. package/dist/cjs/sync/queue.js +245 -0
  208. package/dist/cjs/sync/queue.js.map +1 -0
  209. package/dist/cjs/sync/server/memory-server.d.ts +65 -0
  210. package/dist/cjs/sync/server/memory-server.d.ts.map +1 -0
  211. package/dist/cjs/sync/server/memory-server.js +193 -0
  212. package/dist/cjs/sync/server/memory-server.js.map +1 -0
  213. package/dist/cjs/timestamps/index.d.ts +47 -0
  214. package/dist/cjs/timestamps/index.d.ts.map +1 -0
  215. package/dist/cjs/timestamps/index.js +88 -0
  216. package/dist/cjs/timestamps/index.js.map +1 -0
  217. package/dist/cjs/timestamps/timezone.d.ts +65 -0
  218. package/dist/cjs/timestamps/timezone.d.ts.map +1 -0
  219. package/dist/cjs/timestamps/timezone.js +208 -0
  220. package/dist/cjs/timestamps/timezone.js.map +1 -0
  221. package/dist/esm/conflict/strategies.d.ts +110 -0
  222. package/dist/esm/conflict/strategies.d.ts.map +1 -0
  223. package/dist/esm/conflict/strategies.js +289 -0
  224. package/dist/esm/conflict/strategies.js.map +1 -0
  225. package/dist/esm/conflict/types.d.ts +38 -0
  226. package/dist/esm/conflict/types.d.ts.map +1 -0
  227. package/dist/esm/conflict/types.js +2 -0
  228. package/dist/esm/conflict/types.js.map +1 -0
  229. package/dist/esm/core/anchor-db.d.ts +154 -0
  230. package/dist/esm/core/anchor-db.d.ts.map +1 -0
  231. package/dist/esm/core/anchor-db.js +269 -0
  232. package/dist/esm/core/anchor-db.js.map +1 -0
  233. package/dist/esm/core/errors.d.ts +125 -0
  234. package/dist/esm/core/errors.d.ts.map +1 -0
  235. package/dist/esm/core/errors.js +161 -0
  236. package/dist/esm/core/errors.js.map +1 -0
  237. package/dist/esm/core/hex.d.ts +4 -0
  238. package/dist/esm/core/hex.d.ts.map +1 -0
  239. package/dist/esm/core/hex.js +37 -0
  240. package/dist/esm/core/hex.js.map +1 -0
  241. package/dist/esm/core/hlc.d.ts +96 -0
  242. package/dist/esm/core/hlc.d.ts.map +1 -0
  243. package/dist/esm/core/hlc.js +153 -0
  244. package/dist/esm/core/hlc.js.map +1 -0
  245. package/dist/esm/core/object-id.d.ts +38 -0
  246. package/dist/esm/core/object-id.d.ts.map +1 -0
  247. package/dist/esm/core/object-id.js +163 -0
  248. package/dist/esm/core/object-id.js.map +1 -0
  249. package/dist/esm/core/random.d.ts +6 -0
  250. package/dist/esm/core/random.d.ts.map +1 -0
  251. package/dist/esm/core/random.js +34 -0
  252. package/dist/esm/core/random.js.map +1 -0
  253. package/dist/esm/core/runtime.d.ts +96 -0
  254. package/dist/esm/core/runtime.d.ts.map +1 -0
  255. package/dist/esm/core/runtime.js +2 -0
  256. package/dist/esm/core/runtime.js.map +1 -0
  257. package/dist/esm/core/uuid.d.ts +16 -0
  258. package/dist/esm/core/uuid.d.ts.map +1 -0
  259. package/dist/esm/core/uuid.js +33 -0
  260. package/dist/esm/core/uuid.js.map +1 -0
  261. package/dist/esm/decorators/index.d.ts +48 -0
  262. package/dist/esm/decorators/index.d.ts.map +1 -0
  263. package/dist/esm/decorators/index.js +286 -0
  264. package/dist/esm/decorators/index.js.map +1 -0
  265. package/dist/esm/events/emitter.d.ts +16 -0
  266. package/dist/esm/events/emitter.d.ts.map +1 -0
  267. package/dist/esm/events/emitter.js +52 -0
  268. package/dist/esm/events/emitter.js.map +1 -0
  269. package/dist/esm/index/keys.d.ts +79 -0
  270. package/dist/esm/index/keys.d.ts.map +1 -0
  271. package/dist/esm/index/keys.js +198 -0
  272. package/dist/esm/index/keys.js.map +1 -0
  273. package/dist/esm/index.d.ts +81 -0
  274. package/dist/esm/index.d.ts.map +1 -0
  275. package/dist/esm/index.js +59 -0
  276. package/dist/esm/index.js.map +1 -0
  277. package/dist/esm/inspector/agent.d.ts +75 -0
  278. package/dist/esm/inspector/agent.d.ts.map +1 -0
  279. package/dist/esm/inspector/agent.js +482 -0
  280. package/dist/esm/inspector/agent.js.map +1 -0
  281. package/dist/esm/inspector/auth.d.ts +49 -0
  282. package/dist/esm/inspector/auth.d.ts.map +1 -0
  283. package/dist/esm/inspector/auth.js +228 -0
  284. package/dist/esm/inspector/auth.js.map +1 -0
  285. package/dist/esm/inspector/bridge.d.ts +141 -0
  286. package/dist/esm/inspector/bridge.d.ts.map +1 -0
  287. package/dist/esm/inspector/bridge.js +182 -0
  288. package/dist/esm/inspector/bridge.js.map +1 -0
  289. package/dist/esm/inspector/client.d.ts +111 -0
  290. package/dist/esm/inspector/client.d.ts.map +1 -0
  291. package/dist/esm/inspector/client.js +213 -0
  292. package/dist/esm/inspector/client.js.map +1 -0
  293. package/dist/esm/inspector/protocol.d.ts +160 -0
  294. package/dist/esm/inspector/protocol.d.ts.map +1 -0
  295. package/dist/esm/inspector/protocol.js +43 -0
  296. package/dist/esm/inspector/protocol.js.map +1 -0
  297. package/dist/esm/inspector/transports/in-process.d.ts +7 -0
  298. package/dist/esm/inspector/transports/in-process.d.ts.map +1 -0
  299. package/dist/esm/inspector/transports/in-process.js +55 -0
  300. package/dist/esm/inspector/transports/in-process.js.map +1 -0
  301. package/dist/esm/inspector/transports/websocket.d.ts +39 -0
  302. package/dist/esm/inspector/transports/websocket.d.ts.map +1 -0
  303. package/dist/esm/inspector/transports/websocket.js +56 -0
  304. package/dist/esm/inspector/transports/websocket.js.map +1 -0
  305. package/dist/esm/interop/csv.d.ts +53 -0
  306. package/dist/esm/interop/csv.d.ts.map +1 -0
  307. package/dist/esm/interop/csv.js +222 -0
  308. package/dist/esm/interop/csv.js.map +1 -0
  309. package/dist/esm/interop/ejson.d.ts +41 -0
  310. package/dist/esm/interop/ejson.d.ts.map +1 -0
  311. package/dist/esm/interop/ejson.js +176 -0
  312. package/dist/esm/interop/ejson.js.map +1 -0
  313. package/dist/esm/interop/export-import.d.ts +98 -0
  314. package/dist/esm/interop/export-import.d.ts.map +1 -0
  315. package/dist/esm/interop/export-import.js +210 -0
  316. package/dist/esm/interop/export-import.js.map +1 -0
  317. package/dist/esm/model/document.d.ts +66 -0
  318. package/dist/esm/model/document.d.ts.map +1 -0
  319. package/dist/esm/model/document.js +297 -0
  320. package/dist/esm/model/document.js.map +1 -0
  321. package/dist/esm/model/model.d.ts +178 -0
  322. package/dist/esm/model/model.d.ts.map +1 -0
  323. package/dist/esm/model/model.js +815 -0
  324. package/dist/esm/model/model.js.map +1 -0
  325. package/dist/esm/package.json +3 -0
  326. package/dist/esm/query/aggregation/expressions.d.ts +34 -0
  327. package/dist/esm/query/aggregation/expressions.d.ts.map +1 -0
  328. package/dist/esm/query/aggregation/expressions.js +545 -0
  329. package/dist/esm/query/aggregation/expressions.js.map +1 -0
  330. package/dist/esm/query/aggregation/pipeline.d.ts +79 -0
  331. package/dist/esm/query/aggregation/pipeline.d.ts.map +1 -0
  332. package/dist/esm/query/aggregation/pipeline.js +591 -0
  333. package/dist/esm/query/aggregation/pipeline.js.map +1 -0
  334. package/dist/esm/query/aggregation/source.d.ts +35 -0
  335. package/dist/esm/query/aggregation/source.d.ts.map +1 -0
  336. package/dist/esm/query/aggregation/source.js +77 -0
  337. package/dist/esm/query/aggregation/source.js.map +1 -0
  338. package/dist/esm/query/builder/query.d.ts +113 -0
  339. package/dist/esm/query/builder/query.d.ts.map +1 -0
  340. package/dist/esm/query/builder/query.js +209 -0
  341. package/dist/esm/query/builder/query.js.map +1 -0
  342. package/dist/esm/query/filter.d.ts +50 -0
  343. package/dist/esm/query/filter.d.ts.map +1 -0
  344. package/dist/esm/query/filter.js +267 -0
  345. package/dist/esm/query/filter.js.map +1 -0
  346. package/dist/esm/query/path.d.ts +41 -0
  347. package/dist/esm/query/path.d.ts.map +1 -0
  348. package/dist/esm/query/path.js +282 -0
  349. package/dist/esm/query/path.js.map +1 -0
  350. package/dist/esm/query/update.d.ts +30 -0
  351. package/dist/esm/query/update.d.ts.map +1 -0
  352. package/dist/esm/query/update.js +198 -0
  353. package/dist/esm/query/update.js.map +1 -0
  354. package/dist/esm/reactive/live-query.d.ts +41 -0
  355. package/dist/esm/reactive/live-query.d.ts.map +1 -0
  356. package/dist/esm/reactive/live-query.js +83 -0
  357. package/dist/esm/reactive/live-query.js.map +1 -0
  358. package/dist/esm/schema/cast.d.ts +38 -0
  359. package/dist/esm/schema/cast.d.ts.map +1 -0
  360. package/dist/esm/schema/cast.js +275 -0
  361. package/dist/esm/schema/cast.js.map +1 -0
  362. package/dist/esm/schema/index.d.ts +5 -0
  363. package/dist/esm/schema/index.d.ts.map +1 -0
  364. package/dist/esm/schema/index.js +5 -0
  365. package/dist/esm/schema/index.js.map +1 -0
  366. package/dist/esm/schema/schema.d.ts +58 -0
  367. package/dist/esm/schema/schema.d.ts.map +1 -0
  368. package/dist/esm/schema/schema.js +358 -0
  369. package/dist/esm/schema/schema.js.map +1 -0
  370. package/dist/esm/schema/types.d.ts +144 -0
  371. package/dist/esm/schema/types.d.ts.map +1 -0
  372. package/dist/esm/schema/types.js +17 -0
  373. package/dist/esm/schema/types.js.map +1 -0
  374. package/dist/esm/schema/validate.d.ts +15 -0
  375. package/dist/esm/schema/validate.d.ts.map +1 -0
  376. package/dist/esm/schema/validate.js +98 -0
  377. package/dist/esm/schema/validate.js.map +1 -0
  378. package/dist/esm/storage/adapters/capacitor-sqlite.d.ts +67 -0
  379. package/dist/esm/storage/adapters/capacitor-sqlite.d.ts.map +1 -0
  380. package/dist/esm/storage/adapters/capacitor-sqlite.js +65 -0
  381. package/dist/esm/storage/adapters/capacitor-sqlite.js.map +1 -0
  382. package/dist/esm/storage/adapters/expo-sqlite.d.ts +55 -0
  383. package/dist/esm/storage/adapters/expo-sqlite.d.ts.map +1 -0
  384. package/dist/esm/storage/adapters/expo-sqlite.js +49 -0
  385. package/dist/esm/storage/adapters/expo-sqlite.js.map +1 -0
  386. package/dist/esm/storage/adapters/indexeddb.d.ts +55 -0
  387. package/dist/esm/storage/adapters/indexeddb.d.ts.map +1 -0
  388. package/dist/esm/storage/adapters/indexeddb.js +389 -0
  389. package/dist/esm/storage/adapters/indexeddb.js.map +1 -0
  390. package/dist/esm/storage/adapters/memory.d.ts +44 -0
  391. package/dist/esm/storage/adapters/memory.d.ts.map +1 -0
  392. package/dist/esm/storage/adapters/memory.js +282 -0
  393. package/dist/esm/storage/adapters/memory.js.map +1 -0
  394. package/dist/esm/storage/adapters/node-sqlite.d.ts +59 -0
  395. package/dist/esm/storage/adapters/node-sqlite.d.ts.map +1 -0
  396. package/dist/esm/storage/adapters/node-sqlite.js +450 -0
  397. package/dist/esm/storage/adapters/node-sqlite.js.map +1 -0
  398. package/dist/esm/storage/adapters/sql-base.d.ts +84 -0
  399. package/dist/esm/storage/adapters/sql-base.d.ts.map +1 -0
  400. package/dist/esm/storage/adapters/sql-base.js +383 -0
  401. package/dist/esm/storage/adapters/sql-base.js.map +1 -0
  402. package/dist/esm/storage/types.d.ts +131 -0
  403. package/dist/esm/storage/types.d.ts.map +1 -0
  404. package/dist/esm/storage/types.js +2 -0
  405. package/dist/esm/storage/types.js.map +1 -0
  406. package/dist/esm/sync/adapters/rest.d.ts +31 -0
  407. package/dist/esm/sync/adapters/rest.d.ts.map +1 -0
  408. package/dist/esm/sync/adapters/rest.js +71 -0
  409. package/dist/esm/sync/adapters/rest.js.map +1 -0
  410. package/dist/esm/sync/attach.d.ts +30 -0
  411. package/dist/esm/sync/attach.d.ts.map +1 -0
  412. package/dist/esm/sync/attach.js +98 -0
  413. package/dist/esm/sync/attach.js.map +1 -0
  414. package/dist/esm/sync/engine.d.ts +96 -0
  415. package/dist/esm/sync/engine.d.ts.map +1 -0
  416. package/dist/esm/sync/engine.js +487 -0
  417. package/dist/esm/sync/engine.js.map +1 -0
  418. package/dist/esm/sync/protocol.d.ts +128 -0
  419. package/dist/esm/sync/protocol.d.ts.map +1 -0
  420. package/dist/esm/sync/protocol.js +33 -0
  421. package/dist/esm/sync/protocol.js.map +1 -0
  422. package/dist/esm/sync/queue.d.ts +77 -0
  423. package/dist/esm/sync/queue.d.ts.map +1 -0
  424. package/dist/esm/sync/queue.js +241 -0
  425. package/dist/esm/sync/queue.js.map +1 -0
  426. package/dist/esm/sync/server/memory-server.d.ts +65 -0
  427. package/dist/esm/sync/server/memory-server.d.ts.map +1 -0
  428. package/dist/esm/sync/server/memory-server.js +189 -0
  429. package/dist/esm/sync/server/memory-server.js.map +1 -0
  430. package/dist/esm/timestamps/index.d.ts +47 -0
  431. package/dist/esm/timestamps/index.d.ts.map +1 -0
  432. package/dist/esm/timestamps/index.js +70 -0
  433. package/dist/esm/timestamps/index.js.map +1 -0
  434. package/dist/esm/timestamps/timezone.d.ts +65 -0
  435. package/dist/esm/timestamps/timezone.d.ts.map +1 -0
  436. package/dist/esm/timestamps/timezone.js +196 -0
  437. package/dist/esm/timestamps/timezone.js.map +1 -0
  438. package/package.json +163 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/sync/adapters/rest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { AnchorDB } from "../core/anchor-db.js";
2
+ import { MutationQueue } from "./queue.js";
3
+ import { SyncEngine, type SyncRunResult } from "./engine.js";
4
+ import { RestSyncAdapter } from "./adapters/rest.js";
5
+ import type { SyncAdapter } from "./protocol.js";
6
+ export interface AttachSyncOptions {
7
+ /** Supply a custom transport (WebSocket, GraphQL, a test double). Defaults to REST. */
8
+ transport?: SyncAdapter;
9
+ /** Adopt pre-existing local documents on first sync. Default true. */
10
+ adoptExisting?: boolean;
11
+ }
12
+ export interface AttachedSync {
13
+ engine: SyncEngine;
14
+ queue: MutationQueue;
15
+ /** `immediate` bypasses retry backoff — use it when connectivity is known to be restored. */
16
+ run(options?: {
17
+ immediate?: boolean;
18
+ }): Promise<SyncRunResult>;
19
+ }
20
+ /**
21
+ * Wire the sync engine into a database.
22
+ *
23
+ * Kept as a separate entry point rather than something `AnchorDB` constructs itself, so a local-only
24
+ * app never imports the engine, the queue, the conflict strategies or the transport at all — they
25
+ * tree-shake out entirely. Sync genuinely costs nothing when unused.
26
+ */
27
+ export declare function attachSync(db: AnchorDB, options?: AttachSyncOptions): Promise<AttachedSync>;
28
+ export { MutationQueue, SyncEngine, RestSyncAdapter };
29
+ export type { SyncRunResult };
30
+ //# sourceMappingURL=attach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/sync/attach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAY,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,6FAA6F;IAC7F,GAAG,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAChE;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CA4DrG;AA4CD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { AnchorConfigError } from "../core/errors.js";
2
+ import { MutationQueue } from "./queue.js";
3
+ import { SyncEngine } from "./engine.js";
4
+ import { RestSyncAdapter } from "./adapters/rest.js";
5
+ /**
6
+ * Wire the sync engine into a database.
7
+ *
8
+ * Kept as a separate entry point rather than something `AnchorDB` constructs itself, so a local-only
9
+ * app never imports the engine, the queue, the conflict strategies or the transport at all — they
10
+ * tree-shake out entirely. Sync genuinely costs nothing when unused.
11
+ */
12
+ export async function attachSync(db, options = {}) {
13
+ const config = db.config.sync;
14
+ if (!config) {
15
+ throw new AnchorConfigError("attachSync() requires a `sync` block in the AnchorDB config. " +
16
+ "Without one the database is intentionally local-only.");
17
+ }
18
+ await db.open();
19
+ const transport = options.transport ??
20
+ new RestSyncAdapter({
21
+ endpoint: config.endpoint,
22
+ ...(config.token ? { token: config.token } : {}),
23
+ ...(config.auth?.token ? { token: config.auth.token } : {}),
24
+ ...(config.auth?.getToken ? { getToken: config.auth.getToken } : {}),
25
+ });
26
+ const queue = new MutationQueue(db.adapter, db.clientId);
27
+ const engine = new SyncEngine({
28
+ adapter: db.adapter,
29
+ transport,
30
+ queue,
31
+ clock: db.clock,
32
+ time: db.time,
33
+ events: db.events,
34
+ clientId: db.clientId,
35
+ ...(config.conflictResolution ? { conflictResolution: config.conflictResolution } : {}),
36
+ ...(config.batchSize !== undefined ? { batchSize: config.batchSize } : {}),
37
+ ...(config.maxConflictAttempts !== undefined ? { maxConflictAttempts: config.maxConflictAttempts } : {}),
38
+ });
39
+ db._attachSync({
40
+ recordMutations: async (collection, ops) => {
41
+ const mutations = ops.map((op) => toMutation(collection, op, db));
42
+ await queue.enqueue(mutations);
43
+ const counts = await queue.counts();
44
+ db.events.emit("queue:changed", { pending: counts.pending, failed: counts.failed });
45
+ },
46
+ run: async () => {
47
+ // db.sync.now() is an explicit user action ("sync now", pull-to-refresh), so it should not
48
+ // sit behind a backoff timer created while the network was down.
49
+ const result = await engine.run({ immediate: true });
50
+ return { pushed: result.pushed, pulled: result.pulled, conflicts: result.conflicts };
51
+ },
52
+ pending: async () => (await queue.counts()).pending,
53
+ setStatus: (setter) => {
54
+ engineStatusBridge(engine, setter);
55
+ },
56
+ });
57
+ if (options.adoptExisting !== false) {
58
+ const collections = (await db.adapter.listCollections()).filter((c) => !c.startsWith("__anchor"));
59
+ await engine.adoptExistingDocuments(collections);
60
+ }
61
+ return { engine, queue, run: (options = {}) => engine.run(options) };
62
+ }
63
+ /**
64
+ * Bridge the engine's status into the database's facade.
65
+ *
66
+ * Wrapping rather than adding a listener because the engine sets status synchronously inside its
67
+ * run loop, and we want `db.sync.status()` to be accurate the instant it changes.
68
+ */
69
+ function engineStatusBridge(engine, setter) {
70
+ const target = engine;
71
+ const original = target.setStatus?.bind(engine);
72
+ target.setStatus = (status) => {
73
+ original?.(status);
74
+ setter(status);
75
+ };
76
+ }
77
+ /**
78
+ * Translate a storage write into a wire mutation.
79
+ *
80
+ * `update` carries the full document rather than the original operators. That is a deliberate
81
+ * trade-off: operators would be more compact and would merge more gracefully server-side, but they
82
+ * cannot be replayed correctly against a server document that has since moved on. Sending the
83
+ * resulting document keeps the conflict decision on the client, where the configured strategy and
84
+ * the shadow copy both live. Documented in SYNC_PROTOCOL.md.
85
+ */
86
+ function toMutation(collection, op, db) {
87
+ const operation = op.type === "insert" ? "insert" : op.type === "replace" ? "replace" : op.type === "update" ? "update" : "delete";
88
+ return {
89
+ collection,
90
+ documentId: op._id,
91
+ operation,
92
+ payload: operation === "delete" ? null : (op.row?.doc ?? null),
93
+ baseVersion: op.row?.meta.version ?? 0,
94
+ hlc: op.row?.meta.hlc ?? db.clock.tickStamp(),
95
+ };
96
+ }
97
+ export { MutationQueue, SyncEngine, RestSyncAdapter };
98
+ //# sourceMappingURL=attach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/sync/attach.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import type { HybridLogicalClock } from "../core/hlc.js";
2
+ import type { TypedEmitter } from "../events/emitter.js";
3
+ import type { AnchorEvents } from "../core/runtime.js";
4
+ import type { TimeService } from "../timestamps/index.js";
5
+ import type { DatabaseAdapter } from "../storage/types.js";
6
+ import type { ConflictResolutionConfig } from "../conflict/types.js";
7
+ import { MutationQueue } from "./queue.js";
8
+ import { type SyncAdapter } from "./protocol.js";
9
+ /** Last server-confirmed document per id — the common ancestor a 3-way merge needs. */
10
+ export declare const SHADOW_COLLECTION = "__anchor_shadow";
11
+ export type SyncStatusValue = "idle" | "syncing" | "offline" | "error" | "paused";
12
+ export interface SyncEngineOptions {
13
+ adapter: DatabaseAdapter;
14
+ transport: SyncAdapter;
15
+ queue: MutationQueue;
16
+ clock: HybridLogicalClock;
17
+ time: TimeService;
18
+ events: TypedEmitter<AnchorEvents>;
19
+ clientId: string;
20
+ conflictResolution?: ConflictResolutionConfig;
21
+ batchSize?: number;
22
+ maxConflictAttempts?: number;
23
+ onStatus?: (status: SyncStatusValue) => void;
24
+ }
25
+ export interface SyncRunResult {
26
+ pushed: number;
27
+ pulled: number;
28
+ conflicts: number;
29
+ rejected: number;
30
+ }
31
+ /**
32
+ * The sync engine.
33
+ *
34
+ * Responsibilities, in the order they run:
35
+ *
36
+ * recover -> push (with conflict resolution) -> pull -> apply remote -> persist cursor
37
+ *
38
+ * Deliberately serialised: a second `run()` while one is in flight returns the same promise rather
39
+ * than starting a concurrent pass, because two passes would both take from the queue and could push
40
+ * the same mutation twice.
41
+ */
42
+ export declare class SyncEngine {
43
+ private readonly opts;
44
+ private readonly strategies;
45
+ private readonly strategyName;
46
+ private inFlight;
47
+ private status;
48
+ private clockOffsetMs;
49
+ private recovered;
50
+ constructor(options: SyncEngineOptions);
51
+ getStatus(): SyncStatusValue;
52
+ private setStatus;
53
+ /**
54
+ * @param options.immediate Bypass retry backoff. Set for user-initiated or
55
+ * connectivity-restored syncs, where waiting out a timer computed during the outage is pointless.
56
+ */
57
+ run(options?: {
58
+ immediate?: boolean;
59
+ }): Promise<SyncRunResult>;
60
+ private runOnce;
61
+ private pushAll;
62
+ private applyPushResult;
63
+ private resolveConflict;
64
+ private pullAll;
65
+ /**
66
+ * Apply a server change locally.
67
+ *
68
+ * A document with unpushed local edits is left alone: overwriting it would silently discard the
69
+ * user's offline work. The pending mutation will conflict on its next push and go through the
70
+ * configured strategy, which is where that decision belongs.
71
+ */
72
+ private applyRemoteChange;
73
+ /**
74
+ * Estimate the client's clock offset from the server and feed it to the HLC.
75
+ *
76
+ * This is what stops a device with a badly wrong clock from ordering its writes incorrectly
77
+ * against everyone else's. The server stamp is treated as authoritative (`trusted: true`) —
78
+ * see the reasoning in HybridLogicalClock.update().
79
+ */
80
+ private absorbServerClock;
81
+ private markSynced;
82
+ private writeResolved;
83
+ private writeShadow;
84
+ private readShadow;
85
+ private clearShadow;
86
+ private emitQueueChanged;
87
+ /**
88
+ * Adopt documents written before sync was enabled (§ "turning sync on later").
89
+ *
90
+ * Marks every existing document dirty at version 0 so the first sync pushes it. Without this,
91
+ * enabling sync on an existing app would leave all prior data stranded locally — the single most
92
+ * likely upgrade path, and the one a naive design silently breaks.
93
+ */
94
+ adoptExistingDocuments(collections: string[]): Promise<number>;
95
+ }
96
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/sync/engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAG/E,OAAO,KAAK,EAAmB,wBAAwB,EAAc,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAQL,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAEvB,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAInD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6F;IAClH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,iBAAiB;IAStC,SAAS,IAAI,eAAe;IAI5B,OAAO,CAAC,SAAS;IAKjB;;;OAGG;IACG,GAAG,CAAC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC;YAQ1D,OAAO;YAgDP,OAAO;YA0CP,eAAe;YAuCf,eAAe;YAiGf,OAAO;IA8BrB;;;;;;OAMG;YACW,iBAAiB;IAsD/B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;YAWX,UAAU;YAoBV,aAAa;YA2Bb,WAAW;YA0BX,UAAU;YAKV,WAAW;YAMX,gBAAgB;IAK9B;;;;;;OAMG;IACG,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAiCrE"}