@azure/storage-blob 12.33.0-beta.1 → 12.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +5 -16
  2. package/dist/browser/BlobServiceClient.d.ts +3 -3
  3. package/dist/browser/BlobServiceClient.d.ts.map +1 -1
  4. package/dist/browser/BlobServiceClient.js.map +1 -1
  5. package/dist/browser/Clients.d.ts +16 -38
  6. package/dist/browser/Clients.d.ts.map +1 -1
  7. package/dist/browser/Clients.js +10 -32
  8. package/dist/browser/Clients.js.map +1 -1
  9. package/dist/browser/ContainerClient.d.ts +2 -2
  10. package/dist/browser/ContainerClient.d.ts.map +1 -1
  11. package/dist/browser/ContainerClient.js.map +1 -1
  12. package/dist/browser/generated/src/storageClient.js +1 -1
  13. package/dist/browser/generated/src/storageClient.js.map +1 -1
  14. package/dist/browser/index.d.ts +1 -1
  15. package/dist/browser/index.d.ts.map +1 -1
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/browser/models.d.ts +21 -1
  18. package/dist/browser/models.d.ts.map +1 -1
  19. package/dist/browser/models.js.map +1 -1
  20. package/dist/browser/sas/BlobSASSignatureValues.js +1 -1
  21. package/dist/browser/sas/BlobSASSignatureValues.js.map +1 -1
  22. package/dist/browser/sas/SASQueryParameters.d.ts.map +1 -1
  23. package/dist/browser/sas/SASQueryParameters.js +2 -2
  24. package/dist/browser/sas/SASQueryParameters.js.map +1 -1
  25. package/dist/browser/utils/constants.d.ts.map +1 -1
  26. package/dist/browser/utils/constants.js +1 -1
  27. package/dist/browser/utils/constants.js.map +1 -1
  28. package/dist/browser/utils/utils.common.d.ts.map +1 -1
  29. package/dist/browser/utils/utils.common.js +1 -0
  30. package/dist/browser/utils/utils.common.js.map +1 -1
  31. package/dist/commonjs/BlobServiceClient.d.ts +3 -3
  32. package/dist/commonjs/BlobServiceClient.d.ts.map +1 -1
  33. package/dist/commonjs/BlobServiceClient.js.map +1 -1
  34. package/dist/commonjs/Clients.d.ts +16 -38
  35. package/dist/commonjs/Clients.d.ts.map +1 -1
  36. package/dist/commonjs/Clients.js +10 -32
  37. package/dist/commonjs/Clients.js.map +2 -2
  38. package/dist/commonjs/ContainerClient.d.ts +2 -2
  39. package/dist/commonjs/ContainerClient.d.ts.map +1 -1
  40. package/dist/commonjs/ContainerClient.js.map +1 -1
  41. package/dist/commonjs/generated/src/storageClient.js +1 -1
  42. package/dist/commonjs/generated/src/storageClient.js.map +1 -1
  43. package/dist/commonjs/index.d.ts +1 -1
  44. package/dist/commonjs/index.d.ts.map +1 -1
  45. package/dist/commonjs/index.js.map +2 -2
  46. package/dist/commonjs/models.d.ts +21 -1
  47. package/dist/commonjs/models.d.ts.map +1 -1
  48. package/dist/commonjs/models.js.map +1 -1
  49. package/dist/commonjs/sas/BlobSASSignatureValues.js.map +1 -1
  50. package/dist/commonjs/sas/SASQueryParameters.d.ts.map +1 -1
  51. package/dist/commonjs/sas/SASQueryParameters.js +5 -1
  52. package/dist/commonjs/sas/SASQueryParameters.js.map +2 -2
  53. package/dist/commonjs/tsdoc-metadata.json +1 -1
  54. package/dist/commonjs/utils/constants.d.ts.map +1 -1
  55. package/dist/commonjs/utils/constants.js +1 -1
  56. package/dist/commonjs/utils/constants.js.map +1 -1
  57. package/dist/commonjs/utils/utils.common.d.ts.map +1 -1
  58. package/dist/commonjs/utils/utils.common.js +1 -0
  59. package/dist/commonjs/utils/utils.common.js.map +2 -2
  60. package/dist/commonjs/utils/utils.d.ts.map +1 -1
  61. package/dist/commonjs/utils/utils.js +24 -21
  62. package/dist/commonjs/utils/utils.js.map +2 -2
  63. package/dist/esm/BlobServiceClient.d.ts +3 -3
  64. package/dist/esm/BlobServiceClient.d.ts.map +1 -1
  65. package/dist/esm/BlobServiceClient.js.map +1 -1
  66. package/dist/esm/Clients.d.ts +16 -38
  67. package/dist/esm/Clients.d.ts.map +1 -1
  68. package/dist/esm/Clients.js +10 -32
  69. package/dist/esm/Clients.js.map +1 -1
  70. package/dist/esm/ContainerClient.d.ts +2 -2
  71. package/dist/esm/ContainerClient.d.ts.map +1 -1
  72. package/dist/esm/ContainerClient.js.map +1 -1
  73. package/dist/esm/generated/src/storageClient.js +1 -1
  74. package/dist/esm/generated/src/storageClient.js.map +1 -1
  75. package/dist/esm/index.d.ts +1 -1
  76. package/dist/esm/index.d.ts.map +1 -1
  77. package/dist/esm/index.js.map +1 -1
  78. package/dist/esm/models.d.ts +21 -1
  79. package/dist/esm/models.d.ts.map +1 -1
  80. package/dist/esm/models.js.map +1 -1
  81. package/dist/esm/sas/BlobSASSignatureValues.js +1 -1
  82. package/dist/esm/sas/BlobSASSignatureValues.js.map +1 -1
  83. package/dist/esm/sas/SASQueryParameters.d.ts.map +1 -1
  84. package/dist/esm/sas/SASQueryParameters.js +2 -2
  85. package/dist/esm/sas/SASQueryParameters.js.map +1 -1
  86. package/dist/esm/utils/constants.d.ts.map +1 -1
  87. package/dist/esm/utils/constants.js +1 -1
  88. package/dist/esm/utils/constants.js.map +1 -1
  89. package/dist/esm/utils/utils.common.d.ts.map +1 -1
  90. package/dist/esm/utils/utils.common.js +1 -0
  91. package/dist/esm/utils/utils.common.js.map +1 -1
  92. package/dist/esm/utils/utils.d.ts.map +1 -1
  93. package/dist/esm/utils/utils.js +32 -22
  94. package/dist/esm/utils/utils.js.map +1 -1
  95. package/dist/react-native/BlobServiceClient.d.ts +3 -3
  96. package/dist/react-native/BlobServiceClient.d.ts.map +1 -1
  97. package/dist/react-native/BlobServiceClient.js.map +1 -1
  98. package/dist/react-native/Clients.d.ts +16 -38
  99. package/dist/react-native/Clients.d.ts.map +1 -1
  100. package/dist/react-native/Clients.js +10 -32
  101. package/dist/react-native/Clients.js.map +1 -1
  102. package/dist/react-native/ContainerClient.d.ts +2 -2
  103. package/dist/react-native/ContainerClient.d.ts.map +1 -1
  104. package/dist/react-native/ContainerClient.js.map +1 -1
  105. package/dist/react-native/generated/src/storageClient.js +1 -1
  106. package/dist/react-native/generated/src/storageClient.js.map +1 -1
  107. package/dist/react-native/index.d.ts +1 -1
  108. package/dist/react-native/index.d.ts.map +1 -1
  109. package/dist/react-native/index.js.map +1 -1
  110. package/dist/react-native/models.d.ts +21 -1
  111. package/dist/react-native/models.d.ts.map +1 -1
  112. package/dist/react-native/models.js.map +1 -1
  113. package/dist/react-native/sas/BlobSASSignatureValues.js +1 -1
  114. package/dist/react-native/sas/BlobSASSignatureValues.js.map +1 -1
  115. package/dist/react-native/sas/SASQueryParameters.d.ts.map +1 -1
  116. package/dist/react-native/sas/SASQueryParameters.js +2 -2
  117. package/dist/react-native/sas/SASQueryParameters.js.map +1 -1
  118. package/dist/react-native/utils/constants.d.ts.map +1 -1
  119. package/dist/react-native/utils/constants.js +1 -1
  120. package/dist/react-native/utils/constants.js.map +1 -1
  121. package/dist/react-native/utils/utils.common.d.ts.map +1 -1
  122. package/dist/react-native/utils/utils.common.js +1 -0
  123. package/dist/react-native/utils/utils.common.js.map +1 -1
  124. package/package.json +13 -7
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RestError } from \"@azure/core-rest-pipeline\";\n\nexport type { PollOperationState, PollerLike } from \"@azure/core-lro\";\nexport * from \"./BlobServiceClient.js\";\nexport * from \"./Clients.js\";\nexport * from \"./ContainerClient.js\";\nexport * from \"./BlobLeaseClient.js\";\nexport * from \"./sas/AccountSASPermissions.js\";\nexport * from \"./sas/AccountSASResourceTypes.js\";\nexport * from \"./sas/AccountSASServices.js\";\nexport {\n type AccountSASSignatureValues,\n generateAccountSASQueryParameters,\n} from \"./sas/AccountSASSignatureValues.js\";\nexport * from \"./BlobBatch.js\";\nexport * from \"./BlobBatchClient.js\";\nexport type * from \"./BatchResponse.js\";\nexport * from \"./sas/BlobSASPermissions.js\";\nexport {\n type BlobSASSignatureValues,\n generateBlobSASQueryParameters,\n} from \"./sas/BlobSASSignatureValues.js\";\nexport * from \"./sas/ContainerSASPermissions.js\";\nexport type { SasIPRange } from \"./sas/SasIPRange.js\";\nexport type { Range } from \"./Range.js\";\nexport {\n type BlobClientOptions,\n type BlobClientConfig,\n BlockBlobTier,\n PremiumPageBlobTier,\n type Tags,\n type BlobDownloadResponseParsed,\n type BlobImmutabilityPolicy,\n type ObjectReplicationPolicy,\n type ObjectReplicationRule,\n type ObjectReplicationStatus,\n type BlobQueryArrowField,\n type BlobQueryArrowFieldType,\n type HttpAuthorization,\n StorageBlobAudience,\n type PollerLikeWithCancellation,\n getBlobServiceAccountAudience,\n} from \"./models.js\";\nexport type { NodeJSReadableStream } from \"@azure/storage-common\";\nexport {\n Pipeline,\n type PipelineLike,\n type PipelineOptions,\n isPipelineLike,\n newPipeline,\n type StoragePipelineOptions,\n type RequestPolicyFactory,\n type RequestPolicy,\n type RequestPolicyOptions,\n type WebResource,\n type HttpOperationResponse,\n type HttpHeaders,\n type HttpRequestBody,\n type IHttpClient,\n StorageOAuthScopes,\n type ServiceClientOptions,\n} from \"./Pipeline.js\";\nexport {\n AnonymousCredential,\n AnonymousCredentialPolicy,\n BaseRequestPolicy,\n CredentialPolicy,\n Credential,\n StorageRetryPolicyType,\n StorageRetryPolicy,\n type StorageRetryOptions,\n StorageRetryPolicyFactory,\n StorageSharedKeyCredential,\n StorageSharedKeyCredentialPolicy,\n StorageBrowserPolicy,\n StorageBrowserPolicyFactory,\n type UserDelegationKey,\n type CredentialPolicyCreator,\n} from \"@azure/storage-common\";\nexport * from \"./sas/SASQueryParameters.js\";\nexport type { CommonOptions } from \"./StorageClient.js\";\nexport * from \"./generatedModels.js\";\nexport type {\n AppendBlobRequestConditions,\n BlobRequestConditions,\n Metadata,\n PageBlobRequestConditions,\n TagConditions,\n ContainerRequestConditions,\n ModificationConditions,\n MatchConditions,\n ModifiedAccessConditions,\n StorageChecksumAlgorithm,\n AccessTierModifiedConditions,\n RequestHeaders,\n RequestQueryParameters,\n} from \"./models.js\";\nexport { RestError };\nexport type {\n PageBlobGetPageRangesDiffResponse,\n PageBlobGetPageRangesResponse,\n PageList,\n} from \"./PageBlobRangeResponse.js\";\nexport { logger } from \"./log.js\";\nexport type {\n BlobBeginCopyFromUrlPollState,\n CopyPollerBlobClient,\n} from \"./pollers/BlobStartCopyFromUrlPoller.js\";\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,gCAA0B;AAG1B,wBAAc,mCANd;AAOA,wBAAc,yBAPd;AAQA,wBAAc,iCARd;AASA,wBAAc,iCATd;AAUA,wBAAc,2CAVd;AAWA,wBAAc,6CAXd;AAYA,wBAAc,wCAZd;AAaA,uCAGO;AACP,wBAAc,2BAjBd;AAkBA,wBAAc,iCAlBd;AAoBA,wBAAc,wCApBd;AAqBA,oCAGO;AACP,wBAAc,6CAzBd;AA4BA,oBAiBO;AAEP,sBAiBO;AACP,4BAgBO;AACP,wBAAc,wCAlFd;AAoFA,wBAAc,iCApFd;AA0GA,iBAAuB;",
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { RestError } from \"@azure/core-rest-pipeline\";\n\nexport type { PollOperationState, PollerLike } from \"@azure/core-lro\";\nexport * from \"./BlobServiceClient.js\";\nexport * from \"./Clients.js\";\nexport * from \"./ContainerClient.js\";\nexport * from \"./BlobLeaseClient.js\";\nexport * from \"./sas/AccountSASPermissions.js\";\nexport * from \"./sas/AccountSASResourceTypes.js\";\nexport * from \"./sas/AccountSASServices.js\";\nexport {\n type AccountSASSignatureValues,\n generateAccountSASQueryParameters,\n} from \"./sas/AccountSASSignatureValues.js\";\nexport * from \"./BlobBatch.js\";\nexport * from \"./BlobBatchClient.js\";\nexport type * from \"./BatchResponse.js\";\nexport * from \"./sas/BlobSASPermissions.js\";\nexport {\n type BlobSASSignatureValues,\n generateBlobSASQueryParameters,\n} from \"./sas/BlobSASSignatureValues.js\";\nexport * from \"./sas/ContainerSASPermissions.js\";\nexport type { SasIPRange } from \"./sas/SasIPRange.js\";\nexport type { Range } from \"./Range.js\";\nexport {\n type BlobClientOptions,\n type AppendBlobClientOptions,\n type BlockBlobClientOptions,\n type PageBlobClientOptions,\n type ContainerClientOptions,\n type BlobServiceClientOptions,\n type BlobClientConfig,\n BlockBlobTier,\n PremiumPageBlobTier,\n type Tags,\n type BlobDownloadResponseParsed,\n type BlobImmutabilityPolicy,\n type ObjectReplicationPolicy,\n type ObjectReplicationRule,\n type ObjectReplicationStatus,\n type BlobQueryArrowField,\n type BlobQueryArrowFieldType,\n type HttpAuthorization,\n StorageBlobAudience,\n type PollerLikeWithCancellation,\n getBlobServiceAccountAudience,\n} from \"./models.js\";\nexport type { NodeJSReadableStream } from \"@azure/storage-common\";\nexport {\n Pipeline,\n type PipelineLike,\n type PipelineOptions,\n isPipelineLike,\n newPipeline,\n type StoragePipelineOptions,\n type RequestPolicyFactory,\n type RequestPolicy,\n type RequestPolicyOptions,\n type WebResource,\n type HttpOperationResponse,\n type HttpHeaders,\n type HttpRequestBody,\n type IHttpClient,\n StorageOAuthScopes,\n type ServiceClientOptions,\n} from \"./Pipeline.js\";\nexport {\n AnonymousCredential,\n AnonymousCredentialPolicy,\n BaseRequestPolicy,\n CredentialPolicy,\n Credential,\n StorageRetryPolicyType,\n StorageRetryPolicy,\n type StorageRetryOptions,\n StorageRetryPolicyFactory,\n StorageSharedKeyCredential,\n StorageSharedKeyCredentialPolicy,\n StorageBrowserPolicy,\n StorageBrowserPolicyFactory,\n type UserDelegationKey,\n type CredentialPolicyCreator,\n} from \"@azure/storage-common\";\nexport * from \"./sas/SASQueryParameters.js\";\nexport type { CommonOptions } from \"./StorageClient.js\";\nexport * from \"./generatedModels.js\";\nexport type {\n AppendBlobRequestConditions,\n BlobRequestConditions,\n Metadata,\n PageBlobRequestConditions,\n TagConditions,\n ContainerRequestConditions,\n ModificationConditions,\n MatchConditions,\n ModifiedAccessConditions,\n StorageChecksumAlgorithm,\n AccessTierModifiedConditions,\n RequestHeaders,\n RequestQueryParameters,\n} from \"./models.js\";\nexport { RestError };\nexport type {\n PageBlobGetPageRangesDiffResponse,\n PageBlobGetPageRangesResponse,\n PageList,\n} from \"./PageBlobRangeResponse.js\";\nexport { logger } from \"./log.js\";\nexport type {\n BlobBeginCopyFromUrlPollState,\n CopyPollerBlobClient,\n} from \"./pollers/BlobStartCopyFromUrlPoller.js\";\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,gCAA0B;AAG1B,wBAAc,mCANd;AAOA,wBAAc,yBAPd;AAQA,wBAAc,iCARd;AASA,wBAAc,iCATd;AAUA,wBAAc,2CAVd;AAWA,wBAAc,6CAXd;AAYA,wBAAc,wCAZd;AAaA,uCAGO;AACP,wBAAc,2BAjBd;AAkBA,wBAAc,iCAlBd;AAoBA,wBAAc,wCApBd;AAqBA,oCAGO;AACP,wBAAc,6CAzBd;AA4BA,oBAsBO;AAEP,sBAiBO;AACP,4BAgBO;AACP,wBAAc,wCAvFd;AAyFA,wBAAc,iCAzFd;AA+GA,iBAAuB;",
6
6
  "names": []
