@aws-amplify/core 6.0.1-api-v6-models.9351bcf.0 → 6.0.1-api-v6-models.58f2536.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.
Files changed (360) hide show
  1. package/lib/BackgroundProcessManager/BackgroundManagerNotOpenError.js +4 -21
  2. package/lib/BackgroundProcessManager/BackgroundProcessManager.js +126 -245
  3. package/lib/Cache/StorageCache.js +32 -92
  4. package/lib/Cache/StorageCache.native.js +38 -140
  5. package/lib/Cache/StorageCacheCommon.js +271 -600
  6. package/lib/Cache/index.js +1 -1
  7. package/lib/Cache/utils/CacheList.js +42 -66
  8. package/lib/Cache/utils/cacheHelpers.js +6 -8
  9. package/lib/Cache/utils/errorHelpers.js +6 -7
  10. package/lib/Hub/index.js +34 -74
  11. package/lib/I18n/I18n.js +24 -39
  12. package/lib/I18n/errorHelpers.js +4 -5
  13. package/lib/I18n/index.js +24 -27
  14. package/lib/I18n/types.js +3 -4
  15. package/lib/Logger/ConsoleLogger.js +53 -129
  16. package/lib/Mutex/Mutex.js +15 -19
  17. package/lib/Platform/customUserAgent.js +13 -26
  18. package/lib/Platform/detectFramework.js +12 -13
  19. package/lib/Platform/detection/Angular.js +4 -5
  20. package/lib/Platform/detection/Expo.js +1 -1
  21. package/lib/Platform/detection/Next.js +1 -1
  22. package/lib/Platform/detection/Nuxt.js +1 -1
  23. package/lib/Platform/detection/React.js +5 -5
  24. package/lib/Platform/detection/Svelte.js +2 -2
  25. package/lib/Platform/detection/Vue.js +1 -1
  26. package/lib/Platform/detection/Web.js +1 -1
  27. package/lib/Platform/detection/helpers.js +7 -7
  28. package/lib/Platform/detection/index.js +13 -13
  29. package/lib/Platform/index.js +26 -55
  30. package/lib/Platform/types.d.ts +1 -1
  31. package/lib/Platform/types.js +1 -1
  32. package/lib/Platform/version.d.ts +1 -1
  33. package/lib/Platform/version.js +1 -1
  34. package/lib/Reachability/Reachability.js +20 -48
  35. package/lib/Reachability/Reachability.native.js +12 -16
  36. package/lib/ServiceWorker/ServiceWorker.js +80 -136
  37. package/lib/ServiceWorker/errorHelpers.js +6 -7
  38. package/lib/Signer/DateUtils.d.ts +9 -0
  39. package/lib/Signer/DateUtils.js +19 -28
  40. package/lib/Signer/Signer.d.ts +9 -0
  41. package/lib/Signer/Signer.js +58 -54
  42. package/lib/adapterCore/error/AmplifyServerContextError.js +9 -27
  43. package/lib/adapterCore/serverContext/serverContext.js +8 -8
  44. package/lib/adapterCore/serverContext/serverContextRegistry.js +6 -6
  45. package/lib/awsClients/cognitoIdentity/base.js +25 -73
  46. package/lib/awsClients/cognitoIdentity/getCredentialsForIdentity.js +24 -68
  47. package/lib/awsClients/cognitoIdentity/getId.js +19 -62
  48. package/lib/awsClients/pinpoint/base.js +12 -15
  49. package/lib/awsClients/pinpoint/errorHelpers.js +4 -5
  50. package/lib/awsClients/pinpoint/getInAppMessages.js +24 -68
  51. package/lib/awsClients/pinpoint/putEvents.js +26 -70
  52. package/lib/awsClients/pinpoint/updateEndpoint.js +28 -72
  53. package/lib/clients/endpoints/getDnsSuffix.js +7 -29
  54. package/lib/clients/handlers/authenticated.js +5 -5
  55. package/lib/clients/handlers/fetch.js +41 -98
  56. package/lib/clients/handlers/unauthenticated.js +4 -4
  57. package/lib/clients/internal/composeServiceApi.js +17 -67
  58. package/lib/clients/internal/composeTransferHandler.js +9 -11
  59. package/lib/clients/middleware/retry/defaultRetryDecider.js +18 -75
  60. package/lib/clients/middleware/retry/isClockSkewError.js +2 -4
  61. package/lib/clients/middleware/retry/jitteredBackoff.js +5 -5
  62. package/lib/clients/middleware/retry/middleware.js +61 -125
  63. package/lib/clients/middleware/signing/middleware.js +24 -86
  64. package/lib/clients/middleware/signing/signer/signatureV4/index.js +0 -1
  65. package/lib/clients/middleware/signing/signer/signatureV4/presignUrl.js +21 -56
  66. package/lib/clients/middleware/signing/signer/signatureV4/signRequest.js +14 -25
  67. package/lib/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js +7 -7
  68. package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js +8 -30
  69. package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js +11 -38
  70. package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js +13 -17
  71. package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js +5 -8
  72. package/lib/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js +2 -2
  73. package/lib/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js +3 -3
  74. package/lib/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js +7 -11
  75. package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignature.js +9 -10
  76. package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js +4 -6
  77. package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js +8 -8
  78. package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js +15 -16
  79. package/lib/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js +2 -4
  80. package/lib/clients/middleware/signing/utils/extendedEncodeURIComponent.js +3 -5
  81. package/lib/clients/middleware/signing/utils/getSkewCorrectedDate.js +1 -3
  82. package/lib/clients/middleware/signing/utils/getUpdatedSystemClockOffset.js +2 -2
  83. package/lib/clients/middleware/signing/utils/isClockSkewed.js +4 -6
  84. package/lib/clients/middleware/userAgent/middleware.js +14 -63
  85. package/lib/clients/serde/json.js +30 -96
  86. package/lib/clients/serde/responseInfo.js +12 -18
  87. package/lib/clients/utils/memoization.js +3 -3
  88. package/lib/constants.js +1 -1
  89. package/lib/errors/AmplifyError.js +9 -28
  90. package/lib/errors/PlatformNotSupportedError.js +7 -24
  91. package/lib/errors/createAssertionFunction.js +12 -15
  92. package/lib/errors/errorHelpers.js +7 -8
  93. package/lib/index.d.ts +1 -1
  94. package/lib/libraryUtils.d.ts +4 -0
  95. package/lib/libraryUtils.js +13 -3
  96. package/lib/parseAWSExports.js +109 -100
  97. package/lib/providers/kinesis/types/kinesis.d.ts +1 -1
  98. package/lib/providers/kinesis-firehose/types/kinesis-firehose.d.ts +1 -1
  99. package/lib/providers/personalize/types/personalize.d.ts +1 -1
  100. package/lib/providers/pinpoint/apis/flushEvents.js +8 -8
  101. package/lib/providers/pinpoint/apis/record.js +58 -93
  102. package/lib/providers/pinpoint/apis/updateEndpoint.js +65 -112
  103. package/lib/providers/pinpoint/types/pinpoint.d.ts +3 -1
  104. package/lib/providers/pinpoint/utils/PinpointEventBuffer.js +105 -196
  105. package/lib/providers/pinpoint/utils/cacheEndpointId.js +12 -49
  106. package/lib/providers/pinpoint/utils/getCacheKey.js +2 -2
  107. package/lib/providers/pinpoint/utils/getEndpointId.js +7 -51
  108. package/lib/providers/pinpoint/utils/getEventBuffer.js +19 -21
  109. package/lib/providers/pinpoint/utils/isAppInForeground.js +1 -1
  110. package/lib/providers/pinpoint/utils/isAppInForeground.native.js +2 -2
  111. package/lib/providers/pinpoint/utils/resolveEndpointId.js +20 -71
  112. package/lib/singleton/Amplify.d.ts +4 -0
  113. package/lib/singleton/Amplify.js +21 -103
  114. package/lib/singleton/Analytics/types.d.ts +5 -1
  115. package/lib/singleton/Auth/index.js +48 -115
  116. package/lib/singleton/Auth/types.d.ts +2 -2
  117. package/lib/singleton/Auth/utils/errorHelpers.js +7 -8
  118. package/lib/singleton/Auth/utils/index.js +18 -19
  119. package/lib/singleton/Predictions/types.d.ts +49 -0
  120. package/lib/singleton/Predictions/types.js +4 -0
  121. package/lib/singleton/apis/clearCredentials.js +1 -1
  122. package/lib/singleton/apis/fetchAuthSession.js +3 -3
  123. package/lib/singleton/apis/internal/fetchAuthSession.js +1 -1
  124. package/lib/singleton/apis/server/fetchAuthSession.js +3 -3
  125. package/lib/singleton/types.d.ts +3 -1
  126. package/lib/storage/CookieStorage.js +29 -99
  127. package/lib/storage/CookieStorage.native.js +5 -22
  128. package/lib/storage/DefaultStorage.js +6 -23
  129. package/lib/storage/DefaultStorage.native.js +18 -64
  130. package/lib/storage/InMemoryStorage.js +17 -23
  131. package/lib/storage/KeyValueStorage.js +24 -80
  132. package/lib/storage/SessionStorage.js +6 -23
  133. package/lib/storage/index.js +4 -4
  134. package/lib/storage/utils.js +7 -11
  135. package/lib/tsconfig.tsbuildinfo +1 -1
  136. package/lib/utils/WordArray.d.ts +7 -0
  137. package/lib/utils/WordArray.js +49 -0
  138. package/lib/utils/amplifyUrl/index.js +2 -2
  139. package/lib/utils/amplifyUrl/polyfill.native.js +1 -1
  140. package/lib/utils/amplifyUuid/index.d.ts +1 -1
  141. package/lib/utils/amplifyUuid/index.js +2 -2
  142. package/lib/utils/amplifyUuid/polyfill.native.js +1 -1
  143. package/lib/utils/convert/base64/base64Decoder.js +2 -2
  144. package/lib/utils/convert/base64/base64Encoder.js +5 -6
  145. package/lib/utils/convert/base64/bytesToString.js +1 -1
  146. package/lib/utils/cryptoSecureRandomInt.d.ts +1 -0
  147. package/lib/utils/cryptoSecureRandomInt.js +16 -0
  148. package/lib/utils/deepFreeze.js +6 -28
  149. package/lib/utils/generateRandomString.js +4 -4
  150. package/lib/utils/getClientInfo/getClientInfo.android.js +7 -7
  151. package/lib/utils/getClientInfo/getClientInfo.ios.js +12 -12
  152. package/lib/utils/getClientInfo/getClientInfo.js +16 -16
  153. package/lib/utils/globalHelpers/index.js +4 -4
  154. package/lib/utils/globalHelpers/index.native.js +6 -6
  155. package/lib/utils/isBrowser.js +1 -3
  156. package/lib/utils/isWebWorker.js +2 -2
  157. package/lib/utils/retry/NonRetryableError.js +5 -23
  158. package/lib/utils/retry/isNonRetryableError.js +2 -2
  159. package/lib/utils/retry/jitteredBackoff.js +6 -7
  160. package/lib/utils/retry/jitteredExponentialRetry.js +4 -7
  161. package/lib/utils/retry/retry.js +50 -140
  162. package/lib/utils/sessionListener/SessionListener.js +17 -19
  163. package/lib/utils/sessionListener/SessionListener.native.js +18 -22
  164. package/lib/utils/sessionListener/constants.d.ts +2 -0
  165. package/lib/utils/sessionListener/constants.js +8 -0
  166. package/lib/utils/sessionListener/index.d.ts +1 -0
  167. package/lib/utils/sessionListener/index.js +5 -2
  168. package/lib/utils/urlSafeDecode.js +2 -2
  169. package/lib/utils/urlSafeEncode.js +1 -1
  170. package/lib-esm/BackgroundProcessManager/BackgroundManagerNotOpenError.js +4 -22
  171. package/lib-esm/BackgroundProcessManager/BackgroundProcessManager.js +124 -244
  172. package/lib-esm/Cache/StorageCache.js +26 -87
  173. package/lib-esm/Cache/StorageCache.native.js +33 -136
  174. package/lib-esm/Cache/StorageCacheCommon.js +267 -597
  175. package/lib-esm/Cache/constants.js +2 -2
  176. package/lib-esm/Cache/index.js +1 -1
  177. package/lib-esm/Cache/utils/CacheList.js +41 -66
  178. package/lib-esm/Cache/utils/cacheHelpers.js +5 -7
  179. package/lib-esm/Cache/utils/errorHelpers.js +6 -7
  180. package/lib-esm/Hub/index.js +34 -75
  181. package/lib-esm/I18n/I18n.js +23 -39
  182. package/lib-esm/I18n/errorHelpers.js +4 -5
  183. package/lib-esm/I18n/index.js +21 -25
  184. package/lib-esm/I18n/types.js +3 -5
  185. package/lib-esm/Logger/ConsoleLogger.js +52 -128
  186. package/lib-esm/Mutex/Mutex.js +15 -20
  187. package/lib-esm/Platform/customUserAgent.js +13 -26
  188. package/lib-esm/Platform/detectFramework.js +11 -12
  189. package/lib-esm/Platform/detection/Angular.js +3 -4
  190. package/lib-esm/Platform/detection/React.js +4 -4
  191. package/lib-esm/Platform/detection/Svelte.js +1 -1
  192. package/lib-esm/Platform/detection/helpers.js +7 -7
  193. package/lib-esm/Platform/detection/index.js +3 -3
  194. package/lib-esm/Platform/index.js +23 -52
  195. package/lib-esm/Platform/types.d.ts +1 -1
  196. package/lib-esm/Platform/types.js +1 -1
  197. package/lib-esm/Platform/version.d.ts +1 -1
  198. package/lib-esm/Platform/version.js +1 -1
  199. package/lib-esm/Reachability/Reachability.js +18 -46
  200. package/lib-esm/Reachability/Reachability.native.js +10 -15
  201. package/lib-esm/ServiceWorker/ServiceWorker.js +74 -131
  202. package/lib-esm/ServiceWorker/errorHelpers.js +6 -7
  203. package/lib-esm/Signer/DateUtils.d.ts +9 -0
  204. package/lib-esm/Signer/DateUtils.js +20 -29
  205. package/lib-esm/Signer/Signer.d.ts +9 -0
  206. package/lib-esm/Signer/Signer.js +54 -51
  207. package/lib-esm/adapterCore/error/AmplifyServerContextError.js +8 -27
  208. package/lib-esm/adapterCore/serverContext/serverContext.js +6 -6
  209. package/lib-esm/adapterCore/serverContext/serverContextRegistry.js +7 -7
  210. package/lib-esm/awsClients/cognitoIdentity/base.js +21 -69
  211. package/lib-esm/awsClients/cognitoIdentity/getCredentialsForIdentity.js +22 -66
  212. package/lib-esm/awsClients/cognitoIdentity/getId.js +17 -60
  213. package/lib-esm/awsClients/pinpoint/base.js +8 -11
  214. package/lib-esm/awsClients/pinpoint/errorHelpers.js +4 -5
  215. package/lib-esm/awsClients/pinpoint/getInAppMessages.js +19 -63
  216. package/lib-esm/awsClients/pinpoint/putEvents.js +20 -64
  217. package/lib-esm/awsClients/pinpoint/updateEndpoint.js +23 -67
  218. package/lib-esm/clients/endpoints/getDnsSuffix.js +6 -28
  219. package/lib-esm/clients/endpoints/partitions.js +2 -2
  220. package/lib-esm/clients/handlers/authenticated.js +1 -1
  221. package/lib-esm/clients/handlers/fetch.js +40 -97
  222. package/lib-esm/clients/handlers/unauthenticated.js +1 -1
  223. package/lib-esm/clients/internal/composeServiceApi.js +17 -67
  224. package/lib-esm/clients/internal/composeTransferHandler.js +9 -11
  225. package/lib-esm/clients/middleware/retry/defaultRetryDecider.js +17 -74
  226. package/lib-esm/clients/middleware/retry/isClockSkewError.js +2 -4
  227. package/lib-esm/clients/middleware/retry/jitteredBackoff.js +4 -4
  228. package/lib-esm/clients/middleware/retry/middleware.js +61 -125
  229. package/lib-esm/clients/middleware/signing/middleware.js +21 -83
  230. package/lib-esm/clients/middleware/signing/signer/signatureV4/constants.js +17 -17
  231. package/lib-esm/clients/middleware/signing/signer/signatureV4/index.js +0 -1
  232. package/lib-esm/clients/middleware/signing/signer/signatureV4/presignUrl.js +17 -52
  233. package/lib-esm/clients/middleware/signing/signer/signatureV4/signRequest.js +10 -21
  234. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js +5 -5
  235. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js +8 -30
  236. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js +11 -38
  237. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js +8 -12
  238. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js +5 -8
  239. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js +1 -1
  240. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js +3 -3
  241. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js +5 -9
  242. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignature.js +5 -6
  243. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js +4 -6
  244. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js +6 -6
  245. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js +13 -14
  246. package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js +1 -3
  247. package/lib-esm/clients/middleware/signing/utils/extendedEncodeURIComponent.js +3 -5
  248. package/lib-esm/clients/middleware/signing/utils/getSkewCorrectedDate.js +1 -3
  249. package/lib-esm/clients/middleware/signing/utils/getUpdatedSystemClockOffset.js +1 -1
  250. package/lib-esm/clients/middleware/signing/utils/isClockSkewed.js +3 -5
  251. package/lib-esm/clients/middleware/userAgent/middleware.js +14 -63
  252. package/lib-esm/clients/serde/json.js +29 -95
  253. package/lib-esm/clients/serde/responseInfo.js +11 -17
  254. package/lib-esm/clients/utils/memoization.js +3 -3
  255. package/lib-esm/constants.js +5 -5
  256. package/lib-esm/errors/AmplifyError.js +9 -29
  257. package/lib-esm/errors/PlatformNotSupportedError.js +5 -23
  258. package/lib-esm/errors/createAssertionFunction.js +11 -14
  259. package/lib-esm/errors/errorHelpers.js +6 -7
  260. package/lib-esm/index.d.ts +1 -1
  261. package/lib-esm/libraryUtils.d.ts +4 -0
  262. package/lib-esm/libraryUtils.js +4 -0
  263. package/lib-esm/parseAWSExports.js +108 -99
  264. package/lib-esm/providers/kinesis/types/kinesis.d.ts +1 -1
  265. package/lib-esm/providers/kinesis-firehose/types/kinesis-firehose.d.ts +1 -1
  266. package/lib-esm/providers/personalize/types/personalize.d.ts +1 -1
  267. package/lib-esm/providers/pinpoint/apis/flushEvents.js +6 -6
  268. package/lib-esm/providers/pinpoint/apis/record.js +54 -89
  269. package/lib-esm/providers/pinpoint/apis/updateEndpoint.js +61 -108
  270. package/lib-esm/providers/pinpoint/types/pinpoint.d.ts +3 -1
  271. package/lib-esm/providers/pinpoint/utils/PinpointEventBuffer.js +102 -194
  272. package/lib-esm/providers/pinpoint/utils/cacheEndpointId.js +10 -47
  273. package/lib-esm/providers/pinpoint/utils/constants.js +4 -4
  274. package/lib-esm/providers/pinpoint/utils/getCacheKey.js +2 -2
  275. package/lib-esm/providers/pinpoint/utils/getEndpointId.js +5 -49
  276. package/lib-esm/providers/pinpoint/utils/getEventBuffer.js +17 -19
  277. package/lib-esm/providers/pinpoint/utils/isAppInForeground.js +1 -1
  278. package/lib-esm/providers/pinpoint/utils/isAppInForeground.native.js +1 -1
  279. package/lib-esm/providers/pinpoint/utils/resolveEndpointId.js +16 -67
  280. package/lib-esm/singleton/Amplify.d.ts +4 -0
  281. package/lib-esm/singleton/Amplify.js +18 -101
  282. package/lib-esm/singleton/Analytics/types.d.ts +5 -1
  283. package/lib-esm/singleton/Auth/index.js +48 -116
  284. package/lib-esm/singleton/Auth/types.d.ts +2 -2
  285. package/lib-esm/singleton/Auth/utils/errorHelpers.js +7 -8
  286. package/lib-esm/singleton/Auth/utils/index.js +16 -17
  287. package/lib-esm/singleton/Predictions/types.d.ts +49 -0
  288. package/lib-esm/singleton/Predictions/types.js +3 -0
  289. package/lib-esm/singleton/apis/fetchAuthSession.js +1 -1
  290. package/lib-esm/singleton/apis/internal/fetchAuthSession.js +1 -1
  291. package/lib-esm/singleton/apis/server/fetchAuthSession.js +1 -1
  292. package/lib-esm/singleton/types.d.ts +3 -1
  293. package/lib-esm/storage/CookieStorage.js +28 -99
  294. package/lib-esm/storage/CookieStorage.native.js +4 -22
  295. package/lib-esm/storage/DefaultStorage.js +4 -22
  296. package/lib-esm/storage/DefaultStorage.native.js +17 -64
  297. package/lib-esm/storage/InMemoryStorage.js +17 -24
  298. package/lib-esm/storage/KeyValueStorage.js +23 -80
  299. package/lib-esm/storage/SessionStorage.js +4 -22
  300. package/lib-esm/storage/index.js +3 -3
  301. package/lib-esm/storage/utils.js +6 -10
  302. package/lib-esm/tsconfig.tsbuildinfo +1 -1
  303. package/lib-esm/utils/WordArray.d.ts +7 -0
  304. package/lib-esm/utils/WordArray.js +46 -0
  305. package/lib-esm/utils/amplifyUrl/index.js +2 -2
  306. package/lib-esm/utils/amplifyUuid/index.d.ts +1 -1
  307. package/lib-esm/utils/amplifyUuid/index.js +1 -1
  308. package/lib-esm/utils/convert/base64/base64Decoder.js +2 -2
  309. package/lib-esm/utils/convert/base64/base64Encoder.js +4 -5
  310. package/lib-esm/utils/convert/base64/bytesToString.js +1 -1
  311. package/lib-esm/utils/cryptoSecureRandomInt.d.ts +1 -0
  312. package/lib-esm/utils/cryptoSecureRandomInt.js +12 -0
  313. package/lib-esm/utils/deepFreeze.js +6 -28
  314. package/lib-esm/utils/generateRandomString.js +4 -4
  315. package/lib-esm/utils/getClientInfo/getClientInfo.android.js +5 -5
  316. package/lib-esm/utils/getClientInfo/getClientInfo.ios.js +10 -10
  317. package/lib-esm/utils/getClientInfo/getClientInfo.js +15 -15
  318. package/lib-esm/utils/globalHelpers/index.js +3 -3
  319. package/lib-esm/utils/globalHelpers/index.native.js +4 -4
  320. package/lib-esm/utils/isBrowser.js +1 -3
  321. package/lib-esm/utils/isWebWorker.js +2 -2
  322. package/lib-esm/utils/retry/NonRetryableError.js +5 -24
  323. package/lib-esm/utils/retry/constants.js +1 -1
  324. package/lib-esm/utils/retry/isNonRetryableError.js +2 -2
  325. package/lib-esm/utils/retry/jitteredBackoff.js +5 -6
  326. package/lib-esm/utils/retry/jitteredExponentialRetry.js +1 -4
  327. package/lib-esm/utils/retry/retry.js +48 -138
  328. package/lib-esm/utils/sessionListener/SessionListener.js +16 -19
  329. package/lib-esm/utils/sessionListener/SessionListener.native.js +17 -22
  330. package/lib-esm/utils/sessionListener/constants.d.ts +2 -0
  331. package/lib-esm/utils/sessionListener/constants.js +5 -0
  332. package/lib-esm/utils/sessionListener/index.d.ts +1 -0
  333. package/lib-esm/utils/sessionListener/index.js +2 -1
  334. package/lib-esm/utils/urlSafeDecode.js +2 -2
  335. package/lib-esm/utils/urlSafeEncode.js +1 -1
  336. package/package.json +11 -24
  337. package/src/Cache/types/index.ts +4 -4
  338. package/src/Platform/types.ts +1 -1
  339. package/src/Platform/version.ts +1 -1
  340. package/src/Signer/DateUtils.ts +10 -2
  341. package/src/Signer/Signer.ts +9 -2
  342. package/src/clients/middleware/signing/signer/signatureV4/index.ts +0 -1
  343. package/src/index.ts +1 -0
  344. package/src/libraryUtils.ts +7 -1
  345. package/src/parseAWSExports.ts +45 -6
  346. package/src/providers/kinesis/types/kinesis.ts +1 -1
  347. package/src/providers/kinesis-firehose/types/kinesis-firehose.ts +1 -1
  348. package/src/providers/personalize/types/personalize.ts +1 -1
  349. package/src/providers/pinpoint/apis/record.ts +22 -5
  350. package/src/providers/pinpoint/types/pinpoint.ts +3 -1
  351. package/src/singleton/Amplify.ts +9 -52
  352. package/src/singleton/Analytics/types.ts +9 -4
  353. package/src/singleton/Auth/types.ts +2 -2
  354. package/src/singleton/Predictions/types.ts +61 -0
  355. package/src/singleton/types.ts +3 -1
  356. package/src/utils/WordArray.ts +57 -0
  357. package/src/utils/amplifyUuid/index.ts +1 -1
  358. package/src/utils/cryptoSecureRandomInt.ts +14 -0
  359. package/src/utils/sessionListener/constants.ts +6 -0
  360. package/src/utils/sessionListener/index.ts +1 -0
