@kensio/yulin 1.21.2 → 1.21.4
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/athena/engine/sim-athena-column-types.d.ts +2 -0
- package/dist/service/athena/engine/sim-athena-column-types.js +4 -0
- package/dist/service/athena/engine/sim-athena-delimited-format.d.ts +7 -0
- package/dist/service/athena/engine/sim-athena-delimited-format.js +51 -0
- package/dist/service/athena/engine/sim-athena-engine-result.js +5 -0
- package/dist/service/athena/engine/sim-athena-engine-run.d.ts +22 -2
- package/dist/service/athena/engine/sim-athena-engine-run.js +21 -31
- package/dist/service/athena/engine/sim-athena-loaded-tables.d.ts +10 -0
- package/dist/service/athena/engine/sim-athena-loaded-tables.js +35 -0
- package/dist/service/athena/engine/sim-athena-parquet-module.d.ts +25 -0
- package/dist/service/athena/engine/sim-athena-parquet-module.js +39 -0
- package/dist/service/athena/engine/sim-athena-parquet-records.d.ts +13 -0
- package/dist/service/athena/engine/sim-athena-parquet-records.js +57 -0
- package/dist/service/athena/engine/sim-athena-query-engine.d.ts +23 -5
- package/dist/service/athena/engine/sim-athena-query-engine.js +31 -10
- package/dist/service/athena/engine/sim-athena-record-reader.d.ts +12 -6
- package/dist/service/athena/engine/sim-athena-record-reader.js +28 -53
- package/dist/service/athena/engine/sim-athena-sql-translation.d.ts +15 -9
- package/dist/service/athena/engine/sim-athena-sql-translation.js +25 -13
- package/dist/service/athena/engine/sim-athena-sqlite-values.d.ts +5 -0
- package/dist/service/athena/engine/sim-athena-sqlite-values.js +24 -1
- package/dist/service/athena/engine/sim-athena-table-objects.d.ts +7 -2
- package/dist/service/athena/engine/sim-athena-table-objects.js +8 -4
- package/dist/service/athena/engine/sim-athena-table-rows.js +4 -3
- package/dist/service/athena/engine/sim-athena-turn-down.d.ts +26 -0
- package/dist/service/athena/engine/sim-athena-turn-down.js +43 -0
- package/dist/service/athena/execution/sim-athena-query-completion.d.ts +3 -1
- package/dist/service/athena/execution/sim-athena-query-completion.js +7 -1
- package/dist/service/athena/index.d.ts +1 -1
- package/dist/service/athena/index.js +1 -1
- package/dist/service/athena/result/sim-athena-query-answer.d.ts +12 -0
- package/dist/service/athena/result/sim-athena-query-answer.js +26 -4
- package/dist/service/athena/sim-athena-answered-query.fixture.d.ts +2 -0
- package/dist/service/athena/sim-athena-answered-query.fixture.js +1 -0
- package/dist/service/athena/sim-athena-engine.fixture.d.ts +20 -0
- package/dist/service/athena/sim-athena-engine.fixture.js +34 -0
- package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.d.ts +23 -0
- package/dist/service/cloudformation/authorize/sim-cloudformation-authorization.js +37 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.d.ts +2 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-copier.js +1 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.d.ts +7 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-file.js +13 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.d.ts +6 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/copy/sim-cdk-bucket-deploy-pruner.js +7 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.d.ts +50 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/notify/sim-cdk-bucket-deploy-notifier.js +71 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/sim-cdk-bucket-deployment.js +6 -1
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.d.ts +5 -0
- package/dist/service/cloudformation/cdk/s3/bucket-deployment/source/sim-cdk-bucket-deploy-source.js +7 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.d.ts +9 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-arn.js +12 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.d.ts +42 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-changes.js +69 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.d.ts +62 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-commands.js +89 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.d.ts +31 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-execution.js +59 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.d.ts +21 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-failure.js +19 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.d.ts +17 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-input.js +18 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.d.ts +18 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack-id.js +13 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.d.ts +45 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-stack.js +52 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.d.ts +12 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set-type.js +21 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.d.ts +54 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.js +49 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.d.ts +35 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-set.type.js +1 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-sets.d.ts +53 -0
- package/dist/service/cloudformation/changeset/sim-cfn-change-sets.js +83 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.command.d.ts +32 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.d.ts +38 -0
- package/dist/service/cloudformation/command/create-change-set/create-change-set.handler.js +80 -0
- package/dist/service/cloudformation/command/create-stack/create-stack.handler.js +12 -12
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.d.ts +22 -0
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.d.ts +27 -0
- package/dist/service/cloudformation/command/delete-change-set/delete-change-set.handler.js +35 -0
- package/dist/service/cloudformation/command/delete-stack/delete-stack.command.d.ts +6 -0
- package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.d.ts +11 -0
- package/dist/service/cloudformation/command/delete-stack/delete-stack.handler.js +15 -1
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.d.ts +48 -0
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.d.ts +23 -0
- package/dist/service/cloudformation/command/describe-change-set/describe-change-set.handler.js +52 -0
- package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.d.ts +3 -0
- package/dist/service/cloudformation/command/describe-stacks/describe-stacks.handler.js +8 -4
- package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.d.ts +18 -6
- package/dist/service/cloudformation/command/describe-stacks/sim-cfn-described-stacks.js +22 -7
- package/dist/service/cloudformation/command/describe-stacks/sim-cfn-stack-describer.js +1 -1
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.d.ts +25 -0
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.command.js +1 -0
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.d.ts +31 -0
- package/dist/service/cloudformation/command/execute-change-set/execute-change-set.handler.js +37 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.d.ts +36 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.command.js +1 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.d.ts +26 -0
- package/dist/service/cloudformation/command/list-change-sets/list-change-sets.handler.js +39 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.d.ts +31 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-previous-values.js +52 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-template.d.ts +22 -0
- package/dist/service/cloudformation/command/update-stack/update-stack-template.js +34 -0
- package/dist/service/cloudformation/command/update-stack/update-stack.command.d.ts +17 -1
- package/dist/service/cloudformation/command/update-stack/update-stack.handler.js +8 -15
- package/dist/service/cloudformation/error/sim-cloudformation.error.d.ts +21 -0
- package/dist/service/cloudformation/error/sim-cloudformation.error.js +25 -0
- package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.d.ts +7 -0
- package/dist/service/cloudformation/parameters/pseudo/sim-cfn-pseudo-parameters.js +3 -1
- package/dist/service/cloudformation/parameters/sim-cfn-parameters.d.ts +9 -0
- package/dist/service/cloudformation/parameters/sim-cfn-parameters.js +12 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.d.ts +4 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-delete-operation.js +10 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.d.ts +44 -0
- package/dist/service/cloudformation/resource/delete/sim-cfn-resource-retention.js +33 -0
- package/dist/service/cloudformation/resource/factory/sim-cfn-resource-factory.type.d.ts +9 -0
- package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts +15 -0
- package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +21 -1
- package/dist/service/cloudformation/resource/sim-cfn-resource.d.ts +9 -7
- package/dist/service/cloudformation/resource/sim-cfn-resource.js +11 -11
- package/dist/service/cloudformation/resource/sim-cfn-resource.type.d.ts +19 -0
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.d.ts +3 -3
- package/dist/service/cloudformation/resource/state/sim-cfn-resource-deletion-state.js +3 -3
- package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.d.ts +4 -0
- package/dist/service/cloudformation/resource/template/sim-cfn-resource-template-reader.js +9 -0
- package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.d.ts +26 -0
- package/dist/service/cloudformation/resource/update/sim-cfn-resource-update-validator.js +55 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.d.ts +37 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.js +77 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.d.ts +51 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-auth.types.js +10 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.d.ts +11 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-authorizers.js +34 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.d.ts +21 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-api-identity.js +31 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.d.ts +14 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-definition.js +1 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.d.ts +26 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-authorizer-function.js +58 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.d.ts +18 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-event-authorization.js +89 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.d.ts +15 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-api-auth.js +65 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.d.ts +13 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-jwt-authorizer.js +60 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.d.ts +13 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-http-lambda-authorizer.js +50 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.d.ts +13 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-prefixes.js +30 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.d.ts +26 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-identity-source.js +44 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.d.ts +15 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-api-auth.js +59 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.d.ts +11 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-cognito-authorizer.js +43 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.d.ts +15 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-rest-lambda-authorizer.js +67 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.d.ts +26 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-template-api-auth.js +61 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.d.ts +18 -0
- package/dist/service/cloudformation/sam/api/auth/sim-cfn-sam-unsupported-auth.js +59 -0
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api-template.factory.js +1 -1
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.d.ts +4 -0
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-http-api.js +12 -5
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api-template.factory.js +1 -1
- package/dist/service/cloudformation/sam/api/sim-cfn-sam-rest-api.js +7 -3
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-api-event.js +7 -3
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.d.ts +26 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-cognito-event.js +88 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.d.ts +12 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-declared-event.js +1 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-function-events.js +8 -5
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-event.js +23 -1
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.d.ts +9 -2
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-http-api-route.js +5 -3
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.d.ts +6 -1
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-implicit-http-api.js +7 -1
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.d.ts +19 -0
- package/dist/service/cloudformation/sam/function/event/sim-cfn-sam-triggered-user-pool.js +69 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.d.ts +5 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-template.factory.js +3 -1
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.d.ts +8 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-type.js +8 -0
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function-url.js +1 -4
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.d.ts +6 -4
- package/dist/service/cloudformation/sam/function/sim-cfn-sam-function.js +2 -4
- package/dist/service/cloudformation/sam/sim-cfn-sam-error.d.ts +31 -0
- package/dist/service/cloudformation/sam/sim-cfn-sam-error.js +17 -0
- package/dist/service/cloudformation/sam/sim-cfn-sam-expansion.js +11 -6
- package/dist/service/cloudformation/sdk/sim-cloudformation-sdk-command-router.js +20 -0
- package/dist/service/cloudformation/serve/sim-cloudformation-api.d.ts +4 -3
- package/dist/service/cloudformation/serve/sim-cloudformation-api.js +6 -3
- package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.d.ts +10 -0
- package/dist/service/cloudformation/serve/sim-cloudformation-change-set-api.js +94 -0
- package/dist/service/cloudformation/sim-cloudformation.d.ts +31 -0
- package/dist/service/cloudformation/sim-cloudformation.js +56 -9
- package/dist/service/cloudformation/stack/resource-map/sim-cfn-stack-resource-map.js +1 -0
- package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.d.ts +20 -0
- package/dist/service/cloudformation/stack/sim-cfn-deleted-stacks.js +23 -0
- package/dist/service/cloudformation/stack/sim-cfn-deployed-stack.type.d.ts +6 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-id.d.ts +30 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-id.js +24 -0
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.d.ts +51 -3
- package/dist/service/cloudformation/stack/sim-cfn-stack-resource-operations.js +84 -6
- package/dist/service/cloudformation/stack/sim-cfn-stack.d.ts +28 -16
- package/dist/service/cloudformation/stack/sim-cfn-stack.js +59 -32
- package/dist/service/cloudformation/stack/sim-cfn-stack.type.d.ts +7 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.d.ts +7 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-deletion-lifecycle.js +3 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.d.ts +3 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-batch-deleter.js +3 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.d.ts +3 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-resource-deleter.js +2 -1
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.d.ts +18 -0
- package/dist/service/cloudformation/stack/teardown/sim-cfn-stack-retained-logical-ids.js +30 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.d.ts +9 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-guard.js +14 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.d.ts +25 -14
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-lifecycle.js +41 -24
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.d.ts +16 -1
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-update-plan.js +27 -0
- package/dist/service/cloudformation/stack/update/sim-cfn-stack-updater.js +7 -1
- package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.d.ts +12 -3
- package/dist/service/cloudformation/template/condition/sim-cfn-condition-expression.js +29 -3
- package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.d.ts +28 -0
- package/dist/service/cloudformation/template/condition/sim-cfn-output-conditions.js +39 -0
- package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.d.ts +25 -1
- package/dist/service/cloudformation/template/node/fn/find-in-map/sim-cfn-fn-find-in-map.js +43 -11
- package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.d.ts +7 -0
- package/dist/service/cloudformation/template/parse/fn/find-in-map/sim-cfn-fn-find-in-map-parser.js +29 -3
- package/dist/service/cloudformation/template/sim-cfn-command-template.d.ts +40 -0
- package/dist/service/cloudformation/template/sim-cfn-command-template.js +45 -0
- package/dist/service/cloudformation/template/sim-cfn-template.d.ts +7 -0
- package/dist/service/cloudformation/template/sim-cfn-template.js +15 -1
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.d.ts +2 -0
- package/dist/service/cloudfront/origin/custom/sim-cf-custom-origin-request.js +49 -0
- package/dist/service/cloudfront/origin/custom/sim-cloudfront-custom-origin.js +1 -0
- package/dist/service/cloudfront/origin/s3/sim-cf-s3-origin-responses.js +1 -0
- package/dist/service/cognito/serve/page/sim-cognito-provider-page.js +1 -1
- package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.d.ts +5 -0
- package/dist/service/cognito/user-pool/idp/sim-cognito-attribute-mapping.js +17 -0
- package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.d.ts +5 -5
- package/dist/service/cognito/user-pool/idp/sim-cognito-presented-external-user.js +24 -8
- package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.d.ts +5 -0
- package/dist/service/dynamodb/cfn/sim-cfn-dynamodb-resource-factory.js +15 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.d.ts +24 -0
- package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-update-validator.js +38 -0
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.d.ts +11 -8
- package/dist/service/dynamodb/command/query/sim-dynamodb-query-expressions.js +20 -8
- package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +2 -0
- package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +14 -4
- package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +16 -4
- package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.d.ts +17 -0
- package/dist/service/dynamodb/command/read/sim-dynamodb-table-read.fixture.js +39 -0
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.d.ts +28 -0
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-expressions.js +50 -0
- package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +12 -5
- package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts +3 -3
- package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +3 -4
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.d.ts +5 -16
- package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter-expression.js +4 -21
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.d.ts +15 -0
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection-expression.js +18 -1
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.d.ts +13 -0
- package/dist/service/dynamodb/expression/projection/sim-dynamodb-projection.js +15 -0
- package/dist/service/dynamodb/table/sim-dynamodb-index-update.js +1 -2
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-properties.js +2 -0
- package/dist/service/lambda/cfn/event-source-mapping/sim-cfn-lambda-event-source-mapping-property-rules.js +5 -3
- package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.d.ts +21 -0
- package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-cors.js +37 -0
- package/dist/service/lambda/cfn/url/sim-cfn-lambda-url-creator.js +6 -0
- package/dist/service/lambda/command/create-function/create-function.handler.d.ts +3 -0
- package/dist/service/lambda/command/create-function/create-function.handler.js +5 -1
- package/dist/service/lambda/command/create-function-url-config/create-function-url-config.command.d.ts +2 -3
- package/dist/service/lambda/command/create-function-url-config/create-function-url-config.handler.js +1 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.d.ts +6 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-input.js +10 -0
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping-refusals.js +2 -6
- package/dist/service/lambda/command/event-source-mapping/create-event-source-mapping.handler.js +1 -0
- package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +2 -0
- package/dist/service/lambda/command/function-url/function-url-cors-constraints.d.ts +25 -0
- package/dist/service/lambda/command/function-url/function-url-cors-constraints.js +49 -0
- package/dist/service/lambda/command/function-url/function-url-cors-input.d.ts +25 -0
- package/dist/service/lambda/command/function-url/function-url-cors-input.js +57 -0
- package/dist/service/lambda/command/function-url/function-url-input.d.ts +7 -0
- package/dist/service/lambda/command/function-url/function-url-input.js +9 -0
- package/dist/service/lambda/command/invoke/async/sim-lambda-async-invocation.js +10 -13
- package/dist/service/lambda/command/invoke/async/sim-lambda-async-outcome.js +2 -0
- package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.d.ts +13 -0
- package/dist/service/lambda/command/invoke/async/sim-lambda-handler-attempt.js +12 -0
- package/dist/service/lambda/command/update-function-url-config/update-function-url-config.command.d.ts +2 -0
- package/dist/service/lambda/command/update-function-url-config/update-function-url-config.handler.js +1 -0
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-bus.js +1 -1
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-function.js +8 -12
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-queue.js +4 -3
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-send.d.ts +2 -0
- package/dist/service/lambda/destination/deliver/sim-lambda-destination-topic.js +4 -3
- package/dist/service/lambda/destination/sim-aws-lambda-destinations.d.ts +4 -6
- package/dist/service/lambda/destination/sim-aws-lambda-destinations.js +6 -6
- package/dist/service/lambda/destination/sim-lambda-destination-targets.d.ts +3 -0
- package/dist/service/lambda/event-source/poll/kinesis/sim-lambda-kinesis-stream-delivery.js +4 -9
- package/dist/service/lambda/event-source/poll/sim-lambda-dynamodb-stream-delivery.js +4 -9
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.d.ts +22 -3
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-outcome.js +39 -9
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.d.ts +7 -6
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-batch-response.js +14 -12
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.d.ts +9 -15
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-checkpoint.js +9 -16
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.d.ts +10 -6
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-progress.js +22 -12
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.d.ts +23 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-record-times.js +18 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.d.ts +12 -13
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry-backoff.js +24 -17
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.d.ts +64 -0
- package/dist/service/lambda/event-source/poll/sim-lambda-stream-retry.js +86 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.d.ts +6 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-arn.js +8 -1
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.d.ts +6 -0
- package/dist/service/lambda/event-source/queue/sim-lambda-sqs-event-source-rules.js +7 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.d.ts +11 -1
- package/dist/service/lambda/event-source/sim-lambda-event-source-mapping.js +13 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.d.ts +39 -0
- package/dist/service/lambda/event-source/sim-lambda-event-source-retry-limits.js +46 -0
- package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.d.ts +56 -0
- package/dist/service/lambda/event-source/sim-lambda-stream-retry-limits.js +110 -0
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.d.ts +5 -0
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-arn.js +7 -1
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.d.ts +6 -0
- package/dist/service/lambda/event-source/stream/kinesis/sim-lambda-kinesis-event-source-rules.js +6 -0
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.d.ts +6 -1
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-arn.js +8 -6
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.d.ts +10 -8
- package/dist/service/lambda/event-source/stream/sim-lambda-dynamodb-stream-event-source-rules.js +18 -1
- package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +8 -2
- package/dist/service/lambda/function/code/sim-lambda-executable-code.js +2 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +2 -11
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +13 -39
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +7 -0
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +13 -7
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.d.ts +23 -0
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-handler-lookup.js +42 -0
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.d.ts +12 -4
- package/dist/service/lambda/function/code/vm/sim-lambda-vm-output-stream.js +15 -5
- package/dist/service/lambda/function/invoke/sim-lambda-host-scope.d.ts +7 -0
- package/dist/service/lambda/function/invoke/sim-lambda-host-scope.js +6 -2
- package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.d.ts +26 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invocation-deadline.js +84 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invocation.d.ts +44 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invocation.js +44 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.d.ts +6 -0
- package/dist/service/lambda/function/invoke/sim-lambda-invoke-context-builder.js +1 -2
- package/dist/service/lambda/function/invoke/sim-lambda-process-output.d.ts +6 -1
- package/dist/service/lambda/function/invoke/sim-lambda-process-output.js +19 -6
- package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.d.ts +15 -0
- package/dist/service/lambda/function/invoke/sim-lambda-timed-out.error.js +18 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.d.ts +12 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clear-timer.js +28 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.d.ts +46 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-clock-timer.js +104 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.d.ts +24 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-host-timers.js +27 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.d.ts +43 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-invocation-timers.js +112 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.d.ts +57 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-process-timers.js +79 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.d.ts +10 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-delay.js +15 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.d.ts +11 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-global.js +24 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.d.ts +50 -0
- package/dist/service/lambda/function/invoke/timer/sim-lambda-timer-handle.js +43 -0
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.d.ts +17 -0
- package/dist/service/lambda/function/logging/sim-lambda-function-logging.js +12 -1
- package/dist/service/lambda/function/logging/sim-lambda-output.d.ts +56 -0
- package/dist/service/lambda/function/logging/sim-lambda-output.js +62 -0
- package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.d.ts +8 -0
- package/dist/service/lambda/function/outbound/sim-lambda-aws-api-outbound.js +27 -1
- package/dist/service/lambda/function/sim-lambda-function.d.ts +1 -1
- package/dist/service/lambda/function/sim-lambda-function.js +11 -9
- package/dist/service/lambda/function/sim-lambda-function.type.d.ts +15 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.d.ts +16 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.d.ts +22 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.factory.js +17 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-cors.js +1 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-factory.d.ts +2 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url-factory.js +2 -1
- package/dist/service/lambda/function/url/sim-lambda-function-url-store.d.ts +2 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url.d.ts +16 -0
- package/dist/service/lambda/function/url/sim-lambda-function-url.js +16 -1
- package/dist/service/lambda/index.d.ts +1 -0
- package/dist/service/lambda/index.js +1 -0
- package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.d.ts +50 -0
- package/dist/service/lambda/serve/response/sim-lambda-url-cors-headers.js +96 -0
- package/dist/service/lambda/serve/sim-lambda-controller.d.ts +14 -0
- package/dist/service/lambda/serve/sim-lambda-controller.js +27 -0
- package/dist/service/lambda/sim-lambda-commands.d.ts +10 -0
- package/dist/service/lambda/sim-lambda-commands.js +11 -0
- package/dist/service/lambda/sim-lambda.d.ts +12 -0
- package/dist/service/lambda/sim-lambda.js +13 -0
- package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.d.ts +67 -0
- package/dist/service/s3/bucket/encryption/sim-s3-bucket-encryption.js +69 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.d.ts +4 -31
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-configuration.js +7 -6
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.d.ts +5 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-expiry.js +8 -4
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.d.ts +1 -14
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-selection.js +16 -8
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.d.ts +41 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-subject.js +1 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.d.ts +14 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-sweep.js +32 -2
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.d.ts +33 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition-instant.js +48 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.d.ts +16 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-lifecycle-transition.js +44 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.d.ts +8 -0
- package/dist/service/s3/bucket/lifecycle/sim-s3-noncurrent-sweep.js +27 -0
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +5 -0
- package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -3
- package/dist/service/s3/bucket/sim-s3-bucket-access.d.ts +3 -0
- package/dist/service/s3/bucket/sim-s3-bucket-access.js +6 -2
- package/dist/service/s3/bucket/sim-s3-bucket-configuration.d.ts +84 -0
- package/dist/service/s3/bucket/sim-s3-bucket-configuration.js +115 -0
- package/dist/service/s3/bucket/sim-s3-bucket-objects.d.ts +10 -0
- package/dist/service/s3/bucket/sim-s3-bucket-objects.js +18 -0
- package/dist/service/s3/bucket/sim-s3-bucket-properties.d.ts +41 -0
- package/dist/service/s3/bucket/sim-s3-bucket-properties.js +1 -0
- package/dist/service/s3/bucket/sim-s3-bucket.d.ts +11 -83
- package/dist/service/s3/bucket/sim-s3-bucket.js +14 -83
- package/dist/service/s3/bucket/sim-s3-public-read.fixture.d.ts +6 -0
- package/dist/service/s3/bucket/sim-s3-public-read.fixture.js +20 -6
- package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.d.ts +58 -0
- package/dist/service/s3/bucket/tagging/sim-s3-taggable-object.js +73 -0
- package/dist/service/s3/bucket/versioning/sim-s3-object-version.d.ts +19 -1
- package/dist/service/s3/bucket/versioning/sim-s3-object-version.js +20 -0
- package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.d.ts +21 -0
- package/dist/service/s3/cfn/bucket/encryption/sim-cfn-s3-bucket-encryption.js +44 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-configuration.js +6 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.d.ts +5 -4
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-fields.js +12 -5
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.d.ts +21 -0
- package/dist/service/s3/cfn/bucket/lifecycle/sim-cfn-s3-bucket-lifecycle-filter.js +30 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-configurator.js +1 -0
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.d.ts +14 -1
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-declared-configurations.js +41 -16
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.d.ts +3 -5
- package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-property-names.js +7 -10
- package/dist/service/s3/command/authorize/sim-s3-authorize-action.d.ts +6 -1
- package/dist/service/s3/command/authorize/sim-s3-authorize-action.js +5 -0
- package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +10 -1
- package/dist/service/s3/command/copy-object/copy-object-builder.js +17 -1
- package/dist/service/s3/command/copy-object/copy-object.command.d.ts +11 -1
- package/dist/service/s3/command/copy-object/copy-object.handler.js +2 -1
- package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.command.d.ts +5 -1
- package/dist/service/s3/command/create-multipart-upload/create-multipart-upload.handler.js +7 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.d.ts +19 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.command.js +1 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.d.ts +30 -0
- package/dist/service/s3/command/delete-bucket-encryption/delete-bucket-encryption.handler.js +38 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.d.ts +23 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.command.js +1 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.d.ts +22 -0
- package/dist/service/s3/command/delete-object-tagging/delete-object-tagging.handler.js +42 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.d.ts +29 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-authorizer.js +49 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-commands.d.ts +22 -0
- package/dist/service/s3/command/encryption/sim-s3-encryption-commands.js +30 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.d.ts +24 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.command.js +1 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.d.ts +31 -0
- package/dist/service/s3/command/get-bucket-encryption/get-bucket-encryption.handler.js +39 -0
- package/dist/service/s3/command/get-object/get-object-authorizer.d.ts +11 -8
- package/dist/service/s3/command/get-object/get-object-authorizer.js +26 -34
- package/dist/service/s3/command/get-object/get-object-loader.d.ts +7 -3
- package/dist/service/s3/command/get-object/get-object-loader.js +9 -4
- package/dist/service/s3/command/get-object/get-object.command.d.ts +2 -1
- package/dist/service/s3/command/get-object/get-object.handler.d.ts +4 -0
- package/dist/service/s3/command/get-object/get-object.handler.js +13 -7
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.d.ts +29 -0
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.command.js +1 -0
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.d.ts +21 -0
- package/dist/service/s3/command/get-object-tagging/get-object-tagging.handler.js +33 -0
- package/dist/service/s3/command/head-object/head-object-loader.js +2 -0
- package/dist/service/s3/command/head-object/head-object.command.d.ts +2 -1
- package/dist/service/s3/command/lifecycle/sim-s3-lifecycle-rules-validation.js +18 -0
- package/dist/service/s3/command/list-multipart-uploads/list-multipart-uploads.handler.js +1 -2
- package/dist/service/s3/command/list-object-versions/list-object-versions-summaries.js +1 -2
- package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +5 -0
- package/dist/service/s3/command/list-objects/list-objects-page-builder.js +11 -6
- package/dist/service/s3/command/list-objects/list-objects.command.d.ts +5 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.js +5 -0
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +6 -0
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +11 -5
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +5 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +5 -0
- package/dist/service/s3/command/list-parts/list-parts.handler.js +3 -3
- package/dist/service/s3/command/multipart/sim-s3-multipart-access.js +1 -1
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.d.ts +21 -0
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.command.js +1 -0
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.d.ts +31 -0
- package/dist/service/s3/command/put-bucket-encryption/put-bucket-encryption.handler.js +41 -0
- package/dist/service/s3/command/put-object/put-object-builder.d.ts +5 -1
- package/dist/service/s3/command/put-object/put-object-builder.js +10 -1
- package/dist/service/s3/command/put-object/put-object.command.d.ts +5 -1
- package/dist/service/s3/command/put-object/put-object.handler.js +2 -1
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.d.ts +37 -0
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.command.js +1 -0
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.d.ts +22 -0
- package/dist/service/s3/command/put-object-tagging/put-object-tagging.handler.js +46 -0
- package/dist/service/s3/command/sim-s3-command.types.d.ts +6 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.d.ts +61 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-access.js +49 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.d.ts +30 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-authorizer.js +27 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.d.ts +26 -0
- package/dist/service/s3/command/tagging/sim-s3-object-tagging-commands.js +34 -0
- package/dist/service/s3/error/sim-s3-upload.error.d.ts +41 -0
- package/dist/service/s3/error/sim-s3-upload.error.js +47 -0
- package/dist/service/s3/error/sim-s3.error.d.ts +22 -34
- package/dist/service/s3/error/sim-s3.error.js +26 -40
- package/dist/service/s3/mount/sim-s3-mount.type.d.ts +10 -0
- package/dist/service/s3/notification/event/sim-s3-event-records.d.ts +3 -2
- package/dist/service/s3/notification/event/sim-s3-event-records.js +5 -3
- package/dist/service/s3/notification/event/sim-s3-object-event-builder.d.ts +33 -8
- package/dist/service/s3/notification/event/sim-s3-object-event-builder.js +23 -9
- package/dist/service/s3/notification/sim-s3-object-notifier.d.ts +5 -1
- package/dist/service/s3/notification/sim-s3-object-notifier.js +6 -0
- package/dist/service/s3/object/s3-key-encoding.d.ts +12 -0
- package/dist/service/s3/object/s3-key-encoding.js +14 -0
- package/dist/service/s3/object/s3-listing-encoding.d.ts +42 -0
- package/dist/service/s3/object/s3-listing-encoding.js +75 -0
- package/dist/service/s3/object/s3-object-response-headers.d.ts +40 -0
- package/dist/service/s3/object/s3-object-response-headers.js +49 -2
- package/dist/service/s3/object/s3-object-storage-report.d.ts +19 -0
- package/dist/service/s3/object/s3-object-storage-report.js +18 -0
- package/dist/service/s3/object/s3-object-summary.d.ts +2 -10
- package/dist/service/s3/object/s3-object-summary.js +1 -10
- package/dist/service/s3/object/s3-object-tags.d.ts +61 -0
- package/dist/service/s3/object/s3-object-tags.js +77 -0
- package/dist/service/s3/object/s3-object.d.ts +49 -0
- package/dist/service/s3/object/s3-object.js +52 -1
- package/dist/service/s3/object/s3-server-side-encryption.d.ts +30 -0
- package/dist/service/s3/object/s3-server-side-encryption.js +42 -0
- package/dist/service/s3/object/s3-storage-class.d.ts +45 -0
- package/dist/service/s3/object/s3-storage-class.js +67 -0
- package/dist/service/s3/object/s3-write-metadata.d.ts +17 -3
- package/dist/service/s3/object/s3-write-metadata.js +43 -0
- package/dist/service/s3/object/s3-write-storage.d.ts +27 -0
- package/dist/service/s3/object/s3-write-storage.js +21 -0
- package/dist/service/s3/object/s3-write-tagging.d.ts +24 -0
- package/dist/service/s3/object/s3-write-tagging.js +19 -0
- package/dist/service/s3/sdk/sim-s3-sdk-bucket-routes.js +12 -0
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +2 -0
- package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.d.ts +9 -0
- package/dist/service/s3/sdk/sim-s3-sdk-object-tagging-routes.js +23 -0
- package/dist/service/s3/serve/api/sim-s3-api-bucket-routes.js +22 -0
- package/dist/service/s3/serve/api/sim-s3-api-configuration-output.d.ts +4 -0
- package/dist/service/s3/serve/api/sim-s3-api-configuration-output.js +10 -0
- package/dist/service/s3/serve/api/sim-s3-api-encryption-read.d.ts +7 -0
- package/dist/service/s3/serve/api/sim-s3-api-encryption-read.js +30 -0
- package/dist/service/s3/serve/api/sim-s3-api-head-output.d.ts +4 -2
- package/dist/service/s3/serve/api/sim-s3-api-head-output.js +8 -2
- package/dist/service/s3/serve/api/sim-s3-api-input.d.ts +0 -6
- package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -13
- package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
- package/dist/service/s3/serve/api/sim-s3-api-listing.js +5 -0
- package/dist/service/s3/serve/api/sim-s3-api-object-input.d.ts +16 -0
- package/dist/service/s3/serve/api/sim-s3-api-object-input.js +34 -7
- package/dist/service/s3/serve/api/sim-s3-api-object-output.d.ts +18 -1
- package/dist/service/s3/serve/api/sim-s3-api-object-output.js +21 -2
- package/dist/service/s3/serve/api/sim-s3-api-object-routes.js +22 -1
- package/dist/service/s3/serve/api/sim-s3-api-output.d.ts +5 -1
- package/dist/service/s3/serve/api/sim-s3-api-output.js +16 -5
- package/dist/service/s3/serve/api/sim-s3-api-request.d.ts +6 -5
- package/dist/service/s3/serve/api/sim-s3-api-request.js +55 -11
- package/dist/service/s3/serve/api/sim-s3-api-routes.js +2 -2
- package/dist/service/s3/serve/api/sim-s3-api-tagging-read.d.ts +9 -0
- package/dist/service/s3/serve/api/sim-s3-api-tagging-read.js +14 -0
- package/dist/service/s3/serve/api/sim-s3-api.d.ts +7 -1
- package/dist/service/s3/serve/api/sim-s3-api.js +7 -1
- package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +1 -5
- package/dist/service/s3/serve/sim-s3-rest-controller.js +3 -17
- package/dist/service/s3/serve/sim-s3-rest-object-reader.d.ts +3 -0
- package/dist/service/s3/serve/sim-s3-rest-object-reader.js +8 -1
- package/dist/service/s3/serve/sim-s3-rest-upload.d.ts +20 -0
- package/dist/service/s3/serve/sim-s3-rest-upload.js +30 -0
- package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +1 -0
- package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +2 -0
- package/dist/service/s3/serve/website/sim-s3-website-object.js +3 -0
- package/dist/service/s3/sim-s3-commands.d.ts +4 -0
- package/dist/service/s3/sim-s3-commands.js +6 -0
- package/dist/service/s3/sim-s3-operations.d.ts +11 -4
- package/dist/service/s3/sim-s3-operations.js +17 -4
- package/dist/service/s3/sim-s3-tagging-operations.d.ts +21 -0
- package/dist/service/s3/sim-s3-tagging-operations.js +25 -0
- package/dist/service/s3/sim-s3.d.ts +12 -0
- package/dist/service/s3/sim-s3.js +13 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.d.ts +34 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deleting-storage.js +34 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.d.ts +9 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-deletion.js +24 -0
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.d.ts +5 -4
- package/dist/service/s3/storage/filesystem/s3-filesystem-storage.js +5 -3
- package/dist/service/s3/upload/sim-s3-completed-upload.js +5 -1
- package/dist/service/s3/upload/sim-s3-multipart-upload.d.ts +18 -0
- package/dist/service/s3/upload/sim-s3-multipart-upload.js +8 -0
- package/dist/service/s3/upload/sim-s3-multipart-uploads.d.ts +6 -0
- package/dist/service/s3/upload/sim-s3-multipart-uploads.js +5 -0
- package/dist/util/background/background-clock-waits.d.ts +52 -0
- package/dist/util/background/background-clock-waits.js +76 -0
- package/dist/util/background/background-jitter.js +1 -0
- package/dist/util/background/background-pending-tasks.d.ts +55 -0
- package/dist/util/background/background-pending-tasks.js +117 -0
- package/dist/util/background/background-settled-tasks.d.ts +4 -1
- package/dist/util/background/background-settled-tasks.js +4 -1
- package/dist/util/background/background.d.ts +43 -0
- package/dist/util/background/background.js +27 -19
- package/dist/util/background/non-deterministic-background.d.ts +12 -0
- package/dist/util/background/non-deterministic-background.js +24 -20
- package/dist/util/clock/sim-clock-control.js +23 -2
- package/docs/services/apigateway/README.md +3 -1
- package/docs/services/athena/README.md +126 -3
- package/docs/services/cloudformation/README.md +775 -65
- package/docs/services/cognito/README.md +5 -0
- package/docs/services/dynamodb/README.md +86 -11
- package/docs/services/lambda/README.md +603 -39
- package/docs/services/s3/README.md +688 -57
- package/package.json +8 -2
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { simAthenaDelimitedFormat } from "./sim-athena-delimited-format.js";
|
|
2
|
+
import { simAthenaDelimitedRows } from "./sim-athena-delimited-records.js";
|
|
2
3
|
import { simAthenaJsonRows, } from "./sim-athena-json-records.js";
|
|
4
|
+
import { simAthenaParquetRows } from "./sim-athena-parquet-records.js";
|
|
3
5
|
/** The SerDe class name that takes `mapping.<column>` parameters. */
|
|
4
6
|
const openXSerDe = "org.openx.data.jsonserde.jsonserde";
|
|
7
|
+
/**
|
|
8
|
+
* The SerDe class names that mean Parquet.
|
|
9
|
+
*
|
|
10
|
+
* Glue and the Athena `CREATE TABLE` documentation both name the first. The
|
|
11
|
+
* second is what an older Hive table carries, and Athena still reads one.
|
|
12
|
+
*/
|
|
13
|
+
const parquetSerDes = new Set([
|
|
14
|
+
"org.apache.hadoop.hive.ql.io.parquet.serde.parquethiveserde",
|
|
15
|
+
"parquet.hive.serde.parquethiveserde",
|
|
16
|
+
]);
|
|
5
17
|
/** The SerDe class names that mean JSON lines. */
|
|
6
18
|
const jsonSerDes = new Set([
|
|
7
19
|
openXSerDe,
|
|
@@ -10,50 +22,38 @@ const jsonSerDes = new Set([
|
|
|
10
22
|
]);
|
|
11
23
|
/** What a `mapping.<column>` parameter is named with. */
|
|
12
24
|
const mappingPrefix = "mapping.";
|
|
13
|
-
/**
|
|
14
|
-
* The SerDe class names that mean delimited text, and what each one reads
|
|
15
|
-
* before the table's own parameters are applied.
|
|
16
|
-
*
|
|
17
|
-
* `OpenCSVSerde` is comma separated and quoted. `LazySimpleSerDe` is what
|
|
18
|
-
* `ROW FORMAT DELIMITED` gives: it quotes nothing, and its own default
|
|
19
|
-
* delimiter is the control character Hive has always used rather than a comma.
|
|
20
|
-
*/
|
|
21
|
-
const delimitedSerDes = new Map([
|
|
22
|
-
[
|
|
23
|
-
"org.apache.hadoop.hive.serde2.opencsvserde",
|
|
24
|
-
{ delimiter: ",", quoted: true },
|
|
25
|
-
],
|
|
26
|
-
[
|
|
27
|
-
"org.apache.hadoop.hive.serde2.lazy.lazysimpleserde",
|
|
28
|
-
{ delimiter: "\u{1}", quoted: false },
|
|
29
|
-
],
|
|
30
|
-
]);
|
|
31
25
|
/**
|
|
32
26
|
* How one table's objects are decoded, or nothing where this simulation has no
|
|
33
27
|
* reader for what the table declares.
|
|
34
28
|
*
|
|
35
29
|
* The SerDe is what says so, the way it says so on real Athena. A table
|
|
36
|
-
* holding
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
30
|
+
* holding ORC lands here, and the query falls back to whatever a test declared.
|
|
31
|
+
* A table declaring no SerDe at all lands here too. Nothing else in the catalog
|
|
32
|
+
* says what the bytes are, and guessing would answer with nonsense where
|
|
33
|
+
* turning the query down is the honest reply.
|
|
40
34
|
*/
|
|
41
35
|
export function simAthenaRecordReader(table) {
|
|
42
36
|
const library = table.storageDescriptor?.SerdeInfo?.SerializationLibrary?.toLowerCase();
|
|
43
37
|
if (library === undefined) {
|
|
44
38
|
return undefined;
|
|
45
39
|
}
|
|
40
|
+
if (parquetSerDes.has(library)) {
|
|
41
|
+
return simAthenaParquetRows;
|
|
42
|
+
}
|
|
46
43
|
if (jsonSerDes.has(library)) {
|
|
47
44
|
const format = jsonFormat(table, library);
|
|
48
|
-
return (
|
|
45
|
+
return (bytes) => simAthenaJsonRows(decodedText(bytes), format);
|
|
49
46
|
}
|
|
50
|
-
const
|
|
51
|
-
if (
|
|
47
|
+
const format = simAthenaDelimitedFormat(table, library);
|
|
48
|
+
if (format === undefined) {
|
|
52
49
|
return undefined;
|
|
53
50
|
}
|
|
54
|
-
const format = delimitedFormat(table, defaults);
|
|
55
51
|
const columns = table.columns.map((column) => column.Name);
|
|
56
|
-
return (
|
|
52
|
+
return (bytes) => simAthenaDelimitedRows(decodedText(bytes), format, columns);
|
|
53
|
+
}
|
|
54
|
+
/** One object's bytes as the text a JSON or delimited reader wants. */
|
|
55
|
+
function decodedText(bytes) {
|
|
56
|
+
return new TextDecoder().decode(bytes);
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
59
|
* How one table's JSON records reach its columns.
|
|
@@ -77,28 +77,3 @@ function jsonFormat(table, library) {
|
|
|
77
77
|
caseInsensitive: parameters["case.insensitive"]?.toLowerCase() !== "false",
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
function delimitedFormat(table, defaults) {
|
|
81
|
-
const parameters = table.storageDescriptor?.SerdeInfo?.Parameters ?? {};
|
|
82
|
-
const quoted = defaults.quoted || parameters["quoteChar"] !== undefined;
|
|
83
|
-
return {
|
|
84
|
-
delimiter: parameters["separatorChar"] ??
|
|
85
|
-
parameters["field.delim"] ??
|
|
86
|
-
defaults.delimiter,
|
|
87
|
-
quote: quoted ? (parameters["quoteChar"] ?? '"') : undefined,
|
|
88
|
-
escape: quoted ? (parameters["escapeChar"] ?? "\\") : undefined,
|
|
89
|
-
skipHeaderLines: skippedHeaderLines(table),
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* How many lines of every object are a header rather than a row.
|
|
94
|
-
*
|
|
95
|
-
* `skip.header.line.count` is a table property on real Athena, and the storage
|
|
96
|
-
* descriptor's own parameters are read as well because a template can put it
|
|
97
|
-
* in either place.
|
|
98
|
-
*/
|
|
99
|
-
function skippedHeaderLines(table) {
|
|
100
|
-
const declared = table.parameters["skip.header.line.count"] ??
|
|
101
|
-
table.storageDescriptor?.Parameters?.["skip.header.line.count"];
|
|
102
|
-
const count = Math.trunc(Number(declared ?? ""));
|
|
103
|
-
return Number.isFinite(count) && count > 0 ? count : 0;
|
|
104
|
-
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { SimAthenaCatalogTable } from "../table/sim-athena-catalog-table.js";
|
|
2
2
|
import type { SimAthenaSqlParser } from "./sim-athena-parser-module.js";
|
|
3
|
+
/** One statement translated for SQLite, or why it could not be. */
|
|
4
|
+
export type SimAthenaTranslatedSql = {
|
|
5
|
+
readonly sql: string;
|
|
6
|
+
readonly turnedDown: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
readonly sql: undefined;
|
|
9
|
+
readonly turnedDown: string;
|
|
10
|
+
};
|
|
3
11
|
interface SimAthenaSqlTranslationRequest {
|
|
4
12
|
readonly parser: SimAthenaSqlParser;
|
|
5
13
|
readonly athenaSql: string;
|
|
@@ -7,15 +15,13 @@ interface SimAthenaSqlTranslationRequest {
|
|
|
7
15
|
readonly tables: readonly SimAthenaCatalogTable[];
|
|
8
16
|
}
|
|
9
17
|
/**
|
|
10
|
-
* One Athena statement written back out for SQLite, or
|
|
11
|
-
* be.
|
|
18
|
+
* One Athena statement written back out for SQLite, or why it cannot be.
|
|
12
19
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* write.
|
|
20
|
+
* Three things stop it, and each is told apart because a strict engine fails
|
|
21
|
+
* the query with the reason. The Athena grammar can refuse the statement, an
|
|
22
|
+
* `UNNEST` in it can have no `json_each` to become, and the parser can decline
|
|
23
|
+
* to write the statement back out. A lenient engine answers all three the same
|
|
24
|
+
* way, by turning the query down and letting the declared result take it.
|
|
19
25
|
*/
|
|
20
|
-
export declare function simAthenaSqliteSql(request: SimAthenaSqlTranslationRequest):
|
|
26
|
+
export declare function simAthenaSqliteSql(request: SimAthenaSqlTranslationRequest): SimAthenaTranslatedSql;
|
|
21
27
|
export {};
|
|
@@ -1,31 +1,43 @@
|
|
|
1
1
|
import { simAthenaSqlForParser, simAthenaSqlForSqlite, } from "./sim-athena-sql-rewrites.js";
|
|
2
|
+
import { simAthenaUnparsedStatement, simAthenaUnrewrittenUnnest, simAthenaUnwrittenStatement, } from "./sim-athena-turn-down.js";
|
|
2
3
|
import { simAthenaRewriteUnnest } from "./sim-athena-unnest-rewrite.js";
|
|
3
4
|
/**
|
|
4
|
-
* One Athena statement written back out for SQLite, or
|
|
5
|
-
* be.
|
|
5
|
+
* One Athena statement written back out for SQLite, or why it cannot be.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* write.
|
|
7
|
+
* Three things stop it, and each is told apart because a strict engine fails
|
|
8
|
+
* the query with the reason. The Athena grammar can refuse the statement, an
|
|
9
|
+
* `UNNEST` in it can have no `json_each` to become, and the parser can decline
|
|
10
|
+
* to write the statement back out. A lenient engine answers all three the same
|
|
11
|
+
* way, by turning the query down and letting the declared result take it.
|
|
13
12
|
*/
|
|
14
13
|
export function simAthenaSqliteSql(request) {
|
|
15
14
|
const { parser } = request;
|
|
15
|
+
let read;
|
|
16
|
+
let ast;
|
|
17
|
+
try {
|
|
18
|
+
read = simAthenaSqlForParser(request.athenaSql);
|
|
19
|
+
ast = parser.astify(read.sql, { database: "athena" });
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return turnedDown(simAthenaUnparsedStatement);
|
|
23
|
+
}
|
|
16
24
|
try {
|
|
17
|
-
const read = simAthenaSqlForParser(request.athenaSql);
|
|
18
|
-
const ast = parser.astify(read.sql, { database: "athena" });
|
|
19
25
|
if (!simAthenaRewriteUnnest({
|
|
20
26
|
ast,
|
|
21
27
|
ordinality: read.ordinality,
|
|
22
28
|
tables: request.tables,
|
|
23
29
|
})) {
|
|
24
|
-
return
|
|
30
|
+
return turnedDown(simAthenaUnrewrittenUnnest);
|
|
25
31
|
}
|
|
26
|
-
return
|
|
32
|
+
return {
|
|
33
|
+
sql: simAthenaSqlForSqlite(parser.sqlify(ast, { database: "sqlite" })),
|
|
34
|
+
turnedDown: undefined,
|
|
35
|
+
};
|
|
27
36
|
}
|
|
28
37
|
catch {
|
|
29
|
-
return
|
|
38
|
+
return turnedDown(simAthenaUnwrittenStatement);
|
|
30
39
|
}
|
|
31
40
|
}
|
|
41
|
+
function turnedDown(reason) {
|
|
42
|
+
return { sql: undefined, turnedDown: reason };
|
|
43
|
+
}
|
|
@@ -12,5 +12,10 @@ export type SimAthenaSqliteValue = string | number | bigint | null;
|
|
|
12
12
|
* delimited text carries it as the word `true`, and a column holding the word
|
|
13
13
|
* would otherwise compare against nothing and read back as `true` whichever
|
|
14
14
|
* value it held.
|
|
15
|
+
*
|
|
16
|
+
* A `Date` is what a Parquet `TIMESTAMP`, `DATE` or `INT96` column arrives as.
|
|
17
|
+
* Text formats carry a timestamp as the text the object held, and this writes
|
|
18
|
+
* one the same way. Left as an object it would reach SQLite as quoted JSON, and
|
|
19
|
+
* every comparison against it would answer false while the query succeeded.
|
|
15
20
|
*/
|
|
16
21
|
export declare function simAthenaSqliteValue(value: unknown, glueType: string | undefined): SimAthenaSqliteValue;
|
|
@@ -1,4 +1,19 @@
|
|
|
1
|
-
import { simAthenaIsBooleanType } from "./sim-athena-column-types.js";
|
|
1
|
+
import { simAthenaIsBooleanType, simAthenaIsDateType, } from "./sim-athena-column-types.js";
|
|
2
|
+
/**
|
|
3
|
+
* One instant, as the text a column of its Glue type reads.
|
|
4
|
+
*
|
|
5
|
+
* Athena renders a `date` column as a day and a `timestamp` column as a day and
|
|
6
|
+
* a time, and the Glue column type is the only thing that says which this is.
|
|
7
|
+
*/
|
|
8
|
+
function simAthenaTimestampText(value, glueType) {
|
|
9
|
+
const iso = value.toISOString();
|
|
10
|
+
return simAthenaIsDateType(glueType)
|
|
11
|
+
? iso.slice(0, 10)
|
|
12
|
+
: iso
|
|
13
|
+
.slice(0, 23)
|
|
14
|
+
.replace("T", " ")
|
|
15
|
+
.replace(/\.000$/u, "");
|
|
16
|
+
}
|
|
2
17
|
/** How delimited text writes a boolean, which JSON writes as a keyword. */
|
|
3
18
|
const booleanText = new Map([
|
|
4
19
|
["true", 1],
|
|
@@ -18,6 +33,11 @@ const booleanText = new Map([
|
|
|
18
33
|
* delimited text carries it as the word `true`, and a column holding the word
|
|
19
34
|
* would otherwise compare against nothing and read back as `true` whichever
|
|
20
35
|
* value it held.
|
|
36
|
+
*
|
|
37
|
+
* A `Date` is what a Parquet `TIMESTAMP`, `DATE` or `INT96` column arrives as.
|
|
38
|
+
* Text formats carry a timestamp as the text the object held, and this writes
|
|
39
|
+
* one the same way. Left as an object it would reach SQLite as quoted JSON, and
|
|
40
|
+
* every comparison against it would answer false while the query succeeded.
|
|
21
41
|
*/
|
|
22
42
|
export function simAthenaSqliteValue(value, glueType) {
|
|
23
43
|
if (value === undefined || value === null) {
|
|
@@ -34,5 +54,8 @@ export function simAthenaSqliteValue(value, glueType) {
|
|
|
34
54
|
if (typeof value === "number") {
|
|
35
55
|
return Number.isFinite(value) ? value : null;
|
|
36
56
|
}
|
|
57
|
+
if (value instanceof Date) {
|
|
58
|
+
return simAthenaTimestampText(value, glueType);
|
|
59
|
+
}
|
|
37
60
|
return typeof value === "bigint" ? value : JSON.stringify(value);
|
|
38
61
|
}
|
|
@@ -26,5 +26,10 @@ export interface SimAthenaTableObjects extends SimAthenaScannedObjects {
|
|
|
26
26
|
* there because nothing holds the data it would answer from.
|
|
27
27
|
*/
|
|
28
28
|
export declare function simAthenaTableObjects(s3: Partial<SimAthenaTableObjects> | undefined): SimAthenaTableObjects | undefined;
|
|
29
|
-
/**
|
|
30
|
-
|
|
29
|
+
/**
|
|
30
|
+
* One object's bytes, decompressed by the codec its key names.
|
|
31
|
+
*
|
|
32
|
+
* Decoding is left to the reader the table's SerDe picks, because a Parquet
|
|
33
|
+
* object holds no text to decode.
|
|
34
|
+
*/
|
|
35
|
+
export declare function simAthenaObjectBytes(objects: SimAthenaTableObjects, bucket: string, key: string, caller: SimAwsCaller | undefined): Promise<Uint8Array>;
|
|
@@ -10,10 +10,14 @@ export function simAthenaTableObjects(s3) {
|
|
|
10
10
|
? undefined
|
|
11
11
|
: s3;
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* One object's bytes, decompressed by the codec its key names.
|
|
15
|
+
*
|
|
16
|
+
* Decoding is left to the reader the table's SerDe picks, because a Parquet
|
|
17
|
+
* object holds no text to decode.
|
|
18
|
+
*/
|
|
19
|
+
export async function simAthenaObjectBytes(objects, bucket, key, caller) {
|
|
15
20
|
const got = await objects.getObject({ input: { Bucket: bucket, Key: key } }, caller === undefined ? undefined : { caller });
|
|
16
21
|
const chunks = await Array.fromAsync(got.Body ?? []);
|
|
17
|
-
|
|
18
|
-
return new TextDecoder().decode(bytes);
|
|
22
|
+
return simAthenaDecompressedBytes(key, Buffer.concat(chunks));
|
|
19
23
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { simAthenaHivePartitionValues } from "./sim-athena-hive-partitions.js";
|
|
2
2
|
import { simAthenaPartitionedObjects, } from "./sim-athena-partitioned-objects.js";
|
|
3
3
|
import { simAthenaRecordReader, } from "./sim-athena-record-reader.js";
|
|
4
|
-
import {
|
|
4
|
+
import { simAthenaObjectBytes, } from "./sim-athena-table-objects.js";
|
|
5
5
|
/**
|
|
6
6
|
* Every row one table holds for this query, or nothing where the engine has no
|
|
7
7
|
* reader for what the table declares.
|
|
@@ -29,10 +29,11 @@ export async function simAthenaTableRows(request) {
|
|
|
29
29
|
* A field the record itself carries wins over both.
|
|
30
30
|
*/
|
|
31
31
|
async function objectRows(request, reader, one) {
|
|
32
|
-
const
|
|
32
|
+
const bytes = await simAthenaObjectBytes(request.objects, one.object.bucket, one.object.key, request.caller);
|
|
33
33
|
const partition = {
|
|
34
34
|
...simAthenaHivePartitionValues(one.object.key),
|
|
35
35
|
...Object.fromEntries(one.values),
|
|
36
36
|
};
|
|
37
|
-
|
|
37
|
+
const rows = await reader(bytes);
|
|
38
|
+
return rows.map((row) => ({ ...partition, ...row }));
|
|
38
39
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SimAthenaCatalogTable } from "../table/sim-athena-catalog-table.js";
|
|
2
|
+
/** Nothing in scope holds the objects a query would read. */
|
|
3
|
+
export declare const simAthenaNoObjects = "The simulated Athena query engine has no simulated S3 to read this query's objects from.";
|
|
4
|
+
/**
|
|
5
|
+
* The Athena grammar would not parse the statement.
|
|
6
|
+
*
|
|
7
|
+
* Nothing has reached SQLite at this point. A statement SQLite refuses to run
|
|
8
|
+
* is its own case, and it carries SQLite's own message out.
|
|
9
|
+
*/
|
|
10
|
+
export declare const simAthenaUnparsedStatement = "The simulated Athena query engine cannot read this statement. The Athena grammar refused it.";
|
|
11
|
+
/** The statement's `UNNEST` has no `json_each` to become. */
|
|
12
|
+
export declare const simAthenaUnrewrittenUnnest = "The simulated Athena query engine cannot rewrite this statement's UNNEST onto SQLite's json_each.";
|
|
13
|
+
/** The parsed statement would not come back out as SQLite's dialect. */
|
|
14
|
+
export declare const simAthenaUnwrittenStatement = "The simulated Athena query engine cannot write this statement back out for SQLite.";
|
|
15
|
+
/** Whatever went wrong while the tables were loaded or the statement ran. */
|
|
16
|
+
export declare function simAthenaRunFailure(error: unknown): string;
|
|
17
|
+
/**
|
|
18
|
+
* One table the engine has no reader for.
|
|
19
|
+
*
|
|
20
|
+
* The SerDe is what decides, so the SerDe is what the reason names. A table
|
|
21
|
+
* carrying none is its own case, because there is nothing to name and nothing
|
|
22
|
+
* else in the catalog says what its objects hold.
|
|
23
|
+
*/
|
|
24
|
+
export declare function simAthenaUnreadableFormat(table: SimAthenaCatalogTable): string;
|
|
25
|
+
/** One turn-down, as the reason a strict engine fails the query with. */
|
|
26
|
+
export declare function simAthenaStrictRefusal(turnedDown: string): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** How every reason opens, so a test can match one without matching all of it. */
|
|
2
|
+
const engine = "The simulated Athena query engine";
|
|
3
|
+
/** What a strict engine tells a test to do about the query it failed. */
|
|
4
|
+
const alternatives = `Declare what this query answers with through results(), or leave strict ` +
|
|
5
|
+
`mode off to fall back to a declaration.`;
|
|
6
|
+
/** Nothing in scope holds the objects a query would read. */
|
|
7
|
+
export const simAthenaNoObjects = `${engine} has no simulated S3 to read this query's objects from.`;
|
|
8
|
+
/**
|
|
9
|
+
* The Athena grammar would not parse the statement.
|
|
10
|
+
*
|
|
11
|
+
* Nothing has reached SQLite at this point. A statement SQLite refuses to run
|
|
12
|
+
* is its own case, and it carries SQLite's own message out.
|
|
13
|
+
*/
|
|
14
|
+
export const simAthenaUnparsedStatement = `${engine} cannot read this statement. The Athena grammar refused it.`;
|
|
15
|
+
/** The statement's `UNNEST` has no `json_each` to become. */
|
|
16
|
+
export const simAthenaUnrewrittenUnnest = `${engine} cannot rewrite this statement's UNNEST onto SQLite's json_each.`;
|
|
17
|
+
/** The parsed statement would not come back out as SQLite's dialect. */
|
|
18
|
+
export const simAthenaUnwrittenStatement = `${engine} cannot write this statement back out for SQLite.`;
|
|
19
|
+
/** Whatever went wrong while the tables were loaded or the statement ran. */
|
|
20
|
+
export function simAthenaRunFailure(error) {
|
|
21
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
22
|
+
return `${engine} could not answer this statement. ${message}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* One table the engine has no reader for.
|
|
26
|
+
*
|
|
27
|
+
* The SerDe is what decides, so the SerDe is what the reason names. A table
|
|
28
|
+
* carrying none is its own case, because there is nothing to name and nothing
|
|
29
|
+
* else in the catalog says what its objects hold.
|
|
30
|
+
*/
|
|
31
|
+
export function simAthenaUnreadableFormat(table) {
|
|
32
|
+
const name = `${table.databaseName}.${table.name}`;
|
|
33
|
+
const serDe = table.storageDescriptor?.SerdeInfo?.SerializationLibrary;
|
|
34
|
+
if (serDe === undefined) {
|
|
35
|
+
return (`Table ${name} declares no SerDe, and ${engine.toLowerCase()} has ` +
|
|
36
|
+
`nothing to say what its objects hold.`);
|
|
37
|
+
}
|
|
38
|
+
return `${engine} has no reader for ${serDe}, which table ${name} declares.`;
|
|
39
|
+
}
|
|
40
|
+
/** One turn-down, as the reason a strict engine fails the query with. */
|
|
41
|
+
export function simAthenaStrictRefusal(turnedDown) {
|
|
42
|
+
return `${turnedDown} ${alternatives}`;
|
|
43
|
+
}
|
|
@@ -14,7 +14,9 @@ interface SimAthenaQueryCompletionRequest {
|
|
|
14
14
|
* only a query that got past all three goes on to be answered and written.
|
|
15
15
|
*
|
|
16
16
|
* A write that fails leaves the execution `FAILED` rather than raising at a
|
|
17
|
-
* caller who was answered long ago and has gone away to poll.
|
|
17
|
+
* caller who was answered long ago and has gone away to poll. A strict engine
|
|
18
|
+
* turning the query down fails it the same way, and the reason names what the
|
|
19
|
+
* engine could not do.
|
|
18
20
|
*/
|
|
19
21
|
export declare function simAthenaCompleteQuery(request: SimAthenaQueryCompletionRequest): Promise<void>;
|
|
20
22
|
export {};
|
|
@@ -9,7 +9,9 @@ import { simAthenaWriteFailureReason } from "./sim-athena-write-failure.js";
|
|
|
9
9
|
* only a query that got past all three goes on to be answered and written.
|
|
10
10
|
*
|
|
11
11
|
* A write that fails leaves the execution `FAILED` rather than raising at a
|
|
12
|
-
* caller who was answered long ago and has gone away to poll.
|
|
12
|
+
* caller who was answered long ago and has gone away to poll. A strict engine
|
|
13
|
+
* turning the query down fails it the same way, and the reason names what the
|
|
14
|
+
* engine could not do.
|
|
13
15
|
*/
|
|
14
16
|
export async function simAthenaCompleteQuery(request) {
|
|
15
17
|
const { execution, caller, runner } = request;
|
|
@@ -42,6 +44,10 @@ export async function simAthenaCompleteQuery(request) {
|
|
|
42
44
|
caller,
|
|
43
45
|
startedAt: execution.submittedAt,
|
|
44
46
|
});
|
|
47
|
+
if (answer.refusal !== undefined) {
|
|
48
|
+
execution.fail(answer.refusal, runner.background.now());
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
45
51
|
try {
|
|
46
52
|
await runner.writer.write(execution, answer.result, caller);
|
|
47
53
|
}
|
|
@@ -9,7 +9,7 @@ export { SimAthenaResultConfiguration, type SimAthenaResultAcl, type SimAthenaRe
|
|
|
9
9
|
export { SimAthenaWorkGroupStore } from "./workgroup/sim-athena-work-group-store.js";
|
|
10
10
|
export { SimAthenaNamedQuery } from "./named-query/sim-athena-named-query.js";
|
|
11
11
|
export { SimAthenaQueryExecution } from "./execution/sim-athena-query-execution.js";
|
|
12
|
-
export { SimAthenaQueryEngine } from "./engine/sim-athena-query-engine.js";
|
|
12
|
+
export { SimAthenaQueryEngine, type SimAthenaEngineOptions, } from "./engine/sim-athena-query-engine.js";
|
|
13
13
|
export type { SimAthenaAnswerSource, SimAthenaQueryAnswer, } from "./result/sim-athena-query-answer.js";
|
|
14
14
|
export type { SimAthenaCatalogColumn, SimAthenaCatalogSerDe, SimAthenaCatalogStorage, SimAthenaCatalogTable, } from "./table/sim-athena-catalog-table.js";
|
|
15
15
|
export { SimAthenaQueryExecutionStore } from "./execution/sim-athena-query-execution-store.js";
|
|
@@ -7,7 +7,7 @@ export { SimAthenaResultConfiguration, } from "./workgroup/sim-athena-result-con
|
|
|
7
7
|
export { SimAthenaWorkGroupStore } from "./workgroup/sim-athena-work-group-store.js";
|
|
8
8
|
export { SimAthenaNamedQuery } from "./named-query/sim-athena-named-query.js";
|
|
9
9
|
export { SimAthenaQueryExecution } from "./execution/sim-athena-query-execution.js";
|
|
10
|
-
export { SimAthenaQueryEngine } from "./engine/sim-athena-query-engine.js";
|
|
10
|
+
export { SimAthenaQueryEngine, } from "./engine/sim-athena-query-engine.js";
|
|
11
11
|
export { SimAthenaQueryExecutionStore } from "./execution/sim-athena-query-execution-store.js";
|
|
12
12
|
export { isSettledQueryState, } from "./execution/sim-athena-query-state.js";
|
|
13
13
|
export { SimAthenaOutputLocation } from "./execution/sim-athena-output-location.js";
|
|
@@ -10,6 +10,14 @@ export type SimAthenaAnswerSource = "engine" | "declaration";
|
|
|
10
10
|
export interface SimAthenaQueryAnswer {
|
|
11
11
|
readonly result: SimAthenaResolvedResult;
|
|
12
12
|
readonly source: SimAthenaAnswerSource;
|
|
13
|
+
/**
|
|
14
|
+
* Why the query fails rather than answering, where a strict engine turned it
|
|
15
|
+
* down.
|
|
16
|
+
*
|
|
17
|
+
* The declared result is still carried alongside, because it is what the
|
|
18
|
+
* query would have answered with had the engine not been strict.
|
|
19
|
+
*/
|
|
20
|
+
readonly refusal: string | undefined;
|
|
13
21
|
}
|
|
14
22
|
interface SimAthenaQueryAnswerRequest {
|
|
15
23
|
readonly queryString: string;
|
|
@@ -36,6 +44,10 @@ interface SimAthenaQueryAnswerRequest {
|
|
|
36
44
|
* declarations again, where a workgroup rule or the default answers it. Every
|
|
37
45
|
* test written before the engine existed therefore keeps working, whether or
|
|
38
46
|
* not the engine is on.
|
|
47
|
+
*
|
|
48
|
+
* A strict engine is the exception, and it fails the query it turned down.
|
|
49
|
+
* The declaration keeps its place ahead of that, since a test writing one
|
|
50
|
+
* against this exact statement has already said what the engine gets wrong.
|
|
39
51
|
*/
|
|
40
52
|
export declare function simAthenaQueryAnswer(request: SimAthenaQueryAnswerRequest): Promise<SimAthenaQueryAnswer>;
|
|
41
53
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { simAthenaStrictRefusal } from "../engine/sim-athena-turn-down.js";
|
|
1
2
|
/**
|
|
2
3
|
* What one query answers with, from the engine or from a declaration.
|
|
3
4
|
*
|
|
@@ -10,11 +11,15 @@
|
|
|
10
11
|
* declarations again, where a workgroup rule or the default answers it. Every
|
|
11
12
|
* test written before the engine existed therefore keeps working, whether or
|
|
12
13
|
* not the engine is on.
|
|
14
|
+
*
|
|
15
|
+
* A strict engine is the exception, and it fails the query it turned down.
|
|
16
|
+
* The declaration keeps its place ahead of that, since a test writing one
|
|
17
|
+
* against this exact statement has already said what the engine gets wrong.
|
|
13
18
|
*/
|
|
14
19
|
export async function simAthenaQueryAnswer(request) {
|
|
15
20
|
const forQuery = request.results.declaredForQuery(request.queryString);
|
|
16
21
|
if (forQuery !== undefined) {
|
|
17
|
-
return { result: forQuery, source: "declaration" };
|
|
22
|
+
return { result: forQuery, source: "declaration", refusal: undefined };
|
|
18
23
|
}
|
|
19
24
|
const computed = await request.engine.run({
|
|
20
25
|
queryString: request.queryString,
|
|
@@ -24,7 +29,24 @@ export async function simAthenaQueryAnswer(request) {
|
|
|
24
29
|
caller: request.caller,
|
|
25
30
|
startedAt: request.startedAt,
|
|
26
31
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
if (computed.result !== undefined) {
|
|
33
|
+
return { result: computed.result, source: "engine", refusal: undefined };
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
result: request.declared,
|
|
37
|
+
source: "declaration",
|
|
38
|
+
refusal: strictRefusal(request.engine, computed.turnedDown),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Why a query fails, where a strict engine is what turned it down.
|
|
43
|
+
*
|
|
44
|
+
* An engine nobody turned on turns nothing down, and a lenient one turns a
|
|
45
|
+
* query down without failing it. Both answer from the declaration.
|
|
46
|
+
*/
|
|
47
|
+
function strictRefusal(engine, turnedDown) {
|
|
48
|
+
if (turnedDown === undefined || !engine.isStrict) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return simAthenaStrictRefusal(turnedDown);
|
|
30
52
|
}
|
|
@@ -4,6 +4,8 @@ import type { SimAthenaEngineSimulation } from "./sim-athena-engine.fixture.js";
|
|
|
4
4
|
export interface SimAthenaEngineQuery {
|
|
5
5
|
readonly state: string | undefined;
|
|
6
6
|
readonly answeredBy: SimAthenaAnswerSource | undefined;
|
|
7
|
+
/** Why a failed query failed, which a refusal is what a test reads. */
|
|
8
|
+
readonly reason: string | undefined;
|
|
7
9
|
readonly columns: readonly (string | undefined)[];
|
|
8
10
|
readonly rows: readonly (readonly (string | undefined)[])[];
|
|
9
11
|
}
|
|
@@ -18,6 +18,7 @@ export async function anAnsweredQuery(simulation, queryString, database) {
|
|
|
18
18
|
const answered = {
|
|
19
19
|
state: execution?.state,
|
|
20
20
|
answeredBy: execution?.answeredBy,
|
|
21
|
+
reason: execution?.stateChangeReason,
|
|
21
22
|
};
|
|
22
23
|
if (execution?.state !== "SUCCEEDED") {
|
|
23
24
|
return { ...answered, columns: [], rows: [] };
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type BasicType } from "hyparquet-writer";
|
|
2
|
+
import type { CompressionCodec } from "hyparquet";
|
|
1
3
|
import type { SimClock } from "../../util/clock/sim-clock.js";
|
|
2
4
|
import type { SimGlueColumn } from "../glue/table/sim-glue-table-schema.js";
|
|
3
5
|
import { SimAws } from "../aws/sim-aws.js";
|
|
@@ -5,6 +7,10 @@ import { SimAws } from "../aws/sim-aws.js";
|
|
|
5
7
|
export declare const jsonSerDe = "org.openx.data.jsonserde.JsonSerDe";
|
|
6
8
|
/** The SerDe class name a quoted CSV table declares. */
|
|
7
9
|
export declare const csvSerDe = "org.apache.hadoop.hive.serde2.OpenCSVSerde";
|
|
10
|
+
/** The SerDe class name a Parquet table declares. */
|
|
11
|
+
export declare const parquetSerDe = "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe";
|
|
12
|
+
/** The SerDe class name an ORC table declares, which nothing here reads. */
|
|
13
|
+
export declare const orcSerDe = "org.apache.hadoop.hive.ql.io.orc.OrcSerde";
|
|
8
14
|
/** Where every table in these fixtures keeps its data. */
|
|
9
15
|
export declare const logsBucket = "rainlytics-logs";
|
|
10
16
|
/** A simulation holding both Buckets, a workgroup and a catalog database. */
|
|
@@ -38,3 +44,17 @@ export declare function aSeededObject(simAws: SimAws, key: string, body: string)
|
|
|
38
44
|
export declare function aSeededBytes(simAws: SimAws, key: string, body: Uint8Array): Promise<void>;
|
|
39
45
|
/** Put one object of JSON lines under the logs Bucket. */
|
|
40
46
|
export declare function aSeededJson(simAws: SimAws, key: string, records: readonly Record<string, unknown>[]): Promise<void>;
|
|
47
|
+
/** One column of a Parquet fixture, with the values it holds. */
|
|
48
|
+
export interface SimAthenaParquetColumn {
|
|
49
|
+
readonly name: string;
|
|
50
|
+
readonly data: readonly unknown[];
|
|
51
|
+
readonly type?: BasicType;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Put one Parquet object under the logs Bucket.
|
|
55
|
+
*
|
|
56
|
+
* `hyparquet-writer` is a development dependency of this repository alone. A
|
|
57
|
+
* project testing against a Parquet table brings its own file, or writes one
|
|
58
|
+
* however its production pipeline does.
|
|
59
|
+
*/
|
|
60
|
+
export declare function aSeededParquet(simAws: SimAws, key: string, columns: readonly SimAthenaParquetColumn[], codec?: CompressionCodec): Promise<void>;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { faker } from "@faker-js/faker";
|
|
2
|
+
import { brotliCompressSync, deflateSync, gzipSync, zstdCompressSync, } from "node:zlib";
|
|
3
|
+
import { parquetWriteBuffer, } from "hyparquet-writer";
|
|
2
4
|
import { SimAws } from "../aws/sim-aws.js";
|
|
3
5
|
/** The SerDe class name a JSON lines table declares. */
|
|
4
6
|
export const jsonSerDe = "org.openx.data.jsonserde.JsonSerDe";
|
|
5
7
|
/** The SerDe class name a quoted CSV table declares. */
|
|
6
8
|
export const csvSerDe = "org.apache.hadoop.hive.serde2.OpenCSVSerde";
|
|
9
|
+
/** The SerDe class name a Parquet table declares. */
|
|
10
|
+
export const parquetSerDe = "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe";
|
|
11
|
+
/** The SerDe class name an ORC table declares, which nothing here reads. */
|
|
12
|
+
export const orcSerDe = "org.apache.hadoop.hive.ql.io.orc.OrcSerde";
|
|
7
13
|
/** Where every table in these fixtures keeps its data. */
|
|
8
14
|
export const logsBucket = "rainlytics-logs";
|
|
9
15
|
/**
|
|
@@ -69,3 +75,31 @@ export async function aSeededJson(simAws, key, records) {
|
|
|
69
75
|
const lines = records.map((record) => JSON.stringify(record));
|
|
70
76
|
await aSeededObject(simAws, key, `${lines.join("\n")}\n`);
|
|
71
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* What the writer compresses a page with, for the codecs it has not got.
|
|
80
|
+
*
|
|
81
|
+
* `hyparquet-writer` compresses snappy alone. These are what let a fixture
|
|
82
|
+
* produce a file in the codecs the reader takes from `node:zlib`, so those
|
|
83
|
+
* paths are exercised by a real file rather than by a label.
|
|
84
|
+
*/
|
|
85
|
+
const writeCompressors = {
|
|
86
|
+
GZIP: (bytes) => new Uint8Array(gzipSync(bytes)),
|
|
87
|
+
ZSTD: (bytes) => new Uint8Array(zstdCompressSync(bytes)),
|
|
88
|
+
BROTLI: (bytes) => new Uint8Array(brotliCompressSync(bytes)),
|
|
89
|
+
DEFLATE: (bytes) => new Uint8Array(deflateSync(bytes)),
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Put one Parquet object under the logs Bucket.
|
|
93
|
+
*
|
|
94
|
+
* `hyparquet-writer` is a development dependency of this repository alone. A
|
|
95
|
+
* project testing against a Parquet table brings its own file, or writes one
|
|
96
|
+
* however its production pipeline does.
|
|
97
|
+
*/
|
|
98
|
+
export async function aSeededParquet(simAws, key, columns, codec = "SNAPPY") {
|
|
99
|
+
const buffer = parquetWriteBuffer({
|
|
100
|
+
codec,
|
|
101
|
+
compressors: writeCompressors,
|
|
102
|
+
columnData: columns,
|
|
103
|
+
});
|
|
104
|
+
await aSeededBytes(simAws, key, new Uint8Array(buffer));
|
|
105
|
+
}
|