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,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateDocument = validateDocument;
4
+ const errors_ts_1 = require("../core/errors.js");
5
+ const path_ts_1 = require("../query/path.js");
6
+ async function validateDocument(doc, schema, opts = {}) {
7
+ const error = new errors_ts_1.ValidationError(opts.modelName);
8
+ const only = opts.pathsToValidate ? new Set(opts.pathsToValidate) : null;
9
+ for (const [path, def] of schema.paths) {
10
+ if (only && !only.has(path))
11
+ continue;
12
+ if (path === "_id")
13
+ continue;
14
+ const value = (0, path_ts_1.getPath)(doc, path);
15
+ if (isRequiredViolation(doc, path, def, value)) {
16
+ error.addError(path, new errors_ts_1.ValidatorError({
17
+ path,
18
+ value,
19
+ kind: "required",
20
+ message: interpolate(def.requiredMessage ?? `Path \`{PATH}\` is required.`, path, value),
21
+ }));
22
+ continue;
23
+ }
24
+ // Absent optional values skip every other validator, matching Mongoose.
25
+ if (value === undefined || value === null)
26
+ continue;
27
+ if (def.enumValues) {
28
+ const values = def.enumValues;
29
+ const candidates = Array.isArray(value) && def.instance === "Array" ? value : [value];
30
+ const bad = candidates.find((c) => !values.includes(c));
31
+ if (bad !== undefined) {
32
+ error.addError(path, new errors_ts_1.ValidatorError({
33
+ path,
34
+ value: bad,
35
+ kind: "enum",
36
+ message: interpolate(def.enumMessage ?? "`{VALUE}` is not a valid enum value for path `{PATH}`.", path, bad),
37
+ }));
38
+ continue;
39
+ }
40
+ }
41
+ for (const spec of def.validators) {
42
+ let ok;
43
+ try {
44
+ ok = await spec.validator(value, doc);
45
+ }
46
+ catch (err) {
47
+ // A throwing custom validator is a failure, not a crash — matching Mongoose, and keeping a
48
+ // user's buggy validator from taking down an entire batch insert.
49
+ error.addError(path, new errors_ts_1.ValidatorError({
50
+ path,
51
+ value,
52
+ kind: "user defined",
53
+ message: err instanceof Error ? err.message : String(err),
54
+ }));
55
+ continue;
56
+ }
57
+ if (!ok) {
58
+ const message = typeof spec.message === "function"
59
+ ? spec.message({ value, path })
60
+ : interpolate(spec.message ?? `Validator failed for path \`{PATH}\` with value \`{VALUE}\``, path, value);
61
+ error.addError(path, new errors_ts_1.ValidatorError({ path, value, kind: "user defined", message }));
62
+ }
63
+ }
64
+ }
65
+ if (!error.isEmpty)
66
+ throw error;
67
+ }
68
+ function isRequiredViolation(doc, path, def, value) {
69
+ const required = def.requiredFn ? def.requiredFn.call(doc) : def.required;
70
+ if (!required)
71
+ return false;
72
+ if (value === undefined || value === null)
73
+ return true;
74
+ // Mongoose treats "" and [] as missing for required purposes.
75
+ if (typeof value === "string" && value.length === 0)
76
+ return true;
77
+ if (Array.isArray(value) && value.length === 0)
78
+ return true;
79
+ return !(0, path_ts_1.hasPath)(doc, path) && value === undefined;
80
+ }
81
+ function interpolate(template, path, value) {
82
+ return template.replace(/\{PATH\}/g, path).replace(/\{VALUE\}/g, formatValue(value));
83
+ }
84
+ function formatValue(value) {
85
+ if (value === null)
86
+ return "null";
87
+ if (value === undefined)
88
+ return "undefined";
89
+ if (value instanceof Date)
90
+ return value.toISOString();
91
+ if (typeof value === "object") {
92
+ try {
93
+ return JSON.stringify(value);
94
+ }
95
+ catch {
96
+ return String(value);
97
+ }
98
+ }
99
+ return String(value);
100
+ }
101
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/schema/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { SqlAdapterBase, type SqlDriver } from "./sql-base.js";
2
+ /**
3
+ * Capacitor SQLite adapter (Ionic on iOS / Android).
4
+ *
5
+ * ```ts
6
+ * import { CapacitorSQLite, SQLiteConnection } from "@capacitor-community/sqlite";
7
+ * import { CapacitorSqliteAdapter } from "anchordb/storage/capacitor-sqlite";
8
+ *
9
+ * const adapter = new CapacitorSqliteAdapter({
10
+ * connection: new SQLiteConnection(CapacitorSQLite),
11
+ * database: "my-app",
12
+ * });
13
+ * ```
14
+ *
15
+ * The plugin is injected for the same reason as Expo's. For `ionic serve` in a browser use the
16
+ * IndexedDB adapter instead: the Capacitor plugin's web build needs jeep-sqlite plus a WASM asset,
17
+ * which is disproportionate setup for a development convenience.
18
+ *
19
+ * **Not executed by this repository's test run**: it needs a device or emulator. Written against
20
+ * the documented plugin API and typechecked; all storage logic is inherited from `SqlAdapterBase`,
21
+ * which the conformance suite covers through node:sqlite.
22
+ */
23
+ export interface CapacitorSQLiteConnection {
24
+ createConnection(database: string, encrypted: boolean, mode: string, version: number, readonly: boolean): Promise<CapacitorDBConnection>;
25
+ closeConnection(database: string, readonly: boolean): Promise<void>;
26
+ isConnection?(database: string, readonly: boolean): Promise<{
27
+ result: boolean;
28
+ }>;
29
+ retrieveConnection?(database: string, readonly: boolean): Promise<CapacitorDBConnection>;
30
+ }
31
+ export interface CapacitorDBConnection {
32
+ open(): Promise<void>;
33
+ close(): Promise<void>;
34
+ execute(statements: string): Promise<{
35
+ changes?: {
36
+ changes: number;
37
+ };
38
+ }>;
39
+ run(statement: string, values?: unknown[], transaction?: boolean): Promise<{
40
+ changes?: {
41
+ changes: number;
42
+ };
43
+ }>;
44
+ query(statement: string, values?: unknown[]): Promise<{
45
+ values?: unknown[];
46
+ }>;
47
+ beginTransaction?(): Promise<unknown>;
48
+ commitTransaction?(): Promise<unknown>;
49
+ rollbackTransaction?(): Promise<unknown>;
50
+ }
51
+ export interface CapacitorSqliteAdapterOptions {
52
+ connection: CapacitorSQLiteConnection;
53
+ database?: string;
54
+ dbName?: string;
55
+ encrypted?: boolean;
56
+ version?: number;
57
+ }
58
+ export declare class CapacitorSqliteAdapter extends SqlAdapterBase {
59
+ readonly name = "capacitor-sqlite";
60
+ private readonly connection;
61
+ private readonly database;
62
+ private readonly encrypted;
63
+ private readonly version;
64
+ constructor(options: CapacitorSqliteAdapterOptions);
65
+ protected createDriver(): Promise<SqlDriver>;
66
+ }
67
+ //# sourceMappingURL=capacitor-sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capacitor-sqlite.d.ts","sourceRoot":"","sources":["../../../../src/storage/adapters/capacitor-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,YAAY,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,kBAAkB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IACxE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC9G,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IAC9E,gBAAgB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,iBAAiB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,mBAAmB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,yBAAyB,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,sBAAuB,SAAQ,cAAc;IACxD,QAAQ,CAAC,IAAI,sBAAsB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,6BAA6B;cAelC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAsDnD"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CapacitorSqliteAdapter = void 0;
4
+ const errors_ts_1 = require("../../core/errors.js");
5
+ const sql_base_ts_1 = require("./sql-base.js");
6
+ class CapacitorSqliteAdapter extends sql_base_ts_1.SqlAdapterBase {
7
+ constructor(options) {
8
+ super(options.dbName ?? options.database ?? "anchor");
9
+ this.name = "capacitor-sqlite";
10
+ if (!options.connection?.createConnection) {
11
+ throw new errors_ts_1.AnchorConfigError("CapacitorSqliteAdapter needs an SQLiteConnection: " +
12
+ 'import { CapacitorSQLite, SQLiteConnection } from "@capacitor-community/sqlite" ' +
13
+ "and pass `new SQLiteConnection(CapacitorSQLite)` as `connection`.");
14
+ }
15
+ this.connection = options.connection;
16
+ this.database = options.database ?? options.dbName ?? "anchor";
17
+ this.encrypted = options.encrypted ?? false;
18
+ this.version = options.version ?? 1;
19
+ }
20
+ async createDriver() {
21
+ // Reuse an existing connection when the plugin already holds one. Creating a second for the
22
+ // same database throws, and hot reload makes that a routine occurrence in development.
23
+ const existing = await this.connection.isConnection?.(this.database, false);
24
+ const db = existing?.result && this.connection.retrieveConnection
25
+ ? await this.connection.retrieveConnection(this.database, false)
26
+ : await this.connection.createConnection(this.database, this.encrypted, this.encrypted ? "secret" : "no-encryption", this.version, false);
27
+ await db.open();
28
+ let depth = 0;
29
+ return {
30
+ name: "capacitor-sqlite",
31
+ run: async (sql, params = []) => {
32
+ // `transaction: false` on purpose — transactions are managed explicitly below. Letting the
33
+ // plugin wrap each statement individually would break the all-or-nothing write guarantee.
34
+ await db.run(sql, params, false);
35
+ },
36
+ all: async (sql, params = []) => {
37
+ const result = await db.query(sql, params);
38
+ return (result.values ?? []);
39
+ },
40
+ exec: async (sql) => {
41
+ await db.execute(sql);
42
+ },
43
+ transaction: async (fn) => {
44
+ if (depth > 0)
45
+ return fn(); // already inside one
46
+ depth++;
47
+ await db.beginTransaction?.();
48
+ try {
49
+ const result = await fn();
50
+ await db.commitTransaction?.();
51
+ return result;
52
+ }
53
+ catch (err) {
54
+ await db.rollbackTransaction?.().catch(() => undefined);
55
+ throw err;
56
+ }
57
+ finally {
58
+ depth--;
59
+ }
60
+ },
61
+ close: async () => {
62
+ await db.close();
63
+ await this.connection.closeConnection(this.database, false);
64
+ },
65
+ };
66
+ }
67
+ }
68
+ exports.CapacitorSqliteAdapter = CapacitorSqliteAdapter;
69
+ //# sourceMappingURL=capacitor-sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capacitor-sqlite.js","sourceRoot":"","sources":["../../../../src/storage/adapters/capacitor-sqlite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { SqlAdapterBase, type SqlDriver } from "./sql-base.js";
2
+ /**
3
+ * Expo SQLite adapter (React Native / iOS / Android).
4
+ *
5
+ * ```ts
6
+ * import * as SQLite from "expo-sqlite";
7
+ * import { ExpoSqliteAdapter } from "anchordb/storage/expo-sqlite";
8
+ *
9
+ * const db = new AnchorDB({
10
+ * name: "my-app",
11
+ * adapter: new ExpoSqliteAdapter({ sqlite: SQLite, database: "my-app.db" }),
12
+ * });
13
+ * ```
14
+ *
15
+ * `expo-sqlite` is **injected rather than imported**: importing it would force every consumer of
16
+ * `anchordb` to install an Expo native module, including Node and browser users who will never
17
+ * touch it. The Capacitor adapter follows the same rule.
18
+ *
19
+ * Targets the modern async API (`openDatabaseAsync`, SDK 51+). The legacy callback API is
20
+ * deliberately not supported — it is deprecated upstream, and shimming it would obscure the
21
+ * transaction semantics the atomic-write guarantee depends on.
22
+ *
23
+ * **Not executed by this repository's test run**: it needs a device or simulator. It is written
24
+ * against the documented API and typechecked, and every line of its query, index and
25
+ * unique-enforcement logic is inherited from `SqlAdapterBase`, which the storage conformance suite
26
+ * exercises through the node:sqlite adapter.
27
+ */
28
+ export interface ExpoSQLiteModule {
29
+ openDatabaseAsync(name: string, options?: Record<string, unknown>): Promise<ExpoDatabase>;
30
+ }
31
+ export interface ExpoDatabase {
32
+ execAsync(source: string): Promise<void>;
33
+ runAsync(source: string, params?: unknown[]): Promise<{
34
+ changes: number;
35
+ lastInsertRowId: number;
36
+ }>;
37
+ getAllAsync<T>(source: string, params?: unknown[]): Promise<T[]>;
38
+ withExclusiveTransactionAsync(task: (tx: ExpoDatabase) => Promise<void>): Promise<void>;
39
+ closeAsync(): Promise<void>;
40
+ }
41
+ export interface ExpoSqliteAdapterOptions {
42
+ /** The imported `expo-sqlite` module. */
43
+ sqlite: ExpoSQLiteModule;
44
+ /** File name, e.g. "my-app.db". */
45
+ database?: string;
46
+ dbName?: string;
47
+ }
48
+ export declare class ExpoSqliteAdapter extends SqlAdapterBase {
49
+ readonly name = "expo-sqlite";
50
+ private readonly sqlite;
51
+ private readonly database;
52
+ constructor(options: ExpoSqliteAdapterOptions);
53
+ protected createDriver(): Promise<SqlDriver>;
54
+ }
55
+ //# sourceMappingURL=expo-sqlite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo-sqlite.d.ts","sourceRoot":"","sources":["../../../../src/storage/adapters/expo-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpG,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACjE,6BAA6B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,MAAM,EAAE,gBAAgB,CAAC;IACzB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,OAAO,EAAE,wBAAwB;cAa7B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAiCnD"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpoSqliteAdapter = void 0;
4
+ const errors_ts_1 = require("../../core/errors.js");
5
+ const sql_base_ts_1 = require("./sql-base.js");
6
+ class ExpoSqliteAdapter extends sql_base_ts_1.SqlAdapterBase {
7
+ constructor(options) {
8
+ super(options.dbName ?? "anchor");
9
+ this.name = "expo-sqlite";
10
+ if (!options.sqlite?.openDatabaseAsync) {
11
+ throw new errors_ts_1.AnchorConfigError("ExpoSqliteAdapter needs the expo-sqlite module: " +
12
+ 'import * as SQLite from "expo-sqlite" and pass it as `sqlite`. ' +
13
+ "SDK 51+ is required (the async API).");
14
+ }
15
+ this.sqlite = options.sqlite;
16
+ this.database = options.database ?? `${options.dbName ?? "anchor"}.db`;
17
+ }
18
+ async createDriver() {
19
+ const db = await this.sqlite.openDatabaseAsync(this.database);
20
+ // WAL stops reads blocking on a write, which on a mid-range Android device is the difference
21
+ // between a smooth list and a visible stutter while syncing.
22
+ await db.execAsync("PRAGMA journal_mode = WAL;");
23
+ let inTransaction = false;
24
+ return {
25
+ name: "expo-sqlite",
26
+ run: async (sql, params = []) => {
27
+ await db.runAsync(sql, params);
28
+ },
29
+ all: async (sql, params = []) => db.getAllAsync(sql, params),
30
+ exec: async (sql) => db.execAsync(sql),
31
+ transaction: async (fn) => {
32
+ // A nested transaction is treated as a no-op rather than an error: createIndex() opens one
33
+ // and may legitimately be called from code that already has one open.
34
+ if (inTransaction)
35
+ return fn();
36
+ let result;
37
+ inTransaction = true;
38
+ try {
39
+ await db.withExclusiveTransactionAsync(async () => {
40
+ result = await fn();
41
+ });
42
+ }
43
+ finally {
44
+ inTransaction = false;
45
+ }
46
+ return result;
47
+ },
48
+ close: async () => db.closeAsync(),
49
+ };
50
+ }
51
+ }
52
+ exports.ExpoSqliteAdapter = ExpoSqliteAdapter;
53
+ //# sourceMappingURL=expo-sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo-sqlite.js","sourceRoot":"","sources":["../../../../src/storage/adapters/expo-sqlite.ts"],"names":[],"mappings":";;;AAAA,oDAAyD;AACzD,+CAA+D;AAiD/D,MAAa,iBAAkB,SAAQ,4BAAc;IAKnD,YAAY,OAAiC;QAC3C,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;QAL3B,SAAI,GAAG,aAAa,CAAC;QAM5B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;YACvC,MAAM,IAAI,6BAAiB,CACzB,kDAAkD;gBAChD,iEAAiE;gBACjE,sCAAsC,CACzC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,KAAK,CAAC;IACzE,CAAC;IAES,KAAK,CAAC,YAAY;QAC1B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,6FAA6F;QAC7F,6DAA6D;QAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAEjD,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE;gBAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,GAAG,EAAE,KAAK,EAAK,GAAW,EAAE,SAAoB,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAI,GAAG,EAAE,MAAM,CAAC;YACrF,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;YACtC,WAAW,EAAE,KAAK,EAAK,EAAoB,EAAc,EAAE;gBACzD,2FAA2F;gBAC3F,sEAAsE;gBACtE,IAAI,aAAa;oBAAE,OAAO,EAAE,EAAE,CAAC;gBAC/B,IAAI,MAAU,CAAC;gBACf,aAAa,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,6BAA6B,CAAC,KAAK,IAAI,EAAE;wBAChD,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC;gBACL,CAAC;wBAAS,CAAC;oBACT,aAAa,GAAG,KAAK,CAAC;gBACxB,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE;SACnC,CAAC;IACJ,CAAC;CACF;AAnDD,8CAmDC"}
@@ -0,0 +1,55 @@
1
+ import type { AdapterStats, DatabaseAdapter, IndexSpec, StoragePlan, StorageResult, StoredRow, WriteOp } from "../types.js";
2
+ export interface IndexedDbAdapterOptions {
3
+ dbName?: string;
4
+ /** Injectable for tests and non-browser runtimes (e.g. fake-indexeddb). */
5
+ indexedDB?: IDBFactory;
6
+ /**
7
+ * The matching `IDBKeyRange`.
8
+ *
9
+ * Injected alongside the factory rather than read from the global: a polyfilled factory comes
10
+ * with its OWN key-range class, and mixing a polyfill's factory with the global's ranges throws
11
+ * at runtime. Defaults to the global when running in a real browser.
12
+ */
13
+ keyRange?: typeof IDBKeyRange;
14
+ version?: number;
15
+ }
16
+ export declare class IndexedDbAdapter implements DatabaseAdapter {
17
+ readonly name = "indexeddb";
18
+ private readonly dbName;
19
+ private readonly factory;
20
+ private readonly keyRange;
21
+ private readonly version;
22
+ private db;
23
+ private indexCache;
24
+ constructor(options?: IndexedDbAdapterOptions);
25
+ open(): Promise<void>;
26
+ close(): Promise<void>;
27
+ destroy(): Promise<void>;
28
+ private tx;
29
+ private loadIndexes;
30
+ ensureCollection(collection: string): Promise<void>;
31
+ listCollections(): Promise<string[]>;
32
+ get(collection: string, id: string, includeDeleted?: boolean): Promise<StoredRow | null>;
33
+ /**
34
+ * Reads every document in the collection and filters in JS.
35
+ *
36
+ * IndexedDB cursors cannot express Mongo's comparison semantics, so pushing constraints down
37
+ * would risk returning different rows than the JS matcher — and the honest `applied` flags below
38
+ * are what stop the layer above from skipping its own filtering.
39
+ */
40
+ find(plan: StoragePlan): Promise<StorageResult>;
41
+ private collectionRecords;
42
+ count(plan: StoragePlan): Promise<number | null>;
43
+ /** One transaction for the whole batch, so a duplicate anywhere rolls all of it back. */
44
+ write(ops: WriteOp[]): Promise<void>;
45
+ createIndex(collection: string, spec: IndexSpec): Promise<void>;
46
+ dropIndex(collection: string, name: string): Promise<void>;
47
+ listIndexes(collection: string): Promise<IndexSpec[]>;
48
+ getState(key: string): Promise<string | null>;
49
+ setState(key: string, value: string): Promise<void>;
50
+ stats(): Promise<AdapterStats>;
51
+ scan(collection: string, opts?: {
52
+ includeDeleted?: boolean;
53
+ }): AsyncIterable<StoredRow>;
54
+ }
55
+ //# sourceMappingURL=indexeddb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../../../../src/storage/adapters/indexeddb.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,WAAW,EACX,aAAa,EACb,SAAS,EACT,OAAO,EACR,MAAM,aAAa,CAAC;AA0CrB,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,WAAW,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,EAAE,CAAe;IACzB,OAAO,CAAC,UAAU,CAA6C;gBAEnD,OAAO,GAAE,uBAA4B;IAqB3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,OAAO,CAAC,EAAE;YAsCI,WAAW;IAiBnB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IASpC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAS5F;;;;;;OAMG;IACG,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;YA6BvC,iBAAiB;IAQzB,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOtD,yFAAyF;IACnF,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqEpC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAsD/D,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAMrD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO7C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAe7B,IAAI,CACT,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACtC,aAAa,CAAC,SAAS,CAAC;CAM5B"}