@azure/storage-blob 12.29.1-alpha.20251105.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 +8 -8
- 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,145 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT License.
|
|
3
|
-
import { HeaderConstants } from "../utils/constants.js";
|
|
4
|
-
import { getURLPath, getURLQueries } from "../utils/utils.common.js";
|
|
5
|
-
import { CredentialPolicy } from "./CredentialPolicy.js";
|
|
6
|
-
import { compareHeader } from "../utils/SharedKeyComparator.js";
|
|
7
|
-
/**
|
|
8
|
-
* StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
|
|
9
|
-
*/
|
|
10
|
-
export class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
|
|
11
|
-
/**
|
|
12
|
-
* Reference to StorageSharedKeyCredential which generates StorageSharedKeyCredentialPolicy
|
|
13
|
-
*/
|
|
14
|
-
factory;
|
|
15
|
-
/**
|
|
16
|
-
* Creates an instance of StorageSharedKeyCredentialPolicy.
|
|
17
|
-
* @param nextPolicy -
|
|
18
|
-
* @param options -
|
|
19
|
-
* @param factory -
|
|
20
|
-
*/
|
|
21
|
-
constructor(nextPolicy, options, factory) {
|
|
22
|
-
super(nextPolicy, options);
|
|
23
|
-
this.factory = factory;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Signs request.
|
|
27
|
-
*
|
|
28
|
-
* @param request -
|
|
29
|
-
*/
|
|
30
|
-
signRequest(request) {
|
|
31
|
-
request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
|
|
32
|
-
if (request.body &&
|
|
33
|
-
(typeof request.body === "string" || request.body !== undefined) &&
|
|
34
|
-
request.body.length > 0) {
|
|
35
|
-
request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
|
|
36
|
-
}
|
|
37
|
-
const stringToSign = [
|
|
38
|
-
request.method.toUpperCase(),
|
|
39
|
-
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
|
|
40
|
-
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
|
|
41
|
-
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LENGTH),
|
|
42
|
-
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_MD5),
|
|
43
|
-
this.getHeaderValueToSign(request, HeaderConstants.CONTENT_TYPE),
|
|
44
|
-
this.getHeaderValueToSign(request, HeaderConstants.DATE),
|
|
45
|
-
this.getHeaderValueToSign(request, HeaderConstants.IF_MODIFIED_SINCE),
|
|
46
|
-
this.getHeaderValueToSign(request, HeaderConstants.IF_MATCH),
|
|
47
|
-
this.getHeaderValueToSign(request, HeaderConstants.IF_NONE_MATCH),
|
|
48
|
-
this.getHeaderValueToSign(request, HeaderConstants.IF_UNMODIFIED_SINCE),
|
|
49
|
-
this.getHeaderValueToSign(request, HeaderConstants.RANGE),
|
|
50
|
-
].join("\n") +
|
|
51
|
-
"\n" +
|
|
52
|
-
this.getCanonicalizedHeadersString(request) +
|
|
53
|
-
this.getCanonicalizedResourceString(request);
|
|
54
|
-
const signature = this.factory.computeHMACSHA256(stringToSign);
|
|
55
|
-
request.headers.set(HeaderConstants.AUTHORIZATION, `SharedKey ${this.factory.accountName}:${signature}`);
|
|
56
|
-
// console.log(`[URL]:${request.url}`);
|
|
57
|
-
// console.log(`[HEADERS]:${request.headers.toString()}`);
|
|
58
|
-
// console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
|
|
59
|
-
// console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
|
|
60
|
-
return request;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Retrieve header value according to shared key sign rules.
|
|
64
|
-
* @see https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key
|
|
65
|
-
*
|
|
66
|
-
* @param request -
|
|
67
|
-
* @param headerName -
|
|
68
|
-
*/
|
|
69
|
-
getHeaderValueToSign(request, headerName) {
|
|
70
|
-
const value = request.headers.get(headerName);
|
|
71
|
-
if (!value) {
|
|
72
|
-
return "";
|
|
73
|
-
}
|
|
74
|
-
// When using version 2015-02-21 or later, if Content-Length is zero, then
|
|
75
|
-
// set the Content-Length part of the StringToSign to an empty string.
|
|
76
|
-
// https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key
|
|
77
|
-
if (headerName === HeaderConstants.CONTENT_LENGTH && value === "0") {
|
|
78
|
-
return "";
|
|
79
|
-
}
|
|
80
|
-
return value;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
|
|
84
|
-
* 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
|
|
85
|
-
* 2. Convert each HTTP header name to lowercase.
|
|
86
|
-
* 3. Sort the headers lexicographically by header name, in ascending order.
|
|
87
|
-
* Each header may appear only once in the string.
|
|
88
|
-
* 4. Replace any linear whitespace in the header value with a single space.
|
|
89
|
-
* 5. Trim any whitespace around the colon in the header.
|
|
90
|
-
* 6. Finally, append a new-line character to each canonicalized header in the resulting list.
|
|
91
|
-
* Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
|
|
92
|
-
*
|
|
93
|
-
* @param request -
|
|
94
|
-
*/
|
|
95
|
-
getCanonicalizedHeadersString(request) {
|
|
96
|
-
let headersArray = request.headers.headersArray().filter((value) => {
|
|
97
|
-
return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);
|
|
98
|
-
});
|
|
99
|
-
headersArray.sort((a, b) => {
|
|
100
|
-
return compareHeader(a.name.toLowerCase(), b.name.toLowerCase());
|
|
101
|
-
});
|
|
102
|
-
// Remove duplicate headers
|
|
103
|
-
headersArray = headersArray.filter((value, index, array) => {
|
|
104
|
-
if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
return true;
|
|
108
|
-
});
|
|
109
|
-
let canonicalizedHeadersStringToSign = "";
|
|
110
|
-
headersArray.forEach((header) => {
|
|
111
|
-
canonicalizedHeadersStringToSign += `${header.name
|
|
112
|
-
.toLowerCase()
|
|
113
|
-
.trimRight()}:${header.value.trimLeft()}\n`;
|
|
114
|
-
});
|
|
115
|
-
return canonicalizedHeadersStringToSign;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Retrieves the webResource canonicalized resource string.
|
|
119
|
-
*
|
|
120
|
-
* @param request -
|
|
121
|
-
*/
|
|
122
|
-
getCanonicalizedResourceString(request) {
|
|
123
|
-
const path = getURLPath(request.url) || "/";
|
|
124
|
-
let canonicalizedResourceString = "";
|
|
125
|
-
canonicalizedResourceString += `/${this.factory.accountName}${path}`;
|
|
126
|
-
const queries = getURLQueries(request.url);
|
|
127
|
-
const lowercaseQueries = {};
|
|
128
|
-
if (queries) {
|
|
129
|
-
const queryKeys = [];
|
|
130
|
-
for (const key in queries) {
|
|
131
|
-
if (Object.prototype.hasOwnProperty.call(queries, key)) {
|
|
132
|
-
const lowercaseKey = key.toLowerCase();
|
|
133
|
-
lowercaseQueries[lowercaseKey] = queries[key];
|
|
134
|
-
queryKeys.push(lowercaseKey);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
queryKeys.sort();
|
|
138
|
-
for (const key of queryKeys) {
|
|
139
|
-
canonicalizedResourceString += `\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return canonicalizedResourceString;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=StorageSharedKeyCredentialPolicy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageSharedKeyCredentialPolicy.js","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n RequestPolicy,\n RequestPolicyOptionsLike as RequestPolicyOptions,\n WebResourceLike as WebResource,\n} from \"@azure/core-http-compat\";\nimport type { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential.js\";\nimport { HeaderConstants } from \"../utils/constants.js\";\nimport { getURLPath, getURLQueries } from \"../utils/utils.common.js\";\nimport { CredentialPolicy } from \"./CredentialPolicy.js\";\nimport { compareHeader } from \"../utils/SharedKeyComparator.js\";\n\n/**\n * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.\n */\nexport class StorageSharedKeyCredentialPolicy extends CredentialPolicy {\n /**\n * Reference to StorageSharedKeyCredential which generates StorageSharedKeyCredentialPolicy\n */\n private readonly factory: StorageSharedKeyCredential;\n\n /**\n * Creates an instance of StorageSharedKeyCredentialPolicy.\n * @param nextPolicy -\n * @param options -\n * @param factory -\n */\n constructor(\n nextPolicy: RequestPolicy,\n options: RequestPolicyOptions,\n factory: StorageSharedKeyCredential,\n ) {\n super(nextPolicy, options);\n this.factory = factory;\n }\n\n /**\n * Signs request.\n *\n * @param request -\n */\n protected signRequest(request: WebResource): WebResource {\n request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());\n\n if (\n request.body &&\n (typeof request.body === \"string\" || (request.body as Buffer) !== undefined) &&\n request.body.length > 0\n ) {\n request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));\n }\n\n const stringToSign: string =\n [\n request.method.toUpperCase(),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LENGTH),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_MD5),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_TYPE),\n this.getHeaderValueToSign(request, HeaderConstants.DATE),\n this.getHeaderValueToSign(request, HeaderConstants.IF_MODIFIED_SINCE),\n this.getHeaderValueToSign(request, HeaderConstants.IF_MATCH),\n this.getHeaderValueToSign(request, HeaderConstants.IF_NONE_MATCH),\n this.getHeaderValueToSign(request, HeaderConstants.IF_UNMODIFIED_SINCE),\n this.getHeaderValueToSign(request, HeaderConstants.RANGE),\n ].join(\"\\n\") +\n \"\\n\" +\n this.getCanonicalizedHeadersString(request) +\n this.getCanonicalizedResourceString(request);\n\n const signature: string = this.factory.computeHMACSHA256(stringToSign);\n request.headers.set(\n HeaderConstants.AUTHORIZATION,\n `SharedKey ${this.factory.accountName}:${signature}`,\n );\n\n // console.log(`[URL]:${request.url}`);\n // console.log(`[HEADERS]:${request.headers.toString()}`);\n // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);\n // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);\n return request;\n }\n\n /**\n * Retrieve header value according to shared key sign rules.\n * @see https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key\n *\n * @param request -\n * @param headerName -\n */\n private getHeaderValueToSign(request: WebResource, headerName: string): string {\n const value = request.headers.get(headerName);\n\n if (!value) {\n return \"\";\n }\n\n // When using version 2015-02-21 or later, if Content-Length is zero, then\n // set the Content-Length part of the StringToSign to an empty string.\n // https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key\n if (headerName === HeaderConstants.CONTENT_LENGTH && value === \"0\") {\n return \"\";\n }\n\n return value;\n }\n\n /**\n * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:\n * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.\n * 2. Convert each HTTP header name to lowercase.\n * 3. Sort the headers lexicographically by header name, in ascending order.\n * Each header may appear only once in the string.\n * 4. Replace any linear whitespace in the header value with a single space.\n * 5. Trim any whitespace around the colon in the header.\n * 6. Finally, append a new-line character to each canonicalized header in the resulting list.\n * Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.\n *\n * @param request -\n */\n private getCanonicalizedHeadersString(request: WebResource): string {\n let headersArray = request.headers.headersArray().filter((value) => {\n return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);\n });\n\n headersArray.sort((a, b): number => {\n return compareHeader(a.name.toLowerCase(), b.name.toLowerCase());\n });\n\n // Remove duplicate headers\n headersArray = headersArray.filter((value, index, array) => {\n if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {\n return false;\n }\n return true;\n });\n\n let canonicalizedHeadersStringToSign: string = \"\";\n headersArray.forEach((header) => {\n canonicalizedHeadersStringToSign += `${header.name\n .toLowerCase()\n .trimRight()}:${header.value.trimLeft()}\\n`;\n });\n\n return canonicalizedHeadersStringToSign;\n }\n\n /**\n * Retrieves the webResource canonicalized resource string.\n *\n * @param request -\n */\n private getCanonicalizedResourceString(request: WebResource): string {\n const path = getURLPath(request.url) || \"/\";\n\n let canonicalizedResourceString: string = \"\";\n canonicalizedResourceString += `/${this.factory.accountName}${path}`;\n\n const queries = getURLQueries(request.url);\n const lowercaseQueries: { [key: string]: string } = {};\n if (queries) {\n const queryKeys: string[] = [];\n for (const key in queries) {\n if (Object.prototype.hasOwnProperty.call(queries, key)) {\n const lowercaseKey = key.toLowerCase();\n lowercaseQueries[lowercaseKey] = queries[key];\n queryKeys.push(lowercaseKey);\n }\n }\n\n queryKeys.sort();\n for (const key of queryKeys) {\n canonicalizedResourceString += `\\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;\n }\n }\n\n return canonicalizedResourceString;\n }\n}\n"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { PipelinePolicy } from "@azure/core-rest-pipeline";
|
|
2
|
-
/**
|
|
3
|
-
* The programmatic identifier of the storageSharedKeyCredentialPolicy.
|
|
4
|
-
*/
|
|
5
|
-
export declare const storageSharedKeyCredentialPolicyName = "storageSharedKeyCredentialPolicy";
|
|
6
|
-
/**
|
|
7
|
-
* Options used to configure StorageSharedKeyCredentialPolicy.
|
|
8
|
-
*/
|
|
9
|
-
export interface StorageSharedKeyCredentialPolicyOptions {
|
|
10
|
-
accountName: string;
|
|
11
|
-
accountKey: Buffer;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* storageSharedKeyCredentialPolicy handles signing requests using storage account keys.
|
|
15
|
-
*/
|
|
16
|
-
export declare function storageSharedKeyCredentialPolicy(options: StorageSharedKeyCredentialPolicyOptions): PipelinePolicy;
|
|
17
|
-
//# sourceMappingURL=StorageSharedKeyCredentialPolicyV2.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageSharedKeyCredentialPolicyV2.d.ts","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicyV2.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,2BAA2B,CAAC;AAKnC;;GAEG;AACH,eAAO,MAAM,oCAAoC,qCAAqC,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,uCAAuC;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,uCAAuC,GAC/C,cAAc,CA8IhB"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT License.
|
|
3
|
-
import { createHmac } from "node:crypto";
|
|
4
|
-
import { HeaderConstants } from "../utils/constants.js";
|
|
5
|
-
import { getURLPath, getURLQueries } from "../utils/utils.common.js";
|
|
6
|
-
import { compareHeader } from "../utils/SharedKeyComparator.js";
|
|
7
|
-
/**
|
|
8
|
-
* The programmatic identifier of the storageSharedKeyCredentialPolicy.
|
|
9
|
-
*/
|
|
10
|
-
export const storageSharedKeyCredentialPolicyName = "storageSharedKeyCredentialPolicy";
|
|
11
|
-
/**
|
|
12
|
-
* storageSharedKeyCredentialPolicy handles signing requests using storage account keys.
|
|
13
|
-
*/
|
|
14
|
-
export function storageSharedKeyCredentialPolicy(options) {
|
|
15
|
-
function signRequest(request) {
|
|
16
|
-
request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
|
|
17
|
-
if (request.body &&
|
|
18
|
-
(typeof request.body === "string" || Buffer.isBuffer(request.body)) &&
|
|
19
|
-
request.body.length > 0) {
|
|
20
|
-
request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
|
|
21
|
-
}
|
|
22
|
-
const stringToSign = [
|
|
23
|
-
request.method.toUpperCase(),
|
|
24
|
-
getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
|
|
25
|
-
getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
|
|
26
|
-
getHeaderValueToSign(request, HeaderConstants.CONTENT_LENGTH),
|
|
27
|
-
getHeaderValueToSign(request, HeaderConstants.CONTENT_MD5),
|
|
28
|
-
getHeaderValueToSign(request, HeaderConstants.CONTENT_TYPE),
|
|
29
|
-
getHeaderValueToSign(request, HeaderConstants.DATE),
|
|
30
|
-
getHeaderValueToSign(request, HeaderConstants.IF_MODIFIED_SINCE),
|
|
31
|
-
getHeaderValueToSign(request, HeaderConstants.IF_MATCH),
|
|
32
|
-
getHeaderValueToSign(request, HeaderConstants.IF_NONE_MATCH),
|
|
33
|
-
getHeaderValueToSign(request, HeaderConstants.IF_UNMODIFIED_SINCE),
|
|
34
|
-
getHeaderValueToSign(request, HeaderConstants.RANGE),
|
|
35
|
-
].join("\n") +
|
|
36
|
-
"\n" +
|
|
37
|
-
getCanonicalizedHeadersString(request) +
|
|
38
|
-
getCanonicalizedResourceString(request);
|
|
39
|
-
const signature = createHmac("sha256", options.accountKey)
|
|
40
|
-
.update(stringToSign, "utf8")
|
|
41
|
-
.digest("base64");
|
|
42
|
-
request.headers.set(HeaderConstants.AUTHORIZATION, `SharedKey ${options.accountName}:${signature}`);
|
|
43
|
-
// console.log(`[URL]:${request.url}`);
|
|
44
|
-
// console.log(`[HEADERS]:${request.headers.toString()}`);
|
|
45
|
-
// console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
|
|
46
|
-
// console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Retrieve header value according to shared key sign rules.
|
|
50
|
-
* @see https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key
|
|
51
|
-
*/
|
|
52
|
-
function getHeaderValueToSign(request, headerName) {
|
|
53
|
-
const value = request.headers.get(headerName);
|
|
54
|
-
if (!value) {
|
|
55
|
-
return "";
|
|
56
|
-
}
|
|
57
|
-
// When using version 2015-02-21 or later, if Content-Length is zero, then
|
|
58
|
-
// set the Content-Length part of the StringToSign to an empty string.
|
|
59
|
-
// https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key
|
|
60
|
-
if (headerName === HeaderConstants.CONTENT_LENGTH && value === "0") {
|
|
61
|
-
return "";
|
|
62
|
-
}
|
|
63
|
-
return value;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
|
|
67
|
-
* 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
|
|
68
|
-
* 2. Convert each HTTP header name to lowercase.
|
|
69
|
-
* 3. Sort the headers lexicographically by header name, in ascending order.
|
|
70
|
-
* Each header may appear only once in the string.
|
|
71
|
-
* 4. Replace any linear whitespace in the header value with a single space.
|
|
72
|
-
* 5. Trim any whitespace around the colon in the header.
|
|
73
|
-
* 6. Finally, append a new-line character to each canonicalized header in the resulting list.
|
|
74
|
-
* Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
|
|
75
|
-
*
|
|
76
|
-
*/
|
|
77
|
-
function getCanonicalizedHeadersString(request) {
|
|
78
|
-
let headersArray = [];
|
|
79
|
-
for (const [name, value] of request.headers) {
|
|
80
|
-
if (name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE)) {
|
|
81
|
-
headersArray.push({ name, value });
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
headersArray.sort((a, b) => {
|
|
85
|
-
return compareHeader(a.name.toLowerCase(), b.name.toLowerCase());
|
|
86
|
-
});
|
|
87
|
-
// Remove duplicate headers
|
|
88
|
-
headersArray = headersArray.filter((value, index, array) => {
|
|
89
|
-
if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
return true;
|
|
93
|
-
});
|
|
94
|
-
let canonicalizedHeadersStringToSign = "";
|
|
95
|
-
headersArray.forEach((header) => {
|
|
96
|
-
canonicalizedHeadersStringToSign += `${header.name
|
|
97
|
-
.toLowerCase()
|
|
98
|
-
.trimRight()}:${header.value.trimLeft()}\n`;
|
|
99
|
-
});
|
|
100
|
-
return canonicalizedHeadersStringToSign;
|
|
101
|
-
}
|
|
102
|
-
function getCanonicalizedResourceString(request) {
|
|
103
|
-
const path = getURLPath(request.url) || "/";
|
|
104
|
-
let canonicalizedResourceString = "";
|
|
105
|
-
canonicalizedResourceString += `/${options.accountName}${path}`;
|
|
106
|
-
const queries = getURLQueries(request.url);
|
|
107
|
-
const lowercaseQueries = {};
|
|
108
|
-
if (queries) {
|
|
109
|
-
const queryKeys = [];
|
|
110
|
-
for (const key in queries) {
|
|
111
|
-
if (Object.prototype.hasOwnProperty.call(queries, key)) {
|
|
112
|
-
const lowercaseKey = key.toLowerCase();
|
|
113
|
-
lowercaseQueries[lowercaseKey] = queries[key];
|
|
114
|
-
queryKeys.push(lowercaseKey);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
queryKeys.sort();
|
|
118
|
-
for (const key of queryKeys) {
|
|
119
|
-
canonicalizedResourceString += `\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return canonicalizedResourceString;
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
name: storageSharedKeyCredentialPolicyName,
|
|
126
|
-
async sendRequest(request, next) {
|
|
127
|
-
signRequest(request);
|
|
128
|
-
return next(request);
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
//# sourceMappingURL=StorageSharedKeyCredentialPolicyV2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StorageSharedKeyCredentialPolicyV2.js","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicyV2.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createHmac } from \"node:crypto\";\nimport type {\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n PipelinePolicy,\n} from \"@azure/core-rest-pipeline\";\nimport { HeaderConstants } from \"../utils/constants.js\";\nimport { getURLPath, getURLQueries } from \"../utils/utils.common.js\";\nimport { compareHeader } from \"../utils/SharedKeyComparator.js\";\n\n/**\n * The programmatic identifier of the storageSharedKeyCredentialPolicy.\n */\nexport const storageSharedKeyCredentialPolicyName = \"storageSharedKeyCredentialPolicy\";\n\n/**\n * Options used to configure StorageSharedKeyCredentialPolicy.\n */\nexport interface StorageSharedKeyCredentialPolicyOptions {\n accountName: string;\n accountKey: Buffer;\n}\n\n/**\n * storageSharedKeyCredentialPolicy handles signing requests using storage account keys.\n */\nexport function storageSharedKeyCredentialPolicy(\n options: StorageSharedKeyCredentialPolicyOptions,\n): PipelinePolicy {\n function signRequest(request: PipelineRequest): void {\n request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());\n\n if (\n request.body &&\n (typeof request.body === \"string\" || Buffer.isBuffer(request.body)) &&\n request.body.length > 0\n ) {\n request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));\n }\n\n const stringToSign: string =\n [\n request.method.toUpperCase(),\n getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),\n getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),\n getHeaderValueToSign(request, HeaderConstants.CONTENT_LENGTH),\n getHeaderValueToSign(request, HeaderConstants.CONTENT_MD5),\n getHeaderValueToSign(request, HeaderConstants.CONTENT_TYPE),\n getHeaderValueToSign(request, HeaderConstants.DATE),\n getHeaderValueToSign(request, HeaderConstants.IF_MODIFIED_SINCE),\n getHeaderValueToSign(request, HeaderConstants.IF_MATCH),\n getHeaderValueToSign(request, HeaderConstants.IF_NONE_MATCH),\n getHeaderValueToSign(request, HeaderConstants.IF_UNMODIFIED_SINCE),\n getHeaderValueToSign(request, HeaderConstants.RANGE),\n ].join(\"\\n\") +\n \"\\n\" +\n getCanonicalizedHeadersString(request) +\n getCanonicalizedResourceString(request);\n\n const signature: string = createHmac(\"sha256\", options.accountKey)\n .update(stringToSign, \"utf8\")\n .digest(\"base64\");\n request.headers.set(\n HeaderConstants.AUTHORIZATION,\n `SharedKey ${options.accountName}:${signature}`,\n );\n\n // console.log(`[URL]:${request.url}`);\n // console.log(`[HEADERS]:${request.headers.toString()}`);\n // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);\n // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);\n }\n\n /**\n * Retrieve header value according to shared key sign rules.\n * @see https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key\n */\n function getHeaderValueToSign(request: PipelineRequest, headerName: string): string {\n const value = request.headers.get(headerName);\n\n if (!value) {\n return \"\";\n }\n\n // When using version 2015-02-21 or later, if Content-Length is zero, then\n // set the Content-Length part of the StringToSign to an empty string.\n // https://learn.microsoft.com/rest/api/storageservices/authenticate-with-shared-key\n if (headerName === HeaderConstants.CONTENT_LENGTH && value === \"0\") {\n return \"\";\n }\n\n return value;\n }\n\n /**\n * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:\n * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.\n * 2. Convert each HTTP header name to lowercase.\n * 3. Sort the headers lexicographically by header name, in ascending order.\n * Each header may appear only once in the string.\n * 4. Replace any linear whitespace in the header value with a single space.\n * 5. Trim any whitespace around the colon in the header.\n * 6. Finally, append a new-line character to each canonicalized header in the resulting list.\n * Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.\n *\n */\n function getCanonicalizedHeadersString(request: PipelineRequest): string {\n let headersArray: Array<{ name: string; value: string }> = [];\n for (const [name, value] of request.headers) {\n if (name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE)) {\n headersArray.push({ name, value });\n }\n }\n\n headersArray.sort((a, b): number => {\n return compareHeader(a.name.toLowerCase(), b.name.toLowerCase());\n });\n\n // Remove duplicate headers\n headersArray = headersArray.filter((value, index, array) => {\n if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {\n return false;\n }\n return true;\n });\n\n let canonicalizedHeadersStringToSign: string = \"\";\n headersArray.forEach((header) => {\n canonicalizedHeadersStringToSign += `${header.name\n .toLowerCase()\n .trimRight()}:${header.value.trimLeft()}\\n`;\n });\n\n return canonicalizedHeadersStringToSign;\n }\n\n function getCanonicalizedResourceString(request: PipelineRequest): string {\n const path = getURLPath(request.url) || \"/\";\n\n let canonicalizedResourceString: string = \"\";\n canonicalizedResourceString += `/${options.accountName}${path}`;\n\n const queries = getURLQueries(request.url);\n const lowercaseQueries: { [key: string]: string } = {};\n if (queries) {\n const queryKeys: string[] = [];\n for (const key in queries) {\n if (Object.prototype.hasOwnProperty.call(queries, key)) {\n const lowercaseKey = key.toLowerCase();\n lowercaseQueries[lowercaseKey] = queries[key];\n queryKeys.push(lowercaseKey);\n }\n }\n\n queryKeys.sort();\n for (const key of queryKeys) {\n canonicalizedResourceString += `\\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;\n }\n }\n\n return canonicalizedResourceString;\n }\n\n return {\n name: storageSharedKeyCredentialPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n signRequest(request);\n return next(request);\n },\n };\n}\n"]}
|