@azure/storage-queue 12.30.0-alpha.20260310.1 → 12.31.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/browser/generated/src/storageClient.js +2 -2
  2. package/dist/browser/generated/src/storageClient.js.map +1 -1
  3. package/dist/browser/utils/constants.js +2 -2
  4. package/dist/browser/utils/constants.js.map +1 -1
  5. package/dist/browser/utils/utils.common.d.ts.map +1 -1
  6. package/dist/browser/utils/utils.common.js +14 -0
  7. package/dist/browser/utils/utils.common.js.map +1 -1
  8. package/dist/commonjs/AccountSASPermissions.js +1 -0
  9. package/dist/commonjs/AccountSASPermissions.js.map +1 -1
  10. package/dist/commonjs/AccountSASResourceTypes.js +1 -0
  11. package/dist/commonjs/AccountSASResourceTypes.js.map +1 -1
  12. package/dist/commonjs/AccountSASServices.js +1 -0
  13. package/dist/commonjs/AccountSASServices.js.map +1 -1
  14. package/dist/commonjs/AccountSASSignatureValues.js +1 -0
  15. package/dist/commonjs/AccountSASSignatureValues.js.map +1 -1
  16. package/dist/commonjs/Pipeline.js +1 -0
  17. package/dist/commonjs/Pipeline.js.map +1 -1
  18. package/dist/commonjs/QueueClient.js +1 -0
  19. package/dist/commonjs/QueueClient.js.map +1 -1
  20. package/dist/commonjs/QueueSASPermissions.js +1 -0
  21. package/dist/commonjs/QueueSASPermissions.js.map +1 -1
  22. package/dist/commonjs/QueueSASSignatureValues.js +1 -0
  23. package/dist/commonjs/QueueSASSignatureValues.js.map +1 -1
  24. package/dist/commonjs/QueueServiceClient.js +1 -0
  25. package/dist/commonjs/QueueServiceClient.js.map +1 -1
  26. package/dist/commonjs/SASQueryParameters.js +1 -0
  27. package/dist/commonjs/SASQueryParameters.js.map +1 -1
  28. package/dist/commonjs/SasIPRange.js +1 -0
  29. package/dist/commonjs/SasIPRange.js.map +1 -1
  30. package/dist/commonjs/StorageClient.js +1 -0
  31. package/dist/commonjs/StorageClient.js.map +1 -1
  32. package/dist/commonjs/StorageContextClient.js +1 -0
  33. package/dist/commonjs/StorageContextClient.js.map +1 -1
  34. package/dist/commonjs/generated/src/index.js +1 -0
  35. package/dist/commonjs/generated/src/index.js.map +1 -1
  36. package/dist/commonjs/generated/src/models/index.js +1 -0
  37. package/dist/commonjs/generated/src/models/index.js.map +1 -1
  38. package/dist/commonjs/generated/src/models/mappers.js +1 -0
  39. package/dist/commonjs/generated/src/models/mappers.js.map +1 -1
  40. package/dist/commonjs/generated/src/models/parameters.js +1 -0
  41. package/dist/commonjs/generated/src/models/parameters.js.map +1 -1
  42. package/dist/commonjs/generated/src/operations/index.js +1 -0
  43. package/dist/commonjs/generated/src/operations/index.js.map +1 -1
  44. package/dist/commonjs/generated/src/operations/messageId.js +1 -0
  45. package/dist/commonjs/generated/src/operations/messageId.js.map +1 -1
  46. package/dist/commonjs/generated/src/operations/messages.js +1 -0
  47. package/dist/commonjs/generated/src/operations/messages.js.map +1 -1
  48. package/dist/commonjs/generated/src/operations/queue.js +1 -0
  49. package/dist/commonjs/generated/src/operations/queue.js.map +1 -1
  50. package/dist/commonjs/generated/src/operations/service.js +1 -0
  51. package/dist/commonjs/generated/src/operations/service.js.map +1 -1
  52. package/dist/commonjs/generated/src/operationsInterfaces/index.js +1 -0
  53. package/dist/commonjs/generated/src/operationsInterfaces/index.js.map +1 -1
  54. package/dist/commonjs/generated/src/operationsInterfaces/messageId.js +1 -0
  55. package/dist/commonjs/generated/src/operationsInterfaces/messageId.js.map +1 -1
  56. package/dist/commonjs/generated/src/operationsInterfaces/messages.js +1 -0
  57. package/dist/commonjs/generated/src/operationsInterfaces/messages.js.map +1 -1
  58. package/dist/commonjs/generated/src/operationsInterfaces/queue.js +1 -0
  59. package/dist/commonjs/generated/src/operationsInterfaces/queue.js.map +1 -1
  60. package/dist/commonjs/generated/src/operationsInterfaces/service.js +1 -0
  61. package/dist/commonjs/generated/src/operationsInterfaces/service.js.map +1 -1
  62. package/dist/commonjs/generated/src/storageClient.js +3 -2
  63. package/dist/commonjs/generated/src/storageClient.js.map +2 -2
  64. package/dist/commonjs/generatedModels.js +1 -0
  65. package/dist/commonjs/generatedModels.js.map +1 -1
  66. package/dist/commonjs/index.js +1 -0
  67. package/dist/commonjs/index.js.map +1 -1
  68. package/dist/commonjs/log.js +1 -0
  69. package/dist/commonjs/log.js.map +1 -1
  70. package/dist/commonjs/models.js +1 -0
  71. package/dist/commonjs/models.js.map +1 -1
  72. package/dist/commonjs/tsdoc-metadata.json +1 -1
  73. package/dist/commonjs/utils/constants.js +3 -2
  74. package/dist/commonjs/utils/constants.js.map +2 -2
  75. package/dist/commonjs/utils/tracing.js +1 -0
  76. package/dist/commonjs/utils/tracing.js.map +1 -1
  77. package/dist/commonjs/utils/utils.common.d.ts.map +1 -1
  78. package/dist/commonjs/utils/utils.common.js +14 -0
  79. package/dist/commonjs/utils/utils.common.js.map +3 -3
  80. package/dist/esm/AccountSASPermissions.js +123 -111
  81. package/dist/esm/AccountSASPermissions.js.map +1 -7
  82. package/dist/esm/AccountSASResourceTypes.js +67 -58
  83. package/dist/esm/AccountSASResourceTypes.js.map +1 -7
  84. package/dist/esm/AccountSASServices.js +75 -66
  85. package/dist/esm/AccountSASServices.js.map +1 -7
  86. package/dist/esm/AccountSASSignatureValues.js +63 -62
  87. package/dist/esm/AccountSASSignatureValues.js.map +1 -7
  88. package/dist/esm/Pipeline.js +239 -239
  89. package/dist/esm/Pipeline.js.map +1 -7
  90. package/dist/esm/QueueClient.js +671 -689
  91. package/dist/esm/QueueClient.js.map +1 -7
  92. package/dist/esm/QueueSASPermissions.js +77 -68
  93. package/dist/esm/QueueSASPermissions.js.map +1 -7
  94. package/dist/esm/QueueSASSignatureValues.js +103 -123
  95. package/dist/esm/QueueSASSignatureValues.js.map +1 -7
  96. package/dist/esm/QueueServiceClient.js +463 -505
  97. package/dist/esm/QueueServiceClient.js.map +1 -7
  98. package/dist/esm/SASQueryParameters.js +272 -283
  99. package/dist/esm/SASQueryParameters.js.map +1 -7
  100. package/dist/esm/SasIPRange.js +12 -5
  101. package/dist/esm/SasIPRange.js.map +1 -7
  102. package/dist/esm/StorageClient.js +59 -50
  103. package/dist/esm/StorageClient.js.map +1 -7
  104. package/dist/esm/StorageContextClient.js +15 -10
  105. package/dist/esm/StorageContextClient.js.map +1 -7
  106. package/dist/esm/generated/src/index.js +9 -4
  107. package/dist/esm/generated/src/index.js.map +1 -7
  108. package/dist/esm/generated/src/models/index.js +126 -63
  109. package/dist/esm/generated/src/models/index.js.map +1 -7
  110. package/dist/esm/generated/src/models/mappers.js +1827 -1873
  111. package/dist/esm/generated/src/models/mappers.js.map +1 -7
  112. package/dist/esm/generated/src/models/parameters.js +302 -330
  113. package/dist/esm/generated/src/models/parameters.js.map +1 -7
  114. package/dist/esm/generated/src/operations/index.js +8 -0
  115. package/dist/esm/generated/src/operations/index.js.map +1 -7
  116. package/dist/esm/generated/src/operations/messageId.js +92 -95
  117. package/dist/esm/generated/src/operations/messageId.js.map +1 -7
  118. package/dist/esm/generated/src/operations/messages.js +178 -178
  119. package/dist/esm/generated/src/operations/messages.js.map +1 -7
  120. package/dist/esm/generated/src/operations/queue.js +199 -208
  121. package/dist/esm/generated/src/operations/queue.js.map +1 -7
  122. package/dist/esm/generated/src/operations/service.js +192 -204
  123. package/dist/esm/generated/src/operations/service.js.map +1 -7
  124. package/dist/esm/generated/src/operationsInterfaces/index.js +8 -0
  125. package/dist/esm/generated/src/operationsInterfaces/index.js.map +1 -7
  126. package/dist/esm/generated/src/operationsInterfaces/messageId.js +9 -0
  127. package/dist/esm/generated/src/operationsInterfaces/messageId.js.map +1 -7
  128. package/dist/esm/generated/src/operationsInterfaces/messages.js +9 -0
  129. package/dist/esm/generated/src/operationsInterfaces/messages.js.map +1 -7
  130. package/dist/esm/generated/src/operationsInterfaces/queue.js +9 -0
  131. package/dist/esm/generated/src/operationsInterfaces/queue.js.map +1 -7
  132. package/dist/esm/generated/src/operationsInterfaces/service.js +9 -0
  133. package/dist/esm/generated/src/operationsInterfaces/service.js.map +1 -7
  134. package/dist/esm/generated/src/storageClient.js +54 -49
  135. package/dist/esm/generated/src/storageClient.js.map +1 -7
  136. package/dist/esm/generatedModels.js +4 -0
  137. package/dist/esm/generatedModels.js.map +1 -7
  138. package/dist/esm/index.js +10 -50
  139. package/dist/esm/index.js.map +1 -7
  140. package/dist/esm/log.js +7 -4
  141. package/dist/esm/log.js.map +1 -7
  142. package/dist/esm/models.js +18 -10
  143. package/dist/esm/models.js.map +1 -7
  144. package/dist/esm/utils/constants.js +111 -117
  145. package/dist/esm/utils/constants.js.map +1 -7
  146. package/dist/esm/utils/tracing.js +11 -7
  147. package/dist/esm/utils/tracing.js.map +1 -7
  148. package/dist/esm/utils/utils.common.d.ts.map +1 -1
  149. package/dist/esm/utils/utils.common.js +372 -247
  150. package/dist/esm/utils/utils.common.js.map +1 -7
  151. package/dist/react-native/generated/src/storageClient.js +2 -2
  152. package/dist/react-native/generated/src/storageClient.js.map +1 -1
  153. package/dist/react-native/utils/constants.js +2 -2
  154. package/dist/react-native/utils/constants.js.map +1 -1
  155. package/dist/react-native/utils/utils.common.d.ts.map +1 -1
  156. package/dist/react-native/utils/utils.common.js +14 -0
  157. package/dist/react-native/utils/utils.common.js.map +1 -1
  158. package/package.json +26 -22