7
7
  }
@@ -370,7 +370,27 @@ export interface BlobClientConfig {
370
370
  downloadContentChecksumAlgorithm?: StorageChecksumAlgorithm;
371
371
  }
372
372
  /**
373
- * Options for creating blob client instances
373
+ * Options for creating BlobClient instances
374
374
  */
375
375
  export type BlobClientOptions = StoragePipelineOptions & BlobClientConfig;
376
+ /**
377
+ * Options for creating BlockBlobClient instances
378
+ */
379
+ export type BlockBlobClientOptions = StoragePipelineOptions & BlobClientConfig;
380
+ /**
381
+ * Options for creating PageBlobClient instances
382
+ */
383
+ export type PageBlobClientOptions = StoragePipelineOptions & BlobClientConfig;
384
+ /**
385
+ * Options for creating AppendBlobClient instances
386
+ */
387
+ export type AppendBlobClientOptions = StoragePipelineOptions & BlobClientConfig;
388
+ /**
389
+ * Options for creating ContainerClient instances
390
+ */
391
+ export type ContainerClientOptions = StoragePipelineOptions & BlobClientConfig;
392
+ /**
393
+ * Options for creating BlobServiceClient instances
394
+ */
395
+ export type BlobServiceClientOptions = StoragePipelineOptions & BlobClientConfig;
376
396
  //# sourceMappingURL=models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/models.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { CancelOnProgress, PollOperationState } from \"@azure/core-lro\";\nimport type { BlobImmutabilityPolicyMode } from \"./generatedModels.js\";\nimport type {\n LeaseAccessConditions,\n SequenceNumberAccessConditions,\n AppendPositionAccessConditions,\n AccessTier,\n CpkInfo,\n BlobDownloadResponseModel,\n} from \"./generatedModels.js\";\nimport { EncryptionAlgorithmAES25 } from \"./utils/constants.js\";\nimport { StoragePipelineOptions } from \"./Pipeline.js\";\n\n/**\n * Blob tags.\n */\nexport type Tags = Record<string, string>;\n\n/**\n * Request headers used in generating a SAS token\n */\nexport type RequestHeaders = Record<string, string>;\n\n/**\n * Request query parameters used in generating a SAS token\n */\nexport type RequestQueryParameters = Record<string, string>;\n\n/**\n * A map of name-value pairs to associate with the resource.\n */\nexport interface Metadata {\n /**\n * A name-value pair.\n */\n [propertyName: string]: string;\n}\n\n/**\n * standard HTTP conditional headers and tags condition.\n */\nexport interface ModifiedAccessConditions\n extends MatchConditions, ModificationConditions, TagConditions {}\n\n/**\n * standard HTTP conditional headers, tags condition and lease condition\n */\nexport interface BlobRequestConditions extends ModifiedAccessConditions, LeaseAccessConditions {}\n\n/**\n * standard HTTP conditional headers, tags condition and lease condition\n */\nexport interface AccessTierModifiedConditions {\n /**\n * Specify this header value to operate only on a blob if the access-tier has been modified since the specified date/time.\n * */\n accessTierIfModifiedSince?: Date;\n\n /**\n * Specify this header value to operate only on a blob if the access-tier has not been modified since the specified date/time.\n */\n accessTierIfUnmodifiedSince?: Date;\n}\n\n/**\n * Conditions to add to the creation of this page blob.\n */\nexport interface PageBlobRequestConditions\n extends BlobRequestConditions, SequenceNumberAccessConditions {}\n\n/**\n * Conditions to add to the creation of this append blob.\n */\nexport interface AppendBlobRequestConditions\n extends BlobRequestConditions, AppendPositionAccessConditions {}\n\n/**\n * Specifies HTTP options for conditional requests based on modification time.\n */\nexport interface ModificationConditions {\n /**\n * Specify this header value to operate only on a blob if it has been modified since the\n * specified date/time.\n */\n ifModifiedSince?: Date;\n /**\n * Specify this header value to operate only on a blob if it has not been modified since the\n * specified date/time.\n */\n ifUnmodifiedSince?: Date;\n}\n\n/**\n * Specifies HTTP options for conditional requests based on ETag matching.\n */\nexport interface MatchConditions {\n /**\n * Specify an ETag value to operate only on blobs with a matching value.\n */\n ifMatch?: string;\n /**\n * Specify an ETag value to operate only on blobs without a matching value.\n */\n ifNoneMatch?: string;\n}\n\n/**\n * Specifies HTTP options for conditional requests based on blob tags.\n */\nexport interface TagConditions {\n /**\n * Optional SQL statement to apply to the tags of the blob.\n */\n tagConditions?: string;\n}\n\n/**\n * Conditions to meet for the container.\n */\nexport interface ContainerRequestConditions extends LeaseAccessConditions, ModificationConditions {}\n\n/**\n * Represents the access tier on a blob.\n * For detailed information about block blob level tiering see {@link https://learn.microsoft.com/azure/storage/blobs/storage-blob-storage-tiers|Hot, cool and archive storage tiers.}\n */\nexport enum BlockBlobTier {\n /**\n * Optimized for storing data that is accessed frequently.\n */\n Hot = \"Hot\",\n /**\n * Optimized for storing data that is infrequently accessed and stored for at least 30 days.\n */\n Cool = \"Cool\",\n /**\n * Optimized for storing data that is rarely accessed.\n */\n Cold = \"Cold\",\n /**\n * Optimized for storing data that is rarely accessed and stored for at least 180 days\n * with flexible latency requirements (on the order of hours).\n */\n Archive = \"Archive\",\n}\n\n/**\n * Specifies the page blob tier to set the blob to. This is only applicable to page blobs on premium storage accounts.\n * Please see {@link https://learn.microsoft.com/azure/storage/storage-premium-storage#scalability-and-performance-targets|here}\n * for detailed information on the corresponding IOPS and throughput per PageBlobTier.\n */\nexport enum PremiumPageBlobTier {\n /**\n * P4 Tier.\n */\n P4 = \"P4\",\n /**\n * P6 Tier.\n */\n P6 = \"P6\",\n /**\n * P10 Tier.\n */\n P10 = \"P10\",\n /**\n * P15 Tier.\n */\n P15 = \"P15\",\n /**\n * P20 Tier.\n */\n P20 = \"P20\",\n /**\n * P30 Tier.\n */\n P30 = \"P30\",\n /**\n * P40 Tier.\n */\n P40 = \"P40\",\n /**\n * P50 Tier.\n */\n P50 = \"P50\",\n /**\n * P60 Tier.\n */\n P60 = \"P60\",\n /**\n * P70 Tier.\n */\n P70 = \"P70\",\n /**\n * P80 Tier.\n */\n P80 = \"P80\",\n}\n\nexport function toAccessTier(\n tier: BlockBlobTier | PremiumPageBlobTier | string | undefined,\n): AccessTier | undefined {\n if (tier === undefined) {\n return undefined;\n }\n\n return tier as AccessTier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).\n}\n\nexport function ensureCpkIfSpecified(cpk: CpkInfo | undefined, isHttps: boolean): void {\n if (cpk && !isHttps) {\n throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n }\n\n if (cpk && !cpk.encryptionAlgorithm) {\n cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n }\n}\n\n/**\n * Specifies the Replication Status of a blob. This is used when a storage account has\n * Object Replication Policy(s) applied. See {@link ObjectReplicationPolicy} and {@link ObjectReplicationRule}.\n */\nexport type ObjectReplicationStatus = \"complete\" | \"failed\";\n\n/**\n * Contains the Object Replication Rule ID and {@link ObjectReplicationStatus} of a blob.\n * There can be more than one {@link ObjectReplicationRule} under a {@link ObjectReplicationPolicy}.\n */\nexport interface ObjectReplicationRule {\n /**\n * The Object Replication Rule ID.\n */\n ruleId: string;\n\n /**\n * The Replication Status\n */\n replicationStatus: ObjectReplicationStatus;\n}\n\n/**\n * Contains Object Replication Policy ID and the respective list of {@link ObjectReplicationRule}.\n * This is used when retrieving the Object Replication Properties on the source blob. The policy id for the\n * destination blob is set in ObjectReplicationDestinationPolicyId of the respective method responses\n * (e.g. {@link BlobProperties.ObjectReplicationDestinationPolicyId}.\n */\nexport interface ObjectReplicationPolicy {\n /**\n * The Object Replication Policy ID.\n */\n policyId: string;\n\n /**\n * The Rule ID(s) and respective Replication Status(s) that are under the Policy ID.\n */\n rules: ObjectReplicationRule[];\n}\n\n/**\n * Contains response data for the {@link BlobClient.download} operation.\n */\nexport interface BlobDownloadResponseParsed extends BlobDownloadResponseModel {\n /**\n * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.\n */\n objectReplicationSourceProperties?: ObjectReplicationPolicy[];\n\n /**\n * Object Replication Policy Id of the destination blob.\n */\n objectReplicationDestinationPolicyId?: string;\n}\n\n/**\n * The type of a {@link BlobQueryArrowField}.\n */\nexport type BlobQueryArrowFieldType =\n | \"int64\"\n | \"bool\"\n | \"timestamp[ms]\"\n | \"string\"\n | \"double\"\n | \"decimal\";\n\n/**\n * Describe a field in {@link BlobQueryArrowConfiguration}.\n */\nexport interface BlobQueryArrowField {\n /**\n * The type of the field.\n */\n type: BlobQueryArrowFieldType;\n\n /**\n * The name of the field.\n */\n name?: string;\n\n /**\n * The precision of the field. Required if type is \"decimal\".\n */\n precision?: number;\n\n /**\n * The scale of the field. Required if type is is \"decimal\".\n */\n scale?: number;\n}\n\n/**\n * Describe immutable policy for blob.\n */\nexport interface BlobImmutabilityPolicy {\n /**\n * Specifies the date time when the blobs immutability policy is set to expire.\n */\n expiriesOn?: Date;\n /**\n * Specifies the immutability policy mode to set on the blob.\n */\n policyMode?: BlobImmutabilityPolicyMode;\n}\n\n/**\n * Represents authentication information in Authorization, ProxyAuthorization,\n * WWW-Authenticate, and Proxy-Authenticate header values.\n */\nexport interface HttpAuthorization {\n /**\n * The scheme to use for authorization.\n */\n scheme: string;\n\n /**\n * the credentials containing the authentication information of the user agent for the resource being requested.\n */\n value: string;\n}\n\n/**\n * Defines the known cloud audiences for Storage.\n */\nexport enum StorageBlobAudience {\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Storage.\n */\n StorageOAuthScopes = \"https://storage.azure.com/.default\",\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Disk.\n */\n DiskComputeOAuthScopes = \"https://disk.compute.azure.com/.default\",\n}\n\n/**\n *\n * To get OAuth audience for a storage account for blob service.\n */\nexport function getBlobServiceAccountAudience(storageAccountName: string): string {\n return `https://${storageAccountName}.blob.core.windows.net/.default`;\n}\n\n/**\n * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with.\n */\nexport interface PollerLikeWithCancellation<TState extends PollOperationState<TResult>, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise<void>;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(): Promise<TResult>;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Attempts to cancel the underlying operation.\n */\n cancelOperation(options?: { abortSignal?: AbortSignalLike }): Promise<void>;\n /**\n * Returns the state of the operation.\n * The TState defined in PollerLike can be a subset of the TState defined in\n * the Poller implementation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n\n/**\n * Indicates which checksum algorithm to be used in content validation.\n */\nexport type StorageChecksumAlgorithm = \"Auto\" | \"None\" | \"Customized\" | \"StorageCrc64\";\n\n/**\n * Config used in creating blob client instances.\n */\nexport interface BlobClientConfig {\n /**\n * Options to indication which algorithm to use for content validation in uploading.\n */\n uploadContentChecksumAlgorithm?: StorageChecksumAlgorithm;\n\n /**\n * Options to indication which algorithm to use for content validation in downloading.\n */\n downloadContentChecksumAlgorithm?: StorageChecksumAlgorithm;\n}\n\n/**\n * Options for creating blob client instances\n */\nexport type BlobClientOptions = StoragePipelineOptions & BlobClientConfig;\n"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { CancelOnProgress, PollOperationState } from \"@azure/core-lro\";\nimport type { BlobImmutabilityPolicyMode } from \"./generatedModels.js\";\nimport type {\n LeaseAccessConditions,\n SequenceNumberAccessConditions,\n AppendPositionAccessConditions,\n AccessTier,\n CpkInfo,\n BlobDownloadResponseModel,\n} from \"./generatedModels.js\";\nimport { EncryptionAlgorithmAES25 } from \"./utils/constants.js\";\nimport { StoragePipelineOptions } from \"./Pipeline.js\";\n\n/**\n * Blob tags.\n */\nexport type Tags = Record<string, string>;\n\n/**\n * Request headers used in generating a SAS token\n */\nexport type RequestHeaders = Record<string, string>;\n\n/**\n * Request query parameters used in generating a SAS token\n */\nexport type RequestQueryParameters = Record<string, string>;\n\n/**\n * A map of name-value pairs to associate with the resource.\n */\nexport interface Metadata {\n /**\n * A name-value pair.\n */\n [propertyName: string]: string;\n}\n\n/**\n * standard HTTP conditional headers and tags condition.\n */\nexport interface ModifiedAccessConditions\n extends MatchConditions, ModificationConditions, TagConditions {}\n\n/**\n * standard HTTP conditional headers, tags condition and lease condition\n */\nexport interface BlobRequestConditions extends ModifiedAccessConditions, LeaseAccessConditions {}\n\n/**\n * standard HTTP conditional headers, tags condition and lease condition\n */\nexport interface AccessTierModifiedConditions {\n /**\n * Specify this header value to operate only on a blob if the access-tier has been modified since the specified date/time.\n * */\n accessTierIfModifiedSince?: Date;\n\n /**\n * Specify this header value to operate only on a blob if the access-tier has not been modified since the specified date/time.\n */\n accessTierIfUnmodifiedSince?: Date;\n}\n\n/**\n * Conditions to add to the creation of this page blob.\n */\nexport interface PageBlobRequestConditions\n extends BlobRequestConditions, SequenceNumberAccessConditions {}\n\n/**\n * Conditions to add to the creation of this append blob.\n */\nexport interface AppendBlobRequestConditions\n extends BlobRequestConditions, AppendPositionAccessConditions {}\n\n/**\n * Specifies HTTP options for conditional requests based on modification time.\n */\nexport interface ModificationConditions {\n /**\n * Specify this header value to operate only on a blob if it has been modified since the\n * specified date/time.\n */\n ifModifiedSince?: Date;\n /**\n * Specify this header value to operate only on a blob if it has not been modified since the\n * specified date/time.\n */\n ifUnmodifiedSince?: Date;\n}\n\n/**\n * Specifies HTTP options for conditional requests based on ETag matching.\n */\nexport interface MatchConditions {\n /**\n * Specify an ETag value to operate only on blobs with a matching value.\n */\n ifMatch?: string;\n /**\n * Specify an ETag value to operate only on blobs without a matching value.\n */\n ifNoneMatch?: string;\n}\n\n/**\n * Specifies HTTP options for conditional requests based on blob tags.\n */\nexport interface TagConditions {\n /**\n * Optional SQL statement to apply to the tags of the blob.\n */\n tagConditions?: string;\n}\n\n/**\n * Conditions to meet for the container.\n */\nexport interface ContainerRequestConditions extends LeaseAccessConditions, ModificationConditions {}\n\n/**\n * Represents the access tier on a blob.\n * For detailed information about block blob level tiering see {@link https://learn.microsoft.com/azure/storage/blobs/storage-blob-storage-tiers|Hot, cool and archive storage tiers.}\n */\nexport enum BlockBlobTier {\n /**\n * Optimized for storing data that is accessed frequently.\n */\n Hot = \"Hot\",\n /**\n * Optimized for storing data that is infrequently accessed and stored for at least 30 days.\n */\n Cool = \"Cool\",\n /**\n * Optimized for storing data that is rarely accessed.\n */\n Cold = \"Cold\",\n /**\n * Optimized for storing data that is rarely accessed and stored for at least 180 days\n * with flexible latency requirements (on the order of hours).\n */\n Archive = \"Archive\",\n}\n\n/**\n * Specifies the page blob tier to set the blob to. This is only applicable to page blobs on premium storage accounts.\n * Please see {@link https://learn.microsoft.com/azure/storage/storage-premium-storage#scalability-and-performance-targets|here}\n * for detailed information on the corresponding IOPS and throughput per PageBlobTier.\n */\nexport enum PremiumPageBlobTier {\n /**\n * P4 Tier.\n */\n P4 = \"P4\",\n /**\n * P6 Tier.\n */\n P6 = \"P6\",\n /**\n * P10 Tier.\n */\n P10 = \"P10\",\n /**\n * P15 Tier.\n */\n P15 = \"P15\",\n /**\n * P20 Tier.\n */\n P20 = \"P20\",\n /**\n * P30 Tier.\n */\n P30 = \"P30\",\n /**\n * P40 Tier.\n */\n P40 = \"P40\",\n /**\n * P50 Tier.\n */\n P50 = \"P50\",\n /**\n * P60 Tier.\n */\n P60 = \"P60\",\n /**\n * P70 Tier.\n */\n P70 = \"P70\",\n /**\n * P80 Tier.\n */\n P80 = \"P80\",\n}\n\nexport function toAccessTier(\n tier: BlockBlobTier | PremiumPageBlobTier | string | undefined,\n): AccessTier | undefined {\n if (tier === undefined) {\n return undefined;\n }\n\n return tier as AccessTier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).\n}\n\nexport function ensureCpkIfSpecified(cpk: CpkInfo | undefined, isHttps: boolean): void {\n if (cpk && !isHttps) {\n throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n }\n\n if (cpk && !cpk.encryptionAlgorithm) {\n cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n }\n}\n\n/**\n * Specifies the Replication Status of a blob. This is used when a storage account has\n * Object Replication Policy(s) applied. See {@link ObjectReplicationPolicy} and {@link ObjectReplicationRule}.\n */\nexport type ObjectReplicationStatus = \"complete\" | \"failed\";\n\n/**\n * Contains the Object Replication Rule ID and {@link ObjectReplicationStatus} of a blob.\n * There can be more than one {@link ObjectReplicationRule} under a {@link ObjectReplicationPolicy}.\n */\nexport interface ObjectReplicationRule {\n /**\n * The Object Replication Rule ID.\n */\n ruleId: string;\n\n /**\n * The Replication Status\n */\n replicationStatus: ObjectReplicationStatus;\n}\n\n/**\n * Contains Object Replication Policy ID and the respective list of {@link ObjectReplicationRule}.\n * This is used when retrieving the Object Replication Properties on the source blob. The policy id for the\n * destination blob is set in ObjectReplicationDestinationPolicyId of the respective method responses\n * (e.g. {@link BlobProperties.ObjectReplicationDestinationPolicyId}.\n */\nexport interface ObjectReplicationPolicy {\n /**\n * The Object Replication Policy ID.\n */\n policyId: string;\n\n /**\n * The Rule ID(s) and respective Replication Status(s) that are under the Policy ID.\n */\n rules: ObjectReplicationRule[];\n}\n\n/**\n * Contains response data for the {@link BlobClient.download} operation.\n */\nexport interface BlobDownloadResponseParsed extends BlobDownloadResponseModel {\n /**\n * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.\n */\n objectReplicationSourceProperties?: ObjectReplicationPolicy[];\n\n /**\n * Object Replication Policy Id of the destination blob.\n */\n objectReplicationDestinationPolicyId?: string;\n}\n\n/**\n * The type of a {@link BlobQueryArrowField}.\n */\nexport type BlobQueryArrowFieldType =\n | \"int64\"\n | \"bool\"\n | \"timestamp[ms]\"\n | \"string\"\n | \"double\"\n | \"decimal\";\n\n/**\n * Describe a field in {@link BlobQueryArrowConfiguration}.\n */\nexport interface BlobQueryArrowField {\n /**\n * The type of the field.\n */\n type: BlobQueryArrowFieldType;\n\n /**\n * The name of the field.\n */\n name?: string;\n\n /**\n * The precision of the field. Required if type is \"decimal\".\n */\n precision?: number;\n\n /**\n * The scale of the field. Required if type is is \"decimal\".\n */\n scale?: number;\n}\n\n/**\n * Describe immutable policy for blob.\n */\nexport interface BlobImmutabilityPolicy {\n /**\n * Specifies the date time when the blobs immutability policy is set to expire.\n */\n expiriesOn?: Date;\n /**\n * Specifies the immutability policy mode to set on the blob.\n */\n policyMode?: BlobImmutabilityPolicyMode;\n}\n\n/**\n * Represents authentication information in Authorization, ProxyAuthorization,\n * WWW-Authenticate, and Proxy-Authenticate header values.\n */\nexport interface HttpAuthorization {\n /**\n * The scheme to use for authorization.\n */\n scheme: string;\n\n /**\n * the credentials containing the authentication information of the user agent for the resource being requested.\n */\n value: string;\n}\n\n/**\n * Defines the known cloud audiences for Storage.\n */\nexport enum StorageBlobAudience {\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Storage.\n */\n StorageOAuthScopes = \"https://storage.azure.com/.default\",\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Disk.\n */\n DiskComputeOAuthScopes = \"https://disk.compute.azure.com/.default\",\n}\n\n/**\n *\n * To get OAuth audience for a storage account for blob service.\n */\nexport function getBlobServiceAccountAudience(storageAccountName: string): string {\n return `https://${storageAccountName}.blob.core.windows.net/.default`;\n}\n\n/**\n * Abstract representation of a poller, intended to expose just the minimal API that the user needs to work with.\n */\nexport interface PollerLikeWithCancellation<TState extends PollOperationState<TResult>, TResult> {\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n */\n poll(options?: { abortSignal?: AbortSignalLike }): Promise<void>;\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n pollUntilDone(): Promise<TResult>;\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback: (state: TState) => void): CancelOnProgress;\n /**\n * Returns true if the poller has finished polling.\n */\n isDone(): boolean;\n /**\n * Stops the poller. After this, no manual or automated requests can be sent.\n */\n stopPolling(): void;\n /**\n * Returns true if the poller is stopped.\n */\n isStopped(): boolean;\n /**\n * Attempts to cancel the underlying operation.\n */\n cancelOperation(options?: { abortSignal?: AbortSignalLike }): Promise<void>;\n /**\n * Returns the state of the operation.\n * The TState defined in PollerLike can be a subset of the TState defined in\n * the Poller implementation.\n */\n getOperationState(): TState;\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult(): TResult | undefined;\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString(): string;\n}\n\n/**\n * Indicates which checksum algorithm to be used in content validation.\n */\nexport type StorageChecksumAlgorithm = \"Auto\" | \"None\" | \"Customized\" | \"StorageCrc64\";\n\n/**\n * Config used in creating blob client instances.\n */\nexport interface BlobClientConfig {\n /**\n * Options to indication which algorithm to use for content validation in uploading.\n */\n uploadContentChecksumAlgorithm?: StorageChecksumAlgorithm;\n\n /**\n * Options to indication which algorithm to use for content validation in downloading.\n */\n downloadContentChecksumAlgorithm?: StorageChecksumAlgorithm;\n}\n\n/**\n * Options for creating BlobClient instances\n */\nexport type BlobClientOptions = StoragePipelineOptions & BlobClientConfig;\n/**\n * Options for creating BlockBlobClient instances\n */\nexport type BlockBlobClientOptions = StoragePipelineOptions & BlobClientConfig;\n/**\n * Options for creating PageBlobClient instances\n */\nexport type PageBlobClientOptions = StoragePipelineOptions & BlobClientConfig;\n/**\n * Options for creating AppendBlobClient instances\n */\nexport type AppendBlobClientOptions = StoragePipelineOptions & BlobClientConfig;\n/**\n * Options for creating ContainerClient instances\n */\nexport type ContainerClientOptions = StoragePipelineOptions & BlobClientConfig;\n/**\n * Options for creating BlobServiceClient instances\n */\nexport type BlobServiceClientOptions = StoragePipelineOptions & BlobClientConfig;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcA,uBAAyC;AAmHlC,IAAK,gBAAL,kBAAKA,mBAAL;AAIL,EAAAA,eAAA,SAAM;AAIN,EAAAA,eAAA,UAAO;AAIP,EAAAA,eAAA,UAAO;AAKP,EAAAA,eAAA,aAAU;AAjBA,SAAAA;AAAA,GAAA;AAyBL,IAAK,sBAAL,kBAAKC,yBAAL;AAIL,EAAAA,qBAAA,QAAK;AAIL,EAAAA,qBAAA,QAAK;AAIL,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AAIN,EAAAA,qBAAA,SAAM;AA5CI,SAAAA;AAAA,GAAA;AA+CL,SAAS,aACd,MACwB;AACxB,MAAI,SAAS,QAAW;AACtB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,qBAAqB,KAA0B,SAAwB;AACrF,MAAI,OAAO,CAAC,SAAS;AACnB,UAAM,IAAI,WAAW,2DAA2D;AAAA,EAClF;AAEA,MAAI,OAAO,CAAC,IAAI,qBAAqB;AACnC,QAAI,sBAAsB;AAAA,EAC5B;AACF;AA8HO,IAAK,sBAAL,kBAAKC,yBAAL;AAIL,EAAAA,qBAAA,wBAAqB;AAIrB,EAAAA,qBAAA,4BAAyB;AARf,SAAAA;AAAA,GAAA;AAeL,SAAS,8BAA8B,oBAAoC;AAChF,SAAO,WAAW,kBAAkB;AACtC;",
