@farukada/aws-langgraph-dynamodb-ts 1.0.0-rc.2 → 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 (409) hide show
  1. package/README.md +390 -193
  2. package/dist/{backfill → cjs/backfill}/backfill.d.ts +15 -12
  3. package/dist/cjs/backfill/backfill.js +177 -0
  4. package/dist/{checkpointer → cjs/checkpointer}/actions/delete-thread.d.ts +1 -1
  5. package/dist/cjs/checkpointer/actions/delete-thread.js +26 -0
  6. package/dist/{checkpointer → cjs/checkpointer}/actions/get-tuple.d.ts +4 -3
  7. package/dist/cjs/checkpointer/actions/get-tuple.js +22 -0
  8. package/dist/{checkpointer → cjs/checkpointer}/actions/list.d.ts +7 -4
  9. package/dist/cjs/checkpointer/actions/list.js +70 -0
  10. package/dist/{checkpointer → cjs/checkpointer}/actions/put-writes.d.ts +8 -6
  11. package/dist/cjs/checkpointer/actions/put-writes.js +21 -0
  12. package/dist/{checkpointer → cjs/checkpointer}/actions/put.d.ts +21 -15
  13. package/dist/cjs/checkpointer/actions/put.js +79 -0
  14. package/dist/{checkpointer → cjs/checkpointer}/internal/delta-history.d.ts +38 -26
  15. package/dist/cjs/checkpointer/internal/delta-history.js +131 -0
  16. package/dist/{checkpointer → cjs/checkpointer}/internal/listing.d.ts +4 -4
  17. package/dist/cjs/checkpointer/internal/listing.js +104 -0
  18. package/dist/{checkpointer → cjs/checkpointer}/internal/parse.d.ts +51 -15
  19. package/dist/cjs/checkpointer/internal/parse.js +184 -0
  20. package/dist/{checkpointer → cjs/checkpointer}/internal/pending-writes.d.ts +64 -25
  21. package/dist/cjs/checkpointer/internal/pending-writes.js +241 -0
  22. package/dist/{checkpointer → cjs/checkpointer}/internal/read.d.ts +15 -10
  23. package/dist/cjs/checkpointer/internal/read.js +132 -0
  24. package/dist/{checkpointer → cjs/checkpointer}/internal/rows.d.ts +94 -21
  25. package/dist/cjs/checkpointer/internal/rows.js +356 -0
  26. package/dist/{checkpointer → cjs/checkpointer}/internal/setup.d.ts +13 -20
  27. package/dist/cjs/checkpointer/internal/setup.js +25 -0
  28. package/dist/{checkpointer → cjs/checkpointer}/saver.d.ts +72 -36
  29. package/dist/cjs/checkpointer/saver.js +56 -0
  30. package/dist/{checkpointer → cjs/checkpointer}/types.d.ts +1 -1
  31. package/dist/cjs/checkpointer/types.js +2 -0
  32. package/dist/{factory → cjs/factory}/factory.d.ts +25 -20
  33. package/dist/cjs/factory/factory.js +137 -0
  34. package/dist/{factory → cjs/factory}/types.d.ts +12 -12
  35. package/dist/cjs/factory/types.js +2 -0
  36. package/dist/{history → cjs/history}/actions/add-messages.d.ts +18 -10
  37. package/dist/cjs/history/actions/add-messages.js +17 -0
  38. package/dist/{history → cjs/history}/actions/clear.d.ts +1 -1
  39. package/dist/cjs/history/actions/clear.js +29 -0
  40. package/dist/{history → cjs/history}/actions/get-messages.d.ts +11 -9
  41. package/dist/cjs/history/actions/get-messages.js +58 -0
  42. package/dist/{history → cjs/history}/actions/list-sessions.d.ts +3 -3
  43. package/dist/cjs/history/actions/list-sessions.js +67 -0
  44. package/dist/{history → cjs/history}/actions/reconcile-count.d.ts +13 -9
  45. package/dist/cjs/history/actions/reconcile-count.js +8 -0
  46. package/dist/{history → cjs/history}/chat-message-history.d.ts +62 -30
  47. package/dist/cjs/history/chat-message-history.js +61 -0
  48. package/dist/{history → cjs/history}/internal/append.d.ts +64 -32
  49. package/dist/cjs/history/internal/append.js +267 -0
  50. package/dist/{history → cjs/history}/internal/message-read.d.ts +3 -3
  51. package/dist/cjs/history/internal/message-read.js +93 -0
  52. package/dist/{history → cjs/history}/internal/parse.d.ts +2 -2
  53. package/dist/cjs/history/internal/parse.js +113 -0
  54. package/dist/{history → cjs/history}/internal/rows.d.ts +11 -10
  55. package/dist/cjs/history/internal/rows.js +96 -0
  56. package/dist/{history → cjs/history}/internal/session.d.ts +41 -22
  57. package/dist/cjs/history/internal/session.js +296 -0
  58. package/dist/{history → cjs/history}/internal/setup.d.ts +2 -2
  59. package/dist/cjs/history/internal/setup.js +60 -0
  60. package/dist/{history → cjs/history}/session-adapter.d.ts +0 -6
  61. package/dist/cjs/history/session-adapter.js +38 -0
  62. package/dist/{history → cjs/history}/types.d.ts +18 -15
  63. package/dist/cjs/history/types.js +2 -0
  64. package/dist/{index.d.ts → cjs/index.d.ts} +27 -27
  65. package/dist/cjs/index.js +25 -0
  66. package/dist/cjs/package.json +1 -0
  67. package/dist/{shared → cjs/shared}/adapter.d.ts +27 -16
  68. package/dist/cjs/shared/adapter.js +70 -0
  69. package/dist/cjs/shared/clock.js +14 -0
  70. package/dist/{shared → cjs/shared}/codec/codec.d.ts +37 -20
  71. package/dist/cjs/shared/codec/codec.js +162 -0
  72. package/dist/{shared → cjs/shared}/codec/compression.d.ts +9 -4
  73. package/dist/cjs/shared/codec/compression.js +45 -0
  74. package/dist/cjs/shared/codec/json-serde.js +58 -0
  75. package/dist/{shared → cjs/shared}/codec/s3/client-types.d.ts +2 -1
  76. package/dist/cjs/shared/codec/s3/client-types.js +6 -0
  77. package/dist/{shared → cjs/shared}/codec/s3/client.d.ts +25 -7
  78. package/dist/cjs/shared/codec/s3/client.js +78 -0
  79. package/dist/{shared → cjs/shared}/codec/s3/config.d.ts +12 -7
  80. package/dist/cjs/shared/codec/s3/config.js +92 -0
  81. package/dist/{shared → cjs/shared}/codec/s3/lifecycle.d.ts +71 -17
  82. package/dist/cjs/shared/codec/s3/lifecycle.js +223 -0
  83. package/dist/{shared → cjs/shared}/codec/s3/offloader.d.ts +42 -29
  84. package/dist/cjs/shared/codec/s3/offloader.js +289 -0
  85. package/dist/cjs/shared/concurrency.js +31 -0
  86. package/dist/{shared → cjs/shared}/dynamodb/abort.d.ts +2 -2
  87. package/dist/cjs/shared/dynamodb/abort.js +16 -0
  88. package/dist/{shared → cjs/shared}/dynamodb/batch-write.d.ts +2 -2
  89. package/dist/cjs/shared/dynamodb/batch-write.js +79 -0
  90. package/dist/cjs/shared/dynamodb/cancellation.js +37 -0
  91. package/dist/{shared → cjs/shared}/dynamodb/client.d.ts +24 -22
  92. package/dist/cjs/shared/dynamodb/client.js +40 -0
  93. package/dist/{shared → cjs/shared}/dynamodb/idempotent-write.d.ts +64 -19
  94. package/dist/cjs/shared/dynamodb/idempotent-write.js +173 -0
  95. package/dist/{shared → cjs/shared}/dynamodb/paginate.d.ts +2 -2
  96. package/dist/cjs/shared/dynamodb/paginate.js +90 -0
  97. package/dist/{shared → cjs/shared}/dynamodb/partition-delete.d.ts +6 -6
  98. package/dist/cjs/shared/dynamodb/partition-delete.js +177 -0
  99. package/dist/{shared → cjs/shared}/dynamodb/recency-index.d.ts +27 -15
  100. package/dist/cjs/shared/dynamodb/recency-index.js +146 -0
  101. package/dist/{shared → cjs/shared}/dynamodb/retry.d.ts +37 -6
  102. package/dist/cjs/shared/dynamodb/retry.js +193 -0
  103. package/dist/cjs/shared/dynamodb/row-size.d.ts +33 -0
  104. package/dist/cjs/shared/dynamodb/row-size.js +30 -0
  105. package/dist/{shared → cjs/shared}/dynamodb/table-schema.d.ts +27 -18
  106. package/dist/cjs/shared/dynamodb/table-schema.js +52 -0
  107. package/dist/{shared → cjs/shared}/errors/base-error.d.ts +42 -7
  108. package/dist/cjs/shared/errors/base-error.js +73 -0
  109. package/dist/{shared → cjs/shared}/errors/boundary.d.ts +29 -14
  110. package/dist/cjs/shared/errors/boundary.js +61 -0
  111. package/dist/cjs/shared/errors/classify.d.ts +206 -0
  112. package/dist/cjs/shared/errors/classify.js +232 -0
  113. package/dist/{shared → cjs/shared}/errors/error-code.d.ts +17 -10
  114. package/dist/cjs/shared/errors/error-code.js +27 -0
  115. package/dist/{shared → cjs/shared}/errors/errors.d.ts +75 -9
  116. package/dist/cjs/shared/errors/errors.js +123 -0
  117. package/dist/cjs/shared/logging/logger.js +30 -0
  118. package/dist/{shared → cjs/shared}/logging/redaction.d.ts +8 -4
  119. package/dist/cjs/shared/logging/redaction.js +145 -0
  120. package/dist/{shared → cjs/shared}/logging/secret-patterns.d.ts +30 -7
  121. package/dist/cjs/shared/logging/secret-patterns.js +93 -0
  122. package/dist/cjs/shared/logging/truncate.js +31 -0
  123. package/dist/{shared → cjs/shared}/options.d.ts +27 -11
  124. package/dist/cjs/shared/options.js +2 -0
  125. package/dist/cjs/shared/ulid.js +83 -0
  126. package/dist/{shared → cjs/shared}/validation/collaborators.d.ts +21 -2
  127. package/dist/cjs/shared/validation/collaborators.js +79 -0
  128. package/dist/{shared → cjs/shared}/validation/option-shape.d.ts +7 -5
  129. package/dist/cjs/shared/validation/option-shape.js +31 -0
  130. package/dist/{shared → cjs/shared}/validation/options.d.ts +4 -4
  131. package/dist/cjs/shared/validation/options.js +166 -0
  132. package/dist/cjs/shared/validation/primitives.js +114 -0
  133. package/dist/{shared → cjs/shared}/validation/ttl.d.ts +26 -9
  134. package/dist/cjs/shared/validation/ttl.js +52 -0
  135. package/dist/{store → cjs/store}/actions/list-namespaces.d.ts +5 -5
  136. package/dist/cjs/store/actions/list-namespaces.js +92 -0
  137. package/dist/{store → cjs/store}/actions/put.d.ts +11 -4
  138. package/dist/cjs/store/actions/put.js +49 -0
  139. package/dist/{store → cjs/store}/actions/reconcile-vector-index.d.ts +5 -5
  140. package/dist/cjs/store/actions/reconcile-vector-index.js +13 -0
  141. package/dist/{store → cjs/store}/actions/search.d.ts +2 -2
  142. package/dist/cjs/store/actions/search.js +26 -0
  143. package/dist/cjs/store/internal/batch-plan.d.ts +56 -0
  144. package/dist/cjs/store/internal/batch-plan.js +32 -0
  145. package/dist/{store → cjs/store}/internal/filter.d.ts +3 -3
  146. package/dist/cjs/store/internal/filter.js +64 -0
  147. package/dist/cjs/store/internal/get-item.d.ts +77 -0
  148. package/dist/cjs/store/internal/get-item.js +58 -0
  149. package/dist/{store → cjs/store}/internal/item-write.d.ts +72 -32
  150. package/dist/cjs/store/internal/item-write.js +181 -0
  151. package/dist/{store → cjs/store}/internal/parse.d.ts +15 -10
  152. package/dist/cjs/store/internal/parse.js +180 -0
  153. package/dist/{store → cjs/store}/internal/rows.d.ts +38 -34
  154. package/dist/cjs/store/internal/rows.js +166 -0
  155. package/dist/{store → cjs/store}/internal/semantic-search.d.ts +2 -2
  156. package/dist/cjs/store/internal/semantic-search.js +211 -0
  157. package/dist/{store → cjs/store}/internal/setup.d.ts +10 -15
  158. package/dist/cjs/store/internal/setup.js +103 -0
  159. package/dist/{store → cjs/store}/internal/table-search.d.ts +5 -5
  160. package/dist/cjs/store/internal/table-search.js +123 -0
  161. package/dist/{store → cjs/store}/internal/vector-index.d.ts +26 -15
  162. package/dist/cjs/store/internal/vector-index.js +269 -0
  163. package/dist/{store → cjs/store}/store.d.ts +82 -39
  164. package/dist/cjs/store/store.js +97 -0
  165. package/dist/{store → cjs/store}/types.d.ts +25 -10
  166. package/dist/cjs/store/types.js +2 -0
  167. package/dist/cjs/store/vector-backend.js +4 -0
  168. package/dist/esm/backfill/backfill.d.ts +171 -0
  169. package/dist/esm/backfill/backfill.js +170 -0
  170. package/dist/{checkpointer/actions/delete-thread.js → esm/checkpointer/actions/delete-thread.d.ts} +4 -26
  171. package/dist/esm/checkpointer/actions/delete-thread.js +23 -0
  172. package/dist/{checkpointer/actions/get-tuple.js → esm/checkpointer/actions/get-tuple.d.ts} +7 -24
  173. package/dist/esm/checkpointer/actions/get-tuple.js +19 -0
  174. package/dist/esm/checkpointer/actions/list.d.ts +55 -0
  175. package/dist/esm/checkpointer/actions/list.js +67 -0
  176. package/dist/{checkpointer/actions/put-writes.js → esm/checkpointer/actions/put-writes.d.ts} +10 -37
  177. package/dist/esm/checkpointer/actions/put-writes.js +18 -0
  178. package/dist/esm/checkpointer/actions/put.d.ts +95 -0
  179. package/dist/esm/checkpointer/actions/put.js +75 -0
  180. package/dist/esm/checkpointer/internal/delta-history.d.ts +124 -0
  181. package/dist/esm/checkpointer/internal/delta-history.js +126 -0
  182. package/dist/{checkpointer/internal/listing.js → esm/checkpointer/internal/listing.d.ts} +22 -118
  183. package/dist/esm/checkpointer/internal/listing.js +95 -0
  184. package/dist/esm/checkpointer/internal/parse.d.ts +298 -0
  185. package/dist/esm/checkpointer/internal/parse.js +169 -0
  186. package/dist/esm/checkpointer/internal/pending-writes.d.ts +314 -0
  187. package/dist/esm/checkpointer/internal/pending-writes.js +229 -0
  188. package/dist/esm/checkpointer/internal/read.d.ts +135 -0
  189. package/dist/esm/checkpointer/internal/read.js +125 -0
  190. package/dist/esm/checkpointer/internal/rows.d.ts +644 -0
  191. package/dist/esm/checkpointer/internal/rows.js +323 -0
  192. package/dist/esm/checkpointer/internal/setup.d.ts +47 -0
  193. package/dist/esm/checkpointer/internal/setup.js +21 -0
  194. package/dist/{checkpointer/saver.js → esm/checkpointer/saver.d.ts} +84 -87
  195. package/dist/esm/checkpointer/saver.js +52 -0
  196. package/dist/esm/checkpointer/types.d.ts +51 -0
  197. package/dist/esm/checkpointer/types.js +1 -0
  198. package/dist/esm/factory/factory.d.ts +154 -0
  199. package/dist/esm/factory/factory.js +133 -0
  200. package/dist/esm/factory/types.d.ts +76 -0
  201. package/dist/esm/factory/types.js +1 -0
  202. package/dist/{history/actions/add-messages.js → esm/history/actions/add-messages.d.ts} +20 -26
  203. package/dist/esm/history/actions/add-messages.js +14 -0
  204. package/dist/{history/actions/clear.js → esm/history/actions/clear.d.ts} +4 -35
  205. package/dist/esm/history/actions/clear.js +26 -0
  206. package/dist/esm/history/actions/get-messages.d.ts +60 -0
  207. package/dist/esm/history/actions/get-messages.js +55 -0
  208. package/dist/esm/history/actions/list-sessions.d.ts +55 -0
  209. package/dist/esm/history/actions/list-sessions.js +64 -0
  210. package/dist/{history/actions/reconcile-count.js → esm/history/actions/reconcile-count.d.ts} +14 -16
  211. package/dist/esm/history/actions/reconcile-count.js +5 -0
  212. package/dist/{history/chat-message-history.js → esm/history/chat-message-history.d.ts} +76 -87
  213. package/dist/esm/history/chat-message-history.js +57 -0
  214. package/dist/esm/history/internal/append.d.ts +244 -0
  215. package/dist/esm/history/internal/append.js +259 -0
  216. package/dist/esm/history/internal/message-read.d.ts +84 -0
  217. package/dist/esm/history/internal/message-read.js +89 -0
  218. package/dist/esm/history/internal/parse.d.ts +153 -0
  219. package/dist/esm/history/internal/parse.js +105 -0
  220. package/dist/{history/internal/rows.js → esm/history/internal/rows.d.ts} +58 -112
  221. package/dist/esm/history/internal/rows.js +83 -0
  222. package/dist/esm/history/internal/session.d.ts +350 -0
  223. package/dist/esm/history/internal/session.js +285 -0
  224. package/dist/esm/history/internal/setup.d.ts +64 -0
  225. package/dist/esm/history/internal/setup.js +56 -0
  226. package/dist/{history/session-adapter.js → esm/history/session-adapter.d.ts} +25 -39
  227. package/dist/esm/history/session-adapter.js +34 -0
  228. package/dist/esm/history/types.d.ts +102 -0
  229. package/dist/esm/history/types.js +1 -0
  230. package/dist/esm/index.d.ts +53 -0
  231. package/dist/esm/index.js +10 -0
  232. package/dist/esm/shared/adapter.d.ts +146 -0
  233. package/dist/esm/shared/adapter.js +65 -0
  234. package/dist/{shared/clock.js → esm/shared/clock.d.ts} +3 -14
  235. package/dist/esm/shared/clock.js +9 -0
  236. package/dist/esm/shared/codec/codec.d.ts +336 -0
  237. package/dist/esm/shared/codec/codec.js +150 -0
  238. package/dist/esm/shared/codec/compression.d.ts +66 -0
  239. package/dist/esm/shared/codec/compression.js +40 -0
  240. package/dist/esm/shared/codec/json-serde.d.ts +80 -0
  241. package/dist/esm/shared/codec/json-serde.js +54 -0
  242. package/dist/esm/shared/codec/s3/client-types.d.ts +54 -0
  243. package/dist/esm/shared/codec/s3/client-types.js +3 -0
  244. package/dist/esm/shared/codec/s3/client.d.ts +63 -0
  245. package/dist/esm/shared/codec/s3/client.js +40 -0
  246. package/dist/{shared/codec/s3/config.js → esm/shared/codec/s3/config.d.ts} +45 -93
  247. package/dist/esm/shared/codec/s3/config.js +79 -0
  248. package/dist/esm/shared/codec/s3/lifecycle.d.ts +220 -0
  249. package/dist/esm/shared/codec/s3/lifecycle.js +214 -0
  250. package/dist/esm/shared/codec/s3/offloader.d.ts +428 -0
  251. package/dist/esm/shared/codec/s3/offloader.js +278 -0
  252. package/dist/{shared/concurrency.js → esm/shared/concurrency.d.ts} +2 -37
  253. package/dist/esm/shared/concurrency.js +27 -0
  254. package/dist/{shared/dynamodb/abort.js → esm/shared/dynamodb/abort.d.ts} +4 -16
  255. package/dist/esm/shared/dynamodb/abort.js +12 -0
  256. package/dist/esm/shared/dynamodb/batch-write.d.ts +86 -0
  257. package/dist/esm/shared/dynamodb/batch-write.js +74 -0
  258. package/dist/{shared/dynamodb/cancellation.js → esm/shared/dynamodb/cancellation.d.ts} +25 -53
  259. package/dist/esm/shared/dynamodb/cancellation.js +30 -0
  260. package/dist/{shared/dynamodb/client.js → esm/shared/dynamodb/client.d.ts} +74 -64
  261. package/dist/esm/shared/dynamodb/client.js +35 -0
  262. package/dist/{shared/dynamodb/idempotent-write.js → esm/shared/dynamodb/idempotent-write.d.ts} +172 -169
  263. package/dist/esm/shared/dynamodb/idempotent-write.js +153 -0
  264. package/dist/esm/shared/dynamodb/paginate.d.ts +111 -0
  265. package/dist/esm/shared/dynamodb/paginate.js +84 -0
  266. package/dist/esm/shared/dynamodb/partition-delete.d.ts +204 -0
  267. package/dist/esm/shared/dynamodb/partition-delete.js +171 -0
  268. package/dist/esm/shared/dynamodb/recency-index.d.ts +243 -0
  269. package/dist/esm/shared/dynamodb/recency-index.js +136 -0
  270. package/dist/esm/shared/dynamodb/retry.d.ts +317 -0
  271. package/dist/esm/shared/dynamodb/retry.js +180 -0
  272. package/dist/esm/shared/dynamodb/row-size.d.ts +33 -0
  273. package/dist/esm/shared/dynamodb/row-size.js +26 -0
  274. package/dist/{shared/dynamodb/table-schema.js → esm/shared/dynamodb/table-schema.d.ts} +57 -67
  275. package/dist/esm/shared/dynamodb/table-schema.js +43 -0
  276. package/dist/esm/shared/errors/base-error.d.ts +231 -0
  277. package/dist/esm/shared/errors/base-error.js +64 -0
  278. package/dist/esm/shared/errors/boundary.d.ts +86 -0
  279. package/dist/esm/shared/errors/boundary.js +54 -0
  280. package/dist/esm/shared/errors/classify.d.ts +206 -0
  281. package/dist/esm/shared/errors/classify.js +220 -0
  282. package/dist/{shared/errors/error-code.js → esm/shared/errors/error-code.d.ts} +39 -43
  283. package/dist/esm/shared/errors/error-code.js +24 -0
  284. package/dist/{shared/errors/errors.js → esm/shared/errors/errors.d.ts} +92 -98
  285. package/dist/esm/shared/errors/errors.js +110 -0
  286. package/dist/{shared/logging/logger.js → esm/shared/logging/logger.d.ts} +22 -52
  287. package/dist/esm/shared/logging/logger.js +25 -0
  288. package/dist/esm/shared/logging/redaction.d.ts +123 -0
  289. package/dist/esm/shared/logging/redaction.js +140 -0
  290. package/dist/{shared/logging/secret-patterns.js → esm/shared/logging/secret-patterns.d.ts} +46 -87
  291. package/dist/esm/shared/logging/secret-patterns.js +83 -0
  292. package/dist/{shared/logging/truncate.js → esm/shared/logging/truncate.d.ts} +6 -40
  293. package/dist/esm/shared/logging/truncate.js +25 -0
  294. package/dist/esm/shared/options.d.ts +100 -0
  295. package/dist/esm/shared/options.js +1 -0
  296. package/dist/{shared/ulid.js → esm/shared/ulid.d.ts} +4 -84
  297. package/dist/esm/shared/ulid.js +77 -0
  298. package/dist/{shared/validation/collaborators.js → esm/shared/validation/collaborators.d.ts} +37 -65
  299. package/dist/esm/shared/validation/collaborators.js +70 -0
  300. package/dist/{shared/validation/option-shape.js → esm/shared/validation/option-shape.d.ts} +14 -36
  301. package/dist/esm/shared/validation/option-shape.js +24 -0
  302. package/dist/esm/shared/validation/options.d.ts +145 -0
  303. package/dist/esm/shared/validation/options.js +156 -0
  304. package/dist/{shared/validation/primitives.js → esm/shared/validation/primitives.d.ts} +30 -125
  305. package/dist/esm/shared/validation/primitives.js +100 -0
  306. package/dist/esm/shared/validation/ttl.d.ts +94 -0
  307. package/dist/esm/shared/validation/ttl.js +46 -0
  308. package/dist/esm/store/actions/list-namespaces.d.ts +79 -0
  309. package/dist/esm/store/actions/list-namespaces.js +86 -0
  310. package/dist/esm/store/actions/put.d.ts +43 -0
  311. package/dist/esm/store/actions/put.js +46 -0
  312. package/dist/{store/actions/reconcile-vector-index.js → esm/store/actions/reconcile-vector-index.d.ts} +8 -16
  313. package/dist/esm/store/actions/reconcile-vector-index.js +10 -0
  314. package/dist/esm/store/actions/search.d.ts +38 -0
  315. package/dist/esm/store/actions/search.js +23 -0
  316. package/dist/esm/store/internal/batch-plan.d.ts +56 -0
  317. package/dist/esm/store/internal/batch-plan.js +28 -0
  318. package/dist/esm/store/internal/filter.d.ts +43 -0
  319. package/dist/esm/store/internal/filter.js +60 -0
  320. package/dist/esm/store/internal/get-item.d.ts +77 -0
  321. package/dist/esm/store/internal/get-item.js +54 -0
  322. package/dist/esm/store/internal/item-write.d.ts +270 -0
  323. package/dist/esm/store/internal/item-write.js +173 -0
  324. package/dist/esm/store/internal/parse.d.ts +230 -0
  325. package/dist/esm/store/internal/parse.js +169 -0
  326. package/dist/{store/internal/rows.js → esm/store/internal/rows.d.ts} +111 -199
  327. package/dist/esm/store/internal/rows.js +147 -0
  328. package/dist/esm/store/internal/semantic-search.d.ts +168 -0
  329. package/dist/esm/store/internal/semantic-search.js +200 -0
  330. package/dist/esm/store/internal/setup.d.ts +96 -0
  331. package/dist/esm/store/internal/setup.js +98 -0
  332. package/dist/esm/store/internal/table-search.d.ts +100 -0
  333. package/dist/esm/store/internal/table-search.js +119 -0
  334. package/dist/esm/store/internal/vector-index.d.ts +258 -0
  335. package/dist/esm/store/internal/vector-index.js +256 -0
  336. package/dist/{store/store.js → esm/store/store.d.ts} +99 -133
  337. package/dist/esm/store/store.js +93 -0
  338. package/dist/esm/store/types.d.ts +111 -0
  339. package/dist/esm/store/types.js +1 -0
  340. package/dist/esm/store/vector-backend.d.ts +104 -0
  341. package/dist/esm/store/vector-backend.js +1 -0
  342. package/package.json +50 -44
  343. package/dist/backfill/backfill.js +0 -393
  344. package/dist/checkpointer/actions/list.js +0 -142
  345. package/dist/checkpointer/actions/put.js +0 -195
  346. package/dist/checkpointer/internal/delta-history.js +0 -252
  347. package/dist/checkpointer/internal/parse.js +0 -372
  348. package/dist/checkpointer/internal/pending-writes.js +0 -588
  349. package/dist/checkpointer/internal/read.js +0 -264
  350. package/dist/checkpointer/internal/rows.js +0 -834
  351. package/dist/checkpointer/internal/setup.js +0 -72
  352. package/dist/checkpointer/types.js +0 -12
  353. package/dist/factory/factory.js +0 -266
  354. package/dist/factory/types.js +0 -10
  355. package/dist/history/actions/get-messages.js +0 -141
  356. package/dist/history/actions/list-sessions.js +0 -156
  357. package/dist/history/internal/append.js +0 -500
  358. package/dist/history/internal/message-read.js +0 -204
  359. package/dist/history/internal/parse.js +0 -252
  360. package/dist/history/internal/session.js +0 -628
  361. package/dist/history/internal/setup.js +0 -106
  362. package/dist/history/types.js +0 -12
  363. package/dist/index.js +0 -51
  364. package/dist/shared/adapter.js +0 -143
  365. package/dist/shared/codec/codec.js +0 -441
  366. package/dist/shared/codec/compression.js +0 -89
  367. package/dist/shared/codec/json-serde.js +0 -191
  368. package/dist/shared/codec/s3/client-types.js +0 -26
  369. package/dist/shared/codec/s3/client.js +0 -97
  370. package/dist/shared/codec/s3/lifecycle.js +0 -355
  371. package/dist/shared/codec/s3/offloader.js +0 -658
  372. package/dist/shared/dynamodb/batch-write.js +0 -173
  373. package/dist/shared/dynamodb/paginate.js +0 -188
  374. package/dist/shared/dynamodb/partition-delete.js +0 -340
  375. package/dist/shared/dynamodb/recency-index.js +0 -377
  376. package/dist/shared/dynamodb/retry.js +0 -463
  377. package/dist/shared/errors/base-error.js +0 -174
  378. package/dist/shared/errors/boundary.js +0 -143
  379. package/dist/shared/errors/classify.d.ts +0 -97
  380. package/dist/shared/errors/classify.js +0 -257
  381. package/dist/shared/logging/redaction.js +0 -316
  382. package/dist/shared/options.js +0 -11
  383. package/dist/shared/validation/options.js +0 -328
  384. package/dist/shared/validation/ttl.js +0 -132
  385. package/dist/store/actions/list-namespaces.js +0 -197
  386. package/dist/store/actions/put.js +0 -78
  387. package/dist/store/actions/search.js +0 -66
  388. package/dist/store/internal/batch-plan.d.ts +0 -26
  389. package/dist/store/internal/batch-plan.js +0 -109
  390. package/dist/store/internal/filter.js +0 -137
  391. package/dist/store/internal/get-item.d.ts +0 -45
  392. package/dist/store/internal/get-item.js +0 -115
  393. package/dist/store/internal/item-write.js +0 -463
  394. package/dist/store/internal/parse.js +0 -350
  395. package/dist/store/internal/semantic-search.js +0 -389
  396. package/dist/store/internal/setup.js +0 -223
  397. package/dist/store/internal/table-search.js +0 -213
  398. package/dist/store/internal/vector-index.js +0 -546
  399. package/dist/store/types.js +0 -15
  400. package/dist/store/vector-backend.js +0 -17
  401. /package/dist/{shared → cjs/shared}/clock.d.ts +0 -0
  402. /package/dist/{shared → cjs/shared}/codec/json-serde.d.ts +0 -0
  403. /package/dist/{shared → cjs/shared}/concurrency.d.ts +0 -0
  404. /package/dist/{shared → cjs/shared}/dynamodb/cancellation.d.ts +0 -0
  405. /package/dist/{shared → cjs/shared}/logging/logger.d.ts +0 -0
  406. /package/dist/{shared → cjs/shared}/logging/truncate.d.ts +0 -0
  407. /package/dist/{shared → cjs/shared}/ulid.d.ts +0 -0
  408. /package/dist/{shared → cjs/shared}/validation/primitives.d.ts +0 -0
  409. /package/dist/{store → cjs/store}/vector-backend.d.ts +0 -0
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Hides how a cancelled transaction says why it failed.
4
3
  *
