@azure/storage-blob 12.29.1 → 12.30.0-alpha.20251111.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/BlobBatch.d.ts +1 -2
- package/dist/browser/BlobBatch.d.ts.map +1 -1
- package/dist/browser/BlobBatch.js +1 -3
- package/dist/browser/BlobBatch.js.map +1 -1
- package/dist/browser/BlobBatchClient.d.ts +1 -2
- package/dist/browser/BlobBatchClient.d.ts.map +1 -1
- package/dist/browser/BlobBatchClient.js +1 -1
- package/dist/browser/BlobBatchClient.js.map +1 -1
- package/dist/browser/BlobServiceClient.d.ts +1 -2
- package/dist/browser/BlobServiceClient.d.ts.map +1 -1
- package/dist/browser/BlobServiceClient.js +1 -2
- package/dist/browser/BlobServiceClient.js.map +1 -1
- package/dist/browser/Clients.d.ts +1 -2
- package/dist/browser/Clients.d.ts.map +1 -1
- package/dist/browser/Clients.js +1 -2
- package/dist/browser/Clients.js.map +1 -1
- package/dist/browser/ContainerClient.d.ts +1 -2
- package/dist/browser/ContainerClient.d.ts.map +1 -1
- package/dist/browser/ContainerClient.js +1 -2
- package/dist/browser/ContainerClient.js.map +1 -1
- package/dist/browser/Pipeline.d.ts +2 -3
- package/dist/browser/Pipeline.d.ts.map +1 -1
- package/dist/browser/Pipeline.js +1 -9
- package/dist/browser/Pipeline.js.map +1 -1
- package/dist/browser/StorageClient.d.ts +1 -2
- package/dist/browser/StorageClient.d.ts.map +1 -1
- package/dist/browser/StorageClient.js.map +1 -1
- package/dist/browser/index-browser.d.mts.map +1 -1
- package/dist/browser/index-browser.mjs.map +1 -1
- package/dist/browser/index.d.ts +1 -7
- package/dist/browser/index.js +2 -7
- package/dist/browser/sas/AccountSASSignatureValues.d.ts +1 -1
- package/dist/browser/sas/AccountSASSignatureValues.d.ts.map +1 -1
- package/dist/browser/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/browser/sas/BlobSASSignatureValues.d.ts +1 -1
- package/dist/browser/sas/BlobSASSignatureValues.d.ts.map +1 -1
- package/dist/browser/sas/BlobSASSignatureValues.js +1 -1
- package/dist/browser/sas/BlobSASSignatureValues.js.map +1 -1
- package/dist/browser/utils/constants.js +1 -1
- package/dist/browser/utils/constants.js.map +1 -1
- package/dist/commonjs/BlobBatch.d.ts +1 -2
- package/dist/commonjs/BlobBatch.d.ts.map +1 -1
- package/dist/commonjs/BlobBatch.js +7 -9
- package/dist/commonjs/BlobBatch.js.map +1 -1
- package/dist/commonjs/BlobBatchClient.d.ts +1 -2
- package/dist/commonjs/BlobBatchClient.d.ts.map +1 -1
- package/dist/commonjs/BlobBatchClient.js +2 -2
- package/dist/commonjs/BlobBatchClient.js.map +1 -1
- package/dist/commonjs/BlobServiceClient.d.ts +1 -2
- package/dist/commonjs/BlobServiceClient.d.ts.map +1 -1
- package/dist/commonjs/BlobServiceClient.js +8 -9
- package/dist/commonjs/BlobServiceClient.js.map +1 -1
- package/dist/commonjs/Clients.d.ts +1 -2
- package/dist/commonjs/Clients.d.ts.map +1 -1
- package/dist/commonjs/Clients.js +25 -26
- package/dist/commonjs/Clients.js.map +1 -1
- package/dist/commonjs/ContainerClient.d.ts +1 -2
- package/dist/commonjs/ContainerClient.d.ts.map +1 -1
- package/dist/commonjs/ContainerClient.js +8 -9
- package/dist/commonjs/ContainerClient.js.map +1 -1
- package/dist/commonjs/Pipeline.d.ts +2 -3
- package/dist/commonjs/Pipeline.d.ts.map +1 -1
- package/dist/commonjs/Pipeline.js +12 -20
- package/dist/commonjs/Pipeline.js.map +1 -1
- package/dist/commonjs/StorageClient.d.ts +1 -2
- package/dist/commonjs/StorageClient.d.ts.map +1 -1
- package/dist/commonjs/StorageClient.js.map +1 -1
- package/dist/commonjs/index.d.ts +1 -10
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +14 -12
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/sas/AccountSASSignatureValues.d.ts +1 -1
- package/dist/commonjs/sas/AccountSASSignatureValues.d.ts.map +1 -1
- package/dist/commonjs/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/commonjs/sas/BlobSASSignatureValues.d.ts +1 -1
- package/dist/commonjs/sas/BlobSASSignatureValues.d.ts.map +1 -1
- package/dist/commonjs/sas/BlobSASSignatureValues.js +2 -2
- package/dist/commonjs/sas/BlobSASSignatureValues.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/utils/constants.js +1 -1
- package/dist/commonjs/utils/constants.js.map +1 -1
- package/dist/esm/BlobBatch.d.ts +1 -2
- package/dist/esm/BlobBatch.d.ts.map +1 -1
- package/dist/esm/BlobBatch.js +1 -3
- package/dist/esm/BlobBatch.js.map +1 -1
- package/dist/esm/BlobBatchClient.d.ts +1 -2
- package/dist/esm/BlobBatchClient.d.ts.map +1 -1
- package/dist/esm/BlobBatchClient.js +1 -1
- package/dist/esm/BlobBatchClient.js.map +1 -1
- package/dist/esm/BlobServiceClient.d.ts +1 -2
- package/dist/esm/BlobServiceClient.d.ts.map +1 -1
- package/dist/esm/BlobServiceClient.js +1 -2
- package/dist/esm/BlobServiceClient.js.map +1 -1
- package/dist/esm/Clients.d.ts +1 -2
- package/dist/esm/Clients.d.ts.map +1 -1
- package/dist/esm/Clients.js +1 -2
- package/dist/esm/Clients.js.map +1 -1
- package/dist/esm/ContainerClient.d.ts +1 -2
- package/dist/esm/ContainerClient.d.ts.map +1 -1
- package/dist/esm/ContainerClient.js +1 -2
- package/dist/esm/ContainerClient.js.map +1 -1
- package/dist/esm/Pipeline.d.ts +2 -3
- package/dist/esm/Pipeline.d.ts.map +1 -1
- package/dist/esm/Pipeline.js +1 -9
- package/dist/esm/Pipeline.js.map +1 -1
- package/dist/esm/StorageClient.d.ts +1 -2
- package/dist/esm/StorageClient.d.ts.map +1 -1
- package/dist/esm/StorageClient.js.map +1 -1
- package/dist/esm/index.d.ts +1 -10
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/sas/AccountSASSignatureValues.d.ts +1 -1
- package/dist/esm/sas/AccountSASSignatureValues.d.ts.map +1 -1
- package/dist/esm/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/esm/sas/BlobSASSignatureValues.d.ts +1 -1
- package/dist/esm/sas/BlobSASSignatureValues.d.ts.map +1 -1
- package/dist/esm/sas/BlobSASSignatureValues.js +1 -1
- package/dist/esm/sas/BlobSASSignatureValues.js.map +1 -1
- package/dist/esm/utils/constants.js +1 -1
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/react-native/BlobBatch.d.ts +1 -2
- package/dist/react-native/BlobBatch.d.ts.map +1 -1
- package/dist/react-native/BlobBatch.js +1 -3
- package/dist/react-native/BlobBatch.js.map +1 -1
- package/dist/react-native/BlobBatchClient.d.ts +1 -2
- package/dist/react-native/BlobBatchClient.d.ts.map +1 -1
- package/dist/react-native/BlobBatchClient.js +1 -1
- package/dist/react-native/BlobBatchClient.js.map +1 -1
- package/dist/react-native/BlobServiceClient.d.ts +1 -2
- package/dist/react-native/BlobServiceClient.d.ts.map +1 -1
- package/dist/react-native/BlobServiceClient.js +1 -2
- package/dist/react-native/BlobServiceClient.js.map +1 -1
- package/dist/react-native/Clients.d.ts +1 -2
- package/dist/react-native/Clients.d.ts.map +1 -1
- package/dist/react-native/Clients.js +1 -2
- package/dist/react-native/Clients.js.map +1 -1
- package/dist/react-native/ContainerClient.d.ts +1 -2
- package/dist/react-native/ContainerClient.d.ts.map +1 -1
- package/dist/react-native/ContainerClient.js +1 -2
- package/dist/react-native/ContainerClient.js.map +1 -1
- package/dist/react-native/Pipeline.d.ts +2 -3
- package/dist/react-native/Pipeline.d.ts.map +1 -1
- package/dist/react-native/Pipeline.js +1 -9
- package/dist/react-native/Pipeline.js.map +1 -1
- package/dist/react-native/StorageClient.d.ts +1 -2
- package/dist/react-native/StorageClient.d.ts.map +1 -1
- package/dist/react-native/StorageClient.js.map +1 -1
- package/dist/react-native/index.d.ts +1 -10
- package/dist/react-native/index.d.ts.map +1 -1
- package/dist/react-native/index.js +1 -10
- package/dist/react-native/index.js.map +1 -1
- package/dist/react-native/sas/AccountSASSignatureValues.d.ts +1 -1
- package/dist/react-native/sas/AccountSASSignatureValues.d.ts.map +1 -1
- package/dist/react-native/sas/AccountSASSignatureValues.js.map +1 -1
- package/dist/react-native/sas/BlobSASSignatureValues.d.ts +1 -1
- package/dist/react-native/sas/BlobSASSignatureValues.d.ts.map +1 -1
- package/dist/react-native/sas/BlobSASSignatureValues.js +1 -1
- package/dist/react-native/sas/BlobSASSignatureValues.js.map +1 -1
- package/dist/react-native/utils/constants.js +1 -1
- package/dist/react-native/utils/constants.js.map +1 -1
- package/package.json +18 -18
- package/dist/browser/StorageBrowserPolicyFactory.d.ts +0 -16
- package/dist/browser/StorageBrowserPolicyFactory.d.ts.map +0 -1
- package/dist/browser/StorageBrowserPolicyFactory.js +0 -19
- package/dist/browser/StorageBrowserPolicyFactory.js.map +0 -1
- package/dist/browser/StorageRetryPolicyFactory.d.ts +0 -66
- package/dist/browser/StorageRetryPolicyFactory.d.ts.map +0 -1
- package/dist/browser/StorageRetryPolicyFactory.js +0 -28
- package/dist/browser/StorageRetryPolicyFactory.js.map +0 -1
- package/dist/browser/credentials/AnonymousCredential.d.ts +0 -19
- package/dist/browser/credentials/AnonymousCredential.d.ts.map +0 -1
- package/dist/browser/credentials/AnonymousCredential.js +0 -22
- package/dist/browser/credentials/AnonymousCredential.js.map +0 -1
- package/dist/browser/credentials/Credential.d.ts +0 -20
- package/dist/browser/credentials/Credential.d.ts.map +0 -1
- package/dist/browser/credentials/Credential.js +0 -18
- package/dist/browser/credentials/Credential.js.map +0 -1
- package/dist/browser/credentials/StorageSharedKeyCredential-browser.d.mts.map +0 -1
- package/dist/browser/credentials/StorageSharedKeyCredential-browser.mjs.map +0 -1
- package/dist/browser/credentials/StorageSharedKeyCredential.d.ts +0 -3
- package/dist/browser/credentials/StorageSharedKeyCredential.js +0 -5
- package/dist/browser/policies/AnonymousCredentialPolicy.d.ts +0 -15
- package/dist/browser/policies/AnonymousCredentialPolicy.d.ts.map +0 -1
- package/dist/browser/policies/AnonymousCredentialPolicy.js +0 -20
- package/dist/browser/policies/AnonymousCredentialPolicy.js.map +0 -1
- package/dist/browser/policies/CredentialPolicy.d.ts +0 -22
- package/dist/browser/policies/CredentialPolicy.d.ts.map +0 -1
- package/dist/browser/policies/CredentialPolicy.js +0 -29
- package/dist/browser/policies/CredentialPolicy.js.map +0 -1
- package/dist/browser/policies/RequestPolicy.d.ts +0 -45
- package/dist/browser/policies/RequestPolicy.d.ts.map +0 -1
- package/dist/browser/policies/RequestPolicy.js +0 -42
- package/dist/browser/policies/RequestPolicy.js.map +0 -1
- package/dist/browser/policies/StorageBrowserPolicy.d.ts +0 -28
- package/dist/browser/policies/StorageBrowserPolicy.d.ts.map +0 -1
- package/dist/browser/policies/StorageBrowserPolicy.js +0 -47
- package/dist/browser/policies/StorageBrowserPolicy.js.map +0 -1
- package/dist/browser/policies/StorageBrowserPolicyV2.d.ts +0 -11
- package/dist/browser/policies/StorageBrowserPolicyV2.d.ts.map +0 -1
- package/dist/browser/policies/StorageBrowserPolicyV2.js +0 -31
- package/dist/browser/policies/StorageBrowserPolicyV2.js.map +0 -1
- package/dist/browser/policies/StorageCorrectContentLengthPolicy-browser.d.mts.map +0 -1
- package/dist/browser/policies/StorageCorrectContentLengthPolicy-browser.mjs.map +0 -1
- package/dist/browser/policies/StorageCorrectContentLengthPolicy.d.ts +0 -10
- package/dist/browser/policies/StorageCorrectContentLengthPolicy.js +0 -18
- package/dist/browser/policies/StorageRetryPolicy.d.ts +0 -62
- package/dist/browser/policies/StorageRetryPolicy.d.ts.map +0 -1
- package/dist/browser/policies/StorageRetryPolicy.js +0 -219
- package/dist/browser/policies/StorageRetryPolicy.js.map +0 -1
- package/dist/browser/policies/StorageRetryPolicyType.d.ts +0 -14
- package/dist/browser/policies/StorageRetryPolicyType.d.ts.map +0 -1
- package/dist/browser/policies/StorageRetryPolicyType.js +0 -17
- package/dist/browser/policies/StorageRetryPolicyType.js.map +0 -1
- package/dist/browser/policies/StorageRetryPolicyV2.d.ts +0 -11
- package/dist/browser/policies/StorageRetryPolicyV2.d.ts.map +0 -1
- package/dist/browser/policies/StorageRetryPolicyV2.js +0 -164
- package/dist/browser/policies/StorageRetryPolicyV2.js.map +0 -1
- package/dist/browser/policies/StorageSharedKeyCredentialPolicy.d.ts +0 -54
- package/dist/browser/policies/StorageSharedKeyCredentialPolicy.d.ts.map +0 -1
- package/dist/browser/policies/StorageSharedKeyCredentialPolicy.js +0 -145
- package/dist/browser/policies/StorageSharedKeyCredentialPolicy.js.map +0 -1
- package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2-browser.d.mts.map +0 -1
- package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2-browser.mjs.map +0 -1
- package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2.d.ts +0 -17
- package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2.js +0 -18
- package/dist/commonjs/StorageBrowserPolicyFactory.d.ts +0 -16
- package/dist/commonjs/StorageBrowserPolicyFactory.d.ts.map +0 -1
- package/dist/commonjs/StorageBrowserPolicyFactory.js +0 -23
- package/dist/commonjs/StorageBrowserPolicyFactory.js.map +0 -1
- package/dist/commonjs/StorageRetryPolicyFactory.d.ts +0 -66
- package/dist/commonjs/StorageRetryPolicyFactory.d.ts.map +0 -1
- package/dist/commonjs/StorageRetryPolicyFactory.js +0 -33
- package/dist/commonjs/StorageRetryPolicyFactory.js.map +0 -1
- package/dist/commonjs/credentials/AnonymousCredential.d.ts +0 -19
- package/dist/commonjs/credentials/AnonymousCredential.d.ts.map +0 -1
- package/dist/commonjs/credentials/AnonymousCredential.js +0 -26
- package/dist/commonjs/credentials/AnonymousCredential.js.map +0 -1
- package/dist/commonjs/credentials/Credential.d.ts +0 -20
- package/dist/commonjs/credentials/Credential.d.ts.map +0 -1
- package/dist/commonjs/credentials/Credential.js +0 -22
- package/dist/commonjs/credentials/Credential.js.map +0 -1
- package/dist/commonjs/credentials/StorageSharedKeyCredential.d.ts +0 -38
- package/dist/commonjs/credentials/StorageSharedKeyCredential.d.ts.map +0 -1
- package/dist/commonjs/credentials/StorageSharedKeyCredential.js +0 -52
- package/dist/commonjs/credentials/StorageSharedKeyCredential.js.map +0 -1
- package/dist/commonjs/policies/AnonymousCredentialPolicy.d.ts +0 -15
- package/dist/commonjs/policies/AnonymousCredentialPolicy.d.ts.map +0 -1
- package/dist/commonjs/policies/AnonymousCredentialPolicy.js +0 -24
- package/dist/commonjs/policies/AnonymousCredentialPolicy.js.map +0 -1
- package/dist/commonjs/policies/CredentialPolicy.d.ts +0 -22
- package/dist/commonjs/policies/CredentialPolicy.d.ts.map +0 -1
- package/dist/commonjs/policies/CredentialPolicy.js +0 -33
- package/dist/commonjs/policies/CredentialPolicy.js.map +0 -1
- package/dist/commonjs/policies/RequestPolicy.d.ts +0 -45
- package/dist/commonjs/policies/RequestPolicy.d.ts.map +0 -1
- package/dist/commonjs/policies/RequestPolicy.js +0 -46
- package/dist/commonjs/policies/RequestPolicy.js.map +0 -1
- package/dist/commonjs/policies/StorageBrowserPolicy.d.ts +0 -28
- package/dist/commonjs/policies/StorageBrowserPolicy.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageBrowserPolicy.js +0 -51
- package/dist/commonjs/policies/StorageBrowserPolicy.js.map +0 -1
- package/dist/commonjs/policies/StorageBrowserPolicyV2.d.ts +0 -11
- package/dist/commonjs/policies/StorageBrowserPolicyV2.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageBrowserPolicyV2.js +0 -35
- package/dist/commonjs/policies/StorageBrowserPolicyV2.js.map +0 -1
- package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.d.ts +0 -10
- package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.js +0 -31
- package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.js.map +0 -1
- package/dist/commonjs/policies/StorageRetryPolicy.d.ts +0 -62
- package/dist/commonjs/policies/StorageRetryPolicy.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageRetryPolicy.js +0 -224
- package/dist/commonjs/policies/StorageRetryPolicy.js.map +0 -1
- package/dist/commonjs/policies/StorageRetryPolicyType.d.ts +0 -14
- package/dist/commonjs/policies/StorageRetryPolicyType.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageRetryPolicyType.js +0 -20
- package/dist/commonjs/policies/StorageRetryPolicyType.js.map +0 -1
- package/dist/commonjs/policies/StorageRetryPolicyV2.d.ts +0 -11
- package/dist/commonjs/policies/StorageRetryPolicyV2.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageRetryPolicyV2.js +0 -168
- package/dist/commonjs/policies/StorageRetryPolicyV2.js.map +0 -1
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.d.ts +0 -54
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.js +0 -149
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.js.map +0 -1
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.d.ts +0 -17
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.d.ts.map +0 -1
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.js +0 -136
- package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.js.map +0 -1
- package/dist/esm/StorageBrowserPolicyFactory.d.ts +0 -16
- package/dist/esm/StorageBrowserPolicyFactory.d.ts.map +0 -1
- package/dist/esm/StorageBrowserPolicyFactory.js +0 -19
- package/dist/esm/StorageBrowserPolicyFactory.js.map +0 -1
- package/dist/esm/StorageRetryPolicyFactory.d.ts +0 -66
- package/dist/esm/StorageRetryPolicyFactory.d.ts.map +0 -1
- package/dist/esm/StorageRetryPolicyFactory.js +0 -28
- package/dist/esm/StorageRetryPolicyFactory.js.map +0 -1
- package/dist/esm/credentials/AnonymousCredential.d.ts +0 -19
- package/dist/esm/credentials/AnonymousCredential.d.ts.map +0 -1
- package/dist/esm/credentials/AnonymousCredential.js +0 -22
- package/dist/esm/credentials/AnonymousCredential.js.map +0 -1
- package/dist/esm/credentials/Credential.d.ts +0 -20
- package/dist/esm/credentials/Credential.d.ts.map +0 -1
- package/dist/esm/credentials/Credential.js +0 -18
- package/dist/esm/credentials/Credential.js.map +0 -1
- package/dist/esm/credentials/StorageSharedKeyCredential.d.ts +0 -38
- package/dist/esm/credentials/StorageSharedKeyCredential.d.ts.map +0 -1
- package/dist/esm/credentials/StorageSharedKeyCredential.js +0 -48
- package/dist/esm/credentials/StorageSharedKeyCredential.js.map +0 -1
- package/dist/esm/policies/AnonymousCredentialPolicy.d.ts +0 -15
- package/dist/esm/policies/AnonymousCredentialPolicy.d.ts.map +0 -1
- package/dist/esm/policies/AnonymousCredentialPolicy.js +0 -20
- package/dist/esm/policies/AnonymousCredentialPolicy.js.map +0 -1
- package/dist/esm/policies/CredentialPolicy.d.ts +0 -22
- package/dist/esm/policies/CredentialPolicy.d.ts.map +0 -1
- package/dist/esm/policies/CredentialPolicy.js +0 -29
- package/dist/esm/policies/CredentialPolicy.js.map +0 -1
- package/dist/esm/policies/RequestPolicy.d.ts +0 -45
- package/dist/esm/policies/RequestPolicy.d.ts.map +0 -1
- package/dist/esm/policies/RequestPolicy.js +0 -42
- package/dist/esm/policies/RequestPolicy.js.map +0 -1
- package/dist/esm/policies/StorageBrowserPolicy.d.ts +0 -28
- package/dist/esm/policies/StorageBrowserPolicy.d.ts.map +0 -1
- package/dist/esm/policies/StorageBrowserPolicy.js +0 -47
- package/dist/esm/policies/StorageBrowserPolicy.js.map +0 -1
- package/dist/esm/policies/StorageBrowserPolicyV2.d.ts +0 -11
- package/dist/esm/policies/StorageBrowserPolicyV2.d.ts.map +0 -1
- package/dist/esm/policies/StorageBrowserPolicyV2.js +0 -31
- package/dist/esm/policies/StorageBrowserPolicyV2.js.map +0 -1
- package/dist/esm/policies/StorageCorrectContentLengthPolicy.d.ts +0 -10
- package/dist/esm/policies/StorageCorrectContentLengthPolicy.d.ts.map +0 -1
- package/dist/esm/policies/StorageCorrectContentLengthPolicy.js +0 -27
- package/dist/esm/policies/StorageCorrectContentLengthPolicy.js.map +0 -1
- package/dist/esm/policies/StorageRetryPolicy.d.ts +0 -62
- package/dist/esm/policies/StorageRetryPolicy.d.ts.map +0 -1
- package/dist/esm/policies/StorageRetryPolicy.js +0 -219
- package/dist/esm/policies/StorageRetryPolicy.js.map +0 -1
- package/dist/esm/policies/StorageRetryPolicyType.d.ts +0 -14
- package/dist/esm/policies/StorageRetryPolicyType.d.ts.map +0 -1
- package/dist/esm/policies/StorageRetryPolicyType.js +0 -17
- package/dist/esm/policies/StorageRetryPolicyType.js.map +0 -1
- package/dist/esm/policies/StorageRetryPolicyV2.d.ts +0 -11
- package/dist/esm/policies/StorageRetryPolicyV2.d.ts.map +0 -1
- package/dist/esm/policies/StorageRetryPolicyV2.js +0 -164
- package/dist/esm/policies/StorageRetryPolicyV2.js.map +0 -1
- package/dist/esm/policies/StorageSharedKeyCredentialPolicy.d.ts +0 -54
- package/dist/esm/policies/StorageSharedKeyCredentialPolicy.d.ts.map +0 -1
- package/dist/esm/policies/StorageSharedKeyCredentialPolicy.js +0 -145
- package/dist/esm/policies/StorageSharedKeyCredentialPolicy.js.map +0 -1
- package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.d.ts +0 -17
- package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.d.ts.map +0 -1
- package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.js +0 -132
- package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.js.map +0 -1
- package/dist/react-native/StorageBrowserPolicyFactory.d.ts +0 -16
- package/dist/react-native/StorageBrowserPolicyFactory.d.ts.map +0 -1
- package/dist/react-native/StorageBrowserPolicyFactory.js +0 -19
- package/dist/react-native/StorageBrowserPolicyFactory.js.map +0 -1
- package/dist/react-native/StorageRetryPolicyFactory.d.ts +0 -66
- package/dist/react-native/StorageRetryPolicyFactory.d.ts.map +0 -1
- package/dist/react-native/StorageRetryPolicyFactory.js +0 -28
- package/dist/react-native/StorageRetryPolicyFactory.js.map +0 -1
- package/dist/react-native/credentials/AnonymousCredential.d.ts +0 -19
- package/dist/react-native/credentials/AnonymousCredential.d.ts.map +0 -1
- package/dist/react-native/credentials/AnonymousCredential.js +0 -22
- package/dist/react-native/credentials/AnonymousCredential.js.map +0 -1
- package/dist/react-native/credentials/Credential.d.ts +0 -20
- package/dist/react-native/credentials/Credential.d.ts.map +0 -1
- package/dist/react-native/credentials/Credential.js +0 -18
- package/dist/react-native/credentials/Credential.js.map +0 -1
- package/dist/react-native/credentials/StorageSharedKeyCredential.d.ts +0 -38
- package/dist/react-native/credentials/StorageSharedKeyCredential.d.ts.map +0 -1
- package/dist/react-native/credentials/StorageSharedKeyCredential.js +0 -48
- package/dist/react-native/credentials/StorageSharedKeyCredential.js.map +0 -1
- package/dist/react-native/policies/AnonymousCredentialPolicy.d.ts +0 -15
- package/dist/react-native/policies/AnonymousCredentialPolicy.d.ts.map +0 -1
- package/dist/react-native/policies/AnonymousCredentialPolicy.js +0 -20
- package/dist/react-native/policies/AnonymousCredentialPolicy.js.map +0 -1
- package/dist/react-native/policies/CredentialPolicy.d.ts +0 -22
- package/dist/react-native/policies/CredentialPolicy.d.ts.map +0 -1
- package/dist/react-native/policies/CredentialPolicy.js +0 -29
- package/dist/react-native/policies/CredentialPolicy.js.map +0 -1
- package/dist/react-native/policies/RequestPolicy.d.ts +0 -45
- package/dist/react-native/policies/RequestPolicy.d.ts.map +0 -1
- package/dist/react-native/policies/RequestPolicy.js +0 -42
- package/dist/react-native/policies/RequestPolicy.js.map +0 -1
- package/dist/react-native/policies/StorageBrowserPolicy.d.ts +0 -28
- package/dist/react-native/policies/StorageBrowserPolicy.d.ts.map +0 -1
- package/dist/react-native/policies/StorageBrowserPolicy.js +0 -47
- package/dist/react-native/policies/StorageBrowserPolicy.js.map +0 -1
- package/dist/react-native/policies/StorageBrowserPolicyV2.d.ts +0 -11
- package/dist/react-native/policies/StorageBrowserPolicyV2.d.ts.map +0 -1
- package/dist/react-native/policies/StorageBrowserPolicyV2.js +0 -31
- package/dist/react-native/policies/StorageBrowserPolicyV2.js.map +0 -1
- package/dist/react-native/policies/StorageCorrectContentLengthPolicy.d.ts +0 -10
- package/dist/react-native/policies/StorageCorrectContentLengthPolicy.d.ts.map +0 -1
- package/dist/react-native/policies/StorageCorrectContentLengthPolicy.js +0 -27
- package/dist/react-native/policies/StorageCorrectContentLengthPolicy.js.map +0 -1
- package/dist/react-native/policies/StorageRetryPolicy.d.ts +0 -62
- package/dist/react-native/policies/StorageRetryPolicy.d.ts.map +0 -1
- package/dist/react-native/policies/StorageRetryPolicy.js +0 -219
- package/dist/react-native/policies/StorageRetryPolicy.js.map +0 -1
- package/dist/react-native/policies/StorageRetryPolicyType.d.ts +0 -14
- package/dist/react-native/policies/StorageRetryPolicyType.d.ts.map +0 -1
- package/dist/react-native/policies/StorageRetryPolicyType.js +0 -17
- package/dist/react-native/policies/StorageRetryPolicyType.js.map +0 -1
- package/dist/react-native/policies/StorageRetryPolicyV2.d.ts +0 -11
- package/dist/react-native/policies/StorageRetryPolicyV2.d.ts.map +0 -1
- package/dist/react-native/policies/StorageRetryPolicyV2.js +0 -164
- package/dist/react-native/policies/StorageRetryPolicyV2.js.map +0 -1
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.d.ts +0 -54
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.d.ts.map +0 -1
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.js +0 -145
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.js.map +0 -1
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.d.ts +0 -17
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.d.ts.map +0 -1
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.js +0 -132
- package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.js.map +0 -1
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Copyright (c) Microsoft Corporation.
|
|
3
|
-
// Licensed under the MIT License.
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.StorageRetryPolicy = void 0;
|
|
6
|
-
exports.NewRetryPolicyFactory = NewRetryPolicyFactory;
|
|
7
|
-
const abort_controller_1 = require("@azure/abort-controller");
|
|
8
|
-
const RequestPolicy_js_1 = require("./RequestPolicy.js");
|
|
9
|
-
const constants_js_1 = require("../utils/constants.js");
|
|
10
|
-
const utils_common_js_1 = require("../utils/utils.common.js");
|
|
11
|
-
const log_js_1 = require("../log.js");
|
|
12
|
-
const StorageRetryPolicyType_js_1 = require("./StorageRetryPolicyType.js");
|
|
13
|
-
/**
|
|
14
|
-
* A factory method used to generated a RetryPolicy factory.
|
|
15
|
-
*
|
|
16
|
-
* @param retryOptions -
|
|
17
|
-
*/
|
|
18
|
-
function NewRetryPolicyFactory(retryOptions) {
|
|
19
|
-
return {
|
|
20
|
-
create: (nextPolicy, options) => {
|
|
21
|
-
return new StorageRetryPolicy(nextPolicy, options, retryOptions);
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
// Default values of StorageRetryOptions
|
|
26
|
-
const DEFAULT_RETRY_OPTIONS = {
|
|
27
|
-
maxRetryDelayInMs: 120 * 1000,
|
|
28
|
-
maxTries: 4,
|
|
29
|
-
retryDelayInMs: 4 * 1000,
|
|
30
|
-
retryPolicyType: StorageRetryPolicyType_js_1.StorageRetryPolicyType.EXPONENTIAL,
|
|
31
|
-
secondaryHost: "",
|
|
32
|
-
tryTimeoutInMs: undefined, // Use server side default timeout strategy
|
|
33
|
-
};
|
|
34
|
-
const RETRY_ABORT_ERROR = new abort_controller_1.AbortError("The operation was aborted.");
|
|
35
|
-
/**
|
|
36
|
-
* Retry policy with exponential retry and linear retry implemented.
|
|
37
|
-
*/
|
|
38
|
-
class StorageRetryPolicy extends RequestPolicy_js_1.BaseRequestPolicy {
|
|
39
|
-
/**
|
|
40
|
-
* RetryOptions.
|
|
41
|
-
*/
|
|
42
|
-
retryOptions;
|
|
43
|
-
/**
|
|
44
|
-
* Creates an instance of RetryPolicy.
|
|
45
|
-
*
|
|
46
|
-
* @param nextPolicy -
|
|
47
|
-
* @param options -
|
|
48
|
-
* @param retryOptions -
|
|
49
|
-
*/
|
|
50
|
-
constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {
|
|
51
|
-
super(nextPolicy, options);
|
|
52
|
-
// Initialize retry options
|
|
53
|
-
this.retryOptions = {
|
|
54
|
-
retryPolicyType: retryOptions.retryPolicyType
|
|
55
|
-
? retryOptions.retryPolicyType
|
|
56
|
-
: DEFAULT_RETRY_OPTIONS.retryPolicyType,
|
|
57
|
-
maxTries: retryOptions.maxTries && retryOptions.maxTries >= 1
|
|
58
|
-
? Math.floor(retryOptions.maxTries)
|
|
59
|
-
: DEFAULT_RETRY_OPTIONS.maxTries,
|
|
60
|
-
tryTimeoutInMs: retryOptions.tryTimeoutInMs && retryOptions.tryTimeoutInMs >= 0
|
|
61
|
-
? retryOptions.tryTimeoutInMs
|
|
62
|
-
: DEFAULT_RETRY_OPTIONS.tryTimeoutInMs,
|
|
63
|
-
retryDelayInMs: retryOptions.retryDelayInMs && retryOptions.retryDelayInMs >= 0
|
|
64
|
-
? Math.min(retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs
|
|
65
|
-
? retryOptions.maxRetryDelayInMs
|
|
66
|
-
: DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs)
|
|
67
|
-
: DEFAULT_RETRY_OPTIONS.retryDelayInMs,
|
|
68
|
-
maxRetryDelayInMs: retryOptions.maxRetryDelayInMs && retryOptions.maxRetryDelayInMs >= 0
|
|
69
|
-
? retryOptions.maxRetryDelayInMs
|
|
70
|
-
: DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs,
|
|
71
|
-
secondaryHost: retryOptions.secondaryHost
|
|
72
|
-
? retryOptions.secondaryHost
|
|
73
|
-
: DEFAULT_RETRY_OPTIONS.secondaryHost,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Sends request.
|
|
78
|
-
*
|
|
79
|
-
* @param request -
|
|
80
|
-
*/
|
|
81
|
-
async sendRequest(request) {
|
|
82
|
-
return this.attemptSendRequest(request, false, 1);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Decide and perform next retry. Won't mutate request parameter.
|
|
86
|
-
*
|
|
87
|
-
* @param request -
|
|
88
|
-
* @param secondaryHas404 - If attempt was against the secondary & it returned a StatusNotFound (404), then
|
|
89
|
-
* the resource was not found. This may be due to replication delay. So, in this
|
|
90
|
-
* case, we'll never try the secondary again for this operation.
|
|
91
|
-
* @param attempt - How many retries has been attempted to performed, starting from 1, which includes
|
|
92
|
-
* the attempt will be performed by this method call.
|
|
93
|
-
*/
|
|
94
|
-
async attemptSendRequest(request, secondaryHas404, attempt) {
|
|
95
|
-
const newRequest = request.clone();
|
|
96
|
-
const isPrimaryRetry = secondaryHas404 ||
|
|
97
|
-
!this.retryOptions.secondaryHost ||
|
|
98
|
-
!(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
|
|
99
|
-
attempt % 2 === 1;
|
|
100
|
-
if (!isPrimaryRetry) {
|
|
101
|
-
newRequest.url = (0, utils_common_js_1.setURLHost)(newRequest.url, this.retryOptions.secondaryHost);
|
|
102
|
-
}
|
|
103
|
-
// Set the server-side timeout query parameter "timeout=[seconds]"
|
|
104
|
-
if (this.retryOptions.tryTimeoutInMs) {
|
|
105
|
-
newRequest.url = (0, utils_common_js_1.setURLParameter)(newRequest.url, constants_js_1.URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
|
|
106
|
-
}
|
|
107
|
-
let response;
|
|
108
|
-
try {
|
|
109
|
-
log_js_1.logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? "Primary" : "Secondary"}`);
|
|
110
|
-
response = await this._nextPolicy.sendRequest(newRequest);
|
|
111
|
-
if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
|
|
112
|
-
return response;
|
|
113
|
-
}
|
|
114
|
-
secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
log_js_1.logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);
|
|
118
|
-
if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {
|
|
119
|
-
throw err;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
await this.delay(isPrimaryRetry, attempt, request.abortSignal);
|
|
123
|
-
return this.attemptSendRequest(request, secondaryHas404, ++attempt);
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Decide whether to retry according to last HTTP response and retry counters.
|
|
127
|
-
*
|
|
128
|
-
* @param isPrimaryRetry -
|
|
129
|
-
* @param attempt -
|
|
130
|
-
* @param response -
|
|
131
|
-
* @param err -
|
|
132
|
-
*/
|
|
133
|
-
shouldRetry(isPrimaryRetry, attempt, response, err) {
|
|
134
|
-
if (attempt >= this.retryOptions.maxTries) {
|
|
135
|
-
log_js_1.logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions
|
|
136
|
-
.maxTries}, no further try.`);
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
// Handle network failures, you may need to customize the list when you implement
|
|
140
|
-
// your own http client
|
|
141
|
-
const retriableErrors = [
|
|
142
|
-
"ETIMEDOUT",
|
|
143
|
-
"ESOCKETTIMEDOUT",
|
|
144
|
-
"ECONNREFUSED",
|
|
145
|
-
"ECONNRESET",
|
|
146
|
-
"ENOENT",
|
|
147
|
-
"ENOTFOUND",
|
|
148
|
-
"TIMEOUT",
|
|
149
|
-
"EPIPE",
|
|
150
|
-
"REQUEST_SEND_ERROR", // For default xhr based http client provided in ms-rest-js
|
|
151
|
-
];
|
|
152
|
-
if (err) {
|
|
153
|
-
for (const retriableError of retriableErrors) {
|
|
154
|
-
if (err.name.toUpperCase().includes(retriableError) ||
|
|
155
|
-
err.message.toUpperCase().includes(retriableError) ||
|
|
156
|
-
(err.code && err.code.toString().toUpperCase() === retriableError)) {
|
|
157
|
-
log_js_1.logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);
|
|
158
|
-
return true;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// If attempt was against the secondary & it returned a StatusNotFound (404), then
|
|
163
|
-
// the resource was not found. This may be due to replication delay. So, in this
|
|
164
|
-
// case, we'll never try the secondary again for this operation.
|
|
165
|
-
if (response || err) {
|
|
166
|
-
const statusCode = response ? response.status : err ? err.statusCode : 0;
|
|
167
|
-
if (!isPrimaryRetry && statusCode === 404) {
|
|
168
|
-
log_js_1.logger.info(`RetryPolicy: Secondary access with 404, will retry.`);
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
// Server internal error or server timeout
|
|
172
|
-
if (statusCode === 503 || statusCode === 500) {
|
|
173
|
-
log_js_1.logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);
|
|
174
|
-
return true;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
if (response) {
|
|
178
|
-
// Retry select Copy Source Error Codes.
|
|
179
|
-
if (response?.status >= 400) {
|
|
180
|
-
const copySourceError = response.headers.get(constants_js_1.HeaderConstants.X_MS_CopySourceErrorCode);
|
|
181
|
-
if (copySourceError !== undefined) {
|
|
182
|
-
switch (copySourceError) {
|
|
183
|
-
case "InternalError":
|
|
184
|
-
case "OperationTimedOut":
|
|
185
|
-
case "ServerBusy":
|
|
186
|
-
return true;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
if (err?.code === "PARSE_ERROR" && err?.message.startsWith(`Error "Error: Unclosed root tag`)) {
|
|
192
|
-
log_js_1.logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
|
|
193
|
-
return true;
|
|
194
|
-
}
|
|
195
|
-
return false;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Delay a calculated time between retries.
|
|
199
|
-
*
|
|
200
|
-
* @param isPrimaryRetry -
|
|
201
|
-
* @param attempt -
|
|
202
|
-
* @param abortSignal -
|
|
203
|
-
*/
|
|
204
|
-
async delay(isPrimaryRetry, attempt, abortSignal) {
|
|
205
|
-
let delayTimeInMs = 0;
|
|
206
|
-
if (isPrimaryRetry) {
|
|
207
|
-
switch (this.retryOptions.retryPolicyType) {
|
|
208
|
-
case StorageRetryPolicyType_js_1.StorageRetryPolicyType.EXPONENTIAL:
|
|
209
|
-
delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
|
|
210
|
-
break;
|
|
211
|
-
case StorageRetryPolicyType_js_1.StorageRetryPolicyType.FIXED:
|
|
212
|
-
delayTimeInMs = this.retryOptions.retryDelayInMs;
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
delayTimeInMs = Math.random() * 1000;
|
|
218
|
-
}
|
|
219
|
-
log_js_1.logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);
|
|
220
|
-
return (0, utils_common_js_1.delay)(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
exports.StorageRetryPolicy = StorageRetryPolicy;
|
|
224
|
-
//# sourceMappingURL=StorageRetryPolicy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageRetryPolicy.js","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n RequestPolicy,\n RequestPolicyOptionsLike as RequestPolicyOptions,\n RequestPolicyFactory,\n WebResourceLike as WebResource,\n CompatResponse as HttpOperationResponse,\n} from \"@azure/core-http-compat\";\nimport { BaseRequestPolicy } from \"./RequestPolicy.js\";\nimport type { RestError } from \"@azure/core-rest-pipeline\";\nimport { type StorageRetryOptions } from \"../StorageRetryPolicyFactory.js\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants.js\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common.js\";\nimport { logger } from \"../log.js\";\nimport { StorageRetryPolicyType } from \"./StorageRetryPolicyType.js\";\n\n/**\n * A factory method used to generated a RetryPolicy factory.\n *\n * @param retryOptions -\n */\nexport function NewRetryPolicyFactory(retryOptions?: StorageRetryOptions): RequestPolicyFactory {\n return {\n create: (nextPolicy: RequestPolicy, options: RequestPolicyOptions): StorageRetryPolicy => {\n return new StorageRetryPolicy(nextPolicy, options, retryOptions);\n },\n };\n}\n\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS: StorageRetryOptions = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\n\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport class StorageRetryPolicy extends BaseRequestPolicy {\n /**\n * RetryOptions.\n */\n private readonly retryOptions: StorageRetryOptions;\n\n /**\n * Creates an instance of RetryPolicy.\n *\n * @param nextPolicy -\n * @param options -\n * @param retryOptions -\n */\n constructor(\n nextPolicy: RequestPolicy,\n options: RequestPolicyOptions,\n retryOptions: StorageRetryOptions = DEFAULT_RETRY_OPTIONS,\n ) {\n super(nextPolicy, options);\n\n // Initialize retry options\n this.retryOptions = {\n retryPolicyType: retryOptions.retryPolicyType\n ? retryOptions.retryPolicyType\n : DEFAULT_RETRY_OPTIONS.retryPolicyType,\n\n maxTries:\n retryOptions.maxTries && retryOptions.maxTries >= 1\n ? Math.floor(retryOptions.maxTries)\n : DEFAULT_RETRY_OPTIONS.maxTries,\n\n tryTimeoutInMs:\n retryOptions.tryTimeoutInMs && retryOptions.tryTimeoutInMs >= 0\n ? retryOptions.tryTimeoutInMs\n : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs,\n\n retryDelayInMs:\n retryOptions.retryDelayInMs && retryOptions.retryDelayInMs >= 0\n ? Math.min(\n retryOptions.retryDelayInMs,\n retryOptions.maxRetryDelayInMs\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs!,\n )\n : DEFAULT_RETRY_OPTIONS.retryDelayInMs,\n\n maxRetryDelayInMs:\n retryOptions.maxRetryDelayInMs && retryOptions.maxRetryDelayInMs >= 0\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs,\n\n secondaryHost: retryOptions.secondaryHost\n ? retryOptions.secondaryHost\n : DEFAULT_RETRY_OPTIONS.secondaryHost,\n };\n }\n\n /**\n * Sends request.\n *\n * @param request -\n */\n public async sendRequest(request: WebResource): Promise<HttpOperationResponse> {\n return this.attemptSendRequest(request, false, 1);\n }\n\n /**\n * Decide and perform next retry. Won't mutate request parameter.\n *\n * @param request -\n * @param secondaryHas404 - If attempt was against the secondary & it returned a StatusNotFound (404), then\n * the resource was not found. This may be due to replication delay. So, in this\n * case, we'll never try the secondary again for this operation.\n * @param attempt - How many retries has been attempted to performed, starting from 1, which includes\n * the attempt will be performed by this method call.\n */\n protected async attemptSendRequest(\n request: WebResource,\n secondaryHas404: boolean,\n attempt: number,\n ): Promise<HttpOperationResponse> {\n const newRequest: WebResource = request.clone();\n\n const isPrimaryRetry =\n secondaryHas404 ||\n !this.retryOptions.secondaryHost ||\n !(request.method === \"GET\" || request.method === \"HEAD\" || request.method === \"OPTIONS\") ||\n attempt % 2 === 1;\n\n if (!isPrimaryRetry) {\n newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost!);\n }\n\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (this.retryOptions.tryTimeoutInMs) {\n newRequest.url = setURLParameter(\n newRequest.url,\n URLConstants.Parameters.TIMEOUT,\n Math.floor(this.retryOptions.tryTimeoutInMs! / 1000).toString(),\n );\n }\n\n let response: HttpOperationResponse | undefined;\n try {\n logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n response = await this._nextPolicy.sendRequest(newRequest);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {\n return response;\n }\n\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n } catch (err: any) {\n logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {\n throw err;\n }\n }\n\n await this.delay(isPrimaryRetry, attempt, request.abortSignal);\n return this.attemptSendRequest(request, secondaryHas404, ++attempt);\n }\n\n /**\n * Decide whether to retry according to last HTTP response and retry counters.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param response -\n * @param err -\n */\n protected shouldRetry(\n isPrimaryRetry: boolean,\n attempt: number,\n response?: HttpOperationResponse,\n err?: RestError,\n ): boolean {\n if (attempt >= this.retryOptions.maxTries!) {\n logger.info(\n `RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions\n .maxTries!}, no further try.`,\n );\n return false;\n }\n\n // Handle network failures, you may need to customize the list when you implement\n // your own http client\n const retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\", // For default xhr based http client provided in ms-rest-js\n ];\n if (err) {\n for (const retriableError of retriableErrors) {\n if (\n err.name.toUpperCase().includes(retriableError) ||\n err.message.toUpperCase().includes(retriableError) ||\n (err.code && err.code.toString().toUpperCase() === retriableError)\n ) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n }\n\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || err) {\n const statusCode = response ? response.status : err ? err.statusCode : 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n\n if (response) {\n // Retry select Copy Source Error Codes.\n if (response?.status >= 400) {\n const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);\n if (copySourceError !== undefined) {\n switch (copySourceError) {\n case \"InternalError\":\n case \"OperationTimedOut\":\n case \"ServerBusy\":\n return true;\n }\n }\n }\n }\n\n if (err?.code === \"PARSE_ERROR\" && err?.message.startsWith(`Error \"Error: Unclosed root tag`)) {\n logger.info(\n \"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\",\n );\n return true;\n }\n\n return false;\n }\n\n /**\n * Delay a calculated time between retries.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param abortSignal -\n */\n private async delay(\n isPrimaryRetry: boolean,\n attempt: number,\n abortSignal?: AbortSignalLike,\n ): Promise<void> {\n let delayTimeInMs: number = 0;\n\n if (isPrimaryRetry) {\n switch (this.retryOptions.retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min(\n (Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs!,\n this.retryOptions.maxRetryDelayInMs!,\n );\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = this.retryOptions.retryDelayInMs!;\n break;\n }\n } else {\n delayTimeInMs = Math.random() * 1000;\n }\n\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);\n }\n}\n"]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RetryPolicy types.
|
|
3
|
-
*/
|
|
4
|
-
export declare enum StorageRetryPolicyType {
|
|
5
|
-
/**
|
|
6
|
-
* Exponential retry. Retry time delay grows exponentially.
|
|
7
|
-
*/
|
|
8
|
-
EXPONENTIAL = 0,
|
|
9
|
-
/**
|
|
10
|
-
* Linear retry. Retry time delay grows linearly.
|
|
11
|
-
*/
|
|
12
|
-
FIXED = 1
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=StorageRetryPolicyType.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageRetryPolicyType.d.ts","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicyType.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,oBAAY,sBAAsB;IAChC;;OAEG;IACH,WAAW,IAAA;IACX;;OAEG;IACH,KAAK,IAAA;CACN"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Copyright (c) Microsoft Corporation.
|
|
3
|
-
// Licensed under the MIT License.
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.StorageRetryPolicyType = void 0;
|
|
6
|
-
/**
|
|
7
|
-
* RetryPolicy types.
|
|
8
|
-
*/
|
|
9
|
-
var StorageRetryPolicyType;
|
|
10
|
-
(function (StorageRetryPolicyType) {
|
|
11
|
-
/**
|
|
12
|
-
* Exponential retry. Retry time delay grows exponentially.
|
|
13
|
-
*/
|
|
14
|
-
StorageRetryPolicyType[StorageRetryPolicyType["EXPONENTIAL"] = 0] = "EXPONENTIAL";
|
|
15
|
-
/**
|
|
16
|
-
* Linear retry. Retry time delay grows linearly.
|
|
17
|
-
*/
|
|
18
|
-
StorageRetryPolicyType[StorageRetryPolicyType["FIXED"] = 1] = "FIXED";
|
|
19
|
-
})(StorageRetryPolicyType || (exports.StorageRetryPolicyType = StorageRetryPolicyType = {}));
|
|
20
|
-
//# sourceMappingURL=StorageRetryPolicyType.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageRetryPolicyType.js","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicyType.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC;;GAEG;AACH,IAAY,sBASX;AATD,WAAY,sBAAsB;IAChC;;OAEG;IACH,iFAAW,CAAA;IACX;;OAEG;IACH,qEAAK,CAAA;AACP,CAAC,EATW,sBAAsB,sCAAtB,sBAAsB,QASjC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * RetryPolicy types.\n */\nexport enum StorageRetryPolicyType {\n /**\n * Exponential retry. Retry time delay grows exponentially.\n */\n EXPONENTIAL,\n /**\n * Linear retry. Retry time delay grows linearly.\n */\n FIXED,\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { PipelinePolicy } from "@azure/core-rest-pipeline";
|
|
2
|
-
import { type StorageRetryOptions } from "../StorageRetryPolicyFactory.js";
|
|
3
|
-
/**
|
|
4
|
-
* Name of the {@link storageRetryPolicy}
|
|
5
|
-
*/
|
|
6
|
-
export declare const storageRetryPolicyName = "storageRetryPolicy";
|
|
7
|
-
/**
|
|
8
|
-
* Retry policy with exponential retry and linear retry implemented.
|
|
9
|
-
*/
|
|
10
|
-
export declare function storageRetryPolicy(options?: StorageRetryOptions): PipelinePolicy;
|
|
11
|
-
//# sourceMappingURL=StorageRetryPolicyV2.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageRetryPolicyV2.d.ts","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicyV2.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAKnG;;GAEG;AACH,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AA0B3D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,cAAc,CA+JpF"}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Copyright (c) Microsoft Corporation.
|
|
3
|
-
// Licensed under the MIT License.
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.storageRetryPolicyName = void 0;
|
|
6
|
-
exports.storageRetryPolicy = storageRetryPolicy;
|
|
7
|
-
const abort_controller_1 = require("@azure/abort-controller");
|
|
8
|
-
const core_rest_pipeline_1 = require("@azure/core-rest-pipeline");
|
|
9
|
-
const core_util_1 = require("@azure/core-util");
|
|
10
|
-
const StorageRetryPolicyFactory_js_1 = require("../StorageRetryPolicyFactory.js");
|
|
11
|
-
const constants_js_1 = require("../utils/constants.js");
|
|
12
|
-
const utils_common_js_1 = require("../utils/utils.common.js");
|
|
13
|
-
const log_js_1 = require("../log.js");
|
|
14
|
-
/**
|
|
15
|
-
* Name of the {@link storageRetryPolicy}
|
|
16
|
-
*/
|
|
17
|
-
exports.storageRetryPolicyName = "storageRetryPolicy";
|
|
18
|
-
// Default values of StorageRetryOptions
|
|
19
|
-
const DEFAULT_RETRY_OPTIONS = {
|
|
20
|
-
maxRetryDelayInMs: 120 * 1000,
|
|
21
|
-
maxTries: 4,
|
|
22
|
-
retryDelayInMs: 4 * 1000,
|
|
23
|
-
retryPolicyType: StorageRetryPolicyFactory_js_1.StorageRetryPolicyType.EXPONENTIAL,
|
|
24
|
-
secondaryHost: "",
|
|
25
|
-
tryTimeoutInMs: undefined, // Use server side default timeout strategy
|
|
26
|
-
};
|
|
27
|
-
const retriableErrors = [
|
|
28
|
-
"ETIMEDOUT",
|
|
29
|
-
"ESOCKETTIMEDOUT",
|
|
30
|
-
"ECONNREFUSED",
|
|
31
|
-
"ECONNRESET",
|
|
32
|
-
"ENOENT",
|
|
33
|
-
"ENOTFOUND",
|
|
34
|
-
"TIMEOUT",
|
|
35
|
-
"EPIPE",
|
|
36
|
-
"REQUEST_SEND_ERROR",
|
|
37
|
-
];
|
|
38
|
-
const RETRY_ABORT_ERROR = new abort_controller_1.AbortError("The operation was aborted.");
|
|
39
|
-
/**
|
|
40
|
-
* Retry policy with exponential retry and linear retry implemented.
|
|
41
|
-
*/
|
|
42
|
-
function storageRetryPolicy(options = {}) {
|
|
43
|
-
const retryPolicyType = options.retryPolicyType ?? DEFAULT_RETRY_OPTIONS.retryPolicyType;
|
|
44
|
-
const maxTries = options.maxTries ?? DEFAULT_RETRY_OPTIONS.maxTries;
|
|
45
|
-
const retryDelayInMs = options.retryDelayInMs ?? DEFAULT_RETRY_OPTIONS.retryDelayInMs;
|
|
46
|
-
const maxRetryDelayInMs = options.maxRetryDelayInMs ?? DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs;
|
|
47
|
-
const secondaryHost = options.secondaryHost ?? DEFAULT_RETRY_OPTIONS.secondaryHost;
|
|
48
|
-
const tryTimeoutInMs = options.tryTimeoutInMs ?? DEFAULT_RETRY_OPTIONS.tryTimeoutInMs;
|
|
49
|
-
function shouldRetry({ isPrimaryRetry, attempt, response, error, }) {
|
|
50
|
-
if (attempt >= maxTries) {
|
|
51
|
-
log_js_1.logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${maxTries}, no further try.`);
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
if (error) {
|
|
55
|
-
for (const retriableError of retriableErrors) {
|
|
56
|
-
if (error.name.toUpperCase().includes(retriableError) ||
|
|
57
|
-
error.message.toUpperCase().includes(retriableError) ||
|
|
58
|
-
(error.code && error.code.toString().toUpperCase() === retriableError)) {
|
|
59
|
-
log_js_1.logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (error?.code === "PARSE_ERROR" &&
|
|
64
|
-
error?.message.startsWith(`Error "Error: Unclosed root tag`)) {
|
|
65
|
-
log_js_1.logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// If attempt was against the secondary & it returned a StatusNotFound (404), then
|
|
70
|
-
// the resource was not found. This may be due to replication delay. So, in this
|
|
71
|
-
// case, we'll never try the secondary again for this operation.
|
|
72
|
-
if (response || error) {
|
|
73
|
-
const statusCode = response?.status ?? error?.statusCode ?? 0;
|
|
74
|
-
if (!isPrimaryRetry && statusCode === 404) {
|
|
75
|
-
log_js_1.logger.info(`RetryPolicy: Secondary access with 404, will retry.`);
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
// Server internal error or server timeout
|
|
79
|
-
if (statusCode === 503 || statusCode === 500) {
|
|
80
|
-
log_js_1.logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
if (response) {
|
|
85
|
-
// Retry select Copy Source Error Codes.
|
|
86
|
-
if (response?.status >= 400) {
|
|
87
|
-
const copySourceError = response.headers.get(constants_js_1.HeaderConstants.X_MS_CopySourceErrorCode);
|
|
88
|
-
if (copySourceError !== undefined) {
|
|
89
|
-
switch (copySourceError) {
|
|
90
|
-
case "InternalError":
|
|
91
|
-
case "OperationTimedOut":
|
|
92
|
-
case "ServerBusy":
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
function calculateDelay(isPrimaryRetry, attempt) {
|
|
101
|
-
let delayTimeInMs = 0;
|
|
102
|
-
if (isPrimaryRetry) {
|
|
103
|
-
switch (retryPolicyType) {
|
|
104
|
-
case StorageRetryPolicyFactory_js_1.StorageRetryPolicyType.EXPONENTIAL:
|
|
105
|
-
delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * retryDelayInMs, maxRetryDelayInMs);
|
|
106
|
-
break;
|
|
107
|
-
case StorageRetryPolicyFactory_js_1.StorageRetryPolicyType.FIXED:
|
|
108
|
-
delayTimeInMs = retryDelayInMs;
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
delayTimeInMs = Math.random() * 1000;
|
|
114
|
-
}
|
|
115
|
-
log_js_1.logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);
|
|
116
|
-
return delayTimeInMs;
|
|
117
|
-
}
|
|
118
|
-
return {
|
|
119
|
-
name: exports.storageRetryPolicyName,
|
|
120
|
-
async sendRequest(request, next) {
|
|
121
|
-
// Set the server-side timeout query parameter "timeout=[seconds]"
|
|
122
|
-
if (tryTimeoutInMs) {
|
|
123
|
-
request.url = (0, utils_common_js_1.setURLParameter)(request.url, constants_js_1.URLConstants.Parameters.TIMEOUT, String(Math.floor(tryTimeoutInMs / 1000)));
|
|
124
|
-
}
|
|
125
|
-
const primaryUrl = request.url;
|
|
126
|
-
const secondaryUrl = secondaryHost ? (0, utils_common_js_1.setURLHost)(request.url, secondaryHost) : undefined;
|
|
127
|
-
let secondaryHas404 = false;
|
|
128
|
-
let attempt = 1;
|
|
129
|
-
let retryAgain = true;
|
|
130
|
-
let response;
|
|
131
|
-
let error;
|
|
132
|
-
while (retryAgain) {
|
|
133
|
-
const isPrimaryRetry = secondaryHas404 ||
|
|
134
|
-
!secondaryUrl ||
|
|
135
|
-
!["GET", "HEAD", "OPTIONS"].includes(request.method) ||
|
|
136
|
-
attempt % 2 === 1;
|
|
137
|
-
request.url = isPrimaryRetry ? primaryUrl : secondaryUrl;
|
|
138
|
-
response = undefined;
|
|
139
|
-
error = undefined;
|
|
140
|
-
try {
|
|
141
|
-
log_js_1.logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? "Primary" : "Secondary"}`);
|
|
142
|
-
response = await next(request);
|
|
143
|
-
secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
|
|
144
|
-
}
|
|
145
|
-
catch (e) {
|
|
146
|
-
if ((0, core_rest_pipeline_1.isRestError)(e)) {
|
|
147
|
-
log_js_1.logger.error(`RetryPolicy: Caught error, message: ${e.message}, code: ${e.code}`);
|
|
148
|
-
error = e;
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
log_js_1.logger.error(`RetryPolicy: Caught error, message: ${(0, core_util_1.getErrorMessage)(e)}`);
|
|
152
|
-
throw e;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
retryAgain = shouldRetry({ isPrimaryRetry, attempt, response, error });
|
|
156
|
-
if (retryAgain) {
|
|
157
|
-
await (0, utils_common_js_1.delay)(calculateDelay(isPrimaryRetry, attempt), request.abortSignal, RETRY_ABORT_ERROR);
|
|
158
|
-
}
|
|
159
|
-
attempt++;
|
|
160
|
-
}
|
|
161
|
-
if (response) {
|
|
162
|
-
return response;
|
|
163
|
-
}
|
|
164
|
-
throw error ?? new core_rest_pipeline_1.RestError("RetryPolicy failed without known error.");
|
|
165
|
-
},
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=StorageRetryPolicyV2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageRetryPolicyV2.js","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicyV2.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n PipelinePolicy,\n PipelineRequest,\n SendRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\nimport { isRestError, RestError } from \"@azure/core-rest-pipeline\";\nimport { getErrorMessage } from \"@azure/core-util\";\nimport { StorageRetryPolicyType, type StorageRetryOptions } from \"../StorageRetryPolicyFactory.js\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants.js\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common.js\";\nimport { logger } from \"../log.js\";\n\n/**\n * Name of the {@link storageRetryPolicy}\n */\nexport const storageRetryPolicyName = \"storageRetryPolicy\";\n\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n} as const;\n\nconst retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\",\n] as const;\n\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport function storageRetryPolicy(options: StorageRetryOptions = {}): PipelinePolicy {\n const retryPolicyType = options.retryPolicyType ?? DEFAULT_RETRY_OPTIONS.retryPolicyType;\n const maxTries = options.maxTries ?? DEFAULT_RETRY_OPTIONS.maxTries;\n const retryDelayInMs = options.retryDelayInMs ?? DEFAULT_RETRY_OPTIONS.retryDelayInMs;\n const maxRetryDelayInMs = options.maxRetryDelayInMs ?? DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs;\n const secondaryHost = options.secondaryHost ?? DEFAULT_RETRY_OPTIONS.secondaryHost;\n const tryTimeoutInMs = options.tryTimeoutInMs ?? DEFAULT_RETRY_OPTIONS.tryTimeoutInMs;\n\n function shouldRetry({\n isPrimaryRetry,\n attempt,\n response,\n error,\n }: {\n isPrimaryRetry: boolean;\n attempt: number;\n response?: PipelineResponse;\n error?: RestError;\n }): boolean {\n if (attempt >= maxTries) {\n logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${maxTries}, no further try.`);\n return false;\n }\n if (error) {\n for (const retriableError of retriableErrors) {\n if (\n error.name.toUpperCase().includes(retriableError) ||\n error.message.toUpperCase().includes(retriableError) ||\n (error.code && error.code.toString().toUpperCase() === retriableError)\n ) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n if (\n error?.code === \"PARSE_ERROR\" &&\n error?.message.startsWith(`Error \"Error: Unclosed root tag`)\n ) {\n logger.info(\n \"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\",\n );\n return true;\n }\n }\n\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || error) {\n const statusCode = response?.status ?? error?.statusCode ?? 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n\n if (response) {\n // Retry select Copy Source Error Codes.\n if (response?.status >= 400) {\n const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);\n if (copySourceError !== undefined) {\n switch (copySourceError) {\n case \"InternalError\":\n case \"OperationTimedOut\":\n case \"ServerBusy\":\n return true;\n }\n }\n }\n }\n\n return false;\n }\n function calculateDelay(isPrimaryRetry: boolean, attempt: number): number {\n let delayTimeInMs = 0;\n\n if (isPrimaryRetry) {\n switch (retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min(\n (Math.pow(2, attempt - 1) - 1) * retryDelayInMs,\n maxRetryDelayInMs,\n );\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = retryDelayInMs;\n break;\n }\n } else {\n delayTimeInMs = Math.random() * 1000;\n }\n\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delayTimeInMs;\n }\n return {\n name: storageRetryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (tryTimeoutInMs) {\n request.url = setURLParameter(\n request.url,\n URLConstants.Parameters.TIMEOUT,\n String(Math.floor(tryTimeoutInMs / 1000)),\n );\n }\n const primaryUrl = request.url;\n const secondaryUrl = secondaryHost ? setURLHost(request.url, secondaryHost) : undefined;\n let secondaryHas404 = false;\n let attempt = 1;\n let retryAgain = true;\n let response: PipelineResponse | undefined;\n let error: RestError | undefined;\n while (retryAgain) {\n const isPrimaryRetry: boolean =\n secondaryHas404 ||\n !secondaryUrl ||\n ![\"GET\", \"HEAD\", \"OPTIONS\"].includes(request.method) ||\n attempt % 2 === 1;\n request.url = isPrimaryRetry ? primaryUrl : secondaryUrl!;\n response = undefined;\n error = undefined;\n try {\n logger.info(\n `RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`,\n );\n response = await next(request);\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n } catch (e: unknown) {\n if (isRestError(e)) {\n logger.error(`RetryPolicy: Caught error, message: ${e.message}, code: ${e.code}`);\n error = e;\n } else {\n logger.error(`RetryPolicy: Caught error, message: ${getErrorMessage(e)}`);\n throw e;\n }\n }\n retryAgain = shouldRetry({ isPrimaryRetry, attempt, response, error });\n if (retryAgain) {\n await delay(\n calculateDelay(isPrimaryRetry, attempt),\n request.abortSignal,\n RETRY_ABORT_ERROR,\n );\n }\n attempt++;\n }\n if (response) {\n return response;\n }\n throw error ?? new RestError(\"RetryPolicy failed without known error.\");\n },\n };\n}\n"]}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { RequestPolicy, RequestPolicyOptionsLike as RequestPolicyOptions, WebResourceLike as WebResource } from "@azure/core-http-compat";
|
|
2
|
-
import type { StorageSharedKeyCredential } from "../credentials/StorageSharedKeyCredential.js";
|
|
3
|
-
import { CredentialPolicy } from "./CredentialPolicy.js";
|
|
4
|
-
/**
|
|
5
|
-
* StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
|
|
6
|
-
*/
|
|
7
|
-
export declare class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
|
|
8
|
-
/**
|
|
9
|
-
* Reference to StorageSharedKeyCredential which generates StorageSharedKeyCredentialPolicy
|
|
10
|
-
*/
|
|
11
|
-
private readonly factory;
|
|
12
|
-
/**
|
|
13
|
-
* Creates an instance of StorageSharedKeyCredentialPolicy.
|
|
14
|
-
* @param nextPolicy -
|
|
15
|
-
* @param options -
|
|
16
|
-
* @param factory -
|
|
17
|
-
*/
|
|
18
|
-
constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions, factory: StorageSharedKeyCredential);
|
|
19
|
-
/**
|
|
20
|
-
* Signs request.
|
|
21
|
-
*
|
|
22
|
-
* @param request -
|
|
23
|
-
*/
|
|
24
|
-
protected signRequest(request: WebResource): WebResource;
|
|
25
|
-
/**
|
|
26
|
-
* Retrieve header value according to shared key sign rules.
|
|
27
|
-
* @see https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key
|
|
28
|
-
*
|
|
29
|
-
* @param request -
|
|
30
|
-
* @param headerName -
|
|
31
|
-
*/
|
|
32
|
-
private getHeaderValueToSign;
|
|
33
|
-
/**
|
|
34
|
-
* To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
|
|
35
|
-
* 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
|
|
36
|
-
* 2. Convert each HTTP header name to lowercase.
|
|
37
|
-
* 3. Sort the headers lexicographically by header name, in ascending order.
|
|
38
|
-
* Each header may appear only once in the string.
|
|
39
|
-
* 4. Replace any linear whitespace in the header value with a single space.
|
|
40
|
-
* 5. Trim any whitespace around the colon in the header.
|
|
41
|
-
* 6. Finally, append a new-line character to each canonicalized header in the resulting list.
|
|
42
|
-
* Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
|
|
43
|
-
*
|
|
44
|
-
* @param request -
|
|
45
|
-
*/
|
|
46
|
-
private getCanonicalizedHeadersString;
|
|
47
|
-
/**
|
|
48
|
-
* Retrieves the webResource canonicalized resource string.
|
|
49
|
-
*
|
|
50
|
-
* @param request -
|
|
51
|
-
*/
|
|
52
|
-
private getCanonicalizedResourceString;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=StorageSharedKeyCredentialPolicy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageSharedKeyCredentialPolicy.d.ts","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,IAAI,oBAAoB,EAChD,eAAe,IAAI,WAAW,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;GAEG;AACH,qBAAa,gCAAiC,SAAQ,gBAAgB;IACpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD;;;;;OAKG;gBAED,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,0BAA0B;IAMrC;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IA2CxD;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,6BAA6B;IA2BrC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;CA0BvC"}
|