serverless-spy 0.0.8 → 0.0.11
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/.jsii +17 -14
- package/cli/cli.ts +1 -1
- package/cli/node_modules/ws/LICENSE +19 -0
- package/cli/node_modules/ws/README.md +495 -0
- package/cli/node_modules/ws/browser.js +8 -0
- package/cli/node_modules/ws/index.js +13 -0
- package/cli/node_modules/ws/lib/buffer-util.js +127 -0
- package/cli/node_modules/ws/lib/constants.js +12 -0
- package/cli/node_modules/ws/lib/event-target.js +266 -0
- package/cli/node_modules/ws/lib/extension.js +203 -0
- package/cli/node_modules/ws/lib/limiter.js +55 -0
- package/cli/node_modules/ws/lib/permessage-deflate.js +511 -0
- package/cli/node_modules/ws/lib/receiver.js +618 -0
- package/cli/node_modules/ws/lib/sender.js +478 -0
- package/cli/node_modules/ws/lib/stream.js +159 -0
- package/cli/node_modules/ws/lib/subprotocol.js +62 -0
- package/cli/node_modules/ws/lib/validation.js +125 -0
- package/cli/node_modules/ws/lib/websocket-server.js +535 -0
- package/cli/node_modules/ws/lib/websocket.js +1305 -0
- package/cli/node_modules/ws/package.json +61 -0
- package/cli/node_modules/ws/wrapper.mjs +8 -0
- package/cli/ws.ts +1 -1
- package/lib/cjs/cli/cli.d.ts +1 -0
- package/lib/cjs/cli/cli.js +87 -0
- package/lib/cjs/cli/ws.d.ts +1 -0
- package/lib/cjs/cli/ws.js +68 -0
- package/lib/cjs/common/getWebSocketUrl.d.ts +2 -0
- package/lib/cjs/common/getWebSocketUrl.js +57 -0
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +19 -0
- package/lib/cjs/listener/PrettifyForDisplay.d.ts +3 -0
- package/lib/cjs/listener/PrettifyForDisplay.js +3 -0
- package/lib/cjs/listener/RecursivePartial.d.ts +4 -0
- package/lib/cjs/listener/RecursivePartial.js +3 -0
- package/lib/cjs/listener/SpyHandlers.ts.d.ts +109 -0
- package/lib/cjs/listener/SpyHandlers.ts.js +3 -0
- package/lib/cjs/listener/SpyListener.d.ts +40 -0
- package/lib/cjs/listener/SpyListener.js +3 -0
- package/lib/cjs/listener/createServerlessSpyListener.d.ts +13 -0
- package/lib/cjs/listener/createServerlessSpyListener.js +167 -0
- package/lib/cjs/listener/index.d.ts +2 -0
- package/lib/cjs/listener/index.js +19 -0
- package/lib/cjs/listener/matchers.d.ts +0 -0
- package/lib/cjs/listener/matchers.js +55 -0
- package/lib/cjs/listener/setup.d.ts +0 -0
- package/lib/cjs/listener/setup.js +21 -0
- package/lib/{ServerlessSpy.d.ts → cjs/src/ServerlessSpy.d.ts} +0 -0
- package/lib/{ServerlessSpy.js → cjs/src/ServerlessSpy.js} +1 -1
- package/lib/{index.d.ts → cjs/src/index.d.ts} +0 -0
- package/lib/{index.js → cjs/src/index.js} +0 -0
- package/lib/mjs/cli/cli.d.ts +1 -0
- package/lib/mjs/cli/cli.js +85 -0
- package/lib/mjs/cli/ws.d.ts +1 -0
- package/lib/mjs/cli/ws.js +66 -0
- package/lib/mjs/common/getWebSocketUrl.d.ts +2 -0
- package/lib/mjs/common/getWebSocketUrl.js +53 -0
- package/lib/mjs/index.d.ts +2 -0
- package/lib/mjs/index.js +3 -0
- package/lib/mjs/listener/PrettifyForDisplay.d.ts +3 -0
- package/lib/mjs/listener/PrettifyForDisplay.js +2 -0
- package/lib/mjs/listener/RecursivePartial.d.ts +4 -0
- package/lib/mjs/listener/RecursivePartial.js +2 -0
- package/lib/mjs/listener/SpyHandlers.ts.d.ts +109 -0
- package/lib/mjs/listener/SpyHandlers.ts.js +2 -0
- package/lib/mjs/listener/SpyListener.d.ts +40 -0
- package/lib/mjs/listener/SpyListener.js +2 -0
- package/lib/mjs/listener/createServerlessSpyListener.d.ts +13 -0
- package/lib/mjs/listener/createServerlessSpyListener.js +163 -0
- package/lib/mjs/listener/index.d.ts +2 -0
- package/lib/mjs/listener/index.js +3 -0
- package/lib/mjs/listener/matchers.d.ts +0 -0
- package/lib/mjs/listener/matchers.js +55 -0
- package/lib/mjs/listener/setup.d.ts +0 -0
- package/lib/mjs/listener/setup.js +21 -0
- package/lib/mjs/src/ServerlessSpy.d.ts +27 -0
- package/lib/mjs/src/ServerlessSpy.js +293 -0
- package/lib/mjs/src/index.d.ts +1 -0
- package/lib/mjs/src/index.js +2 -0
- package/listener/node_modules/ws/LICENSE +19 -0
- package/listener/node_modules/ws/README.md +495 -0
- package/listener/node_modules/ws/browser.js +8 -0
- package/listener/node_modules/ws/index.js +13 -0
- package/listener/node_modules/ws/lib/buffer-util.js +127 -0
- package/listener/node_modules/ws/lib/constants.js +12 -0
- package/listener/node_modules/ws/lib/event-target.js +266 -0
- package/listener/node_modules/ws/lib/extension.js +203 -0
- package/listener/node_modules/ws/lib/limiter.js +55 -0
- package/listener/node_modules/ws/lib/permessage-deflate.js +511 -0
- package/listener/node_modules/ws/lib/receiver.js +618 -0
- package/listener/node_modules/ws/lib/sender.js +478 -0
- package/listener/node_modules/ws/lib/stream.js +159 -0
- package/listener/node_modules/ws/lib/subprotocol.js +62 -0
- package/listener/node_modules/ws/lib/validation.js +125 -0
- package/listener/node_modules/ws/lib/websocket-server.js +535 -0
- package/listener/node_modules/ws/lib/websocket.js +1305 -0
- package/listener/node_modules/ws/package.json +61 -0
- package/listener/node_modules/ws/wrapper.mjs +8 -0
- package/node_modules/@aws-crypto/crc32/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/crc32/package.json +1 -5
- package/node_modules/@aws-crypto/crc32c/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/crc32c/package.json +1 -5
- package/node_modules/@aws-crypto/ie11-detection/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/ie11-detection/package.json +1 -5
- package/node_modules/@aws-crypto/sha1-browser/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/sha1-browser/package.json +1 -5
- package/node_modules/@aws-crypto/sha256-browser/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/sha256-browser/package.json +1 -5
- package/node_modules/@aws-crypto/sha256-js/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/sha256-js/package.json +1 -5
- package/node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/supports-web-crypto/package.json +1 -5
- package/node_modules/@aws-crypto/util/node_modules/tslib/package.json +1 -5
- package/node_modules/@aws-crypto/util/package.json +1 -5
- package/node_modules/@aws-sdk/abort-controller/package.json +1 -5
- package/node_modules/@aws-sdk/chunked-blob-reader/package.json +1 -5
- package/node_modules/@aws-sdk/chunked-blob-reader-native/package.json +1 -5
- package/node_modules/@aws-sdk/client-apigatewaymanagementapi/package.json +1 -5
- package/node_modules/@aws-sdk/client-cognito-identity/CHANGELOG.md +8 -0
- package/node_modules/@aws-sdk/client-cognito-identity/package.json +3 -7
- package/node_modules/@aws-sdk/client-dynamodb/package.json +1 -5
- package/node_modules/@aws-sdk/client-eventbridge/package.json +1 -5
- package/node_modules/@aws-sdk/client-lambda/package.json +1 -5
- package/node_modules/@aws-sdk/client-s3/CHANGELOG.md +8 -0
- package/node_modules/@aws-sdk/client-s3/node_modules/entities/package.json +1 -5
- package/node_modules/@aws-sdk/client-s3/package.json +2 -6
- package/node_modules/@aws-sdk/client-sns/node_modules/entities/package.json +1 -5
- package/node_modules/@aws-sdk/client-sns/package.json +1 -5
- package/node_modules/@aws-sdk/client-sqs/node_modules/entities/package.json +1 -5
- package/node_modules/@aws-sdk/client-sqs/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/abort-controller/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sso/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sts/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/config-resolver/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-env/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-imds/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-ini/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-process/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-sso/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-web-identity/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/fetch-http-handler/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/hash-node/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/invalid-dependency/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/is-array-buffer/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-content-length/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-host-header/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-logger/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-retry/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-sdk-sts/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-serde/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-signing/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-stack/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/middleware-user-agent/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/node-config-provider/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/node-http-handler/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/property-provider/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/protocol-http/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/querystring-builder/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/querystring-parser/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/service-error-classification/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/shared-ini-file-loader/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/signature-v4/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/smithy-client/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/types/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/url-parser/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-base64-browser/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-base64-node/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-body-length-browser/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-body-length-node/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-buffer-from/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-config-provider/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-hex-encoding/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-uri-escape/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-browser/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-user-agent-node/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-utf8-browser/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-utf8-node/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-waiter/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/node_modules/entities/package.json +1 -5
- package/node_modules/@aws-sdk/client-ssm/package.json +1 -5
- package/node_modules/@aws-sdk/client-sso/package.json +1 -5
- package/node_modules/@aws-sdk/client-sts/node_modules/entities/package.json +1 -5
- package/node_modules/@aws-sdk/client-sts/package.json +1 -5
- package/node_modules/@aws-sdk/config-resolver/package.json +1 -5
- package/node_modules/@aws-sdk/credential-provider-cognito-identity/CHANGELOG.md +8 -0
- package/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json +3 -7
- package/node_modules/@aws-sdk/credential-provider-env/package.json +1 -5
- package/node_modules/@aws-sdk/credential-provider-imds/package.json +1 -5
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +1 -5
- package/node_modules/@aws-sdk/credential-provider-node/package.json +1 -5
- package/node_modules/@aws-sdk/credential-provider-process/package.json +1 -5
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +1 -5
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +1 -5
- package/node_modules/@aws-sdk/credential-providers/CHANGELOG.md +8 -0
- package/node_modules/@aws-sdk/credential-providers/package.json +4 -8
- package/node_modules/@aws-sdk/endpoint-cache/package.json +1 -5
- package/node_modules/@aws-sdk/eventstream-codec/package.json +1 -5
- package/node_modules/@aws-sdk/eventstream-serde-browser/package.json +1 -5
- package/node_modules/@aws-sdk/eventstream-serde-config-resolver/package.json +1 -5
- package/node_modules/@aws-sdk/eventstream-serde-node/package.json +1 -5
- package/node_modules/@aws-sdk/eventstream-serde-universal/package.json +1 -5
- package/node_modules/@aws-sdk/fetch-http-handler/package.json +1 -5
- package/node_modules/@aws-sdk/hash-blob-browser/package.json +1 -5
- package/node_modules/@aws-sdk/hash-node/package.json +1 -5
- package/node_modules/@aws-sdk/hash-stream-node/package.json +1 -5
- package/node_modules/@aws-sdk/invalid-dependency/package.json +1 -5
- package/node_modules/@aws-sdk/is-array-buffer/package.json +1 -5
- package/node_modules/@aws-sdk/lib-dynamodb/package.json +1 -5
- package/node_modules/@aws-sdk/md5-js/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-content-length/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-endpoint-discovery/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-expect-continue/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-flexible-checksums/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-host-header/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-location-constraint/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-logger/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-retry/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-sdk-eventbridge/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-sdk-sqs/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-sdk-sts/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-serde/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-signing/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-ssec/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-stack/package.json +1 -5
- package/node_modules/@aws-sdk/middleware-user-agent/package.json +1 -5
- package/node_modules/@aws-sdk/node-config-provider/package.json +1 -5
- package/node_modules/@aws-sdk/node-http-handler/package.json +1 -5
- package/node_modules/@aws-sdk/property-provider/package.json +1 -5
- package/node_modules/@aws-sdk/protocol-http/package.json +1 -5
- package/node_modules/@aws-sdk/querystring-builder/package.json +1 -5
- package/node_modules/@aws-sdk/querystring-parser/package.json +1 -5
- package/node_modules/@aws-sdk/service-error-classification/package.json +1 -5
- package/node_modules/@aws-sdk/shared-ini-file-loader/package.json +1 -5
- package/node_modules/@aws-sdk/signature-v4/package.json +1 -5
- package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +1 -5
- package/node_modules/@aws-sdk/smithy-client/package.json +1 -5
- package/node_modules/@aws-sdk/types/package.json +1 -5
- package/node_modules/@aws-sdk/url-parser/package.json +1 -5
- package/node_modules/@aws-sdk/util-arn-parser/package.json +1 -5
- package/node_modules/@aws-sdk/util-base64-browser/package.json +1 -5
- package/node_modules/@aws-sdk/util-base64-node/package.json +1 -5
- package/node_modules/@aws-sdk/util-body-length-browser/package.json +1 -5
- package/node_modules/@aws-sdk/util-body-length-node/package.json +1 -5
- package/node_modules/@aws-sdk/util-buffer-from/package.json +1 -5
- package/node_modules/@aws-sdk/util-config-provider/package.json +1 -5
- package/node_modules/@aws-sdk/util-credentials/node_modules/@aws-sdk/shared-ini-file-loader/package.json +1 -5
- package/node_modules/@aws-sdk/util-credentials/package.json +1 -5
- package/node_modules/@aws-sdk/util-defaults-mode-browser/package.json +1 -5
- package/node_modules/@aws-sdk/util-defaults-mode-node/package.json +1 -5
- package/node_modules/@aws-sdk/util-dynamodb/package.json +1 -5
- package/node_modules/@aws-sdk/util-hex-encoding/package.json +1 -5
- package/node_modules/@aws-sdk/util-locate-window/package.json +1 -5
- package/node_modules/@aws-sdk/util-middleware/package.json +1 -5
- package/node_modules/@aws-sdk/util-stream-browser/package.json +1 -5
- package/node_modules/@aws-sdk/util-stream-node/package.json +1 -5
- package/node_modules/@aws-sdk/util-uri-escape/package.json +1 -5
- package/node_modules/@aws-sdk/util-user-agent-browser/package.json +1 -5
- package/node_modules/@aws-sdk/util-user-agent-node/package.json +1 -5
- package/node_modules/@aws-sdk/util-utf8-browser/package.json +1 -5
- package/node_modules/@aws-sdk/util-utf8-node/package.json +1 -5
- package/node_modules/@aws-sdk/util-waiter/package.json +1 -5
- package/node_modules/@aws-sdk/xml-builder/package.json +1 -5
- package/node_modules/@graphql-tools/merge/package.json +0 -4
- package/node_modules/@graphql-tools/schema/package.json +0 -4
- package/node_modules/@graphql-tools/utils/package.json +0 -4
- package/node_modules/@serverless-stack/node/.turbo/turbo-build.log +1 -1
- package/node_modules/@serverless-stack/node/CHANGELOG.md +2 -0
- package/node_modules/@serverless-stack/node/package.json +2 -6
- package/node_modules/@tsconfig/node14/package.json +1 -5
- package/node_modules/available-typed-arrays/package.json +1 -5
- package/node_modules/aws-jwt-verify/package.json +1 -5
- package/node_modules/aws-lambda/node_modules/argparse/package.json +1 -5
- package/node_modules/aws-lambda/node_modules/commander/package.json +1 -5
- package/node_modules/aws-lambda/node_modules/js-yaml/package.json +1 -5
- package/node_modules/aws-lambda/package.json +1 -5
- package/node_modules/aws-sdk/node_modules/uuid/package.json +1 -5
- package/node_modules/aws-sdk/package.json +0 -4
- package/node_modules/aws4/package.json +1 -5
- package/node_modules/base64-js/package.json +1 -5
- package/node_modules/bowser/package.json +1 -5
- package/node_modules/buffer/package.json +1 -5
- package/node_modules/call-bind/package.json +1 -5
- package/node_modules/define-properties/package.json +1 -5
- package/node_modules/es-abstract/package.json +1 -5
- package/node_modules/es-to-primitive/package.json +1 -5
- package/node_modules/esprima/package.json +1 -5
- package/node_modules/events/package.json +0 -4
- package/node_modules/fast-xml-parser/package.json +1 -5
- package/node_modules/for-each/package.json +1 -5
- package/node_modules/function-bind/package.json +1 -5
- package/node_modules/function.prototype.name/package.json +1 -5
- package/node_modules/functions-have-names/package.json +1 -5
- package/node_modules/get-intrinsic/package.json +1 -5
- package/node_modules/get-symbol-description/package.json +1 -5
- package/node_modules/glob-to-regexp/package.json +1 -5
- package/node_modules/graceful-fs/package.json +1 -5
- package/node_modules/graphql/package.json +1 -5
- package/node_modules/graphql-helix/package.json +1 -5
- package/node_modules/has/package.json +1 -5
- package/node_modules/has-bigints/package.json +1 -5
- package/node_modules/has-property-descriptors/package.json +1 -5
- package/node_modules/has-symbols/package.json +1 -5
- package/node_modules/has-tostringtag/package.json +1 -5
- package/node_modules/ieee754/package.json +1 -5
- package/node_modules/inherits/package.json +1 -5
- package/node_modules/internal-slot/package.json +1 -5
- package/node_modules/is-arguments/package.json +1 -5
- package/node_modules/is-bigint/package.json +1 -5
- package/node_modules/is-boolean-object/package.json +1 -5
- package/node_modules/is-callable/package.json +1 -5
- package/node_modules/is-date-object/package.json +1 -5
- package/node_modules/is-generator-function/package.json +1 -5
- package/node_modules/is-negative-zero/package.json +1 -5
- package/node_modules/is-number-object/package.json +1 -5
- package/node_modules/is-regex/package.json +1 -5
- package/node_modules/is-shared-array-buffer/package.json +1 -5
- package/node_modules/is-string/package.json +1 -5
- package/node_modules/is-symbol/package.json +1 -5
- package/node_modules/is-typed-array/package.json +1 -5
- package/node_modules/is-weakref/package.json +1 -5
- package/node_modules/isarray/package.json +1 -5
- package/node_modules/jmespath/package.json +1 -5
- package/node_modules/mnemonist/package.json +1 -5
- package/node_modules/object-inspect/package.json +1 -5
- package/node_modules/object-keys/package.json +1 -5
- package/node_modules/object.assign/package.json +1 -5
- package/node_modules/obliterator/package.json +1 -5
- package/node_modules/querystring/package.json +1 -5
- package/node_modules/regexp.prototype.flags/package.json +1 -5
- package/node_modules/safe-buffer/package.json +1 -5
- package/node_modules/sax/package.json +1 -5
- package/node_modules/side-channel/package.json +1 -5
- package/node_modules/sprintf-js/package.json +1 -5
- package/node_modules/string.prototype.trimend/package.json +1 -5
- package/node_modules/string.prototype.trimstart/package.json +1 -5
- package/node_modules/tslib/package.json +1 -5
- package/node_modules/unbox-primitive/package.json +1 -5
- package/node_modules/url/node_modules/punycode/package.json +1 -5
- package/node_modules/url/package.json +1 -5
- package/node_modules/util/package.json +1 -5
- package/node_modules/uuid/package.json +1 -5
- package/node_modules/value-or-promise/package.json +1 -5
- package/node_modules/watchpack/package.json +1 -5
- package/node_modules/which-boxed-primitive/package.json +1 -5
- package/node_modules/which-typed-array/package.json +1 -5
- package/node_modules/xml2js/node_modules/xmlbuilder/package.json +1 -5
- package/node_modules/xml2js/package.json +1 -5
- package/package.json +35 -27
- package/tsconfig.npm.json +50 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { fromNodeProviderChain } from '@aws-sdk/credential-providers';
|
|
2
|
+
import * as aws4 from 'aws4';
|
|
3
|
+
// ""wss://m6g3w6ttdh.execute-api.eu-west-1.amazonaws.com/prod";"
|
|
4
|
+
export async function getWebSocketUrl(url, credentials) {
|
|
5
|
+
const urlParsed = parseUrl(url);
|
|
6
|
+
const hostParts = urlParsed.host.split('.');
|
|
7
|
+
console.log('urlParsed', urlParsed);
|
|
8
|
+
if (!credentials) {
|
|
9
|
+
const credentialsProvider = fromNodeProviderChain();
|
|
10
|
+
credentials = await credentialsProvider();
|
|
11
|
+
}
|
|
12
|
+
const AWS_REGION = hostParts[2]; // The region of your API-gateway
|
|
13
|
+
const SOCKET_HOST = hostParts[0]; // Your API-gateway ID
|
|
14
|
+
const ENV = urlParsed.pathname.replace(/^\//, ''); // The stage of your target deployment
|
|
15
|
+
const WEBSOCKET_URL = `${SOCKET_HOST}.execute-api.${AWS_REGION}.amazonaws.com`; // Don't prepend with wss!
|
|
16
|
+
// const AWS_REGION = "eu-west-1"; // The region of your API-gateway
|
|
17
|
+
// const SOCKET_HOST = "m6g3w6ttdh"; // Your API-gateway ID
|
|
18
|
+
// const ENV = "prod"; // The stage of your target deployment
|
|
19
|
+
// const WEBSOCKET_URL = `${SOCKET_HOST}.execute-api.${AWS_REGION}.amazonaws.com`; // Don't prepend with wss!
|
|
20
|
+
// Get a signed path
|
|
21
|
+
const { path } = aws4.sign({
|
|
22
|
+
method: 'GET',
|
|
23
|
+
host: WEBSOCKET_URL,
|
|
24
|
+
// path: `/${ENV}?X-Amz-Security-Token=${encodeURIComponent(
|
|
25
|
+
// credentials!.SessionToken!
|
|
26
|
+
// )}`,
|
|
27
|
+
path: `/${ENV}`,
|
|
28
|
+
service: 'execute-api',
|
|
29
|
+
region: AWS_REGION,
|
|
30
|
+
signQuery: true,
|
|
31
|
+
}, {
|
|
32
|
+
accessKeyId: credentials.accessKeyId,
|
|
33
|
+
secretAccessKey: credentials.secretAccessKey,
|
|
34
|
+
sessionToken: credentials.sessionToken,
|
|
35
|
+
});
|
|
36
|
+
const url2 = `wss://${WEBSOCKET_URL}${path}`;
|
|
37
|
+
console.log('path', url2);
|
|
38
|
+
return url2;
|
|
39
|
+
}
|
|
40
|
+
function parseUrl(href) {
|
|
41
|
+
const match = href.match(/^(wss?:)\/\/(([^:/?#]*)(?::([0-9]+))?)([/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);
|
|
42
|
+
return (match && {
|
|
43
|
+
href,
|
|
44
|
+
protocol: match[1],
|
|
45
|
+
host: match[2],
|
|
46
|
+
hostname: match[3],
|
|
47
|
+
port: match[4],
|
|
48
|
+
pathname: match[5],
|
|
49
|
+
search: match[6],
|
|
50
|
+
hash: match[7],
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0V2ViU29ja2V0VXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29tbW9uL2dldFdlYlNvY2tldFVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV0RSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUU3QixpRUFBaUU7QUFFakUsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsR0FBVyxFQUFFLFdBQXlCO0lBQzFFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxNQUFNLFNBQVMsR0FBRyxTQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU3QyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztRQUNwRCxXQUFXLEdBQUcsTUFBTSxtQkFBbUIsRUFBRSxDQUFDO0tBQzNDO0lBRUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUNBQWlDO0lBQ2xFLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtJQUN4RCxNQUFNLEdBQUcsR0FBRyxTQUFVLENBQUMsUUFBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7SUFDM0YsTUFBTSxhQUFhLEdBQUcsR0FBRyxXQUFXLGdCQUFnQixVQUFVLGdCQUFnQixDQUFDLENBQUMsMEJBQTBCO0lBQzFHLG9FQUFvRTtJQUNwRSwyREFBMkQ7SUFDM0QsNkRBQTZEO0lBQzdELDZHQUE2RztJQUU3RyxvQkFBb0I7SUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ3hCO1FBQ0UsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsYUFBYTtRQUNuQiw0REFBNEQ7UUFDNUQsK0JBQStCO1FBQy9CLE9BQU87UUFDUCxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDZixPQUFPLEVBQUUsYUFBYTtRQUN0QixNQUFNLEVBQUUsVUFBVTtRQUNsQixTQUFTLEVBQUUsSUFBSTtLQUNoQixFQUNEO1FBQ0UsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO1FBQ3BDLGVBQWUsRUFBRSxXQUFXLENBQUMsZUFBZTtRQUM1QyxZQUFZLEVBQUUsV0FBVyxDQUFDLFlBQVk7S0FDdkMsQ0FDRixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsU0FBUyxhQUFhLEdBQUcsSUFBSSxFQUFFLENBQUM7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsSUFBWTtJQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN0Qix5RUFBeUUsQ0FDMUUsQ0FBQztJQUNGLE9BQU8sQ0FDTCxLQUFLLElBQUk7UUFDUCxJQUFJO1FBQ0osUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDZCxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsQixJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNkLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ2YsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21Ob2RlUHJvdmlkZXJDaGFpbiB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXJzJztcbmltcG9ydCB7IENyZWRlbnRpYWxzIH0gZnJvbSAnQGF3cy1zZGsvdHlwZXMnO1xuaW1wb3J0ICogYXMgYXdzNCBmcm9tICdhd3M0JztcblxuLy8gXCJcIndzczovL202ZzN3NnR0ZGguZXhlY3V0ZS1hcGkuZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vcHJvZFwiO1wiXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXZWJTb2NrZXRVcmwodXJsOiBzdHJpbmcsIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHMpIHtcbiAgY29uc3QgdXJsUGFyc2VkID0gcGFyc2VVcmwodXJsKTtcbiAgY29uc3QgaG9zdFBhcnRzID0gdXJsUGFyc2VkIS5ob3N0LnNwbGl0KCcuJyk7XG5cbiAgY29uc29sZS5sb2coJ3VybFBhcnNlZCcsIHVybFBhcnNlZCk7XG5cbiAgaWYgKCFjcmVkZW50aWFscykge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzUHJvdmlkZXIgPSBmcm9tTm9kZVByb3ZpZGVyQ2hhaW4oKTtcbiAgICBjcmVkZW50aWFscyA9IGF3YWl0IGNyZWRlbnRpYWxzUHJvdmlkZXIoKTtcbiAgfVxuXG4gIGNvbnN0IEFXU19SRUdJT04gPSBob3N0UGFydHNbMl07IC8vIFRoZSByZWdpb24gb2YgeW91ciBBUEktZ2F0ZXdheVxuICBjb25zdCBTT0NLRVRfSE9TVCA9IGhvc3RQYXJ0c1swXTsgLy8gWW91ciBBUEktZ2F0ZXdheSBJRFxuICBjb25zdCBFTlYgPSB1cmxQYXJzZWQhLnBhdGhuYW1lIS5yZXBsYWNlKC9eXFwvLywgJycpOyAvLyBUaGUgc3RhZ2Ugb2YgeW91ciB0YXJnZXQgZGVwbG95bWVudFxuICBjb25zdCBXRUJTT0NLRVRfVVJMID0gYCR7U09DS0VUX0hPU1R9LmV4ZWN1dGUtYXBpLiR7QVdTX1JFR0lPTn0uYW1hem9uYXdzLmNvbWA7IC8vIERvbid0IHByZXBlbmQgd2l0aCB3c3MhXG4gIC8vIGNvbnN0IEFXU19SRUdJT04gPSBcImV1LXdlc3QtMVwiOyAvLyBUaGUgcmVnaW9uIG9mIHlvdXIgQVBJLWdhdGV3YXlcbiAgLy8gY29uc3QgU09DS0VUX0hPU1QgPSBcIm02ZzN3NnR0ZGhcIjsgLy8gWW91ciBBUEktZ2F0ZXdheSBJRFxuICAvLyBjb25zdCBFTlYgPSBcInByb2RcIjsgLy8gVGhlIHN0YWdlIG9mIHlvdXIgdGFyZ2V0IGRlcGxveW1lbnRcbiAgLy8gY29uc3QgV0VCU09DS0VUX1VSTCA9IGAke1NPQ0tFVF9IT1NUfS5leGVjdXRlLWFwaS4ke0FXU19SRUdJT059LmFtYXpvbmF3cy5jb21gOyAvLyBEb24ndCBwcmVwZW5kIHdpdGggd3NzIVxuXG4gIC8vIEdldCBhIHNpZ25lZCBwYXRoXG4gIGNvbnN0IHsgcGF0aCB9ID0gYXdzNC5zaWduKFxuICAgIHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBob3N0OiBXRUJTT0NLRVRfVVJMLFxuICAgICAgLy8gcGF0aDogYC8ke0VOVn0/WC1BbXotU2VjdXJpdHktVG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAvLyAgIGNyZWRlbnRpYWxzIS5TZXNzaW9uVG9rZW4hXG4gICAgICAvLyApfWAsXG4gICAgICBwYXRoOiBgLyR7RU5WfWAsXG4gICAgICBzZXJ2aWNlOiAnZXhlY3V0ZS1hcGknLFxuICAgICAgcmVnaW9uOiBBV1NfUkVHSU9OLFxuICAgICAgc2lnblF1ZXJ5OiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgYWNjZXNzS2V5SWQ6IGNyZWRlbnRpYWxzLmFjY2Vzc0tleUlkLFxuICAgICAgc2VjcmV0QWNjZXNzS2V5OiBjcmVkZW50aWFscy5zZWNyZXRBY2Nlc3NLZXksXG4gICAgICBzZXNzaW9uVG9rZW46IGNyZWRlbnRpYWxzLnNlc3Npb25Ub2tlbixcbiAgICB9XG4gICk7XG5cbiAgY29uc3QgdXJsMiA9IGB3c3M6Ly8ke1dFQlNPQ0tFVF9VUkx9JHtwYXRofWA7XG4gIGNvbnNvbGUubG9nKCdwYXRoJywgdXJsMik7XG4gIHJldHVybiB1cmwyO1xufVxuXG5mdW5jdGlvbiBwYXJzZVVybChocmVmOiBzdHJpbmcpIHtcbiAgY29uc3QgbWF0Y2ggPSBocmVmLm1hdGNoKFxuICAgIC9eKHdzcz86KVxcL1xcLygoW146Lz8jXSopKD86OihbMC05XSspKT8pKFsvXXswLDF9W14/I10qKShcXD9bXiNdKnwpKCMuKnwpJC9cbiAgKTtcbiAgcmV0dXJuIChcbiAgICBtYXRjaCAmJiB7XG4gICAgICBocmVmLFxuICAgICAgcHJvdG9jb2w6IG1hdGNoWzFdLFxuICAgICAgaG9zdDogbWF0Y2hbMl0sXG4gICAgICBob3N0bmFtZTogbWF0Y2hbM10sXG4gICAgICBwb3J0OiBtYXRjaFs0XSxcbiAgICAgIHBhdGhuYW1lOiBtYXRjaFs1XSxcbiAgICAgIHNlYXJjaDogbWF0Y2hbNl0sXG4gICAgICBoYXNoOiBtYXRjaFs3XSxcbiAgICB9XG4gICk7XG59XG4iXX0=
|
package/lib/mjs/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './src/ServerlessSpy';
|
|
2
|
+
export * from './listener';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvU2VydmVybGVzc1NweSc7XG5leHBvcnQgKiBmcm9tICcuL2xpc3RlbmVyJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJldHRpZnlGb3JEaXNwbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGlzdGVuZXIvUHJldHRpZnlGb3JEaXNwbGF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQcmV0dGlmeUZvckRpc3BsYXk8VD4gPSBUIGV4dGVuZHMgRnVuY3Rpb25cbiAgPyBUXG4gIDoge1xuICAgICAgW0sgaW4ga2V5b2YgVF06IFRbS107XG4gICAgfTtcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjdXJzaXZlUGFydGlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpc3RlbmVyL1JlY3Vyc2l2ZVBhcnRpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByZXR0aWZ5Rm9yRGlzcGxheSB9IGZyb20gJy4vUHJldHRpZnlGb3JEaXNwbGF5JztcblxuZXhwb3J0IHR5cGUgUmVjdXJzaXZlUGFydGlhbDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0/OiBUW1BdIGV4dGVuZHMgKGluZmVyIFUpW11cbiAgICA/IFByZXR0aWZ5Rm9yRGlzcGxheTxSZWN1cnNpdmVQYXJ0aWFsPFU+PltdXG4gICAgOiBUW1BdIGV4dGVuZHMgb2JqZWN0XG4gICAgPyBQcmV0dGlmeUZvckRpc3BsYXk8UmVjdXJzaXZlUGFydGlhbDxUW1BdPj5cbiAgICA6IFRbUF07XG59O1xuIl19
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/// <reference types="jest" />
|
|
2
|
+
import { DynamoDBSpyEvent } from 'serverless-spy-common/spyEvents/DynamoDBSpyEvent';
|
|
3
|
+
import { EventBridgeRuleSpyEvent } from 'serverless-spy-common/spyEvents/EventBridgeRuleSpyEvent';
|
|
4
|
+
import { EventBridgeSpyEvent } from 'serverless-spy-common/spyEvents/EventBridgeSpyEvent';
|
|
5
|
+
import { FunctionConsoleSpyEvent } from 'serverless-spy-common/spyEvents/FunctionConsoleSpyEvent';
|
|
6
|
+
import { FunctionContext } from 'serverless-spy-common/spyEvents/FunctionContext';
|
|
7
|
+
import { FunctionRequestSpyEvent } from 'serverless-spy-common/spyEvents/FunctionRequestSpyEvent';
|
|
8
|
+
import { FunctionResponseSpyEvent } from 'serverless-spy-common/spyEvents/FunctionResponseSpyEvent';
|
|
9
|
+
import { S3SpyEvent } from 'serverless-spy-common/spyEvents/S3SpyEvent';
|
|
10
|
+
import { SnsSubscriptionSpyEvent } from 'serverless-spy-common/spyEvents/SnsSubscriptionSpyEvent';
|
|
11
|
+
import { SnsTopicSpyEvent } from 'serverless-spy-common/spyEvents/SnsTopicSpyEvent';
|
|
12
|
+
import { SqsSpyEvent } from 'serverless-spy-common/spyEvents/SqsSpyEvent';
|
|
13
|
+
import { PrettifyForDisplay } from './PrettifyForDisplay';
|
|
14
|
+
import { RecursivePartial } from './RecursivePartial';
|
|
15
|
+
declare type MyJestMatchers = ReturnType<typeof expect>;
|
|
16
|
+
declare type MyJestMatchersWitOnlyFunctions = Pick<MyJestMatchers, {
|
|
17
|
+
[P in keyof MyJestMatchers]: MyJestMatchers[P] extends (...args: any) => any ? P : never;
|
|
18
|
+
}[keyof MyJestMatchers]>;
|
|
19
|
+
declare type JestExpectWithSpyMethods<TSpyEvent, TSpyHandler> = Omit<{
|
|
20
|
+
[K in keyof MyJestMatchersWitOnlyFunctions]: (...args: Parameters<MyJestMatchersWitOnlyFunctions[K]>) => TSpyHandler;
|
|
21
|
+
}, 'toContainEqual' | 'toEqual' | 'toMatchObject' | 'toStrictEqual'> & {
|
|
22
|
+
/**
|
|
23
|
+
* Used when you want to check that an item is in a list.
|
|
24
|
+
* For testing the items in the list, this matcher recursively checks the
|
|
25
|
+
* equality of all fields, rather than checking for object identity.
|
|
26
|
+
*
|
|
27
|
+
* Optionally, you can provide a type for the expected value via a generic.
|
|
28
|
+
* This is particularly useful for ensuring expected objects have the right structure.
|
|
29
|
+
*/
|
|
30
|
+
toContainEqual(expected: TSpyEvent): TSpyHandler;
|
|
31
|
+
/**
|
|
32
|
+
* Used when you want to check that two objects have the same value.
|
|
33
|
+
* This matcher recursively checks the equality of all fields, rather than checking for object identity.
|
|
34
|
+
*
|
|
35
|
+
* Optionally, you can provide a type for the expected value via a generic.
|
|
36
|
+
* This is particularly useful for ensuring expected objects have the right structure.
|
|
37
|
+
*/
|
|
38
|
+
toEqual(expected: TSpyEvent): TSpyHandler;
|
|
39
|
+
/**
|
|
40
|
+
* Used to check that a JavaScript object matches a subset of the properties of an object
|
|
41
|
+
*
|
|
42
|
+
* Optionally, you can provide an object to use as Generic type for the expected value.
|
|
43
|
+
* This ensures that the matching object matches the structure of the provided object-like type.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
*
|
|
47
|
+
* type House = {
|
|
48
|
+
* bath: boolean;
|
|
49
|
+
* bedrooms: number;
|
|
50
|
+
* kitchen: {
|
|
51
|
+
* amenities: string[];
|
|
52
|
+
* area: number;
|
|
53
|
+
* wallColor: string;
|
|
54
|
+
* }
|
|
55
|
+
* };
|
|
56
|
+
*
|
|
57
|
+
* expect(desiredHouse).toMatchObject<House>({...standardHouse, kitchen: {area: 20}}) // wherein standardHouse is some base object of type House
|
|
58
|
+
*/
|
|
59
|
+
toMatchObject(expected: PrettifyForDisplay<RecursivePartial<TSpyEvent>>): TSpyHandler;
|
|
60
|
+
/**
|
|
61
|
+
* Use to test that objects have the same types as well as structure.
|
|
62
|
+
*
|
|
63
|
+
* Optionally, you can provide a type for the expected value via a generic.
|
|
64
|
+
* This is particularly useful for ensuring expected objects have the right structure.
|
|
65
|
+
*/
|
|
66
|
+
toStrictEqual(expected: TSpyEvent): TSpyHandler;
|
|
67
|
+
};
|
|
68
|
+
export interface DynamoDBSpyHandler<TData = any> extends JestExpectWithSpyMethods<DynamoDBSpyEvent<TData>, DynamoDBSpyHandler<TData>> {
|
|
69
|
+
getData: () => PrettifyForDisplay<DynamoDBSpyEvent<TData>>;
|
|
70
|
+
}
|
|
71
|
+
export interface EventBridgeRuleSpyHandler<TData = any> extends JestExpectWithSpyMethods<EventBridgeRuleSpyEvent<TData>, DynamoDBSpyHandler<TData>> {
|
|
72
|
+
getData: () => PrettifyForDisplay<EventBridgeRuleSpyEvent<TData>>;
|
|
73
|
+
}
|
|
74
|
+
export interface EventBridgeSpyHandler<TData = any> extends JestExpectWithSpyMethods<EventBridgeSpyEvent<TData>, DynamoDBSpyHandler<TData>> {
|
|
75
|
+
getData: () => PrettifyForDisplay<EventBridgeSpyEvent<TData>>;
|
|
76
|
+
}
|
|
77
|
+
export interface FunctionBaseSpyHandler<TData = any> extends JestExpectWithSpyMethods<FunctionRequestSpyEvent<TData>, FunctionRequestSpyHandler<TData>> {
|
|
78
|
+
followedByResponse: <TDataResponse = any>(param: {
|
|
79
|
+
condition?: (event: {
|
|
80
|
+
spyEventType: 'FunctionResponse';
|
|
81
|
+
request: TData;
|
|
82
|
+
context: FunctionContext;
|
|
83
|
+
response: TDataResponse;
|
|
84
|
+
}) => boolean;
|
|
85
|
+
timoutMs?: number;
|
|
86
|
+
}) => Promise<FunctionResponseSpyHandler & JestExpectWithSpyMethods<FunctionRequestSpyEvent<TData>, FunctionRequestSpyHandler<TData>>>;
|
|
87
|
+
}
|
|
88
|
+
export interface FunctionRequestSpyHandler<TData = any> extends FunctionBaseSpyHandler<TData> {
|
|
89
|
+
getData: () => PrettifyForDisplay<FunctionRequestSpyEvent<TData>>;
|
|
90
|
+
}
|
|
91
|
+
export interface FunctionConsoleSpyHandler<TData = any> extends FunctionBaseSpyHandler<TData> {
|
|
92
|
+
getData: () => PrettifyForDisplay<FunctionConsoleSpyEvent<TData>>;
|
|
93
|
+
}
|
|
94
|
+
export interface FunctionResponseSpyHandler<TData = any> extends JestExpectWithSpyMethods<FunctionResponseSpyEvent<TData>, FunctionResponseSpyHandler<TData>> {
|
|
95
|
+
getData: () => PrettifyForDisplay<FunctionResponseSpyEvent<TData>>;
|
|
96
|
+
}
|
|
97
|
+
export interface S3SpyHandler extends JestExpectWithSpyMethods<S3SpyEvent, DynamoDBSpyHandler> {
|
|
98
|
+
getData: () => S3SpyEvent;
|
|
99
|
+
}
|
|
100
|
+
export interface SnsSubscriptionSpyHandler<TData = any> extends JestExpectWithSpyMethods<SnsSubscriptionSpyEvent<TData>, DynamoDBSpyHandler<TData>> {
|
|
101
|
+
getData: () => PrettifyForDisplay<SnsSubscriptionSpyEvent<TData>>;
|
|
102
|
+
}
|
|
103
|
+
export interface SnsTopicSpyHandler<TData = any> extends JestExpectWithSpyMethods<SnsTopicSpyEvent<TData>, DynamoDBSpyHandler<TData>> {
|
|
104
|
+
getData: () => PrettifyForDisplay<SnsTopicSpyEvent<TData>>;
|
|
105
|
+
}
|
|
106
|
+
export interface SqsSpyHandler<TData = any> extends JestExpectWithSpyMethods<SqsSpyEvent<TData>, DynamoDBSpyHandler<TData>> {
|
|
107
|
+
getData: () => PrettifyForDisplay<SqsSpyEvent<TData>>;
|
|
108
|
+
}
|
|
109
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3B5SGFuZGxlcnMudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9TcHlIYW5kbGVycy50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1vREJTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRHluYW1vREJTcHlFdmVudCc7XG5pbXBvcnQgeyBFdmVudEJyaWRnZVJ1bGVTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRCcmlkZ2VTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VTcHlFdmVudCc7XG5pbXBvcnQgeyBGdW5jdGlvbkNvbnNvbGVTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRnVuY3Rpb25Db25zb2xlU3B5RXZlbnQnO1xuaW1wb3J0IHsgRnVuY3Rpb25Db250ZXh0IH0gZnJvbSAnc2VydmVybGVzcy1zcHktY29tbW9uL3NweUV2ZW50cy9GdW5jdGlvbkNvbnRleHQnO1xuaW1wb3J0IHsgRnVuY3Rpb25SZXF1ZXN0U3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL0Z1bmN0aW9uUmVxdWVzdFNweUV2ZW50JztcbmltcG9ydCB7IEZ1bmN0aW9uUmVzcG9uc2VTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRnVuY3Rpb25SZXNwb25zZVNweUV2ZW50JztcbmltcG9ydCB7IFMzU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1MzU3B5RXZlbnQnO1xuaW1wb3J0IHsgU25zU3Vic2NyaXB0aW9uU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1Nuc1N1YnNjcmlwdGlvblNweUV2ZW50JztcbmltcG9ydCB7IFNuc1RvcGljU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1Nuc1RvcGljU3B5RXZlbnQnO1xuaW1wb3J0IHsgU3FzU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1Nxc1NweUV2ZW50JztcbmltcG9ydCB7IFByZXR0aWZ5Rm9yRGlzcGxheSB9IGZyb20gJy4vUHJldHRpZnlGb3JEaXNwbGF5JztcbmltcG9ydCB7IFJlY3Vyc2l2ZVBhcnRpYWwgfSBmcm9tICcuL1JlY3Vyc2l2ZVBhcnRpYWwnO1xuXG50eXBlIE15SmVzdE1hdGNoZXJzID0gUmV0dXJuVHlwZTx0eXBlb2YgZXhwZWN0PjtcbnR5cGUgTXlKZXN0TWF0Y2hlcnNXaXRPbmx5RnVuY3Rpb25zID0gUGljazxcbiAgTXlKZXN0TWF0Y2hlcnMsXG4gIHtcbiAgICBbUCBpbiBrZXlvZiBNeUplc3RNYXRjaGVyc106IE15SmVzdE1hdGNoZXJzW1BdIGV4dGVuZHMgKC4uLmFyZ3M6IGFueSkgPT4gYW55XG4gICAgICA/IFBcbiAgICAgIDogbmV2ZXI7XG4gIH1ba2V5b2YgTXlKZXN0TWF0Y2hlcnNdXG4+O1xudHlwZSBKZXN0RXhwZWN0V2l0aFNweU1ldGhvZHM8VFNweUV2ZW50LCBUU3B5SGFuZGxlcj4gPSBPbWl0PFxuICB7XG4gICAgLy8gdG9NYXRjaE9iamVjdDogKGV4cGVjdGVkOiBSZWN1cnNpdmVQYXJ0aWFsPFRTcHlFdmVudD4pID0+IFRTcHlIYW5kbGVyO1xuICAgIFtLIGluIGtleW9mIE15SmVzdE1hdGNoZXJzV2l0T25seUZ1bmN0aW9uc106IChcbiAgICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8TXlKZXN0TWF0Y2hlcnNXaXRPbmx5RnVuY3Rpb25zW0tdPlxuICAgICkgPT4gVFNweUhhbmRsZXI7XG4gIH0sXG4gICd0b0NvbnRhaW5FcXVhbCcgfCAndG9FcXVhbCcgfCAndG9NYXRjaE9iamVjdCcgfCAndG9TdHJpY3RFcXVhbCdcbj4gJiB7XG4gIC8qKlxuICAgKiBVc2VkIHdoZW4geW91IHdhbnQgdG8gY2hlY2sgdGhhdCBhbiBpdGVtIGlzIGluIGEgbGlzdC5cbiAgICogRm9yIHRlc3RpbmcgdGhlIGl0ZW1zIGluIHRoZSBsaXN0LCB0aGlzIG1hdGNoZXIgcmVjdXJzaXZlbHkgY2hlY2tzIHRoZVxuICAgKiBlcXVhbGl0eSBvZiBhbGwgZmllbGRzLCByYXRoZXIgdGhhbiBjaGVja2luZyBmb3Igb2JqZWN0IGlkZW50aXR5LlxuICAgKlxuICAgKiBPcHRpb25hbGx5LCB5b3UgY2FuIHByb3ZpZGUgYSB0eXBlIGZvciB0aGUgZXhwZWN0ZWQgdmFsdWUgdmlhIGEgZ2VuZXJpYy5cbiAgICogVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBlbnN1cmluZyBleHBlY3RlZCBvYmplY3RzIGhhdmUgdGhlIHJpZ2h0IHN0cnVjdHVyZS5cbiAgICovXG5cbiAgdG9Db250YWluRXF1YWwoZXhwZWN0ZWQ6IFRTcHlFdmVudCk6IFRTcHlIYW5kbGVyO1xuICAvKipcbiAgICogVXNlZCB3aGVuIHlvdSB3YW50IHRvIGNoZWNrIHRoYXQgdHdvIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSB2YWx1ZS5cbiAgICogVGhpcyBtYXRjaGVyIHJlY3Vyc2l2ZWx5IGNoZWNrcyB0aGUgZXF1YWxpdHkgb2YgYWxsIGZpZWxkcywgcmF0aGVyIHRoYW4gY2hlY2tpbmcgZm9yIG9iamVjdCBpZGVudGl0eS5cbiAgICpcbiAgICogT3B0aW9uYWxseSwgeW91IGNhbiBwcm92aWRlIGEgdHlwZSBmb3IgdGhlIGV4cGVjdGVkIHZhbHVlIHZpYSBhIGdlbmVyaWMuXG4gICAqIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZW5zdXJpbmcgZXhwZWN0ZWQgb2JqZWN0cyBoYXZlIHRoZSByaWdodCBzdHJ1Y3R1cmUuXG4gICAqL1xuXG4gIHRvRXF1YWwoZXhwZWN0ZWQ6IFRTcHlFdmVudCk6IFRTcHlIYW5kbGVyO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGNoZWNrIHRoYXQgYSBKYXZhU2NyaXB0IG9iamVjdCBtYXRjaGVzIGEgc3Vic2V0IG9mIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdFxuICAgKlxuICAgKiBPcHRpb25hbGx5LCB5b3UgY2FuIHByb3ZpZGUgYW4gb2JqZWN0IHRvIHVzZSBhcyBHZW5lcmljIHR5cGUgZm9yIHRoZSBleHBlY3RlZCB2YWx1ZS5cbiAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIG1hdGNoaW5nIG9iamVjdCBtYXRjaGVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHByb3ZpZGVkIG9iamVjdC1saWtlIHR5cGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIHR5cGUgSG91c2UgPSB7XG4gICAqICAgYmF0aDogYm9vbGVhbjtcbiAgICogICBiZWRyb29tczogbnVtYmVyO1xuICAgKiAgIGtpdGNoZW46IHtcbiAgICogICAgIGFtZW5pdGllczogc3RyaW5nW107XG4gICAqICAgICBhcmVhOiBudW1iZXI7XG4gICAqICAgICB3YWxsQ29sb3I6IHN0cmluZztcbiAgICogICB9XG4gICAqIH07XG4gICAqXG4gICAqIGV4cGVjdChkZXNpcmVkSG91c2UpLnRvTWF0Y2hPYmplY3Q8SG91c2U+KHsuLi5zdGFuZGFyZEhvdXNlLCBraXRjaGVuOiB7YXJlYTogMjB9fSkgLy8gd2hlcmVpbiBzdGFuZGFyZEhvdXNlIGlzIHNvbWUgYmFzZSBvYmplY3Qgb2YgdHlwZSBIb3VzZVxuICAgKi9cblxuICB0b01hdGNoT2JqZWN0KFxuICAgIGV4cGVjdGVkOiBQcmV0dGlmeUZvckRpc3BsYXk8UmVjdXJzaXZlUGFydGlhbDxUU3B5RXZlbnQ+PlxuICApOiBUU3B5SGFuZGxlcjtcblxuICAvKipcbiAgICogVXNlIHRvIHRlc3QgdGhhdCBvYmplY3RzIGhhdmUgdGhlIHNhbWUgdHlwZXMgYXMgd2VsbCBhcyBzdHJ1Y3R1cmUuXG4gICAqXG4gICAqIE9wdGlvbmFsbHksIHlvdSBjYW4gcHJvdmlkZSBhIHR5cGUgZm9yIHRoZSBleHBlY3RlZCB2YWx1ZSB2aWEgYSBnZW5lcmljLlxuICAgKiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGVuc3VyaW5nIGV4cGVjdGVkIG9iamVjdHMgaGF2ZSB0aGUgcmlnaHQgc3RydWN0dXJlLlxuICAgKi9cblxuICB0b1N0cmljdEVxdWFsKGV4cGVjdGVkOiBUU3B5RXZlbnQpOiBUU3B5SGFuZGxlcjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1vREJTcHlIYW5kbGVyPFREYXRhID0gYW55PlxuICBleHRlbmRzIEplc3RFeHBlY3RXaXRoU3B5TWV0aG9kczxcbiAgICBEeW5hbW9EQlNweUV2ZW50PFREYXRhPixcbiAgICBEeW5hbW9EQlNweUhhbmRsZXI8VERhdGE+XG4gID4ge1xuICBnZXREYXRhOiAoKSA9PiBQcmV0dGlmeUZvckRpc3BsYXk8RHluYW1vREJTcHlFdmVudDxURGF0YT4+O1xufVxuZXhwb3J0IGludGVyZmFjZSBFdmVudEJyaWRnZVJ1bGVTcHlIYW5kbGVyPFREYXRhID0gYW55PlxuICBleHRlbmRzIEplc3RFeHBlY3RXaXRoU3B5TWV0aG9kczxcbiAgICBFdmVudEJyaWRnZVJ1bGVTcHlFdmVudDxURGF0YT4sXG4gICAgRHluYW1vREJTcHlIYW5kbGVyPFREYXRhPlxuICA+IHtcbiAgZ2V0RGF0YTogKCkgPT4gUHJldHRpZnlGb3JEaXNwbGF5PEV2ZW50QnJpZGdlUnVsZVNweUV2ZW50PFREYXRhPj47XG59XG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnJpZGdlU3B5SGFuZGxlcjxURGF0YSA9IGFueT5cbiAgZXh0ZW5kcyBKZXN0RXhwZWN0V2l0aFNweU1ldGhvZHM8XG4gICAgRXZlbnRCcmlkZ2VTcHlFdmVudDxURGF0YT4sXG4gICAgRHluYW1vREJTcHlIYW5kbGVyPFREYXRhPlxuICA+IHtcbiAgZ2V0RGF0YTogKCkgPT4gUHJldHRpZnlGb3JEaXNwbGF5PEV2ZW50QnJpZGdlU3B5RXZlbnQ8VERhdGE+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkJhc2VTcHlIYW5kbGVyPFREYXRhID0gYW55PlxuICBleHRlbmRzIEplc3RFeHBlY3RXaXRoU3B5TWV0aG9kczxcbiAgICBGdW5jdGlvblJlcXVlc3RTcHlFdmVudDxURGF0YT4sXG4gICAgRnVuY3Rpb25SZXF1ZXN0U3B5SGFuZGxlcjxURGF0YT5cbiAgPiB7XG4gIC8vIGZvbGx3ZWRCeUNvbnNvbGVMb2c6ICgpID0+IFByb21pc2U8XG4gIC8vICAgRnVuY3Rpb25CYXNlU3B5SGFuZGxlcjxURGF0YT4gJlxuICAvLyAgICAgSmVzdEV4cGVjdFdpdGhTcHlNZXRob2RzPFxuICAvLyAgICAgICBGdW5jdGlvblJlcXVlc3RTcHlFdmVudDxURGF0YT4sXG4gIC8vICAgICAgIEZ1bmN0aW9uUmVxdWVzdFNweUhhbmRsZXI8VERhdGE+XG4gIC8vICAgICA+XG4gIC8vID47XG4gIGZvbGxvd2VkQnlSZXNwb25zZTogPFREYXRhUmVzcG9uc2UgPSBhbnk+KFxuICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gY29uZnVzZXMgVHlwZVNjcmlwdCB3aGljaCBkb2VzIG5vdCBhY2N1cmF0ZWx5IGRpc3BsYXkgdGhlIHR5cGUuXG4gICAgLy8gTGVhdmUgaXQgZm9yIHJlZmVyZW5jZSFcbiAgICAvLyBwYXJhbTogUHJldHRpZnlGb3JEaXNwbGF5PFxuICAgIC8vICAgV2FpdEZvclBhcmFtczxcbiAgICAvLyAgICAgUHJldHRpZnlGb3JEaXNwbGF5PEZ1bmN0aW9uUmVzcG9uc2VTcHlFdmVudDxURGF0YSwgVERhdGFSZXNwb25zZT4+XG4gICAgLy8gICA+XG4gICAgLy8gPlxuICAgIHBhcmFtOiB7XG4gICAgICBjb25kaXRpb24/OiAoZXZlbnQ6IHtcbiAgICAgICAgc3B5RXZlbnRUeXBlOiAnRnVuY3Rpb25SZXNwb25zZSc7XG4gICAgICAgIHJlcXVlc3Q6IFREYXRhO1xuICAgICAgICBjb250ZXh0OiBGdW5jdGlvbkNvbnRleHQ7XG4gICAgICAgIHJlc3BvbnNlOiBURGF0YVJlc3BvbnNlO1xuICAgICAgfSkgPT4gYm9vbGVhbjtcbiAgICAgIHRpbW91dE1zPzogbnVtYmVyO1xuICAgIH1cbiAgKSA9PiBQcm9taXNlPFxuICAgIEZ1bmN0aW9uUmVzcG9uc2VTcHlIYW5kbGVyICZcbiAgICAgIEplc3RFeHBlY3RXaXRoU3B5TWV0aG9kczxcbiAgICAgICAgRnVuY3Rpb25SZXF1ZXN0U3B5RXZlbnQ8VERhdGE+LFxuICAgICAgICBGdW5jdGlvblJlcXVlc3RTcHlIYW5kbGVyPFREYXRhPlxuICAgICAgPlxuICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uUmVxdWVzdFNweUhhbmRsZXI8VERhdGEgPSBhbnk+XG4gIGV4dGVuZHMgRnVuY3Rpb25CYXNlU3B5SGFuZGxlcjxURGF0YT4ge1xuICBnZXREYXRhOiAoKSA9PiBQcmV0dGlmeUZvckRpc3BsYXk8RnVuY3Rpb25SZXF1ZXN0U3B5RXZlbnQ8VERhdGE+Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkNvbnNvbGVTcHlIYW5kbGVyPFREYXRhID0gYW55PlxuICBleHRlbmRzIEZ1bmN0aW9uQmFzZVNweUhhbmRsZXI8VERhdGE+IHtcbiAgZ2V0RGF0YTogKCkgPT4gUHJldHRpZnlGb3JEaXNwbGF5PEZ1bmN0aW9uQ29uc29sZVNweUV2ZW50PFREYXRhPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25SZXNwb25zZVNweUhhbmRsZXI8VERhdGEgPSBhbnk+XG4gIGV4dGVuZHMgSmVzdEV4cGVjdFdpdGhTcHlNZXRob2RzPFxuICAgIEZ1bmN0aW9uUmVzcG9uc2VTcHlFdmVudDxURGF0YT4sXG4gICAgRnVuY3Rpb25SZXNwb25zZVNweUhhbmRsZXI8VERhdGE+XG4gID4ge1xuICBnZXREYXRhOiAoKSA9PiBQcmV0dGlmeUZvckRpc3BsYXk8RnVuY3Rpb25SZXNwb25zZVNweUV2ZW50PFREYXRhPj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUzNTcHlIYW5kbGVyXG4gIGV4dGVuZHMgSmVzdEV4cGVjdFdpdGhTcHlNZXRob2RzPFMzU3B5RXZlbnQsIER5bmFtb0RCU3B5SGFuZGxlcj4ge1xuICBnZXREYXRhOiAoKSA9PiBTM1NweUV2ZW50O1xufVxuZXhwb3J0IGludGVyZmFjZSBTbnNTdWJzY3JpcHRpb25TcHlIYW5kbGVyPFREYXRhID0gYW55PlxuICBleHRlbmRzIEplc3RFeHBlY3RXaXRoU3B5TWV0aG9kczxcbiAgICBTbnNTdWJzY3JpcHRpb25TcHlFdmVudDxURGF0YT4sXG4gICAgRHluYW1vREJTcHlIYW5kbGVyPFREYXRhPlxuICA+IHtcbiAgZ2V0RGF0YTogKCkgPT4gUHJldHRpZnlGb3JEaXNwbGF5PFNuc1N1YnNjcmlwdGlvblNweUV2ZW50PFREYXRhPj47XG59XG5leHBvcnQgaW50ZXJmYWNlIFNuc1RvcGljU3B5SGFuZGxlcjxURGF0YSA9IGFueT5cbiAgZXh0ZW5kcyBKZXN0RXhwZWN0V2l0aFNweU1ldGhvZHM8XG4gICAgU25zVG9waWNTcHlFdmVudDxURGF0YT4sXG4gICAgRHluYW1vREJTcHlIYW5kbGVyPFREYXRhPlxuICA+IHtcbiAgZ2V0RGF0YTogKCkgPT4gUHJldHRpZnlGb3JEaXNwbGF5PFNuc1RvcGljU3B5RXZlbnQ8VERhdGE+Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3FzU3B5SGFuZGxlcjxURGF0YSA9IGFueT5cbiAgZXh0ZW5kcyBKZXN0RXhwZWN0V2l0aFNweU1ldGhvZHM8XG4gICAgU3FzU3B5RXZlbnQ8VERhdGE+LFxuICAgIER5bmFtb0RCU3B5SGFuZGxlcjxURGF0YT5cbiAgPiB7XG4gIGdldERhdGE6ICgpID0+IFByZXR0aWZ5Rm9yRGlzcGxheTxTcXNTcHlFdmVudDxURGF0YT4+O1xufVxuIl19
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DynamoDBSpyEvent } from 'serverless-spy-common/spyEvents/DynamoDBSpyEvent';
|
|
2
|
+
import { EventBridgeRuleSpyEvent } from 'serverless-spy-common/spyEvents/EventBridgeRuleSpyEvent';
|
|
3
|
+
import { EventBridgeSpyEvent } from 'serverless-spy-common/spyEvents/EventBridgeSpyEvent';
|
|
4
|
+
import { FunctionConsoleSpyEvent } from 'serverless-spy-common/spyEvents/FunctionConsoleSpyEvent';
|
|
5
|
+
import { FunctionRequestSpyEvent } from 'serverless-spy-common/spyEvents/FunctionRequestSpyEvent';
|
|
6
|
+
import { FunctionResponseSpyEvent } from 'serverless-spy-common/spyEvents/FunctionResponseSpyEvent';
|
|
7
|
+
import { S3SpyEvent } from 'serverless-spy-common/spyEvents/S3SpyEvent';
|
|
8
|
+
import { SnsSubscriptionSpyEvent } from 'serverless-spy-common/spyEvents/SnsSubscriptionSpyEvent';
|
|
9
|
+
import { SnsTopicSpyEvent } from 'serverless-spy-common/spyEvents/SnsTopicSpyEvent';
|
|
10
|
+
import { SqsSpyEvent } from 'serverless-spy-common/spyEvents/SqsSpyEvent';
|
|
11
|
+
import { WaitForParams } from './createServerlessSpyListener';
|
|
12
|
+
import { PrettifyForDisplay } from './PrettifyForDisplay';
|
|
13
|
+
import { DynamoDBSpyHandler, EventBridgeSpyHandler, EventBridgeRuleSpyHandler, S3SpyHandler, SnsSubscriptionSpyHandler, SnsTopicSpyHandler, SqsSpyHandler, FunctionRequestSpyHandler, FunctionConsoleSpyHandler, FunctionResponseSpyHandler } from './SpyHandlers.ts';
|
|
14
|
+
export declare type SpyListener<TSpyEvents> = {
|
|
15
|
+
[P in keyof FilterConditionally<TSpyEvents, `DynamoDB#${any}`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<DynamoDBSpyEvent>>>) => DynamoDBSpyHandler<T>;
|
|
16
|
+
} & {
|
|
17
|
+
[P in keyof FilterConditionally<TSpyEvents, `EventBridge#${any}`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<EventBridgeSpyEvent<T>>>>) => EventBridgeSpyHandler<T>;
|
|
18
|
+
} & {
|
|
19
|
+
[P in keyof FilterConditionally<TSpyEvents, `EventBridgeRule#${any}`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<EventBridgeRuleSpyEvent<T>>>>) => EventBridgeRuleSpyHandler<T>;
|
|
20
|
+
} & {
|
|
21
|
+
[P in keyof FilterConditionally<TSpyEvents, `S3#${any}`> & string as `waitFor${P}`]: (param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<S3SpyEvent>>>) => S3SpyHandler;
|
|
22
|
+
} & {
|
|
23
|
+
[P in keyof FilterConditionally<TSpyEvents, `SnsSubscription#${any}`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<SnsSubscriptionSpyEvent<T>>>>) => SnsSubscriptionSpyHandler<T>;
|
|
24
|
+
} & {
|
|
25
|
+
[P in keyof FilterConditionally<TSpyEvents, `SnsTopic#${any}`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<SnsTopicSpyEvent<T>>>>) => SnsTopicSpyHandler<T>;
|
|
26
|
+
} & {
|
|
27
|
+
[P in keyof FilterConditionally<TSpyEvents, `Sqs#${any}`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<SqsSpyEvent<T>>>>) => SqsSpyHandler<T>;
|
|
28
|
+
} & {
|
|
29
|
+
[P in keyof FilterConditionally<TSpyEvents, `Function#${any}#Request`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<FunctionRequestSpyEvent<T>>>>) => FunctionRequestSpyHandler<T>;
|
|
30
|
+
} & {
|
|
31
|
+
[P in keyof FilterConditionally<TSpyEvents, `Function#${any}#Console`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<FunctionConsoleSpyEvent<T>>>>) => FunctionConsoleSpyHandler<T>;
|
|
32
|
+
} & {
|
|
33
|
+
[P in keyof FilterConditionally<TSpyEvents, `Function#${any}#Response`> & string as `waitFor${P}`]: <T = any>(param?: PrettifyForDisplay<WaitForParams<PrettifyForDisplay<FunctionResponseSpyEvent<T>>>>) => FunctionResponseSpyHandler<T>;
|
|
34
|
+
} & {
|
|
35
|
+
stop: () => void;
|
|
36
|
+
};
|
|
37
|
+
declare type FilterConditionally<Source, Condition> = Pick<Source, {
|
|
38
|
+
[K in keyof Source]: Source[K] extends Condition ? K : never;
|
|
39
|
+
}[keyof Source]>;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3B5TGlzdGVuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9TcHlMaXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1vREJTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRHluYW1vREJTcHlFdmVudCc7XG5pbXBvcnQgeyBFdmVudEJyaWRnZVJ1bGVTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQnO1xuaW1wb3J0IHsgRXZlbnRCcmlkZ2VTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRXZlbnRCcmlkZ2VTcHlFdmVudCc7XG5pbXBvcnQgeyBGdW5jdGlvbkNvbnNvbGVTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRnVuY3Rpb25Db25zb2xlU3B5RXZlbnQnO1xuaW1wb3J0IHsgRnVuY3Rpb25SZXF1ZXN0U3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL0Z1bmN0aW9uUmVxdWVzdFNweUV2ZW50JztcbmltcG9ydCB7IEZ1bmN0aW9uUmVzcG9uc2VTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRnVuY3Rpb25SZXNwb25zZVNweUV2ZW50JztcbmltcG9ydCB7IFMzU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1MzU3B5RXZlbnQnO1xuaW1wb3J0IHsgU25zU3Vic2NyaXB0aW9uU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1Nuc1N1YnNjcmlwdGlvblNweUV2ZW50JztcbmltcG9ydCB7IFNuc1RvcGljU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1Nuc1RvcGljU3B5RXZlbnQnO1xuaW1wb3J0IHsgU3FzU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1Nxc1NweUV2ZW50JztcblxuaW1wb3J0IHsgV2FpdEZvclBhcmFtcyB9IGZyb20gJy4vY3JlYXRlU2VydmVybGVzc1NweUxpc3RlbmVyJztcbmltcG9ydCB7IFByZXR0aWZ5Rm9yRGlzcGxheSB9IGZyb20gJy4vUHJldHRpZnlGb3JEaXNwbGF5JztcbmltcG9ydCB7XG4gIER5bmFtb0RCU3B5SGFuZGxlcixcbiAgRXZlbnRCcmlkZ2VTcHlIYW5kbGVyLFxuICBFdmVudEJyaWRnZVJ1bGVTcHlIYW5kbGVyLFxuICBTM1NweUhhbmRsZXIsXG4gIFNuc1N1YnNjcmlwdGlvblNweUhhbmRsZXIsXG4gIFNuc1RvcGljU3B5SGFuZGxlcixcbiAgU3FzU3B5SGFuZGxlcixcbiAgRnVuY3Rpb25SZXF1ZXN0U3B5SGFuZGxlcixcbiAgRnVuY3Rpb25Db25zb2xlU3B5SGFuZGxlcixcbiAgRnVuY3Rpb25SZXNwb25zZVNweUhhbmRsZXIsXG59IGZyb20gJy4vU3B5SGFuZGxlcnMudHMnO1xuXG5leHBvcnQgdHlwZSBTcHlMaXN0ZW5lcjxUU3B5RXZlbnRzPiA9IHtcbiAgW1AgaW4ga2V5b2YgRmlsdGVyQ29uZGl0aW9uYWxseTxUU3B5RXZlbnRzLCBgRHluYW1vREIjJHthbnl9YD4gJlxuICAgIHN0cmluZyBhcyBgd2FpdEZvciR7UH1gXTogPFQgPSBhbnk+KFxuICAgIHBhcmFtPzogUHJldHRpZnlGb3JEaXNwbGF5PFxuICAgICAgV2FpdEZvclBhcmFtczxQcmV0dGlmeUZvckRpc3BsYXk8RHluYW1vREJTcHlFdmVudD4+XG4gICAgPlxuICApID0+IER5bmFtb0RCU3B5SGFuZGxlcjxUPjtcbn0gJiB7XG4gIFtQIGluIGtleW9mIEZpbHRlckNvbmRpdGlvbmFsbHk8VFNweUV2ZW50cywgYEV2ZW50QnJpZGdlIyR7YW55fWA+ICZcbiAgICBzdHJpbmcgYXMgYHdhaXRGb3Ike1B9YF06IDxUID0gYW55PihcbiAgICBwYXJhbT86IFByZXR0aWZ5Rm9yRGlzcGxheTxcbiAgICAgIFdhaXRGb3JQYXJhbXM8UHJldHRpZnlGb3JEaXNwbGF5PEV2ZW50QnJpZGdlU3B5RXZlbnQ8VD4+PlxuICAgID5cbiAgKSA9PiBFdmVudEJyaWRnZVNweUhhbmRsZXI8VD47XG59ICYge1xuICBbUCBpbiBrZXlvZiBGaWx0ZXJDb25kaXRpb25hbGx5PFRTcHlFdmVudHMsIGBFdmVudEJyaWRnZVJ1bGUjJHthbnl9YD4gJlxuICAgIHN0cmluZyBhcyBgd2FpdEZvciR7UH1gXTogPFQgPSBhbnk+KFxuICAgIHBhcmFtPzogUHJldHRpZnlGb3JEaXNwbGF5PFxuICAgICAgV2FpdEZvclBhcmFtczxQcmV0dGlmeUZvckRpc3BsYXk8RXZlbnRCcmlkZ2VSdWxlU3B5RXZlbnQ8VD4+PlxuICAgID5cbiAgKSA9PiBFdmVudEJyaWRnZVJ1bGVTcHlIYW5kbGVyPFQ+O1xufSAmIHtcbiAgW1AgaW4ga2V5b2YgRmlsdGVyQ29uZGl0aW9uYWxseTxUU3B5RXZlbnRzLCBgUzMjJHthbnl9YD4gJlxuICAgIHN0cmluZyBhcyBgd2FpdEZvciR7UH1gXTogKFxuICAgIHBhcmFtPzogUHJldHRpZnlGb3JEaXNwbGF5PFdhaXRGb3JQYXJhbXM8UHJldHRpZnlGb3JEaXNwbGF5PFMzU3B5RXZlbnQ+Pj5cbiAgKSA9PiBTM1NweUhhbmRsZXI7XG59ICYge1xuICBbUCBpbiBrZXlvZiBGaWx0ZXJDb25kaXRpb25hbGx5PFRTcHlFdmVudHMsIGBTbnNTdWJzY3JpcHRpb24jJHthbnl9YD4gJlxuICAgIHN0cmluZyBhcyBgd2FpdEZvciR7UH1gXTogPFQgPSBhbnk+KFxuICAgIHBhcmFtPzogUHJldHRpZnlGb3JEaXNwbGF5PFxuICAgICAgV2FpdEZvclBhcmFtczxQcmV0dGlmeUZvckRpc3BsYXk8U25zU3Vic2NyaXB0aW9uU3B5RXZlbnQ8VD4+PlxuICAgID5cbiAgKSA9PiBTbnNTdWJzY3JpcHRpb25TcHlIYW5kbGVyPFQ+O1xufSAmIHtcbiAgW1AgaW4ga2V5b2YgRmlsdGVyQ29uZGl0aW9uYWxseTxUU3B5RXZlbnRzLCBgU25zVG9waWMjJHthbnl9YD4gJlxuICAgIHN0cmluZyBhcyBgd2FpdEZvciR7UH1gXTogPFQgPSBhbnk+KFxuICAgIHBhcmFtPzogUHJldHRpZnlGb3JEaXNwbGF5PFxuICAgICAgV2FpdEZvclBhcmFtczxQcmV0dGlmeUZvckRpc3BsYXk8U25zVG9waWNTcHlFdmVudDxUPj4+XG4gICAgPlxuICApID0+IFNuc1RvcGljU3B5SGFuZGxlcjxUPjtcbn0gJiB7XG4gIFtQIGluIGtleW9mIEZpbHRlckNvbmRpdGlvbmFsbHk8VFNweUV2ZW50cywgYFNxcyMke2FueX1gPiAmXG4gICAgc3RyaW5nIGFzIGB3YWl0Rm9yJHtQfWBdOiA8VCA9IGFueT4oXG4gICAgcGFyYW0/OiBQcmV0dGlmeUZvckRpc3BsYXk8XG4gICAgICBXYWl0Rm9yUGFyYW1zPFByZXR0aWZ5Rm9yRGlzcGxheTxTcXNTcHlFdmVudDxUPj4+XG4gICAgPlxuICApID0+IFNxc1NweUhhbmRsZXI8VD47XG59ICYge1xuICBbUCBpbiBrZXlvZiBGaWx0ZXJDb25kaXRpb25hbGx5PFRTcHlFdmVudHMsIGBGdW5jdGlvbiMke2FueX0jUmVxdWVzdGA+ICZcbiAgICBzdHJpbmcgYXMgYHdhaXRGb3Ike1B9YF06IDxUID0gYW55PihcbiAgICBwYXJhbT86IFByZXR0aWZ5Rm9yRGlzcGxheTxcbiAgICAgIFdhaXRGb3JQYXJhbXM8UHJldHRpZnlGb3JEaXNwbGF5PEZ1bmN0aW9uUmVxdWVzdFNweUV2ZW50PFQ+Pj5cbiAgICA+XG4gICkgPT4gRnVuY3Rpb25SZXF1ZXN0U3B5SGFuZGxlcjxUPjtcbn0gJiB7XG4gIFtQIGluIGtleW9mIEZpbHRlckNvbmRpdGlvbmFsbHk8VFNweUV2ZW50cywgYEZ1bmN0aW9uIyR7YW55fSNDb25zb2xlYD4gJlxuICAgIHN0cmluZyBhcyBgd2FpdEZvciR7UH1gXTogPFQgPSBhbnk+KFxuICAgIHBhcmFtPzogUHJldHRpZnlGb3JEaXNwbGF5PFxuICAgICAgV2FpdEZvclBhcmFtczxQcmV0dGlmeUZvckRpc3BsYXk8RnVuY3Rpb25Db25zb2xlU3B5RXZlbnQ8VD4+PlxuICAgID5cbiAgKSA9PiBGdW5jdGlvbkNvbnNvbGVTcHlIYW5kbGVyPFQ+O1xufSAmIHtcbiAgW1AgaW4ga2V5b2YgRmlsdGVyQ29uZGl0aW9uYWxseTxUU3B5RXZlbnRzLCBgRnVuY3Rpb24jJHthbnl9I1Jlc3BvbnNlYD4gJlxuICAgIHN0cmluZyBhcyBgd2FpdEZvciR7UH1gXTogPFQgPSBhbnk+KFxuICAgIHBhcmFtPzogUHJldHRpZnlGb3JEaXNwbGF5PFxuICAgICAgV2FpdEZvclBhcmFtczxQcmV0dGlmeUZvckRpc3BsYXk8RnVuY3Rpb25SZXNwb25zZVNweUV2ZW50PFQ+Pj5cbiAgICA+IC8vICAgICAgZmlsdGVyPzogKGV2ZW50OiBGdW5jdGlvblJlc3BvbnNlU3B5RXZlbnQ8VD4pID0+IGJvb2xlYW5cbiAgKSA9PiBGdW5jdGlvblJlc3BvbnNlU3B5SGFuZGxlcjxUPjtcbn0gJiB7XG4gIHN0b3A6ICgpID0+IHZvaWQ7XG59O1xuXG50eXBlIEZpbHRlckNvbmRpdGlvbmFsbHk8U291cmNlLCBDb25kaXRpb24+ID0gUGljazxcbiAgU291cmNlLFxuICB7XG4gICAgW0sgaW4ga2V5b2YgU291cmNlXTogU291cmNlW0tdIGV4dGVuZHMgQ29uZGl0aW9uID8gSyA6IG5ldmVyO1xuICB9W2tleW9mIFNvdXJjZV1cbj47XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Credentials } from '@aws-sdk/types';
|
|
2
|
+
import { SpyEvent } from 'serverless-spy-common/spyEvents/SpyEvent';
|
|
3
|
+
import { SpyListener } from './SpyListener';
|
|
4
|
+
declare type ServerlessSpyListenerParams = {
|
|
5
|
+
serverlessSpyWsUrl: string;
|
|
6
|
+
credentials?: Credentials;
|
|
7
|
+
};
|
|
8
|
+
export declare function createServerlessSpyListener<TSpyEvents>(params: ServerlessSpyListenerParams): Promise<SpyListener<TSpyEvents>>;
|
|
9
|
+
export interface WaitForParams<TSpyEvent extends SpyEvent = SpyEvent> {
|
|
10
|
+
condition?: (event: TSpyEvent) => boolean;
|
|
11
|
+
timoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { getWebSocketUrl } from 'serverless-spy-common/getWebSocketUrl';
|
|
2
|
+
import WebSocket from 'ws';
|
|
3
|
+
export async function createServerlessSpyListener(params) {
|
|
4
|
+
const urlSigned = await getWebSocketUrl(params.serverlessSpyWsUrl, params.credentials);
|
|
5
|
+
const ws = new WebSocket(urlSigned);
|
|
6
|
+
const messages = [];
|
|
7
|
+
let trackers = [];
|
|
8
|
+
let closed = false;
|
|
9
|
+
const functionPrefix = 'waitFor';
|
|
10
|
+
let connectionOpenResolve;
|
|
11
|
+
let waitForConnection = new Promise((resolve) => {
|
|
12
|
+
connectionOpenResolve = resolve;
|
|
13
|
+
});
|
|
14
|
+
ws.on('open', () => {
|
|
15
|
+
console.log('connected ' + new Date().toISOString());
|
|
16
|
+
connectionOpenResolve(undefined);
|
|
17
|
+
});
|
|
18
|
+
ws.on('message', (data) => {
|
|
19
|
+
if (closed)
|
|
20
|
+
return;
|
|
21
|
+
console.log(`From server: ${data}`);
|
|
22
|
+
const message = JSON.parse(data.toString());
|
|
23
|
+
message.serviceKeyForFunction = message.serviceKey.replace(/#/g, '');
|
|
24
|
+
if (message.serviceKey.startsWith('Function')) {
|
|
25
|
+
message.functionContextAwsRequestId = message.data.context.awsRequestId;
|
|
26
|
+
}
|
|
27
|
+
messages.push(message);
|
|
28
|
+
resolveOldTrackerWithNewMessage(message);
|
|
29
|
+
});
|
|
30
|
+
ws.on('close', () => {
|
|
31
|
+
closed = true;
|
|
32
|
+
// console.log("disconnected " + new Date().toISOString());
|
|
33
|
+
});
|
|
34
|
+
const trackerMatchMessage = (tracker, message) => {
|
|
35
|
+
if (tracker.finished)
|
|
36
|
+
return;
|
|
37
|
+
if ((tracker.serviceKey && tracker.serviceKey === message.serviceKey) ||
|
|
38
|
+
(tracker.serviceKeyForFunction &&
|
|
39
|
+
tracker.serviceKeyForFunction === message.serviceKeyForFunction)) {
|
|
40
|
+
if (trackerMatchCondition(tracker, message)) {
|
|
41
|
+
tracker.finished = true;
|
|
42
|
+
const spyAndJestMatchers = {
|
|
43
|
+
getData: () => message.data,
|
|
44
|
+
};
|
|
45
|
+
const serviceKeyForFunction = tracker.serviceKeyForFunction;
|
|
46
|
+
if (serviceKeyForFunction &&
|
|
47
|
+
serviceKeyForFunction.startsWith('Function') &&
|
|
48
|
+
(serviceKeyForFunction.endsWith('Request') ||
|
|
49
|
+
serviceKeyForFunction.endsWith('Console'))) {
|
|
50
|
+
let serviceKeyForFunctionResponse = serviceKeyForFunction;
|
|
51
|
+
if (serviceKeyForFunctionResponse.endsWith('Request')) {
|
|
52
|
+
serviceKeyForFunctionResponse =
|
|
53
|
+
serviceKeyForFunctionResponse.substring(0, serviceKeyForFunctionResponse.length - 'Request'.length);
|
|
54
|
+
}
|
|
55
|
+
else if (serviceKeyForFunctionResponse.endsWith('Console')) {
|
|
56
|
+
serviceKeyForFunctionResponse =
|
|
57
|
+
serviceKeyForFunctionResponse.substring(0, serviceKeyForFunctionResponse.length - 'Console'.length);
|
|
58
|
+
}
|
|
59
|
+
serviceKeyForFunctionResponse += 'Response';
|
|
60
|
+
spyAndJestMatchers.followedByResponse = (paramsW) => {
|
|
61
|
+
return createWaitForXXXFunc(serviceKeyForFunctionResponse, paramsW, message.data.context.awsRequestId)();
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const proxy = new Proxy(spyAndJestMatchers, {
|
|
65
|
+
get: function (target, objectKey) {
|
|
66
|
+
if (target.hasOwnProperty(objectKey)) {
|
|
67
|
+
return target[objectKey];
|
|
68
|
+
}
|
|
69
|
+
else if (objectKey !== 'then') {
|
|
70
|
+
return function () {
|
|
71
|
+
const jestFunctionToExecute = expect(message.data)[objectKey];
|
|
72
|
+
jestFunctionToExecute.apply(undefined, arguments);
|
|
73
|
+
return proxy;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
tracker.promiseResolve(proxy);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
};
|
|
84
|
+
const resolveTrackerInOldMessages = (tracker) => {
|
|
85
|
+
for (const message of messages) {
|
|
86
|
+
if (trackerMatchMessage(tracker, message)) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
};
|
|
92
|
+
const resolveOldTrackerWithNewMessage = (message) => {
|
|
93
|
+
for (let index = 0; index < trackers.length; index++) {
|
|
94
|
+
const tracker = trackers[index];
|
|
95
|
+
if (trackerMatchMessage(tracker, message)) {
|
|
96
|
+
trackers = trackers.splice(index, 1);
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
};
|
|
102
|
+
const spyListener = {};
|
|
103
|
+
spyListener.stop = () => {
|
|
104
|
+
closed = true;
|
|
105
|
+
ws.close();
|
|
106
|
+
};
|
|
107
|
+
const proxy = new Proxy(spyListener, {
|
|
108
|
+
get: function (target, objectKey) {
|
|
109
|
+
if (target.hasOwnProperty(objectKey)) {
|
|
110
|
+
return target[objectKey];
|
|
111
|
+
}
|
|
112
|
+
else if (typeof objectKey === 'string' &&
|
|
113
|
+
objectKey.startsWith(functionPrefix)) {
|
|
114
|
+
const paramsW = arguments[0];
|
|
115
|
+
const serviceKeyForFunction = objectKey.substring(functionPrefix.length);
|
|
116
|
+
return createWaitForXXXFunc(serviceKeyForFunction, paramsW);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
await waitForConnection;
|
|
121
|
+
return proxy;
|
|
122
|
+
function trackerMatchCondition(tracker, message) {
|
|
123
|
+
const matchCondition = (tracker.condition && tracker.condition(message.data)) ||
|
|
124
|
+
!tracker.condition;
|
|
125
|
+
const matchRequestId = (tracker.functionContextAwsRequestId &&
|
|
126
|
+
tracker.functionContextAwsRequestId ===
|
|
127
|
+
message.functionContextAwsRequestId) ||
|
|
128
|
+
!tracker.functionContextAwsRequestId;
|
|
129
|
+
if (tracker.functionContextAwsRequestId) {
|
|
130
|
+
console.log(`${tracker.functionContextAwsRequestId} - ${message.functionContextAwsRequestId}`);
|
|
131
|
+
}
|
|
132
|
+
return matchCondition && matchRequestId;
|
|
133
|
+
}
|
|
134
|
+
function createWaitForXXXFunc(serviceKeyForFunction, paramsW, functionContextAwsRequestId) {
|
|
135
|
+
let tracker;
|
|
136
|
+
const promise = new Promise((resolve, reject) => {
|
|
137
|
+
tracker = {
|
|
138
|
+
finished: false,
|
|
139
|
+
promiseResolve: resolve,
|
|
140
|
+
promiseReject: reject,
|
|
141
|
+
serviceKeyForFunction,
|
|
142
|
+
functionContextAwsRequestId,
|
|
143
|
+
};
|
|
144
|
+
});
|
|
145
|
+
return function waitForXXXFunc() {
|
|
146
|
+
tracker.condition = paramsW?.condition;
|
|
147
|
+
const timer = setTimeout(() => {
|
|
148
|
+
if (tracker.finished)
|
|
149
|
+
return;
|
|
150
|
+
tracker.finished = true;
|
|
151
|
+
tracker.promiseReject(new Error(`Timeout waiting for Serverless Spy message ${serviceKeyForFunction}`));
|
|
152
|
+
}, paramsW?.timoutMs || 10000);
|
|
153
|
+
promise.finally(() => {
|
|
154
|
+
clearTimeout(timer);
|
|
155
|
+
});
|
|
156
|
+
if (!resolveTrackerInOldMessages(tracker)) {
|
|
157
|
+
trackers.push(tracker);
|
|
158
|
+
}
|
|
159
|
+
return promise;
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU2VydmVybGVzc1NweUxpc3RlbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGlzdGVuZXIvY3JlYXRlU2VydmVybGVzc1NweUxpc3RlbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUl4RSxPQUFPLFNBQVMsTUFBTSxJQUFJLENBQUM7QUFRM0IsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsTUFBbUM7SUFFbkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxlQUFlLENBQ3JDLE1BQU0sQ0FBQyxrQkFBa0IsRUFDekIsTUFBTSxDQUFDLFdBQVcsQ0FDbkIsQ0FBQztJQUNGLE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sUUFBUSxHQUF3QixFQUFFLENBQUM7SUFDekMsSUFBSSxRQUFRLEdBQWMsRUFBRSxDQUFDO0lBQzdCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNuQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDakMsSUFBSSxxQkFBK0MsQ0FBQztJQUVwRCxJQUFJLGlCQUFpQixHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDOUMscUJBQXFCLEdBQUcsT0FBTyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1FBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRCxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNILEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDeEIs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RTtnQkFDbkIsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hCO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbmltcG9ydCB7IENyZWRlbnRpYWxzIH0gZnJvbSAnQGF3cy1zZGsvdHlwZXMnO1xuaW1wb3J0IHsgZ2V0V2ViU29ja2V0VXJsIH0gZnJvbSAnc2VydmVybGVzcy1zcHktY29tbW9uL2dldFdlYlNvY2tldFVybCc7XG5pbXBvcnQgeyBGdW5jdGlvblJlcXVlc3RTcHlFdmVudCB9IGZyb20gJ3NlcnZlcmxlc3Mtc3B5LWNvbW1vbi9zcHlFdmVudHMvRnVuY3Rpb25SZXF1ZXN0U3B5RXZlbnQnO1xuaW1wb3J0IHsgU3B5RXZlbnQgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1NweUV2ZW50JztcbmltcG9ydCB7IFNweU1lc3NhZ2UgfSBmcm9tICdzZXJ2ZXJsZXNzLXNweS1jb21tb24vc3B5RXZlbnRzL1NweU1lc3NhZ2UnO1xuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgeyBTcHlMaXN0ZW5lciB9IGZyb20gJy4vU3B5TGlzdGVuZXInO1xuXG50eXBlIFNlcnZlcmxlc3NTcHlMaXN0ZW5lclBhcmFtcyA9IHtcbiAgc2VydmVybGVzc1NweVdzVXJsOiBzdHJpbmc7XG4gIGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHM7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2VydmVybGVzc1NweUxpc3RlbmVyPFRTcHlFdmVudHM+KFxuICBwYXJhbXM6IFNlcnZlcmxlc3NTcHlMaXN0ZW5lclBhcmFtc1xuKSB7XG4gIGNvbnN0IHVybFNpZ25lZCA9IGF3YWl0IGdldFdlYlNvY2tldFVybChcbiAgICBwYXJhbXMuc2VydmVybGVzc1NweVdzVXJsLFxuICAgIHBhcmFtcy5jcmVkZW50aWFsc1xuICApO1xuICBjb25zdCB3cyA9IG5ldyBXZWJTb2NrZXQodXJsU2lnbmVkKTtcbiAgY29uc3QgbWVzc2FnZXM6IFNweU1lc3NhZ2VTdG9yYWdlW10gPSBbXTtcbiAgbGV0IHRyYWNrZXJzOiBUcmFja2VyW10gPSBbXTtcbiAgbGV0IGNsb3NlZCA9IGZhbHNlO1xuICBjb25zdCBmdW5jdGlvblByZWZpeCA9ICd3YWl0Rm9yJztcbiAgbGV0IGNvbm5lY3Rpb25PcGVuUmVzb2x2ZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkO1xuXG4gIGxldCB3YWl0Rm9yQ29ubmVjdGlvbiA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29ubmVjdGlvbk9wZW5SZXNvbHZlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgd3Mub24oJ29wZW4nLCAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2Nvbm5lY3RlZCAnICsgbmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgICBjb25uZWN0aW9uT3BlblJlc29sdmUodW5kZWZpbmVkKTtcbiAgfSk7XG4gIHdzLm9uKCdtZXNzYWdlJywgKGRhdGEpID0+IHtcbiAgICBpZiAoY2xvc2VkKSByZXR1cm47XG5cbiAgICBjb25zb2xlLmxvZyhgRnJvbSBzZXJ2ZXI6ICR7ZGF0YX1gKTtcblxuICAgIGNvbnN0IG1lc3NhZ2UgPSBKU09OLnBhcnNlKGRhdGEudG9TdHJpbmcoKSkgYXMgU3B5TWVzc2FnZVN0b3JhZ2U7XG5cbiAgICBtZXNzYWdlLnNlcnZpY2VLZXlGb3JGdW5jdGlvbiA9IG1lc3NhZ2Uuc2VydmljZUtleS5yZXBsYWNlKC8jL2csICcnKTtcblxuICAgIGlmIChtZXNzYWdlLnNlcnZpY2VLZXkuc3RhcnRzV2l0aCgnRnVuY3Rpb24nKSkge1xuICAgICAgbWVzc2FnZS5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQgPSAoXG4gICAgICAgIG1lc3NhZ2UuZGF0YSBhcyBGdW5jdGlvblJlcXVlc3RTcHlFdmVudFxuICAgICAgKS5jb250ZXh0LmF3c1JlcXVlc3RJZDtcbiAgICB9XG5cbiAgICBtZXNzYWdlcy5wdXNoKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVPbGRUcmFja2VyV2l0aE5ld01lc3NhZ2UobWVzc2FnZSk7XG4gIH0pO1xuICB3cy5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAvLyBjb25zb2xlLmxvZyhcImRpc2Nvbm5lY3RlZCBcIiArIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XG4gIH0pO1xuXG4gIGNvbnN0IHRyYWNrZXJNYXRjaE1lc3NhZ2UgPSAoXG4gICAgdHJhY2tlcjogVHJhY2tlcixcbiAgICBtZXNzYWdlOiBTcHlNZXNzYWdlU3RvcmFnZVxuICApID0+IHtcbiAgICBpZiAodHJhY2tlci5maW5pc2hlZCkgcmV0dXJuO1xuXG4gICAgaWYgKFxuICAgICAgKHRyYWNrZXIuc2VydmljZUtleSAmJiB0cmFja2VyLnNlcnZpY2VLZXkgPT09IG1lc3NhZ2Uuc2VydmljZUtleSkgfHxcbiAgICAgICh0cmFja2VyLnNlcnZpY2VLZXlGb3JGdW5jdGlvbiAmJlxuICAgICAgICB0cmFja2VyLnNlcnZpY2VLZXlGb3JGdW5jdGlvbiA9PT0gbWVzc2FnZS5zZXJ2aWNlS2V5Rm9yRnVuY3Rpb24pXG4gICAgKSB7XG4gICAgICBpZiAodHJhY2tlck1hdGNoQ29uZGl0aW9uKHRyYWNrZXIsIG1lc3NhZ2UpKSB7XG4gICAgICAgIHRyYWNrZXIuZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IHNweUFuZEplc3RNYXRjaGVyczogYW55ID0ge1xuICAgICAgICAgIGdldERhdGE6ICgpID0+IG1lc3NhZ2UuZGF0YSxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb24gPSB0cmFja2VyLnNlcnZpY2VLZXlGb3JGdW5jdGlvbjtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlcnZpY2VLZXlGb3JGdW5jdGlvbiAmJlxuICAgICAgICAgIHNlcnZpY2VLZXlGb3JGdW5jdGlvbi5zdGFydHNXaXRoKCdGdW5jdGlvbicpICYmXG4gICAgICAgICAgKHNlcnZpY2VLZXlGb3JGdW5jdGlvbi5lbmRzV2l0aCgnUmVxdWVzdCcpIHx8XG4gICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb24uZW5kc1dpdGgoJ0NvbnNvbGUnKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGV0IHNlcnZpY2VLZXlGb3JGdW5jdGlvblJlc3BvbnNlID0gc2VydmljZUtleUZvckZ1bmN0aW9uO1xuXG4gICAgICAgICAgaWYgKHNlcnZpY2VLZXlGb3JGdW5jdGlvblJlc3BvbnNlLmVuZHNXaXRoKCdSZXF1ZXN0JykpIHtcbiAgICAgICAgICAgIHNlcnZpY2VLZXlGb3JGdW5jdGlvblJlc3BvbnNlID1cbiAgICAgICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2Uuc3Vic3RyaW5nKFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UubGVuZ3RoIC0gJ1JlcXVlc3QnLmxlbmd0aFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UuZW5kc1dpdGgoJ0NvbnNvbGUnKSkge1xuICAgICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UgPVxuICAgICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb25SZXNwb25zZS5zdWJzdHJpbmcoXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb25SZXNwb25zZS5sZW5ndGggLSAnQ29uc29sZScubGVuZ3RoXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uUmVzcG9uc2UgKz0gJ1Jlc3BvbnNlJztcblxuICAgICAgICAgIHNweUFuZEplc3RNYXRjaGVycy5mb2xsb3dlZEJ5UmVzcG9uc2UgPSAocGFyYW1zVzogV2FpdEZvclBhcmFtcykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVdhaXRGb3JYWFhGdW5jKFxuICAgICAgICAgICAgICBzZXJ2aWNlS2V5Rm9yRnVuY3Rpb25SZXNwb25zZSxcbiAgICAgICAgICAgICAgcGFyYW1zVyxcbiAgICAgICAgICAgICAgKG1lc3NhZ2UuZGF0YSBhcyBGdW5jdGlvblJlcXVlc3RTcHlFdmVudCkuY29udGV4dC5hd3NSZXF1ZXN0SWRcbiAgICAgICAgICAgICkoKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJveHkgPSBuZXcgUHJveHkoc3B5QW5kSmVzdE1hdGNoZXJzLCB7XG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIG9iamVjdEtleTogc3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc093blByb3BlcnR5KG9iamVjdEtleSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldFtvYmplY3RLZXldO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkgIT09ICd0aGVuJykge1xuICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGplc3RGdW5jdGlvblRvRXhlY3V0ZSA9IChleHBlY3QobWVzc2FnZS5kYXRhKSBhcyBhbnkpW1xuICAgICAgICAgICAgICAgICAgb2JqZWN0S2V5XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBqZXN0RnVuY3Rpb25Ub0V4ZWN1dGUuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm94eTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICB0cmFja2VyLnByb21pc2VSZXNvbHZlKHByb3h5KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICBjb25zdCByZXNvbHZlVHJhY2tlckluT2xkTWVzc2FnZXMgPSAodHJhY2tlcjogVHJhY2tlcikgPT4ge1xuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlcykge1xuICAgICAgaWYgKHRyYWNrZXJNYXRjaE1lc3NhZ2UodHJhY2tlciwgbWVzc2FnZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IHJlc29sdmVPbGRUcmFja2VyV2l0aE5ld01lc3NhZ2UgPSAobWVzc2FnZTogU3B5TWVzc2FnZVN0b3JhZ2UpID0+IHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhY2tlcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCB0cmFja2VyID0gdHJhY2tlcnNbaW5kZXhdO1xuICAgICAgaWYgKHRyYWNrZXJNYXRjaE1lc3NhZ2UodHJhY2tlciwgbWVzc2FnZSkpIHtcbiAgICAgICAgdHJhY2tlcnMgPSB0cmFja2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgY29uc3Qgc3B5TGlzdGVuZXIgPSB7fSBhcyBTcHlMaXN0ZW5lcjxUU3B5RXZlbnRzPjtcblxuICBzcHlMaXN0ZW5lci5zdG9wID0gKCkgPT4ge1xuICAgIGNsb3NlZCA9IHRydWU7XG4gICAgd3MuY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eShzcHlMaXN0ZW5lciwge1xuICAgIGdldDogZnVuY3Rpb24gKHRhcmdldDogYW55LCBvYmplY3RLZXk6IHN0cmluZykge1xuICAgICAgaWYgKHRhcmdldC5oYXNPd25Qcm9wZXJ0eShvYmplY3RLZXkpKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRbb2JqZWN0S2V5XTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiBvYmplY3RLZXkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIG9iamVjdEtleS5zdGFydHNXaXRoKGZ1bmN0aW9uUHJlZml4KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc1cgPSBhcmd1bWVudHNbMF0gYXMgV2FpdEZvclBhcmFtcztcbiAgICAgICAgY29uc3Qgc2VydmljZUtleUZvckZ1bmN0aW9uID0gb2JqZWN0S2V5LnN1YnN0cmluZyhcbiAgICAgICAgICBmdW5jdGlvblByZWZpeC5sZW5ndGhcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gY3JlYXRlV2FpdEZvclhYWEZ1bmMoc2VydmljZUtleUZvckZ1bmN0aW9uLCBwYXJhbXNXKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBhd2FpdCB3YWl0Rm9yQ29ubmVjdGlvbjtcblxuICByZXR1cm4gcHJveHkgYXMgU3B5TGlzdGVuZXI8VFNweUV2ZW50cz47XG5cbiAgZnVuY3Rpb24gdHJhY2tlck1hdGNoQ29uZGl0aW9uKHRyYWNrZXI6IFRyYWNrZXIsIG1lc3NhZ2U6IFNweU1lc3NhZ2VTdG9yYWdlKSB7XG4gICAgY29uc3QgbWF0Y2hDb25kaXRpb24gPVxuICAgICAgKHRyYWNrZXIuY29uZGl0aW9uICYmIHRyYWNrZXIuY29uZGl0aW9uKG1lc3NhZ2UuZGF0YSkpIHx8XG4gICAgICAhdHJhY2tlci5jb25kaXRpb247XG5cbiAgICBjb25zdCBtYXRjaFJlcXVlc3RJZCA9XG4gICAgICAodHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQgJiZcbiAgICAgICAgdHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQgPT09XG4gICAgICAgICAgbWVzc2FnZS5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQpIHx8XG4gICAgICAhdHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQ7XG5cbiAgICBpZiAodHJhY2tlci5mdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgJHt0cmFja2VyLmZ1bmN0aW9uQ29udGV4dEF3c1JlcXVlc3RJZH0gLSAke21lc3NhZ2UuZnVuY3Rpb25Db250ZXh0QXdzUmVxdWVzdElkfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoQ29uZGl0aW9uICYmIG1hdGNoUmVxdWVzdElkO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlV2FpdEZvclhYWEZ1bmMoXG4gICAgc2VydmljZUtleUZvckZ1bmN0aW9uOiBzdHJpbmcsXG4gICAgcGFyYW1zVzogV2FpdEZvclBhcmFtczxTcHlFdmVudD4sXG4gICAgZnVuY3Rpb25Db250ZXh0QXdzUmVxdWVzdElkPzogc3RyaW5nXG4gICkge1xuICAgIGxldCB0cmFja2VyOiBUcmFja2VyO1xuXG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyYWNrZXIgPSB7XG4gICAgICAgIGZpbmlzaGVkOiBmYWxzZSxcbiAgICAgICAgcHJvbWlzZVJlc29sdmU6IHJlc29sdmUsXG4gICAgICAgIHByb21pc2VSZWplY3Q6IHJlamVjdCxcbiAgICAgICAgc2VydmljZUtleUZvckZ1bmN0aW9uLFxuICAgICAgICBmdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHdhaXRGb3JYWFhGdW5jKCkge1xuICAgICAgdHJhY2tlci5jb25kaXRpb24gPSBwYXJhbXNXPy5jb25kaXRpb247XG5cbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0cmFja2VyLmZpbmlzaGVkKSByZXR1cm47XG4gICAgICAgIHRyYWNrZXIuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICB0cmFja2VyLnByb21pc2VSZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFRpbWVvdXQgd2FpdGluZyBmb3IgU2VydmVybGVzcyBTcHkgbWVzc2FnZSAke3NlcnZpY2VLZXlGb3JGdW5jdGlvbn1gXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSwgcGFyYW1zVz8udGltb3V0TXMgfHwgMTAwMDApO1xuXG4gICAgICBwcm9taXNlLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzb2x2ZVRyYWNrZXJJbk9sZE1lc3NhZ2VzKHRyYWNrZXIpKSB7XG4gICAgICAgIHRyYWNrZXJzLnB1c2godHJhY2tlcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWl0Rm9yUGFyYW1zPFRTcHlFdmVudCBleHRlbmRzIFNweUV2ZW50ID0gU3B5RXZlbnQ+IHtcbiAgY29uZGl0aW9uPzogKGV2ZW50OiBUU3B5RXZlbnQpID0+IGJvb2xlYW47XG4gIHRpbW91dE1zPzogbnVtYmVyO1xufVxuXG50eXBlIFRyYWNrZXIgPSB7XG4gIHByb21pc2VSZXNvbHZlOiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICBwcm9taXNlUmVqZWN0OiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICBmaW5pc2hlZDogYm9vbGVhbjtcbiAgc2VydmljZUtleT86IHN0cmluZztcbiAgc2VydmljZUtleUZvckZ1bmN0aW9uPzogc3RyaW5nO1xuICBjb25kaXRpb24/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICB0aW1vdXRNcz86IG51bWJlcjtcbiAgZnVuY3Rpb25Db250ZXh0QXdzUmVxdWVzdElkPzogc3RyaW5nO1xufTtcblxudHlwZSBTcHlNZXNzYWdlU3RvcmFnZSA9IFNweU1lc3NhZ2UgJiB7XG4gIHNlcnZpY2VLZXlGb3JGdW5jdGlvbjogc3RyaW5nO1xuICBmdW5jdGlvbkNvbnRleHRBd3NSZXF1ZXN0SWQ/OiBzdHJpbmc7XG59O1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './createServerlessSpyListener';
|
|
2
|
+
export * from './SpyListener';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jcmVhdGVTZXJ2ZXJsZXNzU3B5TGlzdGVuZXInO1xuZXhwb3J0ICogZnJvbSAnLi9TcHlMaXN0ZW5lcic7XG4iXX0=
|
|
File without changes
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
// import { ServerlessSpyListener } from "./ServerlessSpyListener";
|
|
4
|
+
|
|
5
|
+
type CustomMatcherResult = {
|
|
6
|
+
message: () => string;
|
|
7
|
+
pass: boolean;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const toReceiveEvent = async (
|
|
11
|
+
spy: any,
|
|
12
|
+
serviceKey: string,
|
|
13
|
+
condition?: (data: any) => boolean
|
|
14
|
+
): Promise<CustomMatcherResult> => {
|
|
15
|
+
console.log('NOTRI');
|
|
16
|
+
|
|
17
|
+
await sleep(3000);
|
|
18
|
+
|
|
19
|
+
// console.log("SPY", spy);
|
|
20
|
+
// const events = await spy.awaitEvents((events) => {
|
|
21
|
+
// return events.some((event) => event["detail-type"] === expected);
|
|
22
|
+
// });
|
|
23
|
+
|
|
24
|
+
// const pass = events.some((event) => event["detail-type"] === expected);
|
|
25
|
+
|
|
26
|
+
// const message = pass
|
|
27
|
+
// ? () => {
|
|
28
|
+
// return (
|
|
29
|
+
// matcherHint("toHaveEventWithDetailType", "eventsSpy", "detail-type") +
|
|
30
|
+
// "\n\n" +
|
|
31
|
+
// `Expected: not ${printExpected(expected)}\n` +
|
|
32
|
+
// `Number of events: ${printReceived(events.length)}`
|
|
33
|
+
// );
|
|
34
|
+
// }
|
|
35
|
+
// : () => {
|
|
36
|
+
// return (
|
|
37
|
+
// matcherHint("toHaveEventWithDetailType", "eventsSpy", "detail-type") +
|
|
38
|
+
// "\n\n" +
|
|
39
|
+
// `Expected: ${printExpected(expected)}\n` +
|
|
40
|
+
// (events.length > 0
|
|
41
|
+
// ? `Received: ${printReceived(events[0]?.["detail-type"])}`
|
|
42
|
+
// : `Number of events: ${printReceived(events.length)}`)
|
|
43
|
+
// );
|
|
44
|
+
// };
|
|
45
|
+
|
|
46
|
+
return { message: () => 'OK', pass: true };
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
function sleep(ms: number) {
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
setTimeout(resolve, ms);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
*/
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9tYXRjaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvREUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuLy8gaW1wb3J0IHsgU2VydmVybGVzc1NweUxpc3RlbmVyIH0gZnJvbSBcIi4vU2VydmVybGVzc1NweUxpc3RlbmVyXCI7XG5cbnR5cGUgQ3VzdG9tTWF0Y2hlclJlc3VsdCA9IHtcbiAgbWVzc2FnZTogKCkgPT4gc3RyaW5nO1xuICBwYXNzOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvUmVjZWl2ZUV2ZW50ID0gYXN5bmMgKFxuICBzcHk6IGFueSxcbiAgc2VydmljZUtleTogc3RyaW5nLFxuICBjb25kaXRpb24/OiAoZGF0YTogYW55KSA9PiBib29sZWFuXG4pOiBQcm9taXNlPEN1c3RvbU1hdGNoZXJSZXN1bHQ+ID0+IHtcbiAgY29uc29sZS5sb2coJ05PVFJJJyk7XG5cbiAgYXdhaXQgc2xlZXAoMzAwMCk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTUFlcIiwgc3B5KTtcbiAgLy8gY29uc3QgZXZlbnRzID0gYXdhaXQgc3B5LmF3YWl0RXZlbnRzKChldmVudHMpID0+IHtcbiAgLy8gICByZXR1cm4gZXZlbnRzLnNvbWUoKGV2ZW50KSA9PiBldmVudFtcImRldGFpbC10eXBlXCJdID09PSBleHBlY3RlZCk7XG4gIC8vIH0pO1xuXG4gIC8vIGNvbnN0IHBhc3MgPSBldmVudHMuc29tZSgoZXZlbnQpID0+IGV2ZW50W1wiZGV0YWlsLXR5cGVcIl0gPT09IGV4cGVjdGVkKTtcblxuICAvLyBjb25zdCBtZXNzYWdlID0gcGFzc1xuICAvLyAgID8gKCkgPT4ge1xuICAvLyAgICAgICByZXR1cm4gKFxuICAvLyAgICAgICAgIG1hdGNoZXJIaW50KFwidG9IYXZlRXZlbnRXaXRoRGV0YWlsVHlwZVwiLCBcImV2ZW50c1NweVwiLCBcImRldGFpbC10eXBlXCIpICtcbiAgLy8gICAgICAgICBcIlxcblxcblwiICtcbiAgLy8gICAgICAgICBgRXhwZWN0ZWQ6IG5vdCAke3ByaW50RXhwZWN0ZWQoZXhwZWN0ZWQpfVxcbmAgK1xuICAvLyAgICAgICAgIGBOdW1iZXIgb2YgZXZlbnRzOiAke3ByaW50UmVjZWl2ZWQoZXZlbnRzLmxlbmd0aCl9YFxuICAvLyAgICAgICApO1xuICAvLyAgICAgfVxuICAvLyAgIDogKCkgPT4ge1xuICAvLyAgICAgICByZXR1cm4gKFxuICAvLyAgICAgICAgIG1hdGNoZXJIaW50KFwidG9IYXZlRXZlbnRXaXRoRGV0YWlsVHlwZVwiLCBcImV2ZW50c1NweVwiLCBcImRldGFpbC10eXBlXCIpICtcbiAgLy8gICAgICAgICBcIlxcblxcblwiICtcbiAgLy8gICAgICAgICBgRXhwZWN0ZWQ6ICR7cHJpbnRFeHBlY3RlZChleHBlY3RlZCl9XFxuYCArXG4gIC8vICAgICAgICAgKGV2ZW50cy5sZW5ndGggPiAwXG4gIC8vICAgICAgICAgICA/IGBSZWNlaXZlZDogJHtwcmludFJlY2VpdmVkKGV2ZW50c1swXT8uW1wiZGV0YWlsLXR5cGVcIl0pfWBcbiAgLy8gICAgICAgICAgIDogYE51bWJlciBvZiBldmVudHM6ICR7cHJpbnRSZWNlaXZlZChldmVudHMubGVuZ3RoKX1gKVxuICAvLyAgICAgICApO1xuICAvLyAgICAgfTtcblxuICByZXR1cm4geyBtZXNzYWdlOiAoKSA9PiAnT0snLCBwYXNzOiB0cnVlIH07XG59O1xuXG5mdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpO1xuICB9KTtcbn1cbiovXG4iXX0=
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import * as matchers from './matchers';
|
|
3
|
+
// if (expect !== undefined) {
|
|
4
|
+
// expect.extend(matchers);
|
|
5
|
+
// } else {
|
|
6
|
+
// /* eslint-disable no-console */
|
|
7
|
+
// console.error(
|
|
8
|
+
// "Unable to find Jest's global expect." +
|
|
9
|
+
// '\nPlease check you have added jest-extended correctly to your jest configuration.' +
|
|
10
|
+
// '\nSee https://github.com/jest-community/jest-extended#setup for help.'
|
|
11
|
+
// );
|
|
12
|
+
// /* eslint-enable no-console */
|
|
13
|
+
// }
|
|
14
|
+
// declare global {
|
|
15
|
+
// namespace jest {
|
|
16
|
+
// interface Matchers<R> {
|
|
17
|
+
// toReceiveEvent(serviceKey: string, condition?: (data: any) => boolean): R;
|
|
18
|
+
// }
|
|
19
|
+
// }
|
|
20
|
+
// }
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saXN0ZW5lci9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMENBQTBDO0FBRTFDLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IsV0FBVztBQUNYLG9DQUFvQztBQUNwQyxtQkFBbUI7QUFDbkIsK0NBQStDO0FBQy9DLDhGQUE4RjtBQUM5RixnRkFBZ0Y7QUFDaEYsT0FBTztBQUNQLG1DQUFtQztBQUNuQyxJQUFJO0FBRUosbUJBQW1CO0FBQ25CLHFCQUFxQjtBQUNyQiw4QkFBOEI7QUFDOUIsbUZBQW1GO0FBQ25GLFFBQVE7QUFDUixNQUFNO0FBQ04sSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCAqIGFzIG1hdGNoZXJzIGZyb20gJy4vbWF0Y2hlcnMnO1xuXG4vLyBpZiAoZXhwZWN0ICE9PSB1bmRlZmluZWQpIHtcbi8vICAgZXhwZWN0LmV4dGVuZChtYXRjaGVycyk7XG4vLyB9IGVsc2Uge1xuLy8gICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vLyAgIGNvbnNvbGUuZXJyb3IoXG4vLyAgICAgXCJVbmFibGUgdG8gZmluZCBKZXN0J3MgZ2xvYmFsIGV4cGVjdC5cIiArXG4vLyAgICAgICAnXFxuUGxlYXNlIGNoZWNrIHlvdSBoYXZlIGFkZGVkIGplc3QtZXh0ZW5kZWQgY29ycmVjdGx5IHRvIHlvdXIgamVzdCBjb25maWd1cmF0aW9uLicgK1xuLy8gICAgICAgJ1xcblNlZSBodHRwczovL2dpdGh1Yi5jb20vamVzdC1jb21tdW5pdHkvamVzdC1leHRlbmRlZCNzZXR1cCBmb3IgaGVscC4nXG4vLyAgICk7XG4vLyAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuLy8gfVxuXG4vLyBkZWNsYXJlIGdsb2JhbCB7XG4vLyAgIG5hbWVzcGFjZSBqZXN0IHtcbi8vICAgICBpbnRlcmZhY2UgTWF0Y2hlcnM8Uj4ge1xuLy8gICAgICAgdG9SZWNlaXZlRXZlbnQoc2VydmljZUtleTogc3RyaW5nLCBjb25kaXRpb24/OiAoZGF0YTogYW55KSA9PiBib29sZWFuKTogUjtcbi8vICAgICB9XG4vLyAgIH1cbi8vIH1cbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Construct, IConstruct } from 'constructs';
|
|
2
|
+
export declare class ServerlessSpy extends Construct {
|
|
3
|
+
private extensionLayer;
|
|
4
|
+
private table;
|
|
5
|
+
private webSocketApi;
|
|
6
|
+
private ownContructs;
|
|
7
|
+
private functionSubscriptionPool;
|
|
8
|
+
private functionSubscriptionMain;
|
|
9
|
+
private webSocketStage;
|
|
10
|
+
wsUrl: string;
|
|
11
|
+
constructor(scope: Construct, id: string);
|
|
12
|
+
private iterateAllElements;
|
|
13
|
+
private interceptSqs;
|
|
14
|
+
private createFunctionForSubscription;
|
|
15
|
+
private interceptS3;
|
|
16
|
+
private interceptDynamodb;
|
|
17
|
+
private interceptEventBusRule;
|
|
18
|
+
private interceptEventBus;
|
|
19
|
+
private interceptSnsTopic;
|
|
20
|
+
private interceptSnsSubscription;
|
|
21
|
+
private provideFunctionForSubscription;
|
|
22
|
+
private interceptFunction;
|
|
23
|
+
getConstructName(construct: IConstruct): string;
|
|
24
|
+
private getTopic;
|
|
25
|
+
private getEventBridge;
|
|
26
|
+
private findElement;
|
|
27
|
+
}
|