@kensio/yulin 1.18.0 → 1.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts +8 -2
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.d.ts.map +1 -1
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js +9 -3
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-creator.js.map +1 -1
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-web-acl.d.ts +25 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-web-acl.d.ts.map +1 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-web-acl.js +36 -0
- package/dist/service/cloudfront/cfn/distro/sim-cfn-cf-distro-web-acl.js.map +1 -0
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.d.ts.map +1 -1
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js +6 -5
- package/dist/service/cloudfront/cfn/sim-cfn-cloudfront-resource-factory.js.map +1 -1
- package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-properties.d.ts.map +1 -1
- package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-properties.js +10 -0
- package/dist/service/cognito/cfn/client/sim-cfn-cognito-client-properties.js.map +1 -1
- package/dist/service/cognito/cfn/client/sim-cfn-cognito-refresh-token-rotation.d.ts +27 -0
- package/dist/service/cognito/cfn/client/sim-cfn-cognito-refresh-token-rotation.d.ts.map +1 -0
- package/dist/service/cognito/cfn/client/sim-cfn-cognito-refresh-token-rotation.js +35 -0
- package/dist/service/cognito/cfn/client/sim-cfn-cognito-refresh-token-rotation.js.map +1 -0
- package/dist/service/cognito/command/auth/auth.command.d.ts +31 -0
- package/dist/service/cognito/command/auth/auth.command.d.ts.map +1 -1
- package/dist/service/cognito/command/auth/sim-cognito-auth-commands.d.ts +2 -0
- package/dist/service/cognito/command/auth/sim-cognito-auth-commands.d.ts.map +1 -1
- package/dist/service/cognito/command/auth/sim-cognito-auth-commands.js +13 -1
- package/dist/service/cognito/command/auth/sim-cognito-auth-commands.js.map +1 -1
- package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.d.ts +35 -0
- package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.d.ts.map +1 -0
- package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.js +51 -0
- package/dist/service/cognito/command/auth/sim-cognito-get-tokens-from-refresh-token.js.map +1 -0
- package/dist/service/cognito/command/auth/sim-cognito-refresh-sign-in.d.ts +3 -8
- package/dist/service/cognito/command/auth/sim-cognito-refresh-sign-in.d.ts.map +1 -1
- package/dist/service/cognito/command/auth/sim-cognito-refresh-sign-in.js +24 -17
- package/dist/service/cognito/command/auth/sim-cognito-refresh-sign-in.js.map +1 -1
- package/dist/service/cognito/command/auth/sim-cognito-refreshed-tokens.d.ts +56 -0
- package/dist/service/cognito/command/auth/sim-cognito-refreshed-tokens.d.ts.map +1 -0
- package/dist/service/cognito/command/auth/sim-cognito-refreshed-tokens.js +50 -0
- package/dist/service/cognito/command/auth/sim-cognito-refreshed-tokens.js.map +1 -0
- package/dist/service/cognito/command/client/sim-cognito-unsimulated-client-options.d.ts.map +1 -1
- package/dist/service/cognito/command/client/sim-cognito-unsimulated-client-options.js +0 -1
- package/dist/service/cognito/command/client/sim-cognito-unsimulated-client-options.js.map +1 -1
- package/dist/service/cognito/command/client/sim-cognito-user-pool-client-view.d.ts +4 -3
- package/dist/service/cognito/command/client/sim-cognito-user-pool-client-view.d.ts.map +1 -1
- package/dist/service/cognito/command/client/sim-cognito-user-pool-client-view.js +5 -3
- package/dist/service/cognito/command/client/sim-cognito-user-pool-client-view.js.map +1 -1
- package/dist/service/cognito/command/client/user-pool-client.command.d.ts +3 -1
- package/dist/service/cognito/command/client/user-pool-client.command.d.ts.map +1 -1
- package/dist/service/cognito/command/hosted/sim-cognito-presented-grant.js +1 -1
- package/dist/service/cognito/command/hosted/sim-cognito-presented-grant.js.map +1 -1
- package/dist/service/cognito/command/hosted/sim-cognito-token-grants.d.ts +3 -3
- package/dist/service/cognito/command/hosted/sim-cognito-token-grants.d.ts.map +1 -1
- package/dist/service/cognito/command/hosted/sim-cognito-token-grants.js +5 -4
- package/dist/service/cognito/command/hosted/sim-cognito-token-grants.js.map +1 -1
- package/dist/service/cognito/command/sim-cognito-command.types.d.ts +1 -1
- package/dist/service/cognito/command/sim-cognito-command.types.d.ts.map +1 -1
- package/dist/service/cognito/index.d.ts +1 -0
- package/dist/service/cognito/index.d.ts.map +1 -1
- package/dist/service/cognito/index.js +1 -0
- package/dist/service/cognito/index.js.map +1 -1
- package/dist/service/cognito/sdk/sim-cognito-sdk-auth-routes.d.ts.map +1 -1
- package/dist/service/cognito/sdk/sim-cognito-sdk-auth-routes.js +4 -0
- package/dist/service/cognito/sdk/sim-cognito-sdk-auth-routes.js.map +1 -1
- package/dist/service/cognito/sim-cognito-authentication.d.ts +8 -0
- package/dist/service/cognito/sim-cognito-authentication.d.ts.map +1 -1
- package/dist/service/cognito/sim-cognito-authentication.js +11 -0
- package/dist/service/cognito/sim-cognito-authentication.js.map +1 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token-store.d.ts +11 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token-store.d.ts.map +1 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token-store.js +17 -2
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token-store.js.map +1 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token.d.ts +41 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token.d.ts.map +1 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token.js +62 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-issued-token.js.map +1 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.d.ts +5 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.d.ts.map +1 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.js +7 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-pool-auth.js.map +1 -1
- package/dist/service/cognito/user-pool/auth/sim-cognito-refresh-token-input.d.ts +11 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-refresh-token-input.d.ts.map +1 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-refresh-token-input.js +17 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-refresh-token-input.js.map +1 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-refreshable-session.factory.d.ts +61 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-refreshable-session.factory.d.ts.map +1 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-refreshable-session.factory.js +80 -0
- package/dist/service/cognito/user-pool/auth/sim-cognito-refreshable-session.factory.js.map +1 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-client-secret.d.ts +10 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-client-secret.d.ts.map +1 -1
- package/dist/service/cognito/user-pool/client/sim-cognito-client-secret.js +22 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-client-secret.js.map +1 -1
- package/dist/service/cognito/user-pool/client/sim-cognito-refresh-token-rotation.d.ts +48 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-refresh-token-rotation.d.ts.map +1 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-refresh-token-rotation.js +79 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-refresh-token-rotation.js.map +1 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client-settings.d.ts +7 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client-settings.d.ts.map +1 -1
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client-settings.js +7 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client-settings.js.map +1 -1
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client.d.ts +6 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client.d.ts.map +1 -1
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client.js +7 -0
- package/dist/service/cognito/user-pool/client/sim-cognito-user-pool-client.js.map +1 -1
- package/dist/service/cognito/user-pool/token/sim-cognito-token-issuer.d.ts +34 -0
- package/dist/service/cognito/user-pool/token/sim-cognito-token-issuer.d.ts.map +1 -1
- package/dist/service/cognito/user-pool/token/sim-cognito-token-issuer.js +40 -1
- package/dist/service/cognito/user-pool/token/sim-cognito-token-issuer.js.map +1 -1
- package/dist/service/lambda/command/create-function/create-function-input.js +1 -1
- package/dist/service/lambda/command/create-function/create-function-input.js.map +1 -1
- package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts +17 -0
- package/dist/service/lambda/command/function/sim-lambda-function-commands.d.ts.map +1 -1
- package/dist/service/lambda/command/function/sim-lambda-function-commands.js +43 -0
- package/dist/service/lambda/command/function/sim-lambda-function-commands.js.map +1 -1
- package/dist/service/lambda/command/list-functions/list-functions-authorizer.d.ts +31 -0
- package/dist/service/lambda/command/list-functions/list-functions-authorizer.d.ts.map +1 -0
- package/dist/service/lambda/command/list-functions/list-functions-authorizer.js +41 -0
- package/dist/service/lambda/command/list-functions/list-functions-authorizer.js.map +1 -0
- package/dist/service/lambda/command/list-functions/list-functions.command.d.ts +34 -0
- package/dist/service/lambda/command/list-functions/list-functions.command.d.ts.map +1 -0
- package/dist/service/lambda/command/list-functions/list-functions.command.js +5 -0
- package/dist/service/lambda/command/list-functions/list-functions.command.js.map +1 -0
- package/dist/service/lambda/command/list-functions/list-functions.handler.d.ts +35 -0
- package/dist/service/lambda/command/list-functions/list-functions.handler.d.ts.map +1 -0
- package/dist/service/lambda/command/list-functions/list-functions.handler.js +46 -0
- package/dist/service/lambda/command/list-functions/list-functions.handler.js.map +1 -0
- package/dist/service/lambda/command/sim-lambda-command.types.d.ts +3 -0
- package/dist/service/lambda/command/sim-lambda-command.types.d.ts.map +1 -1
- package/dist/service/lambda/command/update-function-code/update-function-code-authorizer.d.ts +27 -0
- package/dist/service/lambda/command/update-function-code/update-function-code-authorizer.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-code/update-function-code-authorizer.js +37 -0
- package/dist/service/lambda/command/update-function-code/update-function-code-authorizer.js.map +1 -0
- package/dist/service/lambda/command/update-function-code/update-function-code-input.d.ts +16 -0
- package/dist/service/lambda/command/update-function-code/update-function-code-input.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-code/update-function-code-input.js +30 -0
- package/dist/service/lambda/command/update-function-code/update-function-code-input.js.map +1 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.command.d.ts +41 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.command.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.command.js +5 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.command.js.map +1 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.handler.d.ts +52 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.handler.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.handler.js +72 -0
- package/dist/service/lambda/command/update-function-code/update-function-code.handler.js.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts +28 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js +38 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-authorizer.js.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-input.d.ts +23 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-input.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-input.js +29 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration-input.js.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.command.d.ts +42 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.command.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.command.js +5 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.command.js.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.d.ts +50 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.d.ts.map +1 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js +61 -0
- package/dist/service/lambda/command/update-function-configuration/update-function-configuration.handler.js.map +1 -0
- package/dist/service/lambda/function/code/lambda-code-source.d.ts +15 -2
- package/dist/service/lambda/function/code/lambda-code-source.d.ts.map +1 -1
- package/dist/service/lambda/function/code/lambda-code-source.js +19 -14
- package/dist/service/lambda/function/code/lambda-code-source.js.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-code-resolver.d.ts +6 -0
- package/dist/service/lambda/function/code/sim-lambda-code-resolver.d.ts.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-code-resolver.js.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +28 -0
- package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-executable-code.js +10 -0
- package/dist/service/lambda/function/code/sim-lambda-executable-code.js.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.d.ts.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.js +2 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.js.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +11 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts.map +1 -1
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +16 -0
- package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js.map +1 -1
- package/dist/service/lambda/{command/create-function/create-function-environment-names.d.ts → function/environment/lambda-environment-variable-names.d.ts} +1 -1
- package/dist/service/lambda/function/environment/lambda-environment-variable-names.d.ts.map +1 -0
- package/dist/service/lambda/{command/create-function/create-function-environment-names.js → function/environment/lambda-environment-variable-names.js} +1 -1
- package/dist/service/lambda/function/environment/lambda-environment-variable-names.js.map +1 -0
- package/dist/service/lambda/{command/create-function/create-function-environment.d.ts → function/environment/lambda-environment-variables.d.ts} +2 -2
- package/dist/service/lambda/function/environment/lambda-environment-variables.d.ts.map +1 -0
- package/dist/service/lambda/{command/create-function/create-function-environment.js → function/environment/lambda-environment-variables.js} +2 -2
- package/dist/service/lambda/function/environment/lambda-environment-variables.js.map +1 -0
- package/dist/service/lambda/function/environment/lambda-reserved-variable-names.d.ts.map +1 -0
- package/dist/service/lambda/function/environment/lambda-reserved-variable-names.js.map +1 -0
- package/dist/service/lambda/function/sim-lambda-function-reconfiguration.d.ts +35 -0
- package/dist/service/lambda/function/sim-lambda-function-reconfiguration.d.ts.map +1 -0
- package/dist/service/lambda/function/sim-lambda-function-reconfiguration.js +54 -0
- package/dist/service/lambda/function/sim-lambda-function-reconfiguration.js.map +1 -0
- package/dist/service/lambda/function/sim-lambda-function.d.ts +34 -56
- package/dist/service/lambda/function/sim-lambda-function.d.ts.map +1 -1
- package/dist/service/lambda/function/sim-lambda-function.js +43 -9
- package/dist/service/lambda/function/sim-lambda-function.js.map +1 -1
- package/dist/service/lambda/function/sim-lambda-function.type.d.ts +53 -0
- package/dist/service/lambda/function/sim-lambda-function.type.d.ts.map +1 -0
- package/dist/service/lambda/function/sim-lambda-function.type.js +2 -0
- package/dist/service/lambda/function/sim-lambda-function.type.js.map +1 -0
- package/dist/service/lambda/sdk/sim-lambda-sdk-command-router.d.ts.map +1 -1
- package/dist/service/lambda/sdk/sim-lambda-sdk-command-router.js +12 -0
- package/dist/service/lambda/sdk/sim-lambda-sdk-command-router.js.map +1 -1
- package/dist/service/lambda/serve/api/sim-lambda-api-function-input.d.ts +27 -0
- package/dist/service/lambda/serve/api/sim-lambda-api-function-input.d.ts.map +1 -0
- package/dist/service/lambda/serve/api/sim-lambda-api-function-input.js +76 -0
- package/dist/service/lambda/serve/api/sim-lambda-api-function-input.js.map +1 -0
- package/dist/service/lambda/serve/api/sim-lambda-api-function-routes.d.ts.map +1 -1
- package/dist/service/lambda/serve/api/sim-lambda-api-function-routes.js +19 -58
- package/dist/service/lambda/serve/api/sim-lambda-api-function-routes.js.map +1 -1
- package/dist/service/lambda/sim-lambda-commands.d.ts.map +1 -1
- package/dist/service/lambda/sim-lambda-commands.js +1 -0
- package/dist/service/lambda/sim-lambda-commands.js.map +1 -1
- package/dist/service/lambda/sim-lambda.d.ts +6 -0
- package/dist/service/lambda/sim-lambda.d.ts.map +1 -1
- package/dist/service/lambda/sim-lambda.js +12 -0
- package/dist/service/lambda/sim-lambda.js.map +1 -1
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts +1 -1
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.d.ts.map +1 -1
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.js +7 -1
- package/dist/service/s3/bucket/notification/sim-s3-notification-event.js.map +1 -1
- package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.d.ts.map +1 -1
- package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js +0 -1
- package/dist/service/s3/bucket/notification/sim-s3-unsimulated-notification-events.js.map +1 -1
- package/dist/service/s3/command/copy-object/copy-object-builder.d.ts +34 -0
- package/dist/service/s3/command/copy-object/copy-object-builder.d.ts.map +1 -0
- package/dist/service/s3/command/copy-object/copy-object-builder.js +40 -0
- package/dist/service/s3/command/copy-object/copy-object-builder.js.map +1 -0
- package/dist/service/s3/command/copy-object/copy-object-source.d.ts +37 -0
- package/dist/service/s3/command/copy-object/copy-object-source.d.ts.map +1 -0
- package/dist/service/s3/command/copy-object/copy-object-source.js +80 -0
- package/dist/service/s3/command/copy-object/copy-object-source.js.map +1 -0
- package/dist/service/s3/command/copy-object/copy-object.command.d.ts +41 -0
- package/dist/service/s3/command/copy-object/copy-object.command.d.ts.map +1 -0
- package/dist/service/s3/command/copy-object/copy-object.command.js +2 -0
- package/dist/service/s3/command/copy-object/copy-object.command.js.map +1 -0
- package/dist/service/s3/command/copy-object/copy-object.handler.d.ts +43 -0
- package/dist/service/s3/command/copy-object/copy-object.handler.d.ts.map +1 -0
- package/dist/service/s3/command/copy-object/copy-object.handler.js +76 -0
- package/dist/service/s3/command/copy-object/copy-object.handler.js.map +1 -0
- package/dist/service/s3/command/list-objects/list-objects-authorizer.d.ts +6 -4
- package/dist/service/s3/command/list-objects/list-objects-authorizer.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects-authorizer.js +6 -4
- package/dist/service/s3/command/list-objects/list-objects-authorizer.js.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts +4 -2
- package/dist/service/s3/command/list-objects/list-objects-page-builder.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects-page-builder.js +8 -2
- package/dist/service/s3/command/list-objects/list-objects-page-builder.js.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects.command.d.ts +7 -0
- package/dist/service/s3/command/list-objects/list-objects.command.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects/list-objects.handler.js +2 -0
- package/dist/service/s3/command/list-objects/list-objects.handler.js.map +1 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts +1 -0
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js +6 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2-page-builder.js.map +1 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts +8 -2
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.command.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.d.ts.map +1 -1
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js +2 -0
- package/dist/service/s3/command/list-objects-v2/list-objects-v2.handler.js.map +1 -1
- package/dist/service/s3/command/object/sim-s3-object-commands.d.ts +4 -0
- package/dist/service/s3/command/object/sim-s3-object-commands.d.ts.map +1 -1
- package/dist/service/s3/command/object/sim-s3-object-commands.js +7 -0
- package/dist/service/s3/command/object/sim-s3-object-commands.js.map +1 -1
- package/dist/service/s3/command/sim-s3-command.types.d.ts +1 -0
- package/dist/service/s3/command/sim-s3-command.types.d.ts.map +1 -1
- package/dist/service/s3/error/sim-s3.error.d.ts +11 -0
- package/dist/service/s3/error/sim-s3.error.d.ts.map +1 -1
- package/dist/service/s3/error/sim-s3.error.js +13 -0
- package/dist/service/s3/error/sim-s3.error.js.map +1 -1
- package/dist/service/s3/object/s3-common-prefix.d.ts +22 -0
- package/dist/service/s3/object/s3-common-prefix.d.ts.map +1 -0
- package/dist/service/s3/object/s3-common-prefix.js +16 -0
- package/dist/service/s3/object/s3-common-prefix.js.map +1 -0
- package/dist/service/s3/object/s3-object-listing.d.ts +9 -2
- package/dist/service/s3/object/s3-object-listing.d.ts.map +1 -1
- package/dist/service/s3/object/s3-object-listing.js +70 -13
- package/dist/service/s3/object/s3-object-listing.js.map +1 -1
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.d.ts.map +1 -1
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +4 -0
- package/dist/service/s3/sdk/sim-s3-sdk-command-router.js.map +1 -1
- package/dist/service/s3/serve/api/sim-s3-api-input.d.ts.map +1 -1
- package/dist/service/s3/serve/api/sim-s3-api-input.js +2 -0
- package/dist/service/s3/serve/api/sim-s3-api-input.js.map +1 -1
- package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts +5 -0
- package/dist/service/s3/serve/api/sim-s3-api-listing.d.ts.map +1 -1
- package/dist/service/s3/serve/api/sim-s3-api-listing.js +6 -1
- package/dist/service/s3/serve/api/sim-s3-api-listing.js.map +1 -1
- package/dist/service/s3/sim-s3-operations.d.ts +2 -0
- package/dist/service/s3/sim-s3-operations.d.ts.map +1 -1
- package/dist/service/s3/sim-s3-operations.js +4 -0
- package/dist/service/s3/sim-s3-operations.js.map +1 -1
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-creator.d.ts +4 -0
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-creator.d.ts.map +1 -1
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-creator.js +9 -0
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-creator.js.map +1 -1
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-skip.d.ts +22 -0
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-skip.d.ts.map +1 -0
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-skip.js +28 -0
- package/dist/service/wafv2/cfn/association/sim-cfn-waf-association-skip.js.map +1 -0
- package/dist/service/wafv2/cfn/sim-cfn-waf-resource-error.d.ts +25 -6
- package/dist/service/wafv2/cfn/sim-cfn-waf-resource-error.d.ts.map +1 -1
- package/dist/service/wafv2/cfn/sim-cfn-waf-resource-error.js +32 -7
- package/dist/service/wafv2/cfn/sim-cfn-waf-resource-error.js.map +1 -1
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-evaluatable-rules.d.ts +16 -0
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-evaluatable-rules.d.ts.map +1 -0
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-evaluatable-rules.js +22 -0
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-evaluatable-rules.js.map +1 -0
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-config.d.ts +13 -4
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-config.d.ts.map +1 -1
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-config.js +21 -11
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-config.js.map +1 -1
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-creator.d.ts +11 -1
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-creator.d.ts.map +1 -1
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-creator.js +19 -2
- package/dist/service/wafv2/cfn/web-acl/sim-cfn-waf-web-acl-creator.js.map +1 -1
- package/dist/service/wafv2/command/web-acl/sim-wafv2-unsimulated-web-acl-input.d.ts +9 -0
- package/dist/service/wafv2/command/web-acl/sim-wafv2-unsimulated-web-acl-input.d.ts.map +1 -1
- package/dist/service/wafv2/command/web-acl/sim-wafv2-unsimulated-web-acl-input.js +9 -0
- package/dist/service/wafv2/command/web-acl/sim-wafv2-unsimulated-web-acl-input.js.map +1 -1
- package/dist/service/wafv2/command/web-acl/sim-wafv2-web-acl-commands.d.ts +2 -0
- package/dist/service/wafv2/command/web-acl/sim-wafv2-web-acl-commands.d.ts.map +1 -1
- package/dist/service/wafv2/command/web-acl/sim-wafv2-web-acl-commands.js +3 -0
- package/dist/service/wafv2/command/web-acl/sim-wafv2-web-acl-commands.js.map +1 -1
- package/dist/service/wafv2/index.d.ts +1 -0
- package/dist/service/wafv2/index.d.ts.map +1 -1
- package/dist/service/wafv2/index.js.map +1 -1
- package/dist/service/wafv2/managed/sim-waf-managed-group-statement.d.ts.map +1 -1
- package/dist/service/wafv2/managed/sim-waf-managed-group-statement.js +1 -0
- package/dist/service/wafv2/managed/sim-waf-managed-group-statement.js.map +1 -1
- package/dist/service/wafv2/sim-wafv2-commands.d.ts.map +1 -1
- package/dist/service/wafv2/sim-wafv2-commands.js +3 -0
- package/dist/service/wafv2/sim-wafv2-commands.js.map +1 -1
- package/dist/service/wafv2/sim-wafv2.d.ts +12 -0
- package/dist/service/wafv2/sim-wafv2.d.ts.map +1 -1
- package/dist/service/wafv2/sim-wafv2.js +18 -0
- package/dist/service/wafv2/sim-wafv2.js.map +1 -1
- package/dist/service/wafv2/statement/sim-waf-rate-based-input.d.ts +49 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based-input.d.ts.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based-input.js +94 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based-input.js.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.d.ts +22 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.d.ts.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.js +41 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.js.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.type.d.ts +18 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.type.d.ts.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.type.js +2 -0
- package/dist/service/wafv2/statement/sim-waf-rate-based.type.js.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-rate-counter.d.ts +29 -0
- package/dist/service/wafv2/statement/sim-waf-rate-counter.d.ts.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-rate-counter.js +35 -0
- package/dist/service/wafv2/statement/sim-waf-rate-counter.js.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-statement.d.ts +6 -0
- package/dist/service/wafv2/statement/sim-waf-statement.d.ts.map +1 -1
- package/dist/service/wafv2/statement/sim-waf-statement.js +4 -0
- package/dist/service/wafv2/statement/sim-waf-statement.js.map +1 -1
- package/dist/service/wafv2/statement/sim-waf-statement.type.d.ts +2 -1
- package/dist/service/wafv2/statement/sim-waf-statement.type.d.ts.map +1 -1
- package/dist/service/wafv2/statement/sim-waf-unsimulated-rate-based.d.ts +10 -0
- package/dist/service/wafv2/statement/sim-waf-unsimulated-rate-based.d.ts.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-unsimulated-rate-based.js +40 -0
- package/dist/service/wafv2/statement/sim-waf-unsimulated-rate-based.js.map +1 -0
- package/dist/service/wafv2/statement/sim-waf-unsimulated-statement.d.ts.map +1 -1
- package/dist/service/wafv2/statement/sim-waf-unsimulated-statement.js +0 -5
- package/dist/service/wafv2/statement/sim-waf-unsimulated-statement.js.map +1 -1
- package/dist/service/wafv2/web-acl/sim-waf-rule-evaluator.d.ts.map +1 -1
- package/dist/service/wafv2/web-acl/sim-waf-rule-evaluator.js +25 -2
- package/dist/service/wafv2/web-acl/sim-waf-rule-evaluator.js.map +1 -1
- package/dist/service/wafv2/web-acl/sim-waf-rule.type.d.ts +6 -0
- package/dist/service/wafv2/web-acl/sim-waf-rule.type.d.ts.map +1 -1
- package/dist/service/wafv2/web-acl/sim-waf-unevaluatable-rules.d.ts +26 -0
- package/dist/service/wafv2/web-acl/sim-waf-unevaluatable-rules.d.ts.map +1 -0
- package/dist/service/wafv2/web-acl/sim-waf-unevaluatable-rules.js +34 -0
- package/dist/service/wafv2/web-acl/sim-waf-unevaluatable-rules.js.map +1 -0
- package/dist/service/wafv2/web-acl/sim-waf-web-acl-capacity.d.ts.map +1 -1
- package/dist/service/wafv2/web-acl/sim-waf-web-acl-capacity.js +16 -1
- package/dist/service/wafv2/web-acl/sim-waf-web-acl-capacity.js.map +1 -1
- package/dist/util/clock/sim-clock-control.d.ts +8 -0
- package/dist/util/clock/sim-clock-control.d.ts.map +1 -1
- package/dist/util/clock/sim-clock-control.js +10 -1
- package/dist/util/clock/sim-clock-control.js.map +1 -1
- package/package.json +1 -1
- package/dist/service/lambda/command/create-function/create-function-environment-names.d.ts.map +0 -1
- package/dist/service/lambda/command/create-function/create-function-environment-names.js.map +0 -1
- package/dist/service/lambda/command/create-function/create-function-environment.d.ts.map +0 -1
- package/dist/service/lambda/command/create-function/create-function-environment.js.map +0 -1
- package/dist/service/lambda/command/create-function/lambda-reserved-variable-names.d.ts.map +0 -1
- package/dist/service/lambda/command/create-function/lambda-reserved-variable-names.js.map +0 -1
- /package/dist/service/lambda/{command/create-function → function/environment}/lambda-reserved-variable-names.d.ts +0 -0
- /package/dist/service/lambda/{command/create-function → function/environment}/lambda-reserved-variable-names.js +0 -0
|
@@ -49,6 +49,9 @@ export class SimWafCommands {
|
|
|
49
49
|
managedRules: this.managedRules,
|
|
50
50
|
authorizer,
|
|
51
51
|
accountRegionScope,
|
|
52
|
+
// The background scheduler is this simulation's source of time as well
|
|
53
|
+
// as its scheduler, and a rate-based rule counts against it.
|
|
54
|
+
clock: background,
|
|
52
55
|
});
|
|
53
56
|
this.managedRuleGroupCommands = new SimWafManagedRuleGroupCommands({
|
|
54
57
|
authorizer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-wafv2-commands.js","sourceRoot":"","sources":["../../../src/service/wafv2/sim-wafv2-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACjG,OAAO,EACL,kBAAkB,GAEnB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EACL,0BAA0B,GAE3B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,8BAA8B,EAAE,MAAM,uEAAuE,CAAC;AACvH,OAAO,EAAE,6BAA6B,EAAE,MAAM,qEAAqE,CAAC;AACpH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAEvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAe3E;;;;;;;GAOG;AACH,MAAM,OAAO,cAAc;IAChB,OAAO,GAAG,IAAI,mBAAmB,CAAe,SAAS,CAAC,CAAC;IAC3D,MAAM,GAAG,IAAI,mBAAmB,CAAc,QAAQ,CAAC,CAAC;IACxD,gBAAgB,GAAG,IAAI,mBAAmB,CACjD,mBAAmB,CACpB,CAAC;IAEF;;;;;OAKG;IACM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAExC,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAExC,cAAc,CAAuB;IACrC,mBAAmB,CAA4B;IAC/C,wBAAwB,CAAiC;IACzD,aAAa,CAAsB;IACnC,uBAAuB,CAAgC;IACvD,UAAU,CAAsB;IAEzC,YAAY,UAAU,GAAuB,EAAE;QAC7C,MAAM,EACJ,kBAAkB,GAAG,+BAA+B,CAAC,IAAI,EAAE,EAC3D,GAAG,GAAG,IAAI,kBAAkB,EAAE,EAC9B,UAAU,GAAG,IAAI,eAAe,EAAE,EAClC,kBAAkB,GAAG,IAAI,0BAA0B,EAAE,GACtD,GAAG,UAAU,CAAC;QAEf,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAEjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,oBAAoB,CAAC;YAC7C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU;YACV,kBAAkB;
|
|
1
|
+
{"version":3,"file":"sim-wafv2-commands.js","sourceRoot":"","sources":["../../../src/service/wafv2/sim-wafv2-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ import { type SimWafV2Properties } from "./sim-wafv2-commands.js";
|
|
|
12
12
|
import { SimWafCfnResourceFactory } from "./cfn/sim-waf-cfn-resource-factory.js";
|
|
13
13
|
import { SimWafSets } from "./sim-wafv2-sets.js";
|
|
14
14
|
import type { SimWafWebAcl } from "./web-acl/sim-waf-web-acl.js";
|
|
15
|
+
import { type SimWafUnevaluatableRule } from "./web-acl/sim-waf-unevaluatable-rules.js";
|
|
16
|
+
import type { SimWafWebAclWriteInput } from "./command/web-acl/web-acl.command.js";
|
|
15
17
|
export type { SimWafEvaluationRequest } from "./evaluate/sim-waf-evaluation-request.js";
|
|
16
18
|
/**
|
|
17
19
|
* Simulated AWS WAFv2. Handles SDK commands. Emulates AWS behaviour and state.
|
|
@@ -87,6 +89,16 @@ export declare class SimWafV2 extends SimWafSets {
|
|
|
87
89
|
* nothing here, and `rules()` reports what is covered of each.
|
|
88
90
|
*/
|
|
89
91
|
managedRules(): SimWafManagedRules;
|
|
92
|
+
/**
|
|
93
|
+
* The rules of a web ACL input this simulation cannot evaluate.
|
|
94
|
+
*
|
|
95
|
+
* The simulator's own accessor rather than a WAFv2 operation. `CreateWebACL`
|
|
96
|
+
* refuses a web ACL carrying such a rule, because a web ACL that accepted
|
|
97
|
+
* one would allow a request AWS blocks. A template is deployed rule by rule
|
|
98
|
+
* instead, so the CloudFormation layer asks this first and leaves the rules
|
|
99
|
+
* it names out of the web ACL it writes.
|
|
100
|
+
*/
|
|
101
|
+
unevaluatableWebAclRules(input: SimWafWebAclWriteInput): readonly SimWafUnevaluatableRule[];
|
|
90
102
|
/**
|
|
91
103
|
* Handle a CreateWebACL Command from the SDK.
|
|
92
104
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-wafv2.d.ts","sourceRoot":"","sources":["../../../src/service/wafv2/sim-wafv2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,KAAK,KAAK,cAAc,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAExF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-wafv2.d.ts","sourceRoot":"","sources":["../../../src/service/wafv2/sim-wafv2.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { SimWafSdkCommandRouter } from "./sdk/sim-wafv2-sdk-command-router.js";
|
|
|
4
4
|
import { SimWafCommands, } from "./sim-wafv2-commands.js";
|
|
5
5
|
import { SimWafCfnResourceFactory } from "./cfn/sim-waf-cfn-resource-factory.js";
|
|
6
6
|
import { SimWafSets } from "./sim-wafv2-sets.js";
|
|
7
|
+
import { unevaluatableSimWafRules, } from "./web-acl/sim-waf-unevaluatable-rules.js";
|
|
7
8
|
/**
|
|
8
9
|
* Simulated AWS WAFv2. Handles SDK commands. Emulates AWS behaviour and state.
|
|
9
10
|
*
|
|
@@ -100,6 +101,23 @@ export class SimWafV2 extends SimWafSets {
|
|
|
100
101
|
managedRules() {
|
|
101
102
|
return this.commands.managedRules;
|
|
102
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* The rules of a web ACL input this simulation cannot evaluate.
|
|
106
|
+
*
|
|
107
|
+
* The simulator's own accessor rather than a WAFv2 operation. `CreateWebACL`
|
|
108
|
+
* refuses a web ACL carrying such a rule, because a web ACL that accepted
|
|
109
|
+
* one would allow a request AWS blocks. A template is deployed rule by rule
|
|
110
|
+
* instead, so the CloudFormation layer asks this first and leaves the rules
|
|
111
|
+
* it names out of the web ACL it writes.
|
|
112
|
+
*/
|
|
113
|
+
unevaluatableWebAclRules(input) {
|
|
114
|
+
return unevaluatableSimWafRules(input.Rules, {
|
|
115
|
+
regexPatternSets: this.commands.regexPatternSets,
|
|
116
|
+
managedRules: this.commands.managedRules,
|
|
117
|
+
clock: this.commands.background,
|
|
118
|
+
customResponseBodies: input.CustomResponseBodies ?? {},
|
|
119
|
+
});
|
|
120
|
+
}
|
|
103
121
|
/**
|
|
104
122
|
* Handle a CreateWebACL Command from the SDK.
|
|
105
123
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-wafv2.js","sourceRoot":"","sources":["../../../src/service/wafv2/sim-wafv2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAG5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAKjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACL,cAAc,GAEf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-wafv2.js","sourceRoot":"","sources":["../../../src/service/wafv2/sim-wafv2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { SimWafInspectedRequest } from "../evaluate/sim-waf-inspected-request.js";
|
|
2
|
+
import type { SimWafRateBasedStatementInput } from "./sim-waf-rate-based.type.js";
|
|
3
|
+
import type { SimWafStatementInput } from "./sim-waf-statement.type.js";
|
|
4
|
+
/**
|
|
5
|
+
* What a rule joining a rate limit to anything else is refused with.
|
|
6
|
+
*
|
|
7
|
+
* Real WAFv2 draws the line in both directions, and so does this. A
|
|
8
|
+
* `RateBasedStatement` beside another kind would leave that kind unread and
|
|
9
|
+
* the rate limit counting requests the rule meant to leave alone. Nesting one
|
|
10
|
+
* inside a logical statement would count only the requests that reached it. A
|
|
11
|
+
* rate limit narrows what it counts with its own `ScopeDownStatement`.
|
|
12
|
+
*/
|
|
13
|
+
export declare const simWafRateBasedIsWholeStatement: string;
|
|
14
|
+
/**
|
|
15
|
+
* Refuse a rule that names a rate limit and another statement kind together.
|
|
16
|
+
*/
|
|
17
|
+
export declare function refuseJoinedSimWafRateBased(statement: SimWafStatementInput, ruleName: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Which aggregation instance one request is counted under.
|
|
20
|
+
*/
|
|
21
|
+
export type SimWafRateAggregation = (request: SimWafInspectedRequest) => string;
|
|
22
|
+
/**
|
|
23
|
+
* Read how many requests a rate-based statement counts up to.
|
|
24
|
+
*
|
|
25
|
+
* AWS holds the limit to at least ten. A rule below that would limit a client
|
|
26
|
+
* that had barely arrived.
|
|
27
|
+
*/
|
|
28
|
+
export declare function simWafRateLimit(statement: SimWafRateBasedStatementInput, ruleName: string): number;
|
|
29
|
+
/**
|
|
30
|
+
* Read how long a rate-based statement counts over, in milliseconds.
|
|
31
|
+
*
|
|
32
|
+
* AWS takes four windows and no others, and a statement naming none counts
|
|
33
|
+
* over five minutes.
|
|
34
|
+
*/
|
|
35
|
+
export declare function simWafRateWindowMilliseconds(statement: SimWafRateBasedStatementInput, ruleName: string): number;
|
|
36
|
+
/**
|
|
37
|
+
* Read how a rate-based statement groups the requests it counts.
|
|
38
|
+
*
|
|
39
|
+
* `IP` counts each client address on its own. Every request in this simulation
|
|
40
|
+
* reports `simAwsProxiedSourceIp`, leaving one client for the whole
|
|
41
|
+
* simulation. A rate limiting test sends its requests from one client and
|
|
42
|
+
* expects the rule to trip, so that is the case anybody would write.
|
|
43
|
+
*
|
|
44
|
+
* `CONSTANT` counts every request the statement sees together, and AWS asks
|
|
45
|
+
* for a scope-down statement alongside it to say which requests those are. A
|
|
46
|
+
* rule without one would limit everything the web ACL serves.
|
|
47
|
+
*/
|
|
48
|
+
export declare function simWafRateAggregation(statement: SimWafRateBasedStatementInput, ruleName: string): SimWafRateAggregation;
|
|
49
|
+
//# sourceMappingURL=sim-waf-rate-based-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-based-input.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-based-input.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AACvF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAIxE;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,QAEF,CAAC;AAE3C;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,oBAAoB,EAC/B,QAAQ,EAAE,MAAM,GACf,IAAI,CAYN;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,sBAAsB,KAAK,MAAM,CAAC;AAchF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,6BAA6B,EACxC,QAAQ,EAAE,MAAM,GACf,MAAM,CAgBR;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,6BAA6B,EACxC,QAAQ,EAAE,MAAM,GACf,MAAM,CAYR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,6BAA6B,EACxC,QAAQ,EAAE,MAAM,GACf,qBAAqB,CA0BvB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { simAwsProxiedSourceIp } from "../../../serve/http/sim-aws-proxied-connection.js";
|
|
2
|
+
import { invalidSimWafRule } from "./sim-waf-rule-refusals.js";
|
|
3
|
+
import { refuseUnsimulatedSimWafRateKeyType } from "./sim-waf-unsimulated-rate-based.js";
|
|
4
|
+
/**
|
|
5
|
+
* What a rule joining a rate limit to anything else is refused with.
|
|
6
|
+
*
|
|
7
|
+
* Real WAFv2 draws the line in both directions, and so does this. A
|
|
8
|
+
* `RateBasedStatement` beside another kind would leave that kind unread and
|
|
9
|
+
* the rate limit counting requests the rule meant to leave alone. Nesting one
|
|
10
|
+
* inside a logical statement would count only the requests that reached it. A
|
|
11
|
+
* rate limit narrows what it counts with its own `ScopeDownStatement`.
|
|
12
|
+
*/
|
|
13
|
+
export const simWafRateBasedIsWholeStatement = "A RateBasedStatement is the whole of a rule's statement, and cannot be " +
|
|
14
|
+
"joined to or nested inside another one";
|
|
15
|
+
/**
|
|
16
|
+
* Refuse a rule that names a rate limit and another statement kind together.
|
|
17
|
+
*/
|
|
18
|
+
export function refuseJoinedSimWafRateBased(statement, ruleName) {
|
|
19
|
+
if (statement.RateBasedStatement === undefined) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const joined = Object.entries(statement).some(([kind, value]) => kind !== "RateBasedStatement" && value !== undefined);
|
|
23
|
+
if (joined) {
|
|
24
|
+
invalidSimWafRule(ruleName, simWafRateBasedIsWholeStatement);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** The windows AWS counts over, in seconds. */
|
|
28
|
+
const evaluationWindows = new Set([60, 120, 300, 600]);
|
|
29
|
+
/** What AWS counts over when a statement names no window. */
|
|
30
|
+
const defaultEvaluationWindowSec = 300;
|
|
31
|
+
const millisecondsPerSecond = 1000;
|
|
32
|
+
/** The smallest and largest limits AWS takes. */
|
|
33
|
+
const smallestLimit = 10;
|
|
34
|
+
const largestLimit = 2_000_000_000;
|
|
35
|
+
/**
|
|
36
|
+
* Read how many requests a rate-based statement counts up to.
|
|
37
|
+
*
|
|
38
|
+
* AWS holds the limit to at least ten. A rule below that would limit a client
|
|
39
|
+
* that had barely arrived.
|
|
40
|
+
*/
|
|
41
|
+
export function simWafRateLimit(statement, ruleName) {
|
|
42
|
+
const limit = statement.Limit;
|
|
43
|
+
if (limit === undefined || !Number.isSafeInteger(limit)) {
|
|
44
|
+
invalidSimWafRule(ruleName, "A RateBasedStatement needs a whole Limit");
|
|
45
|
+
}
|
|
46
|
+
if (limit < smallestLimit || limit > largestLimit) {
|
|
47
|
+
invalidSimWafRule(ruleName, `A RateBasedStatement Limit is between ${smallestLimit} and ` +
|
|
48
|
+
`${largestLimit}, and this one is ${limit}`);
|
|
49
|
+
}
|
|
50
|
+
return limit;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Read how long a rate-based statement counts over, in milliseconds.
|
|
54
|
+
*
|
|
55
|
+
* AWS takes four windows and no others, and a statement naming none counts
|
|
56
|
+
* over five minutes.
|
|
57
|
+
*/
|
|
58
|
+
export function simWafRateWindowMilliseconds(statement, ruleName) {
|
|
59
|
+
const seconds = statement.EvaluationWindowSec ?? defaultEvaluationWindowSec;
|
|
60
|
+
if (!evaluationWindows.has(seconds)) {
|
|
61
|
+
invalidSimWafRule(ruleName, `A RateBasedStatement EvaluationWindowSec is one of ` +
|
|
62
|
+
`${[...evaluationWindows].join(", ")}, and this one is ${seconds}`);
|
|
63
|
+
}
|
|
64
|
+
return seconds * millisecondsPerSecond;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Read how a rate-based statement groups the requests it counts.
|
|
68
|
+
*
|
|
69
|
+
* `IP` counts each client address on its own. Every request in this simulation
|
|
70
|
+
* reports `simAwsProxiedSourceIp`, leaving one client for the whole
|
|
71
|
+
* simulation. A rate limiting test sends its requests from one client and
|
|
72
|
+
* expects the rule to trip, so that is the case anybody would write.
|
|
73
|
+
*
|
|
74
|
+
* `CONSTANT` counts every request the statement sees together, and AWS asks
|
|
75
|
+
* for a scope-down statement alongside it to say which requests those are. A
|
|
76
|
+
* rule without one would limit everything the web ACL serves.
|
|
77
|
+
*/
|
|
78
|
+
export function simWafRateAggregation(statement, ruleName) {
|
|
79
|
+
const keyType = statement.AggregateKeyType;
|
|
80
|
+
refuseUnsimulatedSimWafRateKeyType(keyType, ruleName);
|
|
81
|
+
if (keyType === "IP") {
|
|
82
|
+
return () => simAwsProxiedSourceIp;
|
|
83
|
+
}
|
|
84
|
+
if (keyType === "CONSTANT") {
|
|
85
|
+
if (statement.ScopeDownStatement === undefined) {
|
|
86
|
+
invalidSimWafRule(ruleName, "A RateBasedStatement aggregating on CONSTANT needs a " +
|
|
87
|
+
"ScopeDownStatement to say which requests it counts");
|
|
88
|
+
}
|
|
89
|
+
return () => "CONSTANT";
|
|
90
|
+
}
|
|
91
|
+
invalidSimWafRule(ruleName, `A RateBasedStatement AggregateKeyType is IP or CONSTANT, and this one ` +
|
|
92
|
+
`is ${String(keyType)}`);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=sim-waf-rate-based-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-based-input.js","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-based-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAI1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AAEzF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAC1C,yEAAyE;IACzE,wCAAwC,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAA+B,EAC/B,QAAgB;IAEhB,IAAI,SAAS,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,KAAK,SAAS,CACxE,CAAC;IAEF,IAAI,MAAM,EAAE,CAAC;QACX,iBAAiB,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAOD,+CAA+C;AAC/C,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEvD,6DAA6D;AAC7D,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,iDAAiD;AACjD,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAwC,EACxC,QAAgB;IAEhB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAE9B,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,iBAAiB,CAAC,QAAQ,EAAE,0CAA0C,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,KAAK,GAAG,aAAa,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;QAClD,iBAAiB,CACf,QAAQ,EACR,yCAAyC,aAAa,OAAO;YAC3D,GAAG,YAAY,qBAAqB,KAAK,EAAE,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,SAAwC,EACxC,QAAgB;IAEhB,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,IAAI,0BAA0B,CAAC;IAE5E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,iBAAiB,CACf,QAAQ,EACR,qDAAqD;YACnD,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,OAAO,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,GAAG,qBAAqB,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAwC,EACxC,QAAgB;IAEhB,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAE3C,kCAAkC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEtD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,GAAW,EAAE,CAAC,qBAAqB,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,IAAI,SAAS,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC/C,iBAAiB,CACf,QAAQ,EACR,uDAAuD;gBACrD,oDAAoD,CACvD,CAAC;QACJ,CAAC;QAED,OAAO,GAAW,EAAE,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,iBAAiB,CACf,QAAQ,EACR,wEAAwE;QACtE,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,CAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SimWafMatcher } from "./sim-waf-field-match.js";
|
|
2
|
+
import type { SimWafRateBasedStatementInput } from "./sim-waf-rate-based.type.js";
|
|
3
|
+
import { type SimWafStatementScope } from "./sim-waf-statement.js";
|
|
4
|
+
/**
|
|
5
|
+
* Compile a rule that limits how many requests one client may make.
|
|
6
|
+
*
|
|
7
|
+
* The statement counts the requests it sees against the aggregation instance
|
|
8
|
+
* their key selects, and claims a request once the count over the evaluation
|
|
9
|
+
* window has gone past `Limit`. The rule's own action then applies. A blocking
|
|
10
|
+
* rule blocks, and a counting rule records the match and lets the next rule
|
|
11
|
+
* have a look.
|
|
12
|
+
*
|
|
13
|
+
* A scope-down statement decides which requests the rule sees at all. One it
|
|
14
|
+
* leaves alone is neither counted nor limited. That is what keeps a rate limit
|
|
15
|
+
* on `/signup` off the rest of a site.
|
|
16
|
+
*
|
|
17
|
+
* Counting is against the simulated clock. A test that has sent enough
|
|
18
|
+
* requests to trip the rule is served again once time has moved past the
|
|
19
|
+
* window.
|
|
20
|
+
*/
|
|
21
|
+
export declare function compileSimWafRateBasedStatement(statement: SimWafRateBasedStatementInput, scope: SimWafStatementScope): SimWafMatcher;
|
|
22
|
+
//# sourceMappingURL=sim-waf-rate-based.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-based.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-based.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM9D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,6BAA6B,EACxC,KAAK,EAAE,oBAAoB,GAC1B,aAAa,CAuBf"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { simWafRateAggregation, simWafRateLimit, simWafRateWindowMilliseconds, } from "./sim-waf-rate-based-input.js";
|
|
2
|
+
import { SimWafRateCounter } from "./sim-waf-rate-counter.js";
|
|
3
|
+
import { compileSimWafStatement, } from "./sim-waf-statement.js";
|
|
4
|
+
import { refuseUnsimulatedSimWafRateMembers } from "./sim-waf-unsimulated-rate-based.js";
|
|
5
|
+
/**
|
|
6
|
+
* Compile a rule that limits how many requests one client may make.
|
|
7
|
+
*
|
|
8
|
+
* The statement counts the requests it sees against the aggregation instance
|
|
9
|
+
* their key selects, and claims a request once the count over the evaluation
|
|
10
|
+
* window has gone past `Limit`. The rule's own action then applies. A blocking
|
|
11
|
+
* rule blocks, and a counting rule records the match and lets the next rule
|
|
12
|
+
* have a look.
|
|
13
|
+
*
|
|
14
|
+
* A scope-down statement decides which requests the rule sees at all. One it
|
|
15
|
+
* leaves alone is neither counted nor limited. That is what keeps a rate limit
|
|
16
|
+
* on `/signup` off the rest of a site.
|
|
17
|
+
*
|
|
18
|
+
* Counting is against the simulated clock. A test that has sent enough
|
|
19
|
+
* requests to trip the rule is served again once time has moved past the
|
|
20
|
+
* window.
|
|
21
|
+
*/
|
|
22
|
+
export function compileSimWafRateBasedStatement(statement, scope) {
|
|
23
|
+
const { ruleName } = scope;
|
|
24
|
+
refuseUnsimulatedSimWafRateMembers(statement, ruleName);
|
|
25
|
+
const limit = simWafRateLimit(statement, ruleName);
|
|
26
|
+
const keyOf = simWafRateAggregation(statement, ruleName);
|
|
27
|
+
const counter = new SimWafRateCounter({
|
|
28
|
+
clock: scope.clock,
|
|
29
|
+
windowMilliseconds: simWafRateWindowMilliseconds(statement, ruleName),
|
|
30
|
+
});
|
|
31
|
+
const scopeDown = statement.ScopeDownStatement === undefined
|
|
32
|
+
? undefined
|
|
33
|
+
: compileSimWafStatement(statement.ScopeDownStatement, scope);
|
|
34
|
+
return (request) => {
|
|
35
|
+
if (scopeDown !== undefined && !scopeDown(request)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return counter.count(keyOf(request)) > limit;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=sim-waf-rate-based.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-based.js","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-based.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,MAAM,qCAAqC,CAAC;AAEzF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,+BAA+B,CAC7C,SAAwC,EACxC,KAA2B;IAE3B,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE3B,kCAAkC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAExD,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,kBAAkB,EAAE,4BAA4B,CAAC,SAAS,EAAE,QAAQ,CAAC;KACtE,CAAC,CAAC;IACH,MAAM,SAAS,GACb,SAAS,CAAC,kBAAkB,KAAK,SAAS;QACxC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAElE,OAAO,CAAC,OAAO,EAAW,EAAE;QAC1B,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SimWafStatementInput } from "./sim-waf-statement.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal structural WAFv2 RateBasedStatement.
|
|
4
|
+
*
|
|
5
|
+
* The members Yulin refuses are declared here rather than left out, so a
|
|
6
|
+
* statement that names one is refused by name.
|
|
7
|
+
*
|
|
8
|
+
* https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/wafv2/Interface/RateBasedStatement/
|
|
9
|
+
*/
|
|
10
|
+
export interface SimWafRateBasedStatementInput {
|
|
11
|
+
readonly Limit?: number | undefined;
|
|
12
|
+
readonly EvaluationWindowSec?: number | undefined;
|
|
13
|
+
readonly AggregateKeyType?: string | undefined;
|
|
14
|
+
readonly ScopeDownStatement?: SimWafStatementInput | undefined;
|
|
15
|
+
readonly CustomKeys?: readonly unknown[] | undefined;
|
|
16
|
+
readonly ForwardedIPConfig?: unknown;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sim-waf-rate-based.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-based.type.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-based.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;;;;;;GAOG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-based.type.js","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-based.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { SimClock } from "../../../util/clock/sim-clock.js";
|
|
2
|
+
interface SimWafRateCounterProperties {
|
|
3
|
+
readonly clock: SimClock;
|
|
4
|
+
readonly windowMilliseconds: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* What one rate-based rule has counted, by aggregation instance.
|
|
8
|
+
*
|
|
9
|
+
* A count is a window over the simulated clock rather than a running total.
|
|
10
|
+
* The instant of each request is kept, and the instants that have fallen out
|
|
11
|
+
* of the window are dropped as the key is read, so a simulation whose clock
|
|
12
|
+
* has been advanced past the window finds the rule counting from nothing
|
|
13
|
+
* again.
|
|
14
|
+
*
|
|
15
|
+
* The counts belong to the compiled rule, so writing a new set of rules over a
|
|
16
|
+
* web ACL starts them again. Real WAF does the same with a rule it has just
|
|
17
|
+
* been given.
|
|
18
|
+
*/
|
|
19
|
+
export declare class SimWafRateCounter {
|
|
20
|
+
#private;
|
|
21
|
+
constructor(properties: SimWafRateCounterProperties);
|
|
22
|
+
/**
|
|
23
|
+
* Count one request against an aggregation key, and answer with what the
|
|
24
|
+
* window holds for that key once it has been counted.
|
|
25
|
+
*/
|
|
26
|
+
count(key: string): number;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=sim-waf-rate-counter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-counter.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-counter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAEjE,UAAU,2BAA2B;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,iBAAiB;;IAK5B,YAAY,UAAU,EAAE,2BAA2B,EAGlD;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASzB;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What one rate-based rule has counted, by aggregation instance.
|
|
3
|
+
*
|
|
4
|
+
* A count is a window over the simulated clock rather than a running total.
|
|
5
|
+
* The instant of each request is kept, and the instants that have fallen out
|
|
6
|
+
* of the window are dropped as the key is read, so a simulation whose clock
|
|
7
|
+
* has been advanced past the window finds the rule counting from nothing
|
|
8
|
+
* again.
|
|
9
|
+
*
|
|
10
|
+
* The counts belong to the compiled rule, so writing a new set of rules over a
|
|
11
|
+
* web ACL starts them again. Real WAF does the same with a rule it has just
|
|
12
|
+
* been given.
|
|
13
|
+
*/
|
|
14
|
+
export class SimWafRateCounter {
|
|
15
|
+
#clock;
|
|
16
|
+
#windowMilliseconds;
|
|
17
|
+
#counted = new Map();
|
|
18
|
+
constructor(properties) {
|
|
19
|
+
this.#clock = properties.clock;
|
|
20
|
+
this.#windowMilliseconds = properties.windowMilliseconds;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Count one request against an aggregation key, and answer with what the
|
|
24
|
+
* window holds for that key once it has been counted.
|
|
25
|
+
*/
|
|
26
|
+
count(key) {
|
|
27
|
+
const now = this.#clock.now().getTime();
|
|
28
|
+
const since = now - this.#windowMilliseconds;
|
|
29
|
+
const within = (this.#counted.get(key) ?? []).filter((at) => at > since);
|
|
30
|
+
within.push(now);
|
|
31
|
+
this.#counted.set(key, within);
|
|
32
|
+
return within.length;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=sim-waf-rate-counter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-rate-counter.js","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-rate-counter.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iBAAiB;IACnB,MAAM,CAAW;IACjB,mBAAmB,CAAS;IAC5B,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEhD,YAAY,UAAuC;QACjD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,kBAAkB,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QAEzE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE/B,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SimClock } from "../../../util/clock/sim-clock.js";
|
|
1
2
|
import type { SimWafRegexPatternSet } from "../regex-pattern-set/sim-waf-regex-pattern-set.js";
|
|
2
3
|
import type { SimWafResourceStore } from "../resource/sim-waf-resource-store.js";
|
|
3
4
|
import { type SimWafMatcher } from "./sim-waf-field-match.js";
|
|
@@ -8,6 +9,11 @@ import type { SimWafStatementInput } from "./sim-waf-statement.type.js";
|
|
|
8
9
|
export interface SimWafStatementScope {
|
|
9
10
|
readonly regexPatternSets: SimWafResourceStore<SimWafRegexPatternSet>;
|
|
10
11
|
readonly ruleName: string;
|
|
12
|
+
/**
|
|
13
|
+
* The simulation's sense of time, which a rate-based statement counts
|
|
14
|
+
* against.
|
|
15
|
+
*/
|
|
16
|
+
readonly clock: SimClock;
|
|
11
17
|
}
|
|
12
18
|
/**
|
|
13
19
|
* Turn one statement into the matcher a rule evaluates a request with.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-waf-statement.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-statement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAEjF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-waf-statement.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-statement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAEjF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EAEV,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AAGrC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,oBAAoB,GAAG,SAAS,EAC3C,KAAK,EAAE,oBAAoB,GAC1B,aAAa,CAgCf"}
|
|
@@ -3,6 +3,7 @@ import { compileSimWafFieldMatcher, } from "./sim-waf-field-match.js";
|
|
|
3
3
|
import { simWafRegexPatternSetTest, simWafRegexTest, } from "./sim-waf-regex-match.js";
|
|
4
4
|
import { compileSimWafLabelMatch } from "./sim-waf-label-match.js";
|
|
5
5
|
import { compileSimWafLogicalStatement } from "./sim-waf-logical-statement.js";
|
|
6
|
+
import { simWafRateBasedIsWholeStatement } from "./sim-waf-rate-based-input.js";
|
|
6
7
|
import { invalidSimWafRule } from "./sim-waf-rule-refusals.js";
|
|
7
8
|
import { simWafSizeTest } from "./sim-waf-size-constraint.js";
|
|
8
9
|
import { refuseUnsimulatedSimWafStatement } from "./sim-waf-unsimulated-statement.js";
|
|
@@ -27,6 +28,9 @@ export function compileSimWafStatement(statement, scope) {
|
|
|
27
28
|
invalidSimWafRule(ruleName, "A ManagedRuleGroupStatement is the whole of a rule's statement, and " +
|
|
28
29
|
"cannot be joined to or nested inside another one");
|
|
29
30
|
}
|
|
31
|
+
if (statement.RateBasedStatement !== undefined) {
|
|
32
|
+
invalidSimWafRule(ruleName, simWafRateBasedIsWholeStatement);
|
|
33
|
+
}
|
|
30
34
|
if (statement.LabelMatchStatement !== undefined) {
|
|
31
35
|
return compileSimWafLabelMatch(statement.LabelMatchStatement, ruleName);
|
|
32
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-waf-statement.js","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-statement.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sim-waf-statement.js","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-statement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SimWafManagedRuleGroupStatementInput } from "../managed/sim-waf-managed-group.type.js";
|
|
2
2
|
import type { SimWafByteMatchStatementInput } from "./sim-waf-byte-match.js";
|
|
3
|
+
import type { SimWafRateBasedStatementInput } from "./sim-waf-rate-based.type.js";
|
|
3
4
|
import type { SimWafLabelMatchStatementInput } from "./sim-waf-label-match.js";
|
|
4
5
|
import type { SimWafFieldToMatchInput } from "./sim-waf-field-to-match.type.js";
|
|
5
6
|
import type { SimWafRegexMatchStatementInput, SimWafRegexPatternSetReferenceInput } from "./sim-waf-regex-match.js";
|
|
@@ -38,7 +39,7 @@ export interface SimWafStatementInput {
|
|
|
38
39
|
readonly IPSetReferenceStatement?: unknown;
|
|
39
40
|
readonly GeoMatchStatement?: unknown;
|
|
40
41
|
readonly AsnMatchStatement?: unknown;
|
|
41
|
-
readonly RateBasedStatement?:
|
|
42
|
+
readonly RateBasedStatement?: SimWafRateBasedStatementInput | undefined;
|
|
42
43
|
readonly SqliMatchStatement?: unknown;
|
|
43
44
|
readonly XssMatchStatement?: unknown;
|
|
44
45
|
readonly LabelMatchStatement?: SimWafLabelMatchStatementInput | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-waf-statement.type.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-statement.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,0CAA0C,CAAC;AACrG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EACV,8BAA8B,EAC9B,mCAAmC,EACpC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,mBAAmB,CAAC,EACzB,SAAS,6BAA6B,EAAE,GACxC,SAAS,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EACxB,CAAC,6BAA6B,GAAG,yBAAyB,CAAC,GAC3D,SAAS,CAAC;IACd,QAAQ,CAAC,mBAAmB,CAAC,EACzB,CAAC,8BAA8B,GAAG,yBAAyB,CAAC,GAC5D,SAAS,CAAC;IACd,QAAQ,CAAC,iCAAiC,CAAC,EACvC,CAAC,mCAAmC,GAAG,yBAAyB,CAAC,GACjE,SAAS,CAAC;IACd,QAAQ,CAAC,uBAAuB,CAAC,EAC7B,CAAC,kCAAkC,GAAG,yBAAyB,CAAC,GAChE,SAAS,CAAC;IACd,QAAQ,CAAC,YAAY,CAAC,EAClB;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAA;KAAE,GACrE,SAAS,CAAC;IACd,QAAQ,CAAC,WAAW,CAAC,EACjB;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAA;KAAE,GACrE,SAAS,CAAC;IACd,QAAQ,CAAC,YAAY,CAAC,EAClB;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAA;KAAE,GACzD,SAAS,CAAC;IACd,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"sim-waf-statement.type.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-statement.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,0CAA0C,CAAC;AACrG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EACV,8BAA8B,EAC9B,mCAAmC,EACpC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,mBAAmB,CAAC,EACzB,SAAS,6BAA6B,EAAE,GACxC,SAAS,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EACxB,CAAC,6BAA6B,GAAG,yBAAyB,CAAC,GAC3D,SAAS,CAAC;IACd,QAAQ,CAAC,mBAAmB,CAAC,EACzB,CAAC,8BAA8B,GAAG,yBAAyB,CAAC,GAC5D,SAAS,CAAC;IACd,QAAQ,CAAC,iCAAiC,CAAC,EACvC,CAAC,mCAAmC,GAAG,yBAAyB,CAAC,GACjE,SAAS,CAAC;IACd,QAAQ,CAAC,uBAAuB,CAAC,EAC7B,CAAC,kCAAkC,GAAG,yBAAyB,CAAC,GAChE,SAAS,CAAC;IACd,QAAQ,CAAC,YAAY,CAAC,EAClB;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAA;KAAE,GACrE,SAAS,CAAC;IACd,QAAQ,CAAC,WAAW,CAAC,EACjB;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,SAAS,CAAA;KAAE,GACrE,SAAS,CAAC;IACd,QAAQ,CAAC,YAAY,CAAC,EAClB;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAA;KAAE,GACzD,SAAS,CAAC;IACd,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;IACxE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,yBAAyB,CAAC,EAC/B,oCAAoC,GACpC,SAAS,CAAC;IACd,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;CAChD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SimWafRateBasedStatementInput } from "./sim-waf-rate-based.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Refuse the parts of a rate-based statement this simulation cannot evaluate.
|
|
4
|
+
*/
|
|
5
|
+
export declare function refuseUnsimulatedSimWafRateMembers(statement: SimWafRateBasedStatementInput, ruleName: string): void;
|
|
6
|
+
/**
|
|
7
|
+
* Refuse an aggregation key type this simulation cannot count by.
|
|
8
|
+
*/
|
|
9
|
+
export declare function refuseUnsimulatedSimWafRateKeyType(keyType: string | undefined, ruleName: string): void;
|
|
10
|
+
//# sourceMappingURL=sim-waf-unsimulated-rate-based.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-unsimulated-rate-based.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-unsimulated-rate-based.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AA2BlF;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,6BAA6B,EACxC,QAAQ,EAAE,MAAM,GACf,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,GACf,IAAI,CAUN"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { refuseSimWafRuleInput } from "./sim-waf-rule-refusals.js";
|
|
2
|
+
const forwardedAddress = "it reads the address from a forwarding header, and needs the source " +
|
|
3
|
+
"address variety IPSetReferenceStatement is waiting on";
|
|
4
|
+
const customAggregation = "aggregating on headers, cookies and query arguments is feasible and is " +
|
|
5
|
+
"not part of this";
|
|
6
|
+
/**
|
|
7
|
+
* The aggregation key types real WAFv2 has and this simulation does not.
|
|
8
|
+
*/
|
|
9
|
+
const refusedKeyTypes = new Map([
|
|
10
|
+
["FORWARDED_IP", forwardedAddress],
|
|
11
|
+
["CUSTOM_KEYS", customAggregation],
|
|
12
|
+
]);
|
|
13
|
+
/**
|
|
14
|
+
* The rate-based members real WAFv2 takes and this simulation does not.
|
|
15
|
+
*/
|
|
16
|
+
const refusedMembers = new Map([
|
|
17
|
+
["CustomKeys", customAggregation],
|
|
18
|
+
["ForwardedIPConfig", forwardedAddress],
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* Refuse the parts of a rate-based statement this simulation cannot evaluate.
|
|
22
|
+
*/
|
|
23
|
+
export function refuseUnsimulatedSimWafRateMembers(statement, ruleName) {
|
|
24
|
+
for (const [member, value] of Object.entries(statement)) {
|
|
25
|
+
const reason = refusedMembers.get(member);
|
|
26
|
+
if (reason !== undefined && value !== undefined) {
|
|
27
|
+
refuseSimWafRuleInput(ruleName, `RateBasedStatement ${member}`, reason);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Refuse an aggregation key type this simulation cannot count by.
|
|
33
|
+
*/
|
|
34
|
+
export function refuseUnsimulatedSimWafRateKeyType(keyType, ruleName) {
|
|
35
|
+
const reason = refusedKeyTypes.get(keyType ?? "");
|
|
36
|
+
if (reason !== undefined) {
|
|
37
|
+
refuseSimWafRuleInput(ruleName, `the aggregation key type ${keyType}`, reason);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=sim-waf-unsimulated-rate-based.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-waf-unsimulated-rate-based.js","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-unsimulated-rate-based.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,gBAAgB,GACpB,sEAAsE;IACtE,uDAAuD,CAAC;AAE1D,MAAM,iBAAiB,GACrB,yEAAyE;IACzE,kBAAkB,CAAC;AAErB;;GAEG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAiB;IAC9C,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAClC,CAAC,aAAa,EAAE,iBAAiB,CAAC;CACnC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAiB;IAC7C,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACjC,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;CACxC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAChD,SAAwC,EACxC,QAAgB;IAEhB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAChD,qBAAqB,CAAC,QAAQ,EAAE,sBAAsB,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC,CAChD,OAA2B,EAC3B,QAAgB;IAEhB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAElD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,qBAAqB,CACnB,QAAQ,EACR,4BAA4B,OAAO,EAAE,EACrC,MAAM,CACP,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-waf-unsimulated-statement.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-unsimulated-statement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-waf-unsimulated-statement.d.ts","sourceRoot":"","sources":["../../../../src/service/wafv2/statement/sim-waf-unsimulated-statement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AA2BxE;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,oBAAoB,EAC/B,QAAQ,EAAE,MAAM,GACf,IAAI,CAQN"}
|