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":"strategies.js","sourceRoot":"","sources":["../../../src/conflict/strategies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /** Conflict resolution types. The strategies themselves land in the sync milestone. */
2
+ export type ConflictStrategyName = "last-write-wins" | "server-wins" | "client-wins" | "field-level" | "custom";
3
+ export interface ConflictContext<T = Record<string, unknown>> {
4
+ local: T;
5
+ remote: T;
6
+ base?: T;
7
+ collection: string;
8
+ documentId: string;
9
+ localHlc: string;
10
+ remoteHlc: string;
11
+ localVersion?: number;
12
+ remoteVersion: number;
13
+ localTimestamp?: number;
14
+ remoteTimestamp?: number;
15
+ metadata?: Record<string, unknown>;
16
+ }
17
+ export interface Resolution<T = Record<string, unknown>> {
18
+ winner: "local" | "remote" | "merged";
19
+ document: T;
20
+ /**
21
+ * Whether the resolved document must be pushed back to the server.
22
+ *
23
+ * False whenever the result is the server document unchanged — pushing that back would echo
24
+ * between client and server forever.
25
+ */
26
+ pushBack: boolean;
27
+ /** Field-level only: paths both sides edited, surfaced for events and the Lens conflict viewer. */
28
+ conflictedPaths?: string[];
29
+ }
30
+ export type ConflictResolver<T = Record<string, unknown>> = (context: ConflictContext<T>) => Promise<T | Resolution<T>> | T | Resolution<T>;
31
+ export type FieldPolicy = "lww" | "server" | "client";
32
+ export interface ConflictResolutionConfig<T = Record<string, unknown>> {
33
+ strategy?: ConflictStrategyName;
34
+ resolver?: ConflictResolver<T>;
35
+ fieldPolicy?: FieldPolicy | ((path: string, ctx: ConflictContext<T>) => FieldPolicy);
36
+ arrayStrategy?: "atomic" | "union-by-id";
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/conflict/types.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,aAAa,GACb,aAAa,GACb,aAAa,GACb,QAAQ,CAAC;AAEb,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrD,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC;IACZ;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,mGAAmG;IACnG,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAC1D,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,KACxB,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,wBAAwB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnE,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;IACrF,aAAa,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;CAC1C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/conflict/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,154 @@
1
+ import { HybridLogicalClock } from "./hlc.js";
2
+ import { TypedEmitter } from "../events/emitter.js";
3
+ import { TimeService } from "../timestamps/index.js";
4
+ import { Schema } from "../schema/schema.js";
5
+ import { Model } from "../model/model.js";
6
+ import { type ModelConstructor } from "../model/document.js";
7
+ import type { AdapterStats, DatabaseAdapter, WriteOp } from "../storage/types.js";
8
+ import type { AnchorEvents } from "./runtime.js";
9
+ import type { ConflictResolutionConfig } from "../conflict/types.js";
10
+ export type SyncStatus = "disabled" | "idle" | "syncing" | "offline" | "error" | "paused";
11
+ export interface SyncConfig {
12
+ endpoint: string;
13
+ token?: string;
14
+ auth?: {
15
+ token?: string;
16
+ getToken?: () => string | Promise<string>;
17
+ };
18
+ conflictResolution?: ConflictResolutionConfig;
19
+ /** Automatically drain the queue when connectivity returns. */
20
+ autoSync?: boolean;
21
+ intervalMs?: number;
22
+ batchSize?: number;
23
+ maxConflictAttempts?: number;
24
+ }
25
+ export interface InspectorConfig {
26
+ enabled: boolean;
27
+ relayUrl?: string;
28
+ authentication?: {
29
+ mode: "temporary-token";
30
+ ttlSeconds?: number;
31
+ };
32
+ allowInProduction?: boolean;
33
+ }
34
+ export interface AnchorDBConfig {
35
+ name: string;
36
+ adapter?: DatabaseAdapter;
37
+ /** §26.3 — on by default. */
38
+ timestamps?: boolean;
39
+ timezone?: {
40
+ server?: string;
41
+ };
42
+ /** Omit entirely for a purely local database. */
43
+ sync?: SyncConfig;
44
+ inspector?: InspectorConfig;
45
+ /** What populate does when a referenced document is not present locally. */
46
+ onMissingRef?: "null" | "keep-id" | "throw";
47
+ clientId?: string;
48
+ }
49
+ /**
50
+ * AnchorDB — MongoDB + Mongoose for mobile apps.
51
+ *
52
+ * ## Two modes, one API
53
+ *
54
+ * Passing no `sync` block yields a **purely local database**: no mutation queue is created, no
55
+ * network code is instantiated, deletes are hard deletes rather than tombstones, and documents
56
+ * carry no sync metadata. That is not a degraded mode — it is the default, and an app with no
57
+ * backend never pays for machinery it does not use.
58
+ *
59
+ * Adding a `sync` block later changes no application code. Existing documents are adopted on first
60
+ * sync (seeded dirty at version 0) so nothing has to be rewritten or re-imported.
61
+ */
62
+ export declare class AnchorDB {
63
+ readonly name: string;
64
+ readonly time: TimeService;
65
+ readonly config: AnchorDBConfig;
66
+ private readonly emitter;
67
+ private readonly models;
68
+ private readonly constructors;
69
+ private readonly clockInstance;
70
+ private readonly adapterInstance;
71
+ private clientIdValue;
72
+ private openPromise;
73
+ private closed;
74
+ /** Installed by the sync engine when sync is configured. */
75
+ private mutationRecorder;
76
+ private syncStatusValue;
77
+ constructor(config: AnchorDBConfig);
78
+ /** True when a `sync` block was supplied. */
79
+ get syncEnabled(): boolean;
80
+ get clientId(): string;
81
+ get adapter(): DatabaseAdapter;
82
+ /** Exposed for the sync engine, which must stamp and advance the same clock the models use. */
83
+ get clock(): HybridLogicalClock;
84
+ /** Opened lazily on first use, so construction never does I/O. */
85
+ open(): Promise<void>;
86
+ close(): Promise<void>;
87
+ /** Mirrors `mongoose.model()`. Calling it again with the same name returns the existing model. */
88
+ model<T extends Record<string, unknown> = Record<string, unknown>>(name: string, schema?: Schema, options?: {
89
+ collection?: string;
90
+ }): ModelConstructor<T>;
91
+ /**
92
+ * Schema-less access, matching the driver's `db.collection("users")`. Useful for scratch work and
93
+ * for Lens, which must browse collections whose schema it does not have.
94
+ */
95
+ collection<T extends Record<string, unknown> = Record<string, unknown>>(name: string): ModelConstructor<T>;
96
+ /**
97
+ * The model registered for a storage collection, if any.
98
+ *
99
+ * Interop needs it: storage holds ObjectIds and Dates as strings, so an export has to consult the
100
+ * schema to restore their real types before encoding. Without this an export would emit bare
101
+ * strings and mongoimport would store String instead of ObjectId/Date.
102
+ */
103
+ modelForCollection(collection: string): Model | undefined;
104
+ modelNames(): string[];
105
+ listCollections(): Promise<string[]>;
106
+ stats(): Promise<AdapterStats & {
107
+ name: string;
108
+ syncEnabled: boolean;
109
+ }>;
110
+ /** Deletes all local data. Lens exposes this as an explicit developer action. */
111
+ destroy(): Promise<void>;
112
+ on<K extends keyof AnchorEvents>(event: K, listener: (payload: AnchorEvents[K]) => void): () => void;
113
+ off<K extends keyof AnchorEvents>(event: K, listener: (payload: AnchorEvents[K]) => void): void;
114
+ once<K extends keyof AnchorEvents>(event: K, listener: (payload: AnchorEvents[K]) => void): () => void;
115
+ get events(): TypedEmitter<AnchorEvents>;
116
+ /**
117
+ * Always present, even with no backend, so UI bound to sync state does not have to branch. In
118
+ * local-only mode `status()` reports "disabled" and the actions are explicit no-ops rather than
119
+ * throwing — a dashboard that renders sync state should degrade, not crash.
120
+ */
121
+ readonly sync: {
122
+ status: () => SyncStatus;
123
+ isEnabled: () => boolean;
124
+ now: () => Promise<{
125
+ pushed: number;
126
+ pulled: number;
127
+ conflicts: number;
128
+ } | null>;
129
+ pending: () => Promise<number>;
130
+ };
131
+ private syncRunner;
132
+ private pendingCounter;
133
+ /** Used by the sync engine to install itself without AnchorDB importing it. */
134
+ _attachSync(hooks: {
135
+ recordMutations: (collection: string, ops: WriteOp[]) => Promise<void>;
136
+ run: () => Promise<{
137
+ pushed: number;
138
+ pulled: number;
139
+ conflicts: number;
140
+ }>;
141
+ pending: () => Promise<number>;
142
+ setStatus: (fn: (status: SyncStatus) => void) => void;
143
+ }): void;
144
+ private runtimeCache;
145
+ private runtime;
146
+ /**
147
+ * The inspector exposes application data, so enabling it in production requires an explicit,
148
+ * separate acknowledgement — a config typo must never open a database over the network.
149
+ */
150
+ private assertInspectorSafe;
151
+ }
152
+ /** Alias matching the brief's original naming. */
153
+ export declare const LocalDB: typeof AnchorDB;
154
+ //# sourceMappingURL=anchor-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor-db.d.ts","sourceRoot":"","sources":["../../../src/core/anchor-db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalDB = exports.AnchorDB = void 0;
4
+ const errors_ts_1 = require("./errors.js");
5
+ const hlc_ts_1 = require("./hlc.js");
6
+ const uuid_ts_1 = require("./uuid.js");
7
+ const emitter_ts_1 = require("../events/emitter.js");
8
+ const index_ts_1 = require("../timestamps/index.js");
9
+ const timezone_ts_1 = require("../timestamps/timezone.js");
10
+ const schema_ts_1 = require("../schema/schema.js");
11
+ const model_ts_1 = require("../model/model.js");
12
+ const document_ts_1 = require("../model/document.js");
13
+ const memory_ts_1 = require("../storage/adapters/memory.js");
14
+ /**
15
+ * AnchorDB — MongoDB + Mongoose for mobile apps.
16
+ *
17
+ * ## Two modes, one API
18
+ *
19
+ * Passing no `sync` block yields a **purely local database**: no mutation queue is created, no
20
+ * network code is instantiated, deletes are hard deletes rather than tombstones, and documents
21
+ * carry no sync metadata. That is not a degraded mode — it is the default, and an app with no
22
+ * backend never pays for machinery it does not use.
23
+ *
24
+ * Adding a `sync` block later changes no application code. Existing documents are adopted on first
25
+ * sync (seeded dirty at version 0) so nothing has to be rewritten or re-imported.
26
+ */
27
+ class AnchorDB {
28
+ constructor(config) {
29
+ this.emitter = new emitter_ts_1.TypedEmitter();
30
+ this.models = new Map();
31
+ this.constructors = new Map();
32
+ this.openPromise = null;
33
+ this.closed = false;
34
+ /** Installed by the sync engine when sync is configured. */
35
+ this.mutationRecorder = null;
36
+ // ---- sync facade ---------------------------------------------------------
37
+ /**
38
+ * Always present, even with no backend, so UI bound to sync state does not have to branch. In
39
+ * local-only mode `status()` reports "disabled" and the actions are explicit no-ops rather than
40
+ * throwing — a dashboard that renders sync state should degrade, not crash.
41
+ */
42
+ this.sync = {
43
+ status: () => this.syncStatusValue,
44
+ isEnabled: () => this.syncEnabled,
45
+ now: async () => {
46
+ if (!this.syncEnabled)
47
+ return null;
48
+ if (!this.syncRunner) {
49
+ throw new errors_ts_1.AnchorConfigError("Sync is configured but the sync engine has not been attached. Import and call attachSync(db).");
50
+ }
51
+ return this.syncRunner();
52
+ },
53
+ pending: async () => (this.pendingCounter ? this.pendingCounter() : 0),
54
+ };
55
+ this.syncRunner = null;
56
+ this.pendingCounter = null;
57
+ // ---- internals -----------------------------------------------------------
58
+ this.runtimeCache = null;
59
+ if (!config.name || typeof config.name !== "string") {
60
+ throw new errors_ts_1.AnchorConfigError("AnchorDB requires a `name`, e.g. new AnchorDB({ name: \"my-app\" }).");
61
+ }
62
+ this.config = config;
63
+ this.name = config.name;
64
+ // Validated at construction so a typo fails immediately rather than silently rendering wrong
65
+ // times for the life of the app (§26.10).
66
+ if (config.timezone?.server)
67
+ (0, timezone_ts_1.assertValidTimeZone)(config.timezone.server, "timezone.server");
68
+ this.time = new index_ts_1.TimeService(config.timezone?.server ? { serverTimeZone: config.timezone.server } : {});
69
+ this.clientIdValue = config.clientId ?? (0, uuid_ts_1.generateClientId)();
70
+ this.clockInstance = new hlc_ts_1.HybridLogicalClock({ node: this.clientIdValue, now: () => this.time.nowMs() });
71
+ this.adapterInstance = config.adapter ?? new memory_ts_1.MemoryAdapter(config.name);
72
+ this.syncStatusValue = config.sync ? "idle" : "disabled";
73
+ if (config.inspector?.enabled)
74
+ this.assertInspectorSafe(config.inspector);
75
+ }
76
+ /** True when a `sync` block was supplied. */
77
+ get syncEnabled() {
78
+ return this.config.sync !== undefined;
79
+ }
80
+ get clientId() {
81
+ return this.clientIdValue;
82
+ }
83
+ get adapter() {
84
+ return this.adapterInstance;
85
+ }
86
+ /** Exposed for the sync engine, which must stamp and advance the same clock the models use. */
87
+ get clock() {
88
+ return this.clockInstance;
89
+ }
90
+ /** Opened lazily on first use, so construction never does I/O. */
91
+ async open() {
92
+ this.openPromise ??= (async () => {
93
+ await this.adapterInstance.open();
94
+ const storedClientId = await this.adapterInstance.getState("anchor:clientId");
95
+ if (storedClientId) {
96
+ // Adopt the persisted identity, and correct the clock with it: the clock was built in the
97
+ // constructor with a freshly generated id, before storage could be consulted.
98
+ this.clientIdValue = storedClientId;
99
+ this.clockInstance.setNode(storedClientId);
100
+ }
101
+ else {
102
+ await this.adapterInstance.setState("anchor:clientId", this.clientIdValue);
103
+ }
104
+ // Restoring the clock keeps ordering monotonic across an app restart.
105
+ const storedClock = await this.adapterInstance.getState("anchor:hlc");
106
+ if (storedClock)
107
+ this.clockInstance.restore(storedClock);
108
+ })();
109
+ return this.openPromise;
110
+ }
111
+ async close() {
112
+ if (this.closed)
113
+ return;
114
+ if (this.openPromise) {
115
+ await this.openPromise;
116
+ await this.adapterInstance.setState("anchor:hlc", encodeClock(this.clockInstance));
117
+ await this.adapterInstance.close();
118
+ }
119
+ this.closed = true;
120
+ }
121
+ /** Mirrors `mongoose.model()`. Calling it again with the same name returns the existing model. */
122
+ model(name, schema, options) {
123
+ const existing = this.constructors.get(name);
124
+ if (existing) {
125
+ if (schema && existing.schema !== schema) {
126
+ throw new errors_ts_1.AnchorConfigError(`Model "${name}" is already registered with a different schema. ` +
127
+ `Call db.model("${name}") without a schema to retrieve it.`);
128
+ }
129
+ return existing;
130
+ }
131
+ if (!schema) {
132
+ throw new errors_ts_1.AnchorConfigError(`Model "${name}" has not been registered. Pass a schema: db.model("${name}", schema).`);
133
+ }
134
+ const model = new model_ts_1.Model(name, schema, this.runtime(), options);
135
+ const ctor = (0, document_ts_1.createModelConstructor)(model);
136
+ // Queries return Documents unless .lean(); the factory closes the loop without Model
137
+ // importing Document (which would be circular).
138
+ model._setDocumentFactory((doc) => ctor.hydrate(doc));
139
+ this.models.set(name, model);
140
+ this.constructors.set(name, ctor);
141
+ return ctor;
142
+ }
143
+ /**
144
+ * Schema-less access, matching the driver's `db.collection("users")`. Useful for scratch work and
145
+ * for Lens, which must browse collections whose schema it does not have.
146
+ */
147
+ collection(name) {
148
+ const key = `__collection__${name}`;
149
+ const existing = this.constructors.get(key);
150
+ if (existing)
151
+ return existing;
152
+ const schema = new schema_ts_1.Schema({}, { strict: false, timestamps: this.config.timestamps ?? true });
153
+ const model = new model_ts_1.Model(key, schema, this.runtime(), { collection: name });
154
+ const ctor = (0, document_ts_1.createModelConstructor)(model);
155
+ model._setDocumentFactory((doc) => ctor.hydrate(doc));
156
+ this.models.set(key, model);
157
+ this.constructors.set(key, ctor);
158
+ return ctor;
159
+ }
160
+ /**
161
+ * The model registered for a storage collection, if any.
162
+ *
163
+ * Interop needs it: storage holds ObjectIds and Dates as strings, so an export has to consult the
164
+ * schema to restore their real types before encoding. Without this an export would emit bare
165
+ * strings and mongoimport would store String instead of ObjectId/Date.
166
+ */
167
+ modelForCollection(collection) {
168
+ for (const model of this.models.values()) {
169
+ if (model.collectionName === collection)
170
+ return model;
171
+ }
172
+ return undefined;
173
+ }
174
+ modelNames() {
175
+ return [...this.models.keys()].filter((n) => !n.startsWith("__collection__"));
176
+ }
177
+ async listCollections() {
178
+ await this.open();
179
+ return this.adapterInstance.listCollections();
180
+ }
181
+ async stats() {
182
+ await this.open();
183
+ const stats = await this.adapterInstance.stats();
184
+ return { ...stats, name: this.name, syncEnabled: this.syncEnabled };
185
+ }
186
+ /** Deletes all local data. Lens exposes this as an explicit developer action. */
187
+ async destroy() {
188
+ await this.open();
189
+ await this.adapterInstance.destroy();
190
+ }
191
+ // ---- events --------------------------------------------------------------
192
+ on(event, listener) {
193
+ return this.emitter.on(event, listener);
194
+ }
195
+ off(event, listener) {
196
+ this.emitter.off(event, listener);
197
+ }
198
+ once(event, listener) {
199
+ return this.emitter.once(event, listener);
200
+ }
201
+ get events() {
202
+ return this.emitter;
203
+ }
204
+ /** Used by the sync engine to install itself without AnchorDB importing it. */
205
+ _attachSync(hooks) {
206
+ this.mutationRecorder = hooks.recordMutations;
207
+ this.syncRunner = hooks.run;
208
+ this.pendingCounter = hooks.pending;
209
+ hooks.setStatus((status) => {
210
+ this.syncStatusValue = status;
211
+ });
212
+ }
213
+ runtime() {
214
+ this.runtimeCache ??= {
215
+ adapter: this.adapterInstance,
216
+ time: this.time,
217
+ clock: this.clockInstance,
218
+ events: this.emitter,
219
+ get syncEnabled() {
220
+ return false;
221
+ },
222
+ clientId: this.clientIdValue, // replaced below by a live getter
223
+ onMissingRef: this.config.onMissingRef ?? "null",
224
+ ready: () => this.open(),
225
+ getModelByCollection: (collection) => this.modelForCollection(collection),
226
+ getModel: (name) => {
227
+ const model = this.models.get(name);
228
+ if (!model) {
229
+ throw new errors_ts_1.AnchorConfigError(`Model "${name}" is referenced by a populate() but has not been registered on this database.`);
230
+ }
231
+ return model;
232
+ },
233
+ recordMutations: async (collection, ops) => {
234
+ if (this.mutationRecorder)
235
+ await this.mutationRecorder(collection, ops);
236
+ },
237
+ };
238
+ // Both must be live getters. `syncEnabled` because the sync engine may attach after models are
239
+ // created; `clientId` because open() may replace it with the persisted identity.
240
+ Object.defineProperty(this.runtimeCache, "syncEnabled", {
241
+ get: () => this.syncEnabled,
242
+ configurable: true,
243
+ });
244
+ Object.defineProperty(this.runtimeCache, "clientId", {
245
+ get: () => this.clientIdValue,
246
+ configurable: true,
247
+ });
248
+ return this.runtimeCache;
249
+ }
250
+ /**
251
+ * The inspector exposes application data, so enabling it in production requires an explicit,
252
+ * separate acknowledgement — a config typo must never open a database over the network.
253
+ */
254
+ assertInspectorSafe(inspector) {
255
+ const env = globalThis.process?.env?.NODE_ENV ?? "development";
256
+ if (env === "production" && !inspector.allowInProduction) {
257
+ throw new errors_ts_1.AnchorConfigError("The Anchor Inspector is enabled while NODE_ENV=production. It exposes your local database to " +
258
+ "Anchor Lens and must not ship in a release build. If this is deliberate (an internal build, " +
259
+ "say), set inspector.allowInProduction: true to acknowledge it.");
260
+ }
261
+ // eslint-disable-next-line no-console
262
+ console.warn(`[anchor] Inspector ENABLED for database "${this.name}". Your local data is reachable by Anchor Lens. ` +
263
+ `Disable it before shipping.`);
264
+ }
265
+ }
266
+ exports.AnchorDB = AnchorDB;
267
+ function encodeClock(clock) {
268
+ const peek = clock.peek();
269
+ return `${String(peek.wall).padStart(15, "0")}-${String(peek.counter).padStart(5, "0")}-${peek.node}`;
270
+ }
271
+ /** Alias matching the brief's original naming. */
272
+ exports.LocalDB = AnchorDB;
273
+ //# sourceMappingURL=anchor-db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor-db.js","sourceRoot":"","sources":["../../../src/core/anchor-db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Mongoose-shaped error hierarchy.
3
+ *
4
+ * Principle 1 (zero re-learning) applies to failures as much as to successes: code that already
5
+ * does `if (err.code === 11000)` or reads `err.errors[path].kind` on the backend must work
6
+ * unchanged here. Every class below mirrors the name, message format and enumerable properties
7
+ * Mongoose produces.
8
+ */
9
+ /** Base class for every error AnchorDB raises. Mirrors Mongoose's `MongooseError`. */
10
+ export declare class AnchorError extends Error {
11
+ readonly name: string;
12
+ constructor(message: string);
13
+ }
14
+ /** Configuration rejected at construction time (bad timezone, unknown adapter, ...). */
15
+ export declare class AnchorConfigError extends AnchorError {
16
+ readonly name = "AnchorConfigError";
17
+ }
18
+ /**
19
+ * A single failed validator on one path. Mongoose calls this `ValidatorError` and nests instances
20
+ * inside `ValidationError.errors`.
21
+ */
22
+ export declare class ValidatorError extends AnchorError {
23
+ readonly name = "ValidatorError";
24
+ readonly path: string;
25
+ readonly value: unknown;
26
+ /** Which validator failed: `required`, `min`, `enum`, `user defined`, ... */
27
+ readonly kind: string;
28
+ readonly properties: Record<string, unknown>;
29
+ constructor(opts: {
30
+ path: string;
31
+ value: unknown;
32
+ kind: string;
33
+ message: string;
34
+ [k: string]: unknown;
35
+ });
36
+ }
37
+ /**
38
+ * Failure converting a value to its declared type. Message format matches Mongoose so that
39
+ * log-scraping and error reporting behave identically.
40
+ */
41
+ export declare class CastError extends AnchorError {
42
+ readonly name = "CastError";
43
+ readonly stringValue: string;
44
+ readonly kind: string;
45
+ readonly value: unknown;
46
+ readonly path: string;
47
+ readonly valueType: string;
48
+ constructor(kind: string, value: unknown, path: string, reason?: string);
49
+ }
50
+ /** Aggregate of every path that failed validation for one document. */
51
+ export declare class ValidationError extends AnchorError {
52
+ readonly name = "ValidationError";
53
+ readonly errors: Record<string, ValidatorError | CastError>;
54
+ constructor(modelName?: string);
55
+ readonly modelName: string | undefined;
56
+ addError(path: string, error: ValidatorError | CastError): void;
57
+ get isEmpty(): boolean;
58
+ private buildMessage;
59
+ }
60
+ /** Raised by `orFail()` and by Lens edits targeting a document that vanished. */
61
+ export declare class DocumentNotFoundError extends AnchorError {
62
+ readonly name = "DocumentNotFoundError";
63
+ readonly filter: unknown;
64
+ constructor(filter: unknown, modelName?: string);
65
+ }
66
+ /** Writing a path not present in the schema while `strict: "throw"` is set. */
67
+ export declare class StrictModeError extends AnchorError {
68
+ readonly name = "StrictModeError";
69
+ readonly path: string;
70
+ constructor(path: string);
71
+ }
72
+ /**
73
+ * Server-style write error. A unique index violation surfaces as one of these with `code: 11000`,
74
+ * exactly like the MongoDB driver, so `err.code === 11000` branches port over untouched.
75
+ */
76
+ export declare class MongoServerError extends AnchorError {
77
+ readonly name = "MongoServerError";
78
+ readonly code: number;
79
+ readonly keyPattern: Record<string, 1 | -1> | undefined;
80
+ readonly keyValue: Record<string, unknown> | undefined;
81
+ readonly index: string | undefined;
82
+ constructor(opts: {
83
+ message: string;
84
+ code: number;
85
+ keyPattern?: Record<string, 1 | -1>;
86
+ keyValue?: Record<string, unknown>;
87
+ index?: string;
88
+ });
89
+ }
90
+ export declare const DUPLICATE_KEY_CODE = 11000;
91
+ /**
92
+ * Build the duplicate-key error MongoDB produces. The message is reproduced literally — including
93
+ * the `E11000 duplicate key error collection:` prefix — because real code greps for it.
94
+ */
95
+ export declare function duplicateKeyError(opts: {
96
+ dbName: string;
97
+ collection: string;
98
+ index: string;
99
+ keyPattern: Record<string, 1 | -1>;
100
+ keyValue: Record<string, unknown>;
101
+ }): MongoServerError;
102
+ /** Reported by `insertMany({ ordered: false })` after every insert has been attempted. */
103
+ export declare class BulkWriteError extends AnchorError {
104
+ readonly name = "MongoBulkWriteError";
105
+ readonly code = 11000;
106
+ readonly writeErrors: Array<{
107
+ index: number;
108
+ code: number;
109
+ errmsg: string;
110
+ err: Error;
111
+ }>;
112
+ readonly insertedCount: number;
113
+ readonly insertedIds: Record<number, unknown>;
114
+ constructor(opts: {
115
+ writeErrors: Array<{
116
+ index: number;
117
+ code: number;
118
+ errmsg: string;
119
+ err: Error;
120
+ }>;
121
+ insertedCount: number;
122
+ insertedIds: Record<number, unknown>;
123
+ });
124
+ }
125
+ //# sourceMappingURL=errors.d.ts.map