@@ -9,21 +8,28 @@
9
8
  * condition are read here and nowhere else, so the retry layer, the error
10
9
  * classifier and the writers that act on a rejection cannot read one apart.
11
10
  */
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.getCancellationReasons = getCancellationReasons;
14
- exports.conditionalCheckFailure = conditionalCheckFailure;
15
- exports.transientCancellation = transientCancellation;
16
- exports.throttledCancellation = throttledCancellation;
17
- exports.conditionFailedAt = conditionFailedAt;
18
- /** The reason code an item that was not the cause carries. */
19
- const NOT_THE_CAUSE = 'None';
11
+ import type { AttributeValue } from '@aws-sdk/client-dynamodb';
20
12
  /**
21
- * The reason code a guard rejection arrives under inside a transaction. It is
22
- * *not* the exception name the same rejection carries outside one
23
- * (`ConditionalCheckFailedException`); the two strings are neither
24
- * interchangeable nor prefixes to test for.
13
+ * One entry of a TransactWriteItems/TransactionCanceledException's
14
+ * CancellationReasons. `Item` is the row the service attached to the item whose
15
+ * condition failed, in raw AttributeValue form — an error payload is not
16
+ * unmarshalled by the document client the way a response is.
25
17
  */
26
- const CONDITION_FAILED = 'ConditionalCheckFailed';
18
+ export interface CancellationReason {
19
+ Code?: string;
20
+ Item?: Record<string, AttributeValue>;
21
+ }
22
+ /**
23
+ * The fields a write's rejection can arrive in: the exception's own name, and
24
+ * the per-item reasons a cancelled transaction carries instead. Both are
25
+ * optional because this is an arbitrary error seen through a reader's eyes — a
26
+ * rejection outside a transaction names itself and carries no reasons, one
27
+ * inside a transaction carries reasons under a name of its own.
28
+ */
29
+ export interface RejectionFields {
30
+ name?: string;
31
+ CancellationReasons?: CancellationReason[];
32
+ }
27
33
  /**
28
34
  * The per-item reasons a `TransactWriteItems` cancellation carries.
29
35
  *
@@ -51,9 +57,7 @@ const CONDITION_FAILED = 'ConditionalCheckFailed';
51
57
  * property read raised a `TypeError` there, inside the classification the
52
58
  * retry layer makes before it decides whether to try again.
53
59
  */
