@farukada/aws-langgraph-dynamodb-ts 1.0.0-rc.1 → 1.0.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 (608) hide show
  1. package/README.md +1820 -290
  2. package/dist/cjs/backfill/backfill.d.ts +171 -0
  3. package/dist/cjs/backfill/backfill.js +177 -0
  4. package/dist/cjs/checkpointer/actions/delete-thread.d.ts +50 -0
  5. package/dist/cjs/checkpointer/actions/delete-thread.js +26 -0
  6. package/dist/cjs/checkpointer/actions/get-tuple.d.ts +36 -0
  7. package/dist/cjs/checkpointer/actions/get-tuple.js +22 -0
  8. package/dist/cjs/checkpointer/actions/list.d.ts +55 -0
  9. package/dist/cjs/checkpointer/actions/list.js +70 -0
  10. package/dist/cjs/checkpointer/actions/put-writes.d.ts +49 -0
  11. package/dist/cjs/checkpointer/actions/put-writes.js +21 -0
  12. package/dist/cjs/checkpointer/actions/put.d.ts +95 -0
  13. package/dist/cjs/checkpointer/actions/put.js +79 -0
  14. package/dist/cjs/checkpointer/internal/delta-history.d.ts +124 -0
  15. package/dist/cjs/checkpointer/internal/delta-history.js +131 -0
  16. package/dist/cjs/checkpointer/internal/listing.d.ts +149 -0
  17. package/dist/cjs/checkpointer/internal/listing.js +104 -0
  18. package/dist/cjs/checkpointer/internal/parse.d.ts +298 -0
  19. package/dist/cjs/checkpointer/internal/parse.js +184 -0
  20. package/dist/cjs/checkpointer/internal/pending-writes.d.ts +314 -0
  21. package/dist/cjs/checkpointer/internal/pending-writes.js +241 -0
  22. package/dist/cjs/checkpointer/internal/read.d.ts +135 -0
  23. package/dist/cjs/checkpointer/internal/read.js +132 -0
  24. package/dist/cjs/checkpointer/internal/rows.d.ts +644 -0
  25. package/dist/cjs/checkpointer/internal/rows.js +356 -0
  26. package/dist/cjs/checkpointer/internal/setup.d.ts +47 -0
  27. package/dist/cjs/checkpointer/internal/setup.js +25 -0
  28. package/dist/cjs/checkpointer/saver.d.ts +306 -0
  29. package/dist/cjs/checkpointer/saver.js +56 -0
  30. package/dist/cjs/checkpointer/types.d.ts +51 -0
  31. package/dist/cjs/factory/factory.d.ts +154 -0
  32. package/dist/cjs/factory/factory.js +137 -0
  33. package/dist/{factory → cjs/factory}/types.d.ts +33 -14
  34. package/dist/cjs/history/actions/add-messages.d.ts +51 -0
  35. package/dist/cjs/history/actions/add-messages.js +17 -0
  36. package/dist/cjs/history/actions/clear.d.ts +52 -0
  37. package/dist/cjs/history/actions/clear.js +29 -0
  38. package/dist/cjs/history/actions/get-messages.d.ts +60 -0
  39. package/dist/cjs/history/actions/get-messages.js +58 -0
  40. package/dist/cjs/history/actions/list-sessions.d.ts +55 -0
  41. package/dist/cjs/history/actions/list-sessions.js +67 -0
  42. package/dist/cjs/history/actions/reconcile-count.d.ts +49 -0
  43. package/dist/cjs/history/actions/reconcile-count.js +8 -0
  44. package/dist/cjs/history/chat-message-history.d.ts +267 -0
  45. package/dist/cjs/history/chat-message-history.js +61 -0
  46. package/dist/cjs/history/internal/append.d.ts +244 -0
  47. package/dist/cjs/history/internal/append.js +267 -0
  48. package/dist/cjs/history/internal/message-read.d.ts +84 -0
  49. package/dist/cjs/history/internal/message-read.js +93 -0
  50. package/dist/cjs/history/internal/parse.d.ts +153 -0
  51. package/dist/cjs/history/internal/parse.js +113 -0
  52. package/dist/cjs/history/internal/rows.d.ts +196 -0
  53. package/dist/cjs/history/internal/rows.js +96 -0
  54. package/dist/cjs/history/internal/session.d.ts +350 -0
  55. package/dist/cjs/history/internal/session.js +296 -0
  56. package/dist/cjs/history/internal/setup.d.ts +64 -0
  57. package/dist/cjs/history/internal/setup.js +60 -0
  58. package/dist/cjs/history/session-adapter.d.ts +112 -0
  59. package/dist/cjs/history/session-adapter.js +38 -0
  60. package/dist/cjs/history/types.d.ts +102 -0
  61. package/dist/cjs/index.d.ts +53 -0
  62. package/dist/cjs/index.js +25 -0
  63. package/dist/cjs/package.json +1 -0
  64. package/dist/cjs/shared/adapter.d.ts +146 -0
  65. package/dist/cjs/shared/adapter.js +70 -0
  66. package/dist/cjs/shared/clock.d.ts +52 -0
  67. package/dist/cjs/shared/clock.js +14 -0
  68. package/dist/cjs/shared/codec/codec.d.ts +336 -0
  69. package/dist/cjs/shared/codec/codec.js +162 -0
  70. package/dist/cjs/shared/codec/compression.d.ts +66 -0
  71. package/dist/cjs/shared/codec/compression.js +45 -0
  72. package/dist/cjs/shared/codec/json-serde.d.ts +80 -0
  73. package/dist/cjs/shared/codec/json-serde.js +58 -0
  74. package/dist/{shared → cjs/shared}/codec/s3/client-types.d.ts +22 -2
  75. package/dist/{shared → cjs/shared}/codec/s3/client-types.js +0 -1
  76. package/dist/cjs/shared/codec/s3/client.d.ts +63 -0
  77. package/dist/cjs/shared/codec/s3/client.js +78 -0
  78. package/dist/cjs/shared/codec/s3/config.d.ts +260 -0
  79. package/dist/cjs/shared/codec/s3/config.js +92 -0
  80. package/dist/cjs/shared/codec/s3/lifecycle.d.ts +220 -0
  81. package/dist/cjs/shared/codec/s3/lifecycle.js +223 -0
  82. package/dist/cjs/shared/codec/s3/offloader.d.ts +428 -0
  83. package/dist/cjs/shared/codec/s3/offloader.js +289 -0
  84. package/dist/cjs/shared/concurrency.d.ts +43 -0
  85. package/dist/{shared → cjs/shared}/concurrency.js +10 -9
  86. package/dist/cjs/shared/dynamodb/abort.d.ts +47 -0
  87. package/dist/cjs/shared/dynamodb/abort.js +16 -0
  88. package/dist/cjs/shared/dynamodb/batch-write.d.ts +86 -0
  89. package/dist/cjs/shared/dynamodb/batch-write.js +79 -0
  90. package/dist/cjs/shared/dynamodb/cancellation.d.ts +124 -0
  91. package/dist/cjs/shared/dynamodb/cancellation.js +37 -0
  92. package/dist/cjs/shared/dynamodb/client.d.ts +177 -0
  93. package/dist/{shared → cjs/shared}/dynamodb/client.js +12 -14
  94. package/dist/cjs/shared/dynamodb/idempotent-write.d.ts +596 -0
  95. package/dist/cjs/shared/dynamodb/idempotent-write.js +173 -0
  96. package/dist/cjs/shared/dynamodb/paginate.d.ts +111 -0
  97. package/dist/cjs/shared/dynamodb/paginate.js +90 -0
  98. package/dist/cjs/shared/dynamodb/partition-delete.d.ts +204 -0
  99. package/dist/cjs/shared/dynamodb/partition-delete.js +177 -0
  100. package/dist/cjs/shared/dynamodb/recency-index.d.ts +243 -0
  101. package/dist/cjs/shared/dynamodb/recency-index.js +146 -0
  102. package/dist/cjs/shared/dynamodb/retry.d.ts +317 -0
  103. package/dist/cjs/shared/dynamodb/retry.js +193 -0
  104. package/dist/cjs/shared/dynamodb/row-size.d.ts +33 -0
  105. package/dist/cjs/shared/dynamodb/row-size.js +30 -0
  106. package/dist/cjs/shared/dynamodb/table-schema.d.ts +199 -0
  107. package/dist/cjs/shared/dynamodb/table-schema.js +52 -0
  108. package/dist/cjs/shared/errors/base-error.d.ts +231 -0
  109. package/dist/cjs/shared/errors/base-error.js +73 -0
  110. package/dist/cjs/shared/errors/boundary.d.ts +86 -0
  111. package/dist/cjs/shared/errors/boundary.js +61 -0
  112. package/dist/cjs/shared/errors/classify.d.ts +206 -0
  113. package/dist/cjs/shared/errors/classify.js +232 -0
  114. package/dist/cjs/shared/errors/error-code.d.ts +95 -0
  115. package/dist/{shared → cjs/shared}/errors/error-code.js +12 -2
  116. package/dist/cjs/shared/errors/errors.d.ts +233 -0
  117. package/dist/cjs/shared/errors/errors.js +123 -0
  118. package/dist/cjs/shared/logging/logger.d.ts +80 -0
  119. package/dist/cjs/shared/logging/logger.js +30 -0
  120. package/dist/cjs/shared/logging/redaction.d.ts +123 -0
  121. package/dist/cjs/shared/logging/redaction.js +145 -0
  122. package/dist/cjs/shared/logging/secret-patterns.d.ts +227 -0
  123. package/dist/cjs/shared/logging/secret-patterns.js +93 -0
  124. package/dist/cjs/shared/logging/truncate.d.ts +197 -0
  125. package/dist/cjs/shared/logging/truncate.js +31 -0
  126. package/dist/cjs/shared/options.d.ts +100 -0
  127. package/dist/cjs/shared/ulid.d.ts +80 -0
  128. package/dist/{shared → cjs/shared}/ulid.js +7 -21
  129. package/dist/cjs/shared/validation/collaborators.d.ts +160 -0
  130. package/dist/cjs/shared/validation/collaborators.js +79 -0
  131. package/dist/cjs/shared/validation/option-shape.d.ts +91 -0
  132. package/dist/cjs/shared/validation/option-shape.js +31 -0
  133. package/dist/cjs/shared/validation/options.d.ts +145 -0
  134. package/dist/cjs/shared/validation/options.js +166 -0
  135. package/dist/cjs/shared/validation/primitives.d.ts +292 -0
  136. package/dist/cjs/shared/validation/primitives.js +114 -0
  137. package/dist/cjs/shared/validation/ttl.d.ts +94 -0
  138. package/dist/cjs/shared/validation/ttl.js +52 -0
  139. package/dist/cjs/store/actions/list-namespaces.d.ts +79 -0
  140. package/dist/cjs/store/actions/list-namespaces.js +92 -0
  141. package/dist/cjs/store/actions/put.d.ts +43 -0
  142. package/dist/cjs/store/actions/put.js +49 -0
  143. package/dist/cjs/store/actions/reconcile-vector-index.d.ts +38 -0
  144. package/dist/cjs/store/actions/reconcile-vector-index.js +13 -0
  145. package/dist/cjs/store/actions/search.d.ts +38 -0
  146. package/dist/cjs/store/actions/search.js +26 -0
  147. package/dist/cjs/store/internal/batch-plan.d.ts +56 -0
  148. package/dist/cjs/store/internal/batch-plan.js +32 -0
  149. package/dist/cjs/store/internal/filter.d.ts +43 -0
  150. package/dist/cjs/store/internal/filter.js +64 -0
  151. package/dist/cjs/store/internal/get-item.d.ts +77 -0
  152. package/dist/cjs/store/internal/get-item.js +58 -0
  153. package/dist/cjs/store/internal/item-write.d.ts +270 -0
  154. package/dist/cjs/store/internal/item-write.js +181 -0
  155. package/dist/cjs/store/internal/parse.d.ts +230 -0
  156. package/dist/cjs/store/internal/parse.js +180 -0
  157. package/dist/cjs/store/internal/rows.d.ts +359 -0
  158. package/dist/cjs/store/internal/rows.js +166 -0
  159. package/dist/cjs/store/internal/semantic-search.d.ts +168 -0
  160. package/dist/{store/internal/text-path.js → cjs/store/internal/semantic-search.js} +92 -28
  161. package/dist/cjs/store/internal/setup.d.ts +96 -0
  162. package/dist/cjs/store/internal/setup.js +103 -0
  163. package/dist/cjs/store/internal/table-search.d.ts +100 -0
  164. package/dist/cjs/store/internal/table-search.js +123 -0
  165. package/dist/cjs/store/internal/vector-index.d.ts +258 -0
  166. package/dist/cjs/store/internal/vector-index.js +269 -0
  167. package/dist/cjs/store/store.d.ts +329 -0
  168. package/dist/cjs/store/store.js +97 -0
  169. package/dist/cjs/store/types.d.ts +111 -0
  170. package/dist/cjs/store/vector-backend.d.ts +104 -0
  171. package/dist/cjs/store/vector-backend.js +4 -0
  172. package/dist/esm/backfill/backfill.d.ts +171 -0
  173. package/dist/esm/backfill/backfill.js +170 -0
  174. package/dist/esm/checkpointer/actions/delete-thread.d.ts +50 -0
  175. package/dist/esm/checkpointer/actions/delete-thread.js +23 -0
  176. package/dist/esm/checkpointer/actions/get-tuple.d.ts +36 -0
  177. package/dist/esm/checkpointer/actions/get-tuple.js +19 -0
  178. package/dist/esm/checkpointer/actions/list.d.ts +55 -0
  179. package/dist/esm/checkpointer/actions/list.js +67 -0
  180. package/dist/esm/checkpointer/actions/put-writes.d.ts +49 -0
  181. package/dist/esm/checkpointer/actions/put-writes.js +18 -0
  182. package/dist/esm/checkpointer/actions/put.d.ts +95 -0
  183. package/dist/esm/checkpointer/actions/put.js +75 -0
  184. package/dist/esm/checkpointer/internal/delta-history.d.ts +124 -0
  185. package/dist/esm/checkpointer/internal/delta-history.js +126 -0
  186. package/dist/esm/checkpointer/internal/listing.d.ts +149 -0
  187. package/dist/esm/checkpointer/internal/listing.js +95 -0
  188. package/dist/esm/checkpointer/internal/parse.d.ts +298 -0
  189. package/dist/esm/checkpointer/internal/parse.js +169 -0
  190. package/dist/esm/checkpointer/internal/pending-writes.d.ts +314 -0
  191. package/dist/esm/checkpointer/internal/pending-writes.js +229 -0
  192. package/dist/esm/checkpointer/internal/read.d.ts +135 -0
  193. package/dist/esm/checkpointer/internal/read.js +125 -0
  194. package/dist/esm/checkpointer/internal/rows.d.ts +644 -0
  195. package/dist/esm/checkpointer/internal/rows.js +323 -0
  196. package/dist/esm/checkpointer/internal/setup.d.ts +47 -0
  197. package/dist/esm/checkpointer/internal/setup.js +21 -0
  198. package/dist/esm/checkpointer/saver.d.ts +306 -0
  199. package/dist/esm/checkpointer/saver.js +52 -0
  200. package/dist/esm/checkpointer/types.d.ts +51 -0
  201. package/dist/esm/checkpointer/types.js +1 -0
  202. package/dist/esm/factory/factory.d.ts +154 -0
  203. package/dist/esm/factory/factory.js +133 -0
  204. package/dist/esm/factory/types.d.ts +76 -0
  205. package/dist/esm/factory/types.js +1 -0
  206. package/dist/esm/history/actions/add-messages.d.ts +51 -0
  207. package/dist/esm/history/actions/add-messages.js +14 -0
  208. package/dist/esm/history/actions/clear.d.ts +52 -0
  209. package/dist/esm/history/actions/clear.js +26 -0
  210. package/dist/esm/history/actions/get-messages.d.ts +60 -0
  211. package/dist/esm/history/actions/get-messages.js +55 -0
  212. package/dist/esm/history/actions/list-sessions.d.ts +55 -0
  213. package/dist/esm/history/actions/list-sessions.js +64 -0
  214. package/dist/esm/history/actions/reconcile-count.d.ts +49 -0
  215. package/dist/esm/history/actions/reconcile-count.js +5 -0
  216. package/dist/esm/history/chat-message-history.d.ts +267 -0
  217. package/dist/esm/history/chat-message-history.js +57 -0
  218. package/dist/esm/history/internal/append.d.ts +244 -0
  219. package/dist/esm/history/internal/append.js +259 -0
  220. package/dist/esm/history/internal/message-read.d.ts +84 -0
  221. package/dist/esm/history/internal/message-read.js +89 -0
  222. package/dist/esm/history/internal/parse.d.ts +153 -0
  223. package/dist/esm/history/internal/parse.js +105 -0
  224. package/dist/esm/history/internal/rows.d.ts +196 -0
  225. package/dist/esm/history/internal/rows.js +83 -0
  226. package/dist/esm/history/internal/session.d.ts +350 -0
  227. package/dist/esm/history/internal/session.js +285 -0
  228. package/dist/esm/history/internal/setup.d.ts +64 -0
  229. package/dist/esm/history/internal/setup.js +56 -0
  230. package/dist/esm/history/session-adapter.d.ts +112 -0
  231. package/dist/esm/history/session-adapter.js +34 -0
  232. package/dist/esm/history/types.d.ts +102 -0
  233. package/dist/esm/history/types.js +1 -0
  234. package/dist/esm/index.d.ts +53 -0
  235. package/dist/esm/index.js +10 -0
  236. package/dist/esm/shared/adapter.d.ts +146 -0
  237. package/dist/esm/shared/adapter.js +65 -0
  238. package/dist/esm/shared/clock.d.ts +52 -0
  239. package/dist/esm/shared/clock.js +9 -0
  240. package/dist/esm/shared/codec/codec.d.ts +336 -0
  241. package/dist/esm/shared/codec/codec.js +150 -0
  242. package/dist/esm/shared/codec/compression.d.ts +66 -0
  243. package/dist/esm/shared/codec/compression.js +40 -0
  244. package/dist/esm/shared/codec/json-serde.d.ts +80 -0
  245. package/dist/esm/shared/codec/json-serde.js +54 -0
  246. package/dist/esm/shared/codec/s3/client-types.d.ts +54 -0
  247. package/dist/esm/shared/codec/s3/client-types.js +3 -0
  248. package/dist/esm/shared/codec/s3/client.d.ts +63 -0
  249. package/dist/esm/shared/codec/s3/client.js +40 -0
  250. package/dist/esm/shared/codec/s3/config.d.ts +260 -0
  251. package/dist/esm/shared/codec/s3/config.js +79 -0
  252. package/dist/esm/shared/codec/s3/lifecycle.d.ts +220 -0
  253. package/dist/esm/shared/codec/s3/lifecycle.js +214 -0
  254. package/dist/esm/shared/codec/s3/offloader.d.ts +428 -0
  255. package/dist/esm/shared/codec/s3/offloader.js +278 -0
  256. package/dist/esm/shared/concurrency.d.ts +43 -0
  257. package/dist/esm/shared/concurrency.js +27 -0
  258. package/dist/esm/shared/dynamodb/abort.d.ts +47 -0
  259. package/dist/esm/shared/dynamodb/abort.js +12 -0
  260. package/dist/esm/shared/dynamodb/batch-write.d.ts +86 -0
  261. package/dist/esm/shared/dynamodb/batch-write.js +74 -0
  262. package/dist/esm/shared/dynamodb/cancellation.d.ts +124 -0
  263. package/dist/esm/shared/dynamodb/cancellation.js +30 -0
  264. package/dist/esm/shared/dynamodb/client.d.ts +177 -0
  265. package/dist/esm/shared/dynamodb/client.js +35 -0
  266. package/dist/esm/shared/dynamodb/idempotent-write.d.ts +596 -0
  267. package/dist/esm/shared/dynamodb/idempotent-write.js +153 -0
  268. package/dist/esm/shared/dynamodb/paginate.d.ts +111 -0
  269. package/dist/esm/shared/dynamodb/paginate.js +84 -0
  270. package/dist/esm/shared/dynamodb/partition-delete.d.ts +204 -0
  271. package/dist/esm/shared/dynamodb/partition-delete.js +171 -0
  272. package/dist/esm/shared/dynamodb/recency-index.d.ts +243 -0
  273. package/dist/esm/shared/dynamodb/recency-index.js +136 -0
  274. package/dist/esm/shared/dynamodb/retry.d.ts +317 -0
  275. package/dist/esm/shared/dynamodb/retry.js +180 -0
  276. package/dist/esm/shared/dynamodb/row-size.d.ts +33 -0
  277. package/dist/esm/shared/dynamodb/row-size.js +26 -0
  278. package/dist/esm/shared/dynamodb/table-schema.d.ts +199 -0
  279. package/dist/esm/shared/dynamodb/table-schema.js +43 -0
  280. package/dist/esm/shared/errors/base-error.d.ts +231 -0
  281. package/dist/esm/shared/errors/base-error.js +64 -0
  282. package/dist/esm/shared/errors/boundary.d.ts +86 -0
  283. package/dist/esm/shared/errors/boundary.js +54 -0
  284. package/dist/esm/shared/errors/classify.d.ts +206 -0
  285. package/dist/esm/shared/errors/classify.js +220 -0
  286. package/dist/esm/shared/errors/error-code.d.ts +95 -0
  287. package/dist/esm/shared/errors/error-code.js +24 -0
  288. package/dist/esm/shared/errors/errors.d.ts +233 -0
  289. package/dist/esm/shared/errors/errors.js +110 -0
  290. package/dist/esm/shared/logging/logger.d.ts +80 -0
  291. package/dist/esm/shared/logging/logger.js +25 -0
  292. package/dist/esm/shared/logging/redaction.d.ts +123 -0
  293. package/dist/esm/shared/logging/redaction.js +140 -0
  294. package/dist/esm/shared/logging/secret-patterns.d.ts +227 -0
  295. package/dist/esm/shared/logging/secret-patterns.js +83 -0
  296. package/dist/esm/shared/logging/truncate.d.ts +197 -0
  297. package/dist/esm/shared/logging/truncate.js +25 -0
  298. package/dist/esm/shared/options.d.ts +100 -0
  299. package/dist/esm/shared/options.js +1 -0
  300. package/dist/esm/shared/ulid.d.ts +80 -0
  301. package/dist/esm/shared/ulid.js +77 -0
  302. package/dist/esm/shared/validation/collaborators.d.ts +160 -0
  303. package/dist/esm/shared/validation/collaborators.js +70 -0
  304. package/dist/esm/shared/validation/option-shape.d.ts +91 -0
  305. package/dist/esm/shared/validation/option-shape.js +24 -0
  306. package/dist/esm/shared/validation/options.d.ts +145 -0
  307. package/dist/esm/shared/validation/options.js +156 -0
  308. package/dist/esm/shared/validation/primitives.d.ts +292 -0
  309. package/dist/esm/shared/validation/primitives.js +100 -0
  310. package/dist/esm/shared/validation/ttl.d.ts +94 -0
  311. package/dist/esm/shared/validation/ttl.js +46 -0
  312. package/dist/esm/store/actions/list-namespaces.d.ts +79 -0
  313. package/dist/esm/store/actions/list-namespaces.js +86 -0
  314. package/dist/esm/store/actions/put.d.ts +43 -0
  315. package/dist/esm/store/actions/put.js +46 -0
  316. package/dist/esm/store/actions/reconcile-vector-index.d.ts +38 -0
  317. package/dist/esm/store/actions/reconcile-vector-index.js +10 -0
  318. package/dist/esm/store/actions/search.d.ts +38 -0
  319. package/dist/esm/store/actions/search.js +23 -0
  320. package/dist/esm/store/internal/batch-plan.d.ts +56 -0
  321. package/dist/esm/store/internal/batch-plan.js +28 -0
  322. package/dist/esm/store/internal/filter.d.ts +43 -0
  323. package/dist/esm/store/internal/filter.js +60 -0
  324. package/dist/esm/store/internal/get-item.d.ts +77 -0
  325. package/dist/esm/store/internal/get-item.js +54 -0
  326. package/dist/esm/store/internal/item-write.d.ts +270 -0
  327. package/dist/esm/store/internal/item-write.js +173 -0
  328. package/dist/esm/store/internal/parse.d.ts +230 -0
  329. package/dist/esm/store/internal/parse.js +169 -0
  330. package/dist/esm/store/internal/rows.d.ts +359 -0
  331. package/dist/esm/store/internal/rows.js +147 -0
  332. package/dist/esm/store/internal/semantic-search.d.ts +168 -0
  333. package/dist/esm/store/internal/semantic-search.js +200 -0
  334. package/dist/esm/store/internal/setup.d.ts +96 -0
  335. package/dist/esm/store/internal/setup.js +98 -0
  336. package/dist/esm/store/internal/table-search.d.ts +100 -0
  337. package/dist/esm/store/internal/table-search.js +119 -0
  338. package/dist/esm/store/internal/vector-index.d.ts +258 -0
  339. package/dist/esm/store/internal/vector-index.js +256 -0
  340. package/dist/esm/store/store.d.ts +329 -0
  341. package/dist/esm/store/store.js +93 -0
  342. package/dist/esm/store/types.d.ts +111 -0
  343. package/dist/esm/store/types.js +1 -0
  344. package/dist/esm/store/vector-backend.d.ts +104 -0
  345. package/dist/esm/store/vector-backend.js +1 -0
  346. package/package.json +68 -46
  347. package/dist/checkpointer/actions/delete-thread.d.ts +0 -10
  348. package/dist/checkpointer/actions/delete-thread.js +0 -38
  349. package/dist/checkpointer/actions/get-tuple.d.ts +0 -11
  350. package/dist/checkpointer/actions/get-tuple.js +0 -25
  351. package/dist/checkpointer/actions/list.d.ts +0 -20
  352. package/dist/checkpointer/actions/list.js +0 -113
  353. package/dist/checkpointer/actions/put-writes.d.ts +0 -15
  354. package/dist/checkpointer/actions/put-writes.js +0 -62
  355. package/dist/checkpointer/actions/put.d.ts +0 -17
  356. package/dist/checkpointer/actions/put.js +0 -73
  357. package/dist/checkpointer/internal/assemble.d.ts +0 -17
  358. package/dist/checkpointer/internal/assemble.js +0 -38
  359. package/dist/checkpointer/internal/checkpoint-write-verify.d.ts +0 -24
  360. package/dist/checkpointer/internal/checkpoint-write-verify.js +0 -67
  361. package/dist/checkpointer/internal/configurable.d.ts +0 -12
  362. package/dist/checkpointer/internal/configurable.js +0 -24
  363. package/dist/checkpointer/internal/fetch.d.ts +0 -19
  364. package/dist/checkpointer/internal/fetch.js +0 -88
  365. package/dist/checkpointer/internal/filter-match.d.ts +0 -13
  366. package/dist/checkpointer/internal/filter-match.js +0 -15
  367. package/dist/checkpointer/internal/item-reader.d.ts +0 -66
  368. package/dist/checkpointer/internal/item-reader.js +0 -113
  369. package/dist/checkpointer/internal/item-writer.d.ts +0 -35
  370. package/dist/checkpointer/internal/item-writer.js +0 -107
  371. package/dist/checkpointer/internal/keys.d.ts +0 -41
  372. package/dist/checkpointer/internal/keys.js +0 -117
  373. package/dist/checkpointer/internal/list-scope.d.ts +0 -61
  374. package/dist/checkpointer/internal/list-scope.js +0 -108
  375. package/dist/checkpointer/internal/pending-sends.d.ts +0 -13
  376. package/dist/checkpointer/internal/pending-sends.js +0 -29
  377. package/dist/checkpointer/internal/query.d.ts +0 -21
  378. package/dist/checkpointer/internal/query.js +0 -42
  379. package/dist/checkpointer/internal/regular-write.d.ts +0 -28
  380. package/dist/checkpointer/internal/regular-write.js +0 -66
  381. package/dist/checkpointer/internal/setup.d.ts +0 -33
  382. package/dist/checkpointer/internal/setup.js +0 -38
  383. package/dist/checkpointer/internal/special-write-cas.d.ts +0 -29
  384. package/dist/checkpointer/internal/special-write-cas.js +0 -104
  385. package/dist/checkpointer/internal/special-write-cleanup.d.ts +0 -23
  386. package/dist/checkpointer/internal/special-write-cleanup.js +0 -50
  387. package/dist/checkpointer/internal/special-write-verify.d.ts +0 -53
  388. package/dist/checkpointer/internal/special-write-verify.js +0 -80
  389. package/dist/checkpointer/internal/stored-channels.d.ts +0 -31
  390. package/dist/checkpointer/internal/stored-channels.js +0 -70
  391. package/dist/checkpointer/internal/validation.d.ts +0 -18
  392. package/dist/checkpointer/internal/validation.js +0 -40
  393. package/dist/checkpointer/internal/write-guard.d.ts +0 -20
  394. package/dist/checkpointer/internal/write-guard.js +0 -48
  395. package/dist/checkpointer/internal/write-index.d.ts +0 -36
  396. package/dist/checkpointer/internal/write-index.js +0 -41
  397. package/dist/checkpointer/saver.d.ts +0 -70
  398. package/dist/checkpointer/saver.js +0 -105
  399. package/dist/checkpointer/types.d.ts +0 -58
  400. package/dist/factory/factory.d.ts +0 -40
  401. package/dist/factory/factory.js +0 -87
  402. package/dist/history/actions/add-messages.d.ts +0 -15
  403. package/dist/history/actions/add-messages.js +0 -77
  404. package/dist/history/actions/clear.d.ts +0 -10
  405. package/dist/history/actions/clear.js +0 -34
  406. package/dist/history/actions/get-messages.d.ts +0 -17
  407. package/dist/history/actions/get-messages.js +0 -79
  408. package/dist/history/actions/list-sessions.d.ts +0 -13
  409. package/dist/history/actions/list-sessions.js +0 -53
  410. package/dist/history/actions/reconcile-count.d.ts +0 -12
  411. package/dist/history/actions/reconcile-count.js +0 -64
  412. package/dist/history/chat-message-history.d.ts +0 -73
  413. package/dist/history/chat-message-history.js +0 -111
  414. package/dist/history/internal/append-saga.d.ts +0 -25
  415. package/dist/history/internal/append-saga.js +0 -79
  416. package/dist/history/internal/compensation.d.ts +0 -25
  417. package/dist/history/internal/compensation.js +0 -92
  418. package/dist/history/internal/item-mapper.d.ts +0 -9
  419. package/dist/history/internal/item-mapper.js +0 -27
  420. package/dist/history/internal/keys.d.ts +0 -16
  421. package/dist/history/internal/keys.js +0 -48
  422. package/dist/history/internal/message-chunker.d.ts +0 -13
  423. package/dist/history/internal/message-chunker.js +0 -67
  424. package/dist/history/internal/message-transaction.d.ts +0 -25
  425. package/dist/history/internal/message-transaction.js +0 -61
  426. package/dist/history/internal/message-window.d.ts +0 -17
  427. package/dist/history/internal/message-window.js +0 -49
  428. package/dist/history/internal/query.d.ts +0 -23
  429. package/dist/history/internal/query.js +0 -39
  430. package/dist/history/internal/session-count.d.ts +0 -47
  431. package/dist/history/internal/session-count.js +0 -115
  432. package/dist/history/internal/session-title.d.ts +0 -19
  433. package/dist/history/internal/session-title.js +0 -43
  434. package/dist/history/internal/session-update.d.ts +0 -27
  435. package/dist/history/internal/session-update.js +0 -69
  436. package/dist/history/internal/setup.d.ts +0 -31
  437. package/dist/history/internal/setup.js +0 -43
  438. package/dist/history/internal/title-generator.d.ts +0 -12
  439. package/dist/history/internal/title-generator.js +0 -41
  440. package/dist/history/internal/ttl-anchor.d.ts +0 -24
  441. package/dist/history/internal/ttl-anchor.js +0 -38
  442. package/dist/history/internal/validation.d.ts +0 -25
  443. package/dist/history/internal/validation.js +0 -53
  444. package/dist/history/session-adapter.d.ts +0 -29
  445. package/dist/history/session-adapter.js +0 -35
  446. package/dist/history/types.d.ts +0 -69
  447. package/dist/index.d.ts +0 -29
  448. package/dist/index.js +0 -32
  449. package/dist/shared/clock.d.ts +0 -8
  450. package/dist/shared/clock.js +0 -16
  451. package/dist/shared/codec/codec.d.ts +0 -53
  452. package/dist/shared/codec/codec.js +0 -66
  453. package/dist/shared/codec/compression.d.ts +0 -24
  454. package/dist/shared/codec/compression.js +0 -48
  455. package/dist/shared/codec/descriptor-keys.d.ts +0 -12
  456. package/dist/shared/codec/descriptor-keys.js +0 -14
  457. package/dist/shared/codec/encode.d.ts +0 -13
  458. package/dist/shared/codec/encode.js +0 -43
  459. package/dist/shared/codec/json-serde.d.ts +0 -7
  460. package/dist/shared/codec/json-serde.js +0 -17
  461. package/dist/shared/codec/payload-loss.d.ts +0 -12
  462. package/dist/shared/codec/payload-loss.js +0 -38
  463. package/dist/shared/codec/s3/adapter-config.d.ts +0 -13
  464. package/dist/shared/codec/s3/adapter-config.js +0 -22
  465. package/dist/shared/codec/s3/bounded-body.d.ts +0 -14
  466. package/dist/shared/codec/s3/bounded-body.js +0 -47
  467. package/dist/shared/codec/s3/client.d.ts +0 -18
  468. package/dist/shared/codec/s3/client.js +0 -46
  469. package/dist/shared/codec/s3/config.d.ts +0 -51
  470. package/dist/shared/codec/s3/config.js +0 -58
  471. package/dist/shared/codec/s3/delete.d.ts +0 -7
  472. package/dist/shared/codec/s3/delete.js +0 -28
  473. package/dist/shared/codec/s3/key-scope.d.ts +0 -23
  474. package/dist/shared/codec/s3/key-scope.js +0 -44
  475. package/dist/shared/codec/s3/lifecycle.d.ts +0 -14
  476. package/dist/shared/codec/s3/lifecycle.js +0 -63
  477. package/dist/shared/codec/s3/offloader.d.ts +0 -44
  478. package/dist/shared/codec/s3/offloader.js +0 -118
  479. package/dist/shared/codec/s3/orphans.d.ts +0 -23
  480. package/dist/shared/codec/s3/orphans.js +0 -71
  481. package/dist/shared/codec/s3/read-write.d.ts +0 -18
  482. package/dist/shared/codec/s3/read-write.js +0 -51
  483. package/dist/shared/codec/s3/retry.d.ts +0 -5
  484. package/dist/shared/codec/s3/retry.js +0 -22
  485. package/dist/shared/concurrency.d.ts +0 -6
  486. package/dist/shared/constants.d.ts +0 -112
  487. package/dist/shared/constants.js +0 -115
  488. package/dist/shared/dynamodb/abort.d.ts +0 -9
  489. package/dist/shared/dynamodb/abort.js +0 -27
  490. package/dist/shared/dynamodb/backoff.d.ts +0 -15
  491. package/dist/shared/dynamodb/backoff.js +0 -48
  492. package/dist/shared/dynamodb/batch-write.d.ts +0 -22
  493. package/dist/shared/dynamodb/batch-write.js +0 -53
  494. package/dist/shared/dynamodb/cancellation.d.ts +0 -6
  495. package/dist/shared/dynamodb/cancellation.js +0 -7
  496. package/dist/shared/dynamodb/client.d.ts +0 -28
  497. package/dist/shared/dynamodb/conditional-put.d.ts +0 -67
  498. package/dist/shared/dynamodb/conditional-put.js +0 -76
  499. package/dist/shared/dynamodb/drain-unprocessed.d.ts +0 -21
  500. package/dist/shared/dynamodb/drain-unprocessed.js +0 -43
  501. package/dist/shared/dynamodb/expiry.d.ts +0 -16
  502. package/dist/shared/dynamodb/expiry.js +0 -29
  503. package/dist/shared/dynamodb/paginate-core.d.ts +0 -24
  504. package/dist/shared/dynamodb/paginate-core.js +0 -82
  505. package/dist/shared/dynamodb/paginate.d.ts +0 -14
  506. package/dist/shared/dynamodb/paginate.js +0 -19
  507. package/dist/shared/dynamodb/partition-delete.d.ts +0 -39
  508. package/dist/shared/dynamodb/partition-delete.js +0 -71
  509. package/dist/shared/dynamodb/retry-classifier.d.ts +0 -17
  510. package/dist/shared/dynamodb/retry-classifier.js +0 -118
  511. package/dist/shared/dynamodb/retry-policy.d.ts +0 -26
  512. package/dist/shared/dynamodb/retry-policy.js +0 -22
  513. package/dist/shared/dynamodb/retry.d.ts +0 -31
  514. package/dist/shared/dynamodb/retry.js +0 -57
  515. package/dist/shared/dynamodb/scan.d.ts +0 -14
  516. package/dist/shared/dynamodb/scan.js +0 -19
  517. package/dist/shared/dynamodb/types.d.ts +0 -23
  518. package/dist/shared/errors/base-error.d.ts +0 -30
  519. package/dist/shared/errors/base-error.js +0 -27
  520. package/dist/shared/errors/boundary.d.ts +0 -18
  521. package/dist/shared/errors/boundary.js +0 -46
  522. package/dist/shared/errors/error-code.d.ts +0 -13
  523. package/dist/shared/errors/errors.d.ts +0 -68
  524. package/dist/shared/errors/errors.js +0 -114
  525. package/dist/shared/errors/upstream-error.d.ts +0 -16
  526. package/dist/shared/errors/upstream-error.js +0 -27
  527. package/dist/shared/errors/wrap-error.d.ts +0 -7
  528. package/dist/shared/errors/wrap-error.js +0 -15
  529. package/dist/shared/logging/logger.d.ts +0 -18
  530. package/dist/shared/logging/logger.js +0 -15
  531. package/dist/shared/logging/redaction-walk.d.ts +0 -23
  532. package/dist/shared/logging/redaction-walk.js +0 -112
  533. package/dist/shared/logging/redaction.d.ts +0 -39
  534. package/dist/shared/logging/redaction.js +0 -75
  535. package/dist/shared/logging/secret-patterns.d.ts +0 -92
  536. package/dist/shared/logging/secret-patterns.js +0 -133
  537. package/dist/shared/options.d.ts +0 -37
  538. package/dist/shared/ulid.d.ts +0 -23
  539. package/dist/shared/validation/options.d.ts +0 -8
  540. package/dist/shared/validation/options.js +0 -90
  541. package/dist/shared/validation/primitives.d.ts +0 -29
  542. package/dist/shared/validation/primitives.js +0 -82
  543. package/dist/shared/validation/ttl.d.ts +0 -28
  544. package/dist/shared/validation/ttl.js +0 -52
  545. package/dist/store/actions/get.d.ts +0 -13
  546. package/dist/store/actions/get.js +0 -73
  547. package/dist/store/actions/list-namespaces.d.ts +0 -8
  548. package/dist/store/actions/list-namespaces.js +0 -59
  549. package/dist/store/actions/put.d.ts +0 -10
  550. package/dist/store/actions/put.js +0 -96
  551. package/dist/store/actions/reconcile-vector-index.d.ts +0 -18
  552. package/dist/store/actions/reconcile-vector-index.js +0 -26
  553. package/dist/store/actions/search.d.ts +0 -9
  554. package/dist/store/actions/search.js +0 -34
  555. package/dist/store/internal/backend-search.d.ts +0 -4
  556. package/dist/store/internal/backend-search.js +0 -74
  557. package/dist/store/internal/batch-plan.d.ts +0 -11
  558. package/dist/store/internal/batch-plan.js +0 -52
  559. package/dist/store/internal/candidates.d.ts +0 -23
  560. package/dist/store/internal/candidates.js +0 -94
  561. package/dist/store/internal/filter.d.ts +0 -9
  562. package/dist/store/internal/filter.js +0 -85
  563. package/dist/store/internal/index-reconcile.d.ts +0 -21
  564. package/dist/store/internal/index-reconcile.js +0 -118
  565. package/dist/store/internal/index-sync.d.ts +0 -10
  566. package/dist/store/internal/index-sync.js +0 -25
  567. package/dist/store/internal/item-mapper.d.ts +0 -27
  568. package/dist/store/internal/item-mapper.js +0 -61
  569. package/dist/store/internal/keys.d.ts +0 -17
  570. package/dist/store/internal/keys.js +0 -41
  571. package/dist/store/internal/namespace-match.d.ts +0 -11
  572. package/dist/store/internal/namespace-match.js +0 -40
  573. package/dist/store/internal/option-validation.d.ts +0 -13
  574. package/dist/store/internal/option-validation.js +0 -77
  575. package/dist/store/internal/overwrite-swap.d.ts +0 -32
  576. package/dist/store/internal/overwrite-swap.js +0 -68
  577. package/dist/store/internal/persist.d.ts +0 -28
  578. package/dist/store/internal/persist.js +0 -64
  579. package/dist/store/internal/query.d.ts +0 -11
  580. package/dist/store/internal/query.js +0 -48
  581. package/dist/store/internal/ranker.d.ts +0 -18
  582. package/dist/store/internal/ranker.js +0 -39
  583. package/dist/store/internal/read-existing.d.ts +0 -23
  584. package/dist/store/internal/read-existing.js +0 -41
  585. package/dist/store/internal/score-direction.d.ts +0 -31
  586. package/dist/store/internal/score-direction.js +0 -38
  587. package/dist/store/internal/search-filter.d.ts +0 -3
  588. package/dist/store/internal/search-filter.js +0 -10
  589. package/dist/store/internal/semantic-search.d.ts +0 -34
  590. package/dist/store/internal/semantic-search.js +0 -87
  591. package/dist/store/internal/setup.d.ts +0 -36
  592. package/dist/store/internal/setup.js +0 -40
  593. package/dist/store/internal/text-path.d.ts +0 -17
  594. package/dist/store/internal/validation.d.ts +0 -18
  595. package/dist/store/internal/validation.js +0 -51
  596. package/dist/store/internal/write-verify.d.ts +0 -42
  597. package/dist/store/internal/write-verify.js +0 -71
  598. package/dist/store/store.d.ts +0 -61
  599. package/dist/store/store.js +0 -107
  600. package/dist/store/types.d.ts +0 -50
  601. package/dist/store/types.js +0 -2
  602. package/dist/store/vector-backend.d.ts +0 -43
  603. package/dist/store/vector-backend.js +0 -2
  604. /package/dist/{checkpointer → cjs/checkpointer}/types.js +0 -0
  605. /package/dist/{factory → cjs/factory}/types.js +0 -0
  606. /package/dist/{history → cjs/history}/types.js +0 -0
  607. /package/dist/{shared → cjs/shared}/options.js +0 -0
  608. /package/dist/{shared/dynamodb → cjs/store}/types.js +0 -0
