@farukada/aws-langgraph-dynamodb-ts 0.9.0 → 1.0.0-rc.2

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 (512) hide show
  1. package/README.md +1720 -154
  2. package/dist/backfill/backfill.d.ts +168 -0
  3. package/dist/backfill/backfill.js +393 -0
  4. package/dist/checkpointer/actions/delete-thread.d.ts +47 -6
  5. package/dist/checkpointer/actions/delete-thread.js +58 -21
  6. package/dist/checkpointer/actions/get-tuple.d.ts +29 -4
  7. package/dist/checkpointer/actions/get-tuple.js +44 -10
  8. package/dist/checkpointer/actions/list.d.ts +46 -4
  9. package/dist/checkpointer/actions/list.js +121 -66
  10. package/dist/checkpointer/actions/put-writes.d.ts +41 -9
  11. package/dist/checkpointer/actions/put-writes.js +62 -77
  12. package/dist/checkpointer/actions/put.d.ts +83 -4
  13. package/dist/checkpointer/actions/put.js +177 -25
  14. package/dist/checkpointer/internal/delta-history.d.ts +112 -0
  15. package/dist/checkpointer/internal/delta-history.js +252 -0
  16. package/dist/checkpointer/internal/listing.d.ts +149 -0
  17. package/dist/checkpointer/internal/listing.js +245 -0
  18. package/dist/checkpointer/internal/parse.d.ts +262 -0
  19. package/dist/checkpointer/internal/parse.js +372 -0
  20. package/dist/checkpointer/internal/pending-writes.d.ts +275 -0
  21. package/dist/checkpointer/internal/pending-writes.js +588 -0
  22. package/dist/checkpointer/internal/read.d.ts +130 -0
  23. package/dist/checkpointer/internal/read.js +264 -0
  24. package/dist/checkpointer/internal/rows.d.ts +571 -0
  25. package/dist/checkpointer/internal/rows.js +834 -0
  26. package/dist/checkpointer/internal/setup.d.ts +42 -19
  27. package/dist/checkpointer/internal/setup.js +65 -29
  28. package/dist/checkpointer/saver.d.ts +256 -16
  29. package/dist/checkpointer/saver.js +275 -29
  30. package/dist/checkpointer/types.d.ts +39 -39
  31. package/dist/checkpointer/types.js +10 -1
  32. package/dist/factory/factory.d.ts +134 -28
  33. package/dist/factory/factory.js +240 -21
  34. package/dist/factory/types.d.ts +76 -0
  35. package/dist/factory/types.js +10 -0
  36. package/dist/history/actions/add-messages.d.ts +31 -4
  37. package/dist/history/actions/add-messages.js +38 -58
  38. package/dist/history/actions/clear.d.ts +49 -6
  39. package/dist/history/actions/clear.js +66 -14
  40. package/dist/history/actions/get-messages.d.ts +54 -6
  41. package/dist/history/actions/get-messages.js +126 -43
  42. package/dist/history/actions/list-sessions.d.ts +52 -10
  43. package/dist/history/actions/list-sessions.js +139 -40
  44. package/dist/history/actions/reconcile-count.d.ts +42 -10
  45. package/dist/history/actions/reconcile-count.js +45 -45
  46. package/dist/history/chat-message-history.d.ts +220 -33
  47. package/dist/history/chat-message-history.js +240 -43
  48. package/dist/history/internal/append.d.ts +212 -0
  49. package/dist/history/internal/append.js +500 -0
  50. package/dist/history/internal/message-read.d.ts +84 -0
  51. package/dist/history/internal/message-read.js +204 -0
  52. package/dist/history/internal/parse.d.ts +153 -0
  53. package/dist/history/internal/parse.js +252 -0
  54. package/dist/history/internal/rows.d.ts +195 -0
  55. package/dist/history/internal/rows.js +250 -0
  56. package/dist/history/internal/session.d.ts +331 -0
  57. package/dist/history/internal/session.js +628 -0
  58. package/dist/history/internal/setup.d.ts +52 -17
  59. package/dist/history/internal/setup.js +92 -21
  60. package/dist/history/session-adapter.d.ts +102 -7
  61. package/dist/history/session-adapter.js +103 -9
  62. package/dist/history/types.d.ts +80 -29
  63. package/dist/history/types.js +10 -1
  64. package/dist/index.d.ts +42 -11
  65. package/dist/index.js +33 -12
  66. package/dist/shared/adapter.d.ts +135 -0
  67. package/dist/shared/adapter.js +143 -0
  68. package/dist/shared/clock.d.ts +51 -2
  69. package/dist/shared/clock.js +57 -2
  70. package/dist/shared/codec/codec.d.ts +288 -13
  71. package/dist/shared/codec/codec.js +416 -19
  72. package/dist/shared/codec/compression.d.ts +43 -7
  73. package/dist/shared/codec/compression.js +53 -13
  74. package/dist/shared/codec/json-serde.d.ts +76 -4
  75. package/dist/shared/codec/json-serde.js +181 -8
  76. package/dist/shared/codec/s3/client-types.d.ts +53 -0
  77. package/dist/shared/codec/s3/client-types.js +26 -0
  78. package/dist/shared/codec/s3/client.d.ts +43 -10
  79. package/dist/shared/codec/s3/client.js +82 -9
  80. package/dist/shared/codec/s3/config.d.ts +242 -11
  81. package/dist/shared/codec/s3/config.js +293 -11
  82. package/dist/shared/codec/s3/lifecycle.d.ts +164 -6
  83. package/dist/shared/codec/s3/lifecycle.js +335 -27
  84. package/dist/shared/codec/s3/offloader.d.ts +393 -18
  85. package/dist/shared/codec/s3/offloader.js +595 -37
  86. package/dist/shared/concurrency.d.ts +43 -0
  87. package/dist/shared/concurrency.js +78 -0
  88. package/dist/shared/dynamodb/abort.d.ts +47 -0
  89. package/dist/shared/dynamodb/abort.js +59 -0
  90. package/dist/shared/dynamodb/batch-write.d.ts +77 -14
  91. package/dist/shared/dynamodb/batch-write.js +146 -27
  92. package/dist/shared/dynamodb/cancellation.d.ts +121 -4
  93. package/dist/shared/dynamodb/cancellation.js +147 -3
  94. package/dist/shared/dynamodb/client.d.ts +162 -8
  95. package/dist/shared/dynamodb/client.js +153 -5
  96. package/dist/shared/dynamodb/idempotent-write.d.ts +551 -0
  97. package/dist/shared/dynamodb/idempotent-write.js +593 -0
  98. package/dist/shared/dynamodb/paginate.d.ts +105 -9
  99. package/dist/shared/dynamodb/paginate.js +175 -7
  100. package/dist/shared/dynamodb/partition-delete.d.ts +185 -14
  101. package/dist/shared/dynamodb/partition-delete.js +314 -44
  102. package/dist/shared/dynamodb/recency-index.d.ts +231 -0
  103. package/dist/shared/dynamodb/recency-index.js +377 -0
  104. package/dist/shared/dynamodb/retry.d.ts +276 -8
  105. package/dist/shared/dynamodb/retry.js +433 -23
  106. package/dist/shared/dynamodb/table-schema.d.ts +190 -0
  107. package/dist/shared/dynamodb/table-schema.js +209 -0
  108. package/dist/shared/errors/base-error.d.ts +184 -10
  109. package/dist/shared/errors/base-error.js +160 -14
  110. package/dist/shared/errors/boundary.d.ts +71 -0
  111. package/dist/shared/errors/boundary.js +143 -0
  112. package/dist/shared/errors/classify.d.ts +97 -0
  113. package/dist/shared/errors/classify.js +257 -0
  114. package/dist/shared/errors/error-code.d.ts +77 -2
  115. package/dist/shared/errors/error-code.js +83 -1
  116. package/dist/shared/errors/errors.d.ts +158 -59
  117. package/dist/shared/errors/errors.js +219 -92
  118. package/dist/shared/logging/logger.d.ts +69 -3
  119. package/dist/shared/logging/logger.js +97 -3
  120. package/dist/shared/logging/redaction.d.ts +92 -8
  121. package/dist/shared/logging/redaction.js +273 -17
  122. package/dist/shared/logging/secret-patterns.d.ts +149 -19
  123. package/dist/shared/logging/secret-patterns.js +188 -27
  124. package/dist/shared/logging/truncate.d.ts +197 -0
  125. package/dist/shared/logging/truncate.js +231 -0
  126. package/dist/shared/options.d.ts +59 -7
  127. package/dist/shared/options.js +9 -1
  128. package/dist/shared/ulid.d.ts +77 -7
  129. package/dist/shared/ulid.js +103 -8
  130. package/dist/shared/validation/collaborators.d.ts +141 -0
  131. package/dist/shared/validation/collaborators.js +188 -0
  132. package/dist/shared/validation/option-shape.d.ts +89 -0
  133. package/dist/shared/validation/option-shape.js +113 -0
  134. package/dist/shared/validation/options.d.ts +145 -0
  135. package/dist/shared/validation/options.js +328 -0
  136. package/dist/shared/validation/primitives.d.ts +288 -21
  137. package/dist/shared/validation/primitives.js +353 -50
  138. package/dist/shared/validation/ttl.d.ts +66 -10
  139. package/dist/shared/validation/ttl.js +113 -15
  140. package/dist/store/actions/list-namespaces.d.ts +76 -6
  141. package/dist/store/actions/list-namespaces.js +166 -24
  142. package/dist/store/actions/put.d.ts +33 -8
  143. package/dist/store/actions/put.js +53 -60
  144. package/dist/store/actions/reconcile-vector-index.d.ts +31 -10
  145. package/dist/store/actions/reconcile-vector-index.js +34 -15
  146. package/dist/store/actions/search.d.ts +34 -6
  147. package/dist/store/actions/search.js +56 -51
  148. package/dist/store/internal/batch-plan.d.ts +26 -0
  149. package/dist/store/internal/batch-plan.js +109 -0
  150. package/dist/store/internal/filter.d.ts +36 -3
  151. package/dist/store/internal/filter.js +66 -15
  152. package/dist/store/internal/get-item.d.ts +45 -0
  153. package/dist/store/internal/get-item.js +115 -0
  154. package/dist/store/internal/item-write.d.ts +230 -0
  155. package/dist/store/internal/item-write.js +463 -0
  156. package/dist/store/internal/parse.d.ts +225 -0
  157. package/dist/store/internal/parse.js +350 -0
  158. package/dist/store/internal/rows.d.ts +355 -0
  159. package/dist/store/internal/rows.js +447 -0
  160. package/dist/store/internal/semantic-search.d.ts +161 -6
  161. package/dist/store/internal/semantic-search.js +360 -18
  162. package/dist/store/internal/setup.d.ts +77 -20
  163. package/dist/store/internal/setup.js +178 -47
  164. package/dist/store/internal/table-search.d.ts +100 -0
  165. package/dist/store/internal/table-search.js +213 -0
  166. package/dist/store/internal/vector-index.d.ts +247 -0
  167. package/dist/store/internal/vector-index.js +546 -0
  168. package/dist/store/store.d.ts +270 -17
  169. package/dist/store/store.js +329 -38
  170. package/dist/store/types.d.ts +76 -26
  171. package/dist/store/types.js +13 -1
  172. package/dist/store/vector-backend.d.ts +64 -4
  173. package/dist/store/vector-backend.js +15 -1
  174. package/package.json +58 -36
  175. package/dist/checkpointer/actions/delete-thread.d.ts.map +0 -1
  176. package/dist/checkpointer/actions/delete-thread.js.map +0 -1
  177. package/dist/checkpointer/actions/get-tuple.d.ts.map +0 -1
  178. package/dist/checkpointer/actions/get-tuple.js.map +0 -1
  179. package/dist/checkpointer/actions/list.d.ts.map +0 -1
  180. package/dist/checkpointer/actions/list.js.map +0 -1
  181. package/dist/checkpointer/actions/put-writes.d.ts.map +0 -1
  182. package/dist/checkpointer/actions/put-writes.js.map +0 -1
  183. package/dist/checkpointer/actions/put.d.ts.map +0 -1
  184. package/dist/checkpointer/actions/put.js.map +0 -1
  185. package/dist/checkpointer/internal/assemble.d.ts +0 -10
  186. package/dist/checkpointer/internal/assemble.d.ts.map +0 -1
  187. package/dist/checkpointer/internal/assemble.js +0 -37
  188. package/dist/checkpointer/internal/assemble.js.map +0 -1
  189. package/dist/checkpointer/internal/configurable.d.ts +0 -13
  190. package/dist/checkpointer/internal/configurable.d.ts.map +0 -1
  191. package/dist/checkpointer/internal/configurable.js +0 -23
  192. package/dist/checkpointer/internal/configurable.js.map +0 -1
  193. package/dist/checkpointer/internal/fetch.d.ts +0 -10
  194. package/dist/checkpointer/internal/fetch.d.ts.map +0 -1
  195. package/dist/checkpointer/internal/fetch.js +0 -46
  196. package/dist/checkpointer/internal/fetch.js.map +0 -1
  197. package/dist/checkpointer/internal/filter-match.d.ts +0 -12
  198. package/dist/checkpointer/internal/filter-match.d.ts.map +0 -1
  199. package/dist/checkpointer/internal/filter-match.js +0 -14
  200. package/dist/checkpointer/internal/filter-match.js.map +0 -1
  201. package/dist/checkpointer/internal/item-reader.d.ts +0 -55
  202. package/dist/checkpointer/internal/item-reader.d.ts.map +0 -1
  203. package/dist/checkpointer/internal/item-reader.js +0 -88
  204. package/dist/checkpointer/internal/item-reader.js.map +0 -1
  205. package/dist/checkpointer/internal/item-writer.d.ts +0 -26
  206. package/dist/checkpointer/internal/item-writer.d.ts.map +0 -1
  207. package/dist/checkpointer/internal/item-writer.js +0 -92
  208. package/dist/checkpointer/internal/item-writer.js.map +0 -1
  209. package/dist/checkpointer/internal/keys.d.ts +0 -31
  210. package/dist/checkpointer/internal/keys.d.ts.map +0 -1
  211. package/dist/checkpointer/internal/keys.js +0 -87
  212. package/dist/checkpointer/internal/keys.js.map +0 -1
  213. package/dist/checkpointer/internal/query.d.ts +0 -20
  214. package/dist/checkpointer/internal/query.d.ts.map +0 -1
  215. package/dist/checkpointer/internal/query.js +0 -36
  216. package/dist/checkpointer/internal/query.js.map +0 -1
  217. package/dist/checkpointer/internal/setup.d.ts.map +0 -1
  218. package/dist/checkpointer/internal/setup.js.map +0 -1
  219. package/dist/checkpointer/internal/special-write-cas.d.ts +0 -30
  220. package/dist/checkpointer/internal/special-write-cas.d.ts.map +0 -1
  221. package/dist/checkpointer/internal/special-write-cas.js +0 -104
  222. package/dist/checkpointer/internal/special-write-cas.js.map +0 -1
  223. package/dist/checkpointer/internal/special-write-cleanup.d.ts +0 -24
  224. package/dist/checkpointer/internal/special-write-cleanup.d.ts.map +0 -1
  225. package/dist/checkpointer/internal/special-write-cleanup.js +0 -47
  226. package/dist/checkpointer/internal/special-write-cleanup.js.map +0 -1
  227. package/dist/checkpointer/internal/special-write-verify.d.ts +0 -54
  228. package/dist/checkpointer/internal/special-write-verify.d.ts.map +0 -1
  229. package/dist/checkpointer/internal/special-write-verify.js +0 -65
  230. package/dist/checkpointer/internal/special-write-verify.js.map +0 -1
  231. package/dist/checkpointer/internal/validation.d.ts +0 -13
  232. package/dist/checkpointer/internal/validation.d.ts.map +0 -1
  233. package/dist/checkpointer/internal/validation.js +0 -30
  234. package/dist/checkpointer/internal/validation.js.map +0 -1
  235. package/dist/checkpointer/internal/write-guard.d.ts +0 -13
  236. package/dist/checkpointer/internal/write-guard.d.ts.map +0 -1
  237. package/dist/checkpointer/internal/write-guard.js +0 -39
  238. package/dist/checkpointer/internal/write-guard.js.map +0 -1
  239. package/dist/checkpointer/internal/write-index.d.ts +0 -37
  240. package/dist/checkpointer/internal/write-index.d.ts.map +0 -1
  241. package/dist/checkpointer/internal/write-index.js +0 -42
  242. package/dist/checkpointer/internal/write-index.js.map +0 -1
  243. package/dist/checkpointer/saver.d.ts.map +0 -1
  244. package/dist/checkpointer/saver.js.map +0 -1
  245. package/dist/checkpointer/types.d.ts.map +0 -1
  246. package/dist/checkpointer/types.js.map +0 -1
  247. package/dist/factory/factory.d.ts.map +0 -1
  248. package/dist/factory/factory.js.map +0 -1
  249. package/dist/history/actions/add-messages.d.ts.map +0 -1
  250. package/dist/history/actions/add-messages.js.map +0 -1
  251. package/dist/history/actions/clear.d.ts.map +0 -1
  252. package/dist/history/actions/clear.js.map +0 -1
  253. package/dist/history/actions/get-messages.d.ts.map +0 -1
  254. package/dist/history/actions/get-messages.js.map +0 -1
  255. package/dist/history/actions/list-sessions.d.ts.map +0 -1
  256. package/dist/history/actions/list-sessions.js.map +0 -1
  257. package/dist/history/actions/reconcile-count.d.ts.map +0 -1
  258. package/dist/history/actions/reconcile-count.js.map +0 -1
  259. package/dist/history/chat-message-history.d.ts.map +0 -1
  260. package/dist/history/chat-message-history.js.map +0 -1
  261. package/dist/history/internal/append-saga.d.ts +0 -20
  262. package/dist/history/internal/append-saga.d.ts.map +0 -1
  263. package/dist/history/internal/append-saga.js +0 -35
  264. package/dist/history/internal/append-saga.js.map +0 -1
  265. package/dist/history/internal/compensation.d.ts +0 -21
  266. package/dist/history/internal/compensation.d.ts.map +0 -1
  267. package/dist/history/internal/compensation.js +0 -84
  268. package/dist/history/internal/compensation.js.map +0 -1
  269. package/dist/history/internal/item-mapper.d.ts +0 -12
  270. package/dist/history/internal/item-mapper.d.ts.map +0 -1
  271. package/dist/history/internal/item-mapper.js +0 -33
  272. package/dist/history/internal/item-mapper.js.map +0 -1
  273. package/dist/history/internal/keys.d.ts +0 -17
  274. package/dist/history/internal/keys.d.ts.map +0 -1
  275. package/dist/history/internal/keys.js +0 -49
  276. package/dist/history/internal/keys.js.map +0 -1
  277. package/dist/history/internal/message-chunker.d.ts +0 -14
  278. package/dist/history/internal/message-chunker.d.ts.map +0 -1
  279. package/dist/history/internal/message-chunker.js +0 -68
  280. package/dist/history/internal/message-chunker.js.map +0 -1
  281. package/dist/history/internal/message-transaction.d.ts +0 -26
  282. package/dist/history/internal/message-transaction.d.ts.map +0 -1
  283. package/dist/history/internal/message-transaction.js +0 -60
  284. package/dist/history/internal/message-transaction.js.map +0 -1
  285. package/dist/history/internal/query.d.ts +0 -10
  286. package/dist/history/internal/query.d.ts.map +0 -1
  287. package/dist/history/internal/query.js +0 -31
  288. package/dist/history/internal/query.js.map +0 -1
  289. package/dist/history/internal/session-count.d.ts +0 -41
  290. package/dist/history/internal/session-count.d.ts.map +0 -1
  291. package/dist/history/internal/session-count.js +0 -109
  292. package/dist/history/internal/session-count.js.map +0 -1
  293. package/dist/history/internal/session-title.d.ts +0 -20
  294. package/dist/history/internal/session-title.d.ts.map +0 -1
  295. package/dist/history/internal/session-title.js +0 -44
  296. package/dist/history/internal/session-title.js.map +0 -1
  297. package/dist/history/internal/session-update.d.ts +0 -28
  298. package/dist/history/internal/session-update.d.ts.map +0 -1
  299. package/dist/history/internal/session-update.js +0 -70
  300. package/dist/history/internal/session-update.js.map +0 -1
  301. package/dist/history/internal/setup.d.ts.map +0 -1
  302. package/dist/history/internal/setup.js.map +0 -1
  303. package/dist/history/internal/title-generator.d.ts +0 -13
  304. package/dist/history/internal/title-generator.d.ts.map +0 -1
  305. package/dist/history/internal/title-generator.js +0 -25
  306. package/dist/history/internal/title-generator.js.map +0 -1
  307. package/dist/history/internal/ttl-anchor.d.ts +0 -25
  308. package/dist/history/internal/ttl-anchor.d.ts.map +0 -1
  309. package/dist/history/internal/ttl-anchor.js +0 -38
  310. package/dist/history/internal/ttl-anchor.js.map +0 -1
  311. package/dist/history/internal/validation.d.ts +0 -9
  312. package/dist/history/internal/validation.d.ts.map +0 -1
  313. package/dist/history/internal/validation.js +0 -16
  314. package/dist/history/internal/validation.js.map +0 -1
  315. package/dist/history/session-adapter.d.ts.map +0 -1
  316. package/dist/history/session-adapter.js.map +0 -1
  317. package/dist/history/types.d.ts.map +0 -1
  318. package/dist/history/types.js.map +0 -1
  319. package/dist/index.d.ts.map +0 -1
  320. package/dist/index.js.map +0 -1
  321. package/dist/shared/clock.d.ts.map +0 -1
  322. package/dist/shared/clock.js.map +0 -1
  323. package/dist/shared/codec/codec.d.ts.map +0 -1
  324. package/dist/shared/codec/codec.js.map +0 -1
  325. package/dist/shared/codec/compression.d.ts.map +0 -1
  326. package/dist/shared/codec/compression.js.map +0 -1
  327. package/dist/shared/codec/descriptor-keys.d.ts +0 -4
  328. package/dist/shared/codec/descriptor-keys.d.ts.map +0 -1
  329. package/dist/shared/codec/descriptor-keys.js +0 -14
  330. package/dist/shared/codec/descriptor-keys.js.map +0 -1
  331. package/dist/shared/codec/json-serde.d.ts.map +0 -1
  332. package/dist/shared/codec/json-serde.js.map +0 -1
  333. package/dist/shared/codec/s3/client.d.ts.map +0 -1
  334. package/dist/shared/codec/s3/client.js.map +0 -1
  335. package/dist/shared/codec/s3/config.d.ts.map +0 -1
  336. package/dist/shared/codec/s3/config.js.map +0 -1
  337. package/dist/shared/codec/s3/delete.d.ts +0 -8
  338. package/dist/shared/codec/s3/delete.d.ts.map +0 -1
  339. package/dist/shared/codec/s3/delete.js +0 -29
  340. package/dist/shared/codec/s3/delete.js.map +0 -1
  341. package/dist/shared/codec/s3/lifecycle.d.ts.map +0 -1
  342. package/dist/shared/codec/s3/lifecycle.js.map +0 -1
  343. package/dist/shared/codec/s3/offloader.d.ts.map +0 -1
  344. package/dist/shared/codec/s3/offloader.js.map +0 -1
  345. package/dist/shared/codec/s3/orphans.d.ts +0 -18
  346. package/dist/shared/codec/s3/orphans.d.ts.map +0 -1
  347. package/dist/shared/codec/s3/orphans.js +0 -58
  348. package/dist/shared/codec/s3/orphans.js.map +0 -1
  349. package/dist/shared/codec/s3/read-write.d.ts +0 -14
  350. package/dist/shared/codec/s3/read-write.d.ts.map +0 -1
  351. package/dist/shared/codec/s3/read-write.js +0 -43
  352. package/dist/shared/codec/s3/read-write.js.map +0 -1
  353. package/dist/shared/codec/s3/retry.d.ts +0 -5
  354. package/dist/shared/codec/s3/retry.d.ts.map +0 -1
  355. package/dist/shared/codec/s3/retry.js +0 -25
  356. package/dist/shared/codec/s3/retry.js.map +0 -1
  357. package/dist/shared/constants.d.ts +0 -64
  358. package/dist/shared/constants.d.ts.map +0 -1
  359. package/dist/shared/constants.js +0 -67
  360. package/dist/shared/constants.js.map +0 -1
  361. package/dist/shared/dynamodb/backoff.d.ts +0 -15
  362. package/dist/shared/dynamodb/backoff.d.ts.map +0 -1
  363. package/dist/shared/dynamodb/backoff.js +0 -48
  364. package/dist/shared/dynamodb/backoff.js.map +0 -1
  365. package/dist/shared/dynamodb/batch-write.d.ts.map +0 -1
  366. package/dist/shared/dynamodb/batch-write.js.map +0 -1
  367. package/dist/shared/dynamodb/cancellation.d.ts.map +0 -1
  368. package/dist/shared/dynamodb/cancellation.js.map +0 -1
  369. package/dist/shared/dynamodb/client.d.ts.map +0 -1
  370. package/dist/shared/dynamodb/client.js.map +0 -1
  371. package/dist/shared/dynamodb/conditional-put.d.ts +0 -51
  372. package/dist/shared/dynamodb/conditional-put.d.ts.map +0 -1
  373. package/dist/shared/dynamodb/conditional-put.js +0 -59
  374. package/dist/shared/dynamodb/conditional-put.js.map +0 -1
  375. package/dist/shared/dynamodb/drain-unprocessed.d.ts +0 -19
  376. package/dist/shared/dynamodb/drain-unprocessed.d.ts.map +0 -1
  377. package/dist/shared/dynamodb/drain-unprocessed.js +0 -44
  378. package/dist/shared/dynamodb/drain-unprocessed.js.map +0 -1
  379. package/dist/shared/dynamodb/paginate-core.d.ts +0 -22
  380. package/dist/shared/dynamodb/paginate-core.d.ts.map +0 -1
  381. package/dist/shared/dynamodb/paginate-core.js +0 -52
  382. package/dist/shared/dynamodb/paginate-core.js.map +0 -1
  383. package/dist/shared/dynamodb/paginate.d.ts.map +0 -1
  384. package/dist/shared/dynamodb/paginate.js.map +0 -1
  385. package/dist/shared/dynamodb/partition-delete.d.ts.map +0 -1
  386. package/dist/shared/dynamodb/partition-delete.js.map +0 -1
  387. package/dist/shared/dynamodb/retry-classifier.d.ts +0 -9
  388. package/dist/shared/dynamodb/retry-classifier.d.ts.map +0 -1
  389. package/dist/shared/dynamodb/retry-classifier.js +0 -87
  390. package/dist/shared/dynamodb/retry-classifier.js.map +0 -1
  391. package/dist/shared/dynamodb/retry.d.ts.map +0 -1
  392. package/dist/shared/dynamodb/retry.js.map +0 -1
  393. package/dist/shared/dynamodb/scan.d.ts +0 -15
  394. package/dist/shared/dynamodb/scan.d.ts.map +0 -1
  395. package/dist/shared/dynamodb/scan.js +0 -20
  396. package/dist/shared/dynamodb/scan.js.map +0 -1
  397. package/dist/shared/dynamodb/types.d.ts +0 -24
  398. package/dist/shared/dynamodb/types.d.ts.map +0 -1
  399. package/dist/shared/dynamodb/types.js +0 -3
  400. package/dist/shared/dynamodb/types.js.map +0 -1
  401. package/dist/shared/errors/base-error.d.ts.map +0 -1
  402. package/dist/shared/errors/base-error.js.map +0 -1
  403. package/dist/shared/errors/error-code.d.ts.map +0 -1
  404. package/dist/shared/errors/error-code.js.map +0 -1
  405. package/dist/shared/errors/errors.d.ts.map +0 -1
  406. package/dist/shared/errors/errors.js.map +0 -1
  407. package/dist/shared/errors/wrap-error.d.ts +0 -16
  408. package/dist/shared/errors/wrap-error.d.ts.map +0 -1
  409. package/dist/shared/errors/wrap-error.js +0 -30
  410. package/dist/shared/errors/wrap-error.js.map +0 -1
  411. package/dist/shared/logging/logger.d.ts.map +0 -1
  412. package/dist/shared/logging/logger.js.map +0 -1
  413. package/dist/shared/logging/redaction-walk.d.ts +0 -23
  414. package/dist/shared/logging/redaction-walk.d.ts.map +0 -1
  415. package/dist/shared/logging/redaction-walk.js +0 -92
  416. package/dist/shared/logging/redaction-walk.js.map +0 -1
  417. package/dist/shared/logging/redaction.d.ts.map +0 -1
  418. package/dist/shared/logging/redaction.js.map +0 -1
  419. package/dist/shared/logging/secret-patterns.d.ts.map +0 -1
  420. package/dist/shared/logging/secret-patterns.js.map +0 -1
  421. package/dist/shared/options.d.ts.map +0 -1
  422. package/dist/shared/options.js.map +0 -1
  423. package/dist/shared/ulid.d.ts.map +0 -1
  424. package/dist/shared/ulid.js.map +0 -1
  425. package/dist/shared/validation/primitives.d.ts.map +0 -1
  426. package/dist/shared/validation/primitives.js.map +0 -1
  427. package/dist/shared/validation/ttl.d.ts.map +0 -1
  428. package/dist/shared/validation/ttl.js.map +0 -1
  429. package/dist/store/actions/get.d.ts +0 -5
  430. package/dist/store/actions/get.d.ts.map +0 -1
  431. package/dist/store/actions/get.js +0 -35
  432. package/dist/store/actions/get.js.map +0 -1
  433. package/dist/store/actions/list-namespaces.d.ts.map +0 -1
  434. package/dist/store/actions/list-namespaces.js.map +0 -1
  435. package/dist/store/actions/put.d.ts.map +0 -1
  436. package/dist/store/actions/put.js.map +0 -1
  437. package/dist/store/actions/reconcile-vector-index.d.ts.map +0 -1
  438. package/dist/store/actions/reconcile-vector-index.js.map +0 -1
  439. package/dist/store/actions/search.d.ts.map +0 -1
  440. package/dist/store/actions/search.js.map +0 -1
  441. package/dist/store/internal/backend-search.d.ts +0 -5
  442. package/dist/store/internal/backend-search.d.ts.map +0 -1
  443. package/dist/store/internal/backend-search.js +0 -68
  444. package/dist/store/internal/backend-search.js.map +0 -1
  445. package/dist/store/internal/filter.d.ts.map +0 -1
  446. package/dist/store/internal/filter.js.map +0 -1
  447. package/dist/store/internal/index-reconcile.d.ts +0 -22
  448. package/dist/store/internal/index-reconcile.d.ts.map +0 -1
  449. package/dist/store/internal/index-reconcile.js +0 -105
  450. package/dist/store/internal/index-reconcile.js.map +0 -1
  451. package/dist/store/internal/index-sync.d.ts +0 -11
  452. package/dist/store/internal/index-sync.d.ts.map +0 -1
  453. package/dist/store/internal/index-sync.js +0 -26
  454. package/dist/store/internal/index-sync.js.map +0 -1
  455. package/dist/store/internal/item-mapper.d.ts +0 -25
  456. package/dist/store/internal/item-mapper.d.ts.map +0 -1
  457. package/dist/store/internal/item-mapper.js +0 -53
  458. package/dist/store/internal/item-mapper.js.map +0 -1
  459. package/dist/store/internal/keys.d.ts +0 -18
  460. package/dist/store/internal/keys.d.ts.map +0 -1
  461. package/dist/store/internal/keys.js +0 -42
  462. package/dist/store/internal/keys.js.map +0 -1
  463. package/dist/store/internal/namespace-match.d.ts +0 -12
  464. package/dist/store/internal/namespace-match.d.ts.map +0 -1
  465. package/dist/store/internal/namespace-match.js +0 -41
  466. package/dist/store/internal/namespace-match.js.map +0 -1
  467. package/dist/store/internal/overwrite-swap.d.ts +0 -33
  468. package/dist/store/internal/overwrite-swap.d.ts.map +0 -1
  469. package/dist/store/internal/overwrite-swap.js +0 -62
  470. package/dist/store/internal/overwrite-swap.js.map +0 -1
  471. package/dist/store/internal/persist.d.ts +0 -27
  472. package/dist/store/internal/persist.d.ts.map +0 -1
  473. package/dist/store/internal/persist.js +0 -59
  474. package/dist/store/internal/persist.js.map +0 -1
  475. package/dist/store/internal/query.d.ts +0 -6
  476. package/dist/store/internal/query.d.ts.map +0 -1
  477. package/dist/store/internal/query.js +0 -32
  478. package/dist/store/internal/query.js.map +0 -1
  479. package/dist/store/internal/ranker.d.ts +0 -13
  480. package/dist/store/internal/ranker.d.ts.map +0 -1
  481. package/dist/store/internal/ranker.js +0 -31
  482. package/dist/store/internal/ranker.js.map +0 -1
  483. package/dist/store/internal/read-existing.d.ts +0 -19
  484. package/dist/store/internal/read-existing.d.ts.map +0 -1
  485. package/dist/store/internal/read-existing.js +0 -29
  486. package/dist/store/internal/read-existing.js.map +0 -1
  487. package/dist/store/internal/score-direction.d.ts +0 -32
  488. package/dist/store/internal/score-direction.d.ts.map +0 -1
  489. package/dist/store/internal/score-direction.js +0 -39
  490. package/dist/store/internal/score-direction.js.map +0 -1
  491. package/dist/store/internal/search-filter.d.ts +0 -4
  492. package/dist/store/internal/search-filter.d.ts.map +0 -1
  493. package/dist/store/internal/search-filter.js +0 -11
  494. package/dist/store/internal/search-filter.js.map +0 -1
  495. package/dist/store/internal/semantic-search.d.ts.map +0 -1
  496. package/dist/store/internal/semantic-search.js.map +0 -1
  497. package/dist/store/internal/setup.d.ts.map +0 -1
  498. package/dist/store/internal/setup.js.map +0 -1
  499. package/dist/store/internal/validation.d.ts +0 -13
  500. package/dist/store/internal/validation.d.ts.map +0 -1
  501. package/dist/store/internal/validation.js +0 -35
  502. package/dist/store/internal/validation.js.map +0 -1
  503. package/dist/store/internal/write-verify.d.ts +0 -37
  504. package/dist/store/internal/write-verify.d.ts.map +0 -1
  505. package/dist/store/internal/write-verify.js +0 -68
  506. package/dist/store/internal/write-verify.js.map +0 -1
  507. package/dist/store/store.d.ts.map +0 -1
  508. package/dist/store/store.js.map +0 -1
  509. package/dist/store/types.d.ts.map +0 -1
  510. package/dist/store/types.js.map +0 -1
  511. package/dist/store/vector-backend.d.ts.map +0 -1
  512. package/dist/store/vector-backend.js.map +0 -1
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Hides what a collaborator a caller hands in must offer.
3
+ *
4
+ * An injected client, logger, serde, embeddings model or vector backend is
5
+ * checked by the members this package calls on it, and a cancellation signal
6
+ * — at construction or on a single call's options — by the members an
7
+ * `AbortSignal` has, so a wrong object fails where it was passed and not at the
8
+ * first call deep inside an operation.
9
+ */
10
+ import type { CancelOptions } from '../options';
11
+ /** The `DynamoDBDocument` methods this package calls on an injected `client`. */
12
+ export declare const CLIENT_MEMBERS: readonly string[];
13
+ /** The `Logger` methods every adapter calls. */
14
+ export declare const LOGGER_MEMBERS: readonly string[];
15
+ /** The `SerializerProtocol` methods this package calls on `serde`. */
16
+ export declare const SERDE_MEMBERS: readonly string[];
17
+ /** The `Embeddings` methods this package calls on `index.embeddings`. */
18
+ export declare const EMBEDDINGS_MEMBERS: readonly string[];
19
+ /**
20
+ * The `VectorBackend` methods this package calls. `listKeys` is deliberately
21
+ * excluded: it is optional on the interface (`store/vector-backend.ts`), and
22
+ * `reconcileVectorIndex` already branches on its absence and logs instead of
23
+ * requiring it — requiring it here would refuse a backend shape this package
24
+ * documents and supports.
25
+ */
26
+ export declare const VECTOR_BACKEND_MEMBERS: readonly string[];
27
+ /**
28
+ * Every `AbortSignal` member this package uses on a caller's `signal`, with
29
+ * the `typeof` each must have: `aborted` is read before a request and between
30
+ * pages, and the wait between retries attaches an abort listener and removes
31
+ * it again from inside its timer. `reason` is only read, which is safe on any
32
+ * object, so it is not required.
33
+ */
34
+ export declare const ABORT_SIGNAL_MEMBERS: Readonly<Record<string, 'boolean' | 'function'>>;
35
+ /**
36
+ * Refuse a collaborator missing a method this package calls.
37
+ *
38
+ * Checked by shape, never `instanceof`: the rule is banned repo-wide, and a
39
+ * duck-typed check also survives two copies of a dependency in one tree, which
40
+ * is exactly the situation an injected client comes from.
41
+ *
42
+ * Accepts: `value` — the collaborator as the caller gave it. `members` — every
43
+ * method this package calls on it. `field` — what the error names.
44
+ *
45
+ * Returns: nothing: the value is kept under its declared type, and this
46
+ * checks it.
47
+ *
48
+ * Throws: `VALIDATION` naming `field` for a non-object, `null` or an array,
49
+ * and `field.member` for the first missing method — naming which member is
50
+ * missing is what turns a first-request crash into a startup error a caller
51
+ * can act on. An array is refused as a whole rather than reported as missing
52
+ * its first method, which would point the caller at a method instead of at
53
+ * the value.
54
+ */
55
+ export declare function assertMembers(value: object, members: readonly string[], field: string): void;
56
+ /**
57
+ * Validate the collaborators every adapter shares: `client`, `logger` and
58
+ * `serde`. Pulled out of each `setUp*` as one call rather than three inline
59
+ * checks, so the three adapters check them the same way.
60
+ *
61
+ * Accepts: `options` — the adapter options, narrowed to the three shared
62
+ * collaborator fields. Every field here is typed as `object`, which a real
63
+ * `DynamoDBDocument`, `Logger` or `SerializerProtocol` all satisfy, so any
64
+ * adapter's options type is assignable without a cast.
65
+ *
66
+ * Returns: nothing: each collaborator given is kept under its declared type,
67
+ * and this checks it. A collaborator the caller did not supply is left
68
+ * untouched, so it still reaches its default.
69
+ *
70
+ * Throws: see {@link assertMembers}.
71
+ */
72
+ export declare function assertBaseCollaborators(options: {
73
+ client?: object;
74
+ logger?: object;
75
+ serde?: object;
76
+ }): void;
77
+ /**
78
+ * A value usable as an `AbortSignal`, checked by shape.
79
+ *
80
+ * `signal` is not a method bag like the collaborators above, so this returns
81
+ * a boolean rather than throwing: it never needs to be paired with the
82
+ * caller's own decision about what an absent signal means.
83
+ *
84
+ * Accepts: `value` — the caller's `signal`, or `undefined`.
85
+ *
86
+ * Returns: `true` when `value` is a non-null object whose every member in
87
+ * {@link ABORT_SIGNAL_MEMBERS} has the type listed there — `false` otherwise,
88
+ * including for `undefined`.
89
+ *
90
+ * Throws: nothing.
91
+ */
92
+ export declare function isAbortSignalLike(value: AbortSignal | undefined): boolean;
93
+ /**
94
+ * Throw `VALIDATION` naming `field` unless `value` is absent or
95
+ * {@link isAbortSignalLike}.
96
+ *
97
+ * Accepts: `value` — a caller's signal, or `undefined`. `field` — what the
98
+ * error names; `signal` by default, and the full path for a signal nested in
99
+ * another option (`retry.signal`), so a caller whose top-level `signal` is
100
+ * valid is not pointed at it.
101
+ *
102
+ * Returns: nothing: the value is kept under its declared type, and this
103
+ * checks it.
104
+ *
105
+ * Throws: `VALIDATION` naming `field`. Left unchecked, a value that is not
106
+ * an `AbortSignal` reaches whatever this package hands it to — an
107
+ * `addEventListener` call, a retry loop reading `.aborted`, a
108
+ * `removeEventListener` call from inside a timer, where nothing can catch it —
109
+ * and fails there with a raw, unrelated error instead of naming the option
110
+ * that caused it.
111
+ */
112
+ export declare function assertSignalLike(value: AbortSignal | undefined, field?: string): void;
113
+ /**
114
+ * The keys of a cancellation-only option bag, exhaustive in both directions.
115
+ *
116
+ * Every feature's own option-bag lists live in that feature's `internal/`
117
+ * directory, beside the types they are checked against;
118
+ * `shared/` knows no feature. This one stays here because `CancelOptions` is
119
+ * shared by all three. `allKeysOf<T>` keeps the list from drifting from the
120
+ * type it guards: an exhaustive list compiles, omitting or inventing a key
121
+ * does not.
122
+ */
123
+ export declare const CANCEL_KEYS: readonly string[];
124
+ /**
125
+ * Reject a `{ signal }` bag carrying a key this package does not read.
126
+ *
127
+ * Pulled out as one call because several methods across three classes take
128
+ * only cancellation (`addMessages`, `addMessage`, `clear`,
129
+ * `reconcileMessageCount`, `deleteThread`, `reconcileVectorIndex`) — one
130
+ * shared check keeps their wording and their key list from drifting apart.
131
+ *
132
+ * Accepts: `options` — as the caller passed it; absent is left alone, since
133
+ * there is nothing to check.
134
+ *
135
+ * Returns: nothing: the value is kept under its declared type, and this
136
+ * checks it.
137
+ *
138
+ * Throws: `VALIDATION` naming `options.<key>` for the first key this
139
+ * package does not read, or `signal` for a value that is not AbortSignal-like.
140
+ */
141
+ export declare function assertCancelOptions(options: CancelOptions | undefined): void;
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ /**
3
+ * Hides what a collaborator a caller hands in must offer.
4
+ *
5
+ * An injected client, logger, serde, embeddings model or vector backend is
6
+ * checked by the members this package calls on it, and a cancellation signal
7
+ * — at construction or on a single call's options — by the members an
8
+ * `AbortSignal` has, so a wrong object fails where it was passed and not at the
9
+ * first call deep inside an operation.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CANCEL_KEYS = exports.ABORT_SIGNAL_MEMBERS = exports.VECTOR_BACKEND_MEMBERS = exports.EMBEDDINGS_MEMBERS = exports.SERDE_MEMBERS = exports.LOGGER_MEMBERS = exports.CLIENT_MEMBERS = void 0;
13
+ exports.assertMembers = assertMembers;
14
+ exports.assertBaseCollaborators = assertBaseCollaborators;
15
+ exports.isAbortSignalLike = isAbortSignalLike;
16
+ exports.assertSignalLike = assertSignalLike;
17
+ exports.assertCancelOptions = assertCancelOptions;
18
+ const errors_1 = require("../errors/errors");
19
+ const option_shape_1 = require("./option-shape");
20
+ /** The `DynamoDBDocument` methods this package calls on an injected `client`. */
21
+ exports.CLIENT_MEMBERS = [
22
+ 'get',
23
+ 'put',
24
+ 'delete',
25
+ 'update',
26
+ 'query',
27
+ 'scan',
28
+ 'batchWrite',
29
+ 'transactWrite',
30
+ ];
31
+ /** The `Logger` methods every adapter calls. */
32
+ exports.LOGGER_MEMBERS = ['debug', 'info', 'warn', 'error'];
33
+ /** The `SerializerProtocol` methods this package calls on `serde`. */
34
+ exports.SERDE_MEMBERS = ['dumpsTyped', 'loadsTyped'];
35
+ /** The `Embeddings` methods this package calls on `index.embeddings`. */
36
+ exports.EMBEDDINGS_MEMBERS = ['embedQuery', 'embedDocuments'];
37
+ /**
38
+ * The `VectorBackend` methods this package calls. `listKeys` is deliberately
39
+ * excluded: it is optional on the interface (`store/vector-backend.ts`), and
40
+ * `reconcileVectorIndex` already branches on its absence and logs instead of
41
+ * requiring it — requiring it here would refuse a backend shape this package
42
+ * documents and supports.
43
+ */
44
+ exports.VECTOR_BACKEND_MEMBERS = ['upsert', 'query', 'delete'];
45
+ /**
46
+ * Every `AbortSignal` member this package uses on a caller's `signal`, with
47
+ * the `typeof` each must have: `aborted` is read before a request and between
48
+ * pages, and the wait between retries attaches an abort listener and removes
49
+ * it again from inside its timer. `reason` is only read, which is safe on any
50
+ * object, so it is not required.
51
+ */
52
+ exports.ABORT_SIGNAL_MEMBERS = {
53
+ aborted: 'boolean',
54
+ addEventListener: 'function',
55
+ removeEventListener: 'function',
56
+ };
57
+ /**
58
+ * Refuse a collaborator missing a method this package calls.
59
+ *
60
+ * Checked by shape, never `instanceof`: the rule is banned repo-wide, and a
61
+ * duck-typed check also survives two copies of a dependency in one tree, which
62
+ * is exactly the situation an injected client comes from.
63
+ *
64
+ * Accepts: `value` — the collaborator as the caller gave it. `members` — every
65
+ * method this package calls on it. `field` — what the error names.
66
+ *
67
+ * Returns: nothing: the value is kept under its declared type, and this
68
+ * checks it.
69
+ *
70
+ * Throws: `VALIDATION` naming `field` for a non-object, `null` or an array,
71
+ * and `field.member` for the first missing method — naming which member is
72
+ * missing is what turns a first-request crash into a startup error a caller
73
+ * can act on. An array is refused as a whole rather than reported as missing
74
+ * its first method, which would point the caller at a method instead of at
75
+ * the value.
76
+ */
77
+ function assertMembers(value, members, field) {
78
+ if (!(0, option_shape_1.isObjectShape)(value)) {
79
+ throw (0, errors_1.validationError)(`${field} must be an object`, field);
80
+ }
81
+ for (const member of members) {
82
+ if (typeof Reflect.get(value, member) !== 'function') {
83
+ throw (0, errors_1.validationError)(`${field}.${member} must be a function`, `${field}.${member}`);
84
+ }
85
+ }
86
+ }
87
+ /**
88
+ * Validate the collaborators every adapter shares: `client`, `logger` and
89
+ * `serde`. Pulled out of each `setUp*` as one call rather than three inline
90
+ * checks, so the three adapters check them the same way.
91
+ *
92
+ * Accepts: `options` — the adapter options, narrowed to the three shared
93
+ * collaborator fields. Every field here is typed as `object`, which a real
94
+ * `DynamoDBDocument`, `Logger` or `SerializerProtocol` all satisfy, so any
95
+ * adapter's options type is assignable without a cast.
96
+ *
97
+ * Returns: nothing: each collaborator given is kept under its declared type,
98
+ * and this checks it. A collaborator the caller did not supply is left
99
+ * untouched, so it still reaches its default.
100
+ *
101
+ * Throws: see {@link assertMembers}.
102
+ */
103
+ function assertBaseCollaborators(options) {
104
+ if (options.client !== undefined)
105
+ assertMembers(options.client, exports.CLIENT_MEMBERS, 'client');
106
+ if (options.logger !== undefined)
107
+ assertMembers(options.logger, exports.LOGGER_MEMBERS, 'logger');
108
+ if (options.serde !== undefined)
109
+ assertMembers(options.serde, exports.SERDE_MEMBERS, 'serde');
110
+ }
111
+ /**
112
+ * A value usable as an `AbortSignal`, checked by shape.
113
+ *
114
+ * `signal` is not a method bag like the collaborators above, so this returns
115
+ * a boolean rather than throwing: it never needs to be paired with the
116
+ * caller's own decision about what an absent signal means.
117
+ *
118
+ * Accepts: `value` — the caller's `signal`, or `undefined`.
119
+ *
120
+ * Returns: `true` when `value` is a non-null object whose every member in
121
+ * {@link ABORT_SIGNAL_MEMBERS} has the type listed there — `false` otherwise,
122
+ * including for `undefined`.
123
+ *
124
+ * Throws: nothing.
125
+ */
126
+ function isAbortSignalLike(value) {
127
+ if (typeof value !== 'object' || value === null)
128
+ return false;
129
+ return Object.entries(exports.ABORT_SIGNAL_MEMBERS).every(([member, type]) => typeof Reflect.get(value, member) === type);
130
+ }
131
+ /**
132
+ * Throw `VALIDATION` naming `field` unless `value` is absent or
133
+ * {@link isAbortSignalLike}.
134
+ *
135
+ * Accepts: `value` — a caller's signal, or `undefined`. `field` — what the
136
+ * error names; `signal` by default, and the full path for a signal nested in
137
+ * another option (`retry.signal`), so a caller whose top-level `signal` is
138
+ * valid is not pointed at it.
139
+ *
140
+ * Returns: nothing: the value is kept under its declared type, and this
141
+ * checks it.
142
+ *
143
+ * Throws: `VALIDATION` naming `field`. Left unchecked, a value that is not
144
+ * an `AbortSignal` reaches whatever this package hands it to — an
145
+ * `addEventListener` call, a retry loop reading `.aborted`, a
146
+ * `removeEventListener` call from inside a timer, where nothing can catch it —
147
+ * and fails there with a raw, unrelated error instead of naming the option
148
+ * that caused it.
149
+ */
150
+ function assertSignalLike(value, field = 'signal') {
151
+ if (value !== undefined && !isAbortSignalLike(value)) {
152
+ throw (0, errors_1.validationError)(`${field} must be an AbortSignal`, field);
153
+ }
154
+ }
155
+ /**
156
+ * The keys of a cancellation-only option bag, exhaustive in both directions.
157
+ *
158
+ * Every feature's own option-bag lists live in that feature's `internal/`
159
+ * directory, beside the types they are checked against;
160
+ * `shared/` knows no feature. This one stays here because `CancelOptions` is
161
+ * shared by all three. `allKeysOf<T>` keeps the list from drifting from the
162
+ * type it guards: an exhaustive list compiles, omitting or inventing a key
163
+ * does not.
164
+ */
165
+ exports.CANCEL_KEYS = (0, option_shape_1.allKeysOf)({ signal: 'signal' });
166
+ /**
167
+ * Reject a `{ signal }` bag carrying a key this package does not read.
168
+ *
169
+ * Pulled out as one call because several methods across three classes take
170
+ * only cancellation (`addMessages`, `addMessage`, `clear`,
171
+ * `reconcileMessageCount`, `deleteThread`, `reconcileVectorIndex`) — one
172
+ * shared check keeps their wording and their key list from drifting apart.
173
+ *
174
+ * Accepts: `options` — as the caller passed it; absent is left alone, since
175
+ * there is nothing to check.
176
+ *
177
+ * Returns: nothing: the value is kept under its declared type, and this
178
+ * checks it.
179
+ *
180
+ * Throws: `VALIDATION` naming `options.<key>` for the first key this
181
+ * package does not read, or `signal` for a value that is not AbortSignal-like.
182
+ */
183
+ function assertCancelOptions(options) {
184
+ if (options === undefined)
185
+ return;
186
+ (0, option_shape_1.assertShape)(options, exports.CANCEL_KEYS, 'options');
187
+ assertSignalLike(options.signal);
188
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Hides how an option object is told apart from a misspelt one.
3
+ *
4
+ * An option type lists its keys once, checked by the compiler against the
5
+ * type, and an object carrying any other key is refused naming that key. No
6
+ * caller writes the plain-object test or the unknown-key walk itself, so the
7
+ * message and the field a refusal names are the same for every option object
8
+ * this package reads.
9
+ */
10
+ /**
11
+ * Every key of `T`, listed once.
12
+ *
13
+ * Accepts: an object naming every key of `T` as its own value. The parameter's
14
+ * type makes the list exhaustive in both directions: omitting a key the type
15
+ * declares, or naming one it does not, fails to compile — so the list cannot
16
+ * drift from the option type it guards, which matters because the list is what
17
+ * decides that a key is *unknown*.
18
+ *
19
+ * Returns: the keys.
20
+ *
21
+ * Throws: nothing.
22
+ */
23
+ export declare function allKeysOf<T extends object>(keys: {
24
+ [K in keyof Required<T>]: K;
25
+ }): readonly string[];
26
+ /**
27
+ * Whether a value is a plain object: an object at all, not `null`, and not an
28
+ * array.
29
+ *
30
+ * Accepts: `value` — as the caller gave it, `undefined` included.
31
+ *
32
+ * Returns: true exactly when {@link assertObjectShape} would accept `value`.
33
+ * For code that must decide what to do with a malformed value rather than
34
+ * refuse it on the spot.
35
+ *
36
+ * Throws: nothing.
37
+ */
38
+ export declare function isObjectShape(value: object | undefined): value is object;
39
+ /**
40
+ * Reject a value that is not a plain object: not an object at all, `null`, or
41
+ * an array.
42
+ *
43
+ * Accepts: `value` — as the caller gave it. `field` — what the error names.
44
+ *
45
+ * Returns: nothing: the value is kept under its declared type, and this
46
+ * checks it.
47
+ *
48
+ * Throws: `VALIDATION` naming `field`.
49
+ */
50
+ export declare function assertObjectShape(value: object, field: string): void;
51
+ /**
52
+ * Reject an option object that is not an object, or that carries a key this
53
+ * package does not read.
54
+ *
55
+ * Accepts: `value` — the option object as the caller gave it. `allowed` — the
56
+ * key list from {@link allKeysOf}. `field` — what the error names.
57
+ *
58
+ * Returns: nothing: the value is kept under its declared type, and this
59
+ * checks it.
60
+ *
61
+ * Throws: `VALIDATION` naming `field` for a value that is not an object, and
62
+ * `field.key` for an unknown key. A misspelt key is otherwise accepted and
63
+ * ignored, and the caller runs on a default they believe they overrode.
64
+ *
65
+ * `field.key` is **deliberately not cut**, where the rule that bounds an
66
+ * unchecked string before a message quotes it would otherwise reach it. The
67
+ * same string is the message *and* `context.field`, and `context.field` is the
68
+ * compatibility surface a caller branches on, so cutting one and not the other
69
+ * would make an error disagree with itself about which option it refused.
70
+ * Cutting both would bound a field callers match on, which this package does
71
+ * not do. The value is also the caller's own key off the caller's own options
72
+ * object — neither row-sourced nor third-party — so the only person who can
73
+ * make it enormous is the person reading the error.
74
+ */
75
+ export declare function assertShape(value: object, allowed: readonly string[], field: string): void;
76
+ /**
77
+ * {@link assertShape}, returning `value` instead of nothing.
78
+ *
79
+ * Accepts: the same arguments as {@link assertShape}.
80
+ *
81
+ * Returns: `value`, unchanged. This returning form exists because a subclass
82
+ * constructor cannot run a statement before `super(...)`, so validating an
83
+ * argument bound for `super(...)` has to happen inside that expression —
84
+ * `super(parseShape(options, ALLOWED, 'options').thing)` — where a `void`
85
+ * function would not compile.
86
+ *
87
+ * Throws: the same as {@link assertShape}.
88
+ */
89
+ export declare function parseShape<T extends object>(value: T, allowed: readonly string[], field: string): T;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ /**
3
+ * Hides how an option object is told apart from a misspelt one.
4
+ *
5
+ * An option type lists its keys once, checked by the compiler against the
6
+ * type, and an object carrying any other key is refused naming that key. No
7
+ * caller writes the plain-object test or the unknown-key walk itself, so the
8
+ * message and the field a refusal names are the same for every option object
9
+ * this package reads.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.allKeysOf = allKeysOf;
13
+ exports.isObjectShape = isObjectShape;
14
+ exports.assertObjectShape = assertObjectShape;
15
+ exports.assertShape = assertShape;
16
+ exports.parseShape = parseShape;
17
+ const errors_1 = require("../errors/errors");
18
+ /**
19
+ * Every key of `T`, listed once.
20
+ *
21
+ * Accepts: an object naming every key of `T` as its own value. The parameter's
22
+ * type makes the list exhaustive in both directions: omitting a key the type
23
+ * declares, or naming one it does not, fails to compile — so the list cannot
24
+ * drift from the option type it guards, which matters because the list is what
25
+ * decides that a key is *unknown*.
26
+ *
27
+ * Returns: the keys.
28
+ *
29
+ * Throws: nothing.
30
+ */
31
+ function allKeysOf(keys) {
32
+ return Object.values(keys);
33
+ }
34
+ /**
35
+ * Whether a value is a plain object: an object at all, not `null`, and not an
36
+ * array.
37
+ *
38
+ * Accepts: `value` — as the caller gave it, `undefined` included.
39
+ *
40
+ * Returns: true exactly when {@link assertObjectShape} would accept `value`.
41
+ * For code that must decide what to do with a malformed value rather than
42
+ * refuse it on the spot.
43
+ *
44
+ * Throws: nothing.
45
+ */
46
+ function isObjectShape(value) {
47
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
48
+ }
49
+ /**
50
+ * Reject a value that is not a plain object: not an object at all, `null`, or
51
+ * an array.
52
+ *
53
+ * Accepts: `value` — as the caller gave it. `field` — what the error names.
54
+ *
55
+ * Returns: nothing: the value is kept under its declared type, and this
56
+ * checks it.
57
+ *
58
+ * Throws: `VALIDATION` naming `field`.
59
+ */
60
+ function assertObjectShape(value, field) {
61
+ if (!isObjectShape(value)) {
62
+ throw (0, errors_1.validationError)(`${field} must be an object`, field);
63
+ }
64
+ }
65
+ /**
66
+ * Reject an option object that is not an object, or that carries a key this
67
+ * package does not read.
68
+ *
69
+ * Accepts: `value` — the option object as the caller gave it. `allowed` — the
70
+ * key list from {@link allKeysOf}. `field` — what the error names.
71
+ *
72
+ * Returns: nothing: the value is kept under its declared type, and this
73
+ * checks it.
74
+ *
75
+ * Throws: `VALIDATION` naming `field` for a value that is not an object, and
76
+ * `field.key` for an unknown key. A misspelt key is otherwise accepted and
77
+ * ignored, and the caller runs on a default they believe they overrode.
78
+ *
79
+ * `field.key` is **deliberately not cut**, where the rule that bounds an
80
+ * unchecked string before a message quotes it would otherwise reach it. The
81
+ * same string is the message *and* `context.field`, and `context.field` is the
82
+ * compatibility surface a caller branches on, so cutting one and not the other
83
+ * would make an error disagree with itself about which option it refused.
84
+ * Cutting both would bound a field callers match on, which this package does
85
+ * not do. The value is also the caller's own key off the caller's own options
86
+ * object — neither row-sourced nor third-party — so the only person who can
87
+ * make it enormous is the person reading the error.
88
+ */
89
+ function assertShape(value, allowed, field) {
90
+ assertObjectShape(value, field);
91
+ for (const key of Object.keys(value)) {
92
+ if (!allowed.includes(key)) {
93
+ throw (0, errors_1.validationError)(`${field}.${key} is not an option this package reads; expected one of ${allowed.join(', ')}`, `${field}.${key}`);
94
+ }
95
+ }
96
+ }
97
+ /**
98
+ * {@link assertShape}, returning `value` instead of nothing.
99
+ *
100
+ * Accepts: the same arguments as {@link assertShape}.
101
+ *
102
+ * Returns: `value`, unchanged. This returning form exists because a subclass
103
+ * constructor cannot run a statement before `super(...)`, so validating an
104
+ * argument bound for `super(...)` has to happen inside that expression —
105
+ * `super(parseShape(options, ALLOWED, 'options').thing)` — where a `void`
106
+ * function would not compile.
107
+ *
108
+ * Throws: the same as {@link assertShape}.
109
+ */
110
+ function parseShape(value, allowed, field) {
111
+ assertShape(value, allowed, field);
112
+ return value;
113
+ }
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Hides which adapter-wide construction options are accepted.
3
+ *
4
+ * The table name, the client choice, the ttl, the retry policy, the recency
5
+ * index, the read concurrency, compression and S3 offload are checked here with
6
+ * their bounds, before an adapter builds anything, so a misconfiguration
7
+ * surfaces at construction rather than on the first call.
8
+ */
9
+ import type { CompressionConfig } from '../codec/compression';
10
+ import { type S3OffloadConfig } from '../codec/s3/config';
11
+ import type { RetryPolicy } from '../dynamodb/retry';
12
+ import type { BaseAdapterOptions, CodecOptions } from '../options';
13
+ /**
14
+ * Largest `s3.maxDownloadBytes`/`compression.maxDecompressedBytes` an adapter
15
+ * accepts (512 MiB): both hold one buffer fully resident while it is read or
16
+ * inflated, and `BaseAdapterOptions.readConcurrency`'s doc multiplies the two
17
+ * together into the package's memory ceiling, so an unbounded value here is an
18
+ * unbounded process, not just an unbounded object.
19
+ */
20
+ export declare const MAX_PAYLOAD_BUFFER_BYTES: number;
21
+ /** Largest `retry.maxAttempts` an adapter accepts; beyond it a retry loop is a hang, not a policy. */
22
+ export declare const MAX_RETRY_ATTEMPTS = 100;
23
+ /**
24
+ * Largest `retry.baseDelayMs`/`retry.maxDelayMs` an adapter accepts (one
25
+ * minute): combined with {@link MAX_RETRY_ATTEMPTS}, an unbounded per-attempt
26
+ * delay turns a bounded attempt count back into an effectively unbounded wait.
27
+ */
28
+ export declare const MAX_RETRY_DELAY_MS = 60000;
29
+ /**
30
+ * Largest `readConcurrency` an adapter accepts: it is a multiplier on the
31
+ * memory-ceiling formula (see the option's own doc) and on requests fired at
32
+ * once, so an unbounded value turns a typo into an out-of-memory crash or a
33
+ * request storm against the table/bucket.
34
+ */
35
+ export declare const MAX_READ_CONCURRENCY = 128;
36
+ /**
37
+ * Validate a table name against DynamoDB's own naming rule.
38
+ *
39
+ * Accepts: `tableName` — as the caller gave it.
40
+ *
41
+ * Returns: nothing: the value is kept under its declared type, and this
42
+ * checks it.
43
+ *
44
+ * Throws: `VALIDATION` naming `tableName`.
45
+ */
46
+ export declare function assertTableName(tableName: string): void;
47
+ /**
48
+ * Reject a client choice that names two ways of getting one, or a
49
+ * `clientConfig` that is not an object.
50
+ *
51
+ * Accepts: the three client options, from an adapter or from the factory that
52
+ * defaults them. An injected `client` is used as-is, so a `clientConfig` or
53
+ * `createClient` given alongside it would be silently ignored — including a
54
+ * `region` the caller believes is in effect. `clientConfig`, when given, must
55
+ * be an object that is neither `null` nor an array; what it holds is the AWS
56
+ * SDK's to judge.
57
+ *
58
+ * Returns: nothing: the value is kept under its declared type, and this
59
+ * checks it.
60
+ *
61
+ * Throws: `VALIDATION` naming `client` for both ways at once, then
62
+ * `clientConfig` for one that is not an object.
63
+ */
64
+ export declare function assertClientChoice(options: Pick<BaseAdapterOptions, 'client' | 'clientConfig' | 'createClient'>): void;
65
+ /**
66
+ * The three numeric bounds every retry policy shares, regardless of which
67
+ * other keys the caller's own type allows beyond them. Split out so a caller
68
+ * with a wider surface than {@link RetryPolicy} (`backfillRecencyIndex`'s
69
+ * `RetryOptions`, which also exposes `onRetry`, `isRetryable` and friends)
70
+ * can reuse the identical bounds without going through {@link
71
+ * assertRetryPolicy}'s narrower `assertShape`, which would refuse those
72
+ * extra keys outright.
73
+ *
74
+ * Accepts: `policy` — its `maxAttempts`, `baseDelayMs` and `maxDelayMs`, each
75
+ * optional.
76
+ *
77
+ * Returns: nothing: the value is kept under its declared type, and this
78
+ * checks it.
79
+ *
80
+ * Throws: `VALIDATION` naming `retry.maxAttempts`, `retry.baseDelayMs` or
81
+ * `retry.maxDelayMs`.
82
+ */
83
+ export declare function assertRetryBounds(policy: Pick<RetryPolicy, 'maxAttempts' | 'baseDelayMs' | 'maxDelayMs'>): void;
84
+ /**
85
+ * Validate a retry policy: shape, then each bound.
86
+ *
87
+ * Accepts: `policy` — must be an object naming only `maxAttempts`,
88
+ * `baseDelayMs` and `maxDelayMs`; each, if given, is a bounded integer.
89
+ *
90
+ * Returns: nothing: the value is kept under its declared type, and this
91
+ * checks it.
92
+ *
93
+ * Throws: `VALIDATION` naming `retry` or `retry.<key>`.
94
+ */
95
+ export declare function assertRetryPolicy(policy: RetryPolicy): void;
96
+ /**
97
+ * Validate the options every adapter shares, at construction.
98
+ *
99
+ * Accepts: `options` — must be an object. `tableName` is required; every other
100
+ * option is optional, and `undefined` means "not configured" for each. A
101
+ * nested `ttl`, `retry`, `compression` or `s3` must be an object whose keys
102
+ * this package reads: a misspelt key is rejected rather than ignored, because
103
+ * the caller would otherwise run on a default they believe they overrode.
104
+ * `clientConfig` and `s3.clientConfig` must be objects, but their keys belong
105
+ * to the AWS SDK and are not checked. Keys of `options` itself are not checked
106
+ * here — the adapter types differ and this validator sees only the shared ones.
107
+ *
108
+ * Returns: nothing: the value is kept under its declared type, and this
109
+ * checks it.
110
+ *
111
+ * Throws: `VALIDATION` whose `context.field` names the offending option,
112
+ * dotted for a nested one (`s3.bucketName`). The order is `tableName`, client
113
+ * choice, `ttl`, `retry`, `compression`, `s3`, `readConcurrency`, then the
114
+ * index options.
115
+ *
116
+ * Guarantees: a misconfiguration surfaces at construction, naming the option,
117
+ * rather than as a raw AWS error on the first request.
118
+ */
119
+ export declare function assertBaseAdapterOptions(options: BaseAdapterOptions & CodecOptions): void;
120
+ /**
121
+ * Validate a `compression` config, honoring its allowed key set.
122
+ *
123
+ * Accepts: `config` — an object naming only {@link CompressionConfig}'s keys.
124
+ *
125
+ * Returns: nothing: the value is kept under its declared type, and this
126
+ * checks it.
127
+ *
128
+ * Throws: `VALIDATION` naming the offending field, dotted under
129
+ * `compression`.
130
+ */
131
+ export declare function assertCompression(config: CompressionConfig): void;
132
+ /**
133
+ * Validate an `s3` offload config, honoring its allowed key set.
134
+ *
135
+ * Accepts: `config` — an object naming only {@link S3OffloadConfig}'s keys.
136
+ * `config.clientConfig`, when given, must be an object that is neither `null`
137
+ * nor an array; its own keys are not checked. `config.createS3Client`, when
138
+ * given, must be a function.
139
+ *
140
+ * Returns: nothing: the value is kept under its declared type, and this
141
+ * checks it.
142
+ *
143
+ * Throws: `VALIDATION` naming the offending field, dotted under `s3`.
144
+ */
145
+ export declare function assertS3(config: S3OffloadConfig): void;