54
- function getCancellationReasons(error) {
55
- return error?.CancellationReasons;
56
- }
60
+ export declare function getCancellationReasons(error: RejectionFields): CancellationReason[] | undefined;
57
61
  /**
58
62
  * The reason belonging to the one item a transaction's guard turned away.
59
63
  *
@@ -80,22 +84,7 @@ function getCancellationReasons(error) {
80
84
  *
81
85
  * Throws: nothing.
82
86
  */
83
- function conditionalCheckFailure(error) {
84
- const reasons = getCancellationReasons(error) ?? [];
85
- const causes = reasons.filter((reason) => reason.Code !== NOT_THE_CAUSE);
86
- return causes.length === 1 && causes[0].Code === CONDITION_FAILED ? causes[0] : undefined;
87
- }
88
- /**
89
- * Cancellation reason codes (from a `TransactionCanceledException`'s
90
- * `CancellationReasons`) that are transient and safe to retry. `None` marks an
91
- * item that was not the cause and is ignored.
92
- */
93
- const TRANSIENT_CANCELLATION_REASONS = [
94
- 'None',
95
- 'TransactionConflict',
96
- 'ThrottlingError',
97
- 'ProvisionedThroughputExceeded',
98
- ];
87
+ export declare function conditionalCheckFailure(error: RejectionFields): CancellationReason | undefined;
99
88
  /**
100
89
  * Whether a cancelled transaction failed only for transient reasons.
101
90
  *
@@ -107,20 +96,7 @@ const TRANSIENT_CANCELLATION_REASONS = [
107
96
  *
108
97
  * Throws: nothing, for any value; see {@link getCancellationReasons}.
109
98
  */
