@adtrackify/at-service-common 3.2.18 → 3.2.20
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__/identity-cache/identity-cache-db-service.spec.d.ts +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js +527 -527
- package/dist/cjs/__tests__/libs/compress-decompress.spec.d.ts +1 -1
- package/dist/cjs/__tests__/libs/compress-decompress.spec.js +16 -16
- package/dist/cjs/__tests__/s3-client/s3-client.spec.d.ts +1 -1
- package/dist/cjs/__tests__/s3-client/s3-client.spec.js +26 -26
- package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.d.ts +1 -1
- package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js +35 -35
- package/dist/cjs/clients/generic/cognito-client.d.ts +23 -23
- package/dist/cjs/clients/generic/cognito-client.js +209 -209
- package/dist/cjs/clients/generic/dynamodb-client.d.ts +17 -17
- package/dist/cjs/clients/generic/dynamodb-client.js +167 -167
- package/dist/cjs/clients/generic/eventbridge-client.d.ts +14 -14
- package/dist/cjs/clients/generic/eventbridge-client.js +49 -49
- package/dist/cjs/clients/generic/http-client.d.ts +14 -14
- package/dist/cjs/clients/generic/http-client.js +61 -61
- package/dist/cjs/clients/generic/index.d.ts +10 -10
- package/dist/cjs/clients/generic/index.js +26 -26
- package/dist/cjs/clients/generic/lambda-invoke-client.d.ts +10 -10
- package/dist/cjs/clients/generic/lambda-invoke-client.js +35 -35
- package/dist/cjs/clients/generic/location-client.d.ts +8 -8
- package/dist/cjs/clients/generic/location-client.js +31 -31
- package/dist/cjs/clients/generic/redis-client.d.ts +18 -18
- package/dist/cjs/clients/generic/redis-client.js +128 -128
- package/dist/cjs/clients/generic/s3-client.d.ts +16 -16
- package/dist/cjs/clients/generic/s3-client.js +110 -110
- package/dist/cjs/clients/generic/singlestore-db-client.d.ts +14 -14
- package/dist/cjs/clients/generic/singlestore-db-client.js +67 -67
- package/dist/cjs/clients/generic/sqs-client.d.ts +20 -20
- package/dist/cjs/clients/generic/sqs-client.js +36 -36
- package/dist/cjs/clients/index.d.ts +3 -3
- package/dist/cjs/clients/index.js +19 -19
- package/dist/cjs/clients/internal-api/accounts-client.d.ts +83 -83
- package/dist/cjs/clients/internal-api/accounts-client.js +107 -107
- package/dist/cjs/clients/internal-api/cache-lambda-client.d.ts +25 -25
- package/dist/cjs/clients/internal-api/cache-lambda-client.js +79 -79
- package/dist/cjs/clients/internal-api/db-management-client.d.ts +18 -18
- package/dist/cjs/clients/internal-api/db-management-client.js +39 -39
- package/dist/cjs/clients/internal-api/destinations-client.d.ts +27 -27
- package/dist/cjs/clients/internal-api/destinations-client.js +51 -51
- package/dist/cjs/clients/internal-api/event-collector-client.d.ts +20 -20
- package/dist/cjs/clients/internal-api/event-collector-client.js +39 -39
- package/dist/cjs/clients/internal-api/identity-client.d.ts +25 -25
- package/dist/cjs/clients/internal-api/identity-client.js +92 -92
- package/dist/cjs/clients/internal-api/index.d.ts +9 -9
- package/dist/cjs/clients/internal-api/index.js +25 -25
- package/dist/cjs/clients/internal-api/shopify-app-install-client.d.ts +36 -32
- package/dist/cjs/clients/internal-api/shopify-app-install-client.js +71 -66
- package/dist/cjs/clients/internal-api/shopify-app-install-client.js.map +1 -1
- package/dist/cjs/clients/internal-api/subscriptions-client.d.ts +22 -22
- package/dist/cjs/clients/internal-api/subscriptions-client.js +57 -57
- package/dist/cjs/clients/internal-api/users-auth-client.d.ts +35 -35
- package/dist/cjs/clients/internal-api/users-auth-client.js +110 -110
- package/dist/cjs/clients/third-party/index.d.ts +1 -1
- package/dist/cjs/clients/third-party/index.js +17 -17
- package/dist/cjs/clients/third-party/shopify/graphql-product-queries.d.ts +2 -2
- package/dist/cjs/clients/third-party/shopify/graphql-product-queries.js +5 -5
- package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.d.ts +9 -9
- package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js +95 -95
- package/dist/cjs/clients/third-party/shopify-client.d.ts +29 -27
- package/dist/cjs/clients/third-party/shopify-client.js +144 -144
- package/dist/cjs/clients/third-party/shopify-client.js.map +1 -1
- package/dist/cjs/helpers/identity-cache-helper.d.ts +4 -4
- package/dist/cjs/helpers/identity-cache-helper.js +150 -150
- package/dist/cjs/helpers/index.d.ts +5 -5
- package/dist/cjs/helpers/index.js +21 -21
- package/dist/cjs/helpers/input-validation-helper.d.ts +3 -3
- package/dist/cjs/helpers/input-validation-helper.js +22 -22
- package/dist/cjs/helpers/logging-helper.d.ts +16 -16
- package/dist/cjs/helpers/logging-helper.js +84 -84
- package/dist/cjs/helpers/response-helper.d.ts +15 -15
- package/dist/cjs/helpers/response-helper.js +42 -42
- package/dist/cjs/helpers/shopify-helper.d.ts +9 -9
- package/dist/cjs/helpers/shopify-helper.js +28 -28
- package/dist/cjs/index.d.ts +5 -5
- package/dist/cjs/index.js +21 -21
- package/dist/cjs/libs/clickId-parser.d.ts +23 -23
- package/dist/cjs/libs/clickId-parser.js +49 -49
- package/dist/cjs/libs/compression.d.ts +2 -2
- package/dist/cjs/libs/compression.js +33 -33
- package/dist/cjs/libs/crypto.d.ts +1 -1
- package/dist/cjs/libs/crypto.js +12 -12
- package/dist/cjs/libs/dates.d.ts +6 -6
- package/dist/cjs/libs/dates.js +31 -31
- package/dist/cjs/libs/http-error.d.ts +21 -21
- package/dist/cjs/libs/http-error.js +59 -59
- package/dist/cjs/libs/http-status-codes.d.ts +58 -58
- package/dist/cjs/libs/http-status-codes.js +62 -62
- package/dist/cjs/libs/index.d.ts +9 -9
- package/dist/cjs/libs/index.js +25 -25
- package/dist/cjs/libs/referrer-parser/index.d.ts +2 -2
- package/dist/cjs/libs/referrer-parser/index.js +18 -18
- package/dist/cjs/libs/referrer-parser/referrer-data.d.ts +9 -9
- package/dist/cjs/libs/referrer-parser/referrer-data.js +4712 -4712
- package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
- package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +128 -128
- package/dist/cjs/libs/url.d.ts +1 -1
- package/dist/cjs/libs/url.js +13 -13
- package/dist/cjs/services/cache/generic-cached-object.d.ts +5 -5
- package/dist/cjs/services/cache/generic-cached-object.js +2 -2
- package/dist/cjs/services/cache/index.d.ts +1 -1
- package/dist/cjs/services/cache/index.js +17 -17
- package/dist/cjs/services/cache/product-cache-service.d.ts +21 -21
- package/dist/cjs/services/cache/product-cache-service.js +68 -68
- package/dist/cjs/services/db/destinations-db-service.d.ts +9 -9
- package/dist/cjs/services/db/destinations-db-service.js +57 -57
- package/dist/cjs/services/db/identity-cache-db-service.d.ts +24 -24
- package/dist/cjs/services/db/identity-cache-db-service.js +233 -233
- package/dist/cjs/services/db/index.d.ts +7 -7
- package/dist/cjs/services/db/index.js +23 -23
- package/dist/cjs/services/db/log-events-db-service.d.ts +11 -11
- package/dist/cjs/services/db/log-events-db-service.js +172 -172
- package/dist/cjs/services/db/purchased-contacts-db-service.d.ts +9 -9
- package/dist/cjs/services/db/purchased-contacts-db-service.js +38 -38
- package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +7 -7
- package/dist/cjs/services/db/shopify-app-installs-db-service.js +47 -47
- package/dist/cjs/services/db/shopify-products-cache-db-service.d.ts +16 -16
- package/dist/cjs/services/db/shopify-products-cache-db-service.js +65 -65
- package/dist/cjs/services/db/tracking-events-db-service.d.ts +20 -20
- package/dist/cjs/services/db/tracking-events-db-service.js +162 -162
- package/dist/cjs/services/eventbridge-integration-service.d.ts +9 -9
- package/dist/cjs/services/eventbridge-integration-service.js +28 -28
- package/dist/cjs/services/generic-cache-service.d.ts +7 -7
- package/dist/cjs/services/generic-cache-service.js +33 -33
- package/dist/cjs/services/index.d.ts +8 -8
- package/dist/cjs/services/index.js +24 -24
- package/dist/cjs/services/ipdata-lookup-service.d.ts +19 -19
- package/dist/cjs/services/ipdata-lookup-service.js +77 -77
- package/dist/cjs/services/log-event-service.d.ts +9 -9
- package/dist/cjs/services/log-event-service.js +56 -56
- package/dist/cjs/services/metric-event-service.d.ts +9 -9
- package/dist/cjs/services/metric-event-service.js +49 -49
- package/dist/cjs/services/shopify/index.d.ts +3 -3
- package/dist/cjs/services/shopify/index.js +19 -19
- package/dist/cjs/services/shopify/products/index.d.ts +1 -1
- package/dist/cjs/services/shopify/products/index.js +17 -17
- package/dist/cjs/services/shopify/products/shopify-products-serviceV2.d.ts +17 -17
- package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js +103 -103
- package/dist/cjs/services/shopify/shopify-graphql-transformer.d.ts +9 -9
- package/dist/cjs/services/shopify/shopify-graphql-transformer.js +137 -137
- package/dist/cjs/services/shopify/types/index.d.ts +1 -1
- package/dist/cjs/services/shopify/types/index.js +17 -17
- package/dist/cjs/services/shopify/types/product.d.ts +115 -115
- package/dist/cjs/services/shopify/types/product.js +9 -9
- package/dist/cjs/types/api-response.d.ts +6 -6
- package/dist/cjs/types/api-response.js +2 -2
- package/dist/cjs/types/index.d.ts +2 -2
- package/dist/cjs/types/index.js +18 -18
- package/dist/cjs/types/internal-events/event-detail-types.d.ts +20 -20
- package/dist/cjs/types/internal-events/event-detail-types.js +27 -27
- package/dist/cjs/types/internal-events/index.d.ts +1 -1
- package/dist/cjs/types/internal-events/index.js +17 -17
- package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +105 -105
- package/dist/cjs/types/shopify-graphql-types/admin.generated.js +2 -2
- package/dist/cjs/types/shopify-graphql-types/admin.types.d.ts +26289 -26289
- package/dist/cjs/types/shopify-graphql-types/admin.types.js +5311 -5311
- package/dist/cjs/types/shopify-graphql-types/index.d.ts +2 -2
- package/dist/cjs/types/shopify-graphql-types/index.js +18 -18
- package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.d.ts +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js +525 -525
- package/dist/esm/__tests__/libs/compress-decompress.spec.d.ts +1 -1
- package/dist/esm/__tests__/libs/compress-decompress.spec.js +14 -14
- package/dist/esm/__tests__/s3-client/s3-client.spec.d.ts +1 -1
- package/dist/esm/__tests__/s3-client/s3-client.spec.js +24 -24
- package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.d.ts +1 -1
- package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js +33 -33
- package/dist/esm/clients/generic/cognito-client.d.ts +23 -23
- package/dist/esm/clients/generic/cognito-client.js +204 -204
- package/dist/esm/clients/generic/dynamodb-client.d.ts +17 -17
- package/dist/esm/clients/generic/dynamodb-client.js +163 -163
- package/dist/esm/clients/generic/eventbridge-client.d.ts +14 -14
- package/dist/esm/clients/generic/eventbridge-client.js +45 -45
- package/dist/esm/clients/generic/http-client.d.ts +14 -14
- package/dist/esm/clients/generic/http-client.js +53 -53
- package/dist/esm/clients/generic/index.d.ts +10 -10
- package/dist/esm/clients/generic/index.js +10 -10
- package/dist/esm/clients/generic/lambda-invoke-client.d.ts +10 -10
- package/dist/esm/clients/generic/lambda-invoke-client.js +31 -31
- package/dist/esm/clients/generic/location-client.d.ts +8 -8
- package/dist/esm/clients/generic/location-client.js +27 -27
- package/dist/esm/clients/generic/redis-client.d.ts +18 -18
- package/dist/esm/clients/generic/redis-client.js +121 -121
- package/dist/esm/clients/generic/s3-client.d.ts +16 -16
- package/dist/esm/clients/generic/s3-client.js +106 -106
- package/dist/esm/clients/generic/singlestore-db-client.d.ts +14 -14
- package/dist/esm/clients/generic/singlestore-db-client.js +40 -40
- package/dist/esm/clients/generic/sqs-client.d.ts +20 -20
- package/dist/esm/clients/generic/sqs-client.js +32 -32
- package/dist/esm/clients/index.d.ts +3 -3
- package/dist/esm/clients/index.js +3 -3
- package/dist/esm/clients/internal-api/accounts-client.d.ts +83 -83
- package/dist/esm/clients/internal-api/accounts-client.js +103 -103
- package/dist/esm/clients/internal-api/cache-lambda-client.d.ts +25 -25
- package/dist/esm/clients/internal-api/cache-lambda-client.js +75 -75
- package/dist/esm/clients/internal-api/db-management-client.d.ts +18 -18
- package/dist/esm/clients/internal-api/db-management-client.js +32 -32
- package/dist/esm/clients/internal-api/destinations-client.d.ts +27 -27
- package/dist/esm/clients/internal-api/destinations-client.js +47 -47
- package/dist/esm/clients/internal-api/event-collector-client.d.ts +20 -20
- package/dist/esm/clients/internal-api/event-collector-client.js +32 -32
- package/dist/esm/clients/internal-api/identity-client.d.ts +25 -25
- package/dist/esm/clients/internal-api/identity-client.js +88 -88
- package/dist/esm/clients/internal-api/index.d.ts +9 -9
- package/dist/esm/clients/internal-api/index.js +9 -9
- package/dist/esm/clients/internal-api/shopify-app-install-client.d.ts +36 -32
- package/dist/esm/clients/internal-api/shopify-app-install-client.js +64 -59
- package/dist/esm/clients/internal-api/shopify-app-install-client.js.map +1 -1
- package/dist/esm/clients/internal-api/subscriptions-client.d.ts +22 -22
- package/dist/esm/clients/internal-api/subscriptions-client.js +50 -50
- package/dist/esm/clients/internal-api/users-auth-client.d.ts +35 -35
- package/dist/esm/clients/internal-api/users-auth-client.js +106 -106
- package/dist/esm/clients/third-party/index.d.ts +1 -1
- package/dist/esm/clients/third-party/index.js +1 -1
- package/dist/esm/clients/third-party/shopify/graphql-product-queries.d.ts +2 -2
- package/dist/esm/clients/third-party/shopify/graphql-product-queries.js +2 -2
- package/dist/esm/clients/third-party/shopify/shopify-graphql-client.d.ts +9 -9
- package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +91 -91
- package/dist/esm/clients/third-party/shopify-client.d.ts +29 -27
- package/dist/esm/clients/third-party/shopify-client.js +140 -140
- package/dist/esm/clients/third-party/shopify-client.js.map +1 -1
- package/dist/esm/helpers/identity-cache-helper.d.ts +4 -4
- package/dist/esm/helpers/identity-cache-helper.js +145 -145
- package/dist/esm/helpers/index.d.ts +5 -5
- package/dist/esm/helpers/index.js +5 -5
- package/dist/esm/helpers/input-validation-helper.d.ts +3 -3
- package/dist/esm/helpers/input-validation-helper.js +18 -18
- package/dist/esm/helpers/logging-helper.d.ts +16 -16
- package/dist/esm/helpers/logging-helper.js +56 -56
- package/dist/esm/helpers/response-helper.d.ts +15 -15
- package/dist/esm/helpers/response-helper.js +36 -36
- package/dist/esm/helpers/shopify-helper.d.ts +9 -9
- package/dist/esm/helpers/shopify-helper.js +23 -23
- package/dist/esm/index.d.ts +5 -5
- package/dist/esm/index.js +5 -5
- package/dist/esm/libs/clickId-parser.d.ts +23 -23
- package/dist/esm/libs/clickId-parser.js +45 -45
- package/dist/esm/libs/compression.d.ts +2 -2
- package/dist/esm/libs/compression.js +25 -25
- package/dist/esm/libs/crypto.d.ts +1 -1
- package/dist/esm/libs/crypto.js +5 -5
- package/dist/esm/libs/dates.d.ts +6 -6
- package/dist/esm/libs/dates.js +22 -22
- package/dist/esm/libs/http-error.d.ts +21 -21
- package/dist/esm/libs/http-error.js +55 -55
- package/dist/esm/libs/http-status-codes.d.ts +58 -58
- package/dist/esm/libs/http-status-codes.js +59 -59
- package/dist/esm/libs/index.d.ts +9 -9
- package/dist/esm/libs/index.js +9 -9
- package/dist/esm/libs/referrer-parser/index.d.ts +2 -2
- package/dist/esm/libs/referrer-parser/index.js +2 -2
- package/dist/esm/libs/referrer-parser/referrer-data.d.ts +9 -9
- package/dist/esm/libs/referrer-parser/referrer-data.js +4709 -4709
- package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
- package/dist/esm/libs/referrer-parser/referrer-parser-util.js +121 -121
- package/dist/esm/libs/url.d.ts +1 -1
- package/dist/esm/libs/url.js +9 -9
- package/dist/esm/services/cache/generic-cached-object.d.ts +5 -5
- package/dist/esm/services/cache/generic-cached-object.js +1 -1
- package/dist/esm/services/cache/index.d.ts +1 -1
- package/dist/esm/services/cache/index.js +1 -1
- package/dist/esm/services/cache/product-cache-service.d.ts +21 -21
- package/dist/esm/services/cache/product-cache-service.js +60 -60
- package/dist/esm/services/db/destinations-db-service.d.ts +9 -9
- package/dist/esm/services/db/destinations-db-service.js +53 -53
- package/dist/esm/services/db/identity-cache-db-service.d.ts +24 -24
- package/dist/esm/services/db/identity-cache-db-service.js +229 -229
- package/dist/esm/services/db/index.d.ts +7 -7
- package/dist/esm/services/db/index.js +7 -7
- package/dist/esm/services/db/log-events-db-service.d.ts +11 -11
- package/dist/esm/services/db/log-events-db-service.js +168 -168
- package/dist/esm/services/db/purchased-contacts-db-service.d.ts +9 -9
- package/dist/esm/services/db/purchased-contacts-db-service.js +34 -34
- package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +7 -7
- package/dist/esm/services/db/shopify-app-installs-db-service.js +43 -43
- package/dist/esm/services/db/shopify-products-cache-db-service.d.ts +16 -16
- package/dist/esm/services/db/shopify-products-cache-db-service.js +58 -58
- package/dist/esm/services/db/tracking-events-db-service.d.ts +20 -20
- package/dist/esm/services/db/tracking-events-db-service.js +158 -158
- package/dist/esm/services/eventbridge-integration-service.d.ts +9 -9
- package/dist/esm/services/eventbridge-integration-service.js +24 -24
- package/dist/esm/services/generic-cache-service.d.ts +7 -7
- package/dist/esm/services/generic-cache-service.js +29 -29
- package/dist/esm/services/index.d.ts +8 -8
- package/dist/esm/services/index.js +8 -8
- package/dist/esm/services/ipdata-lookup-service.d.ts +19 -19
- package/dist/esm/services/ipdata-lookup-service.js +73 -73
- package/dist/esm/services/log-event-service.d.ts +9 -9
- package/dist/esm/services/log-event-service.js +52 -52
- package/dist/esm/services/metric-event-service.d.ts +9 -9
- package/dist/esm/services/metric-event-service.js +45 -45
- package/dist/esm/services/shopify/index.d.ts +3 -3
- package/dist/esm/services/shopify/index.js +3 -3
- package/dist/esm/services/shopify/products/index.d.ts +1 -1
- package/dist/esm/services/shopify/products/index.js +1 -1
- package/dist/esm/services/shopify/products/shopify-products-serviceV2.d.ts +17 -17
- package/dist/esm/services/shopify/products/shopify-products-serviceV2.js +99 -99
- package/dist/esm/services/shopify/shopify-graphql-transformer.d.ts +9 -9
- package/dist/esm/services/shopify/shopify-graphql-transformer.js +134 -134
- package/dist/esm/services/shopify/types/index.d.ts +1 -1
- package/dist/esm/services/shopify/types/index.js +1 -1
- package/dist/esm/services/shopify/types/product.d.ts +115 -115
- package/dist/esm/services/shopify/types/product.js +6 -6
- package/dist/esm/types/api-response.d.ts +6 -6
- package/dist/esm/types/api-response.js +1 -1
- package/dist/esm/types/index.d.ts +2 -2
- package/dist/esm/types/index.js +2 -2
- package/dist/esm/types/internal-events/event-detail-types.d.ts +20 -20
- package/dist/esm/types/internal-events/event-detail-types.js +24 -24
- package/dist/esm/types/internal-events/index.d.ts +1 -1
- package/dist/esm/types/internal-events/index.js +1 -1
- package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +105 -105
- package/dist/esm/types/shopify-graphql-types/admin.generated.js +1 -1
- package/dist/esm/types/shopify-graphql-types/admin.types.d.ts +26289 -26289
- package/dist/esm/types/shopify-graphql-types/admin.types.js +5299 -5299
- package/dist/esm/types/shopify-graphql-types/index.d.ts +2 -2
- package/dist/esm/types/shopify-graphql-types/index.js +2 -2
- package/package.json +1 -1
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { createHmac } from 'crypto';
|
|
2
|
-
import { Logger } from './logging-helper.js';
|
|
3
|
-
import { HttpError } from '../libs/http-error.js';
|
|
4
|
-
import { mapObjectToQueryString } from '../libs/url.js';
|
|
5
|
-
export const isShopifyRequestValid = (validationParams, validationHmac, shopifyAppApiSecret) => {
|
|
6
|
-
delete validationParams.hmac;
|
|
7
|
-
const hmacString = mapObjectToQueryString(validationParams);
|
|
8
|
-
const generatedHash = createHmac('sha256', shopifyAppApiSecret)
|
|
9
|
-
.update(hmacString)
|
|
10
|
-
.digest('hex');
|
|
11
|
-
return generatedHash === validationHmac;
|
|
12
|
-
};
|
|
13
|
-
export const validateShopifyRequest = (validationParams, validationHmac, shopifyAppApiSecret) => {
|
|
14
|
-
Logger.info('Validating shopify request is authentic', { validationParams });
|
|
15
|
-
const isValid = isShopifyRequestValid(validationParams, validationHmac, shopifyAppApiSecret);
|
|
16
|
-
if (!isValid) {
|
|
17
|
-
const message = 'Failed: Shopify Request hmac validation';
|
|
18
|
-
Logger.error(message);
|
|
19
|
-
throw HttpError.badRequest(message);
|
|
20
|
-
}
|
|
21
|
-
Logger.info('Sucess: Shopify Request hmac validation');
|
|
22
|
-
return true;
|
|
23
|
-
};
|
|
1
|
+
import { createHmac } from 'crypto';
|
|
2
|
+
import { Logger } from './logging-helper.js';
|
|
3
|
+
import { HttpError } from '../libs/http-error.js';
|
|
4
|
+
import { mapObjectToQueryString } from '../libs/url.js';
|
|
5
|
+
export const isShopifyRequestValid = (validationParams, validationHmac, shopifyAppApiSecret) => {
|
|
6
|
+
delete validationParams.hmac;
|
|
7
|
+
const hmacString = mapObjectToQueryString(validationParams);
|
|
8
|
+
const generatedHash = createHmac('sha256', shopifyAppApiSecret)
|
|
9
|
+
.update(hmacString)
|
|
10
|
+
.digest('hex');
|
|
11
|
+
return generatedHash === validationHmac;
|
|
12
|
+
};
|
|
13
|
+
export const validateShopifyRequest = (validationParams, validationHmac, shopifyAppApiSecret) => {
|
|
14
|
+
Logger.info('Validating shopify request is authentic', { validationParams });
|
|
15
|
+
const isValid = isShopifyRequestValid(validationParams, validationHmac, shopifyAppApiSecret);
|
|
16
|
+
if (!isValid) {
|
|
17
|
+
const message = 'Failed: Shopify Request hmac validation';
|
|
18
|
+
Logger.error(message);
|
|
19
|
+
throw HttpError.badRequest(message);
|
|
20
|
+
}
|
|
21
|
+
Logger.info('Sucess: Shopify Request hmac validation');
|
|
22
|
+
return true;
|
|
23
|
+
};
|
|
24
24
|
//# sourceMappingURL=shopify-helper.js.map
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './clients/index.js';
|
|
2
|
-
export * from './helpers/index.js';
|
|
3
|
-
export * from './libs/index.js';
|
|
4
|
-
export * from './types/index.js';
|
|
5
|
-
export * from './services/index.js';
|
|
1
|
+
export * from './clients/index.js';
|
|
2
|
+
export * from './helpers/index.js';
|
|
3
|
+
export * from './libs/index.js';
|
|
4
|
+
export * from './types/index.js';
|
|
5
|
+
export * from './services/index.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './clients/index.js';
|
|
2
|
-
export * from './helpers/index.js';
|
|
3
|
-
export * from './libs/index.js';
|
|
4
|
-
export * from './types/index.js';
|
|
5
|
-
export * from './services/index.js';
|
|
1
|
+
export * from './clients/index.js';
|
|
2
|
+
export * from './helpers/index.js';
|
|
3
|
+
export * from './libs/index.js';
|
|
4
|
+
export * from './types/index.js';
|
|
5
|
+
export * from './services/index.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export declare enum CLICK_NETWORK {
|
|
2
|
-
GOOGLE = "Google",
|
|
3
|
-
FACEBOOK = "Facebook",
|
|
4
|
-
TIKTOK = "TikTok",
|
|
5
|
-
TWITTER = "Twitter",
|
|
6
|
-
SNAPCHAT = "Snapchat",
|
|
7
|
-
TABOOLA = "Taboola",
|
|
8
|
-
OUTBRAIN = "Outbrain",
|
|
9
|
-
MICROSOFT = "Microsoft"
|
|
10
|
-
}
|
|
11
|
-
export declare const ClickIdDictionary: {
|
|
12
|
-
[key: string]: CLICK_NETWORK;
|
|
13
|
-
};
|
|
14
|
-
export interface ParsedClickId {
|
|
15
|
-
mktClickParam?: string;
|
|
16
|
-
mktClickId?: string;
|
|
17
|
-
mkyClickNetwork?: CLICK_NETWORK;
|
|
18
|
-
}
|
|
19
|
-
export declare const parseClickId: (qsp: URLSearchParams) => {
|
|
20
|
-
mktClickParam: string;
|
|
21
|
-
mktClickId: string | null;
|
|
22
|
-
mktClickNetwork: CLICK_NETWORK;
|
|
23
|
-
} | undefined;
|
|
1
|
+
export declare enum CLICK_NETWORK {
|
|
2
|
+
GOOGLE = "Google",
|
|
3
|
+
FACEBOOK = "Facebook",
|
|
4
|
+
TIKTOK = "TikTok",
|
|
5
|
+
TWITTER = "Twitter",
|
|
6
|
+
SNAPCHAT = "Snapchat",
|
|
7
|
+
TABOOLA = "Taboola",
|
|
8
|
+
OUTBRAIN = "Outbrain",
|
|
9
|
+
MICROSOFT = "Microsoft"
|
|
10
|
+
}
|
|
11
|
+
export declare const ClickIdDictionary: {
|
|
12
|
+
[key: string]: CLICK_NETWORK;
|
|
13
|
+
};
|
|
14
|
+
export interface ParsedClickId {
|
|
15
|
+
mktClickParam?: string;
|
|
16
|
+
mktClickId?: string;
|
|
17
|
+
mkyClickNetwork?: CLICK_NETWORK;
|
|
18
|
+
}
|
|
19
|
+
export declare const parseClickId: (qsp: URLSearchParams) => {
|
|
20
|
+
mktClickParam: string;
|
|
21
|
+
mktClickId: string | null;
|
|
22
|
+
mktClickNetwork: CLICK_NETWORK;
|
|
23
|
+
} | undefined;
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import { isEmpty } from '@adtrackify/at-shared-utils';
|
|
2
|
-
import { Logger } from '../helpers';
|
|
3
|
-
export var CLICK_NETWORK;
|
|
4
|
-
(function (CLICK_NETWORK) {
|
|
5
|
-
CLICK_NETWORK["GOOGLE"] = "Google";
|
|
6
|
-
CLICK_NETWORK["FACEBOOK"] = "Facebook";
|
|
7
|
-
CLICK_NETWORK["TIKTOK"] = "TikTok";
|
|
8
|
-
CLICK_NETWORK["TWITTER"] = "Twitter";
|
|
9
|
-
CLICK_NETWORK["SNAPCHAT"] = "Snapchat";
|
|
10
|
-
CLICK_NETWORK["TABOOLA"] = "Taboola";
|
|
11
|
-
CLICK_NETWORK["OUTBRAIN"] = "Outbrain";
|
|
12
|
-
CLICK_NETWORK["MICROSOFT"] = "Microsoft";
|
|
13
|
-
})(CLICK_NETWORK || (CLICK_NETWORK = {}));
|
|
14
|
-
export const ClickIdDictionary = {
|
|
15
|
-
'gclid': CLICK_NETWORK.GOOGLE,
|
|
16
|
-
'dclid': CLICK_NETWORK.GOOGLE,
|
|
17
|
-
'gbraid': CLICK_NETWORK.GOOGLE,
|
|
18
|
-
'wbraid': CLICK_NETWORK.GOOGLE,
|
|
19
|
-
'fbclid': CLICK_NETWORK.FACEBOOK,
|
|
20
|
-
'ttclid': CLICK_NETWORK.TIKTOK,
|
|
21
|
-
'twclid': CLICK_NETWORK.TWITTER,
|
|
22
|
-
'sccid': CLICK_NETWORK.SNAPCHAT,
|
|
23
|
-
'taboola_click_id': CLICK_NETWORK.TABOOLA,
|
|
24
|
-
'ob_click_id': CLICK_NETWORK.OUTBRAIN,
|
|
25
|
-
'microsoftclickid': CLICK_NETWORK.MICROSOFT,
|
|
26
|
-
};
|
|
27
|
-
export const parseClickId = (qsp) => {
|
|
28
|
-
try {
|
|
29
|
-
if (!isEmpty(qsp)) {
|
|
30
|
-
for (const item of Object.entries(ClickIdDictionary)) {
|
|
31
|
-
if (qsp.has(item?.[0])) {
|
|
32
|
-
return {
|
|
33
|
-
mktClickParam: item[0],
|
|
34
|
-
mktClickId: qsp.get(item[0]),
|
|
35
|
-
mktClickNetwork: item[1]
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
Logger.warn('Unable to parse click ID', { error });
|
|
43
|
-
return undefined;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
1
|
+
import { isEmpty } from '@adtrackify/at-shared-utils';
|
|
2
|
+
import { Logger } from '../helpers';
|
|
3
|
+
export var CLICK_NETWORK;
|
|
4
|
+
(function (CLICK_NETWORK) {
|
|
5
|
+
CLICK_NETWORK["GOOGLE"] = "Google";
|
|
6
|
+
CLICK_NETWORK["FACEBOOK"] = "Facebook";
|
|
7
|
+
CLICK_NETWORK["TIKTOK"] = "TikTok";
|
|
8
|
+
CLICK_NETWORK["TWITTER"] = "Twitter";
|
|
9
|
+
CLICK_NETWORK["SNAPCHAT"] = "Snapchat";
|
|
10
|
+
CLICK_NETWORK["TABOOLA"] = "Taboola";
|
|
11
|
+
CLICK_NETWORK["OUTBRAIN"] = "Outbrain";
|
|
12
|
+
CLICK_NETWORK["MICROSOFT"] = "Microsoft";
|
|
13
|
+
})(CLICK_NETWORK || (CLICK_NETWORK = {}));
|
|
14
|
+
export const ClickIdDictionary = {
|
|
15
|
+
'gclid': CLICK_NETWORK.GOOGLE,
|
|
16
|
+
'dclid': CLICK_NETWORK.GOOGLE,
|
|
17
|
+
'gbraid': CLICK_NETWORK.GOOGLE,
|
|
18
|
+
'wbraid': CLICK_NETWORK.GOOGLE,
|
|
19
|
+
'fbclid': CLICK_NETWORK.FACEBOOK,
|
|
20
|
+
'ttclid': CLICK_NETWORK.TIKTOK,
|
|
21
|
+
'twclid': CLICK_NETWORK.TWITTER,
|
|
22
|
+
'sccid': CLICK_NETWORK.SNAPCHAT,
|
|
23
|
+
'taboola_click_id': CLICK_NETWORK.TABOOLA,
|
|
24
|
+
'ob_click_id': CLICK_NETWORK.OUTBRAIN,
|
|
25
|
+
'microsoftclickid': CLICK_NETWORK.MICROSOFT,
|
|
26
|
+
};
|
|
27
|
+
export const parseClickId = (qsp) => {
|
|
28
|
+
try {
|
|
29
|
+
if (!isEmpty(qsp)) {
|
|
30
|
+
for (const item of Object.entries(ClickIdDictionary)) {
|
|
31
|
+
if (qsp.has(item?.[0])) {
|
|
32
|
+
return {
|
|
33
|
+
mktClickParam: item[0],
|
|
34
|
+
mktClickId: qsp.get(item[0]),
|
|
35
|
+
mktClickNetwork: item[1]
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
Logger.warn('Unable to parse click ID', { error });
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
46
|
//# sourceMappingURL=clickId-parser.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const compressJSON: (jsonObject: any) => string | null;
|
|
2
|
-
export declare const decompressJSON: (compressedJSONString: string) => any | null;
|
|
1
|
+
export declare const compressJSON: (jsonObject: any) => string | null;
|
|
2
|
+
export declare const decompressJSON: (compressedJSONString: string) => any | null;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import Pako from 'pako';
|
|
2
|
-
import { Logger } from '../helpers';
|
|
3
|
-
export const compressJSON = (jsonObject) => {
|
|
4
|
-
try {
|
|
5
|
-
const jsonString = JSON.stringify(jsonObject, null, '');
|
|
6
|
-
const deflatedData = Pako.deflate(jsonString, { level: 9 });
|
|
7
|
-
const compressedJSONString = btoa(String.fromCharCode(...deflatedData));
|
|
8
|
-
return compressedJSONString;
|
|
9
|
-
}
|
|
10
|
-
catch (error) {
|
|
11
|
-
Logger.error('Failed to compress json', { error, jsonObject });
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
export const decompressJSON = (compressedJSONString) => {
|
|
16
|
-
try {
|
|
17
|
-
const decodedData = Uint8Array.from(atob(compressedJSONString), c => c.charCodeAt(0));
|
|
18
|
-
const decompressedJSON = Pako.inflate(decodedData, { to: 'string' });
|
|
19
|
-
return JSON.parse(decompressedJSON);
|
|
20
|
-
}
|
|
21
|
-
catch (error) {
|
|
22
|
-
Logger.error('Failed to decompress json', { error, compressedJSONString });
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
};
|
|
1
|
+
import Pako from 'pako';
|
|
2
|
+
import { Logger } from '../helpers';
|
|
3
|
+
export const compressJSON = (jsonObject) => {
|
|
4
|
+
try {
|
|
5
|
+
const jsonString = JSON.stringify(jsonObject, null, '');
|
|
6
|
+
const deflatedData = Pako.deflate(jsonString, { level: 9 });
|
|
7
|
+
const compressedJSONString = btoa(String.fromCharCode(...deflatedData));
|
|
8
|
+
return compressedJSONString;
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
Logger.error('Failed to compress json', { error, jsonObject });
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export const decompressJSON = (compressedJSONString) => {
|
|
16
|
+
try {
|
|
17
|
+
const decodedData = Uint8Array.from(atob(compressedJSONString), c => c.charCodeAt(0));
|
|
18
|
+
const decompressedJSON = Pako.inflate(decodedData, { to: 'string' });
|
|
19
|
+
return JSON.parse(decompressedJSON);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
Logger.error('Failed to decompress json', { error, compressedJSONString });
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
26
|
//# sourceMappingURL=compression.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const generatePublicKey: () => string;
|
|
1
|
+
export declare const generatePublicKey: () => string;
|
package/dist/esm/libs/crypto.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import crypto from 'crypto';
|
|
2
|
-
export const generatePublicKey = () => {
|
|
3
|
-
const publicKey = crypto.randomBytes(26);
|
|
4
|
-
return publicKey.toString('utf8');
|
|
5
|
-
};
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
export const generatePublicKey = () => {
|
|
3
|
+
const publicKey = crypto.randomBytes(26);
|
|
4
|
+
return publicKey.toString('utf8');
|
|
5
|
+
};
|
|
6
6
|
//# sourceMappingURL=crypto.js.map
|
package/dist/esm/libs/dates.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare const getUTCYear: () => number;
|
|
2
|
-
export declare const getUTCMonth: () => number;
|
|
3
|
-
export declare const getUTCDay: () => number;
|
|
4
|
-
export declare const getCurrentTimestamp: () => string;
|
|
5
|
-
export declare const getDateFromTimestamp: (timestamp: string) => string;
|
|
6
|
-
export declare const getCurrentDate: () => string;
|
|
1
|
+
export declare const getUTCYear: () => number;
|
|
2
|
+
export declare const getUTCMonth: () => number;
|
|
3
|
+
export declare const getUTCDay: () => number;
|
|
4
|
+
export declare const getCurrentTimestamp: () => string;
|
|
5
|
+
export declare const getDateFromTimestamp: (timestamp: string) => string;
|
|
6
|
+
export declare const getCurrentDate: () => string;
|
package/dist/esm/libs/dates.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { DateTime } from 'luxon';
|
|
2
|
-
export const getUTCYear = () => {
|
|
3
|
-
const date = new Date();
|
|
4
|
-
return date.getUTCFullYear();
|
|
5
|
-
};
|
|
6
|
-
export const getUTCMonth = () => {
|
|
7
|
-
const date = new Date();
|
|
8
|
-
return date.getUTCMonth() + 1;
|
|
9
|
-
};
|
|
10
|
-
export const getUTCDay = () => {
|
|
11
|
-
const date = new Date();
|
|
12
|
-
return date.getUTCDate();
|
|
13
|
-
};
|
|
14
|
-
export const getCurrentTimestamp = () => {
|
|
15
|
-
return DateTime.utc().toJSDate().toISOString();
|
|
16
|
-
};
|
|
17
|
-
export const getDateFromTimestamp = (timestamp) => {
|
|
18
|
-
return timestamp.split('T')[0];
|
|
19
|
-
};
|
|
20
|
-
export const getCurrentDate = () => {
|
|
21
|
-
return getDateFromTimestamp(getCurrentTimestamp());
|
|
22
|
-
};
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
export const getUTCYear = () => {
|
|
3
|
+
const date = new Date();
|
|
4
|
+
return date.getUTCFullYear();
|
|
5
|
+
};
|
|
6
|
+
export const getUTCMonth = () => {
|
|
7
|
+
const date = new Date();
|
|
8
|
+
return date.getUTCMonth() + 1;
|
|
9
|
+
};
|
|
10
|
+
export const getUTCDay = () => {
|
|
11
|
+
const date = new Date();
|
|
12
|
+
return date.getUTCDate();
|
|
13
|
+
};
|
|
14
|
+
export const getCurrentTimestamp = () => {
|
|
15
|
+
return DateTime.utc().toJSDate().toISOString();
|
|
16
|
+
};
|
|
17
|
+
export const getDateFromTimestamp = (timestamp) => {
|
|
18
|
+
return timestamp.split('T')[0];
|
|
19
|
+
};
|
|
20
|
+
export const getCurrentDate = () => {
|
|
21
|
+
return getDateFromTimestamp(getCurrentTimestamp());
|
|
22
|
+
};
|
|
23
23
|
//# sourceMappingURL=dates.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
export declare class HttpError extends Error {
|
|
2
|
-
body: {
|
|
3
|
-
[key: string]: any;
|
|
4
|
-
};
|
|
5
|
-
headers: object[];
|
|
6
|
-
statusCode: number;
|
|
7
|
-
isServerError: boolean;
|
|
8
|
-
constructor(statusCode: number, message?: string, body?: {
|
|
9
|
-
[key: string]: any;
|
|
10
|
-
}, headers?: object[]);
|
|
11
|
-
static get supportedStatusCodes(): any;
|
|
12
|
-
static badRequest: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
13
|
-
static unauthorized: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
14
|
-
static forbidden: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
15
|
-
static notFound: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
16
|
-
static internal: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
17
|
-
static notImplemented: () => HttpError;
|
|
18
|
-
static badGateway: () => HttpError;
|
|
19
|
-
static serviceUnavailable: (headers: object[]) => HttpError;
|
|
20
|
-
static gatewayTimeout: () => HttpError;
|
|
21
|
-
}
|
|
1
|
+
export declare class HttpError extends Error {
|
|
2
|
+
body: {
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
};
|
|
5
|
+
headers: object[];
|
|
6
|
+
statusCode: number;
|
|
7
|
+
isServerError: boolean;
|
|
8
|
+
constructor(statusCode: number, message?: string, body?: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}, headers?: object[]);
|
|
11
|
+
static get supportedStatusCodes(): any;
|
|
12
|
+
static badRequest: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
13
|
+
static unauthorized: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
14
|
+
static forbidden: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
15
|
+
static notFound: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
16
|
+
static internal: (message?: string, body?: object, headers?: object[]) => HttpError;
|
|
17
|
+
static notImplemented: () => HttpError;
|
|
18
|
+
static badGateway: () => HttpError;
|
|
19
|
+
static serviceUnavailable: (headers: object[]) => HttpError;
|
|
20
|
+
static gatewayTimeout: () => HttpError;
|
|
21
|
+
}
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { strict as assert } from 'assert';
|
|
2
|
-
const deepClone = (o = {}) => JSON.parse(JSON.stringify(o));
|
|
3
|
-
const containsStackTrace = (text = '') => /at.+\.js:\d+:\d+/.test(text);
|
|
4
|
-
const objectContainsStackTrace = (obj) => !obj ? false : containsStackTrace(JSON.stringify(obj));
|
|
5
|
-
const supportedStatusCodes = {
|
|
6
|
-
400: 'Bad Request',
|
|
7
|
-
401: 'Unauthorized',
|
|
8
|
-
403: 'Forbidden',
|
|
9
|
-
404: 'Not Found',
|
|
10
|
-
405: 'Method Not Allowed',
|
|
11
|
-
409: 'Conflict',
|
|
12
|
-
412: 'Precondition Failed',
|
|
13
|
-
413: 'Payload Too Large',
|
|
14
|
-
415: 'Unsupported Media Type',
|
|
15
|
-
428: 'Precondition Required',
|
|
16
|
-
429: 'Too Many Requests',
|
|
17
|
-
500: 'Internal Server Error',
|
|
18
|
-
501: 'Not Implemented',
|
|
19
|
-
502: 'Bad Gateway',
|
|
20
|
-
503: 'Service Unavailable',
|
|
21
|
-
504: 'Gateway Timeout'
|
|
22
|
-
};
|
|
23
|
-
const supportedStatusCodesMessage = `statusCode must be one of the following: ${JSON.stringify(Object.keys(supportedStatusCodes))}`;
|
|
24
|
-
export class HttpError extends Error {
|
|
25
|
-
body;
|
|
26
|
-
headers;
|
|
27
|
-
statusCode;
|
|
28
|
-
isServerError;
|
|
29
|
-
constructor(statusCode, message, body, headers) {
|
|
30
|
-
assert(statusCode in supportedStatusCodes, supportedStatusCodesMessage);
|
|
31
|
-
const isServerError = statusCode > 499;
|
|
32
|
-
assert(body === undefined || typeof body === 'object', 'body must be an object or omitted');
|
|
33
|
-
assert(headers === undefined || typeof headers === 'object', 'headers must be an object or omitted');
|
|
34
|
-
message = message ?? supportedStatusCodes[statusCode];
|
|
35
|
-
assert(!containsStackTrace(message) && !objectContainsStackTrace(body), 'the message or data parameters may not contain errors or stack traces');
|
|
36
|
-
super(message);
|
|
37
|
-
this.body = deepClone(body);
|
|
38
|
-
this.headers = deepClone(headers);
|
|
39
|
-
this.statusCode = statusCode;
|
|
40
|
-
this.isServerError = isServerError;
|
|
41
|
-
if (!this?.body?.message) {
|
|
42
|
-
this.body.message = this.message;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
static get supportedStatusCodes() { return supportedStatusCodes; }
|
|
46
|
-
static badRequest = (message, body, headers) => { return new HttpError(400, message, body, headers); };
|
|
47
|
-
static unauthorized = (message, body, headers) => new HttpError(401, message, body, headers);
|
|
48
|
-
static forbidden = (message, body, headers) => new HttpError(403, message, body, headers);
|
|
49
|
-
static notFound = (message, body, headers) => new HttpError(404, message, body, headers);
|
|
50
|
-
static internal = (message, body, headers) => new HttpError(500, message, body, headers);
|
|
51
|
-
static notImplemented = () => new HttpError(501);
|
|
52
|
-
static badGateway = () => new HttpError(502);
|
|
53
|
-
static serviceUnavailable = (headers) => new HttpError(503, undefined, undefined, headers);
|
|
54
|
-
static gatewayTimeout = () => new HttpError(504);
|
|
55
|
-
}
|
|
1
|
+
import { strict as assert } from 'assert';
|
|
2
|
+
const deepClone = (o = {}) => JSON.parse(JSON.stringify(o));
|
|
3
|
+
const containsStackTrace = (text = '') => /at.+\.js:\d+:\d+/.test(text);
|
|
4
|
+
const objectContainsStackTrace = (obj) => !obj ? false : containsStackTrace(JSON.stringify(obj));
|
|
5
|
+
const supportedStatusCodes = {
|
|
6
|
+
400: 'Bad Request',
|
|
7
|
+
401: 'Unauthorized',
|
|
8
|
+
403: 'Forbidden',
|
|
9
|
+
404: 'Not Found',
|
|
10
|
+
405: 'Method Not Allowed',
|
|
11
|
+
409: 'Conflict',
|
|
12
|
+
412: 'Precondition Failed',
|
|
13
|
+
413: 'Payload Too Large',
|
|
14
|
+
415: 'Unsupported Media Type',
|
|
15
|
+
428: 'Precondition Required',
|
|
16
|
+
429: 'Too Many Requests',
|
|
17
|
+
500: 'Internal Server Error',
|
|
18
|
+
501: 'Not Implemented',
|
|
19
|
+
502: 'Bad Gateway',
|
|
20
|
+
503: 'Service Unavailable',
|
|
21
|
+
504: 'Gateway Timeout'
|
|
22
|
+
};
|
|
23
|
+
const supportedStatusCodesMessage = `statusCode must be one of the following: ${JSON.stringify(Object.keys(supportedStatusCodes))}`;
|
|
24
|
+
export class HttpError extends Error {
|
|
25
|
+
body;
|
|
26
|
+
headers;
|
|
27
|
+
statusCode;
|
|
28
|
+
isServerError;
|
|
29
|
+
constructor(statusCode, message, body, headers) {
|
|
30
|
+
assert(statusCode in supportedStatusCodes, supportedStatusCodesMessage);
|
|
31
|
+
const isServerError = statusCode > 499;
|
|
32
|
+
assert(body === undefined || typeof body === 'object', 'body must be an object or omitted');
|
|
33
|
+
assert(headers === undefined || typeof headers === 'object', 'headers must be an object or omitted');
|
|
34
|
+
message = message ?? supportedStatusCodes[statusCode];
|
|
35
|
+
assert(!containsStackTrace(message) && !objectContainsStackTrace(body), 'the message or data parameters may not contain errors or stack traces');
|
|
36
|
+
super(message);
|
|
37
|
+
this.body = deepClone(body);
|
|
38
|
+
this.headers = deepClone(headers);
|
|
39
|
+
this.statusCode = statusCode;
|
|
40
|
+
this.isServerError = isServerError;
|
|
41
|
+
if (!this?.body?.message) {
|
|
42
|
+
this.body.message = this.message;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
static get supportedStatusCodes() { return supportedStatusCodes; }
|
|
46
|
+
static badRequest = (message, body, headers) => { return new HttpError(400, message, body, headers); };
|
|
47
|
+
static unauthorized = (message, body, headers) => new HttpError(401, message, body, headers);
|
|
48
|
+
static forbidden = (message, body, headers) => new HttpError(403, message, body, headers);
|
|
49
|
+
static notFound = (message, body, headers) => new HttpError(404, message, body, headers);
|
|
50
|
+
static internal = (message, body, headers) => new HttpError(500, message, body, headers);
|
|
51
|
+
static notImplemented = () => new HttpError(501);
|
|
52
|
+
static badGateway = () => new HttpError(502);
|
|
53
|
+
static serviceUnavailable = (headers) => new HttpError(503, undefined, undefined, headers);
|
|
54
|
+
static gatewayTimeout = () => new HttpError(504);
|
|
55
|
+
}
|
|
56
56
|
//# sourceMappingURL=http-error.js.map
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
export declare enum HttpStatusCodes {
|
|
2
|
-
CONTINUE = 100,
|
|
3
|
-
SWITCHING_PROTOCOLS = 101,
|
|
4
|
-
PROCESSING = 102,
|
|
5
|
-
OK = 200,
|
|
6
|
-
CREATED = 201,
|
|
7
|
-
ACCEPTED = 202,
|
|
8
|
-
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
9
|
-
NO_CONTENT = 204,
|
|
10
|
-
RESET_CONTENT = 205,
|
|
11
|
-
PARTIAL_CONTENT = 206,
|
|
12
|
-
MULTI_STATUS = 207,
|
|
13
|
-
MULTIPLE_CHOICES = 300,
|
|
14
|
-
MOVED_PERMANENTLY = 301,
|
|
15
|
-
MOVED_TEMPORARILY = 302,
|
|
16
|
-
SEE_OTHER = 303,
|
|
17
|
-
NOT_MODIFIED = 304,
|
|
18
|
-
USE_PROXY = 305,
|
|
19
|
-
TEMPORARY_REDIRECT = 307,
|
|
20
|
-
PERMANENT_REDIRECT = 308,
|
|
21
|
-
BAD_REQUEST = 400,
|
|
22
|
-
UNAUTHORIZED = 401,
|
|
23
|
-
PAYMENT_REQUIRED = 402,
|
|
24
|
-
FORBIDDEN = 403,
|
|
25
|
-
NOT_FOUND = 404,
|
|
26
|
-
METHOD_NOT_ALLOWED = 405,
|
|
27
|
-
NOT_ACCEPTABLE = 406,
|
|
28
|
-
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
29
|
-
REQUEST_TIMEOUT = 408,
|
|
30
|
-
CONFLICT = 409,
|
|
31
|
-
GONE = 410,
|
|
32
|
-
LENGTH_REQUIRED = 411,
|
|
33
|
-
PRECONDITION_FAILED = 412,
|
|
34
|
-
REQUEST_TOO_LONG = 413,
|
|
35
|
-
REQUEST_URI_TOO_LONG = 414,
|
|
36
|
-
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
37
|
-
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
|
|
38
|
-
EXPECTATION_FAILED = 417,
|
|
39
|
-
IM_A_TEAPOT = 418,
|
|
40
|
-
INSUFFICIENT_SPACE_ON_RESOURCE = 419,
|
|
41
|
-
METHOD_FAILURE = 420,
|
|
42
|
-
MISDIRECTED_REQUEST = 421,
|
|
43
|
-
UNPROCESSABLE_ENTITY = 422,
|
|
44
|
-
LOCKED = 423,
|
|
45
|
-
FAILED_DEPENDENCY = 424,
|
|
46
|
-
PRECONDITION_REQUIRED = 428,
|
|
47
|
-
TOO_MANY_REQUESTS = 429,
|
|
48
|
-
REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
|
|
49
|
-
UNAVAILABLE_FOR_LEGAL_REASONS = 451,
|
|
50
|
-
INTERNAL_SERVER_ERROR = 500,
|
|
51
|
-
NOT_IMPLEMENTED = 501,
|
|
52
|
-
BAD_GATEWAY = 502,
|
|
53
|
-
SERVICE_UNAVAILABLE = 503,
|
|
54
|
-
GATEWAY_TIMEOUT = 504,
|
|
55
|
-
HTTP_VERSION_NOT_SUPPORTED = 505,
|
|
56
|
-
INSUFFICIENT_STORAGE = 507,
|
|
57
|
-
NETWORK_AUTHENTICATION_REQUIRED = 511
|
|
58
|
-
}
|
|
1
|
+
export declare enum HttpStatusCodes {
|
|
2
|
+
CONTINUE = 100,
|
|
3
|
+
SWITCHING_PROTOCOLS = 101,
|
|
4
|
+
PROCESSING = 102,
|
|
5
|
+
OK = 200,
|
|
6
|
+
CREATED = 201,
|
|
7
|
+
ACCEPTED = 202,
|
|
8
|
+
NON_AUTHORITATIVE_INFORMATION = 203,
|
|
9
|
+
NO_CONTENT = 204,
|
|
10
|
+
RESET_CONTENT = 205,
|
|
11
|
+
PARTIAL_CONTENT = 206,
|
|
12
|
+
MULTI_STATUS = 207,
|
|
13
|
+
MULTIPLE_CHOICES = 300,
|
|
14
|
+
MOVED_PERMANENTLY = 301,
|
|
15
|
+
MOVED_TEMPORARILY = 302,
|
|
16
|
+
SEE_OTHER = 303,
|
|
17
|
+
NOT_MODIFIED = 304,
|
|
18
|
+
USE_PROXY = 305,
|
|
19
|
+
TEMPORARY_REDIRECT = 307,
|
|
20
|
+
PERMANENT_REDIRECT = 308,
|
|
21
|
+
BAD_REQUEST = 400,
|
|
22
|
+
UNAUTHORIZED = 401,
|
|
23
|
+
PAYMENT_REQUIRED = 402,
|
|
24
|
+
FORBIDDEN = 403,
|
|
25
|
+
NOT_FOUND = 404,
|
|
26
|
+
METHOD_NOT_ALLOWED = 405,
|
|
27
|
+
NOT_ACCEPTABLE = 406,
|
|
28
|
+
PROXY_AUTHENTICATION_REQUIRED = 407,
|
|
29
|
+
REQUEST_TIMEOUT = 408,
|
|
30
|
+
CONFLICT = 409,
|
|
31
|
+
GONE = 410,
|
|
32
|
+
LENGTH_REQUIRED = 411,
|
|
33
|
+
PRECONDITION_FAILED = 412,
|
|
34
|
+
REQUEST_TOO_LONG = 413,
|
|
35
|
+
REQUEST_URI_TOO_LONG = 414,
|
|
36
|
+
UNSUPPORTED_MEDIA_TYPE = 415,
|
|
37
|
+
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
|
|
38
|
+
EXPECTATION_FAILED = 417,
|
|
39
|
+
IM_A_TEAPOT = 418,
|
|
40
|
+
INSUFFICIENT_SPACE_ON_RESOURCE = 419,
|
|
41
|
+
METHOD_FAILURE = 420,
|
|
42
|
+
MISDIRECTED_REQUEST = 421,
|
|
43
|
+
UNPROCESSABLE_ENTITY = 422,
|
|
44
|
+
LOCKED = 423,
|
|
45
|
+
FAILED_DEPENDENCY = 424,
|
|
46
|
+
PRECONDITION_REQUIRED = 428,
|
|
47
|
+
TOO_MANY_REQUESTS = 429,
|
|
48
|
+
REQUEST_HEADER_FIELDS_TOO_LARGE = 431,
|
|
49
|
+
UNAVAILABLE_FOR_LEGAL_REASONS = 451,
|
|
50
|
+
INTERNAL_SERVER_ERROR = 500,
|
|
51
|
+
NOT_IMPLEMENTED = 501,
|
|
52
|
+
BAD_GATEWAY = 502,
|
|
53
|
+
SERVICE_UNAVAILABLE = 503,
|
|
54
|
+
GATEWAY_TIMEOUT = 504,
|
|
55
|
+
HTTP_VERSION_NOT_SUPPORTED = 505,
|
|
56
|
+
INSUFFICIENT_STORAGE = 507,
|
|
57
|
+
NETWORK_AUTHENTICATION_REQUIRED = 511
|
|
58
|
+
}
|