6
6
  "names": ["BlockBlobTier", "PremiumPageBlobTier", "StorageBlobAudience"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/sas/BlobSASSignatureValues.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BlobSASPermissions } from \"./BlobSASPermissions.js\";\nimport { ContainerSASPermissions } from \"./ContainerSASPermissions.js\";\nimport type { UserDelegationKey } from \"@azure/storage-common\";\nimport { StorageSharedKeyCredential } from \"@azure/storage-common\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { SERVICE_VERSION } from \"../utils/constants.js\";\nimport { truncatedISO8061Date } from \"../utils/utils.common.js\";\nimport { UserDelegationKeyCredential } from \"@azure/storage-common\";\nimport { RequestHeaders, RequestQueryParameters } from \"../models.js\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * BlobSASSignatureValues is used to help generating Blob service SAS tokens for containers or blobs.\n */\nexport interface BlobSASSignatureValues {\n /**\n * The version of the service this SAS will target. If not specified, it will default to the version targeted by the\n * library.\n */\n version?: string;\n\n /**\n * Optional. SAS protocols, HTTPS only or HTTPSandHTTP\n */\n protocol?: SASProtocol;\n\n /**\n * Optional. When the SAS will take effect.\n */\n startsOn?: Date;\n\n /**\n * Optional only when identifier is provided. The time after which the SAS will no longer work.\n */\n expiresOn?: Date;\n\n /**\n * Optional only when identifier is provided.\n * Please refer to either {@link ContainerSASPermissions} or {@link BlobSASPermissions} depending on the resource\n * being accessed for help constructing the permissions string.\n */\n permissions?: BlobSASPermissions | ContainerSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the container the SAS user may access.\n */\n containerName: string;\n\n /**\n * Optional. The blob name of the SAS user may access. Required if snapshotTime or versionId is provided.\n */\n blobName?: string;\n\n /**\n * Optional. Snapshot timestamp string the SAS user may access. Only supported from API version 2018-11-09.\n */\n snapshotTime?: string;\n\n /**\n * Optional. VersionId of the blob version the SAS user may access. Only supported from API version 2019-10-10.\n */\n versionId?: string;\n\n /**\n * Optional. The name of the access policy on the container this SAS references if any.\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy\n */\n identifier?: string;\n\n /**\n * Optional. Beginning in version 2025-07-05, this value specifies the Entra ID of the user would is authorized to\n * use the resulting SAS URL. The resulting SAS URL must be used in conjunction with an Entra ID token that has been\n * issued to the user specified in this value.\n */\n delegatedUserObjectId?: string;\n\n /**\n * Optional. Encryption scope to use when sending requests authorized with this SAS URI.\n */\n encryptionScope?: string;\n\n /**\n * Optional. The cache-control header for the SAS.\n */\n cacheControl?: string;\n\n /**\n * Optional. The content-disposition header for the SAS.\n */\n contentDisposition?: string;\n\n /**\n * Optional. The content-encoding header for the SAS.\n */\n contentEncoding?: string;\n\n /**\n * Optional. The content-language header for the SAS.\n */\n contentLanguage?: string;\n\n /**\n * Optional. The content-type header for the SAS.\n */\n contentType?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, specifies the Authorized AAD Object ID in GUID format. The AAD Object ID of a user\n * authorized by the owner of the user delegation key to perform the action granted by the SAS. The Azure Storage service will\n * ensure that the owner of the user delegation key has the required permissions before granting access but no additional permission\n * check for the user specified in this value will be performed. This is only used for User Delegation SAS.\n */\n preauthorizedAgentObjectId?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, this is a GUID value that will be logged in the storage diagnostic logs and can be used to\n * correlate SAS generation with storage resource access. This is only used for User Delegation SAS.\n */\n correlationId?: string;\n /**\n * Request headers used in generating a SAS token\n */\n requestHeaders?: RequestHeaders;\n /**\n * Request query parameters used in generating a SAS token\n */\n requestQueryParameters?: RequestQueryParameters;\n\n /**\n * Beginning in version 2020-02-10, this value defines whether or\n * not the {@link blobName} is a virtual directory.\n */\n isDirectory?: boolean;\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * Fill in the required details before running the following snippets.\n *\n * Example usage:\n *\n * ```ts snippet:GenerateBlobSASQueryParameters\n * import {\n * StorageSharedKeyCredential,\n * generateBlobSASQueryParameters,\n * ContainerSASPermissions,\n * SASProtocol,\n * } from \"@azure/storage-blob\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n * const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);\n * const containerName = \"<container name>\";\n *\n * // Generate service level SAS for a container\n * const containerSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * permissions: ContainerSASPermissions.parse(\"racwdl\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400 * 1000), // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\", // Optional\n * },\n * sharedKeyCredential,\n * ).toString();\n * ```\n *\n * Example using an identifier:\n *\n * ```ts snippet:GenerateBlobSASQueryParametersWithIdentifier\n * import {\n * StorageSharedKeyCredential,\n * BlobServiceClient,\n * ContainerSASPermissions,\n * generateBlobSASQueryParameters,\n * } from \"@azure/storage-blob\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n * const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);\n * const blobServiceClient = new BlobServiceClient(\n * `https://${account}.blob.core.windows.net`,\n * sharedKeyCredential,\n * );\n *\n * const containerName = \"<container name>\";\n * const containerClient = blobServiceClient.getContainerClient(containerName);\n *\n * // Generate service level SAS for a container with identifier\n * // startsOn & permissions are optional when identifier is provided\n * const identifier = \"unique-id\";\n * await containerClient.setAccessPolicy(undefined, [\n * {\n * accessPolicy: {\n * expiresOn: new Date(new Date().valueOf() + 86400 * 1000), // Date type\n * permissions: ContainerSASPermissions.parse(\"racwdl\").toString(),\n * startsOn: new Date(), // Date type\n * },\n * id: identifier,\n * },\n * ]);\n *\n * const containerSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * identifier, // Required\n * },\n * sharedKeyCredential,\n * ).toString();\n * ```\n *\n * Example using a blob name:\n *\n * ```ts snippet:GenerateBlobSASQueryParametersWithBlobName\n * import {\n * StorageSharedKeyCredential,\n * generateBlobSASQueryParameters,\n * BlobSASPermissions,\n * SASProtocol,\n * } from \"@azure/storage-blob\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n * const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);\n *\n * const containerName = \"<container name>\";\n * const blobName = \"<blob name>\";\n *\n * // Generate service level SAS for a blob\n * const blobSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * blobName, // Required\n * permissions: BlobSASPermissions.parse(\"racwd\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400 * 1000), // Required. Date type\n * cacheControl: \"cache-control-override\", // Optional\n * contentDisposition: \"content-disposition-override\", // Optional\n * contentEncoding: \"content-encoding-override\", // Optional\n * contentLanguage: \"content-language-override\", // Optional\n * contentType: \"content-type-override\", // Optional\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\", // Optional\n * },\n * sharedKeyCredential,\n * ).toString();\n * ```\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateBlobSASQueryParameters(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters;\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n * WARNING: identifier will be ignored when generating user delegation SAS, permissions and expiresOn are required.\n *\n * Example usage:\n *\n * ```ts snippet:GenerateBlobSASQueryParametersWithUserDelegationKey\n * import {\n * BlobServiceClient,\n * generateBlobSASQueryParameters,\n * ContainerSASPermissions,\n * SASProtocol,\n * } from \"@azure/storage-blob\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * const account = \"<account>\";\n * const blobServiceClient = new BlobServiceClient(\n * `https://${account}.blob.core.windows.net`,\n * new DefaultAzureCredential(),\n * );\n *\n * const containerName = \"<container name>\";\n * const accountName = \"<account name>\";\n * const startsOn = new Date();\n * const expiresOn = new Date(new Date().valueOf() + 86400 * 1000);\n *\n * // Generate user delegation SAS for a container\n * const userDelegationKey = await blobServiceClient.getUserDelegationKey(startsOn, expiresOn);\n * const containerSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * permissions: ContainerSASPermissions.parse(\"racwdl\"), // Required\n * startsOn, // Optional. Date type\n * expiresOn, // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2018-11-09\", // Must greater than or equal to 2018-11-09 to generate user delegation SAS\n * },\n * userDelegationKey, // UserDelegationKey\n * accountName,\n * ).toString();\n * ```\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKey - Return value of `blobServiceClient.getUserDelegationKey()`\n * @param accountName -\n */\nexport function generateBlobSASQueryParameters(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKey: UserDelegationKey,\n accountName: string,\n): SASQueryParameters;\n\nexport function generateBlobSASQueryParameters(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): SASQueryParameters {\n return generateBlobSASQueryParametersInternal(\n blobSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey,\n accountName,\n ).sasQueryParameters;\n}\n\nexport function generateBlobSASQueryParametersInternal(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n\n const sharedKeyCredential =\n sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n ? sharedKeyCredentialOrUserDelegationKey\n : undefined;\n let userDelegationKeyCredential: UserDelegationKeyCredential | undefined;\n\n if (sharedKeyCredential === undefined && accountName !== undefined) {\n userDelegationKeyCredential = new UserDelegationKeyCredential(\n accountName,\n sharedKeyCredentialOrUserDelegationKey as UserDelegationKey,\n );\n }\n\n if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\n }\n\n // Version 2020-12-06 adds support for encryptionscope in SAS.\n if (version >= \"2020-12-06\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential);\n } else {\n if (version >= \"2026-04-06\") {\n return generateBlobSASQueryParametersUDK20260406(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else if (version >= \"2025-07-05\") {\n return generateBlobSASQueryParametersUDK20250705(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20201206(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n // Version 2019-12-12 adds support for the blob tags permission.\n // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n // https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string\n if (version >= \"2018-11-09\") {\n if (sharedKeyCredential !== undefined) {\n // Version 2020-02-10 delegation SAS signature construction supports blob name as a virtual directory.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParameters20200210(blobSASSignatureValues, sharedKeyCredential);\n } else {\n return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);\n }\n } else {\n // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParametersUDK20200210(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20181109(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n if (version >= \"2015-04-05\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);\n } else {\n throw new RangeError(\n \"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\",\n );\n }\n }\n\n throw new RangeError(\"'version' must be >= '2015-04-05'.\");\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20200210(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n undefined,\n undefined,\n undefined,\n blobSASSignatureValues.encryptionScope,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n undefined,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.encryptionScope,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20250705(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId, // SignedKeyDelegatedUserTenantId, will be added in a future release.\n blobSASSignatureValues.delegatedUserObjectId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.delegatedUserObjectId,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20260406(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId, // SignedKeyDelegatedUserTenantId, will be added in a future release.\n blobSASSignatureValues.delegatedUserObjectId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n formatRequestHeadersForSasSigning(blobSASSignatureValues.requestHeaders),\n formatRequestQueryParametersForSasSigning(blobSASSignatureValues.requestQueryParameters),\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.delegatedUserObjectId,\n getKeysOfRequestHeaders(blobSASSignatureValues.requestHeaders),\n getKeysOfRequestHeaders(blobSASSignatureValues.requestQueryParameters),\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction formatRequestHeadersForSasSigning(\n requestHeaders: RequestHeaders | undefined,\n): string | undefined {\n if (requestHeaders === undefined) {\n return undefined;\n }\n\n let canonicalValue = \"\";\n Object.keys(requestHeaders).forEach(function (key) {\n // key: the name of the object key\n // index: the ordinal position of the key within the object\n canonicalValue = canonicalValue + key + \":\" + requestHeaders[key] + \"\\n\";\n });\n return canonicalValue;\n}\n\nfunction formatRequestQueryParametersForSasSigning(\n queryParameters: RequestQueryParameters | undefined,\n): string | undefined {\n if (queryParameters === undefined) {\n return undefined;\n }\n\n let canonicalValue = \"\";\n Object.keys(queryParameters).forEach(function (key) {\n // key: the name of the object key\n // index: the ordinal position of the key within the object\n canonicalValue = canonicalValue + \"\\n\" + key + \":\" + queryParameters[key];\n });\n return canonicalValue;\n}\n\nfunction getKeysOfRequestHeaders(requestHeaders: RequestHeaders | undefined): string | undefined {\n if (requestHeaders === undefined) {\n return undefined;\n }\n\n let requestKeys = \"\";\n let index = 0;\n Object.keys(requestHeaders).forEach(function (key) {\n // key: the name of the object key\n // index: the ordinal position of the key within the object\n if (index !== 0) {\n requestKeys = requestKeys + \",\";\n }\n\n requestKeys = requestKeys + key;\n ++index;\n });\n return requestKeys;\n}\n\nfunction getCanonicalName(accountName: string, containerName: string, blobName?: string): string {\n // Container: \"/blob/account/containerName\"\n // Blob: \"/blob/account/containerName/blobName\"\n const elements: string[] = [`/blob/${accountName}/${containerName}`];\n if (blobName) {\n elements.push(`/${blobName}`);\n }\n return elements.join(\"\");\n}\n\nfunction SASSignatureValuesSanityCheckAndAutofill(\n blobSASSignatureValues: BlobSASSignatureValues,\n): BlobSASSignatureValues {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n if (blobSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n throw RangeError(\"'version' must be >= '2018-11-09' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {\n throw RangeError(\"Must provide 'blobName' when providing 'snapshotTime'.\");\n }\n\n if (blobSASSignatureValues.versionId && version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {\n throw RangeError(\"Must provide 'blobName' when providing 'versionId'.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.setImmutabilityPolicy &&\n version < \"2020-08-04\"\n ) {\n throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.deleteVersion &&\n version < \"2019-10-10\"\n ) {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'x' permission.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.permanentDelete &&\n version < \"2019-10-10\"\n ) {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'y' permission.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.tag &&\n version < \"2019-12-12\"\n ) {\n throw RangeError(\"'version' must be >= '2019-12-12' when providing 't' permission.\");\n }\n\n if (\n version < \"2020-02-10\" &&\n blobSASSignatureValues.permissions &&\n (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)\n ) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.\");\n }\n\n if (\n version < \"2021-04-10\" &&\n blobSASSignatureValues.permissions &&\n (blobSASSignatureValues.permissions as ContainerSASPermissions).filterByTags\n ) {\n throw RangeError(\"'version' must be >= '2021-04-10' when providing the 'f' permission.\");\n }\n\n if (\n version < \"2020-02-10\" &&\n (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)\n ) {\n throw RangeError(\n \"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.\",\n );\n }\n\n if (blobSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n }\n\n blobSASSignatureValues.version = version;\n return blobSASSignatureValues;\n}\n\nfunction trimBlobName(blobName: string): string {\n let internalName = blobName;\n while (internalName.startsWith(\"/\")) {\n internalName = internalName.substring(1);\n }\n\n while (internalName.endsWith(\"/\")) {\n internalName = internalName.substring(0, internalName.length - 1);\n }\n return internalName;\n}\n"],