110
- function transientCancellation(error) {
111
- const reasons = getCancellationReasons(error);
112
- if (!reasons)
113
- return undefined;
114
- // `length > 0` is load-bearing: `.every()` is vacuously true on an empty
115
- // array, which would make a reason-less cancellation retryable — the exact
116
- // opposite of what this function documents. AWS populates one reason per
117
- // `TransactItems` entry, so an empty array should not occur; if it ever
118
- // does, the conservative answer is not to retry.
119
- return (reasons.length > 0 &&
120
- reasons.every((reason) => reason.Code === undefined || TRANSIENT_CANCELLATION_REASONS.includes(reason.Code)));
121
- }
122
- /** Cancellation reason codes that mean the request was throttled. */
123
- const THROTTLING_REASONS = ['ThrottlingError', 'ProvisionedThroughputExceeded'];
99
+ export declare function transientCancellation(error: RejectionFields): boolean | undefined;
124
100
  /**
125
101
  * Whether a cancelled transaction was throttled.
126
102
  *
@@ -132,9 +108,7 @@ const THROTTLING_REASONS = ['ThrottlingError', 'ProvisionedThroughputExceeded'];
132
108
  *
133
109
  * Throws: nothing, for any value.
134
110
  */
135
- function throttledCancellation(error) {
136
- return (getCancellationReasons(error) ?? []).some((reason) => reason.Code !== undefined && THROTTLING_REASONS.includes(reason.Code));
137
- }
111
+ export declare function throttledCancellation(error: RejectionFields): boolean;
138
112
  /**
139
113
  * Whether the item at `index` of a cancelled transaction failed its condition.
140
114
  *
@@ -147,6 +121,4 @@ function throttledCancellation(error) {
147
121
  *
148
122
  * Throws: nothing, for any value.
149
123
  */
