@kensio/yulin 0.45.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.d.ts +37 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.js +63 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.js.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.d.ts.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js +2 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.d.ts +32 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.js +100 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.js.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.d.ts +22 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.js +55 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.js.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.d.ts +11 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.js +16 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.js.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts +9 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js +20 -17
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.d.ts +21 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.js +28 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.js.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts +8 -20
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js +19 -32
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.d.ts +11 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.d.ts.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.js +18 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.js.map +1 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.d.ts +17 -4
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.d.ts.map +1 -1
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.js +45 -16
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.js.map +1 -1
- package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.d.ts +6 -4
- package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.d.ts.map +1 -1
- package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.js +7 -6
- package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.js.map +1 -1
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.d.ts +2 -2
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.d.ts.map +1 -1
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.js +8 -7
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.js.map +1 -1
- package/dist/service/dynamodb/command/query/sim-dynamodb-query.d.ts.map +1 -1
- package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +18 -6
- package/dist/service/dynamodb/command/query/sim-dynamodb-query.js.map +1 -1
- package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.d.ts.map +1 -1
- package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
- package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js.map +1 -1
- package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.d.ts +20 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.d.ts.map +1 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.js +20 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.js.map +1 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +12 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts.map +1 -1
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +19 -1
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js.map +1 -1
- package/dist/service/dynamodb/command/read/sim-dynamodb-select.d.ts +18 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-select.d.ts.map +1 -1
- package/dist/service/dynamodb/command/read/sim-dynamodb-select.js +35 -5
- package/dist/service/dynamodb/command/read/sim-dynamodb-select.js.map +1 -1
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.d.ts +2 -2
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.d.ts.map +1 -1
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.js +3 -3
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.js.map +1 -1
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.d.ts.map +1 -1
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +13 -5
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js.map +1 -1
- package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts.map +1 -1
- package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +0 -1
- package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js.map +1 -1
- package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.d.ts +2 -0
- package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.d.ts.map +1 -1
- package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.js +3 -0
- package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.js.map +1 -1
- package/dist/service/dynamodb/command/sim-dynamodb-command.types.d.ts +1 -1
- package/dist/service/dynamodb/command/sim-dynamodb-command.types.d.ts.map +1 -1
- package/dist/service/dynamodb/command/table/sim-dynamodb-create-table.d.ts.map +1 -1
- package/dist/service/dynamodb/command/table/sim-dynamodb-create-table.js +6 -2
- package/dist/service/dynamodb/command/table/sim-dynamodb-create-table.js.map +1 -1
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.d.ts +6 -6
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.d.ts.map +1 -1
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.js +6 -19
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.js.map +1 -1
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.d.ts +15 -0
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.d.ts.map +1 -0
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.js +50 -0
- package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.js.map +1 -0
- package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.d.ts +38 -0
- package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.d.ts.map +1 -0
- package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.js +39 -0
- package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.js.map +1 -0
- package/dist/service/dynamodb/command/table/table.command.d.ts +36 -1
- package/dist/service/dynamodb/command/table/table.command.d.ts.map +1 -1
- package/dist/service/dynamodb/command/table/table.types.d.ts +54 -0
- package/dist/service/dynamodb/command/table/table.types.d.ts.map +1 -1
- package/dist/service/dynamodb/command/time-to-live/sim-dynamodb-time-to-live-commands.js +3 -3
- package/dist/service/dynamodb/command/time-to-live/sim-dynamodb-time-to-live-commands.js.map +1 -1
- package/dist/service/dynamodb/document/sim-dynamodb-document-route.d.ts +1 -1
- package/dist/service/dynamodb/document/sim-dynamodb-document-route.d.ts.map +1 -1
- package/dist/service/dynamodb/document/sim-dynamodb-document-routes.d.ts.map +1 -1
- package/dist/service/dynamodb/document/sim-dynamodb-document-routes.js.map +1 -1
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.d.ts +11 -1
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.d.ts.map +1 -1
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.js +12 -1
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.js.map +1 -1
- package/dist/service/dynamodb/sdk/sim-dynamodb-sdk-command-router.d.ts.map +1 -1
- package/dist/service/dynamodb/sdk/sim-dynamodb-sdk-command-router.js +4 -0
- package/dist/service/dynamodb/sdk/sim-dynamodb-sdk-command-router.js.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.d.ts +35 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.js +42 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.d.ts +43 -11
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.d.ts.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.js +65 -2
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.js.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.d.ts +39 -14
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.d.ts.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.js +61 -61
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.js.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.d.ts +44 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.js +2 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.d.ts +58 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.js +77 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.d.ts +55 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.js +71 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.d.ts +50 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.js +82 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.d.ts +13 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.js +19 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.d.ts +17 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.js +17 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.d.ts +15 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.d.ts.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.js +21 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.js.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.d.ts +6 -7
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.d.ts.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.js +7 -11
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.js.map +1 -1
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.d.ts +76 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.js +107 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.d.ts +12 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.js +42 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.d.ts +35 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.js +59 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.d.ts +21 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.js +47 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.d.ts +11 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.js +29 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.d.ts +65 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.js +106 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.d.ts +31 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.js +47 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.d.ts +6 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.js +40 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.d.ts +34 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.js +61 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.d.ts +38 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.js +74 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.d.ts +54 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.js +2 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.js.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.d.ts +59 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.d.ts.map +1 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.js +77 -0
- package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.js.map +1 -0
- package/dist/service/dynamodb/sim-dynamodb.d.ts +6 -14
- package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -1
- package/dist/service/dynamodb/sim-dynamodb.js +8 -1
- package/dist/service/dynamodb/sim-dynamodb.js.map +1 -1
- package/dist/service/dynamodb/sim-dynamodb.types.d.ts +26 -0
- package/dist/service/dynamodb/sim-dynamodb.types.d.ts.map +1 -0
- package/dist/service/dynamodb/sim-dynamodb.types.js +2 -0
- package/dist/service/dynamodb/sim-dynamodb.types.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.d.ts +14 -0
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.js +33 -0
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.d.ts +21 -0
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.js +53 -27
- package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-index-update.d.ts +23 -0
- package/dist/service/dynamodb/table/sim-dynamodb-index-update.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-index-update.js +88 -0
- package/dist/service/dynamodb/table/sim-dynamodb-index-update.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-item-collection.d.ts +7 -0
- package/dist/service/dynamodb/table/sim-dynamodb-item-collection.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-item-collection.js +6 -3
- package/dist/service/dynamodb/table/sim-dynamodb-item-collection.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-read-view.d.ts +76 -0
- package/dist/service/dynamodb/table/sim-dynamodb-read-view.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-read-view.js +2 -0
- package/dist/service/dynamodb/table/sim-dynamodb-read-view.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.d.ts +30 -0
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.js +39 -0
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.d.ts +34 -20
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.js +47 -50
- package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-billing.d.ts +9 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-billing.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-billing.js +17 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-billing.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-definition.d.ts +53 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-definition.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-definition.js +63 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-definition.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-description.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-description.js +2 -2
- package/dist/service/dynamodb/table/sim-dynamodb-table-description.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.d.ts +29 -2
- package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.js +45 -4
- package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.d.ts +26 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.js +30 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-scan.d.ts +2 -2
- package/dist/service/dynamodb/table/sim-dynamodb-table-scan.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-scan.js +1 -2
- package/dist/service/dynamodb/table/sim-dynamodb-table-scan.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table-update.d.ts +27 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-update.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-update.js +79 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-update.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-view.d.ts +67 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-view.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-view.js +90 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table-view.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-table.d.ts +49 -46
- package/dist/service/dynamodb/table/sim-dynamodb-table.d.ts.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-table.js +87 -79
- package/dist/service/dynamodb/table/sim-dynamodb-table.js.map +1 -1
- package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.d.ts +21 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.js +2 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.d.ts +17 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.js +24 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.js.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.d.ts +16 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.d.ts.map +1 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.js +32 -0
- package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.js.map +1 -0
- package/dist/service/dynamodb/time-to-live/{sim-dynamodb-table-expiry.d.ts → sim-dynamodb-table-time-to-live.d.ts} +28 -9
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-time-to-live.d.ts.map +1 -0
- package/dist/service/dynamodb/time-to-live/{sim-dynamodb-table-expiry.js → sim-dynamodb-table-time-to-live.js} +32 -5
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-time-to-live.js.map +1 -0
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.d.ts +2 -1
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.d.ts.map +1 -1
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.js +2 -1
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.js.map +1 -1
- package/package.json +1 -1
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-expiry.d.ts.map +0 -1
- package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-expiry.js.map +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { SimDynamoDbAttributeValue } from "../command/item/item.types.js";
|
|
2
|
+
import type { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
|
|
3
|
+
import type { SimDynamoDbAttributeDefinitions } from "../table/sim-dynamodb-attribute-definitions.js";
|
|
4
|
+
import { SimDynamoDbItemKey } from "../table/sim-dynamodb-item-key.js";
|
|
5
|
+
import type { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
|
|
6
|
+
interface SimDynamoDbIndexKeysProperties {
|
|
7
|
+
readonly indexName: string;
|
|
8
|
+
readonly indexKeySchema: SimDynamoDbKeySchema;
|
|
9
|
+
readonly tableKeySchema: SimDynamoDbKeySchema;
|
|
10
|
+
readonly attributeDefinitions: SimDynamoDbAttributeDefinitions;
|
|
11
|
+
readonly tableItemKey: SimDynamoDbItemKey;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* How one index entry is keyed and identified.
|
|
15
|
+
*
|
|
16
|
+
* An entry is keyed by the index key, which says where it sits, and identified
|
|
17
|
+
* by the table key, which says which item it is. An index key is not unique, so
|
|
18
|
+
* neither half names an entry on its own.
|
|
19
|
+
*
|
|
20
|
+
* That is why the entry has to carry both, why a pagination token carries both,
|
|
21
|
+
* and why a token missing either is refused rather than resumed from.
|
|
22
|
+
*/
|
|
23
|
+
export declare class SimDynamoDbIndexKeys {
|
|
24
|
+
/**
|
|
25
|
+
* The index key and the table key together.
|
|
26
|
+
*/
|
|
27
|
+
readonly attributeNames: ReadonlySet<string>;
|
|
28
|
+
/**
|
|
29
|
+
* The index key as the entries are marshalled by, which a scan orders on.
|
|
30
|
+
*/
|
|
31
|
+
readonly indexItemKey: SimDynamoDbItemKey;
|
|
32
|
+
private readonly indexName;
|
|
33
|
+
private readonly indexKeySchema;
|
|
34
|
+
private readonly tableKeySchema;
|
|
35
|
+
private readonly tableItemKey;
|
|
36
|
+
constructor(properties: SimDynamoDbIndexKeysProperties);
|
|
37
|
+
/**
|
|
38
|
+
* Whether the index holds an item, which needs the whole of the index key.
|
|
39
|
+
*
|
|
40
|
+
* This is what makes an index sparse. Nothing said so when the item was
|
|
41
|
+
* written: it is worked out here, when the index is read.
|
|
42
|
+
*/
|
|
43
|
+
holds(item: SimDynamoDbItem): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* The token naming the entry a walk stopped on, by both of its keys.
|
|
46
|
+
*/
|
|
47
|
+
tokenKey(item: SimDynamoDbItem): Record<string, SimDynamoDbAttributeValue>;
|
|
48
|
+
/**
|
|
49
|
+
* Refuse an `ExclusiveStartKey` this index could not have handed out.
|
|
50
|
+
*
|
|
51
|
+
* Both keys are required and nothing else is allowed alongside them. Without
|
|
52
|
+
* the table key the token names several entries, so resuming from it would
|
|
53
|
+
* repeat one or skip one.
|
|
54
|
+
*/
|
|
55
|
+
assertStartKey(key: SimDynamoDbItem): void;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=sim-dynamodb-index-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-keys.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAGhF,UAAU,8BAA8B;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,+BAA+B,CAAC;IAC/D,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;CAC3C;AAED;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;IACH,SAAgB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpD;;OAEG;IACH,SAAgB,YAAY,EAAE,kBAAkB,CAAC;IAEjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD,YAAY,UAAU,EAAE,8BAA8B,EAarD;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAIpC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAKzE;IAED;;;;;;OAMG;IACH,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAazC;CACF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
|
|
2
|
+
import { SimDynamoDbItemKey } from "../table/sim-dynamodb-item-key.js";
|
|
3
|
+
import { simDynamoDbPrimaryKeyAttributes } from "../table/sim-dynamodb-primary-key.js";
|
|
4
|
+
/**
|
|
5
|
+
* How one index entry is keyed and identified.
|
|
6
|
+
*
|
|
7
|
+
* An entry is keyed by the index key, which says where it sits, and identified
|
|
8
|
+
* by the table key, which says which item it is. An index key is not unique, so
|
|
9
|
+
* neither half names an entry on its own.
|
|
10
|
+
*
|
|
11
|
+
* That is why the entry has to carry both, why a pagination token carries both,
|
|
12
|
+
* and why a token missing either is refused rather than resumed from.
|
|
13
|
+
*/
|
|
14
|
+
export class SimDynamoDbIndexKeys {
|
|
15
|
+
/**
|
|
16
|
+
* The index key and the table key together.
|
|
17
|
+
*/
|
|
18
|
+
attributeNames;
|
|
19
|
+
/**
|
|
20
|
+
* The index key as the entries are marshalled by, which a scan orders on.
|
|
21
|
+
*/
|
|
22
|
+
indexItemKey;
|
|
23
|
+
indexName;
|
|
24
|
+
indexKeySchema;
|
|
25
|
+
tableKeySchema;
|
|
26
|
+
tableItemKey;
|
|
27
|
+
constructor(properties) {
|
|
28
|
+
this.indexName = properties.indexName;
|
|
29
|
+
this.indexKeySchema = properties.indexKeySchema;
|
|
30
|
+
this.tableKeySchema = properties.tableKeySchema;
|
|
31
|
+
this.tableItemKey = properties.tableItemKey;
|
|
32
|
+
this.indexItemKey = new SimDynamoDbItemKey(properties.indexKeySchema, properties.attributeDefinitions);
|
|
33
|
+
this.attributeNames = new Set([
|
|
34
|
+
...properties.indexKeySchema.attributeNames(),
|
|
35
|
+
...properties.tableKeySchema.attributeNames(),
|
|
36
|
+
]);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Whether the index holds an item, which needs the whole of the index key.
|
|
40
|
+
*
|
|
41
|
+
* This is what makes an index sparse. Nothing said so when the item was
|
|
42
|
+
* written: it is worked out here, when the index is read.
|
|
43
|
+
*/
|
|
44
|
+
holds(item) {
|
|
45
|
+
return this.indexKeySchema
|
|
46
|
+
.attributeNames()
|
|
47
|
+
.every((attributeName) => item.attribute(attributeName) !== undefined);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The token naming the entry a walk stopped on, by both of its keys.
|
|
51
|
+
*/
|
|
52
|
+
tokenKey(item) {
|
|
53
|
+
return {
|
|
54
|
+
...simDynamoDbPrimaryKeyAttributes(item, this.indexKeySchema),
|
|
55
|
+
...simDynamoDbPrimaryKeyAttributes(item, this.tableKeySchema),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Refuse an `ExclusiveStartKey` this index could not have handed out.
|
|
60
|
+
*
|
|
61
|
+
* Both keys are required and nothing else is allowed alongside them. Without
|
|
62
|
+
* the table key the token names several entries, so resuming from it would
|
|
63
|
+
* repeat one or skip one.
|
|
64
|
+
*/
|
|
65
|
+
assertStartKey(key) {
|
|
66
|
+
for (const attributeName of key.attributeNames()) {
|
|
67
|
+
if (!this.attributeNames.has(attributeName)) {
|
|
68
|
+
throw new SimDynamoDbValidationException(`The provided starting key is invalid: the Key names the attribute ` +
|
|
69
|
+
`${attributeName}, which is part of neither the index ` +
|
|
70
|
+
`${this.indexName} key nor the table's primary key`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
this.indexItemKey.of(key);
|
|
74
|
+
this.tableItemKey.of(key);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=sim-dynamodb-index-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-keys.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-keys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAG5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAUvF;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACa,cAAc,CAAsB;IAEpD;;OAEG;IACa,YAAY,CAAqB;IAEhC,SAAS,CAAS;IAClB,cAAc,CAAuB;IACrC,cAAc,CAAuB;IACrC,YAAY,CAAqB;IAElD,YAAY,UAA0C;QACpD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAkB,CACxC,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,oBAAoB,CAChC,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC;YAC5B,GAAG,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE;YAC7C,GAAG,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAqB;QACzB,OAAO,IAAI,CAAC,cAAc;aACvB,cAAc,EAAE;aAChB,KAAK,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAqB;QAC5B,OAAO;YACL,GAAG,+BAA+B,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;YAC7D,GAAG,+BAA+B,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,GAAoB;QACjC,KAAK,MAAM,aAAa,IAAI,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,8BAA8B,CACtC,oEAAoE;oBAClE,GAAG,aAAa,uCAAuC;oBACvD,GAAG,IAAI,CAAC,SAAS,kCAAkC,CACtD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { SimDynamoDbIndexStatus } from "../command/table/table.types.js";
|
|
2
|
+
interface SimDynamoDbIndexLifecycleProperties {
|
|
3
|
+
readonly indexName: string;
|
|
4
|
+
readonly backfills: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Where one global secondary index is between being declared and being read.
|
|
8
|
+
*
|
|
9
|
+
* An index is CREATING until the work that builds it has run, and cannot be
|
|
10
|
+
* read until it is ACTIVE. An index added to a table that already holds items
|
|
11
|
+
* also backfills, which is DynamoDB copying those items into it, and that is
|
|
12
|
+
* what `Backfilling` reports. An index declared on CreateTable has nothing to
|
|
13
|
+
* copy, so real DynamoDB leaves `Backfilling` out of its description
|
|
14
|
+
* altogether.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SimDynamoDbIndexLifecycle {
|
|
17
|
+
#private;
|
|
18
|
+
private readonly indexName;
|
|
19
|
+
private readonly backfills;
|
|
20
|
+
constructor(properties: SimDynamoDbIndexLifecycleProperties);
|
|
21
|
+
/**
|
|
22
|
+
* The lifecycle of an index declared on CreateTable, which does not backfill.
|
|
23
|
+
*/
|
|
24
|
+
static withTable(indexName: string): SimDynamoDbIndexLifecycle;
|
|
25
|
+
/**
|
|
26
|
+
* The lifecycle of an index added to a live table, which backfills.
|
|
27
|
+
*/
|
|
28
|
+
static backfilling(indexName: string): SimDynamoDbIndexLifecycle;
|
|
29
|
+
/**
|
|
30
|
+
* Where the index is now.
|
|
31
|
+
*/
|
|
32
|
+
get status(): SimDynamoDbIndexStatus;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the index is being filled with the items already on the table.
|
|
35
|
+
*
|
|
36
|
+
* Reported only while that is happening, which is how real DynamoDB reports
|
|
37
|
+
* it: an index that never backfilled has no `Backfilling` in its description.
|
|
38
|
+
*/
|
|
39
|
+
get backfilling(): boolean | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Finish building the index.
|
|
42
|
+
*/
|
|
43
|
+
activate(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Refuse a read of an index that is not ready to answer one.
|
|
46
|
+
*
|
|
47
|
+
* Real DynamoDB refuses a Query or a Scan against an index it is still
|
|
48
|
+
* building, rather than answering with the part of it that is filled in. An
|
|
49
|
+
* application that reads a new index too early gets this rather than a short
|
|
50
|
+
* answer, which is the whole point of the index having a status.
|
|
51
|
+
*/
|
|
52
|
+
assertReadable(): void;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=sim-dynamodb-index-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG9E,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,qBAAa,yBAAyB;;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IAGpC,YAAY,UAAU,EAAE,mCAAmC,EAG1D;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAE7D;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAE/D;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,sBAAsB,CAEnC;IAED;;;;;OAKG;IACH,IAAI,WAAW,IAAI,OAAO,GAAG,SAAS,CAMrC;IAED;;OAEG;IACH,QAAQ,IAAI,IAAI,CAEf;IAED;;;;;;;OAOG;IACH,cAAc,IAAI,IAAI,CAQrB;CACF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
|
|
2
|
+
/**
|
|
3
|
+
* Where one global secondary index is between being declared and being read.
|
|
4
|
+
*
|
|
5
|
+
* An index is CREATING until the work that builds it has run, and cannot be
|
|
6
|
+
* read until it is ACTIVE. An index added to a table that already holds items
|
|
7
|
+
* also backfills, which is DynamoDB copying those items into it, and that is
|
|
8
|
+
* what `Backfilling` reports. An index declared on CreateTable has nothing to
|
|
9
|
+
* copy, so real DynamoDB leaves `Backfilling` out of its description
|
|
10
|
+
* altogether.
|
|
11
|
+
*/
|
|
12
|
+
export class SimDynamoDbIndexLifecycle {
|
|
13
|
+
indexName;
|
|
14
|
+
backfills;
|
|
15
|
+
#status = "CREATING";
|
|
16
|
+
constructor(properties) {
|
|
17
|
+
this.indexName = properties.indexName;
|
|
18
|
+
this.backfills = properties.backfills;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The lifecycle of an index declared on CreateTable, which does not backfill.
|
|
22
|
+
*/
|
|
23
|
+
static withTable(indexName) {
|
|
24
|
+
return new this({ indexName, backfills: false });
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The lifecycle of an index added to a live table, which backfills.
|
|
28
|
+
*/
|
|
29
|
+
static backfilling(indexName) {
|
|
30
|
+
return new this({ indexName, backfills: true });
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Where the index is now.
|
|
34
|
+
*/
|
|
35
|
+
get status() {
|
|
36
|
+
return this.#status;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Whether the index is being filled with the items already on the table.
|
|
40
|
+
*
|
|
41
|
+
* Reported only while that is happening, which is how real DynamoDB reports
|
|
42
|
+
* it: an index that never backfilled has no `Backfilling` in its description.
|
|
43
|
+
*/
|
|
44
|
+
get backfilling() {
|
|
45
|
+
if (!this.backfills || this.#status !== "CREATING") {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Finish building the index.
|
|
52
|
+
*/
|
|
53
|
+
activate() {
|
|
54
|
+
this.#status = "ACTIVE";
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Refuse a read of an index that is not ready to answer one.
|
|
58
|
+
*
|
|
59
|
+
* Real DynamoDB refuses a Query or a Scan against an index it is still
|
|
60
|
+
* building, rather than answering with the part of it that is filled in. An
|
|
61
|
+
* application that reads a new index too early gets this rather than a short
|
|
62
|
+
* answer, which is the whole point of the index having a status.
|
|
63
|
+
*/
|
|
64
|
+
assertReadable() {
|
|
65
|
+
if (this.#status === "ACTIVE") {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
throw new SimDynamoDbValidationException(`Cannot read from backfilling global secondary index: ${this.indexName}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=sim-dynamodb-index-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-lifecycle.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAO5E;;;;;;;;;GASG;AACH,MAAM,OAAO,yBAAyB;IACnB,SAAS,CAAS;IAClB,SAAS,CAAU;IACpC,OAAO,GAA2B,UAAU,CAAC;IAE7C,YAAY,UAA+C;QACzD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,SAAiB;QAChC,OAAO,IAAI,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAiB;QAClC,OAAO,IAAI,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,8BAA8B,CACtC,wDAAwD,IAAI,CAAC,SAAS,EAAE,CACzE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { SimDynamoDbSecondaryIndex } from "./sim-dynamodb-secondary-index.js";
|
|
2
|
+
/**
|
|
3
|
+
* The most global secondary indexes one table holds.
|
|
4
|
+
*/
|
|
5
|
+
export declare const maxSimDynamoDbIndexes = 20;
|
|
6
|
+
/**
|
|
7
|
+
* The most local secondary indexes one table holds.
|
|
8
|
+
*
|
|
9
|
+
* There are fewer of these because they share the table's partitions rather
|
|
10
|
+
* than living apart from them.
|
|
11
|
+
*/
|
|
12
|
+
export declare const maxSimDynamoDbLocalIndexes = 5;
|
|
13
|
+
/**
|
|
14
|
+
* Refuse a request declaring more global secondary indexes than a table holds.
|
|
15
|
+
*
|
|
16
|
+
* This is checked before the indexes are read, so a request well over the cap
|
|
17
|
+
* is refused for being over it rather than for whatever is wrong with its
|
|
18
|
+
* twenty first index.
|
|
19
|
+
*/
|
|
20
|
+
export declare function assertSimDynamoDbIndexCount(count: number): void;
|
|
21
|
+
/**
|
|
22
|
+
* Refuse a request declaring more local secondary indexes than a table holds.
|
|
23
|
+
*/
|
|
24
|
+
export declare function assertSimDynamoDbLocalIndexCount(count: number): void;
|
|
25
|
+
/**
|
|
26
|
+
* Refuse a request declaring one index name twice.
|
|
27
|
+
*
|
|
28
|
+
* An index is reached by name, so two indexes sharing one leave a read with no
|
|
29
|
+
* way of saying which it meant. The two kinds share the one namespace, so a
|
|
30
|
+
* local secondary index cannot take the name of a global one either.
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertSimDynamoDbIndexNamesDistinct(elements: readonly SimDynamoDbSecondaryIndex[]): void;
|
|
33
|
+
/**
|
|
34
|
+
* Refuse an index a table has no room for, by count, name or projection.
|
|
35
|
+
*
|
|
36
|
+
* UpdateTable adds one index to a set that already passed these rules, so they
|
|
37
|
+
* are applied to the set the table would end up with rather than to the new
|
|
38
|
+
* index on its own.
|
|
39
|
+
*/
|
|
40
|
+
export declare function assertSimDynamoDbIndexAddable(elements: readonly SimDynamoDbSecondaryIndex[], added: SimDynamoDbSecondaryIndex): void;
|
|
41
|
+
/**
|
|
42
|
+
* Refuse a table projecting more attributes than DynamoDB lets it.
|
|
43
|
+
*
|
|
44
|
+
* The 20 an index projects is not the whole rule: a table is capped at 100
|
|
45
|
+
* across all of its indexes too, which six fully projecting indexes reach. An
|
|
46
|
+
* attribute projected into two indexes counts twice, so this is a plain sum
|
|
47
|
+
* rather than a count of distinct names, as it is on AWS.
|
|
48
|
+
*/
|
|
49
|
+
export declare function assertSimDynamoDbProjectedAttributeCount(elements: readonly SimDynamoDbSecondaryIndex[]): void;
|
|
50
|
+
//# sourceMappingURL=sim-dynamodb-index-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-limits.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-limits.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAO5C;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAO/D;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAOpE;AAED;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,SAAS,yBAAyB,EAAE,GAC7C,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,yBAAyB,EAAE,EAC9C,KAAK,EAAE,yBAAyB,GAC/B,IAAI,CAMN;AAED;;;;;;;GAOG;AACH,wBAAgB,wCAAwC,CACtD,QAAQ,EAAE,SAAS,yBAAyB,EAAE,GAC7C,IAAI,CAcN"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
|
|
2
|
+
/**
|
|
3
|
+
* The most global secondary indexes one table holds.
|
|
4
|
+
*/
|
|
5
|
+
export const maxSimDynamoDbIndexes = 20;
|
|
6
|
+
/**
|
|
7
|
+
* The most local secondary indexes one table holds.
|
|
8
|
+
*
|
|
9
|
+
* There are fewer of these because they share the table's partitions rather
|
|
10
|
+
* than living apart from them.
|
|
11
|
+
*/
|
|
12
|
+
export const maxSimDynamoDbLocalIndexes = 5;
|
|
13
|
+
/**
|
|
14
|
+
* The most NonKeyAttributes one table projects across all of its indexes.
|
|
15
|
+
*/
|
|
16
|
+
const maxProjectedAttributes = 100;
|
|
17
|
+
/**
|
|
18
|
+
* Refuse a request declaring more global secondary indexes than a table holds.
|
|
19
|
+
*
|
|
20
|
+
* This is checked before the indexes are read, so a request well over the cap
|
|
21
|
+
* is refused for being over it rather than for whatever is wrong with its
|
|
22
|
+
* twenty first index.
|
|
23
|
+
*/
|
|
24
|
+
export function assertSimDynamoDbIndexCount(count) {
|
|
25
|
+
if (count > maxSimDynamoDbIndexes) {
|
|
26
|
+
throw new SimDynamoDbValidationException(`${count.toString()} GlobalSecondaryIndexes were given, and a table ` +
|
|
27
|
+
`holds at most ${maxSimDynamoDbIndexes.toString()}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Refuse a request declaring more local secondary indexes than a table holds.
|
|
32
|
+
*/
|
|
33
|
+
export function assertSimDynamoDbLocalIndexCount(count) {
|
|
34
|
+
if (count > maxSimDynamoDbLocalIndexes) {
|
|
35
|
+
throw new SimDynamoDbValidationException(`${count.toString()} LocalSecondaryIndexes were given, and a table ` +
|
|
36
|
+
`holds at most ${maxSimDynamoDbLocalIndexes.toString()}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Refuse a request declaring one index name twice.
|
|
41
|
+
*
|
|
42
|
+
* An index is reached by name, so two indexes sharing one leave a read with no
|
|
43
|
+
* way of saying which it meant. The two kinds share the one namespace, so a
|
|
44
|
+
* local secondary index cannot take the name of a global one either.
|
|
45
|
+
*/
|
|
46
|
+
export function assertSimDynamoDbIndexNamesDistinct(elements) {
|
|
47
|
+
const names = new Set(elements.map((index) => index.name));
|
|
48
|
+
if (names.size !== elements.length) {
|
|
49
|
+
throw new SimDynamoDbValidationException("The request names an index more than once, and an index name is " +
|
|
50
|
+
"unique within a table across both kinds of secondary index");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Refuse an index a table has no room for, by count, name or projection.
|
|
55
|
+
*
|
|
56
|
+
* UpdateTable adds one index to a set that already passed these rules, so they
|
|
57
|
+
* are applied to the set the table would end up with rather than to the new
|
|
58
|
+
* index on its own.
|
|
59
|
+
*/
|
|
60
|
+
export function assertSimDynamoDbIndexAddable(elements, added) {
|
|
61
|
+
const all = [...elements, added];
|
|
62
|
+
assertSimDynamoDbIndexCount(all.length);
|
|
63
|
+
assertSimDynamoDbIndexNamesDistinct(all);
|
|
64
|
+
assertSimDynamoDbProjectedAttributeCount(all);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Refuse a table projecting more attributes than DynamoDB lets it.
|
|
68
|
+
*
|
|
69
|
+
* The 20 an index projects is not the whole rule: a table is capped at 100
|
|
70
|
+
* across all of its indexes too, which six fully projecting indexes reach. An
|
|
71
|
+
* attribute projected into two indexes counts twice, so this is a plain sum
|
|
72
|
+
* rather than a count of distinct names, as it is on AWS.
|
|
73
|
+
*/
|
|
74
|
+
export function assertSimDynamoDbProjectedAttributeCount(elements) {
|
|
75
|
+
const projected = elements.reduce((total, index) => total + index.projection.nonKeyAttributeCount, 0);
|
|
76
|
+
if (projected > maxProjectedAttributes) {
|
|
77
|
+
const most = maxProjectedAttributes.toString();
|
|
78
|
+
throw new SimDynamoDbValidationException(`${projected.toString()} NonKeyAttributes are projected across the ` +
|
|
79
|
+
`table's indexes, and a table projects at most ${most}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=sim-dynamodb-index-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-limits.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAG5E;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C;;GAEG;AACH,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,IAAI,KAAK,GAAG,qBAAqB,EAAE,CAAC;QAClC,MAAM,IAAI,8BAA8B,CACtC,GAAG,KAAK,CAAC,QAAQ,EAAE,kDAAkD;YACnE,iBAAiB,qBAAqB,CAAC,QAAQ,EAAE,EAAE,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAAC,KAAa;IAC5D,IAAI,KAAK,GAAG,0BAA0B,EAAE,CAAC;QACvC,MAAM,IAAI,8BAA8B,CACtC,GAAG,KAAK,CAAC,QAAQ,EAAE,iDAAiD;YAClE,iBAAiB,0BAA0B,CAAC,QAAQ,EAAE,EAAE,CAC3D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mCAAmC,CACjD,QAA8C;IAE9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,8BAA8B,CACtC,kEAAkE;YAChE,4DAA4D,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAA8C,EAC9C,KAAgC;IAEhC,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEjC,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,mCAAmC,CAAC,GAAG,CAAC,CAAC;IACzC,wCAAwC,CAAC,GAAG,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wCAAwC,CACtD,QAA8C;IAE9C,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAC/B,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAC/D,CAAC,CACF,CAAC;IAEF,IAAI,SAAS,GAAG,sBAAsB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC;QAE/C,MAAM,IAAI,8BAA8B,CACtC,GAAG,SAAS,CAAC,QAAQ,EAAE,6CAA6C;YAClE,iDAAiD,IAAI,EAAE,CAC1D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SimDynamoDbSecondaryIndex } from "./sim-dynamodb-secondary-index.js";
|
|
2
|
+
/**
|
|
3
|
+
* The index an `IndexName` names, refusing a name the table does not have.
|
|
4
|
+
*
|
|
5
|
+
* Real DynamoDB answers a name it does not have with
|
|
6
|
+
* `ResourceNotFoundException` rather than reading the table instead, since a
|
|
7
|
+
* read of an index that is not there is a read of nothing.
|
|
8
|
+
*
|
|
9
|
+
* The two kinds share one namespace, so the lookup is over both of them at once
|
|
10
|
+
* rather than over either collection.
|
|
11
|
+
*/
|
|
12
|
+
export declare function requiredSimDynamoDbIndex(elements: readonly SimDynamoDbSecondaryIndex[], indexName: string, tableName: string): SimDynamoDbSecondaryIndex;
|
|
13
|
+
//# sourceMappingURL=sim-dynamodb-index-lookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-lookup.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAEnF;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,EAC9C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,yBAAyB,CAU3B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SimDynamoDbResourceNotFoundException } from "../error/dynamodb.error.js";
|
|
2
|
+
/**
|
|
3
|
+
* The index an `IndexName` names, refusing a name the table does not have.
|
|
4
|
+
*
|
|
5
|
+
* Real DynamoDB answers a name it does not have with
|
|
6
|
+
* `ResourceNotFoundException` rather than reading the table instead, since a
|
|
7
|
+
* read of an index that is not there is a read of nothing.
|
|
8
|
+
*
|
|
9
|
+
* The two kinds share one namespace, so the lookup is over both of them at once
|
|
10
|
+
* rather than over either collection.
|
|
11
|
+
*/
|
|
12
|
+
export function requiredSimDynamoDbIndex(elements, indexName, tableName) {
|
|
13
|
+
const index = elements.find((candidate) => candidate.name === indexName);
|
|
14
|
+
if (index === undefined) {
|
|
15
|
+
throw new SimDynamoDbResourceNotFoundException(`The table ${tableName} does not have the specified index: ${indexName}`);
|
|
16
|
+
}
|
|
17
|
+
return index;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sim-dynamodb-index-lookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-lookup.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAGlF;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA8C,EAC9C,SAAiB,EACjB,SAAiB;IAEjB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAEzE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,oCAAoC,CAC5C,aAAa,SAAS,uCAAuC,SAAS,EAAE,CACzE,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SimDynamoDbProjectionInput, SimDynamoDbProjectionType } from "../command/table/table.types.js";
|
|
2
|
+
/**
|
|
3
|
+
* What a test says when it asks for an index projecting one thing or another.
|
|
4
|
+
*/
|
|
5
|
+
export interface SimDynamoDbIndexedTableProjection {
|
|
6
|
+
readonly projectionType: SimDynamoDbProjectionType;
|
|
7
|
+
readonly nonKeyAttributes: readonly string[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The `Projection` an index is created with, which INCLUDE alone names
|
|
11
|
+
* attributes for.
|
|
12
|
+
*
|
|
13
|
+
* The two index kinds project the same way, so their factories build this the
|
|
14
|
+
* same way rather than each having a copy of the rule.
|
|
15
|
+
*/
|
|
16
|
+
export declare function simDynamoDbIndexProjectionInput(input: SimDynamoDbIndexedTableProjection): SimDynamoDbProjectionInput;
|
|
17
|
+
//# sourceMappingURL=sim-dynamodb-index-projection-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-projection-input.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACnD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,iCAAiC,GACvC,0BAA0B,CAS5B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `Projection` an index is created with, which INCLUDE alone names
|
|
3
|
+
* attributes for.
|
|
4
|
+
*
|
|
5
|
+
* The two index kinds project the same way, so their factories build this the
|
|
6
|
+
* same way rather than each having a copy of the rule.
|
|
7
|
+
*/
|
|
8
|
+
export function simDynamoDbIndexProjectionInput(input) {
|
|
9
|
+
if (input.projectionType !== "INCLUDE") {
|
|
10
|
+
return { ProjectionType: input.projectionType };
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
ProjectionType: input.projectionType,
|
|
14
|
+
NonKeyAttributes: input.nonKeyAttributes,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=sim-dynamodb-index-projection-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-projection-input.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC7C,KAAwC;IAExC,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;IAClD,CAAC;IAED,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;KACzC,CAAC;AACJ,CAAC"}
|
|
@@ -15,6 +15,21 @@ export declare class SimDynamoDbIndexProjection {
|
|
|
15
15
|
* Read the Projection a secondary index has to carry.
|
|
16
16
|
*/
|
|
17
17
|
static fromInput(input: SimDynamoDbProjectionInput | undefined, indexName: string): SimDynamoDbIndexProjection;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the index carries every attribute of an item.
|
|
20
|
+
*
|
|
21
|
+
* A read of an index that does is the same read as one of the table, as far
|
|
22
|
+
* as which attributes come back goes.
|
|
23
|
+
*/
|
|
24
|
+
get carriesWholeItem(): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* The attributes this projection adds to the index keys.
|
|
27
|
+
*/
|
|
28
|
+
get addedAttributeNames(): readonly string[];
|
|
29
|
+
/**
|
|
30
|
+
* Whether this projection adds a named attribute to the index keys.
|
|
31
|
+
*/
|
|
32
|
+
adds(attributeName: string): boolean;
|
|
18
33
|
/**
|
|
19
34
|
* How many attributes this projection adds to the index keys.
|
|
20
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-dynamodb-index-projection.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AAiFzC;;;;;;;GAOG;AACH,qBAAa,0BAA0B;IACrC,SAAgB,IAAI,EAAE,yBAAyB,CAAC;IAEhD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAErD,OAAO,eAMN;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,0BAA0B,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,GAChB,0BAA0B,CAc5B;IAED;;;;;OAKG;IACH,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;;;;OAKG;IACH,aAAa,IAAI,qBAAqB,CASrC;CACF"}
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-projection.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AAiFzC;;;;;;;GAOG;AACH,qBAAa,0BAA0B;IACrC,SAAgB,IAAI,EAAE,yBAAyB,CAAC;IAEhD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAErD,OAAO,eAMN;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,0BAA0B,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,GAChB,0BAA0B,CAc5B;IAED;;;;;OAKG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,SAAS,MAAM,EAAE,CAE3C;IAED;;OAEG;IACH,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAEnC;IAED;;;;;OAKG;IACH,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;;;;OAKG;IACH,aAAa,IAAI,qBAAqB,CASrC;CACF"}
|
|
@@ -75,6 +75,27 @@ export class SimDynamoDbIndexProjection {
|
|
|
75
75
|
const type = readProjectionType(input.ProjectionType, indexName);
|
|
76
76
|
return new this(type, readNonKeyAttributes(input.NonKeyAttributes, type, indexName));
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Whether the index carries every attribute of an item.
|
|
80
|
+
*
|
|
81
|
+
* A read of an index that does is the same read as one of the table, as far
|
|
82
|
+
* as which attributes come back goes.
|
|
83
|
+
*/
|
|
84
|
+
get carriesWholeItem() {
|
|
85
|
+
return this.type === "ALL";
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The attributes this projection adds to the index keys.
|
|
89
|
+
*/
|
|
90
|
+
get addedAttributeNames() {
|
|
91
|
+
return this.nonKeyAttributes;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Whether this projection adds a named attribute to the index keys.
|
|
95
|
+
*/
|
|
96
|
+
adds(attributeName) {
|
|
97
|
+
return this.nonKeyAttributes.includes(attributeName);
|
|
98
|
+
}
|
|
78
99
|
/**
|
|
79
100
|
* How many attributes this projection adds to the index keys.
|
|
80
101
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-dynamodb-index-projection.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-projection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-projection.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { SimDynamoDbIndexStatus, SimDynamoDbTableStatus } from "../command/table/table.types.js";
|
|
2
2
|
/**
|
|
3
|
-
* The status an index
|
|
3
|
+
* The status an index reports while its table is in a status of its own.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* apart from it.
|
|
5
|
+
* A global secondary index has a status of its own, because a table can carry
|
|
6
|
+
* an ACTIVE index and a CREATING one at the same time: UpdateTable adds one to
|
|
7
|
+
* a table that keeps serving the rest. A table being deleted takes all of them
|
|
8
|
+
* with it, so that one case is answered from the table rather than the index.
|
|
10
9
|
*/
|
|
11
|
-
export declare function simDynamoDbIndexStatus(tableStatus: SimDynamoDbTableStatus): SimDynamoDbIndexStatus;
|
|
10
|
+
export declare function simDynamoDbIndexStatus(tableStatus: SimDynamoDbTableStatus, indexStatus: SimDynamoDbIndexStatus): SimDynamoDbIndexStatus;
|
|
12
11
|
//# sourceMappingURL=sim-dynamodb-index-status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-dynamodb-index-status.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC
|
|
1
|
+
{"version":3,"file":"sim-dynamodb-index-status.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,sBAAsB,EACnC,WAAW,EAAE,sBAAsB,GAClC,sBAAsB,CAMxB"}
|