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,47 @@
1
+ import { zonedTimeToUtc } from "./timezone.js";
2
+ export * from "./timezone.js";
3
+ export interface TimeServiceOptions {
4
+ /** Business/reference zone (§26.2). Display only — never affects storage. */
5
+ serverTimeZone?: string;
6
+ /** Overridden by the sync engine once a server clock offset is known. */
7
+ now?: () => number;
8
+ }
9
+ /**
10
+ * `db.time` (§26.9).
11
+ *
12
+ * Every method either produces canonical UTC or formats canonical UTC for display. None of them can
13
+ * change a stored value — that separation is the whole point of §26.11.
14
+ */
15
+ export declare class TimeService {
16
+ readonly deviceTimeZone: string;
17
+ readonly serverTimeZone: string | undefined;
18
+ private nowFn;
19
+ constructor(opts?: TimeServiceOptions);
20
+ /** Canonical current timestamp: ISO-8601, UTC, milliseconds. */
21
+ now(): string;
22
+ nowMs(): number;
23
+ nowDate(): Date;
24
+ /** Normalise anything date-like to canonical UTC. */
25
+ toUTC(value: Date | string | number): string;
26
+ /**
27
+ * Render a stored UTC value as wall-clock text in `tz` (defaults to the device zone).
28
+ * Display only: `db.time.fromUTC(stored, tz)` never rewrites `stored`.
29
+ */
30
+ fromUTC(value: Date | string | number, tz?: string): string;
31
+ /** Same instant rendered in the configured server/business zone. */
32
+ inServerZone(value: Date | string | number): string;
33
+ /** Interpret a wall-clock reading in a zone and return canonical UTC. */
34
+ fromLocal(local: string, tz?: string): string;
35
+ /** UTC offset of a zone at an instant, e.g. "+05:30". */
36
+ offsetAt(value: Date | string | number, tz?: string): string;
37
+ /** Used by the sync engine to install a server-skew-corrected clock. */
38
+ setClock(now: () => number): void;
39
+ /** All three views of one instant — what Lens renders (§44). */
40
+ describe(value: Date | string | number): {
41
+ utc: string;
42
+ device: string;
43
+ server?: string;
44
+ };
45
+ }
46
+ export { zonedTimeToUtc };
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/timestamps/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,cAAc,EACf,MAAM,eAAe,CAAC;AAEvB,cAAc,eAAe,CAAC;AAE9B,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAe;gBAEhB,IAAI,GAAE,kBAAuB;IAMzC,gEAAgE;IAChE,GAAG,IAAI,MAAM;IAIb,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,IAAI;IAIf,qDAAqD;IACrD,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAI5C;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI3D,oEAAoE;IACpE,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM;IAOnD,yEAAyE;IACzE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7C,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAK5D,wEAAwE;IACxE,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,GAAG,IAAI;IAIjC,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAW1F;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { assertValidTimeZone, detectDeviceTimeZone, formatInTimeZone, getTimeZoneOffsetMs, formatOffset, parseZonedTimeToUtc, toUtcIso, zonedTimeToUtc, } from "./timezone.js";
2
+ export * from "./timezone.js";
3
+ /**
4
+ * `db.time` (§26.9).
5
+ *
6
+ * Every method either produces canonical UTC or formats canonical UTC for display. None of them can
7
+ * change a stored value — that separation is the whole point of §26.11.
8
+ */
9
+ export class TimeService {
10
+ constructor(opts = {}) {
11
+ this.deviceTimeZone = detectDeviceTimeZone();
12
+ this.serverTimeZone = opts.serverTimeZone ? assertValidTimeZone(opts.serverTimeZone) : undefined;
13
+ this.nowFn = opts.now ?? (() => Date.now());
14
+ }
15
+ /** Canonical current timestamp: ISO-8601, UTC, milliseconds. */
16
+ now() {
17
+ return new Date(this.nowFn()).toISOString();
18
+ }
19
+ nowMs() {
20
+ return this.nowFn();
21
+ }
22
+ nowDate() {
23
+ return new Date(this.nowFn());
24
+ }
25
+ /** Normalise anything date-like to canonical UTC. */
26
+ toUTC(value) {
27
+ return toUtcIso(value);
28
+ }
29
+ /**
30
+ * Render a stored UTC value as wall-clock text in `tz` (defaults to the device zone).
31
+ * Display only: `db.time.fromUTC(stored, tz)` never rewrites `stored`.
32
+ */
33
+ fromUTC(value, tz) {
34
+ return formatInTimeZone(value, tz ?? this.deviceTimeZone);
35
+ }
36
+ /** Same instant rendered in the configured server/business zone. */
37
+ inServerZone(value) {
38
+ if (!this.serverTimeZone) {
39
+ throw new Error("No server time zone configured. Pass `timezone: { server: \"...\" }` to AnchorDB.");
40
+ }
41
+ return formatInTimeZone(value, this.serverTimeZone);
42
+ }
43
+ /** Interpret a wall-clock reading in a zone and return canonical UTC. */
44
+ fromLocal(local, tz) {
45
+ return parseZonedTimeToUtc(local, tz ?? this.deviceTimeZone).toISOString();
46
+ }
47
+ /** UTC offset of a zone at an instant, e.g. "+05:30". */
48
+ offsetAt(value, tz) {
49
+ const d = value instanceof Date ? value : new Date(value);
50
+ return formatOffset(getTimeZoneOffsetMs(d, tz ?? this.deviceTimeZone));
51
+ }
52
+ /** Used by the sync engine to install a server-skew-corrected clock. */
53
+ setClock(now) {
54
+ this.nowFn = now;
55
+ }
56
+ /** All three views of one instant — what Lens renders (§44). */
57
+ describe(value) {
58
+ const utc = toUtcIso(value);
59
+ const out = {
60
+ utc,
61
+ device: `${formatInTimeZone(utc, this.deviceTimeZone)} ${this.deviceTimeZone}`,
62
+ };
63
+ if (this.serverTimeZone) {
64
+ out.server = `${formatInTimeZone(utc, this.serverTimeZone)} ${this.serverTimeZone}`;
65
+ }
66
+ return out;
67
+ }
68
+ }
69
+ export { zonedTimeToUtc };
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/timestamps/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,QAAQ,EACR,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,cAAc,eAAe,CAAC;AAS9B;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAKtB,YAAY,OAA2B,EAAE;QACvC,IAAI,CAAC,cAAc,GAAG,oBAAoB,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,gEAAgE;IAChE,GAAG;QACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,KAA6B;QACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAA6B,EAAE,EAAW;QAChD,OAAO,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,oEAAoE;IACpE,YAAY,CAAC,KAA6B;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC;IAED,yEAAyE;IACzE,SAAS,CAAC,KAAa,EAAE,EAAW;QAClC,OAAO,mBAAmB,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7E,CAAC;IAED,yDAAyD;IACzD,QAAQ,CAAC,KAA6B,EAAE,EAAW;QACjD,MAAM,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,YAAY,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,wEAAwE;IACxE,QAAQ,CAAC,GAAiB;QACxB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,gEAAgE;IAChE,QAAQ,CAAC,KAA6B;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAqD;YAC5D,GAAG;YACH,MAAM,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;SAC/E,CAAC;QACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,GAAG,CAAC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACtF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Timezone handling.
3
+ *
4
+ * The rule the whole system rests on: **UTC is the only canonical representation**. Device zone and
5
+ * configured server zone are presentation/reference concerns and can never influence what is
6
+ * stored. Everything here either produces UTC or formats UTC for display; nothing converts storage.
7
+ *
8
+ * Implemented entirely on `Intl`, with no date library, so React Native and browsers carry no extra
9
+ * dependency. The one platform caveat is ICU availability, handled in `assertIntlSupport()`.
10
+ */
11
+ /** `Intl.DateTimeFormat().resolvedOptions().timeZone`, e.g. "Asia/Colombo". */
12
+ export declare function detectDeviceTimeZone(): string;
13
+ /**
14
+ * True for a real IANA zone. Prefers `Intl.supportedValuesOf('timeZone')` where present and falls
15
+ * back to constructing a formatter, which throws `RangeError` on an unknown zone.
16
+ */
17
+ export declare function isValidTimeZone(tz: string): boolean;
18
+ /**
19
+ * Fail loudly at configuration time (§26.10). Silently falling back to UTC would mean every
20
+ * displayed timestamp in the app is quietly wrong, which is far worse than refusing to start.
21
+ */
22
+ export declare function assertValidTimeZone(tz: string, settingName?: string): string;
23
+ /** Detects the stripped-ICU builds where every zone silently formats as UTC. */
24
+ export declare function assertIntlSupport(): void;
25
+ /**
26
+ * Offset of `tz` at a given instant, in milliseconds east of UTC.
27
+ * `Asia/Colombo` → +19800000 (5h30m). Handles DST because it asks about a specific instant.
28
+ */
29
+ export declare function getTimeZoneOffsetMs(instant: Date, tz: string): number;
30
+ /**
31
+ * Interpret a wall-clock reading *in a zone* and return the UTC instant.
32
+ *
33
+ * DST makes this genuinely ambiguous, so a naive "measure the offset then subtract it" pass is
34
+ * wrong — around a transition it can silently resolve to a different local time than the one asked
35
+ * for. We instead form the two candidate instants implied by the offsets on either side of any
36
+ * nearby transition and check which of them actually round-trips:
37
+ *
38
+ * both valid normal time, or a fall-back OVERLAP -> take the earlier instant
39
+ * one valid unambiguous
40
+ * neither a spring-forward GAP: the requested local time does not exist, so shift forward
41
+ * past the gap
42
+ *
43
+ * This matches Temporal's `disambiguation: "compatible"` and Luxon's default, which is the
44
+ * behaviour developers already expect. Both branches are covered by tests.
45
+ */
46
+ export declare function zonedTimeToUtc(wall: {
47
+ year: number;
48
+ month: number;
49
+ day: number;
50
+ hour?: number;
51
+ minute?: number;
52
+ second?: number;
53
+ ms?: number;
54
+ }, tz: string): Date;
55
+ /** Parse "2026-08-31 10:29:00" / "2026-08-31T10:29" as a wall time in `tz`. */
56
+ export declare function parseZonedTimeToUtc(local: string, tz: string): Date;
57
+ /** Canonical storage format: ISO-8601, UTC, millisecond precision, `Z` suffix. */
58
+ export declare function toUtcIso(value: Date | string | number): string;
59
+ /** Render a UTC instant as wall-clock text in `tz`. Display only — storage is untouched. */
60
+ export declare function formatInTimeZone(value: Date | string | number, tz: string, opts?: {
61
+ withZone?: boolean;
62
+ separator?: string;
63
+ }): string;
64
+ export declare function formatOffset(offsetMs: number): string;
65
+ //# sourceMappingURL=timezone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone.d.ts","sourceRoot":"","sources":["../../../src/timestamps/timezone.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,+EAA+E;AAC/E,wBAAgB,oBAAoB,IAAI,MAAM,CAQ7C;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAcnD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,SAAoB,GAAG,MAAM,CAiBvF;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,IAAI,IAAI,CASxC;AA+CD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAChH,EAAE,EAAE,MAAM,GACT,IAAI,CAyBN;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAmBnE;AAED,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAM9D;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAC7B,EAAE,EAAE,MAAM,EACV,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,MAAM,CAUR;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMrD"}
@@ -0,0 +1,196 @@
1
+ import { AnchorConfigError } from "../core/errors.js";
2
+ /**
3
+ * Timezone handling.
4
+ *
5
+ * The rule the whole system rests on: **UTC is the only canonical representation**. Device zone and
6
+ * configured server zone are presentation/reference concerns and can never influence what is
7
+ * stored. Everything here either produces UTC or formats UTC for display; nothing converts storage.
8
+ *
9
+ * Implemented entirely on `Intl`, with no date library, so React Native and browsers carry no extra
10
+ * dependency. The one platform caveat is ICU availability, handled in `assertIntlSupport()`.
11
+ */
12
+ /** `Intl.DateTimeFormat().resolvedOptions().timeZone`, e.g. "Asia/Colombo". */
13
+ export function detectDeviceTimeZone() {
14
+ try {
15
+ const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
16
+ if (tz)
17
+ return tz;
18
+ }
19
+ catch {
20
+ /* fall through */
21
+ }
22
+ return "UTC";
23
+ }
24
+ const validCache = new Map();
25
+ /**
26
+ * True for a real IANA zone. Prefers `Intl.supportedValuesOf('timeZone')` where present and falls
27
+ * back to constructing a formatter, which throws `RangeError` on an unknown zone.
28
+ */
29
+ export function isValidTimeZone(tz) {
30
+ if (typeof tz !== "string" || tz.length === 0)
31
+ return false;
32
+ const cached = validCache.get(tz);
33
+ if (cached !== undefined)
34
+ return cached;
35
+ let valid = false;
36
+ try {
37
+ new Intl.DateTimeFormat("en-US", { timeZone: tz });
38
+ valid = true;
39
+ }
40
+ catch {
41
+ valid = false;
42
+ }
43
+ validCache.set(tz, valid);
44
+ return valid;
45
+ }
46
+ /**
47
+ * Fail loudly at configuration time (§26.10). Silently falling back to UTC would mean every
48
+ * displayed timestamp in the app is quietly wrong, which is far worse than refusing to start.
49
+ */
50
+ export function assertValidTimeZone(tz, settingName = "timezone.server") {
51
+ if (!isValidTimeZone(tz)) {
52
+ let suggestion = "";
53
+ try {
54
+ const all = Intl.supportedValuesOf?.("timeZone") ?? [];
55
+ const needle = tz.toLowerCase().replace(/[_\s-]/g, "");
56
+ const near = all.filter((z) => z.toLowerCase().replace(/[_\s-]/g, "").includes(needle)).slice(0, 3);
57
+ if (near.length)
58
+ suggestion = ` Did you mean: ${near.join(", ")}?`;
59
+ }
60
+ catch {
61
+ /* suggestions are best-effort */
62
+ }
63
+ throw new AnchorConfigError(`Invalid IANA time zone "${tz}" for ${settingName}.${suggestion} ` +
64
+ `Expected a name like "Asia/Colombo", "America/New_York" or "UTC".`);
65
+ }
66
+ return tz;
67
+ }
68
+ /** Detects the stripped-ICU builds where every zone silently formats as UTC. */
69
+ export function assertIntlSupport() {
70
+ const probe = new Date("2026-01-15T12:00:00.000Z");
71
+ const colombo = formatParts(probe, "Asia/Colombo");
72
+ if (colombo.hour === 12 && colombo.minute === 0) {
73
+ throw new AnchorConfigError("This JavaScript runtime has no full ICU data: time zone conversion silently returns UTC. " +
74
+ "On React Native, ensure Hermes is built with Intl support, or install a polyfill.");
75
+ }
76
+ }
77
+ const formatterCache = new Map();
78
+ function getFormatter(tz) {
79
+ let f = formatterCache.get(tz);
80
+ if (!f) {
81
+ f = new Intl.DateTimeFormat("en-US", {
82
+ timeZone: tz,
83
+ hourCycle: "h23", // h23 rather than hour12:false — some ICU builds emit hour "24" otherwise
84
+ year: "numeric",
85
+ month: "2-digit",
86
+ day: "2-digit",
87
+ hour: "2-digit",
88
+ minute: "2-digit",
89
+ second: "2-digit",
90
+ });
91
+ formatterCache.set(tz, f);
92
+ }
93
+ return f;
94
+ }
95
+ function formatParts(instant, tz) {
96
+ const parts = getFormatter(tz).formatToParts(instant);
97
+ const out = {};
98
+ for (const p of parts) {
99
+ if (p.type !== "literal")
100
+ out[p.type] = Number(p.value);
101
+ }
102
+ return {
103
+ year: out.year ?? 0,
104
+ month: out.month ?? 1,
105
+ day: out.day ?? 1,
106
+ hour: out.hour ?? 0,
107
+ minute: out.minute ?? 0,
108
+ second: out.second ?? 0,
109
+ };
110
+ }
111
+ /**
112
+ * Offset of `tz` at a given instant, in milliseconds east of UTC.
113
+ * `Asia/Colombo` → +19800000 (5h30m). Handles DST because it asks about a specific instant.
114
+ */
115
+ export function getTimeZoneOffsetMs(instant, tz) {
116
+ const p = formatParts(instant, tz);
117
+ const asIfUtc = Date.UTC(p.year, p.month - 1, p.day, p.hour, p.minute, p.second, instant.getUTCMilliseconds());
118
+ return asIfUtc - instant.getTime();
119
+ }
120
+ /**
121
+ * Interpret a wall-clock reading *in a zone* and return the UTC instant.
122
+ *
123
+ * DST makes this genuinely ambiguous, so a naive "measure the offset then subtract it" pass is
124
+ * wrong — around a transition it can silently resolve to a different local time than the one asked
125
+ * for. We instead form the two candidate instants implied by the offsets on either side of any
126
+ * nearby transition and check which of them actually round-trips:
127
+ *
128
+ * both valid normal time, or a fall-back OVERLAP -> take the earlier instant
129
+ * one valid unambiguous
130
+ * neither a spring-forward GAP: the requested local time does not exist, so shift forward
131
+ * past the gap
132
+ *
133
+ * This matches Temporal's `disambiguation: "compatible"` and Luxon's default, which is the
134
+ * behaviour developers already expect. Both branches are covered by tests.
135
+ */
136
+ export function zonedTimeToUtc(wall, tz) {
137
+ const naive = Date.UTC(wall.year, wall.month - 1, wall.day, wall.hour ?? 0, wall.minute ?? 0, wall.second ?? 0, wall.ms ?? 0);
138
+ const DAY = 86_400_000;
139
+ const offsetBefore = getTimeZoneOffsetMs(new Date(naive - DAY), tz);
140
+ const offsetAfter = getTimeZoneOffsetMs(new Date(naive + DAY), tz);
141
+ const candidateA = naive - offsetBefore;
142
+ const candidateB = naive - offsetAfter;
143
+ const aValid = getTimeZoneOffsetMs(new Date(candidateA), tz) === offsetBefore;
144
+ const bValid = getTimeZoneOffsetMs(new Date(candidateB), tz) === offsetAfter;
145
+ if (aValid && bValid)
146
+ return new Date(Math.min(candidateA, candidateB)); // overlap -> earlier
147
+ if (aValid)
148
+ return new Date(candidateA);
149
+ if (bValid)
150
+ return new Date(candidateB);
151
+ return new Date(Math.max(candidateA, candidateB)); // gap -> forward past it
152
+ }
153
+ /** Parse "2026-08-31 10:29:00" / "2026-08-31T10:29" as a wall time in `tz`. */
154
+ export function parseZonedTimeToUtc(local, tz) {
155
+ const m = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.(\d{1,3}))?$/.exec(local.trim());
156
+ if (!m) {
157
+ throw new AnchorConfigError(`Expected a local date-time like "2026-08-31 10:29:00" but received "${local}".`);
158
+ }
159
+ return zonedTimeToUtc({
160
+ year: Number(m[1]),
161
+ month: Number(m[2]),
162
+ day: Number(m[3]),
163
+ hour: Number(m[4]),
164
+ minute: Number(m[5]),
165
+ second: m[6] ? Number(m[6]) : 0,
166
+ ms: m[7] ? Number(m[7].padEnd(3, "0")) : 0,
167
+ }, tz);
168
+ }
169
+ /** Canonical storage format: ISO-8601, UTC, millisecond precision, `Z` suffix. */
170
+ export function toUtcIso(value) {
171
+ const d = value instanceof Date ? value : new Date(value);
172
+ if (Number.isNaN(d.getTime())) {
173
+ throw new AnchorConfigError(`Cannot convert ${JSON.stringify(value)} to a UTC timestamp.`);
174
+ }
175
+ return d.toISOString();
176
+ }
177
+ /** Render a UTC instant as wall-clock text in `tz`. Display only — storage is untouched. */
178
+ export function formatInTimeZone(value, tz, opts = {}) {
179
+ assertValidTimeZone(tz, "timezone");
180
+ const d = value instanceof Date ? value : new Date(value);
181
+ const p = formatParts(d, tz);
182
+ const pad = (n, w = 2) => String(n).padStart(w, "0");
183
+ const sep = opts.separator ?? " ";
184
+ const base = `${p.year}-${pad(p.month)}-${pad(p.day)}${sep}${pad(p.hour)}:${pad(p.minute)}:${pad(p.second)}`;
185
+ if (!opts.withZone)
186
+ return base;
187
+ return `${base} ${formatOffset(getTimeZoneOffsetMs(d, tz))}`;
188
+ }
189
+ export function formatOffset(offsetMs) {
190
+ const sign = offsetMs < 0 ? "-" : "+";
191
+ const abs = Math.abs(offsetMs);
192
+ const h = Math.floor(abs / 3_600_000);
193
+ const m = Math.floor((abs % 3_600_000) / 60_000);
194
+ return `${sign}${String(h).padStart(2, "0")}:${String(m).padStart(2, "0")}`;
195
+ }
196
+ //# sourceMappingURL=timezone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone.js","sourceRoot":"","sources":["../../../src/timestamps/timezone.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,163 @@
1
+ {
2
+ "name": "anchordb",
3
+ "version": "0.2.0",
4
+ "description": "MongoDB + Mongoose for mobile apps. Offline-first local database with optional sync.",
5
+ "keywords": [
6
+ "mongodb",
7
+ "mongoose",
8
+ "offline-first",
9
+ "local-first",
10
+ "react-native",
11
+ "expo",
12
+ "ionic",
13
+ "capacitor",
14
+ "sqlite",
15
+ "sync",
16
+ "objectid",
17
+ "database"
18
+ ],
19
+ "license": "MIT",
20
+ "type": "module",
21
+ "sideEffects": false,
22
+ "engines": {
23
+ "node": ">=20"
24
+ },
25
+ "main": "./dist/cjs/index.js",
26
+ "types": "./dist/esm/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "import": {
30
+ "types": "./dist/esm/index.d.ts",
31
+ "default": "./dist/esm/index.js"
32
+ },
33
+ "require": {
34
+ "types": "./dist/cjs/index.d.ts",
35
+ "default": "./dist/cjs/index.js"
36
+ }
37
+ },
38
+ "./decorators": {
39
+ "import": {
40
+ "types": "./dist/esm/decorators/index.d.ts",
41
+ "default": "./dist/esm/decorators/index.js"
42
+ },
43
+ "require": {
44
+ "types": "./dist/cjs/decorators/index.d.ts",
45
+ "default": "./dist/cjs/decorators/index.js"
46
+ }
47
+ },
48
+ "./storage/node-sqlite": {
49
+ "import": {
50
+ "types": "./dist/esm/storage/adapters/node-sqlite.d.ts",
51
+ "default": "./dist/esm/storage/adapters/node-sqlite.js"
52
+ },
53
+ "require": {
54
+ "types": "./dist/cjs/storage/adapters/node-sqlite.d.ts",
55
+ "default": "./dist/cjs/storage/adapters/node-sqlite.js"
56
+ }
57
+ },
58
+ "./package.json": "./package.json",
59
+ "./sync": {
60
+ "import": {
61
+ "types": "./dist/esm/sync/attach.d.ts",
62
+ "default": "./dist/esm/sync/attach.js"
63
+ },
64
+ "require": {
65
+ "types": "./dist/cjs/sync/attach.d.ts",
66
+ "default": "./dist/cjs/sync/attach.js"
67
+ }
68
+ },
69
+ "./inspector": {
70
+ "import": {
71
+ "types": "./dist/esm/inspector/agent.d.ts",
72
+ "default": "./dist/esm/inspector/agent.js"
73
+ },
74
+ "require": {
75
+ "types": "./dist/cjs/inspector/agent.d.ts",
76
+ "default": "./dist/cjs/inspector/agent.js"
77
+ }
78
+ },
79
+ "./storage/expo-sqlite": {
80
+ "import": {
81
+ "types": "./dist/esm/storage/adapters/expo-sqlite.d.ts",
82
+ "default": "./dist/esm/storage/adapters/expo-sqlite.js"
83
+ },
84
+ "require": {
85
+ "types": "./dist/cjs/storage/adapters/expo-sqlite.d.ts",
86
+ "default": "./dist/cjs/storage/adapters/expo-sqlite.js"
87
+ }
88
+ },
89
+ "./storage/capacitor-sqlite": {
90
+ "import": {
91
+ "types": "./dist/esm/storage/adapters/capacitor-sqlite.d.ts",
92
+ "default": "./dist/esm/storage/adapters/capacitor-sqlite.js"
93
+ },
94
+ "require": {
95
+ "types": "./dist/cjs/storage/adapters/capacitor-sqlite.d.ts",
96
+ "default": "./dist/cjs/storage/adapters/capacitor-sqlite.js"
97
+ }
98
+ },
99
+ "./storage/indexeddb": {
100
+ "import": {
101
+ "types": "./dist/esm/storage/adapters/indexeddb.d.ts",
102
+ "default": "./dist/esm/storage/adapters/indexeddb.js"
103
+ },
104
+ "require": {
105
+ "types": "./dist/cjs/storage/adapters/indexeddb.d.ts",
106
+ "default": "./dist/cjs/storage/adapters/indexeddb.js"
107
+ }
108
+ },
109
+ "./storage/memory": {
110
+ "import": {
111
+ "types": "./dist/esm/storage/adapters/memory.d.ts",
112
+ "default": "./dist/esm/storage/adapters/memory.js"
113
+ },
114
+ "require": {
115
+ "types": "./dist/cjs/storage/adapters/memory.d.ts",
116
+ "default": "./dist/cjs/storage/adapters/memory.js"
117
+ }
118
+ }
119
+ },
120
+ "files": [
121
+ "dist",
122
+ "README.md",
123
+ "LICENSE",
124
+ "CHANGELOG.md"
125
+ ],
126
+ "scripts": {
127
+ "build": "rimraf dist && tsc -p tsconfig.build.json && tsc -p tsconfig.build.cjs.json && node scripts/finalize-dist.mjs",
128
+ "typecheck": "tsc --noEmit -p tsconfig.json",
129
+ "prepublishOnly": "npm run typecheck && npm run build",
130
+ "check:package": "publint && attw --pack . --profile node16"
131
+ },
132
+ "peerDependencies": {
133
+ "reflect-metadata": ">=0.1.13"
134
+ },
135
+ "peerDependenciesMeta": {
136
+ "reflect-metadata": {
137
+ "optional": true
138
+ }
139
+ },
140
+ "devDependencies": {
141
+ "rimraf": "^6.0.1"
142
+ },
143
+ "publishConfig": {
144
+ "access": "public"
145
+ },
146
+ "module": "./dist/esm/index.js",
147
+ "repository": {
148
+ "type": "git",
149
+ "url": "git+https://github.com/knnadeera/anchordb.git",
150
+ "directory": "packages/core"
151
+ },
152
+ "homepage": "https://github.com/knnadeera/anchordb#readme",
153
+ "bugs": {
154
+ "url": "https://github.com/knnadeera/anchordb/issues"
155
+ },
156
+ "attw": {
157
+ "ignoreRules": [
158
+ "cjs-resolves-to-esm"
159
+ ],
160
+ "profile": "node16"
161
+ },
162
+ "author": "Nisala Nadeera <knnadeera@gmail.com>"
163
+ }