@aws-amplify/core 6.0.1-api-v6-models.9351bcf.0 → 6.0.1-api-v6-models.891fe0d.0
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/lib/BackgroundProcessManager/BackgroundManagerNotOpenError.js +4 -21
- package/lib/BackgroundProcessManager/BackgroundProcessManager.js +126 -245
- package/lib/Cache/StorageCache.js +32 -92
- package/lib/Cache/StorageCache.native.js +38 -140
- package/lib/Cache/StorageCacheCommon.js +271 -600
- package/lib/Cache/index.js +1 -1
- package/lib/Cache/utils/CacheList.js +42 -66
- package/lib/Cache/utils/cacheHelpers.js +6 -8
- package/lib/Cache/utils/errorHelpers.js +6 -7
- package/lib/Hub/index.js +34 -74
- package/lib/I18n/I18n.js +24 -39
- package/lib/I18n/errorHelpers.js +4 -5
- package/lib/I18n/index.js +24 -27
- package/lib/I18n/types.js +3 -4
- package/lib/Logger/ConsoleLogger.js +53 -129
- package/lib/Mutex/Mutex.js +15 -19
- package/lib/Platform/customUserAgent.js +13 -26
- package/lib/Platform/detectFramework.js +12 -13
- package/lib/Platform/detection/Angular.js +4 -5
- package/lib/Platform/detection/Expo.js +1 -1
- package/lib/Platform/detection/Next.js +1 -1
- package/lib/Platform/detection/Nuxt.js +1 -1
- package/lib/Platform/detection/React.js +5 -5
- package/lib/Platform/detection/Svelte.js +2 -2
- package/lib/Platform/detection/Vue.js +1 -1
- package/lib/Platform/detection/Web.js +1 -1
- package/lib/Platform/detection/helpers.js +7 -7
- package/lib/Platform/detection/index.js +13 -13
- package/lib/Platform/index.js +26 -55
- package/lib/Platform/types.d.ts +1 -1
- package/lib/Platform/types.js +1 -1
- package/lib/Platform/version.d.ts +1 -1
- package/lib/Platform/version.js +1 -1
- package/lib/Reachability/Reachability.js +20 -48
- package/lib/Reachability/Reachability.native.js +12 -16
- package/lib/ServiceWorker/ServiceWorker.js +80 -136
- package/lib/ServiceWorker/errorHelpers.js +6 -7
- package/lib/Signer/DateUtils.d.ts +9 -0
- package/lib/Signer/DateUtils.js +19 -28
- package/lib/Signer/Signer.d.ts +9 -0
- package/lib/Signer/Signer.js +58 -54
- package/lib/adapterCore/error/AmplifyServerContextError.js +9 -27
- package/lib/adapterCore/serverContext/serverContext.js +8 -8
- package/lib/adapterCore/serverContext/serverContextRegistry.js +6 -6
- package/lib/awsClients/cognitoIdentity/base.js +25 -73
- package/lib/awsClients/cognitoIdentity/getCredentialsForIdentity.js +24 -68
- package/lib/awsClients/cognitoIdentity/getId.js +19 -62
- package/lib/awsClients/pinpoint/base.js +12 -15
- package/lib/awsClients/pinpoint/errorHelpers.js +4 -5
- package/lib/awsClients/pinpoint/getInAppMessages.js +24 -68
- package/lib/awsClients/pinpoint/putEvents.js +26 -70
- package/lib/awsClients/pinpoint/updateEndpoint.js +28 -72
- package/lib/clients/endpoints/getDnsSuffix.js +7 -29
- package/lib/clients/handlers/authenticated.js +5 -5
- package/lib/clients/handlers/fetch.js +41 -98
- package/lib/clients/handlers/unauthenticated.js +4 -4
- package/lib/clients/internal/composeServiceApi.js +17 -67
- package/lib/clients/internal/composeTransferHandler.js +9 -11
- package/lib/clients/middleware/retry/defaultRetryDecider.js +18 -75
- package/lib/clients/middleware/retry/isClockSkewError.js +2 -4
- package/lib/clients/middleware/retry/jitteredBackoff.js +5 -5
- package/lib/clients/middleware/retry/middleware.js +61 -125
- package/lib/clients/middleware/signing/middleware.js +24 -86
- package/lib/clients/middleware/signing/signer/signatureV4/index.js +0 -1
- package/lib/clients/middleware/signing/signer/signatureV4/presignUrl.js +21 -56
- package/lib/clients/middleware/signing/signer/signatureV4/signRequest.js +14 -25
- package/lib/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js +7 -7
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js +8 -30
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js +11 -38
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js +13 -17
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js +5 -8
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js +2 -2
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js +3 -3
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js +7 -11
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignature.js +9 -10
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js +4 -6
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js +8 -8
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js +15 -16
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js +2 -4
- package/lib/clients/middleware/signing/utils/extendedEncodeURIComponent.js +3 -5
- package/lib/clients/middleware/signing/utils/getSkewCorrectedDate.js +1 -3
- package/lib/clients/middleware/signing/utils/getUpdatedSystemClockOffset.js +2 -2
- package/lib/clients/middleware/signing/utils/isClockSkewed.js +4 -6
- package/lib/clients/middleware/userAgent/middleware.js +14 -63
- package/lib/clients/serde/json.js +30 -96
- package/lib/clients/serde/responseInfo.js +12 -18
- package/lib/clients/utils/memoization.js +3 -3
- package/lib/constants.js +1 -1
- package/lib/errors/AmplifyError.js +9 -28
- package/lib/errors/PlatformNotSupportedError.js +7 -24
- package/lib/errors/createAssertionFunction.js +12 -15
- package/lib/errors/errorHelpers.js +7 -8
- package/lib/index.d.ts +1 -1
- package/lib/libraryUtils.d.ts +4 -0
- package/lib/libraryUtils.js +13 -3
- package/lib/parseAWSExports.js +109 -100
- package/lib/providers/kinesis/types/kinesis.d.ts +1 -1
- package/lib/providers/kinesis-firehose/types/kinesis-firehose.d.ts +1 -1
- package/lib/providers/personalize/types/personalize.d.ts +1 -1
- package/lib/providers/pinpoint/apis/flushEvents.js +8 -8
- package/lib/providers/pinpoint/apis/record.js +58 -93
- package/lib/providers/pinpoint/apis/updateEndpoint.js +65 -112
- package/lib/providers/pinpoint/types/pinpoint.d.ts +3 -1
- package/lib/providers/pinpoint/utils/PinpointEventBuffer.js +105 -196
- package/lib/providers/pinpoint/utils/cacheEndpointId.js +12 -49
- package/lib/providers/pinpoint/utils/getCacheKey.js +2 -2
- package/lib/providers/pinpoint/utils/getEndpointId.js +7 -51
- package/lib/providers/pinpoint/utils/getEventBuffer.js +19 -21
- package/lib/providers/pinpoint/utils/isAppInForeground.js +1 -1
- package/lib/providers/pinpoint/utils/isAppInForeground.native.js +2 -2
- package/lib/providers/pinpoint/utils/resolveEndpointId.js +20 -71
- package/lib/singleton/Amplify.d.ts +4 -0
- package/lib/singleton/Amplify.js +21 -103
- package/lib/singleton/Analytics/types.d.ts +5 -1
- package/lib/singleton/Auth/index.js +48 -115
- package/lib/singleton/Auth/types.d.ts +2 -2
- package/lib/singleton/Auth/utils/errorHelpers.js +7 -8
- package/lib/singleton/Auth/utils/index.js +18 -19
- package/lib/singleton/Predictions/types.d.ts +49 -0
- package/lib/singleton/Predictions/types.js +4 -0
- package/lib/singleton/apis/clearCredentials.js +1 -1
- package/lib/singleton/apis/fetchAuthSession.js +3 -3
- package/lib/singleton/apis/internal/fetchAuthSession.js +1 -1
- package/lib/singleton/apis/server/fetchAuthSession.js +3 -3
- package/lib/singleton/types.d.ts +3 -1
- package/lib/storage/CookieStorage.js +29 -99
- package/lib/storage/CookieStorage.native.js +5 -22
- package/lib/storage/DefaultStorage.js +6 -23
- package/lib/storage/DefaultStorage.native.js +18 -64
- package/lib/storage/InMemoryStorage.js +17 -23
- package/lib/storage/KeyValueStorage.js +24 -80
- package/lib/storage/SessionStorage.js +6 -23
- package/lib/storage/index.js +4 -4
- package/lib/storage/utils.js +7 -11
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/WordArray.d.ts +7 -0
- package/lib/utils/WordArray.js +49 -0
- package/lib/utils/amplifyUrl/index.js +2 -2
- package/lib/utils/amplifyUrl/polyfill.native.js +1 -1
- package/lib/utils/amplifyUuid/index.d.ts +1 -1
- package/lib/utils/amplifyUuid/index.js +2 -2
- package/lib/utils/amplifyUuid/polyfill.native.js +1 -1
- package/lib/utils/convert/base64/base64Decoder.js +2 -2
- package/lib/utils/convert/base64/base64Encoder.js +5 -6
- package/lib/utils/convert/base64/bytesToString.js +1 -1
- package/lib/utils/cryptoSecureRandomInt.d.ts +1 -0
- package/lib/utils/cryptoSecureRandomInt.js +16 -0
- package/lib/utils/deepFreeze.js +6 -28
- package/lib/utils/generateRandomString.js +4 -4
- package/lib/utils/getClientInfo/getClientInfo.android.js +7 -7
- package/lib/utils/getClientInfo/getClientInfo.ios.js +12 -12
- package/lib/utils/getClientInfo/getClientInfo.js +16 -16
- package/lib/utils/globalHelpers/index.js +4 -4
- package/lib/utils/globalHelpers/index.native.js +6 -6
- package/lib/utils/isBrowser.js +1 -3
- package/lib/utils/isWebWorker.js +2 -2
- package/lib/utils/retry/NonRetryableError.js +5 -23
- package/lib/utils/retry/isNonRetryableError.js +2 -2
- package/lib/utils/retry/jitteredBackoff.js +6 -7
- package/lib/utils/retry/jitteredExponentialRetry.js +4 -7
- package/lib/utils/retry/retry.js +50 -140
- package/lib/utils/sessionListener/SessionListener.js +17 -19
- package/lib/utils/sessionListener/SessionListener.native.js +18 -22
- package/lib/utils/sessionListener/constants.d.ts +2 -0
- package/lib/utils/sessionListener/constants.js +8 -0
- package/lib/utils/sessionListener/index.d.ts +1 -0
- package/lib/utils/sessionListener/index.js +5 -2
- package/lib/utils/urlSafeDecode.js +2 -2
- package/lib/utils/urlSafeEncode.js +1 -1
- package/lib-esm/BackgroundProcessManager/BackgroundManagerNotOpenError.js +4 -22
- package/lib-esm/BackgroundProcessManager/BackgroundProcessManager.js +124 -244
- package/lib-esm/Cache/StorageCache.js +26 -87
- package/lib-esm/Cache/StorageCache.native.js +33 -136
- package/lib-esm/Cache/StorageCacheCommon.js +267 -597
- package/lib-esm/Cache/constants.js +2 -2
- package/lib-esm/Cache/index.js +1 -1
- package/lib-esm/Cache/utils/CacheList.js +41 -66
- package/lib-esm/Cache/utils/cacheHelpers.js +5 -7
- package/lib-esm/Cache/utils/errorHelpers.js +6 -7
- package/lib-esm/Hub/index.js +34 -75
- package/lib-esm/I18n/I18n.js +23 -39
- package/lib-esm/I18n/errorHelpers.js +4 -5
- package/lib-esm/I18n/index.js +21 -25
- package/lib-esm/I18n/types.js +3 -5
- package/lib-esm/Logger/ConsoleLogger.js +52 -128
- package/lib-esm/Mutex/Mutex.js +15 -20
- package/lib-esm/Platform/customUserAgent.js +13 -26
- package/lib-esm/Platform/detectFramework.js +11 -12
- package/lib-esm/Platform/detection/Angular.js +3 -4
- package/lib-esm/Platform/detection/React.js +4 -4
- package/lib-esm/Platform/detection/Svelte.js +1 -1
- package/lib-esm/Platform/detection/helpers.js +7 -7
- package/lib-esm/Platform/detection/index.js +3 -3
- package/lib-esm/Platform/index.js +23 -52
- package/lib-esm/Platform/types.d.ts +1 -1
- package/lib-esm/Platform/types.js +1 -1
- package/lib-esm/Platform/version.d.ts +1 -1
- package/lib-esm/Platform/version.js +1 -1
- package/lib-esm/Reachability/Reachability.js +18 -46
- package/lib-esm/Reachability/Reachability.native.js +10 -15
- package/lib-esm/ServiceWorker/ServiceWorker.js +74 -131
- package/lib-esm/ServiceWorker/errorHelpers.js +6 -7
- package/lib-esm/Signer/DateUtils.d.ts +9 -0
- package/lib-esm/Signer/DateUtils.js +20 -29
- package/lib-esm/Signer/Signer.d.ts +9 -0
- package/lib-esm/Signer/Signer.js +54 -51
- package/lib-esm/adapterCore/error/AmplifyServerContextError.js +8 -27
- package/lib-esm/adapterCore/serverContext/serverContext.js +6 -6
- package/lib-esm/adapterCore/serverContext/serverContextRegistry.js +7 -7
- package/lib-esm/awsClients/cognitoIdentity/base.js +21 -69
- package/lib-esm/awsClients/cognitoIdentity/getCredentialsForIdentity.js +22 -66
- package/lib-esm/awsClients/cognitoIdentity/getId.js +17 -60
- package/lib-esm/awsClients/pinpoint/base.js +8 -11
- package/lib-esm/awsClients/pinpoint/errorHelpers.js +4 -5
- package/lib-esm/awsClients/pinpoint/getInAppMessages.js +19 -63
- package/lib-esm/awsClients/pinpoint/putEvents.js +20 -64
- package/lib-esm/awsClients/pinpoint/updateEndpoint.js +23 -67
- package/lib-esm/clients/endpoints/getDnsSuffix.js +6 -28
- package/lib-esm/clients/endpoints/partitions.js +2 -2
- package/lib-esm/clients/handlers/authenticated.js +1 -1
- package/lib-esm/clients/handlers/fetch.js +40 -97
- package/lib-esm/clients/handlers/unauthenticated.js +1 -1
- package/lib-esm/clients/internal/composeServiceApi.js +17 -67
- package/lib-esm/clients/internal/composeTransferHandler.js +9 -11
- package/lib-esm/clients/middleware/retry/defaultRetryDecider.js +17 -74
- package/lib-esm/clients/middleware/retry/isClockSkewError.js +2 -4
- package/lib-esm/clients/middleware/retry/jitteredBackoff.js +4 -4
- package/lib-esm/clients/middleware/retry/middleware.js +61 -125
- package/lib-esm/clients/middleware/signing/middleware.js +21 -83
- package/lib-esm/clients/middleware/signing/signer/signatureV4/constants.js +17 -17
- package/lib-esm/clients/middleware/signing/signer/signatureV4/index.js +0 -1
- package/lib-esm/clients/middleware/signing/signer/signatureV4/presignUrl.js +17 -52
- package/lib-esm/clients/middleware/signing/signer/signatureV4/signRequest.js +10 -21
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js +5 -5
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js +8 -30
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js +11 -38
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js +8 -12
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js +5 -8
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js +1 -1
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js +3 -3
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js +5 -9
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignature.js +5 -6
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js +4 -6
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js +6 -6
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js +13 -14
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js +1 -3
- package/lib-esm/clients/middleware/signing/utils/extendedEncodeURIComponent.js +3 -5
- package/lib-esm/clients/middleware/signing/utils/getSkewCorrectedDate.js +1 -3
- package/lib-esm/clients/middleware/signing/utils/getUpdatedSystemClockOffset.js +1 -1
- package/lib-esm/clients/middleware/signing/utils/isClockSkewed.js +3 -5
- package/lib-esm/clients/middleware/userAgent/middleware.js +14 -63
- package/lib-esm/clients/serde/json.js +29 -95
- package/lib-esm/clients/serde/responseInfo.js +11 -17
- package/lib-esm/clients/utils/memoization.js +3 -3
- package/lib-esm/constants.js +5 -5
- package/lib-esm/errors/AmplifyError.js +9 -29
- package/lib-esm/errors/PlatformNotSupportedError.js +5 -23
- package/lib-esm/errors/createAssertionFunction.js +11 -14
- package/lib-esm/errors/errorHelpers.js +6 -7
- package/lib-esm/index.d.ts +1 -1
- package/lib-esm/libraryUtils.d.ts +4 -0
- package/lib-esm/libraryUtils.js +4 -0
- package/lib-esm/parseAWSExports.js +108 -99
- package/lib-esm/providers/kinesis/types/kinesis.d.ts +1 -1
- package/lib-esm/providers/kinesis-firehose/types/kinesis-firehose.d.ts +1 -1
- package/lib-esm/providers/personalize/types/personalize.d.ts +1 -1
- package/lib-esm/providers/pinpoint/apis/flushEvents.js +6 -6
- package/lib-esm/providers/pinpoint/apis/record.js +54 -89
- package/lib-esm/providers/pinpoint/apis/updateEndpoint.js +61 -108
- package/lib-esm/providers/pinpoint/types/pinpoint.d.ts +3 -1
- package/lib-esm/providers/pinpoint/utils/PinpointEventBuffer.js +102 -194
- package/lib-esm/providers/pinpoint/utils/cacheEndpointId.js +10 -47
- package/lib-esm/providers/pinpoint/utils/constants.js +4 -4
- package/lib-esm/providers/pinpoint/utils/getCacheKey.js +2 -2
- package/lib-esm/providers/pinpoint/utils/getEndpointId.js +5 -49
- package/lib-esm/providers/pinpoint/utils/getEventBuffer.js +17 -19
- package/lib-esm/providers/pinpoint/utils/isAppInForeground.js +1 -1
- package/lib-esm/providers/pinpoint/utils/isAppInForeground.native.js +1 -1
- package/lib-esm/providers/pinpoint/utils/resolveEndpointId.js +16 -67
- package/lib-esm/singleton/Amplify.d.ts +4 -0
- package/lib-esm/singleton/Amplify.js +18 -101
- package/lib-esm/singleton/Analytics/types.d.ts +5 -1
- package/lib-esm/singleton/Auth/index.js +48 -116
- package/lib-esm/singleton/Auth/types.d.ts +2 -2
- package/lib-esm/singleton/Auth/utils/errorHelpers.js +7 -8
- package/lib-esm/singleton/Auth/utils/index.js +16 -17
- package/lib-esm/singleton/Predictions/types.d.ts +49 -0
- package/lib-esm/singleton/Predictions/types.js +3 -0
- package/lib-esm/singleton/apis/fetchAuthSession.js +1 -1
- package/lib-esm/singleton/apis/internal/fetchAuthSession.js +1 -1
- package/lib-esm/singleton/apis/server/fetchAuthSession.js +1 -1
- package/lib-esm/singleton/types.d.ts +3 -1
- package/lib-esm/storage/CookieStorage.js +28 -99
- package/lib-esm/storage/CookieStorage.native.js +4 -22
- package/lib-esm/storage/DefaultStorage.js +4 -22
- package/lib-esm/storage/DefaultStorage.native.js +17 -64
- package/lib-esm/storage/InMemoryStorage.js +17 -24
- package/lib-esm/storage/KeyValueStorage.js +23 -80
- package/lib-esm/storage/SessionStorage.js +4 -22
- package/lib-esm/storage/index.js +3 -3
- package/lib-esm/storage/utils.js +6 -10
- package/lib-esm/tsconfig.tsbuildinfo +1 -1
- package/lib-esm/utils/WordArray.d.ts +7 -0
- package/lib-esm/utils/WordArray.js +46 -0
- package/lib-esm/utils/amplifyUrl/index.js +2 -2
- package/lib-esm/utils/amplifyUuid/index.d.ts +1 -1
- package/lib-esm/utils/amplifyUuid/index.js +1 -1
- package/lib-esm/utils/convert/base64/base64Decoder.js +2 -2
- package/lib-esm/utils/convert/base64/base64Encoder.js +4 -5
- package/lib-esm/utils/convert/base64/bytesToString.js +1 -1
- package/lib-esm/utils/cryptoSecureRandomInt.d.ts +1 -0
- package/lib-esm/utils/cryptoSecureRandomInt.js +12 -0
- package/lib-esm/utils/deepFreeze.js +6 -28
- package/lib-esm/utils/generateRandomString.js +4 -4
- package/lib-esm/utils/getClientInfo/getClientInfo.android.js +5 -5
- package/lib-esm/utils/getClientInfo/getClientInfo.ios.js +10 -10
- package/lib-esm/utils/getClientInfo/getClientInfo.js +15 -15
- package/lib-esm/utils/globalHelpers/index.js +3 -3
- package/lib-esm/utils/globalHelpers/index.native.js +4 -4
- package/lib-esm/utils/isBrowser.js +1 -3
- package/lib-esm/utils/isWebWorker.js +2 -2
- package/lib-esm/utils/retry/NonRetryableError.js +5 -24
- package/lib-esm/utils/retry/constants.js +1 -1
- package/lib-esm/utils/retry/isNonRetryableError.js +2 -2
- package/lib-esm/utils/retry/jitteredBackoff.js +5 -6
- package/lib-esm/utils/retry/jitteredExponentialRetry.js +1 -4
- package/lib-esm/utils/retry/retry.js +48 -138
- package/lib-esm/utils/sessionListener/SessionListener.js +16 -19
- package/lib-esm/utils/sessionListener/SessionListener.native.js +17 -22
- package/lib-esm/utils/sessionListener/constants.d.ts +2 -0
- package/lib-esm/utils/sessionListener/constants.js +5 -0
- package/lib-esm/utils/sessionListener/index.d.ts +1 -0
- package/lib-esm/utils/sessionListener/index.js +2 -1
- package/lib-esm/utils/urlSafeDecode.js +2 -2
- package/lib-esm/utils/urlSafeEncode.js +1 -1
- package/package.json +11 -24
- package/src/Cache/types/index.ts +4 -4
- package/src/Platform/types.ts +1 -1
- package/src/Platform/version.ts +1 -1
- package/src/Signer/DateUtils.ts +10 -2
- package/src/Signer/Signer.ts +9 -2
- package/src/clients/middleware/signing/signer/signatureV4/index.ts +0 -1
- package/src/index.ts +1 -0
- package/src/libraryUtils.ts +7 -1
- package/src/parseAWSExports.ts +45 -6
- package/src/providers/kinesis/types/kinesis.ts +1 -1
- package/src/providers/kinesis-firehose/types/kinesis-firehose.ts +1 -1
- package/src/providers/personalize/types/personalize.ts +1 -1
- package/src/providers/pinpoint/apis/record.ts +22 -5
- package/src/providers/pinpoint/types/pinpoint.ts +3 -1
- package/src/singleton/Amplify.ts +9 -52
- package/src/singleton/Analytics/types.ts +9 -4
- package/src/singleton/Auth/types.ts +2 -2
- package/src/singleton/Predictions/types.ts +61 -0
- package/src/singleton/types.ts +3 -1
- package/src/utils/WordArray.ts +57 -0
- package/src/utils/amplifyUuid/index.ts +1 -1
- package/src/utils/cryptoSecureRandomInt.ts +14 -0
- package/src/utils/sessionListener/constants.ts +6 -0
- package/src/utils/sessionListener/index.ts +1 -0
|
@@ -1,50 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
-
});
|
|
12
|
-
};
|
|
13
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
14
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
15
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
16
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
17
|
-
function step(op) {
|
|
18
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
19
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
20
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
21
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
22
|
-
switch (op[0]) {
|
|
23
|
-
case 0: case 1: t = op; break;
|
|
24
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
25
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
26
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
27
|
-
default:
|
|
28
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
29
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
30
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
31
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
32
|
-
if (t[2]) _.ops.pop();
|
|
33
|
-
_.trys.pop(); continue;
|
|
34
|
-
}
|
|
35
|
-
op = body.call(thisArg, _);
|
|
36
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
37
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
5
|
exports.ServiceWorkerClass = void 0;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
6
|
+
const Logger_1 = require("../Logger");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const errors_1 = require("../errors");
|
|
9
|
+
const errorHelpers_1 = require("./errorHelpers");
|
|
10
|
+
const pinpoint_1 = require("../providers/pinpoint");
|
|
11
|
+
const singleton_1 = require("../singleton");
|
|
48
12
|
/**
|
|
49
13
|
* Provides a means to registering a service worker in the browser
|
|
50
14
|
* and communicating with it via postMessage events.
|
|
@@ -57,22 +21,18 @@ var singleton_1 = require("../singleton");
|
|
|
57
21
|
* and attempt to dispatch messages on state change and record analytics
|
|
58
22
|
* events based on the service worker lifecycle.
|
|
59
23
|
*/
|
|
60
|
-
|
|
61
|
-
|
|
24
|
+
class ServiceWorkerClass {
|
|
25
|
+
constructor() {
|
|
62
26
|
// The AWS Amplify logger
|
|
63
27
|
this._logger = new Logger_1.ConsoleLogger('ServiceWorker');
|
|
64
28
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
},
|
|
73
|
-
enumerable: false,
|
|
74
|
-
configurable: true
|
|
75
|
-
});
|
|
29
|
+
/**
|
|
30
|
+
* Get the currently active service worker
|
|
31
|
+
*/
|
|
32
|
+
get serviceWorker() {
|
|
33
|
+
(0, errorHelpers_1.assert)(this._serviceWorker !== undefined, errorHelpers_1.ServiceWorkerErrorCode.UndefinedInstance);
|
|
34
|
+
return this._serviceWorker;
|
|
35
|
+
}
|
|
76
36
|
/**
|
|
77
37
|
* Register the service-worker.js file in the browser
|
|
78
38
|
* Make sure the service-worker.js is part of the build
|
|
@@ -85,35 +45,32 @@ var ServiceWorkerClass = /** @class */ (function () {
|
|
|
85
45
|
* - resolve(ServiceWorkerRegistration)
|
|
86
46
|
* - reject(Error)
|
|
87
47
|
**/
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
this._logger.debug("registering ".concat(filePath));
|
|
93
|
-
this._logger.debug("registering service worker with scope ".concat(scope));
|
|
94
|
-
return new Promise(function (resolve, reject) {
|
|
48
|
+
register(filePath = '/service-worker.js', scope = '/') {
|
|
49
|
+
this._logger.debug(`registering ${filePath}`);
|
|
50
|
+
this._logger.debug(`registering service worker with scope ${scope}`);
|
|
51
|
+
return new Promise((resolve, reject) => {
|
|
95
52
|
if (navigator && 'serviceWorker' in navigator) {
|
|
96
53
|
navigator.serviceWorker
|
|
97
54
|
.register(filePath, {
|
|
98
|
-
scope
|
|
55
|
+
scope,
|
|
99
56
|
})
|
|
100
|
-
.then(
|
|
57
|
+
.then(registration => {
|
|
101
58
|
if (registration.installing) {
|
|
102
|
-
|
|
59
|
+
this._serviceWorker = registration.installing;
|
|
103
60
|
}
|
|
104
61
|
else if (registration.waiting) {
|
|
105
|
-
|
|
62
|
+
this._serviceWorker = registration.waiting;
|
|
106
63
|
}
|
|
107
64
|
else if (registration.active) {
|
|
108
|
-
|
|
65
|
+
this._serviceWorker = registration.active;
|
|
109
66
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
67
|
+
this._registration = registration;
|
|
68
|
+
this._setupListeners();
|
|
69
|
+
this._logger.debug(`Service Worker Registration Success: ${registration}`);
|
|
113
70
|
return resolve(registration);
|
|
114
71
|
})
|
|
115
|
-
.catch(
|
|
116
|
-
|
|
72
|
+
.catch(error => {
|
|
73
|
+
this._logger.debug(`Service Worker Registration Failed ${error}`);
|
|
117
74
|
return reject(new errors_1.AmplifyError({
|
|
118
75
|
name: errorHelpers_1.ServiceWorkerErrorCode.Unavailable,
|
|
119
76
|
message: 'Service Worker not available',
|
|
@@ -128,7 +85,7 @@ var ServiceWorkerClass = /** @class */ (function () {
|
|
|
128
85
|
}));
|
|
129
86
|
}
|
|
130
87
|
});
|
|
131
|
-
}
|
|
88
|
+
}
|
|
132
89
|
/**
|
|
133
90
|
* Enable web push notifications. If not subscribed, a new subscription will
|
|
134
91
|
* be created and registered.
|
|
@@ -140,32 +97,31 @@ var ServiceWorkerClass = /** @class */ (function () {
|
|
|
140
97
|
* - resolve(PushSubscription)
|
|
141
98
|
* - reject(Error)
|
|
142
99
|
*/
|
|
143
|
-
|
|
144
|
-
var _this = this;
|
|
100
|
+
enablePush(publicKey) {
|
|
145
101
|
(0, errorHelpers_1.assert)(this._registration !== undefined, errorHelpers_1.ServiceWorkerErrorCode.UndefinedRegistration);
|
|
146
102
|
this._publicKey = publicKey;
|
|
147
|
-
return new Promise(
|
|
103
|
+
return new Promise((resolve, reject) => {
|
|
148
104
|
if ((0, utils_1.isBrowser)()) {
|
|
149
|
-
(0, errorHelpers_1.assert)(
|
|
150
|
-
|
|
105
|
+
(0, errorHelpers_1.assert)(this._registration !== undefined, errorHelpers_1.ServiceWorkerErrorCode.UndefinedRegistration);
|
|
106
|
+
this._registration.pushManager.getSubscription().then(subscription => {
|
|
151
107
|
if (subscription) {
|
|
152
|
-
|
|
153
|
-
|
|
108
|
+
this._subscription = subscription;
|
|
109
|
+
this._logger.debug(`User is subscribed to push: ${JSON.stringify(subscription)}`);
|
|
154
110
|
resolve(subscription);
|
|
155
111
|
}
|
|
156
112
|
else {
|
|
157
|
-
|
|
158
|
-
return
|
|
113
|
+
this._logger.debug(`User is NOT subscribed to push`);
|
|
114
|
+
return this._registration.pushManager.subscribe({
|
|
159
115
|
userVisibleOnly: true,
|
|
160
|
-
applicationServerKey:
|
|
116
|
+
applicationServerKey: this._urlB64ToUint8Array(publicKey),
|
|
161
117
|
})
|
|
162
|
-
.then(
|
|
163
|
-
|
|
164
|
-
|
|
118
|
+
.then(subscription => {
|
|
119
|
+
this._subscription = subscription;
|
|
120
|
+
this._logger.debug(`User subscribed: ${JSON.stringify(subscription)}`);
|
|
165
121
|
resolve(subscription);
|
|
166
122
|
})
|
|
167
|
-
.catch(
|
|
168
|
-
|
|
123
|
+
.catch(error => {
|
|
124
|
+
this._logger.error(error);
|
|
169
125
|
});
|
|
170
126
|
}
|
|
171
127
|
});
|
|
@@ -177,23 +133,23 @@ var ServiceWorkerClass = /** @class */ (function () {
|
|
|
177
133
|
}));
|
|
178
134
|
}
|
|
179
135
|
});
|
|
180
|
-
}
|
|
136
|
+
}
|
|
181
137
|
/**
|
|
182
138
|
* Convert a base64 encoded string to a Uint8 array for the push server key
|
|
183
139
|
* @param base64String
|
|
184
140
|
*/
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
141
|
+
_urlB64ToUint8Array(base64String) {
|
|
142
|
+
const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
|
|
143
|
+
const base64 = (base64String + padding)
|
|
188
144
|
.replace(/\-/g, '+')
|
|
189
145
|
.replace(/_/g, '/');
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
for (
|
|
146
|
+
const rawData = window.atob(base64);
|
|
147
|
+
const outputArray = new Uint8Array(rawData.length);
|
|
148
|
+
for (let i = 0; i < rawData.length; ++i) {
|
|
193
149
|
outputArray[i] = rawData.charCodeAt(i);
|
|
194
150
|
}
|
|
195
151
|
return outputArray;
|
|
196
|
-
}
|
|
152
|
+
}
|
|
197
153
|
/**
|
|
198
154
|
* Send a message to the service worker. The service worker needs
|
|
199
155
|
* to implement `self.addEventListener('message') to handle the
|
|
@@ -202,52 +158,40 @@ var ServiceWorkerClass = /** @class */ (function () {
|
|
|
202
158
|
* - see: https://developer.mozilla.org/en-US/docs/Web/API/Transferable
|
|
203
159
|
* @returns {Promise}
|
|
204
160
|
**/
|
|
205
|
-
|
|
161
|
+
send(message) {
|
|
206
162
|
if (this._serviceWorker) {
|
|
207
163
|
this._serviceWorker.postMessage(typeof message === 'object' ? JSON.stringify(message) : message);
|
|
208
164
|
}
|
|
209
|
-
}
|
|
165
|
+
}
|
|
210
166
|
/**
|
|
211
167
|
* Listen for service worker state change and message events
|
|
212
168
|
* https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state
|
|
213
169
|
**/
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
state: currentState,
|
|
239
|
-
},
|
|
240
|
-
},
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
return [2 /*return*/];
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
}); });
|
|
247
|
-
this.serviceWorker.addEventListener('message', function (event) {
|
|
248
|
-
_this._logger.debug("ServiceWorker message event: ".concat(event));
|
|
170
|
+
_setupListeners() {
|
|
171
|
+
this.serviceWorker.addEventListener('statechange', async (event) => {
|
|
172
|
+
const currentState = this.serviceWorker.state;
|
|
173
|
+
this._logger.debug(`ServiceWorker statechange: ${currentState}`);
|
|
174
|
+
const { appId, region } = singleton_1.Amplify.getConfig().Analytics?.Pinpoint ?? {};
|
|
175
|
+
const { credentials } = await (0, singleton_1.fetchAuthSession)();
|
|
176
|
+
if (appId && region && credentials) {
|
|
177
|
+
// Pinpoint is configured, record an event
|
|
178
|
+
(0, pinpoint_1.record)({
|
|
179
|
+
appId,
|
|
180
|
+
region,
|
|
181
|
+
category: 'Core',
|
|
182
|
+
credentials,
|
|
183
|
+
event: {
|
|
184
|
+
name: 'ServiceWorker',
|
|
185
|
+
attributes: {
|
|
186
|
+
state: currentState,
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
this.serviceWorker.addEventListener('message', event => {
|
|
193
|
+
this._logger.debug(`ServiceWorker message event: ${event}`);
|
|
249
194
|
});
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
}());
|
|
195
|
+
}
|
|
196
|
+
}
|
|
253
197
|
exports.ServiceWorkerClass = ServiceWorkerClass;
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
var _a;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
5
|
exports.assert = exports.ServiceWorkerErrorCode = void 0;
|
|
7
|
-
|
|
6
|
+
const errors_1 = require("../errors");
|
|
8
7
|
var ServiceWorkerErrorCode;
|
|
9
8
|
(function (ServiceWorkerErrorCode) {
|
|
10
9
|
ServiceWorkerErrorCode["UndefinedInstance"] = "UndefinedInstance";
|
|
11
10
|
ServiceWorkerErrorCode["UndefinedRegistration"] = "UndefinedRegistration";
|
|
12
11
|
ServiceWorkerErrorCode["Unavailable"] = "Unavailable";
|
|
13
12
|
})(ServiceWorkerErrorCode = exports.ServiceWorkerErrorCode || (exports.ServiceWorkerErrorCode = {}));
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const serviceWorkerErrorMap = {
|
|
14
|
+
[ServiceWorkerErrorCode.UndefinedInstance]: {
|
|
16
15
|
message: 'Service Worker instance is undefined.',
|
|
17
16
|
},
|
|
18
|
-
|
|
17
|
+
[ServiceWorkerErrorCode.UndefinedRegistration]: {
|
|
19
18
|
message: 'Service Worker registration is undefined.',
|
|
20
19
|
},
|
|
21
|
-
|
|
20
|
+
[ServiceWorkerErrorCode.Unavailable]: {
|
|
22
21
|
message: 'Service Worker not available.',
|
|
23
22
|
},
|
|
24
|
-
|
|
23
|
+
};
|
|
25
24
|
exports.assert = (0, errors_1.createAssertionFunction)(serviceWorkerErrorMap);
|
|
@@ -14,5 +14,14 @@ type DateUtils = {
|
|
|
14
14
|
isClockSkewError: (error: any) => boolean;
|
|
15
15
|
setClockOffset: (offset: number) => void;
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* This utility is intended to be deprecated and replaced by `signRequest` and `presignUrl` functions from
|
|
19
|
+
* `clients/middleware/signing/signer/signatureV4`.
|
|
20
|
+
*
|
|
21
|
+
* TODO: refactor the logics here into `signRequest` and `presignUrl` functions and remove this class.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
* @deprecated
|
|
25
|
+
*/
|
|
17
26
|
export declare const DateUtils: DateUtils;
|
|
18
27
|
export {};
|
package/lib/Signer/DateUtils.js
CHANGED
|
@@ -7,32 +7,24 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @see https://github.com/aws/aws-sdk-js/blob/6edf586dcc1de7fe8fbfbbd9a0d2b1847921e6e1/lib/util.js#L262
|
|
9
9
|
*/
|
|
10
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
11
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
12
|
-
if (!m) return o;
|
|
13
|
-
var i = m.call(o), r, ar = [], e;
|
|
14
|
-
try {
|
|
15
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
16
|
-
}
|
|
17
|
-
catch (error) { e = { error: error }; }
|
|
18
|
-
finally {
|
|
19
|
-
try {
|
|
20
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
21
|
-
}
|
|
22
|
-
finally { if (e) throw e.error; }
|
|
23
|
-
}
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
11
|
exports.DateUtils = void 0;
|
|
28
|
-
|
|
29
|
-
|
|
12
|
+
const FIVE_MINUTES_IN_MS = 1000 * 60 * 5;
|
|
13
|
+
/**
|
|
14
|
+
* This utility is intended to be deprecated and replaced by `signRequest` and `presignUrl` functions from
|
|
15
|
+
* `clients/middleware/signing/signer/signatureV4`.
|
|
16
|
+
*
|
|
17
|
+
* TODO: refactor the logics here into `signRequest` and `presignUrl` functions and remove this class.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
* @deprecated
|
|
21
|
+
*/
|
|
30
22
|
exports.DateUtils = {
|
|
31
23
|
/**
|
|
32
24
|
* Milliseconds to offset the date to compensate for clock skew between device & services
|
|
33
25
|
*/
|
|
34
26
|
clockOffset: 0,
|
|
35
|
-
getDateWithClockOffset
|
|
27
|
+
getDateWithClockOffset() {
|
|
36
28
|
if (exports.DateUtils.clockOffset) {
|
|
37
29
|
return new Date(new Date().getTime() + exports.DateUtils.clockOffset);
|
|
38
30
|
}
|
|
@@ -43,33 +35,32 @@ exports.DateUtils = {
|
|
|
43
35
|
/**
|
|
44
36
|
* @returns {number} Clock offset in milliseconds
|
|
45
37
|
*/
|
|
46
|
-
getClockOffset
|
|
38
|
+
getClockOffset() {
|
|
47
39
|
return exports.DateUtils.clockOffset;
|
|
48
40
|
},
|
|
49
|
-
getHeaderStringFromDate
|
|
50
|
-
if (date === void 0) { date = exports.DateUtils.getDateWithClockOffset(); }
|
|
41
|
+
getHeaderStringFromDate(date = exports.DateUtils.getDateWithClockOffset()) {
|
|
51
42
|
return date.toISOString().replace(/[:\-]|\.\d{3}/g, '');
|
|
52
43
|
},
|
|
53
|
-
getDateFromHeaderString
|
|
54
|
-
|
|
44
|
+
getDateFromHeaderString(header) {
|
|
45
|
+
const [, year, month, day, hour, minute, second] = header.match(/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2}).+/);
|
|
55
46
|
return new Date(Date.UTC(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second)));
|
|
56
47
|
},
|
|
57
|
-
isClockSkewed
|
|
48
|
+
isClockSkewed(serverDate) {
|
|
58
49
|
// API gateway permits client calls that are off by no more than ±5 minutes
|
|
59
50
|
return (Math.abs(serverDate.getTime() - exports.DateUtils.getDateWithClockOffset().getTime()) >= FIVE_MINUTES_IN_MS);
|
|
60
51
|
},
|
|
61
|
-
isClockSkewError
|
|
52
|
+
isClockSkewError(error) {
|
|
62
53
|
if (!error.response || !error.response.headers) {
|
|
63
54
|
return false;
|
|
64
55
|
}
|
|
65
|
-
|
|
56
|
+
const { headers } = error.response;
|
|
66
57
|
return Boolean(['BadRequestException', 'InvalidSignatureException'].includes(headers['x-amzn-errortype']) &&
|
|
67
58
|
(headers.date || headers.Date));
|
|
68
59
|
},
|
|
69
60
|
/**
|
|
70
61
|
* @param {number} offset Clock offset in milliseconds
|
|
71
62
|
*/
|
|
72
|
-
setClockOffset
|
|
63
|
+
setClockOffset(offset) {
|
|
73
64
|
exports.DateUtils.clockOffset = offset;
|
|
74
65
|
},
|
|
75
66
|
};
|
package/lib/Signer/Signer.d.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This class is intended to be deprecated and replaced by `signRequest` and `presignUrl` functions from
|
|
3
|
+
* `clients/middleware/signing/signer/signatureV4`.
|
|
4
|
+
*
|
|
5
|
+
* TODO: refactor the logics here into `signRequest` and `presignUrl` functions and remove this class.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
* @deprecated
|
|
9
|
+
*/
|
|
1
10
|
export declare class Signer {
|
|
2
11
|
/**
|
|
3
12
|
* Sign a HTTP request, add 'Authorization' header to request param
|
package/lib/Signer/Signer.js
CHANGED
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
var __assign = (this && this.__assign) || function () {
|
|
5
|
-
__assign = Object.assign || function(t) {
|
|
6
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
7
|
-
s = arguments[i];
|
|
8
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
9
|
-
t[p] = s[p];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
|
-
return __assign.apply(this, arguments);
|
|
14
|
-
};
|
|
15
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
5
|
exports.Signer = void 0;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
6
|
+
const DateUtils_1 = require("./DateUtils");
|
|
7
|
+
const signatureV4_1 = require("../clients/middleware/signing/signer/signatureV4");
|
|
8
|
+
const amplifyUrl_1 = require("../utils/amplifyUrl");
|
|
9
|
+
const IOT_SERVICE_NAME = 'iotdevicegateway';
|
|
21
10
|
// Best practice regex to parse the service and region from an AWS endpoint
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
const AWS_ENDPOINT_REGEX = /([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(.cn)?$/;
|
|
12
|
+
/**
|
|
13
|
+
* This class is intended to be deprecated and replaced by `signRequest` and `presignUrl` functions from
|
|
14
|
+
* `clients/middleware/signing/signer/signatureV4`.
|
|
15
|
+
*
|
|
16
|
+
* TODO: refactor the logics here into `signRequest` and `presignUrl` functions and remove this class.
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
* @deprecated
|
|
20
|
+
*/
|
|
21
|
+
class Signer {
|
|
26
22
|
/**
|
|
27
23
|
* Sign a HTTP request, add 'Authorization' header to request param
|
|
28
24
|
* @method sign
|
|
@@ -59,14 +55,18 @@ var Signer = /** @class */ (function () {
|
|
|
59
55
|
*
|
|
60
56
|
* @returns {object} Signed HTTP request
|
|
61
57
|
*/
|
|
62
|
-
|
|
58
|
+
static sign(request, accessInfo, serviceInfo) {
|
|
63
59
|
request.headers = request.headers || {};
|
|
64
60
|
if (request.body && !request.data) {
|
|
65
61
|
throw new Error('The attribute "body" was found on the request object. Please use the attribute "data" instead.');
|
|
66
62
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
63
|
+
const requestToSign = {
|
|
64
|
+
...request,
|
|
65
|
+
body: request.data,
|
|
66
|
+
url: new amplifyUrl_1.AmplifyUrl(request.url),
|
|
67
|
+
};
|
|
68
|
+
const options = getOptions(requestToSign, accessInfo, serviceInfo);
|
|
69
|
+
const signedRequest = (0, signatureV4_1.signRequest)(requestToSign, options);
|
|
70
70
|
// Prior to using `signRequest`, Signer accepted urls as strings and outputted urls as string. Coerce the property
|
|
71
71
|
// back to a string so as not to disrupt consumers of Signer.
|
|
72
72
|
signedRequest.url = signedRequest.url.toString();
|
|
@@ -78,42 +78,49 @@ var Signer = /** @class */ (function () {
|
|
|
78
78
|
delete signedRequest.headers.authorization;
|
|
79
79
|
delete signedRequest.headers['x-amz-security-token'];
|
|
80
80
|
return signedRequest;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
body
|
|
88
|
-
method
|
|
81
|
+
}
|
|
82
|
+
static signUrl(urlOrRequest, accessInfo, serviceInfo, expiration) {
|
|
83
|
+
const urlToSign = typeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;
|
|
84
|
+
const method = typeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';
|
|
85
|
+
const body = typeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;
|
|
86
|
+
const presignable = {
|
|
87
|
+
body,
|
|
88
|
+
method,
|
|
89
89
|
url: new amplifyUrl_1.AmplifyUrl(urlToSign),
|
|
90
90
|
};
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
const options = getOptions(presignable, accessInfo, serviceInfo, expiration);
|
|
92
|
+
const signedUrl = (0, signatureV4_1.presignUrl)(presignable, options);
|
|
93
93
|
if (accessInfo.session_token &&
|
|
94
94
|
!sessionTokenRequiredInSigning(options.signingService)) {
|
|
95
95
|
signedUrl.searchParams.append(signatureV4_1.TOKEN_QUERY_PARAM, accessInfo.session_token);
|
|
96
96
|
}
|
|
97
97
|
return signedUrl.toString();
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
}());
|
|
98
|
+
}
|
|
99
|
+
}
|
|
101
100
|
exports.Signer = Signer;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
:
|
|
109
|
-
|
|
101
|
+
const getOptions = (request, accessInfo, serviceInfo, expiration) => {
|
|
102
|
+
const { access_key, secret_key, session_token } = accessInfo ?? {};
|
|
103
|
+
const { region: urlRegion, service: urlService } = parseServiceInfo(request.url);
|
|
104
|
+
const { region = urlRegion, service = urlService } = serviceInfo ?? {};
|
|
105
|
+
const credentials = {
|
|
106
|
+
accessKeyId: access_key,
|
|
107
|
+
secretAccessKey: secret_key,
|
|
108
|
+
...(sessionTokenRequiredInSigning(service)
|
|
109
|
+
? { sessionToken: session_token }
|
|
110
|
+
: {}),
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
credentials,
|
|
114
|
+
signingDate: DateUtils_1.DateUtils.getDateWithClockOffset(),
|
|
115
|
+
signingRegion: region,
|
|
116
|
+
signingService: service,
|
|
117
|
+
...(expiration && { expiration }),
|
|
118
|
+
};
|
|
110
119
|
};
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
var matched = (_a = host.match(AWS_ENDPOINT_REGEX)) !== null && _a !== void 0 ? _a : [];
|
|
116
|
-
var parsed = matched.slice(1, 3);
|
|
120
|
+
const parseServiceInfo = (url) => {
|
|
121
|
+
const host = url.host;
|
|
122
|
+
const matched = host.match(AWS_ENDPOINT_REGEX) ?? [];
|
|
123
|
+
let parsed = matched.slice(1, 3);
|
|
117
124
|
if (parsed[1] === 'es') {
|
|
118
125
|
// Elastic Search
|
|
119
126
|
parsed = parsed.reverse();
|
|
@@ -125,7 +132,4 @@ var parseServiceInfo = function (url) {
|
|
|
125
132
|
};
|
|
126
133
|
// IoT service does not allow the session token in the canonical request
|
|
127
134
|
// https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html
|
|
128
|
-
|
|
129
|
-
var sessionTokenRequiredInSigning = function (service) {
|
|
130
|
-
return service !== IOT_SERVICE_NAME;
|
|
131
|
-
};
|
|
135
|
+
const sessionTokenRequiredInSigning = (service) => service !== IOT_SERVICE_NAME;
|