150
- function conditionFailedAt(error, index) {
151
- return getCancellationReasons(error)?.[index]?.Code === CONDITION_FAILED;
152
- }
124
+ export declare function conditionFailedAt(error: RejectionFields, index: number): boolean;
@@ -0,0 +1,30 @@
1
+ const NOT_THE_CAUSE = 'None';
2
+ const CONDITION_FAILED = 'ConditionalCheckFailed';
3
+ export function getCancellationReasons(error) {
4
+ return error?.CancellationReasons;
5
+ }
6
+ export function conditionalCheckFailure(error) {
7
+ const reasons = getCancellationReasons(error) ?? [];
8
+ const causes = reasons.filter((reason) => reason.Code !== NOT_THE_CAUSE);
9
+ return causes.length === 1 && causes[0].Code === CONDITION_FAILED ? causes[0] : undefined;
10
+ }
11
+ const TRANSIENT_CANCELLATION_REASONS = [
12
+ 'None',
13
+ 'TransactionConflict',
14
+ 'ThrottlingError',
15
+ 'ProvisionedThroughputExceeded',
16
+ ];
17
+ export function transientCancellation(error) {
18
+ const reasons = getCancellationReasons(error);
19
+ if (!reasons)
20
+ return undefined;
21
+ return (reasons.length > 0 &&
22
+ reasons.every((reason) => reason.Code === undefined || TRANSIENT_CANCELLATION_REASONS.includes(reason.Code)));
23
+ }
24
+ const THROTTLING_REASONS = ['ThrottlingError', 'ProvisionedThroughputExceeded'];
25
+ export function throttledCancellation(error) {
26
+ return (getCancellationReasons(error) ?? []).some((reason) => reason.Code !== undefined && THROTTLING_REASONS.includes(reason.Code));
27
+ }
28
+ export function conditionFailedAt(error, index) {
29
+ return getCancellationReasons(error)?.[index]?.Code === CONDITION_FAILED;
30
+ }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Hides the DynamoDB client: the part of the DocumentClient this package calls,
4
3
  * the row shapes that part speaks, and how a client this package builds bounds
