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,482 @@
1
+ import { MongoServerError, ValidationError } from "../core/errors.js";
2
+ import { exportCollection, importCollection } from "../interop/export-import.js";
3
+ import { QUEUE_COLLECTION } from "../sync/queue.js";
4
+ import { SHADOW_COLLECTION } from "../sync/engine.js";
5
+ import { flattenPaths } from "../query/path.js";
6
+ import { InspectorAuth } from "./auth.js";
7
+ import { INSPECTOR_PROTOCOL_VERSION, isRequest, makeError, makeEvent, makeResponse, } from "./protocol.js";
8
+ /**
9
+ * The inspector agent — the AnchorDB side of the protocol.
10
+ *
11
+ * ## The rule that makes Lens trustworthy
12
+ *
13
+ * Every mutating method goes through the **public Model API**, never the storage adapter. A Lens
14
+ * edit therefore runs the same validation, stamps the same timestamps, fires the same change
15
+ * events, and enqueues the same mutation as an edit made by the app. A second, hidden write path
16
+ * would mean Lens shows you a database that behaves differently from the one your app uses — which
17
+ * would make it worse than useless for debugging.
18
+ *
19
+ * Reads are paged. `getDocuments` has a hard cap regardless of what the client asks for, because an
20
+ * inspector that can be made to materialise a 100k-document collection is a way to crash the app
21
+ * you are debugging.
22
+ */
23
+ const MAX_PAGE_SIZE = 200;
24
+ /** Collections that are AnchorDB's own bookkeeping, surfaced through dedicated methods instead. */
25
+ const INTERNAL_COLLECTIONS = new Set([QUEUE_COLLECTION, SHADOW_COLLECTION]);
26
+ export class InspectorAgent {
27
+ constructor(db, options = {}) {
28
+ this.transports = new Set();
29
+ this.authenticated = new WeakMap();
30
+ this.subscribed = new Set();
31
+ this.conflicts = [];
32
+ this.detach = [];
33
+ this.db = db;
34
+ this.opts = options;
35
+ this.auth = new InspectorAuth(options.auth ?? {});
36
+ this.wireEvents();
37
+ }
38
+ /** Begin a pairing window; the result is what a QR code encodes. */
39
+ startPairing() {
40
+ return this.auth.startPairing();
41
+ }
42
+ capabilities() {
43
+ const base = [
44
+ "documents:read",
45
+ "indexes:read",
46
+ "aggregate",
47
+ "export",
48
+ "subscribe",
49
+ ];
50
+ if (!this.opts.readOnly)
51
+ base.push("documents:write", "documents:bulk", "indexes:write", "import");
52
+ if (this.db.syncEnabled) {
53
+ base.push("sync:read", "conflicts:read");
54
+ if (!this.opts.readOnly)
55
+ base.push("sync:write", "conflicts:write");
56
+ }
57
+ return base;
58
+ }
59
+ /** Attach a transport. Multiple may be attached at once (§45). */
60
+ attach(transport) {
61
+ this.transports.add(transport);
62
+ const off = transport.onMessage((message) => {
63
+ void this.handle(transport, message);
64
+ });
65
+ return () => {
66
+ off();
67
+ this.transports.delete(transport);
68
+ this.subscribed.delete(transport);
69
+ };
70
+ }
71
+ async close() {
72
+ for (const detach of this.detach)
73
+ detach();
74
+ this.detach = [];
75
+ for (const transport of this.transports)
76
+ await transport.close();
77
+ this.transports.clear();
78
+ this.subscribed.clear();
79
+ }
80
+ // ---- dispatch ------------------------------------------------------------
81
+ async handle(transport, message) {
82
+ if (!isRequest(message))
83
+ return;
84
+ if (message.v !== INSPECTOR_PROTOCOL_VERSION) {
85
+ await transport.send(makeError(message.id, "protocol_version", `This agent speaks Anchor Inspector Protocol v${INSPECTOR_PROTOCOL_VERSION}, ` +
86
+ `the client sent v${String(message.v)}.`));
87
+ return;
88
+ }
89
+ try {
90
+ const result = await this.dispatch(transport, message);
91
+ await transport.send(makeResponse(message.id, result));
92
+ }
93
+ catch (err) {
94
+ await transport.send(this.toErrorResponse(message.id, err));
95
+ }
96
+ }
97
+ toErrorResponse(id, err) {
98
+ if (err instanceof ValidationError) {
99
+ return makeError(id, "validation_failed", err.message, {
100
+ errors: Object.fromEntries(Object.entries(err.errors).map(([path, e]) => [path, { message: e.message, kind: e.kind }])),
101
+ });
102
+ }
103
+ if (err instanceof MongoServerError && err.code === 11000) {
104
+ return makeError(id, "duplicate_key", err.message, { keyValue: err.keyValue ?? {} });
105
+ }
106
+ if (err instanceof InspectorRequestError)
107
+ return makeError(id, err.code, err.message);
108
+ return makeError(id, "internal", err.message);
109
+ }
110
+ async dispatch(transport, request) {
111
+ const { method, params = {} } = request;
112
+ if (method === "connect")
113
+ return this.connect();
114
+ if (method === "authenticate")
115
+ return this.authenticate(transport, params);
116
+ // Everything else requires a session.
117
+ const token = this.authenticated.get(transport) ?? params.sessionToken;
118
+ if (!this.auth.verify(token)) {
119
+ throw new InspectorRequestError("unauthenticated", "Authenticate before calling this method.");
120
+ }
121
+ if (this.opts.readOnly && MUTATING.has(method)) {
122
+ throw new InspectorRequestError("unauthorized", `This inspector session is read-only (${method} refused).`);
123
+ }
124
+ switch (method) {
125
+ case "getDatabases":
126
+ return [{ name: this.db.name, syncEnabled: this.db.syncEnabled }];
127
+ case "getCollections":
128
+ return this.getCollections();
129
+ case "getStats":
130
+ return this.getStats();
131
+ case "getIndexes":
132
+ return this.getIndexes(String(params.collection));
133
+ case "getDocuments":
134
+ return this.getDocuments(params);
135
+ case "getDocument":
136
+ return this.getDocument(String(params.collection), String(params.documentId));
137
+ case "countDocuments":
138
+ return this.model(String(params.collection)).countDocuments(params.filter ?? {});
139
+ case "insertDocument":
140
+ return this.insertDocument(String(params.collection), params.document);
141
+ case "updateDocument":
142
+ return this.updateDocument(String(params.collection), String(params.documentId), params.update);
143
+ case "updateMany":
144
+ return this.updateMany(String(params.collection), params.filter ?? {}, params.update ?? {}, params.all === true);
145
+ case "deleteMany":
146
+ return this.deleteMany(String(params.collection), params.filter ?? {}, params.all === true);
147
+ case "deleteDocument":
148
+ return this.deleteDocument(String(params.collection), String(params.documentId));
149
+ case "aggregate":
150
+ return this.model(String(params.collection)).aggregate(params.pipeline ?? []);
151
+ case "explain":
152
+ return this.model(String(params.collection)).explainAggregate(params.pipeline ?? []);
153
+ case "getSyncStatus":
154
+ return this.getSyncStatus();
155
+ case "getMutations":
156
+ return this.getMutations();
157
+ case "retryMutation":
158
+ return this.retryMutation(String(params.mutationId));
159
+ case "triggerSync":
160
+ return this.db.sync.now();
161
+ case "getConflicts":
162
+ return this.conflicts;
163
+ case "resolveConflict":
164
+ return this.resolveConflict(String(params.conflictId), params.document);
165
+ case "exportCollection":
166
+ return exportCollection(this.db, String(params.collection), params.options ?? {});
167
+ case "importCollection":
168
+ return importCollection(this.db, String(params.collection), params.data, params.options ?? {});
169
+ case "subscribeToChanges":
170
+ this.subscribed.add(transport);
171
+ return { subscribed: true };
172
+ case "unsubscribeFromChanges":
173
+ this.subscribed.delete(transport);
174
+ return { subscribed: false };
175
+ default:
176
+ throw new InspectorRequestError("unsupported_method", `Unknown method "${String(method)}"`);
177
+ }
178
+ }
179
+ // ---- handshake -----------------------------------------------------------
180
+ connect() {
181
+ const env = globalThis.process?.env;
182
+ return {
183
+ protocolVersion: INSPECTOR_PROTOCOL_VERSION,
184
+ capabilities: this.capabilities(),
185
+ environment: {
186
+ databaseName: this.db.name,
187
+ platform: this.opts.platform ?? detectPlatform(),
188
+ anchorVersion: this.opts.anchorVersion ?? "0.1.0",
189
+ nodeEnv: env?.NODE_ENV ?? "development",
190
+ syncEnabled: this.db.syncEnabled,
191
+ readOnly: this.opts.readOnly ?? false,
192
+ },
193
+ requiresAuth: !this.auth.isDisabled,
194
+ };
195
+ }
196
+ authenticate(transport, params) {
197
+ const session = this.auth.authenticate(String(params.proof ?? ""), String(params.clientName ?? "Anchor Lens"));
198
+ if (!session) {
199
+ throw new InspectorRequestError("unauthenticated", "Pairing failed. The code may have expired or already been used — generate a new one.");
200
+ }
201
+ this.authenticated.set(transport, session.token);
202
+ return {
203
+ sessionToken: session.token,
204
+ expiresAt: session.expiresAt,
205
+ capabilities: this.capabilities(),
206
+ };
207
+ }
208
+ /** The challenge a client signs. Exposed so a transport can hand it over during pairing. */
209
+ challenge() {
210
+ return this.auth.currentChallenge();
211
+ }
212
+ // ---- data ----------------------------------------------------------------
213
+ model(collection) {
214
+ if (INTERNAL_COLLECTIONS.has(collection)) {
215
+ throw new InspectorRequestError("unauthorized", `"${collection}" is AnchorDB's internal bookkeeping. Use getMutations/getConflicts instead.`);
216
+ }
217
+ // Always through the public API: a registered model when one exists (so schema validation and
218
+ // typing apply), otherwise the schemaless accessor.
219
+ return this.db.modelForCollection(collection) ?? this.db.collection(collection);
220
+ }
221
+ async getCollections() {
222
+ const names = (await this.db.listCollections()).filter((n) => !n.startsWith("__anchor"));
223
+ const out = [];
224
+ for (const name of names) {
225
+ const model = this.db.modelForCollection(name) ?? this.db.collection(name);
226
+ out.push({
227
+ name,
228
+ ...(this.db.modelForCollection(name) ? { modelName: this.db.modelForCollection(name).modelName } : {}),
229
+ count: await model.countDocuments({}),
230
+ indexes: (await model.listIndexes()).length,
231
+ hasSchema: this.db.modelForCollection(name) !== undefined,
232
+ });
233
+ }
234
+ return out;
235
+ }
236
+ async getStats() {
237
+ const stats = await this.db.stats();
238
+ const pending = this.db.syncEnabled ? await this.db.sync.pending() : 0;
239
+ const mutations = this.db.syncEnabled ? await this.readQueue() : [];
240
+ return {
241
+ database: this.db.name,
242
+ collections: stats.collections,
243
+ documents: stats.documents,
244
+ indexes: stats.indexes,
245
+ tombstones: stats.tombstones,
246
+ ...(stats.sizeBytes !== undefined ? { sizeBytes: stats.sizeBytes } : {}),
247
+ pendingMutations: pending,
248
+ failedMutations: mutations.filter((m) => m.status === "failed").length,
249
+ syncEnabled: this.db.syncEnabled,
250
+ ...(this.lastSyncAt ? { lastSyncAt: this.lastSyncAt } : {}),
251
+ };
252
+ }
253
+ async getIndexes(collection) {
254
+ return this.model(collection).listIndexes();
255
+ }
256
+ /** Paged, always. The cap is enforced here, not trusted from the client (§34). */
257
+ async getDocuments(params) {
258
+ const collection = String(params.collection);
259
+ const model = this.model(collection);
260
+ const filter = params.filter ?? {};
261
+ const skip = Math.max(0, Number(params.skip ?? 0));
262
+ const limit = Math.min(Math.max(1, Number(params.limit ?? 50)), MAX_PAGE_SIZE);
263
+ const query = model.find(filter).skip(skip).limit(limit).lean();
264
+ if (params.sort)
265
+ query.sort(params.sort);
266
+ const documents = (await query.exec());
267
+ const total = await model.countDocuments(filter);
268
+ return { collection, documents, total, skip, limit, hasMore: skip + documents.length < total };
269
+ }
270
+ async getDocument(collection, documentId) {
271
+ const doc = await this.model(collection).findById(documentId).lean().exec();
272
+ if (!doc)
273
+ throw new InspectorRequestError("not_found", `${collection}/${documentId} does not exist`);
274
+ return doc;
275
+ }
276
+ async insertDocument(collection, document) {
277
+ // Through the model: validation, timestamps, events and the sync queue all apply.
278
+ return this.model(collection).insertOne(document);
279
+ }
280
+ async updateDocument(collection, documentId, update) {
281
+ const hasOperators = Object.keys(update).some((k) => k.startsWith("$"));
282
+ const model = this.model(collection);
283
+ if (hasOperators)
284
+ await model.updateOne({ _id: documentId }, update);
285
+ else
286
+ await model.replaceOne({ _id: documentId }, update);
287
+ return this.getDocument(collection, documentId);
288
+ }
289
+ async deleteDocument(collection, documentId) {
290
+ return this.model(collection).deleteOne({ _id: documentId });
291
+ }
292
+ /**
293
+ * Bulk update (Compass's "Update" on the collection toolbar).
294
+ *
295
+ * Routed through `Model.updateMany`, so every matching document gets the same validation,
296
+ * timestamps, change events and queued mutations as an app write — and the whole thing is one
297
+ * pass over an index rather than N round trips from the inspector.
298
+ */
299
+ async updateMany(collection, filter, update, all) {
300
+ assertBulkFilter(filter, all, "update");
301
+ // A document with no operators would replace every match with the *same* content, silently
302
+ // collapsing the collection into N copies of one document. Mongo refuses this too.
303
+ if (!Object.keys(update).some((key) => key.startsWith("$"))) {
304
+ throw new InspectorRequestError("bad_request", "A bulk update needs update operators, for example { \"$set\": { \"status\": \"active\" } }. " +
305
+ "A plain document would overwrite every matching document with identical content.");
306
+ }
307
+ const result = await this.model(collection).updateMany(filter, update);
308
+ return {
309
+ collection,
310
+ matchedCount: result.matchedCount,
311
+ modifiedCount: result.modifiedCount,
312
+ deletedCount: 0,
313
+ };
314
+ }
315
+ /** Bulk delete (Compass's "Delete"). Same reasoning as {@link updateMany}. */
316
+ async deleteMany(collection, filter, all) {
317
+ assertBulkFilter(filter, all, "delete");
318
+ const result = await this.model(collection).deleteMany(filter);
319
+ return { collection, matchedCount: result.deletedCount, modifiedCount: 0, deletedCount: result.deletedCount };
320
+ }
321
+ // ---- sync ----------------------------------------------------------------
322
+ async getSyncStatus() {
323
+ if (!this.db.syncEnabled) {
324
+ // Lens renders an explicit "local-only" state rather than an empty dashboard.
325
+ return { enabled: false, status: "disabled", pending: 0, failed: 0, conflicts: 0 };
326
+ }
327
+ const mutations = await this.readQueue();
328
+ return {
329
+ enabled: true,
330
+ status: this.db.sync.status(),
331
+ pending: mutations.filter((m) => m.status === "pending").length,
332
+ failed: mutations.filter((m) => m.status === "failed").length,
333
+ conflicts: this.conflicts.length,
334
+ ...(this.lastSyncAt ? { lastSyncAt: this.lastSyncAt } : {}),
335
+ };
336
+ }
337
+ async readQueue() {
338
+ const rows = [];
339
+ for await (const row of this.db.adapter.scan(QUEUE_COLLECTION))
340
+ rows.push(row.doc);
341
+ return rows;
342
+ }
343
+ async getMutations() {
344
+ if (!this.db.syncEnabled)
345
+ return [];
346
+ const rows = (await this.readQueue());
347
+ return rows.sort((a, b) => Number(a.seq ?? 0) - Number(b.seq ?? 0));
348
+ }
349
+ async retryMutation(mutationId) {
350
+ if (!this.db.syncEnabled) {
351
+ throw new InspectorRequestError("bad_request", "Sync is not enabled on this database.");
352
+ }
353
+ const { MutationQueue } = await import("../sync/queue.js");
354
+ const queue = new MutationQueue(this.db.adapter, this.db.clientId);
355
+ const ok = await queue.retry(mutationId);
356
+ if (!ok)
357
+ throw new InspectorRequestError("not_found", `No mutation ${mutationId}`);
358
+ return { retried: true };
359
+ }
360
+ /**
361
+ * Manual conflict resolution from Lens.
362
+ *
363
+ * Deliberately routed through `updateDocument` rather than written straight to storage: the
364
+ * developer's decision becomes an ordinary mutation that syncs like any other (§41). Bypassing
365
+ * the queue would let Lens create state the server never learns about.
366
+ */
367
+ async resolveConflict(conflictId, document) {
368
+ const conflict = this.conflicts.find((c) => c.id === conflictId);
369
+ if (!conflict)
370
+ throw new InspectorRequestError("not_found", `No conflict ${conflictId}`);
371
+ const result = await this.updateDocument(conflict.collection, conflict.documentId, document);
372
+ this.conflicts.splice(this.conflicts.indexOf(conflict), 1);
373
+ return result;
374
+ }
375
+ // ---- events --------------------------------------------------------------
376
+ wireEvents() {
377
+ const push = (event, payload) => {
378
+ const message = makeEvent(event, payload);
379
+ for (const transport of this.subscribed) {
380
+ if (transport.isOpen)
381
+ void transport.send(message);
382
+ }
383
+ };
384
+ this.detach.push(this.db.on("change", (e) => {
385
+ const name = e.operation === "insert"
386
+ ? "documentInserted"
387
+ : e.operation === "delete"
388
+ ? "documentDeleted"
389
+ : "documentUpdated";
390
+ push(name, e);
391
+ push("collectionChanged", { collection: e.collection });
392
+ }), this.db.on("sync:start", (e) => push("syncStarted", e)), this.db.on("sync:complete", (e) => {
393
+ this.lastSyncAt = new Date().toISOString();
394
+ push("syncCompleted", e);
395
+ }), this.db.on("sync:error", (e) => push("syncError", { message: e.error.message, phase: e.phase })), this.db.on("queue:changed", (e) => push("queueChanged", e)), this.db.on("conflict", (e) => {
396
+ const record = toConflictRecord(e);
397
+ this.conflicts.unshift(record);
398
+ const max = this.opts.conflictHistory ?? 50;
399
+ if (this.conflicts.length > max)
400
+ this.conflicts.length = max;
401
+ push("conflictDetected", record);
402
+ }));
403
+ }
404
+ }
405
+ const MUTATING = new Set([
406
+ "insertDocument",
407
+ "updateDocument",
408
+ "deleteDocument",
409
+ "updateMany",
410
+ "deleteMany",
411
+ "importCollection",
412
+ "resolveConflict",
413
+ "retryMutation",
414
+ "triggerSync",
415
+ ]);
416
+ /**
417
+ * An empty filter means "every document in the collection".
418
+ *
419
+ * That is a legitimate thing to want and Compass allows it, but it is never something to do by
420
+ * accident from a phone — one mis-tap would empty a collection with no undo. So it has to be asked
421
+ * for twice: the client sets `all` only after the user has typed the collection name to confirm.
422
+ */
423
+ function assertBulkFilter(filter, all, verb) {
424
+ if (Object.keys(filter).length === 0 && !all) {
425
+ throw new InspectorRequestError("bad_request", `A bulk ${verb} with an empty filter affects every document in the collection. ` +
426
+ `Send { all: true } to confirm that is intended.`);
427
+ }
428
+ }
429
+ export class InspectorRequestError extends Error {
430
+ constructor(code, message) {
431
+ super(message);
432
+ this.code = code;
433
+ this.name = "InspectorRequestError";
434
+ }
435
+ }
436
+ /** Build the per-field breakdown the Lens conflict table renders (§40). */
437
+ function toConflictRecord(e) {
438
+ const local = flattenPaths(e.local);
439
+ const remote = flattenPaths(e.remote);
440
+ const resolved = flattenPaths(e.resolved);
441
+ const paths = new Set([...local.keys(), ...remote.keys(), ...resolved.keys()]);
442
+ const fields = [];
443
+ for (const path of paths) {
444
+ if (path === "_id" || path === "updatedAt" || path === "__v")
445
+ continue;
446
+ const l = local.get(path);
447
+ const r = remote.get(path);
448
+ const res = resolved.get(path);
449
+ const source = JSON.stringify(res) === JSON.stringify(l) && JSON.stringify(l) !== JSON.stringify(r)
450
+ ? "local"
451
+ : JSON.stringify(res) === JSON.stringify(r) && JSON.stringify(l) !== JSON.stringify(r)
452
+ ? "server"
453
+ : JSON.stringify(l) === JSON.stringify(r)
454
+ ? "same"
455
+ : "merged";
456
+ fields.push({ path, local: l, remote: r, result: res, source });
457
+ }
458
+ return {
459
+ id: `${e.collection}:${e.documentId}:${Date.now()}`,
460
+ collection: e.collection,
461
+ documentId: e.documentId,
462
+ strategy: e.strategy,
463
+ winner: e.winner,
464
+ ...(e.base ? { base: e.base } : {}),
465
+ local: e.local,
466
+ remote: e.remote,
467
+ resolved: e.resolved,
468
+ fields,
469
+ at: new Date().toISOString(),
470
+ };
471
+ }
472
+ function detectPlatform() {
473
+ const g = globalThis;
474
+ if (g.navigator?.product === "ReactNative")
475
+ return "react-native";
476
+ if (g.process?.platform)
477
+ return `node/${g.process.platform}`;
478
+ if (typeof globalThis.document !== "undefined")
479
+ return "browser";
480
+ return "unknown";
481
+ }
482
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/inspector/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ export declare function hmacSha256(key: string, message: string): string;
2
+ /** Constant-time comparison — a length-independent early return would leak the proof by timing. */
3
+ export declare function timingSafeEqual(a: string, b: string): boolean;
4
+ export interface PairingInfo {
5
+ /** Short, human-transcribable. Never sent over the wire — only proved. */
6
+ code: string;
7
+ challenge: string;
8
+ expiresAt: string;
9
+ }
10
+ export interface Session {
11
+ token: string;
12
+ clientName: string;
13
+ createdAt: string;
14
+ expiresAt: string;
15
+ }
16
+ export interface InspectorAuthOptions {
17
+ /** How long a pairing code stays valid. Short by design. */
18
+ pairingTtlMs?: number;
19
+ /** How long an authenticated session lasts before re-pairing is required. */
20
+ sessionTtlMs?: number;
21
+ /** Disable authentication entirely. Only sane for the in-process transport. */
22
+ disabled?: boolean;
23
+ now?: () => number;
24
+ }
25
+ export declare class InspectorAuth {
26
+ private pairing;
27
+ private readonly sessions;
28
+ private readonly opts;
29
+ constructor(options?: InspectorAuthOptions);
30
+ get isDisabled(): boolean;
31
+ /** Begin a pairing window. Any previous unused code is invalidated. */
32
+ startPairing(): PairingInfo;
33
+ /** The challenge a client must sign. Null when no pairing window is open. */
34
+ currentChallenge(): string | null;
35
+ /** What a client computes from the code it scanned. */
36
+ static proofFor(pairingCode: string, challenge: string): string;
37
+ /**
38
+ * Verify a proof and issue a session.
39
+ *
40
+ * The pairing code is consumed whether or not the proof was correct, so a captured challenge
41
+ * cannot be brute-forced by replaying against the same window.
42
+ */
43
+ authenticate(proof: string, clientName?: string): Session | null;
44
+ private issueSession;
45
+ verify(token: string | undefined): Session | null;
46
+ revoke(token: string): void;
47
+ activeSessions(): Session[];
48
+ }
49
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/inspector/auth.ts"],"names":[],"mappings":"AAyGA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyB/D;AAED,mGAAmG;AACnG,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED,MAAM,WAAW,WAAW;IAC1B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsE;gBAE/E,OAAO,GAAE,oBAAyB;IAS9C,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,uEAAuE;IACvE,YAAY,IAAI,WAAW;IAW3B,6EAA6E;IAC7E,gBAAgB,IAAI,MAAM,GAAG,IAAI;IASjC,uDAAuD;IACvD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI/D;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAgB,GAAG,OAAO,GAAG,IAAI;IAiBvE,OAAO,CAAC,YAAY;IAWpB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI;IAYjD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B,cAAc,IAAI,OAAO,EAAE;CAO5B"}