@@ -1,138 +1,118 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
1
3
  import { QueueSASPermissions } from "./QueueSASPermissions.js";
2
4
  import { StorageSharedKeyCredential, UserDelegationKeyCredential } from "@azure/storage-common";
3
5
  import { ipRangeToString } from "./SasIPRange.js";
4
6
  import { SASQueryParameters } from "./SASQueryParameters.js";
5
7
  import { SERVICE_VERSION } from "./utils/constants.js";
6
8
  import { truncatedISO8061Date } from "./utils/utils.common.js";
7
- function generateQueueSASQueryParameters(queueSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
8
- return generateQueueSASQueryParametersInternal(
9
- queueSASSignatureValues,
10
- sharedKeyCredentialOrUserDelegationKey,
11
- accountName
12
- ).sasQueryParameters;
9
+ export function generateQueueSASQueryParameters(queueSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
10
+ return generateQueueSASQueryParametersInternal(queueSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName).sasQueryParameters;
13
11
  }
14
- function generateQueueSASQueryParametersInternal(queueSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
15
- const version = queueSASSignatureValues.version ? queueSASSignatureValues.version : SERVICE_VERSION;
16
- const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential ? sharedKeyCredentialOrUserDelegationKey : void 0;
17
- let userDelegationKeyCredential;
18
- if (sharedKeyCredential === void 0 && accountName !== void 0) {
19
- userDelegationKeyCredential = new UserDelegationKeyCredential(
20
- accountName,
21
- sharedKeyCredentialOrUserDelegationKey
22
- );
23
- }
24
- if (sharedKeyCredential !== void 0) {
25
- return generateQueueSASQueryParametersDefault(queueSASSignatureValues, sharedKeyCredential);
26
- } else {
27
- if (version >= "2025-07-05") {
28
- return generateQueueSASQueryParametersUDK20250705(
29
- queueSASSignatureValues,
30
- userDelegationKeyCredential,
31
- accountName
32
- );
33
- } else {
34
- throw new RangeError(
35
- "'version' must be >= '2025-07-05' when generating user delegation SAS using user delegation key."
36
- );
12
+ export function generateQueueSASQueryParametersInternal(queueSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
13
+ const version = queueSASSignatureValues.version
14
+ ? queueSASSignatureValues.version
15
+ : SERVICE_VERSION;
16
+ const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
17
+ ? sharedKeyCredentialOrUserDelegationKey
18
+ : undefined;
19
+ let userDelegationKeyCredential;
20
+ if (sharedKeyCredential === undefined && accountName !== undefined) {
21
+ userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
22
+ }
23
+ if (sharedKeyCredential !== undefined) {
24
+ return generateQueueSASQueryParametersDefault(queueSASSignatureValues, sharedKeyCredential);
25
+ }
26
+ else {
27
+ if (version >= "2025-07-05") {
28
+ return generateQueueSASQueryParametersUDK20250705(queueSASSignatureValues, userDelegationKeyCredential, accountName);
29
+ }
30
+ else {
31
+ throw new RangeError("'version' must be >= '2025-07-05' when generating user delegation SAS using user delegation key.");
32
+ }
37
33
  }
38
- }
39
34
  }
40
35
  function generateQueueSASQueryParametersDefault(queueSASSignatureValues, sharedKeyCredential) {
41
- if (!queueSASSignatureValues.identifier && !(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)) {
42
- throw new RangeError(
43
- "Must provide 'permissions' and 'expiresOn' for Queue SAS generation when 'identifier' is not provided."
44
- );
45
- }
46
- const version = queueSASSignatureValues.version ? queueSASSignatureValues.version : SERVICE_VERSION;
47
- let verifiedPermissions;
48
- if (queueSASSignatureValues.permissions) {
49
- verifiedPermissions = QueueSASPermissions.parse(
50
- queueSASSignatureValues.permissions.toString()
51
- ).toString();
52
- }
53
- const stringToSign = [
54
- verifiedPermissions ? verifiedPermissions : "",
55
- queueSASSignatureValues.startsOn ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false) : "",
56
- queueSASSignatureValues.expiresOn ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false) : "",
57
- getCanonicalName(sharedKeyCredential.accountName, queueSASSignatureValues.queueName),
58
- queueSASSignatureValues.identifier,
59
- queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : "",
60
- queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : "",
61
- version
62
- ].join("\n");
63
- const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
64
- return {
65
- sasQueryParameters: new SASQueryParameters(
66
- version,
67
- signature,
68
- verifiedPermissions,
69
- void 0,
70
- void 0,
71
- queueSASSignatureValues.protocol,
72
- queueSASSignatureValues.startsOn,
73
- queueSASSignatureValues.expiresOn,
74
- queueSASSignatureValues.ipRange,
75
- queueSASSignatureValues.identifier
76
- ),
77
- stringToSign
78
- };
36
+ if (!queueSASSignatureValues.identifier &&
37
+ !(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)) {
38
+ throw new RangeError("Must provide 'permissions' and 'expiresOn' for Queue SAS generation when 'identifier' is not provided.");
39
+ }
40
+ const version = queueSASSignatureValues.version
41
+ ? queueSASSignatureValues.version
42
+ : SERVICE_VERSION;
43
+ let verifiedPermissions;
44
+ // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
45
+ if (queueSASSignatureValues.permissions) {
46
+ verifiedPermissions = QueueSASPermissions.parse(queueSASSignatureValues.permissions.toString()).toString();
47
+ }
48
+ // Signature is generated on the un-url-encoded values.
49
+ const stringToSign = [
50
+ verifiedPermissions ? verifiedPermissions : "",
51
+ queueSASSignatureValues.startsOn
52
+ ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false)
53
+ : "",
54
+ queueSASSignatureValues.expiresOn
55
+ ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false)
56
+ : "",
57
+ getCanonicalName(sharedKeyCredential.accountName, queueSASSignatureValues.queueName),
58
+ queueSASSignatureValues.identifier,
59
+ queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : "",
60
+ queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : "",
61
+ version,
62
+ ].join("\n");
63
+ const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
64
+ return {
65
+ sasQueryParameters: new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, queueSASSignatureValues.protocol, queueSASSignatureValues.startsOn, queueSASSignatureValues.expiresOn, queueSASSignatureValues.ipRange, queueSASSignatureValues.identifier),
66
+ stringToSign: stringToSign,
67
+ };
79
68
  }