@@ -10,12 +9,9 @@
10
9
  * and a socket timeout are set, and the one place that knows whether the
11
10
  * adapter owns the client it holds.
12
11
  */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.DEFAULT_SOCKET_TIMEOUT_MS = exports.DEFAULT_REQUEST_TIMEOUT_MS = void 0;
15
- exports.resolveDynamoDBClient = resolveDynamoDBClient;
16
- exports.warnOnStackedRetries = warnOnStackedRetries;
17
- const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
18
- const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
12
+ import { DynamoDBClient, type DynamoDBClientConfig } from '@aws-sdk/client-dynamodb';
13
+ import { DynamoDBDocument, type NativeAttributeValue, type TransactWriteCommandInput } from '@aws-sdk/lib-dynamodb';
14
+ import type { Logger } from '../logging/logger.js';
19
15
  /**
20
16
  * How long one request attempt may take on a client this library builds
21
17
  * (10 seconds) before the SDK's request handler destroys it and rejects with a
@@ -26,16 +22,17 @@ const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
26
22
  * of them defaults to 0 — a hung socket holds that attempt open forever and
27
23
  * the write lifetime bounds nothing.
28
24
  *
29
- * Measured, not picked. Across the fan-out widths this package documents, the
30
- * worst interval the handler itself saw — socket acquisition including the
31
- * wait behind the agent's fifty sockets, connect, request write and
32
- * time-to-first-response-header — was 0.92 s, at a thousand concurrent writes
33
- * of 20 KB values, and ten seconds is roughly eleven times that. The asymmetry
34
- * settles the close call: too large leaves one attempt hanging for at most ten
35
- * seconds, which the write lifetime's own headroom absorbs, while too small
36
- * turns a healthy wide fan-out into a retry storm.
25
+ * Measured, not picked. At a thousand concurrent writes of 20 KB values —
26
+ * wider than one call's own fan-out now runs, but within reach of several
27
+ * calls sharing one client — the worst interval the handler itself saw —
28
+ * socket acquisition including the wait behind the agent's fifty sockets,
29
+ * connect, request write and time-to-first-response-header — was 0.92 s, and
30
+ * ten seconds is roughly eleven times that. The asymmetry settles the close
31
+ * call: too large leaves one attempt hanging for at most ten seconds, which
32
+ * the write lifetime's own headroom absorbs, while too small turns a healthy
33
+ * wide fan-out into a retry storm.
37
34
  */
