@azure/storage-queue 12.30.0-beta.1 → 12.30.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 (154) hide show
  1. package/dist/browser/generated/src/storageClient.js +1 -1
  2. package/dist/browser/generated/src/storageClient.js.map +1 -1
  3. package/dist/browser/utils/constants.d.ts.map +1 -1
  4. package/dist/browser/utils/constants.js +1 -1
  5. package/dist/browser/utils/constants.js.map +1 -1
  6. package/dist/commonjs/AccountSASPermissions.js +1 -0
  7. package/dist/commonjs/AccountSASPermissions.js.map +1 -1
  8. package/dist/commonjs/AccountSASResourceTypes.js +1 -0
  9. package/dist/commonjs/AccountSASResourceTypes.js.map +1 -1
  10. package/dist/commonjs/AccountSASServices.js +1 -0
  11. package/dist/commonjs/AccountSASServices.js.map +1 -1
  12. package/dist/commonjs/AccountSASSignatureValues.js +1 -0
  13. package/dist/commonjs/AccountSASSignatureValues.js.map +1 -1
  14. package/dist/commonjs/Pipeline.js +1 -0
  15. package/dist/commonjs/Pipeline.js.map +1 -1
  16. package/dist/commonjs/QueueClient.js +1 -0
  17. package/dist/commonjs/QueueClient.js.map +1 -1
  18. package/dist/commonjs/QueueSASPermissions.js +1 -0
  19. package/dist/commonjs/QueueSASPermissions.js.map +1 -1
  20. package/dist/commonjs/QueueSASSignatureValues.js +1 -0
  21. package/dist/commonjs/QueueSASSignatureValues.js.map +1 -1
  22. package/dist/commonjs/QueueServiceClient.js +1 -0
  23. package/dist/commonjs/QueueServiceClient.js.map +1 -1
  24. package/dist/commonjs/SASQueryParameters.js +1 -0
  25. package/dist/commonjs/SASQueryParameters.js.map +1 -1
  26. package/dist/commonjs/SasIPRange.js +1 -0
  27. package/dist/commonjs/SasIPRange.js.map +1 -1
  28. package/dist/commonjs/StorageClient.js +1 -0
  29. package/dist/commonjs/StorageClient.js.map +1 -1
  30. package/dist/commonjs/StorageContextClient.js +1 -0
  31. package/dist/commonjs/StorageContextClient.js.map +1 -1
  32. package/dist/commonjs/generated/src/index.js +1 -0
  33. package/dist/commonjs/generated/src/index.js.map +1 -1
  34. package/dist/commonjs/generated/src/models/index.js +1 -0
  35. package/dist/commonjs/generated/src/models/index.js.map +1 -1
  36. package/dist/commonjs/generated/src/models/mappers.js +1 -0
  37. package/dist/commonjs/generated/src/models/mappers.js.map +1 -1
  38. package/dist/commonjs/generated/src/models/parameters.js +1 -0
  39. package/dist/commonjs/generated/src/models/parameters.js.map +1 -1
  40. package/dist/commonjs/generated/src/operations/index.js +1 -0
  41. package/dist/commonjs/generated/src/operations/index.js.map +1 -1
  42. package/dist/commonjs/generated/src/operations/messageId.js +1 -0
  43. package/dist/commonjs/generated/src/operations/messageId.js.map +1 -1
  44. package/dist/commonjs/generated/src/operations/messages.js +1 -0
  45. package/dist/commonjs/generated/src/operations/messages.js.map +1 -1
  46. package/dist/commonjs/generated/src/operations/queue.js +1 -0
  47. package/dist/commonjs/generated/src/operations/queue.js.map +1 -1
  48. package/dist/commonjs/generated/src/operations/service.js +1 -0
  49. package/dist/commonjs/generated/src/operations/service.js.map +1 -1
  50. package/dist/commonjs/generated/src/operationsInterfaces/index.js +1 -0
  51. package/dist/commonjs/generated/src/operationsInterfaces/index.js.map +1 -1
  52. package/dist/commonjs/generated/src/operationsInterfaces/messageId.js +1 -0
  53. package/dist/commonjs/generated/src/operationsInterfaces/messageId.js.map +1 -1
  54. package/dist/commonjs/generated/src/operationsInterfaces/messages.js +1 -0
  55. package/dist/commonjs/generated/src/operationsInterfaces/messages.js.map +1 -1
  56. package/dist/commonjs/generated/src/operationsInterfaces/queue.js +1 -0
  57. package/dist/commonjs/generated/src/operationsInterfaces/queue.js.map +1 -1
  58. package/dist/commonjs/generated/src/operationsInterfaces/service.js +1 -0
  59. package/dist/commonjs/generated/src/operationsInterfaces/service.js.map +1 -1
  60. package/dist/commonjs/generated/src/storageClient.js +2 -1
  61. package/dist/commonjs/generated/src/storageClient.js.map +2 -2
  62. package/dist/commonjs/generatedModels.js +1 -0
  63. package/dist/commonjs/generatedModels.js.map +1 -1
  64. package/dist/commonjs/index.js +1 -0
  65. package/dist/commonjs/index.js.map +1 -1
  66. package/dist/commonjs/log.js +1 -0
  67. package/dist/commonjs/log.js.map +1 -1
  68. package/dist/commonjs/models.js +1 -0
  69. package/dist/commonjs/models.js.map +1 -1
  70. package/dist/commonjs/tsdoc-metadata.json +1 -1
  71. package/dist/commonjs/utils/constants.d.ts.map +1 -1
  72. package/dist/commonjs/utils/constants.js +2 -1
  73. package/dist/commonjs/utils/constants.js.map +2 -2
  74. package/dist/commonjs/utils/tracing.js +1 -0
  75. package/dist/commonjs/utils/tracing.js.map +1 -1
  76. package/dist/commonjs/utils/utils.common.js +1 -0
  77. package/dist/commonjs/utils/utils.common.js.map +1 -1
  78. package/dist/esm/AccountSASPermissions.js +123 -111
  79. package/dist/esm/AccountSASPermissions.js.map +1 -7
  80. package/dist/esm/AccountSASResourceTypes.js +67 -58
  81. package/dist/esm/AccountSASResourceTypes.js.map +1 -7
  82. package/dist/esm/AccountSASServices.js +75 -66
  83. package/dist/esm/AccountSASServices.js.map +1 -7
  84. package/dist/esm/AccountSASSignatureValues.js +63 -62
  85. package/dist/esm/AccountSASSignatureValues.js.map +1 -7
  86. package/dist/esm/Pipeline.js +239 -239
  87. package/dist/esm/Pipeline.js.map +1 -7
  88. package/dist/esm/QueueClient.js +671 -689
  89. package/dist/esm/QueueClient.js.map +1 -7
  90. package/dist/esm/QueueSASPermissions.js +77 -68
  91. package/dist/esm/QueueSASPermissions.js.map +1 -7
  92. package/dist/esm/QueueSASSignatureValues.js +103 -123
  93. package/dist/esm/QueueSASSignatureValues.js.map +1 -7
  94. package/dist/esm/QueueServiceClient.js +463 -505
  95. package/dist/esm/QueueServiceClient.js.map +1 -7
  96. package/dist/esm/SASQueryParameters.js +272 -283
  97. package/dist/esm/SASQueryParameters.js.map +1 -7
  98. package/dist/esm/SasIPRange.js +12 -5
  99. package/dist/esm/SasIPRange.js.map +1 -7
  100. package/dist/esm/StorageClient.js +59 -50
  101. package/dist/esm/StorageClient.js.map +1 -7
  102. package/dist/esm/StorageContextClient.js +15 -10
  103. package/dist/esm/StorageContextClient.js.map +1 -7
  104. package/dist/esm/generated/src/index.js +9 -4
  105. package/dist/esm/generated/src/index.js.map +1 -7
  106. package/dist/esm/generated/src/models/index.js +126 -63
  107. package/dist/esm/generated/src/models/index.js.map +1 -7
  108. package/dist/esm/generated/src/models/mappers.js +1827 -1873
  109. package/dist/esm/generated/src/models/mappers.js.map +1 -7
  110. package/dist/esm/generated/src/models/parameters.js +302 -330
  111. package/dist/esm/generated/src/models/parameters.js.map +1 -7
  112. package/dist/esm/generated/src/operations/index.js +8 -0
  113. package/dist/esm/generated/src/operations/index.js.map +1 -7
  114. package/dist/esm/generated/src/operations/messageId.js +92 -95
  115. package/dist/esm/generated/src/operations/messageId.js.map +1 -7
  116. package/dist/esm/generated/src/operations/messages.js +178 -178
  117. package/dist/esm/generated/src/operations/messages.js.map +1 -7
  118. package/dist/esm/generated/src/operations/queue.js +199 -208
  119. package/dist/esm/generated/src/operations/queue.js.map +1 -7
  120. package/dist/esm/generated/src/operations/service.js +192 -204
  121. package/dist/esm/generated/src/operations/service.js.map +1 -7
  122. package/dist/esm/generated/src/operationsInterfaces/index.js +8 -0
  123. package/dist/esm/generated/src/operationsInterfaces/index.js.map +1 -7
  124. package/dist/esm/generated/src/operationsInterfaces/messageId.js +9 -0
  125. package/dist/esm/generated/src/operationsInterfaces/messageId.js.map +1 -7
  126. package/dist/esm/generated/src/operationsInterfaces/messages.js +9 -0
  127. package/dist/esm/generated/src/operationsInterfaces/messages.js.map +1 -7
  128. package/dist/esm/generated/src/operationsInterfaces/queue.js +9 -0
  129. package/dist/esm/generated/src/operationsInterfaces/queue.js.map +1 -7
  130. package/dist/esm/generated/src/operationsInterfaces/service.js +9 -0
  131. package/dist/esm/generated/src/operationsInterfaces/service.js.map +1 -7
  132. package/dist/esm/generated/src/storageClient.js +54 -49
  133. package/dist/esm/generated/src/storageClient.js.map +1 -7
  134. package/dist/esm/generatedModels.js +4 -0
  135. package/dist/esm/generatedModels.js.map +1 -7
  136. package/dist/esm/index.js +10 -50
  137. package/dist/esm/index.js.map +1 -7
  138. package/dist/esm/log.js +7 -4
  139. package/dist/esm/log.js.map +1 -7
  140. package/dist/esm/models.js +18 -10
  141. package/dist/esm/models.js.map +1 -7
  142. package/dist/esm/utils/constants.d.ts.map +1 -1
  143. package/dist/esm/utils/constants.js +111 -117
  144. package/dist/esm/utils/constants.js.map +1 -7
  145. package/dist/esm/utils/tracing.js +11 -7
  146. package/dist/esm/utils/tracing.js.map +1 -7
  147. package/dist/esm/utils/utils.common.js +358 -247
  148. package/dist/esm/utils/utils.common.js.map +1 -7
  149. package/dist/react-native/generated/src/storageClient.js +1 -1
  150. package/dist/react-native/generated/src/storageClient.js.map +1 -1
  151. package/dist/react-native/utils/constants.d.ts.map +1 -1
  152. package/dist/react-native/utils/constants.js +1 -1
  153. package/dist/react-native/utils/constants.js.map +1 -1
  154. package/package.json +21 -11
@@ -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"]}