4
+ "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { BlobSASPermissions } from \"./BlobSASPermissions.js\";\nimport { ContainerSASPermissions } from \"./ContainerSASPermissions.js\";\nimport type { UserDelegationKey } from \"@azure/storage-common\";\nimport { StorageSharedKeyCredential } from \"@azure/storage-common\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { SERVICE_VERSION } from \"../utils/constants.js\";\nimport { truncatedISO8061Date } from \"../utils/utils.common.js\";\nimport { UserDelegationKeyCredential } from \"@azure/storage-common\";\nimport { RequestHeaders, RequestQueryParameters } from \"../models.js\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * BlobSASSignatureValues is used to help generating Blob service SAS tokens for containers or blobs.\n */\nexport interface BlobSASSignatureValues {\n /**\n * The version of the service this SAS will target. If not specified, it will default to the version targeted by the\n * library.\n */\n version?: string;\n\n /**\n * Optional. SAS protocols, HTTPS only or HTTPSandHTTP\n */\n protocol?: SASProtocol;\n\n /**\n * Optional. When the SAS will take effect.\n */\n startsOn?: Date;\n\n /**\n * Optional only when identifier is provided. The time after which the SAS will no longer work.\n */\n expiresOn?: Date;\n\n /**\n * Optional only when identifier is provided.\n * Please refer to either {@link ContainerSASPermissions} or {@link BlobSASPermissions} depending on the resource\n * being accessed for help constructing the permissions string.\n */\n permissions?: BlobSASPermissions | ContainerSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the container the SAS user may access.\n */\n containerName: string;\n\n /**\n * Optional. The blob name of the SAS user may access. Required if snapshotTime or versionId is provided.\n */\n blobName?: string;\n\n /**\n * Optional. Snapshot timestamp string the SAS user may access. Only supported from API version 2018-11-09.\n */\n snapshotTime?: string;\n\n /**\n * Optional. VersionId of the blob version the SAS user may access. Only supported from API version 2019-10-10.\n */\n versionId?: string;\n\n /**\n * Optional. The name of the access policy on the container this SAS references if any.\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy\n */\n identifier?: string;\n\n /**\n * Optional. Beginning in version 2025-07-05, this value specifies the Entra ID of the user would is authorized to\n * use the resulting SAS URL. The resulting SAS URL must be used in conjunction with an Entra ID token that has been\n * issued to the user specified in this value.\n */\n delegatedUserObjectId?: string;\n\n /**\n * Optional. Encryption scope to use when sending requests authorized with this SAS URI.\n */\n encryptionScope?: string;\n\n /**\n * Optional. The cache-control header for the SAS.\n */\n cacheControl?: string;\n\n /**\n * Optional. The content-disposition header for the SAS.\n */\n contentDisposition?: string;\n\n /**\n * Optional. The content-encoding header for the SAS.\n */\n contentEncoding?: string;\n\n /**\n * Optional. The content-language header for the SAS.\n */\n contentLanguage?: string;\n\n /**\n * Optional. The content-type header for the SAS.\n */\n contentType?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, specifies the Authorized AAD Object ID in GUID format. The AAD Object ID of a user\n * authorized by the owner of the user delegation key to perform the action granted by the SAS. The Azure Storage service will\n * ensure that the owner of the user delegation key has the required permissions before granting access but no additional permission\n * check for the user specified in this value will be performed. This is only used for User Delegation SAS.\n */\n preauthorizedAgentObjectId?: string;\n\n /**\n * Optional. Beginning in version 2020-02-10, this is a GUID value that will be logged in the storage diagnostic logs and can be used to\n * correlate SAS generation with storage resource access. This is only used for User Delegation SAS.\n */\n correlationId?: string;\n /**\n * Request headers used in generating a SAS token\n */\n requestHeaders?: RequestHeaders;\n /**\n * Request query parameters used in generating a SAS token\n */\n requestQueryParameters?: RequestQueryParameters;\n\n /**\n * Beginning in version 2020-02-10, this value defines whether or\n * not the {@link blobName} is a virtual directory.\n */\n isDirectory?: boolean;\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * Fill in the required details before running the following snippets.\n *\n * Example usage:\n *\n * ```ts snippet:GenerateBlobSASQueryParameters\n * import {\n * StorageSharedKeyCredential,\n * generateBlobSASQueryParameters,\n * ContainerSASPermissions,\n * SASProtocol,\n * } from \"@azure/storage-blob\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n * const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);\n * const containerName = \"<container name>\";\n *\n * // Generate service level SAS for a container\n * const containerSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * permissions: ContainerSASPermissions.parse(\"racwdl\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400 * 1000), // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\", // Optional\n * },\n * sharedKeyCredential,\n * ).toString();\n * ```\n *\n * Example using an identifier:\n *\n * ```ts snippet:GenerateBlobSASQueryParametersWithIdentifier\n * import {\n * StorageSharedKeyCredential,\n * BlobServiceClient,\n * ContainerSASPermissions,\n * generateBlobSASQueryParameters,\n * } from \"@azure/storage-blob\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n * const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);\n * const blobServiceClient = new BlobServiceClient(\n * `https://${account}.blob.core.windows.net`,\n * sharedKeyCredential,\n * );\n *\n * const containerName = \"<container name>\";\n * const containerClient = blobServiceClient.getContainerClient(containerName);\n *\n * // Generate service level SAS for a container with identifier\n * // startsOn & permissions are optional when identifier is provided\n * const identifier = \"unique-id\";\n * await containerClient.setAccessPolicy(undefined, [\n * {\n * accessPolicy: {\n * expiresOn: new Date(new Date().valueOf() + 86400 * 1000), // Date type\n * permissions: ContainerSASPermissions.parse(\"racwdl\").toString(),\n * startsOn: new Date(), // Date type\n * },\n * id: identifier,\n * },\n * ]);\n *\n * const containerSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * identifier, // Required\n * },\n * sharedKeyCredential,\n * ).toString();\n * ```\n *\n * Example using a blob name:\n *\n * ```ts snippet:GenerateBlobSASQueryParametersWithBlobName\n * import {\n * StorageSharedKeyCredential,\n * generateBlobSASQueryParameters,\n * BlobSASPermissions,\n * SASProtocol,\n * } from \"@azure/storage-blob\";\n *\n * const account = \"<account>\";\n * const accountKey = \"<accountkey>\";\n * const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);\n *\n * const containerName = \"<container name>\";\n * const blobName = \"<blob name>\";\n *\n * // Generate service level SAS for a blob\n * const blobSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * blobName, // Required\n * permissions: BlobSASPermissions.parse(\"racwd\"), // Required\n * startsOn: new Date(), // Optional\n * expiresOn: new Date(new Date().valueOf() + 86400 * 1000), // Required. Date type\n * cacheControl: \"cache-control-override\", // Optional\n * contentDisposition: \"content-disposition-override\", // Optional\n * contentEncoding: \"content-encoding-override\", // Optional\n * contentLanguage: \"content-language-override\", // Optional\n * contentType: \"content-type-override\", // Optional\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2016-05-31\", // Optional\n * },\n * sharedKeyCredential,\n * ).toString();\n * ```\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateBlobSASQueryParameters(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters;\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Creates an instance of SASQueryParameters.\n * WARNING: identifier will be ignored when generating user delegation SAS, permissions and expiresOn are required.\n *\n * Example usage:\n *\n * ```ts snippet:GenerateBlobSASQueryParametersWithUserDelegationKey\n * import {\n * BlobServiceClient,\n * generateBlobSASQueryParameters,\n * ContainerSASPermissions,\n * SASProtocol,\n * } from \"@azure/storage-blob\";\n * import { DefaultAzureCredential } from \"@azure/identity\";\n *\n * const account = \"<account>\";\n * const blobServiceClient = new BlobServiceClient(\n * `https://${account}.blob.core.windows.net`,\n * new DefaultAzureCredential(),\n * );\n *\n * const containerName = \"<container name>\";\n * const accountName = \"<account name>\";\n * const startsOn = new Date();\n * const expiresOn = new Date(new Date().valueOf() + 86400 * 1000);\n *\n * // Generate user delegation SAS for a container\n * const userDelegationKey = await blobServiceClient.getUserDelegationKey(startsOn, expiresOn);\n * const containerSAS = generateBlobSASQueryParameters(\n * {\n * containerName, // Required\n * permissions: ContainerSASPermissions.parse(\"racwdl\"), // Required\n * startsOn, // Optional. Date type\n * expiresOn, // Required. Date type\n * ipRange: { start: \"0.0.0.0\", end: \"255.255.255.255\" }, // Optional\n * protocol: SASProtocol.HttpsAndHttp, // Optional\n * version: \"2018-11-09\", // Must greater than or equal to 2018-11-09 to generate user delegation SAS\n * },\n * userDelegationKey, // UserDelegationKey\n * accountName,\n * ).toString();\n * ```\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKey - Return value of `blobServiceClient.getUserDelegationKey()`\n * @param accountName -\n */\nexport function generateBlobSASQueryParameters(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKey: UserDelegationKey,\n accountName: string,\n): SASQueryParameters;\n\nexport function generateBlobSASQueryParameters(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): SASQueryParameters {\n return generateBlobSASQueryParametersInternal(\n blobSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey,\n accountName,\n ).sasQueryParameters;\n}\n\nexport function generateBlobSASQueryParametersInternal(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n\n const sharedKeyCredential =\n sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n ? sharedKeyCredentialOrUserDelegationKey\n : undefined;\n let userDelegationKeyCredential: UserDelegationKeyCredential | undefined;\n\n if (sharedKeyCredential === undefined && accountName !== undefined) {\n userDelegationKeyCredential = new UserDelegationKeyCredential(\n accountName,\n sharedKeyCredentialOrUserDelegationKey as UserDelegationKey,\n );\n }\n\n if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\n }\n\n // Version 2020-12-06 adds support for encryptionscope in SAS.\n if (version >= \"2020-12-06\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential);\n } else {\n if (version >= \"2026-04-06\") {\n return generateBlobSASQueryParametersUDK20260406(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else if (version >= \"2025-07-05\") {\n return generateBlobSASQueryParametersUDK20250705(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20201206(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n // Version 2019-12-12 adds support for the blob tags permission.\n // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n // https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string\n if (version >= \"2018-11-09\") {\n if (sharedKeyCredential !== undefined) {\n // Version 2020-02-10 delegation SAS signature construction supports blob name as a virtual directory.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParameters20200210(blobSASSignatureValues, sharedKeyCredential);\n } else {\n return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);\n }\n } else {\n // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParametersUDK20200210(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n } else {\n return generateBlobSASQueryParametersUDK20181109(\n blobSASSignatureValues,\n userDelegationKeyCredential!,\n );\n }\n }\n }\n\n if (version >= \"2015-04-05\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);\n } else {\n throw new RangeError(\n \"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\",\n );\n }\n }\n\n throw new RangeError(\"'version' must be >= '2015-04-05'.\");\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20200210(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(\n blobSASSignatureValues: BlobSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n if (\n !blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n undefined,\n undefined,\n undefined,\n blobSASSignatureValues.encryptionScope,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n undefined,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.encryptionScope,\n undefined,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20250705(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId, // SignedKeyDelegatedUserTenantId, will be added in a future release.\n blobSASSignatureValues.delegatedUserObjectId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.delegatedUserObjectId,\n undefined,\n undefined,\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20260406(\n blobSASSignatureValues: BlobSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\",\n );\n }\n\n let resource: string = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n let directoryDepth: number | undefined = undefined;\n if (blobSASSignatureValues.blobName) {\n if (blobSASSignatureValues.isDirectory === true) {\n resource = \"d\";\n directoryDepth = trimBlobName(blobSASSignatureValues.blobName).split(\"/\").length;\n } else {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n } else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n }\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions: string | undefined;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ContainerSASPermissions.parse(\n blobSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n userDelegationKeyCredential.accountName,\n blobSASSignatureValues.containerName,\n blobSASSignatureValues.blobName,\n ),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined, // agentObjectId\n blobSASSignatureValues.correlationId,\n userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId, // SignedKeyDelegatedUserTenantId, will be added in a future release.\n blobSASSignatureValues.delegatedUserObjectId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n formatRequestHeadersForSasSigning(blobSASSignatureValues.requestHeaders),\n formatRequestQueryParametersForSasSigning(blobSASSignatureValues.requestQueryParameters),\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return {\n sasQueryParameters: new SASQueryParameters(\n blobSASSignatureValues.version!,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n blobSASSignatureValues.protocol,\n blobSASSignatureValues.startsOn,\n blobSASSignatureValues.expiresOn,\n blobSASSignatureValues.ipRange,\n blobSASSignatureValues.identifier,\n resource,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.delegatedUserObjectId,\n getKeysOfRequestHeaders(blobSASSignatureValues.requestHeaders),\n getKeysOfRequestHeaders(blobSASSignatureValues.requestQueryParameters),\n directoryDepth,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction formatRequestHeadersForSasSigning(\n requestHeaders: RequestHeaders | undefined,\n): string | undefined {\n if (requestHeaders === undefined) {\n return undefined;\n }\n\n let canonicalValue = \"\";\n Object.keys(requestHeaders).forEach(function (key) {\n // key: the name of the object key\n // index: the ordinal position of the key within the object\n canonicalValue = canonicalValue + key + \":\" + requestHeaders[key] + \"\\n\";\n });\n return canonicalValue;\n}\n\nfunction formatRequestQueryParametersForSasSigning(\n queryParameters: RequestQueryParameters | undefined,\n): string | undefined {\n if (queryParameters === undefined) {\n return undefined;\n }\n\n let canonicalValue = \"\";\n Object.keys(queryParameters).forEach(function (key) {\n // key: the name of the object key\n // index: the ordinal position of the key within the object\n canonicalValue = canonicalValue + \"\\n\" + key + \":\" + queryParameters[key];\n });\n return canonicalValue;\n}\n\nfunction getKeysOfRequestHeaders(requestHeaders: RequestHeaders | undefined): string | undefined {\n if (requestHeaders === undefined) {\n return undefined;\n }\n\n let requestKeys = \"\";\n let index = 0;\n Object.keys(requestHeaders).forEach(function (key) {\n // key: the name of the object key\n // index: the ordinal position of the key within the object\n if (index !== 0) {\n requestKeys = requestKeys + \",\";\n }\n\n requestKeys = requestKeys + key;\n ++index;\n });\n return requestKeys;\n}\n\nfunction getCanonicalName(accountName: string, containerName: string, blobName?: string): string {\n // Container: \"/blob/account/containerName\"\n // Blob: \"/blob/account/containerName/blobName\"\n const elements: string[] = [`/blob/${accountName}/${containerName}`];\n if (blobName) {\n elements.push(`/${blobName}`);\n }\n return elements.join(\"\");\n}\n\nfunction SASSignatureValuesSanityCheckAndAutofill(\n blobSASSignatureValues: BlobSASSignatureValues,\n): BlobSASSignatureValues {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n if (blobSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n throw RangeError(\"'version' must be >= '2018-11-09' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {\n throw RangeError(\"Must provide 'blobName' when providing 'snapshotTime'.\");\n }\n\n if (blobSASSignatureValues.versionId && version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {\n throw RangeError(\"Must provide 'blobName' when providing 'versionId'.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.setImmutabilityPolicy &&\n version < \"2020-08-04\"\n ) {\n throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.deleteVersion &&\n version < \"2019-10-10\"\n ) {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'x' permission.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.permanentDelete &&\n version < \"2019-10-10\"\n ) {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'y' permission.\");\n }\n\n if (\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.tag &&\n version < \"2019-12-12\"\n ) {\n throw RangeError(\"'version' must be >= '2019-12-12' when providing 't' permission.\");\n }\n\n if (\n version < \"2020-02-10\" &&\n blobSASSignatureValues.permissions &&\n (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)\n ) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.\");\n }\n\n if (\n version < \"2021-04-10\" &&\n blobSASSignatureValues.permissions &&\n (blobSASSignatureValues.permissions as ContainerSASPermissions).filterByTags\n ) {\n throw RangeError(\"'version' must be >= '2021-04-10' when providing the 'f' permission.\");\n }\n\n if (\n version < \"2020-02-10\" &&\n (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)\n ) {\n throw RangeError(\n \"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.\",\n );\n }\n\n if (blobSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n }\n\n blobSASSignatureValues.version = version;\n return blobSASSignatureValues;\n}\n\nfunction trimBlobName(blobName: string): string {\n let internalName = blobName;\n while (internalName.startsWith(\"/\")) {\n internalName = internalName.substring(1);\n }\n\n while (internalName.endsWith(\"/\")) {\n internalName = internalName.substring(0, internalName.length - 1);\n }\n return internalName;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,gCAAmC;AACnC,qCAAwC;AAExC,4BAA2C;AAE3C,wBAAgC;AAEhC,gCAAmC;AACnC,uBAAgC;AAChC,0BAAqC;AACrC,IAAAA,yBAA4C;AAoUrC,SAAS,+BACd,wBACA,wCACA,aACoB;AACpB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE;AACJ;AAEO,SAAS,uCACd,wBACA,wCACA,aACkE;AAClE,QAAM,UAAU,uBAAuB,UAAU,uBAAuB,UAAU;AAElF,QAAM,sBACJ,kDAAkD,mDAC9C,yCACA;AACN,MAAI;AAEJ,MAAI,wBAAwB,UAAa,gBAAgB,QAAW;AAClE,kCAA8B,IAAI;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,wBAAwB,UAAa,gCAAgC,QAAW;AAClF,UAAM,UAAU,gEAAgE;AAAA,EAClF;AAGA,MAAI,WAAW,cAAc;AAC3B,QAAI,wBAAwB,QAAW;AACrC,aAAO,uCAAuC,wBAAwB,mBAAmB;AAAA,IAC3F,OAAO;AACL,UAAI,WAAW,cAAc;AAC3B,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF,WAAW,WAAW,cAAc;AAClC,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAKA,MAAI,WAAW,cAAc;AAC3B,QAAI,wBAAwB,QAAW;AAErC,UAAI,WAAW,cAAc;AAC3B,eAAO,uCAAuC,wBAAwB,mBAAmB;AAAA,MAC3F,OAAO;AACL,eAAO,uCAAuC,wBAAwB,mBAAmB;AAAA,MAC3F;AAAA,IACF,OAAO;AAEL,UAAI,WAAW,cAAc;AAC3B,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAW,cAAc;AAC3B,QAAI,wBAAwB,QAAW;AACrC,aAAO,uCAAuC,wBAAwB,mBAAmB;AAAA,IAC3F,OAAO;AACL,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,IAAI,WAAW,oCAAoC;AAC3D;AAkBA,SAAS,uCACP,wBACA,qBACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAExF,MACE,CAAC,uBAAuB,cACxB,EAAE,uBAAuB,eAAe,uBAAuB,YAC/D;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,uBAAuB,UAAU;AACnC,eAAW;AAAA,EACb;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB,uBAAuB,eAAe,uBAAuB,eAAe;AAAA,IAC5E,uBAAuB,qBAAqB,uBAAuB,qBAAqB;AAAA,IACxF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,cAAc,uBAAuB,cAAc;AAAA,EAC5E,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,oBAAoB,kBAAkB,YAAY;AAEpE,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAkBA,SAAS,uCACP,wBACA,qBACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAExF,MACE,CAAC,uBAAuB,cACxB,EAAE,uBAAuB,eAAe,uBAAuB,YAC/D;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,uBAAuB,UAAU;AACnC,eAAW;AACX,QAAI,uBAAuB,cAAc;AACvC,iBAAW;AAAA,IACb,WAAW,uBAAuB,WAAW;AAC3C,iBAAW;AACX,kBAAY,uBAAuB;AAAA,IACrC;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB,eAAe,uBAAuB,eAAe;AAAA,IAC5E,uBAAuB,qBAAqB,uBAAuB,qBAAqB;AAAA,IACxF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,cAAc,uBAAuB,cAAc;AAAA,EAC5E,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,oBAAoB,kBAAkB,YAAY;AAEpE,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAkBA,SAAS,uCACP,wBACA,qBACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAExF,MACE,CAAC,uBAAuB,cACxB,EAAE,uBAAuB,eAAe,uBAAuB,YAC/D;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,iBAAqC;AACzC,MAAI,uBAAuB,UAAU;AACnC,QAAI,uBAAuB,gBAAgB,MAAM;AAC/C,iBAAW;AACX,uBAAiB,aAAa,uBAAuB,QAAQ,EAAE,MAAM,GAAG,EAAE;AAAA,IAC5E,OAAO;AACL,iBAAW;AACX,UAAI,uBAAuB,cAAc;AACvC,mBAAW;AAAA,MACb,WAAW,uBAAuB,WAAW;AAC3C,mBAAW;AACX,oBAAY,uBAAuB;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB,eAAe,uBAAuB,eAAe;AAAA,IAC5E,uBAAuB,qBAAqB,uBAAuB,qBAAqB;AAAA,IACxF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,cAAc,uBAAuB,cAAc;AAAA,EAC5E,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,oBAAoB,kBAAkB,YAAY;AAEpE,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAkBA,SAAS,uCACP,wBACA,qBACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAExF,MACE,CAAC,uBAAuB,cACxB,EAAE,uBAAuB,eAAe,uBAAuB,YAC/D;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,iBAAqC;AACzC,MAAI,uBAAuB,UAAU;AACnC,QAAI,uBAAuB,gBAAgB,MAAM;AAC/C,iBAAW;AACX,uBAAiB,aAAa,uBAAuB,QAAQ,EAAE,MAAM,GAAG,EAAE;AAAA,IAC5E,OAAO;AACL,iBAAW;AACX,UAAI,uBAAuB,cAAc;AACvC,mBAAW;AAAA,MACb,WAAW,uBAAuB,WAAW;AAC3C,mBAAW;AACX,oBAAY,uBAAuB;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB,eAAe,uBAAuB,eAAe;AAAA,IAC5E,uBAAuB,qBAAqB,uBAAuB,qBAAqB;AAAA,IACxF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,kBAAkB,uBAAuB,kBAAkB;AAAA,IAClF,uBAAuB,cAAc,uBAAuB,cAAc;AAAA,EAC5E,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,oBAAoB,kBAAkB,YAAY;AAEpE,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAgBA,SAAS,0CACP,wBACA,6BACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAGxF,MAAI,CAAC,uBAAuB,eAAe,CAAC,uBAAuB,WAAW;AAC5E,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,uBAAuB,UAAU;AACnC,eAAW;AACX,QAAI,uBAAuB,cAAc;AACvC,iBAAW;AAAA,IACb,WAAW,uBAAuB,WAAW;AAC3C,iBAAW;AACX,kBAAY,uBAAuB;AAAA,IACrC;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB,qBAC1C,0CAAqB,4BAA4B,kBAAkB,gBAAgB,KAAK,IACxF;AAAA,IACJ,4BAA4B,kBAAkB,sBAC1C,0CAAqB,4BAA4B,kBAAkB,iBAAiB,KAAK,IACzF;AAAA,IACJ,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,4BAA4B,kBAAkB,YAAY;AAC5E,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,4BAA4B;AAAA,IAC9B;AAAA,IACA;AAAA,EACF;AACF;AAgBA,SAAS,0CACP,wBACA,6BACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAGxF,MAAI,CAAC,uBAAuB,eAAe,CAAC,uBAAuB,WAAW;AAC5E,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,iBAAqC;AACzC,MAAI,uBAAuB,UAAU;AACnC,QAAI,uBAAuB,gBAAgB,MAAM;AAC/C,iBAAW;AACX,uBAAiB,aAAa,uBAAuB,QAAQ,EAAE,MAAM,GAAG,EAAE;AAAA,IAC5E,OAAO;AACL,iBAAW;AACX,UAAI,uBAAuB,cAAc;AACvC,mBAAW;AAAA,MACb,WAAW,uBAAuB,WAAW;AAC3C,mBAAW;AACX,oBAAY,uBAAuB;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB,qBAC1C,0CAAqB,4BAA4B,kBAAkB,gBAAgB,KAAK,IACxF;AAAA,IACJ,4BAA4B,kBAAkB,sBAC1C,0CAAqB,4BAA4B,kBAAkB,iBAAiB,KAAK,IACzF;AAAA,IACJ,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,uBAAuB;AAAA,IACvB;AAAA;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,4BAA4B,kBAAkB,YAAY;AAC5E,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAgBA,SAAS,0CACP,wBACA,6BACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAGxF,MAAI,CAAC,uBAAuB,eAAe,CAAC,uBAAuB,WAAW;AAC5E,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,iBAAqC;AACzC,MAAI,uBAAuB,UAAU;AACnC,QAAI,uBAAuB,gBAAgB,MAAM;AAC/C,iBAAW;AACX,uBAAiB,aAAa,uBAAuB,QAAQ,EAAE,MAAM,GAAG,EAAE;AAAA,IAC5E,OAAO;AACL,iBAAW;AACX,UAAI,uBAAuB,cAAc;AACvC,mBAAW;AAAA,MACb,WAAW,uBAAuB,WAAW;AAC3C,mBAAW;AACX,oBAAY,uBAAuB;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB,qBAC1C,0CAAqB,4BAA4B,kBAAkB,gBAAgB,KAAK,IACxF;AAAA,IACJ,4BAA4B,kBAAkB,sBAC1C,0CAAqB,4BAA4B,kBAAkB,iBAAiB,KAAK,IACzF;AAAA,IACJ,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,uBAAuB;AAAA,IACvB;AAAA;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,4BAA4B,kBAAkB,YAAY;AAC5E,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAgBA,SAAS,0CACP,wBACA,6BACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAGxF,MAAI,CAAC,uBAAuB,eAAe,CAAC,uBAAuB,WAAW;AAC5E,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,iBAAqC;AACzC,MAAI,uBAAuB,UAAU;AACnC,QAAI,uBAAuB,gBAAgB,MAAM;AAC/C,iBAAW;AACX,uBAAiB,aAAa,uBAAuB,QAAQ,EAAE,MAAM,GAAG,EAAE;AAAA,IAC5E,OAAO;AACL,iBAAW;AACX,UAAI,uBAAuB,cAAc;AACvC,mBAAW;AAAA,MACb,WAAW,uBAAuB,WAAW;AAC3C,mBAAW;AACX,oBAAY,uBAAuB;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB,qBAC1C,0CAAqB,4BAA4B,kBAAkB,gBAAgB,KAAK,IACxF;AAAA,IACJ,4BAA4B,kBAAkB,sBAC1C,0CAAqB,4BAA4B,kBAAkB,iBAAiB,KAAK,IACzF;AAAA,IACJ,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,uBAAuB;AAAA,IACvB;AAAA;AAAA,IACA,uBAAuB;AAAA,IACvB,4BAA4B,kBAAkB;AAAA;AAAA,IAC9C,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,4BAA4B,kBAAkB,YAAY;AAC5E,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAgBA,SAAS,0CACP,wBACA,6BACkE;AAClE,2BAAyB,yCAAyC,sBAAsB;AAGxF,MAAI,CAAC,uBAAuB,eAAe,CAAC,uBAAuB,WAAW;AAC5E,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAmB;AACvB,MAAI,YAAY,uBAAuB;AACvC,MAAI,iBAAqC;AACzC,MAAI,uBAAuB,UAAU;AACnC,QAAI,uBAAuB,gBAAgB,MAAM;AAC/C,iBAAW;AACX,uBAAiB,aAAa,uBAAuB,QAAQ,EAAE,MAAM,GAAG,EAAE;AAAA,IAC5E,OAAO;AACL,iBAAW;AACX,UAAI,uBAAuB,cAAc;AACvC,mBAAW;AAAA,MACb,WAAW,uBAAuB,WAAW;AAC3C,mBAAW;AACX,oBAAY,uBAAuB;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,uBAAuB,aAAa;AACtC,QAAI,uBAAuB,UAAU;AACnC,4BAAsB,6CAAmB;AAAA,QACvC,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb,OAAO;AACL,4BAAsB,uDAAwB;AAAA,QAC5C,uBAAuB,YAAY,SAAS;AAAA,MAC9C,EAAE,SAAS;AAAA,IACb;AAAA,EACF;AAGA,QAAM,eAAe;AAAA,IACnB,sBAAsB,sBAAsB;AAAA,IAC5C,uBAAuB,eACnB,0CAAqB,uBAAuB,UAAU,KAAK,IAC3D;AAAA,IACJ,uBAAuB,gBACnB,0CAAqB,uBAAuB,WAAW,KAAK,IAC5D;AAAA,IACJ;AAAA,MACE,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,IACzB;AAAA,IACA,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB,qBAC1C,0CAAqB,4BAA4B,kBAAkB,gBAAgB,KAAK,IACxF;AAAA,IACJ,4BAA4B,kBAAkB,sBAC1C,0CAAqB,4BAA4B,kBAAkB,iBAAiB,KAAK,IACzF;AAAA,IACJ,4BAA4B,kBAAkB;AAAA,IAC9C,4BAA4B,kBAAkB;AAAA,IAC9C,uBAAuB;AAAA,IACvB;AAAA;AAAA,IACA,uBAAuB;AAAA,IACvB,4BAA4B,kBAAkB;AAAA;AAAA,IAC9C,uBAAuB;AAAA,IACvB,uBAAuB,cAAU,mCAAgB,uBAAuB,OAAO,IAAI;AAAA,IACnF,uBAAuB,WAAW,uBAAuB,WAAW;AAAA,IACpE,uBAAuB;AAAA,IACvB;AAAA,IACA;AAAA,IACA,uBAAuB;AAAA,IACvB,kCAAkC,uBAAuB,cAAc;AAAA,IACvE,0CAA0C,uBAAuB,sBAAsB;AAAA,IACvF,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,EAAE,KAAK,IAAI;AAEX,QAAM,YAAY,4BAA4B,kBAAkB,YAAY;AAC5E,SAAO;AAAA,IACL,oBAAoB,IAAI;AAAA,MACtB,uBAAuB;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB;AAAA,MACA,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,4BAA4B;AAAA,MAC5B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,wBAAwB,uBAAuB,cAAc;AAAA,MAC7D,wBAAwB,uBAAuB,sBAAsB;AAAA,MACrE;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kCACP,gBACoB;AACpB,MAAI,mBAAmB,QAAW;AAChC,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB;AACrB,SAAO,KAAK,cAAc,EAAE,QAAQ,SAAU,KAAK;AAGjD,qBAAiB,iBAAiB,MAAM,MAAM,eAAe,GAAG,IAAI;AAAA,EACtE,CAAC;AACD,SAAO;AACT;AAEA,SAAS,0CACP,iBACoB;AACpB,MAAI,oBAAoB,QAAW;AACjC,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB;AACrB,SAAO,KAAK,eAAe,EAAE,QAAQ,SAAU,KAAK;AAGlD,qBAAiB,iBAAiB,OAAO,MAAM,MAAM,gBAAgB,GAAG;AAAA,EAC1E,CAAC;AACD,SAAO;AACT;AAEA,SAAS,wBAAwB,gBAAgE;AAC/F,MAAI,mBAAmB,QAAW;AAChC,WAAO;AAAA,EACT;AAEA,MAAI,cAAc;AAClB,MAAI,QAAQ;AACZ,SAAO,KAAK,cAAc,EAAE,QAAQ,SAAU,KAAK;AAGjD,QAAI,UAAU,GAAG;AACf,oBAAc,cAAc;AAAA,IAC9B;AAEA,kBAAc,cAAc;AAC5B,MAAE;AAAA,EACJ,CAAC;AACD,SAAO;AACT;AAEA,SAAS,iBAAiB,aAAqB,eAAuB,UAA2B;AAG/F,QAAM,WAAqB,CAAC,SAAS,WAAW,IAAI,aAAa,EAAE;AACnE,MAAI,UAAU;AACZ,aAAS,KAAK,IAAI,QAAQ,EAAE;AAAA,EAC9B;AACA,SAAO,SAAS,KAAK,EAAE;AACzB;AAEA,SAAS,yCACP,wBACwB;AACxB,QAAM,UAAU,uBAAuB,UAAU,uBAAuB,UAAU;AAClF,MAAI,uBAAuB,gBAAgB,UAAU,cAAc;AACjE,UAAM,WAAW,kEAAkE;AAAA,EACrF;AACA,MAAI,uBAAuB,aAAa,UAAa,uBAAuB,cAAc;AACxF,UAAM,WAAW,wDAAwD;AAAA,EAC3E;AAEA,MAAI,uBAAuB,aAAa,UAAU,cAAc;AAC9D,UAAM,WAAW,+DAA+D;AAAA,EAClF;AACA,MAAI,uBAAuB,aAAa,UAAa,uBAAuB,WAAW;AACrF,UAAM,WAAW,qDAAqD;AAAA,EACxE;AAEA,MACE,uBAAuB,eACvB,uBAAuB,YAAY,yBACnC,UAAU,cACV;AACA,UAAM,WAAW,iEAAiE;AAAA,EACpF;AAEA,MACE,uBAAuB,eACvB,uBAAuB,YAAY,iBACnC,UAAU,cACV;AACA,UAAM,WAAW,kEAAkE;AAAA,EACrF;AAEA,MACE,uBAAuB,eACvB,uBAAuB,YAAY,mBACnC,UAAU,cACV;AACA,UAAM,WAAW,kEAAkE;AAAA,EACrF;AAEA,MACE,uBAAuB,eACvB,uBAAuB,YAAY,OACnC,UAAU,cACV;AACA,UAAM,WAAW,kEAAkE;AAAA,EACrF;AAEA,MACE,UAAU,gBACV,uBAAuB,gBACtB,uBAAuB,YAAY,QAAQ,uBAAuB,YAAY,UAC/E;AACA,UAAM,WAAW,6EAA6E;AAAA,EAChG;AAEA,MACE,UAAU,gBACV,uBAAuB,eACtB,uBAAuB,YAAwC,cAChE;AACA,UAAM,WAAW,sEAAsE;AAAA,EACzF;AAEA,MACE,UAAU,iBACT,uBAAuB,8BAA8B,uBAAuB,gBAC7E;AACA,UAAM;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAEA,MAAI,uBAAuB,mBAAmB,UAAU,cAAc;AACpE,UAAM,WAAW,2EAA2E;AAAA,EAC9F;AAEA,yBAAuB,UAAU;AACjC,SAAO;AACT;AAEA,SAAS,aAAa,UAA0B;AAC9C,MAAI,eAAe;AACnB,SAAO,aAAa,WAAW,GAAG,GAAG;AACnC,mBAAe,aAAa,UAAU,CAAC;AAAA,EACzC;AAEA,SAAO,aAAa,SAAS,GAAG,GAAG;AACjC,mBAAe,aAAa,UAAU,GAAG,aAAa,SAAS,CAAC;AAAA,EAClE;AACA,SAAO;AACT;",
6
6
  "names": ["import_storage_common"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SASQueryParameters.d.ts","sourceRoot":"","sources":["../../../src/sas/SASQueryParameters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SASQueryParameters.d.ts","sourceRoot":"","sources":["../../../src/sas/SASQueryParameters.ts"],"names":[],"mappings":"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"}
@@ -408,7 +408,11 @@ class SASQueryParameters {
408
408
  this.tryAppendQueryParameter(queries, param, this.requestQueryParameterKeys);
409
409
  break;
410
410
  case "sdd":
411
- this.tryAppendQueryParameter(queries, param, "" + this.directoryDepth);
411
+ this.tryAppendQueryParameter(
412
+ queries,
413
+ param,
414
+ this.directoryDepth !== void 0 ? this.directoryDepth.toString() : ""
415
+ );
412
416
  break;
413
417
  }
414
418
  }