80
69
  function generateQueueSASQueryParametersUDK20250705(queueSASSignatureValues, userDelegationKeyCredential, accountName) {
81
- if (!(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)) {
82
- throw new RangeError(
83
- "Must provide 'permissions' and 'expiresOn' for Queue SAS generation when generating user delegation SAS."
84
- );
85
- }
86
- const version = queueSASSignatureValues.version ? queueSASSignatureValues.version : SERVICE_VERSION;
87
- let verifiedPermissions;
88
- if (queueSASSignatureValues.permissions) {
89
- verifiedPermissions = QueueSASPermissions.parse(
90
- queueSASSignatureValues.permissions.toString()
91
- ).toString();
92
- }
93
- const resource = "q";
94
- const stringToSign = [
95
- verifiedPermissions ? verifiedPermissions : "",
96
- queueSASSignatureValues.startsOn ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false) : "",
97
- queueSASSignatureValues.expiresOn ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false) : "",
98
- getCanonicalName(accountName, queueSASSignatureValues.queueName),
99
- userDelegationKeyCredential.userDelegationKey.signedObjectId,
100
- userDelegationKeyCredential.userDelegationKey.signedTenantId,
101
- userDelegationKeyCredential.userDelegationKey.signedStartsOn ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false) : "",
102
- userDelegationKeyCredential.userDelegationKey.signedExpiresOn ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false) : "",
103
- userDelegationKeyCredential.userDelegationKey.signedService,
104
- userDelegationKeyCredential.userDelegationKey.signedVersion,
105
- userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId,
106
- // shared key delegation signed tenant id.
107
- queueSASSignatureValues.delegatedUserObjectId,
108
- queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : "",
109
- queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : "",
110
- version
111
- ].join("\n");
112
- const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
113
- return {
114
- sasQueryParameters: new SASQueryParameters(
115
- version,
116
- signature,
117
- verifiedPermissions,
118
- void 0,
119
- void 0,
120
- queueSASSignatureValues.protocol,
121
- queueSASSignatureValues.startsOn,
122
- queueSASSignatureValues.expiresOn,
123
- queueSASSignatureValues.ipRange,
124
- queueSASSignatureValues.identifier,
125
- resource,
126
- userDelegationKeyCredential.userDelegationKey,
127
- queueSASSignatureValues.delegatedUserObjectId
128
- ),
129
- stringToSign
130
- };
70
+ if (!(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)) {
71
+ throw new RangeError("Must provide 'permissions' and 'expiresOn' for Queue SAS generation when generating user delegation SAS.");
72
+ }
73
+ const version = queueSASSignatureValues.version
74
+ ? queueSASSignatureValues.version
75
+ : SERVICE_VERSION;
76
+ let verifiedPermissions;
77
+ // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
78
+ if (queueSASSignatureValues.permissions) {
79
+ verifiedPermissions = QueueSASPermissions.parse(queueSASSignatureValues.permissions.toString()).toString();
80
+ }
81
+ const resource = "q";
82
+ // Signature is generated on the un-url-encoded values.
83
+ const stringToSign = [
84
+ verifiedPermissions ? verifiedPermissions : "",
85
+ queueSASSignatureValues.startsOn
86
+ ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false)
87
+ : "",
88
+ queueSASSignatureValues.expiresOn
89
+ ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false)
90
+ : "",
91
+ getCanonicalName(accountName, queueSASSignatureValues.queueName),
92
+ userDelegationKeyCredential.userDelegationKey.signedObjectId,
93
+ userDelegationKeyCredential.userDelegationKey.signedTenantId,
94
+ userDelegationKeyCredential.userDelegationKey.signedStartsOn
95
+ ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
96
+ : "",
97
+ userDelegationKeyCredential.userDelegationKey.signedExpiresOn
98
+ ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
99
+ : "",
100
+ userDelegationKeyCredential.userDelegationKey.signedService,
101
+ userDelegationKeyCredential.userDelegationKey.signedVersion,
102
+ userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId, // shared key delegation signed tenant id.
103
+ queueSASSignatureValues.delegatedUserObjectId,
104
+ queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : "",
105
+ queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : "",
106
+ version,
107
+ ].join("\n");
108
+ const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
109
+ return {
110
+ sasQueryParameters: new SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, queueSASSignatureValues.protocol, queueSASSignatureValues.startsOn, queueSASSignatureValues.expiresOn, queueSASSignatureValues.ipRange, queueSASSignatureValues.identifier, resource, userDelegationKeyCredential.userDelegationKey, queueSASSignatureValues.delegatedUserObjectId),
111
+ stringToSign: stringToSign,
112
+ };
131
113
  }