@@ -1,9 +0,0 @@
1
- import { AbortError } from '../errors/errors';
2
- /**
3
- * The library's error for an aborted `signal`. A caller's own `AbortError`
4
- * used as the abort reason is returned unchanged; anything else — the
5
- * `DOMException` a bare `controller.abort()` produces, a string, a custom
6
- * error — becomes the `cause` of a fresh {@link AbortError}, so
7
- * `code === 'ABORTED'` holds however the signal was aborted.
8
- */
9
- export declare function abortErrorFrom(signal: AbortSignal): AbortError;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.abortErrorFrom = abortErrorFrom;
4
- const base_error_1 = require("../errors/base-error");
5
- const error_code_1 = require("../errors/error-code");
6
- const errors_1 = require("../errors/errors");
7
- const wrap_error_1 = require("../errors/wrap-error");
8
- /** True when the abort reason already is this library's `AbortError` (a string or DOMException is not). */
9
- function isLibraryAbort(reason) {
10
- return (typeof reason === 'object' &&
11
- reason !== null &&
12
- (0, base_error_1.isDynamoDBLangGraphError)(reason) &&
13
- reason.code === error_code_1.ErrorCode.ABORTED);
14
- }
15
- /**
16
- * The library's error for an aborted `signal`. A caller's own `AbortError`
17
- * used as the abort reason is returned unchanged; anything else — the
18
- * `DOMException` a bare `controller.abort()` produces, a string, a custom
19
- * error — becomes the `cause` of a fresh {@link AbortError}, so
20
- * `code === 'ABORTED'` holds however the signal was aborted.
21
- */
22
- function abortErrorFrom(signal) {
23
- const reason = signal.reason;
24
- if (isLibraryAbort(reason))
25
- return reason;
26
- return new errors_1.AbortError('Operation aborted', reason === undefined ? undefined : (0, wrap_error_1.toError)(reason));
27
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Sleep for `ms` milliseconds, cancellable via `signal`. An already-aborted
3
- * signal rejects at once and an abort while pending rejects the moment it fires; both
4
- * reject with the library's `AbortError` (see `abortErrorFrom`), so a caller
5
- * branching on `code === 'ABORTED'` sees it however the signal was aborted.
6
- */
7
- export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
8
- /** Next exponential-backoff delay: double `currentMs`, capped at `maxMs`. */
9
- export declare function nextBackoffDelay(currentMs: number, maxMs?: number): number;
10
- /**
11
- * Apply AWS-recommended full jitter: a uniform random value in `[0, delayMs)`.
12
- *
13
- * @param rng - RNG seam returning `[0, 1)`. Defaults to `Math.random`.
14
- */
15
- export declare function fullJitter(delayMs: number, rng?: () => number): number;
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sleep = sleep;
4
- exports.nextBackoffDelay = nextBackoffDelay;
5
- exports.fullJitter = fullJitter;
6
- const constants_1 = require("../constants");
7
- const abort_1 = require("./abort");
8
- /**
9
- * Sleep for `ms` milliseconds, cancellable via `signal`. An already-aborted
10
- * signal rejects at once and an abort while pending rejects the moment it fires; both
11
- * reject with the library's `AbortError` (see `abortErrorFrom`), so a caller
12
- * branching on `code === 'ABORTED'` sees it however the signal was aborted.
13
- */
14
- function sleep(ms, signal) {
15
- if (signal?.aborted) {
16
- return Promise.reject((0, abort_1.abortErrorFrom)(signal));
17
- }
18
- return new Promise((resolve, reject) => {
19
- let settled = false;
20
- const onAbort = () => {
21
- if (settled)
22
- return;
23
- settled = true;
24
- clearTimeout(timer);
25
- reject((0, abort_1.abortErrorFrom)(signal));
26
- };
27
- const timer = setTimeout(() => {
28
- if (settled)
29
- return;
30
- settled = true;
31
- signal?.removeEventListener('abort', onAbort);
32
- resolve();
33
- }, ms);
34
- signal?.addEventListener('abort', onAbort, { once: true });
35
- });
36
- }
37
- /** Next exponential-backoff delay: double `currentMs`, capped at `maxMs`. */
38
- function nextBackoffDelay(currentMs, maxMs = constants_1.MAX_BACKOFF_DELAY_MS) {
39
- return Math.min(currentMs * 2, maxMs);
40
- }
41
- /**
42
- * Apply AWS-recommended full jitter: a uniform random value in `[0, delayMs)`.
43
- *
44
- * @param rng - RNG seam returning `[0, 1)`. Defaults to `Math.random`.
45
- */
46
- function fullJitter(delayMs, rng = Math.random) {
47
- return rng() * delayMs;
48
- }
@@ -1,22 +0,0 @@
1
- import type { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
2
- import { DrainOptions } from './drain-unprocessed';
3
- import type { WriteRequest } from './types';
4
- /**
5
- * Write an arbitrary number of requests, chunked into batches of 25 (the
6
- * BatchWriteItem limit). Every chunk is attempted regardless of an earlier
7
- * chunk's failure — order-independent writes (deletes/puts) should never
8
- * lose "later" chunks just because an earlier one failed. If any chunk fails,
9
- * throws {@link BatchWriteAllIncompleteError} reporting exactly how many
10
- * chunks succeeded vs. failed, and exactly how many individual writes
11
- * persisted, once every chunk has been attempted.
12
- *
13
- * This is this function's ONLY throw site. Two callers —
14
- * checkpointer/internal/special-write-cleanup.ts and
15
- * history/internal/append-saga.ts — type-assert a caught error straight to
16
- * {@link BatchWriteAllIncompleteError} on that guarantee (not `instanceof`,
17
- * banned repo-wide) instead of narrowing it, since this project enforces
18
- * 100% branch coverage and a defensive else-branch here would be
19
- * unreachable, hence untestable. Adding another throw path to this function
20
- * requires updating both call sites.
21
- */
22
- export declare function batchWriteAll(client: DynamoDBDocument, tableName: string, requests: WriteRequest[], options?: DrainOptions): Promise<void>;
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.batchWriteAll = batchWriteAll;
4
- const constants_1 = require("../constants");
5
- const errors_1 = require("../errors/errors");
6
- const drain_unprocessed_1 = require("./drain-unprocessed");
7
- /**
8
- * Write an arbitrary number of requests, chunked into batches of 25 (the
9
- * BatchWriteItem limit). Every chunk is attempted regardless of an earlier
10
- * chunk's failure — order-independent writes (deletes/puts) should never
11
- * lose "later" chunks just because an earlier one failed. If any chunk fails,
12
- * throws {@link BatchWriteAllIncompleteError} reporting exactly how many
13
- * chunks succeeded vs. failed, and exactly how many individual writes
14
- * persisted, once every chunk has been attempted.
15
- *
16
- * This is this function's ONLY throw site. Two callers —
17
- * checkpointer/internal/special-write-cleanup.ts and
18
- * history/internal/append-saga.ts — type-assert a caught error straight to
19
- * {@link BatchWriteAllIncompleteError} on that guarantee (not `instanceof`,
20
- * banned repo-wide) instead of narrowing it, since this project enforces
21
- * 100% branch coverage and a defensive else-branch here would be
22
- * unreachable, hence untestable. Adding another throw path to this function
23
- * requires updating both call sites.
24
- */
25
- async function batchWriteAll(client, tableName, requests, options = {}) {
26
- const totalChunks = Math.ceil(requests.length / constants_1.BATCH_WRITE_MAX);
27
- let succeededChunks = 0;
28
- let succeededCount = 0;
29
- const failedChunks = [];
30
- for (let offset = 0; offset < requests.length; offset += constants_1.BATCH_WRITE_MAX) {
31
- const chunk = requests.slice(offset, offset + constants_1.BATCH_WRITE_MAX);
32
- try {
33
- await (0, drain_unprocessed_1.drainUnprocessedWrites)(client, tableName, chunk, options);
34
- succeededChunks += 1;
35
- succeededCount += chunk.length;
36
- }
37
- catch (error) {
38
- /**
39
- * drainUnprocessedWrites has exactly three throw sites and every one
40
- * constructs a BatchWriteIncompleteError with an accurate
41
- * succeededCount — asserted, not name-checked, since the false case is
42
- * unreachable and this project enforces 100% branch coverage with no
43
- * exceptions (see drain-unprocessed.ts).
44
- */
45
- const err = error;
46
- failedChunks.push(err);
47
- succeededCount += err.succeededCount;
48
- }
49
- }
50
- if (failedChunks.length > 0) {
51
- throw new errors_1.BatchWriteAllIncompleteError(succeededChunks, totalChunks, failedChunks, succeededCount);
52
- }
53
- }
@@ -1,6 +0,0 @@
1
- /** One entry of a TransactWriteItems/TransactionCanceledException's CancellationReasons. */
2
- export interface CancellationReason {
3
- Code?: string;
4
- }
5
- /** Extract `CancellationReasons` from a transaction-cancellation error, if present. */
6
- export declare function getCancellationReasons(error: Error): CancellationReason[] | undefined;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCancellationReasons = getCancellationReasons;
4
- /** Extract `CancellationReasons` from a transaction-cancellation error, if present. */
5
- function getCancellationReasons(error) {
6
- return error.CancellationReasons;
7
- }
@@ -1,28 +0,0 @@
1
- import { DynamoDBClient, type DynamoDBClientConfig } from '@aws-sdk/client-dynamodb';
2
- import { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
3
- import type { Logger } from '../logging/logger';
4
- /** A resolved DynamoDB client plus its ownership flag. */
5
- export interface ResolvedDynamoDBClient {
6
- ddbClient: DynamoDBClient | undefined;
7
- client: DynamoDBDocument;
8
- ownsClient: boolean;
9
- }
10
- /** Options for {@link resolveDynamoDBClient}. */
11
- export interface ResolveClientOptions {
12
- client?: DynamoDBDocument;
13
- clientConfig?: DynamoDBClientConfig;
14
- }
15
- /**
16
- * Resolve the DocumentClient for an adapter. An injected `client` is used as-is
17
- * and not owned; otherwise a client is built from `clientConfig` (via the
18
- * `createClient` seam) and owned, so the adapter destroys it on `destroy()`.
19
- */
20
- export declare function resolveDynamoDBClient(options: ResolveClientOptions): ResolvedDynamoDBClient;
21
- /**
22
- * Warn once when an injected client keeps the SDK's own retries. They run
23
- * inside every attempt of this library's retry layer, so the budget the
24
- * constants and README describe multiplies (5 × 3 requests per operation with
25
- * the SDK default) and a throttling event turns into a retry storm. A client
26
- * that cannot report its setting is left alone; the check never throws.
27
- */
28
- export declare function warnOnStackedRetries(client: DynamoDBDocument, logger: Logger): Promise<void>;
@@ -1,67 +0,0 @@
1
- import type { DocItem } from './types';
2
- /**
3
- * Attribute holding a row's revision token on adapters that need one. The
4
- * checkpointer's special writes reuse their existing per-call `writeGroup`
5
- * instead, so `revisionGuard` takes the attribute name rather than assuming it.
6
- */
7
- export declare const REVISION_ATTRIBUTE = "rev";
8
- /**
9
- * Compare-and-swap attempts before a caller gives up and overwrites
10
- * unconditionally. Kept small on purpose: DynamoDB charges write capacity for a
11
- * *failed* conditional write too, sized on the existing item, so an aggressive
12
- * loop turns contention into cost. Three attempts settle every realistic race,
13
- * and the fallback is exactly the pre-0.9.0 behaviour rather than an error.
14
- */
15
- export declare const OVERWRITE_CAS_MAX_ATTEMPTS = 3;
16
- /** What a caller saw at the row before it tried to overwrite it. */
17
- export interface ObservedRow {
18
- exists: boolean;
19
- revision?: string;
20
- }
21
- /**
22
- * Condition fragments to spread into a `PutCommand` input. Every guard asks
23
- * DynamoDB to attach the existing row to a rejection, so a compare-and-swap
24
- * that loses can re-pin from the exception (see {@link rejectedItem}) instead
25
- * of spending a second strongly-consistent read.
26
- */
27
- export interface RevisionGuard {
28
- ConditionExpression: string;
29
- ExpressionAttributeNames?: Record<string, string>;
30
- ExpressionAttributeValues?: Record<string, string>;
31
- ReturnValuesOnConditionCheckFailure: 'ALL_OLD';
32
- }
33
- /**
34
- * Build the condition admitting a write only while the row still holds the
35
- * revision this caller observed.
36
- *
37
- * Without it, two concurrent overwrites both read the same previous payload
38
- * descriptor, both commit their own nonced upload, and both delete that same
39
- * previous object — leaving the loser's upload orphaned with nothing left
40
- * recording that it ever existed. A post-commit read-back cannot repair that,
41
- * because neither writer can learn of an object it never saw; only refusing the
42
- * second write until it re-reads can.
43
- *
44
- * A row with no revision attribute was written before 0.9.0. Pinning its
45
- * *absence* is what makes the swap correct across an upgrade: the first writer
46
- * to touch such a row stamps one, and any racer still holding the pre-upgrade
47
- * observation is turned away.
48
- */
49
- export declare function revisionGuard(attribute: string, observed: ObservedRow): RevisionGuard;
50
- /**
51
- * True when the guard rejected a write — NOT evidence a competitor won: a
52
- * `PutCommand` retried after its response was lost can re-hit its own
53
- * committed row and fail identically; the two cases are indistinguishable.
54
- */
55
- export declare function isConditionalCheckFailed(error: {
56
- name?: string;
57
- }): boolean;
58
- /**
59
- * The row that turned a conditional write away, when DynamoDB attached it
60
- * (`ReturnValuesOnConditionCheckFailure: 'ALL_OLD'`). Verified against real
61
- * DynamoDB: the document client does not unmarshall an *error* payload the way
62
- * it unmarshalls a response, so the item arrives in raw AttributeValue form and
63
- * is unmarshalled here. Undefined when the rejection carries no item — the row
64
- * was deleted between the observation and the write — in which case the caller
65
- * falls back to a read.
66
- */
67
- export declare function rejectedItem(error: Error): DocItem | undefined;
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OVERWRITE_CAS_MAX_ATTEMPTS = exports.REVISION_ATTRIBUTE = void 0;
4
- exports.revisionGuard = revisionGuard;
5
- exports.isConditionalCheckFailed = isConditionalCheckFailed;
6
- exports.rejectedItem = rejectedItem;
7
- const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
8
- /**
9
- * Attribute holding a row's revision token on adapters that need one. The
10
- * checkpointer's special writes reuse their existing per-call `writeGroup`
11
- * instead, so `revisionGuard` takes the attribute name rather than assuming it.
12
- */
13
- exports.REVISION_ATTRIBUTE = 'rev';
14
- /**
15
- * Compare-and-swap attempts before a caller gives up and overwrites
16
- * unconditionally. Kept small on purpose: DynamoDB charges write capacity for a
17
- * *failed* conditional write too, sized on the existing item, so an aggressive
18
- * loop turns contention into cost. Three attempts settle every realistic race,
19
- * and the fallback is exactly the pre-0.9.0 behaviour rather than an error.
20
- */
21
- exports.OVERWRITE_CAS_MAX_ATTEMPTS = 3;
22
- const RETURN_REJECTED_ROW = { ReturnValuesOnConditionCheckFailure: 'ALL_OLD' };
23
- /**
24
- * Build the condition admitting a write only while the row still holds the
25
- * revision this caller observed.
26
- *
27
- * Without it, two concurrent overwrites both read the same previous payload
28
- * descriptor, both commit their own nonced upload, and both delete that same
29
- * previous object — leaving the loser's upload orphaned with nothing left
30
- * recording that it ever existed. A post-commit read-back cannot repair that,
31
- * because neither writer can learn of an object it never saw; only refusing the
32
- * second write until it re-reads can.
33
- *
34
- * A row with no revision attribute was written before 0.9.0. Pinning its
35
- * *absence* is what makes the swap correct across an upgrade: the first writer
36
- * to touch such a row stamps one, and any racer still holding the pre-upgrade
37
- * observation is turned away.
38
- */
39
- function revisionGuard(attribute, observed) {
40
- if (!observed.exists)
41
- return { ...RETURN_REJECTED_ROW, ConditionExpression: 'attribute_not_exists(PK)' };
42
- if (observed.revision === undefined) {
43
- return {
44
- ...RETURN_REJECTED_ROW,
45
- ConditionExpression: 'attribute_not_exists(#rev)',
46
- ExpressionAttributeNames: { '#rev': attribute },
47
- };
48
- }
49
- return {
50
- ...RETURN_REJECTED_ROW,
51
- ConditionExpression: '#rev = :rev',
52
- ExpressionAttributeNames: { '#rev': attribute },
53
- ExpressionAttributeValues: { ':rev': observed.revision },
54
- };
55
- }
56
- /**
57
- * True when the guard rejected a write — NOT evidence a competitor won: a
58
- * `PutCommand` retried after its response was lost can re-hit its own
59
- * committed row and fail identically; the two cases are indistinguishable.
60
- */
61
- function isConditionalCheckFailed(error) {
62
- return error.name === 'ConditionalCheckFailedException';
63
- }
64
- /**
65
- * The row that turned a conditional write away, when DynamoDB attached it
66
- * (`ReturnValuesOnConditionCheckFailure: 'ALL_OLD'`). Verified against real
67
- * DynamoDB: the document client does not unmarshall an *error* payload the way
68
- * it unmarshalls a response, so the item arrives in raw AttributeValue form and
69
- * is unmarshalled here. Undefined when the rejection carries no item — the row
70
- * was deleted between the observation and the write — in which case the caller
71
- * falls back to a read.
72
- */
73
- function rejectedItem(error) {
74
- const raw = error.Item;
75
- return raw === undefined ? undefined : (0, util_dynamodb_1.unmarshall)(raw);
76
- }
@@ -1,21 +0,0 @@
1
- import type { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
2
- import { type RetryOptions } from './retry';
3
- import type { WriteRequest } from './types';
4
- /** Backoff/abort options shared by the drain helpers. */
5
- export interface DrainOptions {
6
- /** The adapter's retry options, applied to every BatchWriteItem round. */
7
- retry?: RetryOptions;
8
- signal?: AbortSignal;
9
- rng?: () => number;
10
- maxRetries?: number;
11
- }
12
- /**
13
- * Submit `requests` via BatchWriteItem and re-submit UnprocessedItems with
14
- * full-jitter backoff until the batch drains. Throws
15
- * {@link BatchWriteIncompleteError} if it cannot drain within the retry budget,
16
- * or if a round's write call or backoff wait throws outright (SDK failure, or
17
- * the caller's signal aborting) — in every case `succeededCount` reflects
18
- * every earlier round's confirmed persists, and the triggering error is
19
- * attached as `cause`.
20
- */
21
- export declare function drainUnprocessedWrites(client: DynamoDBDocument, tableName: string, requests: WriteRequest[], options?: DrainOptions): Promise<void>;
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.drainUnprocessedWrites = drainUnprocessedWrites;
4
- const constants_1 = require("../constants");
5
- const errors_1 = require("../errors/errors");
6
- const backoff_1 = require("./backoff");
7
- const retry_1 = require("./retry");
8
- /**
9
- * Submit `requests` via BatchWriteItem and re-submit UnprocessedItems with
10
- * full-jitter backoff until the batch drains. Throws
11
- * {@link BatchWriteIncompleteError} if it cannot drain within the retry budget,
12
- * or if a round's write call or backoff wait throws outright (SDK failure, or
13
- * the caller's signal aborting) — in every case `succeededCount` reflects
14
- * every earlier round's confirmed persists, and the triggering error is
15
- * attached as `cause`.
16
- */
17
- async function drainUnprocessedWrites(client, tableName, requests, options = {}) {
18
- if (requests.length === 0)
19
- return;
20
- const maxRetries = options.maxRetries ?? constants_1.MAX_UNPROCESSED_RETRIES;
21
- const initialCount = requests.length;
22
- let pending = requests;
23
- let delay = constants_1.INITIAL_BACKOFF_DELAY_MS;
24
- let retries = 0;
25
- while (pending.length > 0) {
26
- try {
27
- const result = await (0, retry_1.withDynamoDBRetry)(() => client.batchWrite({ RequestItems: { [tableName]: pending } }), { ...options.retry, signal: options.signal });
28
- const leftover = result.UnprocessedItems?.[tableName] ?? [];
29
- if (leftover.length === 0)
30
- return;
31
- pending = leftover;
32
- retries += 1;
33
- if (retries > maxRetries)
34
- break;
35
- await (0, backoff_1.sleep)((0, backoff_1.fullJitter)(delay, options.rng), options.signal);
36
- delay = (0, backoff_1.nextBackoffDelay)(delay);
37
- }
38
- catch (error) {
39
- throw new errors_1.BatchWriteIncompleteError(initialCount - pending.length, pending, retries, error);
40
- }
41
- }
42
- throw new errors_1.BatchWriteIncompleteError(initialCount - pending.length, pending, maxRetries);
43
- }
@@ -1,16 +0,0 @@
1
- import type { QueryCommandInput, ScanCommandInput } from '@aws-sdk/lib-dynamodb';
2
- /**
3
- * True when a row carrying a DynamoDB TTL is at or past it. DynamoDB's sweep
4
- * can lag up to ~48 h, so every read path applies this itself; the value is
5
- * epoch seconds, the unit the `ttl` attribute uses.
6
- */
7
- export declare function isExpiredRow(row: {
8
- ttl?: number;
9
- }, nowSeconds: number): boolean;
10
- /**
11
- * Exclude expired rows server-side, ANDing any filter the query already has.
12
- * A filter never replaces the in-process {@link isExpiredRow} check — it only
13
- * trims transfer — because the two clocks (query build, row iteration) are
14
- * not the same instant and DynamoDB applies filters after `Limit`.
15
- */
16
- export declare function withoutExpired<T extends QueryCommandInput | ScanCommandInput>(params: T, nowSeconds: number): T;
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isExpiredRow = isExpiredRow;
4
- exports.withoutExpired = withoutExpired;
5
- /**
6
- * True when a row carrying a DynamoDB TTL is at or past it. DynamoDB's sweep
7
- * can lag up to ~48 h, so every read path applies this itself; the value is
8
- * epoch seconds, the unit the `ttl` attribute uses.
9
- */
10
- function isExpiredRow(row, nowSeconds) {
11
- return row.ttl !== undefined && row.ttl <= nowSeconds;
12
- }
13
- const TTL_FILTER = 'attribute_not_exists(#ttl) OR #ttl > :now';
14
- /**
15
- * Exclude expired rows server-side, ANDing any filter the query already has.
16
- * A filter never replaces the in-process {@link isExpiredRow} check — it only
17
- * trims transfer — because the two clocks (query build, row iteration) are
18
- * not the same instant and DynamoDB applies filters after `Limit`.
19
- */
20
- function withoutExpired(params, nowSeconds) {
21
- return {
22
- ...params,
23
- FilterExpression: params.FilterExpression
24
- ? `(${params.FilterExpression}) AND (${TTL_FILTER})`
25
- : TTL_FILTER,
26
- ExpressionAttributeNames: { ...params.ExpressionAttributeNames, '#ttl': 'ttl' },
27
- ExpressionAttributeValues: { ...params.ExpressionAttributeValues, ':now': nowSeconds },
28
- };
29
- }
@@ -1,24 +0,0 @@
1
- import type { RetryOptions } from './retry';
2
- import type { DocItem } from './types';
3
- /** One page of results plus the key to resume from (undefined when exhausted). */
4
- export interface PageResult {
5
- items: DocItem[];
6
- lastKey: DocItem | undefined;
7
- }
8
- /** Options shared by the paginators built on {@link paginatePages}. */
9
- export interface PaginateCoreOptions {
10
- /** The adapter's retry options, applied to every page read. */
11
- retry?: RetryOptions;
12
- signal?: AbortSignal;
13
- maxItems?: number;
14
- maxIterations?: number;
15
- }
16
- /**
17
- * Drive a paged DynamoDB read to completion, yielding each item. Continues past
18
- * empty pages, honors the abort signal before each fetch, and enforces iteration
19
- * + in-memory item caps. `fetchPage` performs one page read. When a cap is hit
20
- * while more data actually remains, throws {@link ResultTruncatedError} rather
21
- * than silently returning a partial result; pass `Infinity` caps to read to true
22
- * completion (e.g. for deletes).
23
- */
24
- export declare function paginatePages(fetchPage: (startKey: DocItem | undefined) => Promise<PageResult>, options?: PaginateCoreOptions): AsyncGenerator<DocItem>;
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paginatePages = paginatePages;
4
- const constants_1 = require("../constants");
5
- const errors_1 = require("../errors/errors");
6
- const abort_1 = require("./abort");
7
- /** Read the next page, honouring the abort signal and the iteration cap first. */
8
- async function readPage(reader, startKey) {
9
- if (reader.iterations >= reader.maxIterations) {
10
- throw new errors_1.ResultTruncatedError('maxIterations', reader.maxIterations);
11
- }
12
- if (reader.signal?.aborted)
13
- throw (0, abort_1.abortErrorFrom)(reader.signal);
14
- reader.iterations += 1;
15
- return reader.fetchPage(startKey);
16
- }
17
- /**
18
- * Yield one page's items, counting toward the shared `state.yielded` budget.
19
- * Reaching the cap with unyielded items still on the page is a truncation;
20
- * reaching it on the last item is reported as `capped` for the caller to settle.
21
- */
22
- async function* yieldPageItems(page, state, maxItems) {
23
- for (let index = 0; index < page.items.length; index++) {
24
- yield page.items[index];
25
- state.yielded += 1;
26
- if (state.yielded >= maxItems) {
27
- if (index < page.items.length - 1)
28
- throw new errors_1.ResultTruncatedError('maxItems', maxItems);
29
- return 'capped';
30
- }
31
- }
32
- return 'exhausted';
33
- }
34
- /**
35
- * Whether anything remains past `startKey`. DynamoDB returns a
36
- * `LastEvaluatedKey` whenever it stopped *evaluating* at the 1 MB boundary,
37
- * whether or not a later item passes the filter, so a trailing key alone proves
38
- * nothing: the keys are followed until a page carries an item (truncated) or
39
- * they run out (the result was complete). The probe is charged against the same
40
- * iteration budget and honours the same signal as the read itself.
41
- */
42
- async function dataRemains(reader, startKey) {
43
- let key = startKey;
44
- while (key !== undefined) {
45
- const page = await readPage(reader, key);
46
- if (page.items.length > 0)
47
- return true;
48
- key = page.lastKey;
49
- }
50
- return false;
51
- }
52
- /**
53
- * Drive a paged DynamoDB read to completion, yielding each item. Continues past
54
- * empty pages, honors the abort signal before each fetch, and enforces iteration
55
- * + in-memory item caps. `fetchPage` performs one page read. When a cap is hit
56
- * while more data actually remains, throws {@link ResultTruncatedError} rather
57
- * than silently returning a partial result; pass `Infinity` caps to read to true
58
- * completion (e.g. for deletes).
59
- */
60
- async function* paginatePages(fetchPage, options = {}) {
61
- const maxItems = options.maxItems ?? constants_1.MAX_TOTAL_ITEMS_IN_MEMORY;
62
- const reader = {
63
- fetchPage,
64
- maxIterations: options.maxIterations ?? constants_1.MAX_LOOP_ITERATIONS,
65
- iterations: 0,
66
- signal: options.signal,
67
- };
68
- const state = { yielded: 0 };
69
- let startKey;
70
- for (;;) {
71
- const page = await readPage(reader, startKey);
72
- const outcome = yield* yieldPageItems(page, state, maxItems);
73
- if (outcome === 'capped') {
74
- if (await dataRemains(reader, page.lastKey))
75
- throw new errors_1.ResultTruncatedError('maxItems', maxItems);
76
- return;
77
- }
78
- startKey = page.lastKey;
79
- if (startKey === undefined)
80
- return;
81
- }
82
- }
@@ -1,14 +0,0 @@
1
- import type { DynamoDBDocument, QueryCommandInput } from '@aws-sdk/lib-dynamodb';
2
- import { type PaginateCoreOptions } from './paginate-core';
3
- import type { DocItem } from './types';
4
- /** Options for {@link paginateQuery}. */
5
- export interface PaginateOptions extends PaginateCoreOptions {
6
- client: DynamoDBDocument;
7
- params: QueryCommandInput;
8
- }
9
- /**
10
- * Drive a DynamoDB Query across all pages, yielding each item. Follows
11
- * `LastEvaluatedKey`, honors the abort signal, wraps each page in
12
- * {@link withDynamoDBRetry}, and enforces runaway guards via the shared core.
13
- */
14
- export declare function paginateQuery(options: PaginateOptions): AsyncGenerator<DocItem>;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paginateQuery = paginateQuery;
4
- const paginate_core_1 = require("./paginate-core");
5
- const retry_1 = require("./retry");
6
- /**
7
- * Drive a DynamoDB Query across all pages, yielding each item. Follows
8
- * `LastEvaluatedKey`, honors the abort signal, wraps each page in
9
- * {@link withDynamoDBRetry}, and enforces runaway guards via the shared core.
10
- */
11
- function paginateQuery(options) {
12
- return (0, paginate_core_1.paginatePages)(async (startKey) => {
13
- const page = await (0, retry_1.withDynamoDBRetry)(() => options.client.query({ ...options.params, ExclusiveStartKey: startKey }), { ...options.retry, signal: options.signal });
14
- return {
15
- items: page.Items ?? [],
16
- lastKey: page.LastEvaluatedKey,
17
- };
18
- }, options);
19
- }