38
- exports.DEFAULT_REQUEST_TIMEOUT_MS = 10_000;
35
+ export declare const DEFAULT_REQUEST_TIMEOUT_MS = 10000;
39
36
  /**
40
37
  * How long a socket may sit idle (5 seconds) on a client this library builds
41
38
  * before the request handler destroys the request. Which error that surfaces
@@ -60,7 +57,18 @@ exports.DEFAULT_REQUEST_TIMEOUT_MS = 10_000;
60
57
  * threshold so raising it fails loudly instead of disabling the only bound a
61
58
  * stalled transfer has.
62
59
  */
63
- exports.DEFAULT_SOCKET_TIMEOUT_MS = 5_000;
60
+ export declare const DEFAULT_SOCKET_TIMEOUT_MS = 5000;
61
+ /** A resolved DynamoDB client plus its ownership flag. */
62
+ export interface ResolvedDynamoDBClient {
63
+ ddbClient: DynamoDBClient | undefined;
64
+ client: DynamoDBDocumentLike;
65
+ ownsClient: boolean;
66
+ }
67
+ /** Options for {@link resolveDynamoDBClient}. */
68
+ export interface ResolveClientOptions {
69
+ client?: DynamoDBDocumentLike;
70
+ clientConfig?: DynamoDBClientConfig;
71
+ }
64
72
  /**
65
73
  * The DocumentClient an adapter will use, and whether it owns it.
66
74
  *
@@ -82,38 +90,11 @@ exports.DEFAULT_SOCKET_TIMEOUT_MS = 5_000;
82
90
  * bounds how long one attempt may run, which `maxAttempts` alone does not. A
83
91
  * `requestHandler` in `clientConfig` replaces that default whole rather than
84
92
  * merging with it — the documented escape hatch, and equally the documented
85
- * way to give up the bound. An injected client keeps whatever it was built
86
- * with — see {@link warnOnStackedRetries}.
93
+ * way to give up the bound. Either key named with `undefined` overrides
94
+ * nothing and keeps its default. An injected client keeps whatever it was
95
+ * built with — see {@link warnOnStackedRetries}.
87
96
  */