132
114
  function getCanonicalName(accountName, queueName) {
133
- return `/queue/${accountName}/${queueName}`;
115
+ // Queue: "/queue/account/queueName"
116
+ return `/queue/${accountName}/${queueName}`;
134
117
  }
135
- export {
136
- generateQueueSASQueryParameters,
137
- generateQueueSASQueryParametersInternal
138
- };
118
+ //# sourceMappingURL=QueueSASSignatureValues.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/storage/storage-queue/src/QueueSASSignatureValues.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { QueueSASPermissions } from \"./QueueSASPermissions.js\";\nimport type { UserDelegationKey } from \"@azure/storage-common\";\nimport { StorageSharedKeyCredential, UserDelegationKeyCredential } 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\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * QueueSASSignatureValues is used to help generating Queue service SAS tokens for queues.\n */\nexport interface QueueSASSignatureValues {\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 {@link QueueSASPermissions}\n * being accessed for help constructing the permissions string.\n */\n permissions?: QueueSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the queue the SAS user may access.\n */\n queueName: string;\n\n /**\n * Optional. The name of the access policy on the queue 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 who 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/**\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 * @param queueSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateQueueSASQueryParameters(\n queueSASSignatureValues: QueueSASSignatureValues,\n userDelegationKey: UserDelegationKey,\n accountName: string,\n): SASQueryParameters;\n\nexport function generateQueueSASQueryParameters(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters;\n\nexport function generateQueueSASQueryParameters(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): SASQueryParameters {\n return generateQueueSASQueryParametersInternal(\n queueSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey,\n accountName,\n ).sasQueryParameters;\n}\n\nexport function generateQueueSASQueryParametersInternal(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n const version = queueSASSignatureValues.version\n ? queueSASSignatureValues.version\n : 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) {\n return generateQueueSASQueryParametersDefault(queueSASSignatureValues, sharedKeyCredential!);\n } else {\n if (version >= \"2025-07-05\") {\n return generateQueueSASQueryParametersUDK20250705(\n queueSASSignatureValues,\n userDelegationKeyCredential!,\n accountName!,\n );\n } else {\n throw new RangeError(\n \"'version' must be >= '2025-07-05' when generating user delegation SAS using user delegation key.\",\n );\n }\n }\n}\n\nfunction generateQueueSASQueryParametersDefault(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n if (\n !queueSASSignatureValues.identifier &&\n !(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Queue SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = queueSASSignatureValues.version\n ? queueSASSignatureValues.version\n : SERVICE_VERSION;\n let verifiedPermissions: string | undefined;\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n if (queueSASSignatureValues.permissions) {\n verifiedPermissions = QueueSASPermissions.parse(\n queueSASSignatureValues.permissions.toString(),\n ).toString();\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n queueSASSignatureValues.startsOn\n ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false)\n : \"\",\n queueSASSignatureValues.expiresOn\n ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, queueSASSignatureValues.queueName),\n queueSASSignatureValues.identifier,\n queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : \"\",\n queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : \"\",\n version,\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n queueSASSignatureValues.protocol,\n queueSASSignatureValues.startsOn,\n queueSASSignatureValues.expiresOn,\n queueSASSignatureValues.ipRange,\n queueSASSignatureValues.identifier,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction generateQueueSASQueryParametersUDK20250705(\n queueSASSignatureValues: QueueSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n accountName: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n if (!(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Queue SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = queueSASSignatureValues.version\n ? queueSASSignatureValues.version\n : SERVICE_VERSION;\n let verifiedPermissions: string | undefined;\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n if (queueSASSignatureValues.permissions) {\n verifiedPermissions = QueueSASPermissions.parse(\n queueSASSignatureValues.permissions.toString(),\n ).toString();\n }\n const resource: string = \"q\";\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n queueSASSignatureValues.startsOn\n ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false)\n : \"\",\n queueSASSignatureValues.expiresOn\n ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(accountName, queueSASSignatureValues.queueName),\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 userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId, // shared key delegation signed tenant id.\n queueSASSignatureValues.delegatedUserObjectId,\n queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : \"\",\n queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : \"\",\n version,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n queueSASSignatureValues.protocol,\n queueSASSignatureValues.startsOn,\n queueSASSignatureValues.expiresOn,\n queueSASSignatureValues.ipRange,\n queueSASSignatureValues.identifier,\n resource,\n userDelegationKeyCredential.userDelegationKey,\n queueSASSignatureValues.delegatedUserObjectId,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction getCanonicalName(accountName: string, queueName: string): string {\n // Queue: \"/queue/account/queueName\"\n return `/queue/${accountName}/${queueName}`;\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
1
+ {"version":3,"file":"QueueSASSignatureValues.js","sourceRoot":"","sources":["../../src/QueueSASSignatureValues.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { QueueSASPermissions } from \"./QueueSASPermissions.js\";\nimport type { UserDelegationKey } from \"@azure/storage-common\";\nimport { StorageSharedKeyCredential, UserDelegationKeyCredential } 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\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * QueueSASSignatureValues is used to help generating Queue service SAS tokens for queues.\n */\nexport interface QueueSASSignatureValues {\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 {@link QueueSASPermissions}\n * being accessed for help constructing the permissions string.\n */\n permissions?: QueueSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the queue the SAS user may access.\n */\n queueName: string;\n\n /**\n * Optional. The name of the access policy on the queue 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 who 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/**\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 * @param queueSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateQueueSASQueryParameters(\n queueSASSignatureValues: QueueSASSignatureValues,\n userDelegationKey: UserDelegationKey,\n accountName: string,\n): SASQueryParameters;\n\nexport function generateQueueSASQueryParameters(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters;\n\nexport function generateQueueSASQueryParameters(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): SASQueryParameters {\n return generateQueueSASQueryParametersInternal(\n queueSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey,\n accountName,\n ).sasQueryParameters;\n}\n\nexport function generateQueueSASQueryParametersInternal(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n const version = queueSASSignatureValues.version\n ? queueSASSignatureValues.version\n : 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) {\n return generateQueueSASQueryParametersDefault(queueSASSignatureValues, sharedKeyCredential!);\n } else {\n if (version >= \"2025-07-05\") {\n return generateQueueSASQueryParametersUDK20250705(\n queueSASSignatureValues,\n userDelegationKeyCredential!,\n accountName!,\n );\n } else {\n throw new RangeError(\n \"'version' must be >= '2025-07-05' when generating user delegation SAS using user delegation key.\",\n );\n }\n }\n}\n\nfunction generateQueueSASQueryParametersDefault(\n queueSASSignatureValues: QueueSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n if (\n !queueSASSignatureValues.identifier &&\n !(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Queue SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = queueSASSignatureValues.version\n ? queueSASSignatureValues.version\n : SERVICE_VERSION;\n let verifiedPermissions: string | undefined;\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n if (queueSASSignatureValues.permissions) {\n verifiedPermissions = QueueSASPermissions.parse(\n queueSASSignatureValues.permissions.toString(),\n ).toString();\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n queueSASSignatureValues.startsOn\n ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false)\n : \"\",\n queueSASSignatureValues.expiresOn\n ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, queueSASSignatureValues.queueName),\n queueSASSignatureValues.identifier,\n queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : \"\",\n queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : \"\",\n version,\n ].join(\"\\n\");\n\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n queueSASSignatureValues.protocol,\n queueSASSignatureValues.startsOn,\n queueSASSignatureValues.expiresOn,\n queueSASSignatureValues.ipRange,\n queueSASSignatureValues.identifier,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction generateQueueSASQueryParametersUDK20250705(\n queueSASSignatureValues: QueueSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n accountName: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n if (!(queueSASSignatureValues.permissions && queueSASSignatureValues.expiresOn)) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for Queue SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = queueSASSignatureValues.version\n ? queueSASSignatureValues.version\n : SERVICE_VERSION;\n let verifiedPermissions: string | undefined;\n\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n if (queueSASSignatureValues.permissions) {\n verifiedPermissions = QueueSASPermissions.parse(\n queueSASSignatureValues.permissions.toString(),\n ).toString();\n }\n const resource: string = \"q\";\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n queueSASSignatureValues.startsOn\n ? truncatedISO8061Date(queueSASSignatureValues.startsOn, false)\n : \"\",\n queueSASSignatureValues.expiresOn\n ? truncatedISO8061Date(queueSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(accountName, queueSASSignatureValues.queueName),\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 userDelegationKeyCredential.userDelegationKey.signedDelegatedUserTenantId, // shared key delegation signed tenant id.\n queueSASSignatureValues.delegatedUserObjectId,\n queueSASSignatureValues.ipRange ? ipRangeToString(queueSASSignatureValues.ipRange) : \"\",\n queueSASSignatureValues.protocol ? queueSASSignatureValues.protocol : \"\",\n version,\n ].join(\"\\n\");\n\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n\n return {\n sasQueryParameters: new SASQueryParameters(\n version,\n signature,\n verifiedPermissions,\n undefined,\n undefined,\n queueSASSignatureValues.protocol,\n queueSASSignatureValues.startsOn,\n queueSASSignatureValues.expiresOn,\n queueSASSignatureValues.ipRange,\n queueSASSignatureValues.identifier,\n resource,\n userDelegationKeyCredential.userDelegationKey,\n queueSASSignatureValues.delegatedUserObjectId,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction getCanonicalName(accountName: string, queueName: string): string {\n // Queue: \"/queue/account/queueName\"\n return `/queue/${accountName}/${queueName}`;\n}\n"]}