@adtrackify/at-service-common 5.1.2 → 5.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/__tests__/clients/acuity-client.spec.js +20 -21
- package/dist/cjs/__tests__/clients/acuity-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +86 -97
- package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +95 -94
- package/dist/cjs/__tests__/clients/dynamodb-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/event-collector-client.spec.js +58 -58
- package/dist/cjs/__tests__/clients/event-collector-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/liveintent-client.spec.js +37 -0
- package/dist/cjs/__tests__/clients/liveintent-client.spec.js.map +1 -0
- package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js +17 -18
- package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js +255 -273
- package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js +125 -137
- package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/sqs-client.spec.js +77 -78
- package/dist/cjs/__tests__/clients/sqs-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js +430 -431
- package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js +29 -30
- package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/destinations-db-service.spec.js +47 -45
- package/dist/cjs/__tests__/db/destinations-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/products-db-service.spec.js +40 -41
- package/dist/cjs/__tests__/db/products-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/shared-read-db-services.spec.js +26 -27
- package/dist/cjs/__tests__/db/shared-read-db-services.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js +37 -38
- package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js +35 -36
- package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js +27 -28
- package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/helpers/account-users-helper.spec.js +64 -65
- package/dist/cjs/__tests__/helpers/account-users-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +18 -19
- package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js +23 -24
- package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js +16 -17
- package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js +42 -43
- package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js +23 -24
- package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/helpers.spec.js +114 -115
- package/dist/cjs/__tests__/identity-cache/helpers.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js +29 -30
- package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js +19 -20
- package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +200 -223
- package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +114 -123
- package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-client.spec.js +107 -110
- package/dist/cjs/__tests__/identity-cache/identity-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +31 -32
- package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +47 -60
- package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js +15 -16
- package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +28 -35
- package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +27 -28
- package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +52 -74
- package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.d.ts +18 -14
- package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js +30 -37
- package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js +424 -403
- package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js +218 -219
- package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
- package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js +117 -118
- package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/compress-decompress.spec.js +7 -8
- package/dist/cjs/__tests__/libs/compress-decompress.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/contacts.spec.js +101 -102
- package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/currency.spec.js +56 -57
- package/dist/cjs/__tests__/libs/currency.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/dates.spec.js +94 -82
- package/dist/cjs/__tests__/libs/dates.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/domain.spec.js +68 -69
- package/dist/cjs/__tests__/libs/domain.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/numbers.spec.js +249 -250
- package/dist/cjs/__tests__/libs/numbers.spec.js.map +1 -1
- package/dist/cjs/__tests__/s3-client/s3-client.spec.js +16 -15
- package/dist/cjs/__tests__/s3-client/s3-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/acuity-api-service.spec.js +32 -35
- package/dist/cjs/__tests__/services/acuity-api-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js +14 -15
- package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js +949 -1187
- package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js +39 -40
- package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js +204 -201
- package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +174 -299
- package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +39 -41
- package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +22 -27
- package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js +64 -67
- package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js +51 -54
- package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/liveintent-api-service.spec.js +67 -0
- package/dist/cjs/__tests__/services/liveintent-api-service.spec.js.map +1 -0
- package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js +9 -10
- package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
- package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js +58 -69
- package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
- package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js +31 -32
- package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
- package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js +64 -65
- package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
- package/dist/cjs/clients/generic/cognito-client.js +14 -14
- package/dist/cjs/clients/generic/cognito-client.js.map +1 -1
- package/dist/cjs/clients/generic/dynamodb-client.js +9 -9
- package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
- package/dist/cjs/clients/generic/eventbridge-client.js +2 -2
- package/dist/cjs/clients/generic/eventbridge-client.js.map +1 -1
- package/dist/cjs/clients/generic/http-client.js +5 -5
- package/dist/cjs/clients/generic/http-client.js.map +1 -1
- package/dist/cjs/clients/generic/lambda-invoke-client.js.map +1 -1
- package/dist/cjs/clients/generic/location-client.js +2 -2
- package/dist/cjs/clients/generic/location-client.js.map +1 -1
- package/dist/cjs/clients/generic/redis-client.js +2 -13
- package/dist/cjs/clients/generic/redis-client.js.map +1 -1
- package/dist/cjs/clients/generic/s3-client.d.ts +1 -0
- package/dist/cjs/clients/generic/s3-client.js +19 -19
- package/dist/cjs/clients/generic/s3-client.js.map +1 -1
- package/dist/cjs/clients/generic/singlestore-db-client.d.ts +2 -2
- package/dist/cjs/clients/generic/singlestore-db-client.js +8 -18
- package/dist/cjs/clients/generic/singlestore-db-client.js.map +1 -1
- package/dist/cjs/clients/generic/sqs-bundled-client.js +2 -2
- package/dist/cjs/clients/generic/sqs-bundled-client.js.map +1 -1
- package/dist/cjs/clients/generic/sqs-bundled-client.types.js +1 -1
- package/dist/cjs/clients/generic/sqs-bundled-client.types.js.map +1 -1
- package/dist/cjs/clients/generic/sqs-client.d.ts +1 -1
- package/dist/cjs/clients/generic/sqs-client.js +2 -2
- package/dist/cjs/clients/generic/sqs-client.js.map +1 -1
- package/dist/cjs/clients/generic/sqs-unbundle.js +7 -6
- package/dist/cjs/clients/generic/sqs-unbundle.js.map +1 -1
- package/dist/cjs/clients/internal-api/accounts-client.js +14 -14
- package/dist/cjs/clients/internal-api/accounts-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/cache-lambda-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/db-management-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/destinations-client.d.ts +2 -1
- package/dist/cjs/clients/internal-api/destinations-client.js +15 -8
- package/dist/cjs/clients/internal-api/destinations-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/event-collector-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/identity-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/shopify-app-install-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/subscriptions-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/users-auth-client.js +11 -11
- package/dist/cjs/clients/internal-api/users-auth-client.js.map +1 -1
- package/dist/cjs/clients/third-party/acuity-client.js.map +1 -1
- package/dist/cjs/clients/third-party/emailable-client.js.map +1 -1
- package/dist/cjs/clients/third-party/index.d.ts +1 -0
- package/dist/cjs/clients/third-party/index.js +1 -0
- package/dist/cjs/clients/third-party/index.js.map +1 -1
- package/dist/cjs/clients/third-party/liveintent-client.d.ts +11 -0
- package/dist/cjs/clients/third-party/liveintent-client.js +25 -0
- package/dist/cjs/clients/third-party/liveintent-client.js.map +1 -0
- package/dist/cjs/clients/third-party/loops-client.js.map +1 -1
- package/dist/cjs/clients/third-party/open-exchange-rates-client.js.map +1 -1
- package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
- package/dist/cjs/clients/third-party/shopify-client.js +15 -15
- package/dist/cjs/clients/third-party/shopify-client.js.map +1 -1
- package/dist/cjs/constants/sqs.js +5 -5
- package/dist/cjs/constants/sqs.js.map +1 -1
- package/dist/cjs/helpers/account-users-helper.js.map +1 -1
- package/dist/cjs/helpers/acuity-helper.js.map +1 -1
- package/dist/cjs/helpers/api-key-auth-helper.d.ts +1 -2
- package/dist/cjs/helpers/api-key-auth-helper.js.map +1 -1
- package/dist/cjs/helpers/api-key-authorizer-helper.js.map +1 -1
- package/dist/cjs/helpers/cognito-auth-helper.d.ts +1 -2
- package/dist/cjs/helpers/cognito-auth-helper.js.map +1 -1
- package/dist/cjs/helpers/input-validation-helper.d.ts +1 -1
- package/dist/cjs/helpers/input-validation-helper.js.map +1 -1
- package/dist/cjs/helpers/logging-helper.d.ts +5 -5
- package/dist/cjs/helpers/logging-helper.js +7 -17
- package/dist/cjs/helpers/logging-helper.js.map +1 -1
- package/dist/cjs/helpers/order-calculation-helper.js.map +1 -1
- package/dist/cjs/helpers/public-api-response-helper.js.map +1 -1
- package/dist/cjs/helpers/response-helper.js.map +1 -1
- package/dist/cjs/helpers/shopify-helper.js.map +1 -1
- package/dist/cjs/helpers/sqs-utils.js +4 -8
- package/dist/cjs/helpers/sqs-utils.js.map +1 -1
- package/dist/cjs/libs/api-router/public-api-router.d.ts +2 -2
- package/dist/cjs/libs/api-router/public-api-router.js.map +1 -1
- package/dist/cjs/libs/api-router/route-matcher.js.map +1 -1
- package/dist/cjs/libs/click-id-parser.js +1 -1
- package/dist/cjs/libs/click-id-parser.js.map +1 -1
- package/dist/cjs/libs/compression.d.ts +1 -1
- package/dist/cjs/libs/compression.js.map +1 -1
- package/dist/cjs/libs/contacts.js.map +1 -1
- package/dist/cjs/libs/cookie.js +1 -1
- package/dist/cjs/libs/cookie.js.map +1 -1
- package/dist/cjs/libs/crypto.js.map +1 -1
- package/dist/cjs/libs/csv.js.map +1 -1
- package/dist/cjs/libs/currency.js.map +1 -1
- package/dist/cjs/libs/dates.d.ts +1 -0
- package/dist/cjs/libs/dates.js +18 -1
- package/dist/cjs/libs/dates.js.map +1 -1
- package/dist/cjs/libs/domain.js.map +1 -1
- package/dist/cjs/libs/emails.js.map +1 -1
- package/dist/cjs/libs/http-error.js.map +1 -1
- package/dist/cjs/libs/http-status-codes.js +1 -1
- package/dist/cjs/libs/http-status-codes.js.map +1 -1
- package/dist/cjs/libs/numbers.js.map +1 -1
- package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +1 -0
- package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +2 -2
- package/dist/cjs/libs/referrer-parser/referrer-parser-util.js.map +1 -1
- package/dist/cjs/libs/strings.js.map +1 -1
- package/dist/cjs/libs/traits.js.map +1 -1
- package/dist/cjs/libs/url.js.map +1 -1
- package/dist/cjs/services/acuity-api-service.js.map +1 -1
- package/dist/cjs/services/cache/product-cache-service.js.map +1 -1
- package/dist/cjs/services/cost/cost-calculation-types.js +2 -1
- package/dist/cjs/services/cost/cost-calculation-types.js.map +1 -1
- package/dist/cjs/services/cost/cost-calculator-service.js +10 -43
- package/dist/cjs/services/cost/cost-calculator-service.js.map +1 -1
- package/dist/cjs/services/cost/cost-currency-service.js.map +1 -1
- package/dist/cjs/services/cost/cost-filter-service.js +7 -16
- package/dist/cjs/services/cost/cost-filter-service.js.map +1 -1
- package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js +9 -24
- package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
- package/dist/cjs/services/db/accounts-db-service.js.map +1 -1
- package/dist/cjs/services/db/api-keys-db-service.js.map +1 -1
- package/dist/cjs/services/db/contact-enrichments-db-service.js.map +1 -1
- package/dist/cjs/services/db/custom-measures-db-service.js.map +1 -1
- package/dist/cjs/services/db/destinations-db-service.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-db-service.d.ts +1 -1
- package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +1 -5
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +7 -21
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js +7 -7
- package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js +3 -3
- package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
- package/dist/cjs/services/db/index.d.ts +0 -1
- package/dist/cjs/services/db/index.js +0 -1
- package/dist/cjs/services/db/index.js.map +1 -1
- package/dist/cjs/services/db/log-events-db-service.js.map +1 -1
- package/dist/cjs/services/db/pixels-db-service.js.map +1 -1
- package/dist/cjs/services/db/products-db-service.js +16 -45
- package/dist/cjs/services/db/products-db-service.js.map +1 -1
- package/dist/cjs/services/db/purchasable-contacts-db-service.js.map +1 -1
- package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
- package/dist/cjs/services/db/shopify-app-installs-db-service.js.map +1 -1
- package/dist/cjs/services/db/shopify-products-cache-db-service.js.map +1 -1
- package/dist/cjs/services/db/subscriptions-db-service.js.map +1 -1
- package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
- package/dist/cjs/services/db/user-accounts-db-service.js.map +1 -1
- package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -1
- package/dist/cjs/services/email-verification/email-verification-service.js.map +1 -1
- package/dist/cjs/services/eventbridge-integration-service.js.map +1 -1
- package/dist/cjs/services/events/build-collect-queue-tracking-event.js +2 -2
- package/dist/cjs/services/events/build-collect-queue-tracking-event.js.map +1 -1
- package/dist/cjs/services/events/collect-queue-tracking-service.js.map +1 -1
- package/dist/cjs/services/events/log-event-service.js.map +1 -1
- package/dist/cjs/services/events/metric-event-service.js.map +1 -1
- package/dist/cjs/services/events/tracking-event-sqs-service.js.map +1 -1
- package/dist/cjs/services/generic-cache-service.js.map +1 -1
- package/dist/cjs/services/index.d.ts +1 -1
- package/dist/cjs/services/index.js +1 -1
- package/dist/cjs/services/index.js.map +1 -1
- package/dist/cjs/services/ipdata-lookup-service.d.ts +1 -1
- package/dist/cjs/services/ipdata-lookup-service.js.map +1 -1
- package/dist/cjs/services/liveintent-api-service.d.ts +15 -0
- package/dist/cjs/services/liveintent-api-service.js +59 -0
- package/dist/cjs/services/liveintent-api-service.js.map +1 -0
- package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
- package/dist/cjs/services/shopify/shopify-graphql-transformer.js +1 -1
- package/dist/cjs/services/shopify/shopify-graphql-transformer.js.map +1 -1
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/index.js +8 -17
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/internal-events/event-detail-types.js +4 -4
- package/dist/cjs/types/internal-events/event-detail-types.js.map +1 -1
- package/dist/cjs/types/liveintent-types.d.ts +8 -0
- package/dist/cjs/types/liveintent-types.js +3 -0
- package/dist/cjs/types/liveintent-types.js.map +1 -0
- package/dist/cjs/types/public-api-types.js +1 -1
- package/dist/cjs/types/public-api-types.js.map +1 -1
- package/dist/cjs/types/shopify-graphql-types/admin.types.js +491 -491
- package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
- package/dist/cjs/types/shopify-rest-types.d.ts +1 -1
- package/dist/cjs/utils/compression.d.ts +2 -0
- package/dist/cjs/utils/compression.js +11 -11
- package/dist/cjs/utils/compression.js.map +1 -1
- package/dist/cjs/utils/custom-measure-formula-utils.js.map +1 -1
- package/dist/cjs/utils/retry-envelope.js +4 -3
- package/dist/cjs/utils/retry-envelope.js.map +1 -1
- package/dist/cjs/utils/size.js +3 -2
- package/dist/cjs/utils/size.js.map +1 -1
- package/dist/esm/__tests__/clients/acuity-client.spec.js +5 -6
- package/dist/esm/__tests__/clients/acuity-client.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +0 -1
- package/dist/esm/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/dynamodb-client.spec.js +42 -41
- package/dist/esm/__tests__/clients/dynamodb-client.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/event-collector-client.spec.js +18 -18
- package/dist/esm/__tests__/clients/event-collector-client.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/liveintent-client.spec.js +35 -0
- package/dist/esm/__tests__/clients/liveintent-client.spec.js.map +1 -0
- package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js +3 -4
- package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js +47 -55
- package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js +1 -3
- package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/sqs-client.spec.js +21 -22
- package/dist/esm/__tests__/clients/sqs-client.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/sqs-unbundle.spec.js +8 -9
- package/dist/esm/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
- package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js +5 -6
- package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/db/destinations-db-service.spec.js +11 -9
- package/dist/esm/__tests__/db/destinations-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/db/products-db-service.spec.js +8 -9
- package/dist/esm/__tests__/db/products-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/db/shared-read-db-services.spec.js +6 -7
- package/dist/esm/__tests__/db/shared-read-db-services.spec.js.map +1 -1
- package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js +12 -13
- package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/db/subscriptions-db-service.spec.js +11 -12
- package/dist/esm/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/db/user-accounts-db-service.spec.js +6 -7
- package/dist/esm/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/helpers/account-users-helper.spec.js +3 -4
- package/dist/esm/__tests__/helpers/account-users-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/helpers/acuity-helper.spec.js +0 -1
- package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js +3 -4
- package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js +1 -2
- package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js +4 -5
- package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js +1 -2
- package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/helpers.spec.js +1 -2
- package/dist/esm/__tests__/identity-cache/helpers.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js +15 -16
- package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js +1 -2
- package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +29 -52
- package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +31 -40
- package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-client.spec.js +21 -24
- package/dist/esm/__tests__/identity-cache/identity-client.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +0 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +4 -17
- package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js +0 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +2 -9
- package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +0 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +7 -29
- package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.d.ts +18 -14
- package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js +30 -37
- package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js +37 -16
- package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js +5 -6
- package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
- package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js +9 -10
- package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/compress-decompress.spec.js +1 -2
- package/dist/esm/__tests__/libs/compress-decompress.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/contacts.spec.js +0 -1
- package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/currency.spec.js +3 -4
- package/dist/esm/__tests__/libs/currency.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/dates.spec.js +23 -11
- package/dist/esm/__tests__/libs/dates.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/domain.spec.js +0 -1
- package/dist/esm/__tests__/libs/domain.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/numbers.spec.js +0 -1
- package/dist/esm/__tests__/libs/numbers.spec.js.map +1 -1
- package/dist/esm/__tests__/s3-client/s3-client.spec.js +7 -6
- package/dist/esm/__tests__/s3-client/s3-client.spec.js.map +1 -1
- package/dist/esm/__tests__/services/acuity-api-service.spec.js +10 -13
- package/dist/esm/__tests__/services/acuity-api-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js +0 -1
- package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
- package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js +280 -518
- package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js +3 -4
- package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js +22 -19
- package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +41 -133
- package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +6 -8
- package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +5 -10
- package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js +14 -17
- package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js +16 -19
- package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/liveintent-api-service.spec.js +65 -0
- package/dist/esm/__tests__/services/liveintent-api-service.spec.js.map +1 -0
- package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js +1 -2
- package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
- package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js +14 -15
- package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
- package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js +1 -2
- package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
- package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js +0 -1
- package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
- package/dist/esm/clients/generic/cognito-client.js +2 -2
- package/dist/esm/clients/generic/cognito-client.js.map +1 -1
- package/dist/esm/clients/generic/dynamodb-client.js +9 -9
- package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
- package/dist/esm/clients/generic/eventbridge-client.js +1 -1
- package/dist/esm/clients/generic/eventbridge-client.js.map +1 -1
- package/dist/esm/clients/generic/http-client.js +5 -5
- package/dist/esm/clients/generic/http-client.js.map +1 -1
- package/dist/esm/clients/generic/lambda-invoke-client.js.map +1 -1
- package/dist/esm/clients/generic/location-client.js +1 -1
- package/dist/esm/clients/generic/location-client.js.map +1 -1
- package/dist/esm/clients/generic/redis-client.js +2 -13
- package/dist/esm/clients/generic/redis-client.js.map +1 -1
- package/dist/esm/clients/generic/s3-client.d.ts +1 -0
- package/dist/esm/clients/generic/s3-client.js +1 -1
- package/dist/esm/clients/generic/s3-client.js.map +1 -1
- package/dist/esm/clients/generic/singlestore-db-client.d.ts +2 -2
- package/dist/esm/clients/generic/singlestore-db-client.js +1 -1
- package/dist/esm/clients/generic/singlestore-db-client.js.map +1 -1
- package/dist/esm/clients/generic/sqs-bundled-client.js +2 -2
- package/dist/esm/clients/generic/sqs-bundled-client.js.map +1 -1
- package/dist/esm/clients/generic/sqs-client.d.ts +1 -1
- package/dist/esm/clients/generic/sqs-client.js +2 -2
- package/dist/esm/clients/generic/sqs-client.js.map +1 -1
- package/dist/esm/clients/generic/sqs-unbundle.js +2 -2
- package/dist/esm/clients/generic/sqs-unbundle.js.map +1 -1
- package/dist/esm/clients/internal-api/accounts-client.js +1 -1
- package/dist/esm/clients/internal-api/accounts-client.js.map +1 -1
- package/dist/esm/clients/internal-api/cache-lambda-client.js.map +1 -1
- package/dist/esm/clients/internal-api/destinations-client.d.ts +2 -1
- package/dist/esm/clients/internal-api/destinations-client.js +8 -1
- package/dist/esm/clients/internal-api/destinations-client.js.map +1 -1
- package/dist/esm/clients/internal-api/event-collector-client.js.map +1 -1
- package/dist/esm/clients/internal-api/identity-client.js.map +1 -1
- package/dist/esm/clients/internal-api/users-auth-client.js +1 -1
- package/dist/esm/clients/internal-api/users-auth-client.js.map +1 -1
- package/dist/esm/clients/third-party/emailable-client.js.map +1 -1
- package/dist/esm/clients/third-party/index.d.ts +1 -0
- package/dist/esm/clients/third-party/index.js +1 -0
- package/dist/esm/clients/third-party/index.js.map +1 -1
- package/dist/esm/clients/third-party/liveintent-client.d.ts +11 -0
- package/dist/esm/clients/third-party/liveintent-client.js +21 -0
- package/dist/esm/clients/third-party/liveintent-client.js.map +1 -0
- package/dist/esm/clients/third-party/loops-client.js.map +1 -1
- package/dist/esm/clients/third-party/open-exchange-rates-client.js.map +1 -1
- package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +1 -1
- package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
- package/dist/esm/clients/third-party/shopify-client.js +1 -1
- package/dist/esm/clients/third-party/shopify-client.js.map +1 -1
- package/dist/esm/constants/sqs.js +3 -3
- package/dist/esm/constants/sqs.js.map +1 -1
- package/dist/esm/helpers/account-users-helper.js.map +1 -1
- package/dist/esm/helpers/acuity-helper.js.map +1 -1
- package/dist/esm/helpers/api-key-auth-helper.d.ts +1 -2
- package/dist/esm/helpers/api-key-auth-helper.js.map +1 -1
- package/dist/esm/helpers/api-key-authorizer-helper.js.map +1 -1
- package/dist/esm/helpers/cognito-auth-helper.d.ts +1 -2
- package/dist/esm/helpers/cognito-auth-helper.js.map +1 -1
- package/dist/esm/helpers/input-validation-helper.d.ts +1 -1
- package/dist/esm/helpers/input-validation-helper.js.map +1 -1
- package/dist/esm/helpers/logging-helper.d.ts +5 -5
- package/dist/esm/helpers/logging-helper.js.map +1 -1
- package/dist/esm/helpers/order-calculation-helper.js.map +1 -1
- package/dist/esm/helpers/public-api-response-helper.js.map +1 -1
- package/dist/esm/helpers/response-helper.js.map +1 -1
- package/dist/esm/helpers/shopify-helper.js.map +1 -1
- package/dist/esm/helpers/sqs-utils.js +1 -6
- package/dist/esm/helpers/sqs-utils.js.map +1 -1
- package/dist/esm/libs/api-router/public-api-router.d.ts +2 -2
- package/dist/esm/libs/api-router/public-api-router.js.map +1 -1
- package/dist/esm/libs/api-router/route-matcher.js.map +1 -1
- package/dist/esm/libs/click-id-parser.js.map +1 -1
- package/dist/esm/libs/compression.d.ts +1 -1
- package/dist/esm/libs/compression.js.map +1 -1
- package/dist/esm/libs/contacts.js.map +1 -1
- package/dist/esm/libs/cookie.js.map +1 -1
- package/dist/esm/libs/csv.js.map +1 -1
- package/dist/esm/libs/currency.js.map +1 -1
- package/dist/esm/libs/dates.d.ts +1 -0
- package/dist/esm/libs/dates.js +16 -0
- package/dist/esm/libs/dates.js.map +1 -1
- package/dist/esm/libs/domain.js.map +1 -1
- package/dist/esm/libs/emails.js.map +1 -1
- package/dist/esm/libs/http-error.js.map +1 -1
- package/dist/esm/libs/numbers.js.map +1 -1
- package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +1 -0
- package/dist/esm/libs/referrer-parser/referrer-parser-util.js +2 -2
- package/dist/esm/libs/referrer-parser/referrer-parser-util.js.map +1 -1
- package/dist/esm/libs/strings.js.map +1 -1
- package/dist/esm/libs/traits.js.map +1 -1
- package/dist/esm/services/acuity-api-service.js.map +1 -1
- package/dist/esm/services/cache/product-cache-service.js.map +1 -1
- package/dist/esm/services/cost/cost-calculation-types.js.map +1 -1
- package/dist/esm/services/cost/cost-calculator-service.js +10 -43
- package/dist/esm/services/cost/cost-calculator-service.js.map +1 -1
- package/dist/esm/services/cost/cost-currency-service.js.map +1 -1
- package/dist/esm/services/cost/cost-filter-service.js +7 -16
- package/dist/esm/services/cost/cost-filter-service.js.map +1 -1
- package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js +9 -24
- package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
- package/dist/esm/services/db/accounts-db-service.js.map +1 -1
- package/dist/esm/services/db/api-keys-db-service.js.map +1 -1
- package/dist/esm/services/db/contact-enrichments-db-service.js.map +1 -1
- package/dist/esm/services/db/custom-measures-db-service.js.map +1 -1
- package/dist/esm/services/db/identity-cache-db-service.d.ts +1 -1
- package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +2 -6
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +8 -22
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
- package/dist/esm/services/db/index.d.ts +0 -1
- package/dist/esm/services/db/index.js +0 -1
- package/dist/esm/services/db/index.js.map +1 -1
- package/dist/esm/services/db/log-events-db-service.js.map +1 -1
- package/dist/esm/services/db/products-db-service.js +16 -45
- package/dist/esm/services/db/products-db-service.js.map +1 -1
- package/dist/esm/services/db/purchasable-contacts-db-service.js.map +1 -1
- package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
- package/dist/esm/services/db/shopify-app-installs-db-service.js.map +1 -1
- package/dist/esm/services/db/shopify-products-cache-db-service.js.map +1 -1
- package/dist/esm/services/db/subscriptions-db-service.js.map +1 -1
- package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
- package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -1
- package/dist/esm/services/email-verification/email-verification-service.js.map +1 -1
- package/dist/esm/services/events/build-collect-queue-tracking-event.js.map +1 -1
- package/dist/esm/services/events/collect-queue-tracking-service.js +1 -1
- package/dist/esm/services/events/collect-queue-tracking-service.js.map +1 -1
- package/dist/esm/services/events/log-event-service.js.map +1 -1
- package/dist/esm/services/events/metric-event-service.js.map +1 -1
- package/dist/esm/services/events/tracking-event-sqs-service.js.map +1 -1
- package/dist/esm/services/generic-cache-service.js.map +1 -1
- package/dist/esm/services/index.d.ts +1 -1
- package/dist/esm/services/index.js +1 -1
- package/dist/esm/services/index.js.map +1 -1
- package/dist/esm/services/ipdata-lookup-service.d.ts +1 -1
- package/dist/esm/services/ipdata-lookup-service.js.map +1 -1
- package/dist/esm/services/liveintent-api-service.d.ts +15 -0
- package/dist/esm/services/liveintent-api-service.js +55 -0
- package/dist/esm/services/liveintent-api-service.js.map +1 -0
- package/dist/esm/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
- package/dist/esm/services/shopify/shopify-graphql-transformer.js +1 -1
- package/dist/esm/services/shopify/shopify-graphql-transformer.js.map +1 -1
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/liveintent-types.d.ts +8 -0
- package/dist/esm/types/liveintent-types.js +2 -0
- package/dist/esm/types/liveintent-types.js.map +1 -0
- package/dist/esm/types/shopify-rest-types.d.ts +1 -1
- package/dist/esm/utils/compression.d.ts +2 -0
- package/dist/esm/utils/compression.js +3 -3
- package/dist/esm/utils/compression.js.map +1 -1
- package/dist/esm/utils/custom-measure-formula-utils.js.map +1 -1
- package/dist/esm/utils/retry-envelope.js.map +1 -1
- package/dist/esm/utils/size.js.map +1 -1
- package/package.json +136 -139
- package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js +0 -21
- package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js.map +0 -1
- package/dist/cjs/__tests__/clients/redis-client.spec.js +0 -79
- package/dist/cjs/__tests__/clients/redis-client.spec.js.map +0 -1
- package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js +0 -40
- package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +0 -1
- package/dist/cjs/clients/third-party/exchange-rate-api-client.d.ts +0 -17
- package/dist/cjs/clients/third-party/exchange-rate-api-client.js +0 -20
- package/dist/cjs/clients/third-party/exchange-rate-api-client.js.map +0 -1
- package/dist/cjs/services/currency-exchange-rate-lookup-service.d.ts +0 -12
- package/dist/cjs/services/currency-exchange-rate-lookup-service.js +0 -98
- package/dist/cjs/services/currency-exchange-rate-lookup-service.js.map +0 -1
- package/dist/cjs/services/db/currency-exchange-rates-db-service.d.ts +0 -21
- package/dist/cjs/services/db/currency-exchange-rates-db-service.js +0 -40
- package/dist/cjs/services/db/currency-exchange-rates-db-service.js.map +0 -1
- package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js +0 -19
- package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js.map +0 -1
- package/dist/esm/__tests__/clients/redis-client.spec.d.ts +0 -1
- package/dist/esm/__tests__/clients/redis-client.spec.js +0 -77
- package/dist/esm/__tests__/clients/redis-client.spec.js.map +0 -1
- package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts +0 -1
- package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js +0 -38
- package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +0 -1
- package/dist/esm/clients/third-party/exchange-rate-api-client.d.ts +0 -17
- package/dist/esm/clients/third-party/exchange-rate-api-client.js +0 -16
- package/dist/esm/clients/third-party/exchange-rate-api-client.js.map +0 -1
- package/dist/esm/services/currency-exchange-rate-lookup-service.d.ts +0 -12
- package/dist/esm/services/currency-exchange-rate-lookup-service.js +0 -94
- package/dist/esm/services/currency-exchange-rate-lookup-service.js.map +0 -1
- package/dist/esm/services/db/currency-exchange-rates-db-service.d.ts +0 -21
- package/dist/esm/services/db/currency-exchange-rates-db-service.js +0 -36
- package/dist/esm/services/db/currency-exchange-rates-db-service.js.map +0 -1
- /package/dist/cjs/__tests__/clients/{client-timeout-inventory.spec.d.ts → liveintent-client.spec.d.ts} +0 -0
- /package/dist/cjs/__tests__/{clients/redis-client.spec.d.ts → services/liveintent-api-service.spec.d.ts} +0 -0
- /package/dist/{cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts → esm/__tests__/clients/liveintent-client.spec.d.ts} +0 -0
- /package/dist/esm/__tests__/{clients/client-timeout-inventory.spec.d.ts → services/liveintent-api-service.spec.d.ts} +0 -0
|
@@ -15,58 +15,40 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) ||
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
35
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
const vitest_1 = require("vitest");
|
|
37
26
|
const sqs_bundled_client_1 = require("../../clients/generic/sqs-bundled-client");
|
|
38
27
|
const sqs_bundled_client_types_1 = require("../../clients/generic/sqs-bundled-client.types");
|
|
39
28
|
const sqs_1 = require("../../constants/sqs");
|
|
40
|
-
|
|
29
|
+
jest.mock('../../helpers/logging-helper', () => ({
|
|
41
30
|
Logger: {
|
|
42
|
-
debug:
|
|
43
|
-
info:
|
|
44
|
-
warn:
|
|
45
|
-
error:
|
|
31
|
+
debug: jest.fn(),
|
|
32
|
+
info: jest.fn(),
|
|
33
|
+
warn: jest.fn(),
|
|
34
|
+
error: jest.fn(),
|
|
46
35
|
},
|
|
47
36
|
}));
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
};
|
|
55
|
-
});
|
|
56
|
-
let actualSizeModule;
|
|
57
|
-
(0, vitest_1.beforeAll)(async () => {
|
|
58
|
-
actualSizeModule = await vitest_1.vi.importActual('../../utils/size');
|
|
59
|
-
mockSizeInBytes.mockImplementation(actualSizeModule.sizeInBytes);
|
|
60
|
-
});
|
|
37
|
+
const actualSizeModule = jest.requireActual('../../utils/size');
|
|
38
|
+
const mockSizeInBytes = jest.fn(actualSizeModule.sizeInBytes);
|
|
39
|
+
jest.mock('../../utils/size', () => ({
|
|
40
|
+
...jest.requireActual('../../utils/size'),
|
|
41
|
+
sizeInBytes: (obj) => mockSizeInBytes(obj),
|
|
42
|
+
}));
|
|
61
43
|
function makeTestEvent(id, name = 'test', value) {
|
|
62
44
|
return { id, name, value };
|
|
63
45
|
}
|
|
64
|
-
|
|
46
|
+
describe('BundledSQSClient', () => {
|
|
65
47
|
let mockSqsClient;
|
|
66
48
|
let bundledClient;
|
|
67
|
-
|
|
49
|
+
beforeEach(() => {
|
|
68
50
|
mockSqsClient = {
|
|
69
|
-
buildAndSendMessagesV2:
|
|
51
|
+
buildAndSendMessagesV2: jest.fn().mockResolvedValue({
|
|
70
52
|
successCount: 1,
|
|
71
53
|
failedCount: 0,
|
|
72
54
|
batchCount: 1,
|
|
@@ -80,48 +62,48 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
80
62
|
compressionLevel: 3,
|
|
81
63
|
});
|
|
82
64
|
});
|
|
83
|
-
|
|
84
|
-
|
|
65
|
+
describe('sendBundled', () => {
|
|
66
|
+
it('returns empty result for empty items array', async () => {
|
|
85
67
|
const result = await bundledClient.sendBundled('test-message', []);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
68
|
+
expect(result.totalItems).toBe(0);
|
|
69
|
+
expect(result.bundleCount).toBe(0);
|
|
70
|
+
expect(result.messageCount).toBe(0);
|
|
71
|
+
expect(mockSqsClient.buildAndSendMessagesV2).not.toHaveBeenCalled();
|
|
90
72
|
});
|
|
91
|
-
|
|
73
|
+
it('passes delaySeconds through to the underlying send', async () => {
|
|
92
74
|
const items = [makeTestEvent('1'), makeTestEvent('2')];
|
|
93
75
|
await bundledClient.sendBundled('test-message', items, 480);
|
|
94
|
-
|
|
76
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalledWith('test-message', expect.any(Array), 480);
|
|
95
77
|
});
|
|
96
|
-
|
|
78
|
+
it('defaults delaySeconds to 0 when omitted', async () => {
|
|
97
79
|
const items = [makeTestEvent('1')];
|
|
98
80
|
await bundledClient.sendBundled('test-message', items);
|
|
99
|
-
|
|
81
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalledWith('test-message', expect.any(Array), 0);
|
|
100
82
|
});
|
|
101
|
-
|
|
83
|
+
it('bundles and sends small items', async () => {
|
|
102
84
|
const items = [makeTestEvent('1'), makeTestEvent('2'), makeTestEvent('3')];
|
|
103
85
|
const result = await bundledClient.sendBundled('test-message', items);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
86
|
+
expect(result.totalItems).toBe(3);
|
|
87
|
+
expect(result.bundleCount).toBeGreaterThanOrEqual(1);
|
|
88
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalledTimes(1);
|
|
107
89
|
const sentEnvelopes = mockSqsClient.buildAndSendMessagesV2.mock
|
|
108
90
|
.calls[0][1];
|
|
109
|
-
|
|
91
|
+
expect(sentEnvelopes.length).toBeGreaterThanOrEqual(1);
|
|
110
92
|
const envelope = sentEnvelopes[0];
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
93
|
+
expect(envelope.v).toBe(1);
|
|
94
|
+
expect(envelope.c).toBe(sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD);
|
|
95
|
+
expect(envelope.n).toBe(3);
|
|
96
|
+
expect(typeof envelope.p).toBe('string');
|
|
115
97
|
});
|
|
116
|
-
|
|
98
|
+
it('tracks compression metrics', async () => {
|
|
117
99
|
const items = Array.from({ length: 100 }, (_, i) => makeTestEvent(`event-${i}`, `name-${i}`, i * 100));
|
|
118
100
|
const result = await bundledClient.sendBundled('test-message', items);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
101
|
+
expect(result.metrics.originalSizeBytes).toBeGreaterThan(0);
|
|
102
|
+
expect(result.metrics.finalSizeBytes).toBeGreaterThan(0);
|
|
103
|
+
expect(result.metrics.compressionRatio).toBeGreaterThan(1);
|
|
104
|
+
expect(result.metrics.compressionTimeMs).toBeGreaterThanOrEqual(0);
|
|
123
105
|
});
|
|
124
|
-
|
|
106
|
+
it('sends items without compression when NONE specified', async () => {
|
|
125
107
|
const noCompressionClient = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
126
108
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.NONE,
|
|
127
109
|
});
|
|
@@ -130,10 +112,10 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
130
112
|
const sentEnvelopes = mockSqsClient.buildAndSendMessagesV2.mock
|
|
131
113
|
.calls[0][1];
|
|
132
114
|
const envelope = sentEnvelopes[0];
|
|
133
|
-
|
|
134
|
-
|
|
115
|
+
expect(envelope.c).toBe(sqs_bundled_client_types_1.CompressionAlgorithm.NONE);
|
|
116
|
+
expect(Array.isArray(envelope.p)).toBe(true);
|
|
135
117
|
});
|
|
136
|
-
|
|
118
|
+
it('respects maxItemsPerBundle config', async () => {
|
|
137
119
|
const client = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
138
120
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
|
|
139
121
|
maxItemsPerBundle: 10,
|
|
@@ -146,22 +128,22 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
146
128
|
failedMessages: [],
|
|
147
129
|
});
|
|
148
130
|
const result = await client.sendBundled('test-message', items);
|
|
149
|
-
|
|
150
|
-
|
|
131
|
+
expect(result.totalItems).toBe(25);
|
|
132
|
+
expect(result.bundleCount).toBeGreaterThanOrEqual(2);
|
|
151
133
|
const sentEnvelopes = mockSqsClient.buildAndSendMessagesV2.mock
|
|
152
134
|
.calls[0][1];
|
|
153
135
|
for (const envelope of sentEnvelopes) {
|
|
154
|
-
|
|
136
|
+
expect(envelope.n).toBeLessThanOrEqual(10);
|
|
155
137
|
}
|
|
156
138
|
});
|
|
157
|
-
|
|
139
|
+
it('calculates billable requests based on size', async () => {
|
|
158
140
|
const items = Array.from({ length: 50 }, (_, i) => makeTestEvent(`${i}`, 'name', i * 10));
|
|
159
141
|
const result = await bundledClient.sendBundled('test-message', items);
|
|
160
|
-
|
|
142
|
+
expect(result.billableRequests).toBeGreaterThanOrEqual(1);
|
|
161
143
|
});
|
|
162
144
|
});
|
|
163
|
-
|
|
164
|
-
|
|
145
|
+
describe('retry behavior', () => {
|
|
146
|
+
it('retries failed messages', async () => {
|
|
165
147
|
mockSqsClient.buildAndSendMessagesV2
|
|
166
148
|
.mockResolvedValueOnce({
|
|
167
149
|
successCount: 0,
|
|
@@ -177,10 +159,10 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
177
159
|
});
|
|
178
160
|
const items = [makeTestEvent('1')];
|
|
179
161
|
const result = await bundledClient.sendBundled('test-message', items);
|
|
180
|
-
|
|
181
|
-
|
|
162
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalledTimes(2);
|
|
163
|
+
expect(result.failedBundles).toBe(0);
|
|
182
164
|
});
|
|
183
|
-
|
|
165
|
+
it('stops retrying after max retries', async () => {
|
|
184
166
|
mockSqsClient.buildAndSendMessagesV2.mockResolvedValue({
|
|
185
167
|
successCount: 0,
|
|
186
168
|
failedCount: 1,
|
|
@@ -189,34 +171,34 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
189
171
|
});
|
|
190
172
|
const items = [makeTestEvent('1')];
|
|
191
173
|
const result = await bundledClient.sendBundled('test-message', items);
|
|
192
|
-
|
|
193
|
-
|
|
174
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalledTimes(3);
|
|
175
|
+
expect(result.failedBundles).toBeGreaterThan(0);
|
|
194
176
|
});
|
|
195
177
|
});
|
|
196
|
-
|
|
197
|
-
|
|
178
|
+
describe('auto-resize', () => {
|
|
179
|
+
it('is enabled by default', () => {
|
|
198
180
|
const client = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient);
|
|
199
|
-
|
|
181
|
+
expect(client.config.autoResize).toBe(true);
|
|
200
182
|
});
|
|
201
|
-
|
|
183
|
+
it('can be configured to be disabled', () => {
|
|
202
184
|
const client = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
203
185
|
autoResize: false,
|
|
204
186
|
});
|
|
205
|
-
|
|
187
|
+
expect(client.config.autoResize).toBe(false);
|
|
206
188
|
});
|
|
207
189
|
});
|
|
208
|
-
|
|
209
|
-
|
|
190
|
+
describe('skippedItems behavior', () => {
|
|
191
|
+
afterEach(() => {
|
|
210
192
|
mockSizeInBytes.mockImplementation(actualSizeModule.sizeInBytes);
|
|
211
193
|
});
|
|
212
|
-
|
|
194
|
+
it('reports skippedItems as 0 when all items sent successfully', async () => {
|
|
213
195
|
const items = [makeTestEvent('1'), makeTestEvent('2')];
|
|
214
196
|
const result = await bundledClient.sendBundled('test-message', items);
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
197
|
+
expect(result.skippedItems).toBe(0);
|
|
198
|
+
expect(result.totalItems).toBe(2);
|
|
199
|
+
expect(result.failedBundles).toBe(0);
|
|
218
200
|
});
|
|
219
|
-
|
|
201
|
+
it('tracks skippedItems when autoResize disabled and bundle exceeds limit', async () => {
|
|
220
202
|
const noResizeClient = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
221
203
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
|
|
222
204
|
autoResize: false,
|
|
@@ -224,16 +206,16 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
224
206
|
const items = [makeTestEvent('1'), makeTestEvent('2'), makeTestEvent('3')];
|
|
225
207
|
mockSizeInBytes.mockImplementation((obj) => {
|
|
226
208
|
if (typeof obj === 'object' && obj !== null && 'v' in obj) {
|
|
227
|
-
return
|
|
209
|
+
return 2000000;
|
|
228
210
|
}
|
|
229
211
|
return 100;
|
|
230
212
|
});
|
|
231
213
|
const result = await noResizeClient.sendBundled('test-message', items);
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
214
|
+
expect(result.skippedItems).toBe(3);
|
|
215
|
+
expect(result.totalItems).toBe(3);
|
|
216
|
+
expect(mockSqsClient.buildAndSendMessagesV2).not.toHaveBeenCalled();
|
|
235
217
|
});
|
|
236
|
-
|
|
218
|
+
it('tracks skippedItems when single item cannot fit (splitAndRetry terminates)', async () => {
|
|
237
219
|
const client = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
238
220
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
|
|
239
221
|
autoResize: true,
|
|
@@ -241,15 +223,15 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
241
223
|
const items = [makeTestEvent('oversized-item')];
|
|
242
224
|
mockSizeInBytes.mockImplementation((obj) => {
|
|
243
225
|
if (typeof obj === 'object' && obj !== null && 'v' in obj) {
|
|
244
|
-
return
|
|
226
|
+
return 2000000;
|
|
245
227
|
}
|
|
246
228
|
return 100;
|
|
247
229
|
});
|
|
248
230
|
const result = await client.sendBundled('test-message', items);
|
|
249
|
-
|
|
250
|
-
|
|
231
|
+
expect(result.skippedItems).toBe(1);
|
|
232
|
+
expect(result.totalItems).toBe(1);
|
|
251
233
|
});
|
|
252
|
-
|
|
234
|
+
it('reports partial skippedItems when some items are too large', async () => {
|
|
253
235
|
const client = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
254
236
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
|
|
255
237
|
autoResize: true,
|
|
@@ -261,25 +243,25 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
261
243
|
if (typeof obj === 'object' && obj !== null && 'v' in obj) {
|
|
262
244
|
envelopeValidationCount++;
|
|
263
245
|
if (envelopeValidationCount === 2) {
|
|
264
|
-
return
|
|
246
|
+
return 2000000;
|
|
265
247
|
}
|
|
266
248
|
return 500;
|
|
267
249
|
}
|
|
268
250
|
return 100;
|
|
269
251
|
});
|
|
270
252
|
const result = await client.sendBundled('test-message', items);
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
253
|
+
expect(result.skippedItems).toBe(1);
|
|
254
|
+
expect(result.totalItems).toBe(3);
|
|
255
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalled();
|
|
274
256
|
});
|
|
275
|
-
|
|
257
|
+
it('emptyResult returns skippedItems as 0', async () => {
|
|
276
258
|
const result = await bundledClient.sendBundled('test-message', []);
|
|
277
|
-
|
|
278
|
-
|
|
259
|
+
expect(result.skippedItems).toBe(0);
|
|
260
|
+
expect(result.totalItems).toBe(0);
|
|
279
261
|
});
|
|
280
262
|
});
|
|
281
|
-
|
|
282
|
-
|
|
263
|
+
describe('integration: end-to-end bundle flow', () => {
|
|
264
|
+
it('produces envelopes that unbundleRecords can process', async () => {
|
|
283
265
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
284
266
|
const items = [
|
|
285
267
|
makeTestEvent('event-1', 'purchase', 99.99),
|
|
@@ -289,38 +271,38 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
289
271
|
let capturedEnvelope = null;
|
|
290
272
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_type, envelopes) => {
|
|
291
273
|
capturedEnvelope = envelopes[0];
|
|
292
|
-
return
|
|
274
|
+
return {
|
|
293
275
|
successCount: envelopes.length,
|
|
294
276
|
failedCount: 0,
|
|
295
277
|
batchCount: 1,
|
|
296
278
|
failedMessages: [],
|
|
297
|
-
}
|
|
279
|
+
};
|
|
298
280
|
});
|
|
299
281
|
await bundledClient.sendBundled('test-message', items);
|
|
300
|
-
|
|
282
|
+
expect(capturedEnvelope).not.toBeNull();
|
|
301
283
|
const sqsRecord = {
|
|
302
284
|
messageId: 'msg-1',
|
|
303
285
|
body: JSON.stringify({ messageBody: capturedEnvelope }),
|
|
304
286
|
};
|
|
305
287
|
const { items: unbundledItems, stats } = await unbundleRecords([sqsRecord]);
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
288
|
+
expect(unbundledItems).toHaveLength(3);
|
|
289
|
+
expect(unbundledItems[0]).toEqual({ id: 'event-1', name: 'purchase', value: 99.99 });
|
|
290
|
+
expect(unbundledItems[1]).toEqual({ id: 'event-2', name: 'add_to_cart', value: 29.99 });
|
|
291
|
+
expect(unbundledItems[2]).toEqual({ id: 'event-3', name: 'page_view' });
|
|
292
|
+
expect(stats.bundledSqsRecords).toBe(1);
|
|
311
293
|
});
|
|
312
|
-
|
|
294
|
+
it('maintains compatibility with large bundles', async () => {
|
|
313
295
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
314
296
|
const items = Array.from({ length: 200 }, (_, i) => makeTestEvent(`event-${i}`, `type-${i % 5}`, i * 1.5));
|
|
315
297
|
let capturedEnvelopes = [];
|
|
316
298
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_type, envelopes) => {
|
|
317
299
|
capturedEnvelopes = envelopes;
|
|
318
|
-
return
|
|
300
|
+
return {
|
|
319
301
|
successCount: envelopes.length,
|
|
320
302
|
failedCount: 0,
|
|
321
303
|
batchCount: 1,
|
|
322
304
|
failedMessages: [],
|
|
323
|
-
}
|
|
305
|
+
};
|
|
324
306
|
});
|
|
325
307
|
await bundledClient.sendBundled('test-message', items);
|
|
326
308
|
const sqsRecords = capturedEnvelopes.map((env, i) => ({
|
|
@@ -328,13 +310,13 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
328
310
|
body: JSON.stringify({ messageBody: env }),
|
|
329
311
|
}));
|
|
330
312
|
const { items: unbundledItems } = await unbundleRecords(sqsRecords);
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
313
|
+
expect(unbundledItems).toHaveLength(200);
|
|
314
|
+
expect(unbundledItems[0].id).toBe('event-0');
|
|
315
|
+
expect(unbundledItems[199].id).toBe('event-199');
|
|
334
316
|
});
|
|
335
317
|
});
|
|
336
|
-
|
|
337
|
-
|
|
318
|
+
describe('producer edge cases - real sequences', () => {
|
|
319
|
+
it('handles 1000 items with real bundling and verifies envelope structure', async () => {
|
|
338
320
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
339
321
|
const items = Array.from({ length: 1000 }, (_, i) => ({
|
|
340
322
|
id: `item-${i}`,
|
|
@@ -345,36 +327,36 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
345
327
|
const capturedEnvelopes = [];
|
|
346
328
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
347
329
|
capturedEnvelopes.push(...envelopes);
|
|
348
|
-
return
|
|
330
|
+
return {
|
|
349
331
|
successCount: envelopes.length,
|
|
350
332
|
failedCount: 0,
|
|
351
333
|
batchCount: 1,
|
|
352
334
|
failedMessages: [],
|
|
353
|
-
}
|
|
335
|
+
};
|
|
354
336
|
});
|
|
355
337
|
const result = await bundledClient.sendBundled('test', items);
|
|
356
|
-
|
|
357
|
-
|
|
338
|
+
expect(result.totalItems).toBe(1000);
|
|
339
|
+
expect(capturedEnvelopes.length).toBeGreaterThan(0);
|
|
358
340
|
let totalItemsInEnvelopes = 0;
|
|
359
341
|
for (const env of capturedEnvelopes) {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
342
|
+
expect(env.v).toBe(1);
|
|
343
|
+
expect(env.c).toBe(sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD);
|
|
344
|
+
expect(typeof env.p).toBe('string');
|
|
345
|
+
expect(typeof env.n).toBe('number');
|
|
346
|
+
expect(env.n).toBeGreaterThan(0);
|
|
365
347
|
totalItemsInEnvelopes += env.n;
|
|
366
348
|
}
|
|
367
|
-
|
|
349
|
+
expect(totalItemsInEnvelopes).toBe(1000);
|
|
368
350
|
const sqsRecords = capturedEnvelopes.map((env, i) => ({
|
|
369
351
|
messageId: `msg-${i}`,
|
|
370
352
|
body: JSON.stringify({ messageBody: env }),
|
|
371
353
|
}));
|
|
372
354
|
const { items: unbundledItems } = await unbundleRecords(sqsRecords);
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
355
|
+
expect(unbundledItems).toHaveLength(1000);
|
|
356
|
+
expect(unbundledItems[0]).toEqual({ id: 'item-0', name: 'payload-0', value: 0, data: 'extra-data-0' });
|
|
357
|
+
expect(unbundledItems[999]).toEqual({ id: 'item-999', name: 'payload-999', value: 9990, data: 'extra-data-999' });
|
|
376
358
|
});
|
|
377
|
-
|
|
359
|
+
it('achieves compression effectiveness with repetitive data', async () => {
|
|
378
360
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
379
361
|
const repetitiveText = 'AAAAAAAAAA'.repeat(100);
|
|
380
362
|
const items = Array.from({ length: 100 }, (_, i) => ({
|
|
@@ -386,31 +368,31 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
386
368
|
const capturedEnvelopes = [];
|
|
387
369
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
388
370
|
capturedEnvelopes.push(envelopes[0]);
|
|
389
|
-
return
|
|
371
|
+
return {
|
|
390
372
|
successCount: envelopes.length,
|
|
391
373
|
failedCount: 0,
|
|
392
374
|
batchCount: 1,
|
|
393
375
|
failedMessages: [],
|
|
394
|
-
}
|
|
376
|
+
};
|
|
395
377
|
});
|
|
396
378
|
const result = await bundledClient.sendBundled('test', items);
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
379
|
+
expect(result.metrics.compressionRatio).toBeGreaterThan(1);
|
|
380
|
+
expect(result.metrics.finalSizeBytes).toBeLessThan(result.metrics.originalSizeBytes);
|
|
381
|
+
expect(result.metrics.compressionRatio).toBeGreaterThan(5);
|
|
382
|
+
expect(capturedEnvelopes).toHaveLength(1);
|
|
401
383
|
const envelope = capturedEnvelopes[0];
|
|
402
|
-
|
|
384
|
+
expect(typeof envelope.p).toBe('string');
|
|
403
385
|
const { items: unbundledItems } = await unbundleRecords([
|
|
404
386
|
{
|
|
405
387
|
messageId: 'msg-1',
|
|
406
388
|
body: JSON.stringify({ messageBody: envelope }),
|
|
407
389
|
},
|
|
408
390
|
]);
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
391
|
+
expect(unbundledItems).toHaveLength(100);
|
|
392
|
+
expect(unbundledItems[0].data).toBe(repetitiveText);
|
|
393
|
+
expect(unbundledItems[99].data).toBe(repetitiveText);
|
|
412
394
|
});
|
|
413
|
-
|
|
395
|
+
it('handles various item sizes correctly', async () => {
|
|
414
396
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
415
397
|
const tinyItems = Array.from({ length: 10 }, (_, i) => ({
|
|
416
398
|
id: `tiny-${i}`,
|
|
@@ -426,50 +408,50 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
426
408
|
id: `medium-${i}`,
|
|
427
409
|
name: 'medium-item',
|
|
428
410
|
value: i,
|
|
429
|
-
data: 'y'.repeat(
|
|
411
|
+
data: 'y'.repeat(10000),
|
|
430
412
|
}));
|
|
431
413
|
const largerItems = Array.from({ length: 5 }, (_, i) => ({
|
|
432
414
|
id: `larger-${i}`,
|
|
433
415
|
name: 'larger-item',
|
|
434
416
|
value: i,
|
|
435
|
-
data: 'z'.repeat(
|
|
417
|
+
data: 'z'.repeat(100000),
|
|
436
418
|
}));
|
|
437
419
|
const allItems = [...tinyItems, ...smallItems, ...mediumItems, ...largerItems];
|
|
438
420
|
const totalExpectedItems = allItems.length;
|
|
439
421
|
const capturedEnvelopes = [];
|
|
440
422
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
441
423
|
capturedEnvelopes.push(...envelopes);
|
|
442
|
-
return
|
|
424
|
+
return {
|
|
443
425
|
successCount: envelopes.length,
|
|
444
426
|
failedCount: 0,
|
|
445
427
|
batchCount: 1,
|
|
446
428
|
failedMessages: [],
|
|
447
|
-
}
|
|
429
|
+
};
|
|
448
430
|
});
|
|
449
431
|
const result = await bundledClient.sendBundled('test', allItems);
|
|
450
|
-
|
|
451
|
-
|
|
432
|
+
expect(result.totalItems).toBe(totalExpectedItems);
|
|
433
|
+
expect(result.skippedItems).toBe(0);
|
|
452
434
|
const totalInEnvelopes = capturedEnvelopes.reduce((sum, env) => sum + env.n, 0);
|
|
453
|
-
|
|
435
|
+
expect(totalInEnvelopes).toBe(totalExpectedItems);
|
|
454
436
|
const sqsRecords = capturedEnvelopes.map((env, i) => ({
|
|
455
437
|
messageId: `msg-${i}`,
|
|
456
438
|
body: JSON.stringify({ messageBody: env }),
|
|
457
439
|
}));
|
|
458
440
|
const { items: unbundledItems } = await unbundleRecords(sqsRecords);
|
|
459
|
-
|
|
441
|
+
expect(unbundledItems).toHaveLength(totalExpectedItems);
|
|
460
442
|
const unbundledTiny = unbundledItems.filter((item) => item.id.startsWith('tiny-'));
|
|
461
443
|
const unbundledSmall = unbundledItems.filter((item) => item.id.startsWith('small-'));
|
|
462
444
|
const unbundledMedium = unbundledItems.filter((item) => item.id.startsWith('medium-'));
|
|
463
445
|
const unbundledLarger = unbundledItems.filter((item) => item.id.startsWith('larger-'));
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
});
|
|
472
|
-
|
|
446
|
+
expect(unbundledTiny).toHaveLength(10);
|
|
447
|
+
expect(unbundledSmall).toHaveLength(10);
|
|
448
|
+
expect(unbundledMedium).toHaveLength(10);
|
|
449
|
+
expect(unbundledLarger).toHaveLength(5);
|
|
450
|
+
expect(unbundledSmall[0].data).toBe('x'.repeat(100));
|
|
451
|
+
expect(unbundledMedium[0].data).toBe('y'.repeat(10000));
|
|
452
|
+
expect(unbundledLarger[0].data).toBe('z'.repeat(100000));
|
|
453
|
+
});
|
|
454
|
+
it('preserves unicode and special characters through compression', async () => {
|
|
473
455
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
474
456
|
const unicodeItems = [
|
|
475
457
|
{
|
|
@@ -526,35 +508,35 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
526
508
|
let capturedEnvelope = null;
|
|
527
509
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
528
510
|
capturedEnvelope = envelopes[0];
|
|
529
|
-
return
|
|
511
|
+
return {
|
|
530
512
|
successCount: envelopes.length,
|
|
531
513
|
failedCount: 0,
|
|
532
514
|
batchCount: 1,
|
|
533
515
|
failedMessages: [],
|
|
534
|
-
}
|
|
516
|
+
};
|
|
535
517
|
});
|
|
536
518
|
const result = await bundledClient.sendBundled('test', unicodeItems);
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
519
|
+
expect(result.totalItems).toBe(unicodeItems.length);
|
|
520
|
+
expect(result.skippedItems).toBe(0);
|
|
521
|
+
expect(capturedEnvelope).not.toBeNull();
|
|
540
522
|
const { items: unbundledItems } = await unbundleRecords([
|
|
541
523
|
{
|
|
542
524
|
messageId: 'msg-1',
|
|
543
525
|
body: JSON.stringify({ messageBody: capturedEnvelope }),
|
|
544
526
|
},
|
|
545
527
|
]);
|
|
546
|
-
|
|
528
|
+
expect(unbundledItems).toHaveLength(unicodeItems.length);
|
|
547
529
|
for (let i = 0; i < unicodeItems.length; i++) {
|
|
548
|
-
|
|
530
|
+
expect(unbundledItems[i]).toEqual(unicodeItems[i]);
|
|
549
531
|
}
|
|
550
532
|
const emojiItem = unbundledItems.find((item) => item.id === 'emoji');
|
|
551
|
-
|
|
533
|
+
expect(emojiItem?.name).toBe('🎉🚀💯🔥✨');
|
|
552
534
|
const chineseItem = unbundledItems.find((item) => item.id === 'chinese');
|
|
553
|
-
|
|
535
|
+
expect(chineseItem?.name).toBe('你好世界');
|
|
554
536
|
const arabicItem = unbundledItems.find((item) => item.id === 'arabic');
|
|
555
|
-
|
|
537
|
+
expect(arabicItem?.name).toBe('مرحبا بالعالم');
|
|
556
538
|
});
|
|
557
|
-
|
|
539
|
+
it('preserves deeply nested object structures', async () => {
|
|
558
540
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
559
541
|
const nestedItems = [
|
|
560
542
|
{
|
|
@@ -631,79 +613,79 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
631
613
|
let capturedEnvelope = null;
|
|
632
614
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
633
615
|
capturedEnvelope = envelopes[0];
|
|
634
|
-
return
|
|
616
|
+
return {
|
|
635
617
|
successCount: envelopes.length,
|
|
636
618
|
failedCount: 0,
|
|
637
619
|
batchCount: 1,
|
|
638
620
|
failedMessages: [],
|
|
639
|
-
}
|
|
621
|
+
};
|
|
640
622
|
});
|
|
641
623
|
const genericClient = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
642
624
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
|
|
643
625
|
});
|
|
644
626
|
const result = await genericClient.sendBundled('test', nestedItems);
|
|
645
|
-
|
|
646
|
-
|
|
627
|
+
expect(result.totalItems).toBe(nestedItems.length);
|
|
628
|
+
expect(result.skippedItems).toBe(0);
|
|
647
629
|
const { items: unbundledItems } = await unbundleRecords([
|
|
648
630
|
{
|
|
649
631
|
messageId: 'msg-1',
|
|
650
632
|
body: JSON.stringify({ messageBody: capturedEnvelope }),
|
|
651
633
|
},
|
|
652
634
|
]);
|
|
653
|
-
|
|
635
|
+
expect(unbundledItems).toHaveLength(nestedItems.length);
|
|
654
636
|
const deepItem = unbundledItems.find((item) => item.id === 'deep-nested');
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
637
|
+
expect(deepItem?.nested?.level1?.level2?.level3?.level4?.level5?.level6?.value).toBe('deep-value');
|
|
638
|
+
expect(deepItem?.nested?.level1?.level2?.level3?.level4?.level5?.level6?.number).toBe(12345);
|
|
639
|
+
expect(deepItem?.nested?.level1?.level2?.level3?.level4?.level5?.level6?.boolean).toBe(true);
|
|
658
640
|
const arrayItem = unbundledItems.find((item) => item.id === 'array-of-objects');
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
641
|
+
expect(arrayItem?.items?.length).toBe(3);
|
|
642
|
+
expect(arrayItem?.items?.[0]?.data?.nested?.value).toBe('a');
|
|
643
|
+
expect(arrayItem?.items?.[2]?.data?.nested?.value).toBe('c');
|
|
662
644
|
const mixedItem = unbundledItems.find((item) => item.id === 'mixed-structures');
|
|
663
|
-
|
|
664
|
-
|
|
645
|
+
expect(mixedItem?.config?.settings?.features).toEqual(['feature-1', 'feature-2', 'feature-3']);
|
|
646
|
+
expect(mixedItem?.config?.settings?.metadata?.tags?.secondary?.group2).toEqual(['tag-e', 'tag-f']);
|
|
665
647
|
const nullItem = unbundledItems.find((item) => item.id === 'null-undefined-handling');
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
648
|
+
expect(nullItem?.value).toBeNull();
|
|
649
|
+
expect(nullItem?.nested?.nullField).toBeNull();
|
|
650
|
+
expect(nullItem?.nested?.emptyObject).toEqual({});
|
|
651
|
+
expect(nullItem?.nested?.emptyArray).toEqual([]);
|
|
652
|
+
expect(nullItem?.nested?.zeroValue).toBe(0);
|
|
653
|
+
expect(nullItem?.nested?.falseValue).toBe(false);
|
|
654
|
+
expect(nullItem?.nested?.emptyString).toBe('');
|
|
673
655
|
const largeArrayItem = unbundledItems.find((item) => item.id === 'large-array');
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
656
|
+
expect(largeArrayItem?.items).toHaveLength(100);
|
|
657
|
+
expect(largeArrayItem?.items?.[0]).toEqual({ index: 0, data: 'item-0', nested: { level: 1, value: 0 } });
|
|
658
|
+
expect(largeArrayItem?.items?.[99]).toEqual({ index: 99, data: 'item-99', nested: { level: 1, value: 198 } });
|
|
677
659
|
});
|
|
678
|
-
|
|
660
|
+
it('handles exactly 1 item', async () => {
|
|
679
661
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
680
662
|
const items = [{ id: 'single', name: 'only-one', value: 42 }];
|
|
681
663
|
const capturedEnvelopes = [];
|
|
682
664
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
683
665
|
capturedEnvelopes.push(envelopes[0]);
|
|
684
|
-
return
|
|
666
|
+
return {
|
|
685
667
|
successCount: envelopes.length,
|
|
686
668
|
failedCount: 0,
|
|
687
669
|
batchCount: 1,
|
|
688
670
|
failedMessages: [],
|
|
689
|
-
}
|
|
671
|
+
};
|
|
690
672
|
});
|
|
691
673
|
const result = await bundledClient.sendBundled('test', items);
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
674
|
+
expect(result.totalItems).toBe(1);
|
|
675
|
+
expect(result.bundleCount).toBe(1);
|
|
676
|
+
expect(result.messageCount).toBe(1);
|
|
677
|
+
expect(capturedEnvelopes).toHaveLength(1);
|
|
678
|
+
expect(capturedEnvelopes[0].n).toBe(1);
|
|
697
679
|
const { items: unbundledItems } = await unbundleRecords([
|
|
698
680
|
{
|
|
699
681
|
messageId: 'msg-1',
|
|
700
682
|
body: JSON.stringify({ messageBody: capturedEnvelopes[0] }),
|
|
701
683
|
},
|
|
702
684
|
]);
|
|
703
|
-
|
|
704
|
-
|
|
685
|
+
expect(unbundledItems).toHaveLength(1);
|
|
686
|
+
expect(unbundledItems[0]).toEqual(items[0]);
|
|
705
687
|
});
|
|
706
|
-
|
|
688
|
+
it('handles exactly maxItemsPerBundle items', async () => {
|
|
707
689
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
708
690
|
const maxItems = 50;
|
|
709
691
|
const client = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
@@ -718,25 +700,25 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
718
700
|
const capturedEnvelopes = [];
|
|
719
701
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
720
702
|
capturedEnvelopes.push(...envelopes);
|
|
721
|
-
return
|
|
703
|
+
return {
|
|
722
704
|
successCount: envelopes.length,
|
|
723
705
|
failedCount: 0,
|
|
724
706
|
batchCount: 1,
|
|
725
707
|
failedMessages: [],
|
|
726
|
-
}
|
|
708
|
+
};
|
|
727
709
|
});
|
|
728
710
|
const result = await client.sendBundled('test', items);
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
711
|
+
expect(result.totalItems).toBe(maxItems);
|
|
712
|
+
expect(capturedEnvelopes).toHaveLength(1);
|
|
713
|
+
expect(capturedEnvelopes[0].n).toBe(maxItems);
|
|
732
714
|
const sqsRecords = capturedEnvelopes.map((env, i) => ({
|
|
733
715
|
messageId: `msg-${i}`,
|
|
734
716
|
body: JSON.stringify({ messageBody: env }),
|
|
735
717
|
}));
|
|
736
718
|
const { items: unbundledItems } = await unbundleRecords(sqsRecords);
|
|
737
|
-
|
|
719
|
+
expect(unbundledItems).toHaveLength(maxItems);
|
|
738
720
|
});
|
|
739
|
-
|
|
721
|
+
it('handles maxItemsPerBundle + 1 items (splits correctly)', async () => {
|
|
740
722
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
741
723
|
const maxItems = 50;
|
|
742
724
|
const client = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
@@ -751,26 +733,26 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
751
733
|
const capturedEnvelopes = [];
|
|
752
734
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
753
735
|
capturedEnvelopes.push(...envelopes);
|
|
754
|
-
return
|
|
736
|
+
return {
|
|
755
737
|
successCount: envelopes.length,
|
|
756
738
|
failedCount: 0,
|
|
757
739
|
batchCount: 1,
|
|
758
740
|
failedMessages: [],
|
|
759
|
-
}
|
|
741
|
+
};
|
|
760
742
|
});
|
|
761
743
|
const result = await client.sendBundled('test', items);
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
744
|
+
expect(result.totalItems).toBe(maxItems + 1);
|
|
745
|
+
expect(capturedEnvelopes).toHaveLength(2);
|
|
746
|
+
expect(capturedEnvelopes[0].n).toBe(maxItems);
|
|
747
|
+
expect(capturedEnvelopes[1].n).toBe(1);
|
|
766
748
|
const sqsRecords = capturedEnvelopes.map((env, i) => ({
|
|
767
749
|
messageId: `msg-${i}`,
|
|
768
750
|
body: JSON.stringify({ messageBody: env }),
|
|
769
751
|
}));
|
|
770
752
|
const { items: unbundledItems } = await unbundleRecords(sqsRecords);
|
|
771
|
-
|
|
753
|
+
expect(unbundledItems).toHaveLength(maxItems + 1);
|
|
772
754
|
});
|
|
773
|
-
|
|
755
|
+
it('handles uncompressed mode (NONE) with various data', async () => {
|
|
774
756
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
775
757
|
const noCompressionClient = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
776
758
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.NONE,
|
|
@@ -784,32 +766,32 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
784
766
|
const capturedEnvelopes = [];
|
|
785
767
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
786
768
|
capturedEnvelopes.push(envelopes[0]);
|
|
787
|
-
return
|
|
769
|
+
return {
|
|
788
770
|
successCount: envelopes.length,
|
|
789
771
|
failedCount: 0,
|
|
790
772
|
batchCount: 1,
|
|
791
773
|
failedMessages: [],
|
|
792
|
-
}
|
|
774
|
+
};
|
|
793
775
|
});
|
|
794
776
|
const result = await noCompressionClient.sendBundled('test', items);
|
|
795
|
-
|
|
796
|
-
|
|
777
|
+
expect(result.totalItems).toBe(50);
|
|
778
|
+
expect(capturedEnvelopes).toHaveLength(1);
|
|
797
779
|
const envelope = capturedEnvelopes[0];
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
780
|
+
expect(envelope.c).toBe(sqs_bundled_client_types_1.CompressionAlgorithm.NONE);
|
|
781
|
+
expect(Array.isArray(envelope.p)).toBe(true);
|
|
782
|
+
expect(envelope.p.length).toBe(50);
|
|
783
|
+
expect(result.metrics.compressionRatio).toBeCloseTo(1, 0);
|
|
802
784
|
const { items: unbundledItems } = await unbundleRecords([
|
|
803
785
|
{
|
|
804
786
|
messageId: 'msg-1',
|
|
805
787
|
body: JSON.stringify({ messageBody: envelope }),
|
|
806
788
|
},
|
|
807
789
|
]);
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
790
|
+
expect(unbundledItems).toHaveLength(50);
|
|
791
|
+
expect(unbundledItems[0]).toEqual(items[0]);
|
|
792
|
+
expect(unbundledItems[49]).toEqual(items[49]);
|
|
811
793
|
});
|
|
812
|
-
|
|
794
|
+
it('produces correct metrics for a large mixed batch', async () => {
|
|
813
795
|
const items = Array.from({ length: 500 }, (_, i) => ({
|
|
814
796
|
id: `metric-test-${i}`,
|
|
815
797
|
name: `item-${i % 10}`,
|
|
@@ -819,25 +801,25 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
819
801
|
const capturedEnvelopes = [];
|
|
820
802
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
821
803
|
capturedEnvelopes.push(...envelopes);
|
|
822
|
-
return
|
|
804
|
+
return {
|
|
823
805
|
successCount: envelopes.length,
|
|
824
806
|
failedCount: 0,
|
|
825
807
|
batchCount: 1,
|
|
826
808
|
failedMessages: [],
|
|
827
|
-
}
|
|
809
|
+
};
|
|
828
810
|
});
|
|
829
811
|
const result = await bundledClient.sendBundled('test', items);
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
812
|
+
expect(result.totalItems).toBe(500);
|
|
813
|
+
expect(result.metrics.originalSizeBytes).toBeGreaterThan(0);
|
|
814
|
+
expect(result.metrics.finalSizeBytes).toBeGreaterThan(0);
|
|
815
|
+
expect(result.metrics.compressionRatio).toBeGreaterThan(1);
|
|
816
|
+
expect(result.metrics.compressionTimeMs).toBeGreaterThanOrEqual(0);
|
|
817
|
+
expect(result.metrics.avgItemsPerBundle).toBeGreaterThan(0);
|
|
836
818
|
const expectedAvg = items.length / capturedEnvelopes.length;
|
|
837
|
-
|
|
838
|
-
|
|
819
|
+
expect(result.metrics.avgItemsPerBundle).toBeCloseTo(expectedAvg, 1);
|
|
820
|
+
expect(result.billableRequests).toBeGreaterThanOrEqual(1);
|
|
839
821
|
});
|
|
840
|
-
|
|
822
|
+
it('handles items with special JSON edge cases', async () => {
|
|
841
823
|
const { unbundleRecords } = await Promise.resolve().then(() => __importStar(require('../../clients/generic/sqs-unbundle')));
|
|
842
824
|
const edgeCaseItems = [
|
|
843
825
|
{
|
|
@@ -876,40 +858,40 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
876
858
|
let capturedEnvelope = null;
|
|
877
859
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
878
860
|
capturedEnvelope = envelopes[0];
|
|
879
|
-
return
|
|
861
|
+
return {
|
|
880
862
|
successCount: envelopes.length,
|
|
881
863
|
failedCount: 0,
|
|
882
864
|
batchCount: 1,
|
|
883
865
|
failedMessages: [],
|
|
884
|
-
}
|
|
866
|
+
};
|
|
885
867
|
});
|
|
886
868
|
const genericClient = new sqs_bundled_client_1.BundledSQSClient(mockSqsClient, {
|
|
887
869
|
compression: sqs_bundled_client_types_1.CompressionAlgorithm.ZSTD,
|
|
888
870
|
});
|
|
889
871
|
const result = await genericClient.sendBundled('test', edgeCaseItems);
|
|
890
|
-
|
|
891
|
-
|
|
872
|
+
expect(result.totalItems).toBe(edgeCaseItems.length);
|
|
873
|
+
expect(result.skippedItems).toBe(0);
|
|
892
874
|
const { items: unbundledItems } = await unbundleRecords([
|
|
893
875
|
{
|
|
894
876
|
messageId: 'msg-1',
|
|
895
877
|
body: JSON.stringify({ messageBody: capturedEnvelope }),
|
|
896
878
|
},
|
|
897
879
|
]);
|
|
898
|
-
|
|
880
|
+
expect(unbundledItems).toHaveLength(edgeCaseItems.length);
|
|
899
881
|
const numbersItem = unbundledItems.find((item) => item.id === 'large-numbers');
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
882
|
+
expect(numbersItem?.bigInt).toBe(9007199254740991);
|
|
883
|
+
expect(numbersItem?.scientific).toBe(1.23e10);
|
|
884
|
+
expect(numbersItem?.negative).toBe(-999999);
|
|
885
|
+
expect(numbersItem?.zero).toBe(0);
|
|
904
886
|
const stringsItem = unbundledItems.find((item) => item.id === 'special-strings');
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
887
|
+
expect(stringsItem?.data).toBe(JSON.stringify({ nested: 'json' }));
|
|
888
|
+
expect(stringsItem?.withQuotes).toBe('He said "hello"');
|
|
889
|
+
expect(stringsItem?.withBackslash).toBe('path\\to\\file');
|
|
908
890
|
const booleansItem = unbundledItems.find((item) => item.id === 'boolean-variants');
|
|
909
|
-
|
|
910
|
-
|
|
891
|
+
expect(booleansItem?.trueVal).toBe(true);
|
|
892
|
+
expect(booleansItem?.falseVal).toBe(false);
|
|
911
893
|
});
|
|
912
|
-
|
|
894
|
+
it('handles concurrent sends without interference', async () => {
|
|
913
895
|
const batch1 = Array.from({ length: 100 }, (_, i) => ({
|
|
914
896
|
id: `batch1-${i}`,
|
|
915
897
|
name: 'batch-one',
|
|
@@ -926,24 +908,24 @@ function makeTestEvent(id, name = 'test', value) {
|
|
|
926
908
|
value: i * 3,
|
|
927
909
|
}));
|
|
928
910
|
mockSqsClient.buildAndSendMessagesV2.mockImplementation(async (_, envelopes) => {
|
|
929
|
-
return
|
|
911
|
+
return {
|
|
930
912
|
successCount: envelopes.length,
|
|
931
913
|
failedCount: 0,
|
|
932
914
|
batchCount: 1,
|
|
933
915
|
failedMessages: [],
|
|
934
|
-
}
|
|
916
|
+
};
|
|
935
917
|
});
|
|
936
918
|
const [result1, result2, result3] = await Promise.all([
|
|
937
919
|
bundledClient.sendBundled('test', batch1),
|
|
938
920
|
bundledClient.sendBundled('test', batch2),
|
|
939
921
|
bundledClient.sendBundled('test', batch3),
|
|
940
922
|
]);
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
923
|
+
expect(result1.totalItems).toBe(100);
|
|
924
|
+
expect(result2.totalItems).toBe(100);
|
|
925
|
+
expect(result3.totalItems).toBe(100);
|
|
926
|
+
expect(result1.skippedItems).toBe(0);
|
|
927
|
+
expect(result2.skippedItems).toBe(0);
|
|
928
|
+
expect(result3.skippedItems).toBe(0);
|
|
947
929
|
});
|
|
948
930
|
});
|
|
949
931
|
});
|