@@ -1,78 +1,27 @@
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.getRetryDecider = void 0;
42
- var isClockSkewError_1 = require("./isClockSkewError");
6
+ const isClockSkewError_1 = require("./isClockSkewError");
43
7
  /**
44
8
  * Get retry decider function
45
9
  * @param errorParser Function to load JavaScript error from HTTP response
46
10
  */
47
- var getRetryDecider = function (errorParser) {
48
- return function (response, error) { return __awaiter(void 0, void 0, void 0, function () {
49
- var parsedError, _a, errorCode, statusCode;
50
- var _b, _c;
51
- return __generator(this, function (_d) {
52
- switch (_d.label) {
53
- case 0:
54
- if (!((_b = error) !== null && _b !== void 0)) return [3 /*break*/, 1];
55
- _a = _b;
56
- return [3 /*break*/, 3];
57
- case 1: return [4 /*yield*/, errorParser(response)];
58
- case 2:
59
- _a = (_d.sent());
60
- _d.label = 3;
61
- case 3:
62
- parsedError = (_c = _a) !== null && _c !== void 0 ? _c : undefined;
63
- errorCode = parsedError === null || parsedError === void 0 ? void 0 : parsedError['code'];
64
- statusCode = response === null || response === void 0 ? void 0 : response.statusCode;
65
- return [2 /*return*/, (isConnectionError(error) ||
66
- isThrottlingError(statusCode, errorCode) ||
67
- (0, isClockSkewError_1.isClockSkewError)(errorCode) ||
68
- isServerSideError(statusCode, errorCode))];
69
- }
70
- });
71
- }); };
11
+ const getRetryDecider = (errorParser) => async (response, error) => {
12
+ const parsedError = error ??
13
+ (await errorParser(response)) ??
14
+ undefined;
15
+ const errorCode = parsedError?.['code'];
16
+ const statusCode = response?.statusCode;
17
+ return (isConnectionError(error) ||
18
+ isThrottlingError(statusCode, errorCode) ||
19
+ (0, isClockSkewError_1.isClockSkewError)(errorCode) ||
20
+ isServerSideError(statusCode, errorCode));
72
21
  };
73
22
  exports.getRetryDecider = getRetryDecider;
74
23
  // reference: https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L22-L37
75
- var THROTTLING_ERROR_CODES = [
24
+ const THROTTLING_ERROR_CODES = [
76
25
  'BandwidthLimitExceeded',
77
26
  'EC2ThrottledException',
78
27
  'LimitExceededException',
@@ -87,19 +36,13 @@ var THROTTLING_ERROR_CODES = [
87
36
  'ThrottlingException',
88
37
  'TooManyRequestsException',
89
38
  ];
90
- var TIMEOUT_ERROR_CODES = [
39
+ const TIMEOUT_ERROR_CODES = [
91
40
  'TimeoutError',
92
41
  'RequestTimeout',
93
42
  'RequestTimeoutException',
94
43
  ];
95
- var isThrottlingError = function (statusCode, errorCode) {
96
- return statusCode === 429 ||
97
- (!!errorCode && THROTTLING_ERROR_CODES.includes(errorCode));
98
- };
99
- var isConnectionError = function (error) {
100
- return (error === null || error === void 0 ? void 0 : error['name']) === 'Network error';
101
- };
102
- var isServerSideError = function (statusCode, errorCode) {
103
- return (!!statusCode && [500, 502, 503, 504].includes(statusCode)) ||
104
- (!!errorCode && TIMEOUT_ERROR_CODES.includes(errorCode));
105
- };
44
+ const isThrottlingError = (statusCode, errorCode) => statusCode === 429 ||
45
+ (!!errorCode && THROTTLING_ERROR_CODES.includes(errorCode));
46
+ const isConnectionError = (error) => error?.['name'] === 'Network error';
47
+ const isServerSideError = (statusCode, errorCode) => (!!statusCode && [500, 502, 503, 504].includes(statusCode)) ||
48
+ (!!errorCode && TIMEOUT_ERROR_CODES.includes(errorCode));
@@ -4,7 +4,7 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.isClockSkewError = void 0;
6
6
  // via https://github.com/aws/aws-sdk-js-v3/blob/ab0e7be36e7e7f8a0c04834357aaad643c7912c3/packages/service-error-classification/src/constants.ts#L8
7
- var CLOCK_SKEW_ERROR_CODES = [
7
+ const CLOCK_SKEW_ERROR_CODES = [
8
8
  'AuthFailure',
9
9
  'InvalidSignatureException',
10
10
  'RequestExpired',
@@ -21,7 +21,5 @@ var CLOCK_SKEW_ERROR_CODES = [
21
21
  *
22
22
  * @internal
23
23
  */
24
- var isClockSkewError = function (errorCode) {
25
- return !!errorCode && CLOCK_SKEW_ERROR_CODES.includes(errorCode);
26
- };
24
+ const isClockSkewError = (errorCode) => !!errorCode && CLOCK_SKEW_ERROR_CODES.includes(errorCode);
27
25
  exports.isClockSkewError = isClockSkewError;
@@ -4,11 +4,11 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.jitteredBackoff = void 0;
6
6
  // TODO: [v6] The separate retry utility is used by Data packages now and will replaced by retry middleware.
7
- var utils_1 = require("../../../utils");
8
- var DEFAULT_MAX_DELAY_MS = 5 * 60 * 1000;
9
- var jitteredBackoff = function (attempt) {
10
- var delayFunction = (0, utils_1.jitteredBackoff)(DEFAULT_MAX_DELAY_MS);
11
- var delay = delayFunction(attempt);
7
+ const utils_1 = require("../../../utils");
8
+ const DEFAULT_MAX_DELAY_MS = 5 * 60 * 1000;
9
+ const jitteredBackoff = attempt => {
10
+ const delayFunction = (0, utils_1.jitteredBackoff)(DEFAULT_MAX_DELAY_MS);
11
+ const delay = delayFunction(attempt);
12
12
  // The delayFunction returns false when the delay is greater than the max delay(5 mins).
13
13
  // In this case, the retry middleware will delay 5 mins instead, as a ceiling of the delay.
14
14
  return delay === false ? DEFAULT_MAX_DELAY_MS : delay;
@@ -1,154 +1,90 @@
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
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
16
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17
- return new (P || (P = Promise))(function (resolve, reject) {
18
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
19
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
21
- step((generator = generator.apply(thisArg, _arguments || [])).next());
22
- });
23
- };
24
- var __generator = (this && this.__generator) || function (thisArg, body) {
25
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
26
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
27
- function verb(n) { return function (v) { return step([n, v]); }; }
28
- function step(op) {
29
- if (f) throw new TypeError("Generator is already executing.");
30
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
31
- 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;
32
- if (y = 0, t) op = [op[0] & 2, t.value];
33
- switch (op[0]) {
34
- case 0: case 1: t = op; break;
35
- case 4: _.label++; return { value: op[1], done: false };
36
- case 5: _.label++; y = op[1]; op = [0]; continue;
37
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
38
- default:
39
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
40
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
41
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
42
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
43
- if (t[2]) _.ops.pop();
44
- _.trys.pop(); continue;
45
- }
46
- op = body.call(thisArg, _);
47
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
48
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
49
- }
50
- };
51
4
  Object.defineProperty(exports, "__esModule", { value: true });
52
5
  exports.retryMiddleware = void 0;
53
- var DEFAULT_RETRY_ATTEMPTS = 3;
6
+ const DEFAULT_RETRY_ATTEMPTS = 3;
54
7
  /**
55
8
  * Retry middleware
56
9
  */
57
- var retryMiddleware = function (_a) {
58
- var _b = _a.maxAttempts, maxAttempts = _b === void 0 ? DEFAULT_RETRY_ATTEMPTS : _b, retryDecider = _a.retryDecider, computeDelay = _a.computeDelay, abortSignal = _a.abortSignal;
10
+ const retryMiddleware = ({ maxAttempts = DEFAULT_RETRY_ATTEMPTS, retryDecider, computeDelay, abortSignal, }) => {
59
11
  if (maxAttempts < 1) {
60
12
  throw new Error('maxAttempts must be greater than 0');
61
13
  }
62
- return function (next, context) {
63
- return function retryMiddleware(request) {
64
- var _a, _b, _c;
65
- return __awaiter(this, void 0, void 0, function () {
66
- var error, attemptsCount, response, handleTerminalErrorOrResponse, e_1, delay;
67
- return __generator(this, function (_d) {
68
- switch (_d.label) {
69
- case 0:
70
- attemptsCount = (_a = context.attemptsCount) !== null && _a !== void 0 ? _a : 0;
71
- handleTerminalErrorOrResponse = function () {
72
- if (response) {
73
- addOrIncrementMetadataAttempts(response, attemptsCount);
74
- return response;
75
- }
76
- else {
77
- addOrIncrementMetadataAttempts(error, attemptsCount);
78
- throw error;
79
- }
80
- };
81
- _d.label = 1;
82
- case 1:
83
- if (!(!(abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) && attemptsCount < maxAttempts)) return [3 /*break*/, 11];
84
- _d.label = 2;
85
- case 2:
86
- _d.trys.push([2, 4, , 5]);
87
- return [4 /*yield*/, next(request)];
88
- case 3:
89
- response = _d.sent();
90
- error = undefined;
91
- return [3 /*break*/, 5];
92
- case 4:
93
- e_1 = _d.sent();
94
- error = e_1;
95
- response = undefined;
96
- return [3 /*break*/, 5];
97
- case 5:
98
- // context.attemptsCount may be updated after calling next handler which may retry the request by itself.
99
- attemptsCount =
100
- ((_b = context.attemptsCount) !== null && _b !== void 0 ? _b : 0) > attemptsCount
101
- ? (_c = context.attemptsCount) !== null && _c !== void 0 ? _c : 0
102
- : attemptsCount + 1;
103
- context.attemptsCount = attemptsCount;
104
- return [4 /*yield*/, retryDecider(response, error)];
105
- case 6:
106
- if (!_d.sent()) return [3 /*break*/, 9];
107
- if (!(!(abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) && attemptsCount < maxAttempts)) return [3 /*break*/, 8];
108
- delay = computeDelay(attemptsCount);
109
- return [4 /*yield*/, cancellableSleep(delay, abortSignal)];
110
- case 7:
111
- _d.sent();
112
- _d.label = 8;
113
- case 8: return [3 /*break*/, 1];
114
- case 9: return [2 /*return*/, handleTerminalErrorOrResponse()];
115
- case 10: return [3 /*break*/, 1];
116
- case 11:
117
- if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {
118
- throw new Error('Request aborted.');
119
- }
120
- else {
121
- return [2 /*return*/, handleTerminalErrorOrResponse()];
122
- }
123
- return [2 /*return*/];
124
- }
125
- });
126
- });
14
+ return (next, context) => async function retryMiddleware(request) {
15
+ let error;
16
+ let attemptsCount = context.attemptsCount ?? 0;
17
+ let response;
18
+ // When retry is not needed or max attempts is reached, either error or response will be set. This function handles either cases.
19
+ const handleTerminalErrorOrResponse = () => {
20
+ if (response) {
21
+ addOrIncrementMetadataAttempts(response, attemptsCount);
22
+ return response;
23
+ }
24
+ else {
25
+ addOrIncrementMetadataAttempts(error, attemptsCount);
26
+ throw error;
27
+ }
127
28
  };
29
+ while (!abortSignal?.aborted && attemptsCount < maxAttempts) {
30
+ try {
31
+ response = await next(request);
32
+ error = undefined;
33
+ }
34
+ catch (e) {
35
+ error = e;
36
+ response = undefined;
37
+ }
38
+ // context.attemptsCount may be updated after calling next handler which may retry the request by itself.
39
+ attemptsCount =
40
+ (context.attemptsCount ?? 0) > attemptsCount
41
+ ? context.attemptsCount ?? 0
42
+ : attemptsCount + 1;
43
+ context.attemptsCount = attemptsCount;
44
+ if (await retryDecider(response, error)) {
45
+ if (!abortSignal?.aborted && attemptsCount < maxAttempts) {
46
+ // prevent sleep for last attempt or cancelled request;
47
+ const delay = computeDelay(attemptsCount);
48
+ await cancellableSleep(delay, abortSignal);
49
+ }
50
+ continue;
51
+ }
52
+ else {
53
+ return handleTerminalErrorOrResponse();
54
+ }
55
+ }
56
+ if (abortSignal?.aborted) {
57
+ throw new Error('Request aborted.');
58
+ }
59
+ else {
60
+ return handleTerminalErrorOrResponse();
61
+ }
128
62
  };
129
63
  };
130
64
  exports.retryMiddleware = retryMiddleware;
131
- var cancellableSleep = function (timeoutMs, abortSignal) {
132
- if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {
65
+ const cancellableSleep = (timeoutMs, abortSignal) => {
66
+ if (abortSignal?.aborted) {
133
67
  return Promise.resolve();
134
68
  }
135
- var timeoutId;
136
- var sleepPromiseResolveFn;
137
- var sleepPromise = new Promise(function (resolve) {
69
+ let timeoutId;
70
+ let sleepPromiseResolveFn;
71
+ const sleepPromise = new Promise(resolve => {
138
72
  sleepPromiseResolveFn = resolve;
139
73
  timeoutId = setTimeout(resolve, timeoutMs);
140
74
  });
141
- abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener('abort', function cancelSleep(event) {
75
+ abortSignal?.addEventListener('abort', function cancelSleep(event) {
142
76
  clearTimeout(timeoutId);
143
- abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener('abort', cancelSleep);
77
+ abortSignal?.removeEventListener('abort', cancelSleep);
144
78
  sleepPromiseResolveFn();
145
79
  });
146
80
  return sleepPromise;
147
81
  };
148
- var addOrIncrementMetadataAttempts = function (nextHandlerOutput, attempts) {
149
- var _a;
82
+ const addOrIncrementMetadataAttempts = (nextHandlerOutput, attempts) => {
150
83
  if (Object.prototype.toString.call(nextHandlerOutput) !== '[object Object]') {
151
84
  return;
152
85
  }
153
- nextHandlerOutput['$metadata'] = __assign(__assign({}, ((_a = nextHandlerOutput['$metadata']) !== null && _a !== void 0 ? _a : {})), { attempts: attempts });
86
+ nextHandlerOutput['$metadata'] = {
87
+ ...(nextHandlerOutput['$metadata'] ?? {}),
88
+ attempts,
89
+ };
154
90
  };
@@ -1,99 +1,37 @@
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.signingMiddleware = void 0;
42
- var signatureV4_1 = require("./signer/signatureV4");
43
- var getSkewCorrectedDate_1 = require("./utils/getSkewCorrectedDate");
44
- var getUpdatedSystemClockOffset_1 = require("./utils/getUpdatedSystemClockOffset");
6
+ const signatureV4_1 = require("./signer/signatureV4");
7
+ const getSkewCorrectedDate_1 = require("./utils/getSkewCorrectedDate");
8
+ const getUpdatedSystemClockOffset_1 = require("./utils/getUpdatedSystemClockOffset");
45
9
  /**
46
10
  * Middleware that SigV4 signs request with AWS credentials, and correct system clock offset.
47
11
  * This middleware is expected to be placed after retry middleware.
48
12
  */
49
- var signingMiddleware = function (_a) {
50
- var credentials = _a.credentials, region = _a.region, service = _a.service, _b = _a.uriEscapePath, uriEscapePath = _b === void 0 ? true : _b;
51
- var currentSystemClockOffset;
52
- return function (next) {
53
- return function signingMiddleware(request) {
54
- return __awaiter(this, void 0, void 0, function () {
55
- var signRequestOptions, _a, signedRequest, response, dateString;
56
- var _b;
57
- return __generator(this, function (_c) {
58
- switch (_c.label) {
59
- case 0:
60
- currentSystemClockOffset = currentSystemClockOffset !== null && currentSystemClockOffset !== void 0 ? currentSystemClockOffset : 0;
61
- _b = {};
62
- if (!(typeof credentials === 'function')) return [3 /*break*/, 2];
63
- return [4 /*yield*/, credentials()];
64
- case 1:
65
- _a = _c.sent();
66
- return [3 /*break*/, 3];
67
- case 2:
68
- _a = credentials;
69
- _c.label = 3;
70
- case 3:
71
- signRequestOptions = (_b.credentials = _a,
72
- _b.signingDate = (0, getSkewCorrectedDate_1.getSkewCorrectedDate)(currentSystemClockOffset),
73
- _b.signingRegion = region,
74
- _b.signingService = service,
75
- _b.uriEscapePath = uriEscapePath,
76
- _b);
77
- return [4 /*yield*/, (0, signatureV4_1.signRequest)(request, signRequestOptions)];
78
- case 4:
79
- signedRequest = _c.sent();
80
- return [4 /*yield*/, next(signedRequest)];
81
- case 5:
82
- response = _c.sent();
83
- dateString = getDateHeader(response);
84
- if (dateString) {
85
- currentSystemClockOffset = (0, getUpdatedSystemClockOffset_1.getUpdatedSystemClockOffset)(Date.parse(dateString), currentSystemClockOffset);
86
- }
87
- return [2 /*return*/, response];
88
- }
89
- });
90
- });
13
+ const signingMiddleware = ({ credentials, region, service, uriEscapePath = true, }) => {
14
+ let currentSystemClockOffset;
15
+ return (next) => async function signingMiddleware(request) {
16
+ currentSystemClockOffset = currentSystemClockOffset ?? 0;
17
+ const signRequestOptions = {
18
+ credentials: typeof credentials === 'function' ? await credentials() : credentials,
19
+ signingDate: (0, getSkewCorrectedDate_1.getSkewCorrectedDate)(currentSystemClockOffset),
20
+ signingRegion: region,
21
+ signingService: service,
22
+ uriEscapePath,
91
23
  };
24
+ const signedRequest = await (0, signatureV4_1.signRequest)(request, signRequestOptions);
25
+ const response = await next(signedRequest);
26
+ // Update system clock offset if response contains date header, regardless of the status code.
27
+ // non-2xx response will still be returned from next handler instead of thrown, because it's
28
+ // only thrown by the retry middleware.
29
+ const dateString = getDateHeader(response);
30
+ if (dateString) {
31
+ currentSystemClockOffset = (0, getUpdatedSystemClockOffset_1.getUpdatedSystemClockOffset)(Date.parse(dateString), currentSystemClockOffset);
32
+ }
33
+ return response;
92
34
  };
93
35
  };
94
36
  exports.signingMiddleware = signingMiddleware;
95
- var getDateHeader = function (_a) {
96
- var _b, _c;
97
- var _d = _a === void 0 ? {} : _a, headers = _d.headers;
98
- return (_c = (_b = headers === null || headers === void 0 ? void 0 : headers.date) !== null && _b !== void 0 ? _b : headers === null || headers === void 0 ? void 0 : headers.Date) !== null && _c !== void 0 ? _c : headers === null || headers === void 0 ? void 0 : headers['x-amz-date'];
99
- };
37
+ const getDateHeader = ({ headers } = {}) => headers?.date ?? headers?.Date ?? headers?.['x-amz-date'];
@@ -3,7 +3,6 @@
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.getHashedPayload = exports.TOKEN_QUERY_PARAM = exports.presignUrl = exports.signRequest = void 0;
6
- // TODO: V6 replace Signer
7
6
  var signRequest_1 = require("./signRequest");
8
7
  Object.defineProperty(exports, "signRequest", { enumerable: true, get: function () { return signRequest_1.signRequest; } });
9
8
  var presignUrl_1 = require("./presignUrl");
@@ -1,50 +1,12 @@
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
- var __rest = (this && this.__rest) || function (s, e) {
16
- var t = {};
17
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
18
- t[p] = s[p];
19
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
20
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
21
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
22
- t[p[i]] = s[p[i]];
23
- }
24
- return t;
25
- };
26
- var __read = (this && this.__read) || function (o, n) {
27
- var m = typeof Symbol === "function" && o[Symbol.iterator];
28
- if (!m) return o;
29
- var i = m.call(o), r, ar = [], e;
30
- try {
31
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
32
- }
33
- catch (error) { e = { error: error }; }
34
- finally {
35
- try {
36
- if (r && !r.done && (m = i["return"])) m.call(i);
37
- }
38
- finally { if (e) throw e.error; }
39
- }
40
- return ar;
41
- };
42
4
  Object.defineProperty(exports, "__esModule", { value: true });
43
5
  exports.presignUrl = void 0;
44
- var constants_1 = require("./constants");
45
- var getSigningValues_1 = require("./utils/getSigningValues");
46
- var getSignature_1 = require("./utils/getSignature");
47
- var amplifyUrl_1 = require("../../../../../utils/amplifyUrl");
6
+ const constants_1 = require("./constants");
7
+ const getSigningValues_1 = require("./utils/getSigningValues");
8
+ const getSignature_1 = require("./utils/getSignature");
9
+ const amplifyUrl_1 = require("../../../../../utils/amplifyUrl");
48
10
  /**
49
11
  * Given a `Presignable` object, returns a Signature Version 4 presigned `URL` object.
50
12
  *
@@ -52,27 +14,30 @@ var amplifyUrl_1 = require("../../../../../utils/amplifyUrl");
52
14
  * @param presignUrlOptions `PresignUrlOptions` object containing values used to construct the signature.
53
15
  * @returns A `URL` with authentication query params which can grant temporary access to AWS resources.
54
16
  */
55
- var presignUrl = function (_a, _b) {
56
- var _c, _d, _e, _f;
57
- var body = _a.body, _g = _a.method, method = _g === void 0 ? 'GET' : _g, url = _a.url;
58
- var expiration = _b.expiration, options = __rest(_b, ["expiration"]);
59
- var signingValues = (0, getSigningValues_1.getSigningValues)(options);
60
- var accessKeyId = signingValues.accessKeyId, credentialScope = signingValues.credentialScope, longDate = signingValues.longDate, sessionToken = signingValues.sessionToken;
17
+ const presignUrl = ({ body, method = 'GET', url }, { expiration, ...options }) => {
18
+ const signingValues = (0, getSigningValues_1.getSigningValues)(options);
19
+ const { accessKeyId, credentialScope, longDate, sessionToken } = signingValues;
61
20
  // create the request to sign
62
21
  // @ts-ignore URL constructor accepts a URL object
63
- var presignedUrl = new amplifyUrl_1.AmplifyUrl(url);
64
- Object.entries(__assign(__assign((_c = {}, _c[constants_1.ALGORITHM_QUERY_PARAM] = constants_1.SHA256_ALGORITHM_IDENTIFIER, _c[constants_1.CREDENTIAL_QUERY_PARAM] = "".concat(accessKeyId, "/").concat(credentialScope), _c[constants_1.AMZ_DATE_QUERY_PARAM] = longDate, _c[constants_1.SIGNED_HEADERS_QUERY_PARAM] = constants_1.HOST_HEADER, _c), (expiration && (_d = {}, _d[constants_1.EXPIRES_QUERY_PARAM] = expiration.toString(), _d))), (sessionToken && (_e = {}, _e[constants_1.TOKEN_QUERY_PARAM] = sessionToken, _e)))).forEach(function (_a) {
65
- var _b = __read(_a, 2), key = _b[0], value = _b[1];
22
+ const presignedUrl = new amplifyUrl_1.AmplifyUrl(url);
23
+ Object.entries({
24
+ [constants_1.ALGORITHM_QUERY_PARAM]: constants_1.SHA256_ALGORITHM_IDENTIFIER,
25
+ [constants_1.CREDENTIAL_QUERY_PARAM]: `${accessKeyId}/${credentialScope}`,
26
+ [constants_1.AMZ_DATE_QUERY_PARAM]: longDate,
27
+ [constants_1.SIGNED_HEADERS_QUERY_PARAM]: constants_1.HOST_HEADER,
28
+ ...(expiration && { [constants_1.EXPIRES_QUERY_PARAM]: expiration.toString() }),
29
+ ...(sessionToken && { [constants_1.TOKEN_QUERY_PARAM]: sessionToken }),
30
+ }).forEach(([key, value]) => {
66
31
  presignedUrl.searchParams.append(key, value);
67
32
  });
68
- var requestToSign = {
69
- body: body,
70
- headers: (_f = {}, _f[constants_1.HOST_HEADER] = url.host, _f),
71
- method: method,
33
+ const requestToSign = {
34
+ body,
35
+ headers: { [constants_1.HOST_HEADER]: url.host },
36
+ method,
72
37
  url: presignedUrl,
73
38
  };
74
39
  // calculate and add the signature to the url
75
- var signature = (0, getSignature_1.getSignature)(requestToSign, signingValues);
40
+ const signature = (0, getSignature_1.getSignature)(requestToSign, signingValues);
76
41
  presignedUrl.searchParams.append(constants_1.SIGNATURE_QUERY_PARAM, signature);
77
42
  return presignedUrl;
78
43
  };