88
- function resolveDynamoDBClient(options) {
89
- if (options.client) {
90
- return { ddbClient: undefined, client: options.client, ownsClient: false };
91
- }
92
- const createClient = options.createClient ?? ((config) => new client_dynamodb_1.DynamoDBClient(config));
93
- // `throwOnRequestTimeout` is what makes the request timeout a bound: without
94
- // it the handler only logs a warning when the timeout is breached.
95
- // `socketTimeout` is here because `requestTimeout` stops applying the moment
96
- // response *headers* arrive — the handler resolves there and clears its
97
- // timers — so it says nothing about a response body that then stalls
98
- // mid-stream, and an idle timer does. No `connectionTimeout` is passed,
99
- // deliberately — its timer starts when the request is created and is
100
- // cleared only when the agent *assigns* a socket, so the time a request
101
- // spends queued behind `maxSockets` counts against it. At the thousand-wide
102
- // fan-out this package documents, any value short enough to be useful
103
- // destroys healthy writes that this library then retries, and any value
104
- // long enough to be safe bounds nothing the request timeout does not
105
- // already bound.
106
- const ddbClient = createClient({
107
- maxAttempts: 1,
108
- requestHandler: {
109
- requestTimeout: exports.DEFAULT_REQUEST_TIMEOUT_MS,
110
- socketTimeout: exports.DEFAULT_SOCKET_TIMEOUT_MS,
111
- throwOnRequestTimeout: true,
112
- },
113
- ...options.clientConfig,
114
- });
115
- return { ddbClient, client: lib_dynamodb_1.DynamoDBDocument.from(ddbClient), ownsClient: true };
116
- }
97
+ export declare function resolveDynamoDBClient(options: ResolveClientOptions): ResolvedDynamoDBClient;
117
98
  /**
118
99
  * Warn once when an injected client keeps the SDK's own retries.
119
100
  *
@@ -149,19 +130,48 @@ function resolveDynamoDBClient(options) {
149
130
  * handed over, so one without a handler timeout leaves a single attempt
150
131
  * unbounded even with the SDK's retries switched off.
151
132
  */
152
- async function warnOnStackedRetries(client, logger) {
153
- const report = client.config
154
- ?.maxAttempts;
155
- if (typeof report !== 'function')
156
- return;
157
- try {
158
- const maxAttempts = await report();
159
- if (maxAttempts > 1) {
160
- logger.warn("injected DynamoDB client keeps the SDK's own retries; they stack inside this library's " +
161
- 'retry budget — construct it with maxAttempts: 1 unless that is intended', { maxAttempts });
162
- }
163
- }
164
- catch {
165
- // A client that cannot report its retry setting is left alone.
166
- }
167
- }
133
+ export declare function warnOnStackedRetries(client: DynamoDBDocumentLike, logger: Logger): Promise<void>;
134
+ /**
135
+ * A row, or a key, as the DocumentClient returns and takes it: attribute names
136
+ * mapped to values that nothing has checked yet. Each feature's row parser
137
+ * turns one into that feature's row type.
138
+ */
139
+ export type AttributeMap = Record<string, NativeAttributeValue>;
140
+ /**
141
+ * A single `BatchWriteItem` write request, as the document client takes it —
142
+ * a `PutRequest` carrying the item, or a `DeleteRequest` carrying the key:
143
+ * the shape of each entry a `BATCH_WRITE_INCOMPLETE` error's
144
+ * `details.unprocessed` carries, verbatim, so a caller can re-submit it.
145
+ */
146
+ export type WriteRequest = {
147
+ PutRequest: {
148
+ Item: Record<string, NativeAttributeValue>;
149
+ };
150
+ } | {
151
+ DeleteRequest: {
152
+ Key: Record<string, NativeAttributeValue>;
153
+ };
154
+ };
155
+ /** One action of a `TransactWriteItems` request, as the document client takes it. */
156
+ export type TransactAction = NonNullable<TransactWriteCommandInput['TransactItems']>[number];
157
+ /**
158
+ * The DocumentClient surface this library uses, named by shape rather than by
159
+ * identity. A `DynamoDBDocument` satisfies it, and so does a client built from
160
+ * a different copy of `@aws-sdk/lib-dynamodb`.
161
+ *
162
+ * That second case is the reason it exists. A consumer pinned to an older SDK
163
+ * than this package depends on gets a second, newer copy nested under the
164
+ * package; naming `DynamoDBDocument` in an option type would name *that* copy,
165
+ * and the client the consumer built is then a different type with the same
166
+ * name — refused at compile time for a method this library never calls, on the
167
+ * injection path the documentation recommends. Injection always worked at
168
+ * runtime; only the compiler stood in the way.
169
+ *
170
+ * The members are the eight the runtime collaborator check already requires,
171
+ * pinned equal to that list by a test — a client this type accepts and the
172
+ * constructor then rejects, or the reverse, would be worse than either rule
173
+ * alone. Picking them off `DynamoDBDocument` keeps each signature the SDK's
174
+ * own, so the internals stay exactly as type-safe as they were and the
175
+ * signatures cannot drift from the SDK this package installs.
176
+ */
177
+ export type DynamoDBDocumentLike = Pick<DynamoDBDocument, 'batchWrite' | 'delete' | 'get' | 'put' | 'query' | 'scan' | 'transactWrite' | 'update'>;
@@ -0,0 +1,35 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { DynamoDBDocument, } from '@aws-sdk/lib-dynamodb';
3
+ export const DEFAULT_REQUEST_TIMEOUT_MS = 10_000;
4
+ export const DEFAULT_SOCKET_TIMEOUT_MS = 5_000;
5
+ export function resolveDynamoDBClient(options) {
6
+ if (options.client) {
7
+ return { ddbClient: undefined, client: options.client, ownsClient: false };
8
+ }
9
+ const createClient = options.createClient ?? ((config) => new DynamoDBClient(config));
10
+ const ddbClient = createClient({
11
+ ...options.clientConfig,
12
+ maxAttempts: options.clientConfig?.maxAttempts ?? 1,
13
+ requestHandler: options.clientConfig?.requestHandler ?? {
14
+ requestTimeout: DEFAULT_REQUEST_TIMEOUT_MS,
15
+ socketTimeout: DEFAULT_SOCKET_TIMEOUT_MS,
16
+ throwOnRequestTimeout: true,
17
+ },
18
+ });
19
+ return { ddbClient, client: DynamoDBDocument.from(ddbClient), ownsClient: true };
20
+ }
21
+ export async function warnOnStackedRetries(client, logger) {
22
+ const report = client.config
23
+ ?.maxAttempts;
24
+ if (typeof report !== 'function')
25
+ return;
26
+ try {
27
+ const maxAttempts = await report();
28
+ if (maxAttempts > 1) {
29
+ logger.warn("injected DynamoDB client keeps the SDK's own retries; they stack inside this library's " +
30
+ 'retry budget — construct it with maxAttempts: 1 unless that is intended', { maxAttempts });
31
+ }
32
+ }
33
+ catch {
34
+ }
35
+ }