@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.
- package/README.md +1720 -154
- package/dist/backfill/backfill.d.ts +168 -0
- package/dist/backfill/backfill.js +393 -0
- package/dist/checkpointer/actions/delete-thread.d.ts +47 -6
- package/dist/checkpointer/actions/delete-thread.js +58 -21
- package/dist/checkpointer/actions/get-tuple.d.ts +29 -4
- package/dist/checkpointer/actions/get-tuple.js +44 -10
- package/dist/checkpointer/actions/list.d.ts +46 -4
- package/dist/checkpointer/actions/list.js +121 -66
- package/dist/checkpointer/actions/put-writes.d.ts +41 -9
- package/dist/checkpointer/actions/put-writes.js +62 -77
- package/dist/checkpointer/actions/put.d.ts +83 -4
- package/dist/checkpointer/actions/put.js +177 -25
- package/dist/checkpointer/internal/delta-history.d.ts +112 -0
- package/dist/checkpointer/internal/delta-history.js +252 -0
- package/dist/checkpointer/internal/listing.d.ts +149 -0
- package/dist/checkpointer/internal/listing.js +245 -0
- package/dist/checkpointer/internal/parse.d.ts +262 -0
- package/dist/checkpointer/internal/parse.js +372 -0
- package/dist/checkpointer/internal/pending-writes.d.ts +275 -0
- package/dist/checkpointer/internal/pending-writes.js +588 -0
- package/dist/checkpointer/internal/read.d.ts +130 -0
- package/dist/checkpointer/internal/read.js +264 -0
- package/dist/checkpointer/internal/rows.d.ts +571 -0
- package/dist/checkpointer/internal/rows.js +834 -0
- package/dist/checkpointer/internal/setup.d.ts +42 -19
- package/dist/checkpointer/internal/setup.js +65 -29
- package/dist/checkpointer/saver.d.ts +256 -16
- package/dist/checkpointer/saver.js +275 -29
- package/dist/checkpointer/types.d.ts +39 -39
- package/dist/checkpointer/types.js +10 -1
- package/dist/factory/factory.d.ts +134 -28
- package/dist/factory/factory.js +240 -21
- package/dist/factory/types.d.ts +76 -0
- package/dist/factory/types.js +10 -0
- package/dist/history/actions/add-messages.d.ts +31 -4
- package/dist/history/actions/add-messages.js +38 -58
- package/dist/history/actions/clear.d.ts +49 -6
- package/dist/history/actions/clear.js +66 -14
- package/dist/history/actions/get-messages.d.ts +54 -6
- package/dist/history/actions/get-messages.js +126 -43
- package/dist/history/actions/list-sessions.d.ts +52 -10
- package/dist/history/actions/list-sessions.js +139 -40
- package/dist/history/actions/reconcile-count.d.ts +42 -10
- package/dist/history/actions/reconcile-count.js +45 -45
- package/dist/history/chat-message-history.d.ts +220 -33
- package/dist/history/chat-message-history.js +240 -43
- package/dist/history/internal/append.d.ts +212 -0
- package/dist/history/internal/append.js +500 -0
- package/dist/history/internal/message-read.d.ts +84 -0
- package/dist/history/internal/message-read.js +204 -0
- package/dist/history/internal/parse.d.ts +153 -0
- package/dist/history/internal/parse.js +252 -0
- package/dist/history/internal/rows.d.ts +195 -0
- package/dist/history/internal/rows.js +250 -0
- package/dist/history/internal/session.d.ts +331 -0
- package/dist/history/internal/session.js +628 -0
- package/dist/history/internal/setup.d.ts +52 -17
- package/dist/history/internal/setup.js +92 -21
- package/dist/history/session-adapter.d.ts +102 -7
- package/dist/history/session-adapter.js +103 -9
- package/dist/history/types.d.ts +80 -29
- package/dist/history/types.js +10 -1
- package/dist/index.d.ts +42 -11
- package/dist/index.js +33 -12
- package/dist/shared/adapter.d.ts +135 -0
- package/dist/shared/adapter.js +143 -0
- package/dist/shared/clock.d.ts +51 -2
- package/dist/shared/clock.js +57 -2
- package/dist/shared/codec/codec.d.ts +288 -13
- package/dist/shared/codec/codec.js +416 -19
- package/dist/shared/codec/compression.d.ts +43 -7
- package/dist/shared/codec/compression.js +53 -13
- package/dist/shared/codec/json-serde.d.ts +76 -4
- package/dist/shared/codec/json-serde.js +181 -8
- package/dist/shared/codec/s3/client-types.d.ts +53 -0
- package/dist/shared/codec/s3/client-types.js +26 -0
- package/dist/shared/codec/s3/client.d.ts +43 -10
- package/dist/shared/codec/s3/client.js +82 -9
- package/dist/shared/codec/s3/config.d.ts +242 -11
- package/dist/shared/codec/s3/config.js +293 -11
- package/dist/shared/codec/s3/lifecycle.d.ts +164 -6
- package/dist/shared/codec/s3/lifecycle.js +335 -27
- package/dist/shared/codec/s3/offloader.d.ts +393 -18
- package/dist/shared/codec/s3/offloader.js +595 -37
- package/dist/shared/concurrency.d.ts +43 -0
- package/dist/shared/concurrency.js +78 -0
- package/dist/shared/dynamodb/abort.d.ts +47 -0
- package/dist/shared/dynamodb/abort.js +59 -0
- package/dist/shared/dynamodb/batch-write.d.ts +77 -14
- package/dist/shared/dynamodb/batch-write.js +146 -27
- package/dist/shared/dynamodb/cancellation.d.ts +121 -4
- package/dist/shared/dynamodb/cancellation.js +147 -3
- package/dist/shared/dynamodb/client.d.ts +162 -8
- package/dist/shared/dynamodb/client.js +153 -5
- package/dist/shared/dynamodb/idempotent-write.d.ts +551 -0
- package/dist/shared/dynamodb/idempotent-write.js +593 -0
- package/dist/shared/dynamodb/paginate.d.ts +105 -9
- package/dist/shared/dynamodb/paginate.js +175 -7
- package/dist/shared/dynamodb/partition-delete.d.ts +185 -14
- package/dist/shared/dynamodb/partition-delete.js +314 -44
- package/dist/shared/dynamodb/recency-index.d.ts +231 -0
- package/dist/shared/dynamodb/recency-index.js +377 -0
- package/dist/shared/dynamodb/retry.d.ts +276 -8
- package/dist/shared/dynamodb/retry.js +433 -23
- package/dist/shared/dynamodb/table-schema.d.ts +190 -0
- package/dist/shared/dynamodb/table-schema.js +209 -0
- package/dist/shared/errors/base-error.d.ts +184 -10
- package/dist/shared/errors/base-error.js +160 -14
- package/dist/shared/errors/boundary.d.ts +71 -0
- package/dist/shared/errors/boundary.js +143 -0
- package/dist/shared/errors/classify.d.ts +97 -0
- package/dist/shared/errors/classify.js +257 -0
- package/dist/shared/errors/error-code.d.ts +77 -2
- package/dist/shared/errors/error-code.js +83 -1
- package/dist/shared/errors/errors.d.ts +158 -59
- package/dist/shared/errors/errors.js +219 -92
- package/dist/shared/logging/logger.d.ts +69 -3
- package/dist/shared/logging/logger.js +97 -3
- package/dist/shared/logging/redaction.d.ts +92 -8
- package/dist/shared/logging/redaction.js +273 -17
- package/dist/shared/logging/secret-patterns.d.ts +149 -19
- package/dist/shared/logging/secret-patterns.js +188 -27
- package/dist/shared/logging/truncate.d.ts +197 -0
- package/dist/shared/logging/truncate.js +231 -0
- package/dist/shared/options.d.ts +59 -7
- package/dist/shared/options.js +9 -1
- package/dist/shared/ulid.d.ts +77 -7
- package/dist/shared/ulid.js +103 -8
- package/dist/shared/validation/collaborators.d.ts +141 -0
- package/dist/shared/validation/collaborators.js +188 -0
- package/dist/shared/validation/option-shape.d.ts +89 -0
- package/dist/shared/validation/option-shape.js +113 -0
- package/dist/shared/validation/options.d.ts +145 -0
- package/dist/shared/validation/options.js +328 -0
- package/dist/shared/validation/primitives.d.ts +288 -21
- package/dist/shared/validation/primitives.js +353 -50
- package/dist/shared/validation/ttl.d.ts +66 -10
- package/dist/shared/validation/ttl.js +113 -15
- package/dist/store/actions/list-namespaces.d.ts +76 -6
- package/dist/store/actions/list-namespaces.js +166 -24
- package/dist/store/actions/put.d.ts +33 -8
- package/dist/store/actions/put.js +53 -60
- package/dist/store/actions/reconcile-vector-index.d.ts +31 -10
- package/dist/store/actions/reconcile-vector-index.js +34 -15
- package/dist/store/actions/search.d.ts +34 -6
- package/dist/store/actions/search.js +56 -51
- package/dist/store/internal/batch-plan.d.ts +26 -0
- package/dist/store/internal/batch-plan.js +109 -0
- package/dist/store/internal/filter.d.ts +36 -3
- package/dist/store/internal/filter.js +66 -15
- package/dist/store/internal/get-item.d.ts +45 -0
- package/dist/store/internal/get-item.js +115 -0
- package/dist/store/internal/item-write.d.ts +230 -0
- package/dist/store/internal/item-write.js +463 -0
- package/dist/store/internal/parse.d.ts +225 -0
- package/dist/store/internal/parse.js +350 -0
- package/dist/store/internal/rows.d.ts +355 -0
- package/dist/store/internal/rows.js +447 -0
- package/dist/store/internal/semantic-search.d.ts +161 -6
- package/dist/store/internal/semantic-search.js +360 -18
- package/dist/store/internal/setup.d.ts +77 -20
- package/dist/store/internal/setup.js +178 -47
- package/dist/store/internal/table-search.d.ts +100 -0
- package/dist/store/internal/table-search.js +213 -0
- package/dist/store/internal/vector-index.d.ts +247 -0
- package/dist/store/internal/vector-index.js +546 -0
- package/dist/store/store.d.ts +270 -17
- package/dist/store/store.js +329 -38
- package/dist/store/types.d.ts +76 -26
- package/dist/store/types.js +13 -1
- package/dist/store/vector-backend.d.ts +64 -4
- package/dist/store/vector-backend.js +15 -1
- package/package.json +58 -36
- package/dist/checkpointer/actions/delete-thread.d.ts.map +0 -1
- package/dist/checkpointer/actions/delete-thread.js.map +0 -1
- package/dist/checkpointer/actions/get-tuple.d.ts.map +0 -1
- package/dist/checkpointer/actions/get-tuple.js.map +0 -1
- package/dist/checkpointer/actions/list.d.ts.map +0 -1
- package/dist/checkpointer/actions/list.js.map +0 -1
- package/dist/checkpointer/actions/put-writes.d.ts.map +0 -1
- package/dist/checkpointer/actions/put-writes.js.map +0 -1
- package/dist/checkpointer/actions/put.d.ts.map +0 -1
- package/dist/checkpointer/actions/put.js.map +0 -1
- package/dist/checkpointer/internal/assemble.d.ts +0 -10
- package/dist/checkpointer/internal/assemble.d.ts.map +0 -1
- package/dist/checkpointer/internal/assemble.js +0 -37
- package/dist/checkpointer/internal/assemble.js.map +0 -1
- package/dist/checkpointer/internal/configurable.d.ts +0 -13
- package/dist/checkpointer/internal/configurable.d.ts.map +0 -1
- package/dist/checkpointer/internal/configurable.js +0 -23
- package/dist/checkpointer/internal/configurable.js.map +0 -1
- package/dist/checkpointer/internal/fetch.d.ts +0 -10
- package/dist/checkpointer/internal/fetch.d.ts.map +0 -1
- package/dist/checkpointer/internal/fetch.js +0 -46
- package/dist/checkpointer/internal/fetch.js.map +0 -1
- package/dist/checkpointer/internal/filter-match.d.ts +0 -12
- package/dist/checkpointer/internal/filter-match.d.ts.map +0 -1
- package/dist/checkpointer/internal/filter-match.js +0 -14
- package/dist/checkpointer/internal/filter-match.js.map +0 -1
- package/dist/checkpointer/internal/item-reader.d.ts +0 -55
- package/dist/checkpointer/internal/item-reader.d.ts.map +0 -1
- package/dist/checkpointer/internal/item-reader.js +0 -88
- package/dist/checkpointer/internal/item-reader.js.map +0 -1
- package/dist/checkpointer/internal/item-writer.d.ts +0 -26
- package/dist/checkpointer/internal/item-writer.d.ts.map +0 -1
- package/dist/checkpointer/internal/item-writer.js +0 -92
- package/dist/checkpointer/internal/item-writer.js.map +0 -1
- package/dist/checkpointer/internal/keys.d.ts +0 -31
- package/dist/checkpointer/internal/keys.d.ts.map +0 -1
- package/dist/checkpointer/internal/keys.js +0 -87
- package/dist/checkpointer/internal/keys.js.map +0 -1
- package/dist/checkpointer/internal/query.d.ts +0 -20
- package/dist/checkpointer/internal/query.d.ts.map +0 -1
- package/dist/checkpointer/internal/query.js +0 -36
- package/dist/checkpointer/internal/query.js.map +0 -1
- package/dist/checkpointer/internal/setup.d.ts.map +0 -1
- package/dist/checkpointer/internal/setup.js.map +0 -1
- package/dist/checkpointer/internal/special-write-cas.d.ts +0 -30
- package/dist/checkpointer/internal/special-write-cas.d.ts.map +0 -1
- package/dist/checkpointer/internal/special-write-cas.js +0 -104
- package/dist/checkpointer/internal/special-write-cas.js.map +0 -1
- package/dist/checkpointer/internal/special-write-cleanup.d.ts +0 -24
- package/dist/checkpointer/internal/special-write-cleanup.d.ts.map +0 -1
- package/dist/checkpointer/internal/special-write-cleanup.js +0 -47
- package/dist/checkpointer/internal/special-write-cleanup.js.map +0 -1
- package/dist/checkpointer/internal/special-write-verify.d.ts +0 -54
- package/dist/checkpointer/internal/special-write-verify.d.ts.map +0 -1
- package/dist/checkpointer/internal/special-write-verify.js +0 -65
- package/dist/checkpointer/internal/special-write-verify.js.map +0 -1
- package/dist/checkpointer/internal/validation.d.ts +0 -13
- package/dist/checkpointer/internal/validation.d.ts.map +0 -1
- package/dist/checkpointer/internal/validation.js +0 -30
- package/dist/checkpointer/internal/validation.js.map +0 -1
- package/dist/checkpointer/internal/write-guard.d.ts +0 -13
- package/dist/checkpointer/internal/write-guard.d.ts.map +0 -1
- package/dist/checkpointer/internal/write-guard.js +0 -39
- package/dist/checkpointer/internal/write-guard.js.map +0 -1
- package/dist/checkpointer/internal/write-index.d.ts +0 -37
- package/dist/checkpointer/internal/write-index.d.ts.map +0 -1
- package/dist/checkpointer/internal/write-index.js +0 -42
- package/dist/checkpointer/internal/write-index.js.map +0 -1
- package/dist/checkpointer/saver.d.ts.map +0 -1
- package/dist/checkpointer/saver.js.map +0 -1
- package/dist/checkpointer/types.d.ts.map +0 -1
- package/dist/checkpointer/types.js.map +0 -1
- package/dist/factory/factory.d.ts.map +0 -1
- package/dist/factory/factory.js.map +0 -1
- package/dist/history/actions/add-messages.d.ts.map +0 -1
- package/dist/history/actions/add-messages.js.map +0 -1
- package/dist/history/actions/clear.d.ts.map +0 -1
- package/dist/history/actions/clear.js.map +0 -1
- package/dist/history/actions/get-messages.d.ts.map +0 -1
- package/dist/history/actions/get-messages.js.map +0 -1
- package/dist/history/actions/list-sessions.d.ts.map +0 -1
- package/dist/history/actions/list-sessions.js.map +0 -1
- package/dist/history/actions/reconcile-count.d.ts.map +0 -1
- package/dist/history/actions/reconcile-count.js.map +0 -1
- package/dist/history/chat-message-history.d.ts.map +0 -1
- package/dist/history/chat-message-history.js.map +0 -1
- package/dist/history/internal/append-saga.d.ts +0 -20
- package/dist/history/internal/append-saga.d.ts.map +0 -1
- package/dist/history/internal/append-saga.js +0 -35
- package/dist/history/internal/append-saga.js.map +0 -1
- package/dist/history/internal/compensation.d.ts +0 -21
- package/dist/history/internal/compensation.d.ts.map +0 -1
- package/dist/history/internal/compensation.js +0 -84
- package/dist/history/internal/compensation.js.map +0 -1
- package/dist/history/internal/item-mapper.d.ts +0 -12
- package/dist/history/internal/item-mapper.d.ts.map +0 -1
- package/dist/history/internal/item-mapper.js +0 -33
- package/dist/history/internal/item-mapper.js.map +0 -1
- package/dist/history/internal/keys.d.ts +0 -17
- package/dist/history/internal/keys.d.ts.map +0 -1
- package/dist/history/internal/keys.js +0 -49
- package/dist/history/internal/keys.js.map +0 -1
- package/dist/history/internal/message-chunker.d.ts +0 -14
- package/dist/history/internal/message-chunker.d.ts.map +0 -1
- package/dist/history/internal/message-chunker.js +0 -68
- package/dist/history/internal/message-chunker.js.map +0 -1
- package/dist/history/internal/message-transaction.d.ts +0 -26
- package/dist/history/internal/message-transaction.d.ts.map +0 -1
- package/dist/history/internal/message-transaction.js +0 -60
- package/dist/history/internal/message-transaction.js.map +0 -1
- package/dist/history/internal/query.d.ts +0 -10
- package/dist/history/internal/query.d.ts.map +0 -1
- package/dist/history/internal/query.js +0 -31
- package/dist/history/internal/query.js.map +0 -1
- package/dist/history/internal/session-count.d.ts +0 -41
- package/dist/history/internal/session-count.d.ts.map +0 -1
- package/dist/history/internal/session-count.js +0 -109
- package/dist/history/internal/session-count.js.map +0 -1
- package/dist/history/internal/session-title.d.ts +0 -20
- package/dist/history/internal/session-title.d.ts.map +0 -1
- package/dist/history/internal/session-title.js +0 -44
- package/dist/history/internal/session-title.js.map +0 -1
- package/dist/history/internal/session-update.d.ts +0 -28
- package/dist/history/internal/session-update.d.ts.map +0 -1
- package/dist/history/internal/session-update.js +0 -70
- package/dist/history/internal/session-update.js.map +0 -1
- package/dist/history/internal/setup.d.ts.map +0 -1
- package/dist/history/internal/setup.js.map +0 -1
- package/dist/history/internal/title-generator.d.ts +0 -13
- package/dist/history/internal/title-generator.d.ts.map +0 -1
- package/dist/history/internal/title-generator.js +0 -25
- package/dist/history/internal/title-generator.js.map +0 -1
- package/dist/history/internal/ttl-anchor.d.ts +0 -25
- package/dist/history/internal/ttl-anchor.d.ts.map +0 -1
- package/dist/history/internal/ttl-anchor.js +0 -38
- package/dist/history/internal/ttl-anchor.js.map +0 -1
- package/dist/history/internal/validation.d.ts +0 -9
- package/dist/history/internal/validation.d.ts.map +0 -1
- package/dist/history/internal/validation.js +0 -16
- package/dist/history/internal/validation.js.map +0 -1
- package/dist/history/session-adapter.d.ts.map +0 -1
- package/dist/history/session-adapter.js.map +0 -1
- package/dist/history/types.d.ts.map +0 -1
- package/dist/history/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/shared/clock.d.ts.map +0 -1
- package/dist/shared/clock.js.map +0 -1
- package/dist/shared/codec/codec.d.ts.map +0 -1
- package/dist/shared/codec/codec.js.map +0 -1
- package/dist/shared/codec/compression.d.ts.map +0 -1
- package/dist/shared/codec/compression.js.map +0 -1
- package/dist/shared/codec/descriptor-keys.d.ts +0 -4
- package/dist/shared/codec/descriptor-keys.d.ts.map +0 -1
- package/dist/shared/codec/descriptor-keys.js +0 -14
- package/dist/shared/codec/descriptor-keys.js.map +0 -1
- package/dist/shared/codec/json-serde.d.ts.map +0 -1
- package/dist/shared/codec/json-serde.js.map +0 -1
- package/dist/shared/codec/s3/client.d.ts.map +0 -1
- package/dist/shared/codec/s3/client.js.map +0 -1
- package/dist/shared/codec/s3/config.d.ts.map +0 -1
- package/dist/shared/codec/s3/config.js.map +0 -1
- package/dist/shared/codec/s3/delete.d.ts +0 -8
- package/dist/shared/codec/s3/delete.d.ts.map +0 -1
- package/dist/shared/codec/s3/delete.js +0 -29
- package/dist/shared/codec/s3/delete.js.map +0 -1
- package/dist/shared/codec/s3/lifecycle.d.ts.map +0 -1
- package/dist/shared/codec/s3/lifecycle.js.map +0 -1
- package/dist/shared/codec/s3/offloader.d.ts.map +0 -1
- package/dist/shared/codec/s3/offloader.js.map +0 -1
- package/dist/shared/codec/s3/orphans.d.ts +0 -18
- package/dist/shared/codec/s3/orphans.d.ts.map +0 -1
- package/dist/shared/codec/s3/orphans.js +0 -58
- package/dist/shared/codec/s3/orphans.js.map +0 -1
- package/dist/shared/codec/s3/read-write.d.ts +0 -14
- package/dist/shared/codec/s3/read-write.d.ts.map +0 -1
- package/dist/shared/codec/s3/read-write.js +0 -43
- package/dist/shared/codec/s3/read-write.js.map +0 -1
- package/dist/shared/codec/s3/retry.d.ts +0 -5
- package/dist/shared/codec/s3/retry.d.ts.map +0 -1
- package/dist/shared/codec/s3/retry.js +0 -25
- package/dist/shared/codec/s3/retry.js.map +0 -1
- package/dist/shared/constants.d.ts +0 -64
- package/dist/shared/constants.d.ts.map +0 -1
- package/dist/shared/constants.js +0 -67
- package/dist/shared/constants.js.map +0 -1
- package/dist/shared/dynamodb/backoff.d.ts +0 -15
- package/dist/shared/dynamodb/backoff.d.ts.map +0 -1
- package/dist/shared/dynamodb/backoff.js +0 -48
- package/dist/shared/dynamodb/backoff.js.map +0 -1
- package/dist/shared/dynamodb/batch-write.d.ts.map +0 -1
- package/dist/shared/dynamodb/batch-write.js.map +0 -1
- package/dist/shared/dynamodb/cancellation.d.ts.map +0 -1
- package/dist/shared/dynamodb/cancellation.js.map +0 -1
- package/dist/shared/dynamodb/client.d.ts.map +0 -1
- package/dist/shared/dynamodb/client.js.map +0 -1
- package/dist/shared/dynamodb/conditional-put.d.ts +0 -51
- package/dist/shared/dynamodb/conditional-put.d.ts.map +0 -1
- package/dist/shared/dynamodb/conditional-put.js +0 -59
- package/dist/shared/dynamodb/conditional-put.js.map +0 -1
- package/dist/shared/dynamodb/drain-unprocessed.d.ts +0 -19
- package/dist/shared/dynamodb/drain-unprocessed.d.ts.map +0 -1
- package/dist/shared/dynamodb/drain-unprocessed.js +0 -44
- package/dist/shared/dynamodb/drain-unprocessed.js.map +0 -1
- package/dist/shared/dynamodb/paginate-core.d.ts +0 -22
- package/dist/shared/dynamodb/paginate-core.d.ts.map +0 -1
- package/dist/shared/dynamodb/paginate-core.js +0 -52
- package/dist/shared/dynamodb/paginate-core.js.map +0 -1
- package/dist/shared/dynamodb/paginate.d.ts.map +0 -1
- package/dist/shared/dynamodb/paginate.js.map +0 -1
- package/dist/shared/dynamodb/partition-delete.d.ts.map +0 -1
- package/dist/shared/dynamodb/partition-delete.js.map +0 -1
- package/dist/shared/dynamodb/retry-classifier.d.ts +0 -9
- package/dist/shared/dynamodb/retry-classifier.d.ts.map +0 -1
- package/dist/shared/dynamodb/retry-classifier.js +0 -87
- package/dist/shared/dynamodb/retry-classifier.js.map +0 -1
- package/dist/shared/dynamodb/retry.d.ts.map +0 -1
- package/dist/shared/dynamodb/retry.js.map +0 -1
- package/dist/shared/dynamodb/scan.d.ts +0 -15
- package/dist/shared/dynamodb/scan.d.ts.map +0 -1
- package/dist/shared/dynamodb/scan.js +0 -20
- package/dist/shared/dynamodb/scan.js.map +0 -1
- package/dist/shared/dynamodb/types.d.ts +0 -24
- package/dist/shared/dynamodb/types.d.ts.map +0 -1
- package/dist/shared/dynamodb/types.js +0 -3
- package/dist/shared/dynamodb/types.js.map +0 -1
- package/dist/shared/errors/base-error.d.ts.map +0 -1
- package/dist/shared/errors/base-error.js.map +0 -1
- package/dist/shared/errors/error-code.d.ts.map +0 -1
- package/dist/shared/errors/error-code.js.map +0 -1
- package/dist/shared/errors/errors.d.ts.map +0 -1
- package/dist/shared/errors/errors.js.map +0 -1
- package/dist/shared/errors/wrap-error.d.ts +0 -16
- package/dist/shared/errors/wrap-error.d.ts.map +0 -1
- package/dist/shared/errors/wrap-error.js +0 -30
- package/dist/shared/errors/wrap-error.js.map +0 -1
- package/dist/shared/logging/logger.d.ts.map +0 -1
- package/dist/shared/logging/logger.js.map +0 -1
- package/dist/shared/logging/redaction-walk.d.ts +0 -23
- package/dist/shared/logging/redaction-walk.d.ts.map +0 -1
- package/dist/shared/logging/redaction-walk.js +0 -92
- package/dist/shared/logging/redaction-walk.js.map +0 -1
- package/dist/shared/logging/redaction.d.ts.map +0 -1
- package/dist/shared/logging/redaction.js.map +0 -1
- package/dist/shared/logging/secret-patterns.d.ts.map +0 -1
- package/dist/shared/logging/secret-patterns.js.map +0 -1
- package/dist/shared/options.d.ts.map +0 -1
- package/dist/shared/options.js.map +0 -1
- package/dist/shared/ulid.d.ts.map +0 -1
- package/dist/shared/ulid.js.map +0 -1
- package/dist/shared/validation/primitives.d.ts.map +0 -1
- package/dist/shared/validation/primitives.js.map +0 -1
- package/dist/shared/validation/ttl.d.ts.map +0 -1
- package/dist/shared/validation/ttl.js.map +0 -1
- package/dist/store/actions/get.d.ts +0 -5
- package/dist/store/actions/get.d.ts.map +0 -1
- package/dist/store/actions/get.js +0 -35
- package/dist/store/actions/get.js.map +0 -1
- package/dist/store/actions/list-namespaces.d.ts.map +0 -1
- package/dist/store/actions/list-namespaces.js.map +0 -1
- package/dist/store/actions/put.d.ts.map +0 -1
- package/dist/store/actions/put.js.map +0 -1
- package/dist/store/actions/reconcile-vector-index.d.ts.map +0 -1
- package/dist/store/actions/reconcile-vector-index.js.map +0 -1
- package/dist/store/actions/search.d.ts.map +0 -1
- package/dist/store/actions/search.js.map +0 -1
- package/dist/store/internal/backend-search.d.ts +0 -5
- package/dist/store/internal/backend-search.d.ts.map +0 -1
- package/dist/store/internal/backend-search.js +0 -68
- package/dist/store/internal/backend-search.js.map +0 -1
- package/dist/store/internal/filter.d.ts.map +0 -1
- package/dist/store/internal/filter.js.map +0 -1
- package/dist/store/internal/index-reconcile.d.ts +0 -22
- package/dist/store/internal/index-reconcile.d.ts.map +0 -1
- package/dist/store/internal/index-reconcile.js +0 -105
- package/dist/store/internal/index-reconcile.js.map +0 -1
- package/dist/store/internal/index-sync.d.ts +0 -11
- package/dist/store/internal/index-sync.d.ts.map +0 -1
- package/dist/store/internal/index-sync.js +0 -26
- package/dist/store/internal/index-sync.js.map +0 -1
- package/dist/store/internal/item-mapper.d.ts +0 -25
- package/dist/store/internal/item-mapper.d.ts.map +0 -1
- package/dist/store/internal/item-mapper.js +0 -53
- package/dist/store/internal/item-mapper.js.map +0 -1
- package/dist/store/internal/keys.d.ts +0 -18
- package/dist/store/internal/keys.d.ts.map +0 -1
- package/dist/store/internal/keys.js +0 -42
- package/dist/store/internal/keys.js.map +0 -1
- package/dist/store/internal/namespace-match.d.ts +0 -12
- package/dist/store/internal/namespace-match.d.ts.map +0 -1
- package/dist/store/internal/namespace-match.js +0 -41
- package/dist/store/internal/namespace-match.js.map +0 -1
- package/dist/store/internal/overwrite-swap.d.ts +0 -33
- package/dist/store/internal/overwrite-swap.d.ts.map +0 -1
- package/dist/store/internal/overwrite-swap.js +0 -62
- package/dist/store/internal/overwrite-swap.js.map +0 -1
- package/dist/store/internal/persist.d.ts +0 -27
- package/dist/store/internal/persist.d.ts.map +0 -1
- package/dist/store/internal/persist.js +0 -59
- package/dist/store/internal/persist.js.map +0 -1
- package/dist/store/internal/query.d.ts +0 -6
- package/dist/store/internal/query.d.ts.map +0 -1
- package/dist/store/internal/query.js +0 -32
- package/dist/store/internal/query.js.map +0 -1
- package/dist/store/internal/ranker.d.ts +0 -13
- package/dist/store/internal/ranker.d.ts.map +0 -1
- package/dist/store/internal/ranker.js +0 -31
- package/dist/store/internal/ranker.js.map +0 -1
- package/dist/store/internal/read-existing.d.ts +0 -19
- package/dist/store/internal/read-existing.d.ts.map +0 -1
- package/dist/store/internal/read-existing.js +0 -29
- package/dist/store/internal/read-existing.js.map +0 -1
- package/dist/store/internal/score-direction.d.ts +0 -32
- package/dist/store/internal/score-direction.d.ts.map +0 -1
- package/dist/store/internal/score-direction.js +0 -39
- package/dist/store/internal/score-direction.js.map +0 -1
- package/dist/store/internal/search-filter.d.ts +0 -4
- package/dist/store/internal/search-filter.d.ts.map +0 -1
- package/dist/store/internal/search-filter.js +0 -11
- package/dist/store/internal/search-filter.js.map +0 -1
- package/dist/store/internal/semantic-search.d.ts.map +0 -1
- package/dist/store/internal/semantic-search.js.map +0 -1
- package/dist/store/internal/setup.d.ts.map +0 -1
- package/dist/store/internal/setup.js.map +0 -1
- package/dist/store/internal/validation.d.ts +0 -13
- package/dist/store/internal/validation.d.ts.map +0 -1
- package/dist/store/internal/validation.js +0 -35
- package/dist/store/internal/validation.js.map +0 -1
- package/dist/store/internal/write-verify.d.ts +0 -37
- package/dist/store/internal/write-verify.d.ts.map +0 -1
- package/dist/store/internal/write-verify.js +0 -68
- package/dist/store/internal/write-verify.js.map +0 -1
- package/dist/store/store.d.ts.map +0 -1
- package/dist/store/store.js.map +0 -1
- package/dist/store/types.d.ts.map +0 -1
- package/dist/store/types.js.map +0 -1
- package/dist/store/vector-backend.d.ts.map +0 -1
- 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;
|