@azure/storage-file-share 12.29.1 → 12.30.0-alpha.20251201.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 (210) hide show
  1. package/dist/browser/Clients.d.ts +52 -2
  2. package/dist/browser/Clients.d.ts.map +1 -1
  3. package/dist/browser/Clients.js +72 -0
  4. package/dist/browser/Clients.js.map +1 -1
  5. package/dist/browser/FileSASSignatureValues.d.ts +18 -17
  6. package/dist/browser/FileSASSignatureValues.d.ts.map +1 -1
  7. package/dist/browser/FileSASSignatureValues.js +82 -4
  8. package/dist/browser/FileSASSignatureValues.js.map +1 -1
  9. package/dist/browser/SASQueryParameters.d.ts +38 -1
  10. package/dist/browser/SASQueryParameters.d.ts.map +1 -1
  11. package/dist/browser/SASQueryParameters.js +74 -1
  12. package/dist/browser/SASQueryParameters.js.map +1 -1
  13. package/dist/browser/ShareServiceClient.d.ts +23 -1
  14. package/dist/browser/ShareServiceClient.d.ts.map +1 -1
  15. package/dist/browser/ShareServiceClient.js +41 -1
  16. package/dist/browser/ShareServiceClient.js.map +1 -1
  17. package/dist/browser/generated/src/models/index.d.ts +115 -18
  18. package/dist/browser/generated/src/models/index.d.ts.map +1 -1
  19. package/dist/browser/generated/src/models/index.js +8 -0
  20. package/dist/browser/generated/src/models/index.js.map +1 -1
  21. package/dist/browser/generated/src/models/mappers.d.ts +7 -0
  22. package/dist/browser/generated/src/models/mappers.d.ts.map +1 -1
  23. package/dist/browser/generated/src/models/mappers.js +222 -0
  24. package/dist/browser/generated/src/models/mappers.js.map +1 -1
  25. package/dist/browser/generated/src/models/parameters.d.ts +21 -17
  26. package/dist/browser/generated/src/models/parameters.d.ts.map +1 -1
  27. package/dist/browser/generated/src/models/parameters.js +103 -68
  28. package/dist/browser/generated/src/models/parameters.js.map +1 -1
  29. package/dist/browser/generated/src/operations/directory.js +5 -4
  30. package/dist/browser/generated/src/operations/directory.js.map +1 -1
  31. package/dist/browser/generated/src/operations/file.js +28 -21
  32. package/dist/browser/generated/src/operations/file.js.map +1 -1
  33. package/dist/browser/generated/src/operations/service.d.ts +8 -1
  34. package/dist/browser/generated/src/operations/service.d.ts.map +1 -1
  35. package/dist/browser/generated/src/operations/service.js +40 -0
  36. package/dist/browser/generated/src/operations/service.js.map +1 -1
  37. package/dist/browser/generated/src/operations/share.js +16 -16
  38. package/dist/browser/generated/src/operations/share.js.map +1 -1
  39. package/dist/browser/generated/src/operationsInterfaces/service.d.ts +8 -1
  40. package/dist/browser/generated/src/operationsInterfaces/service.d.ts.map +1 -1
  41. package/dist/browser/generated/src/operationsInterfaces/service.js.map +1 -1
  42. package/dist/browser/generated/src/storageClient.js +2 -2
  43. package/dist/browser/generated/src/storageClient.js.map +1 -1
  44. package/dist/browser/generatedModels.d.ts +7 -2
  45. package/dist/browser/generatedModels.d.ts.map +1 -1
  46. package/dist/browser/generatedModels.js.map +1 -1
  47. package/dist/browser/index-browser.d.mts.map +1 -1
  48. package/dist/browser/index-browser.mjs.map +1 -1
  49. package/dist/browser/index.d.ts +1 -1
  50. package/dist/browser/utils/constants.d.ts.map +1 -1
  51. package/dist/browser/utils/constants.js +2 -2
  52. package/dist/browser/utils/constants.js.map +1 -1
  53. package/dist/commonjs/Clients.d.ts +52 -2
  54. package/dist/commonjs/Clients.d.ts.map +1 -1
  55. package/dist/commonjs/Clients.js +72 -0
  56. package/dist/commonjs/Clients.js.map +1 -1
  57. package/dist/commonjs/FileSASSignatureValues.d.ts +18 -17
  58. package/dist/commonjs/FileSASSignatureValues.d.ts.map +1 -1
  59. package/dist/commonjs/FileSASSignatureValues.js +84 -4
  60. package/dist/commonjs/FileSASSignatureValues.js.map +1 -1
  61. package/dist/commonjs/SASQueryParameters.d.ts +38 -1
  62. package/dist/commonjs/SASQueryParameters.d.ts.map +1 -1
  63. package/dist/commonjs/SASQueryParameters.js +74 -1
  64. package/dist/commonjs/SASQueryParameters.js.map +1 -1
  65. package/dist/commonjs/ShareServiceClient.d.ts +23 -1
  66. package/dist/commonjs/ShareServiceClient.d.ts.map +1 -1
  67. package/dist/commonjs/ShareServiceClient.js +40 -0
  68. package/dist/commonjs/ShareServiceClient.js.map +1 -1
  69. package/dist/commonjs/generated/src/models/index.d.ts +115 -18
  70. package/dist/commonjs/generated/src/models/index.d.ts.map +1 -1
  71. package/dist/commonjs/generated/src/models/index.js +9 -1
  72. package/dist/commonjs/generated/src/models/index.js.map +1 -1
  73. package/dist/commonjs/generated/src/models/mappers.d.ts +7 -0
  74. package/dist/commonjs/generated/src/models/mappers.d.ts.map +1 -1
  75. package/dist/commonjs/generated/src/models/mappers.js +225 -3
  76. package/dist/commonjs/generated/src/models/mappers.js.map +1 -1
  77. package/dist/commonjs/generated/src/models/parameters.d.ts +21 -17
  78. package/dist/commonjs/generated/src/models/parameters.d.ts.map +1 -1
  79. package/dist/commonjs/generated/src/models/parameters.js +105 -70
  80. package/dist/commonjs/generated/src/models/parameters.js.map +1 -1
  81. package/dist/commonjs/generated/src/operations/directory.js +5 -4
  82. package/dist/commonjs/generated/src/operations/directory.js.map +1 -1
  83. package/dist/commonjs/generated/src/operations/file.js +28 -21
  84. package/dist/commonjs/generated/src/operations/file.js.map +1 -1
  85. package/dist/commonjs/generated/src/operations/service.d.ts +8 -1
  86. package/dist/commonjs/generated/src/operations/service.d.ts.map +1 -1
  87. package/dist/commonjs/generated/src/operations/service.js +40 -0
  88. package/dist/commonjs/generated/src/operations/service.js.map +1 -1
  89. package/dist/commonjs/generated/src/operations/share.js +16 -16
  90. package/dist/commonjs/generated/src/operations/share.js.map +1 -1
  91. package/dist/commonjs/generated/src/operationsInterfaces/service.d.ts +8 -1
  92. package/dist/commonjs/generated/src/operationsInterfaces/service.d.ts.map +1 -1
  93. package/dist/commonjs/generated/src/operationsInterfaces/service.js.map +1 -1
  94. package/dist/commonjs/generated/src/storageClient.js +2 -2
  95. package/dist/commonjs/generated/src/storageClient.js.map +1 -1
  96. package/dist/commonjs/generatedModels.d.ts +7 -2
  97. package/dist/commonjs/generatedModels.d.ts.map +1 -1
  98. package/dist/commonjs/generatedModels.js.map +1 -1
  99. package/dist/commonjs/index.d.ts +1 -1
  100. package/dist/commonjs/index.d.ts.map +1 -1
  101. package/dist/commonjs/index.js.map +1 -1
  102. package/dist/commonjs/tsdoc-metadata.json +1 -1
  103. package/dist/commonjs/utils/constants.d.ts.map +1 -1
  104. package/dist/commonjs/utils/constants.js +2 -2
  105. package/dist/commonjs/utils/constants.js.map +1 -1
  106. package/dist/esm/Clients.d.ts +52 -2
  107. package/dist/esm/Clients.d.ts.map +1 -1
  108. package/dist/esm/Clients.js +72 -0
  109. package/dist/esm/Clients.js.map +1 -1
  110. package/dist/esm/FileSASSignatureValues.d.ts +18 -17
  111. package/dist/esm/FileSASSignatureValues.d.ts.map +1 -1
  112. package/dist/esm/FileSASSignatureValues.js +82 -4
  113. package/dist/esm/FileSASSignatureValues.js.map +1 -1
  114. package/dist/esm/SASQueryParameters.d.ts +38 -1
  115. package/dist/esm/SASQueryParameters.d.ts.map +1 -1
  116. package/dist/esm/SASQueryParameters.js +74 -1
  117. package/dist/esm/SASQueryParameters.js.map +1 -1
  118. package/dist/esm/ShareServiceClient.d.ts +23 -1
  119. package/dist/esm/ShareServiceClient.d.ts.map +1 -1
  120. package/dist/esm/ShareServiceClient.js +41 -1
  121. package/dist/esm/ShareServiceClient.js.map +1 -1
  122. package/dist/esm/generated/src/models/index.d.ts +115 -18
  123. package/dist/esm/generated/src/models/index.d.ts.map +1 -1
  124. package/dist/esm/generated/src/models/index.js +8 -0
  125. package/dist/esm/generated/src/models/index.js.map +1 -1
  126. package/dist/esm/generated/src/models/mappers.d.ts +7 -0
  127. package/dist/esm/generated/src/models/mappers.d.ts.map +1 -1
  128. package/dist/esm/generated/src/models/mappers.js +222 -0
  129. package/dist/esm/generated/src/models/mappers.js.map +1 -1
  130. package/dist/esm/generated/src/models/parameters.d.ts +21 -17
  131. package/dist/esm/generated/src/models/parameters.d.ts.map +1 -1
  132. package/dist/esm/generated/src/models/parameters.js +103 -68
  133. package/dist/esm/generated/src/models/parameters.js.map +1 -1
  134. package/dist/esm/generated/src/operations/directory.js +5 -4
  135. package/dist/esm/generated/src/operations/directory.js.map +1 -1
  136. package/dist/esm/generated/src/operations/file.js +28 -21
  137. package/dist/esm/generated/src/operations/file.js.map +1 -1
  138. package/dist/esm/generated/src/operations/service.d.ts +8 -1
  139. package/dist/esm/generated/src/operations/service.d.ts.map +1 -1
  140. package/dist/esm/generated/src/operations/service.js +40 -0
  141. package/dist/esm/generated/src/operations/service.js.map +1 -1
  142. package/dist/esm/generated/src/operations/share.js +16 -16
  143. package/dist/esm/generated/src/operations/share.js.map +1 -1
  144. package/dist/esm/generated/src/operationsInterfaces/service.d.ts +8 -1
  145. package/dist/esm/generated/src/operationsInterfaces/service.d.ts.map +1 -1
  146. package/dist/esm/generated/src/operationsInterfaces/service.js.map +1 -1
  147. package/dist/esm/generated/src/storageClient.js +2 -2
  148. package/dist/esm/generated/src/storageClient.js.map +1 -1
  149. package/dist/esm/generatedModels.d.ts +7 -2
  150. package/dist/esm/generatedModels.d.ts.map +1 -1
  151. package/dist/esm/generatedModels.js.map +1 -1
  152. package/dist/esm/index.d.ts +1 -1
  153. package/dist/esm/index.d.ts.map +1 -1
  154. package/dist/esm/index.js.map +1 -1
  155. package/dist/esm/utils/constants.d.ts.map +1 -1
  156. package/dist/esm/utils/constants.js +2 -2
  157. package/dist/esm/utils/constants.js.map +1 -1
  158. package/dist/react-native/Clients.d.ts +52 -2
  159. package/dist/react-native/Clients.d.ts.map +1 -1
  160. package/dist/react-native/Clients.js +72 -0
  161. package/dist/react-native/Clients.js.map +1 -1
  162. package/dist/react-native/FileSASSignatureValues.d.ts +18 -17
  163. package/dist/react-native/FileSASSignatureValues.d.ts.map +1 -1
  164. package/dist/react-native/FileSASSignatureValues.js +82 -4
  165. package/dist/react-native/FileSASSignatureValues.js.map +1 -1
  166. package/dist/react-native/SASQueryParameters.d.ts +38 -1
  167. package/dist/react-native/SASQueryParameters.d.ts.map +1 -1
  168. package/dist/react-native/SASQueryParameters.js +74 -1
  169. package/dist/react-native/SASQueryParameters.js.map +1 -1
  170. package/dist/react-native/ShareServiceClient.d.ts +23 -1
  171. package/dist/react-native/ShareServiceClient.d.ts.map +1 -1
  172. package/dist/react-native/ShareServiceClient.js +41 -1
  173. package/dist/react-native/ShareServiceClient.js.map +1 -1
  174. package/dist/react-native/generated/src/models/index.d.ts +115 -18
  175. package/dist/react-native/generated/src/models/index.d.ts.map +1 -1
  176. package/dist/react-native/generated/src/models/index.js +8 -0
  177. package/dist/react-native/generated/src/models/index.js.map +1 -1
  178. package/dist/react-native/generated/src/models/mappers.d.ts +7 -0
  179. package/dist/react-native/generated/src/models/mappers.d.ts.map +1 -1
  180. package/dist/react-native/generated/src/models/mappers.js +222 -0
  181. package/dist/react-native/generated/src/models/mappers.js.map +1 -1
  182. package/dist/react-native/generated/src/models/parameters.d.ts +21 -17
  183. package/dist/react-native/generated/src/models/parameters.d.ts.map +1 -1
  184. package/dist/react-native/generated/src/models/parameters.js +103 -68
  185. package/dist/react-native/generated/src/models/parameters.js.map +1 -1
  186. package/dist/react-native/generated/src/operations/directory.js +5 -4
  187. package/dist/react-native/generated/src/operations/directory.js.map +1 -1
  188. package/dist/react-native/generated/src/operations/file.js +28 -21
  189. package/dist/react-native/generated/src/operations/file.js.map +1 -1
  190. package/dist/react-native/generated/src/operations/service.d.ts +8 -1
  191. package/dist/react-native/generated/src/operations/service.d.ts.map +1 -1
  192. package/dist/react-native/generated/src/operations/service.js +40 -0
  193. package/dist/react-native/generated/src/operations/service.js.map +1 -1
  194. package/dist/react-native/generated/src/operations/share.js +16 -16
  195. package/dist/react-native/generated/src/operations/share.js.map +1 -1
  196. package/dist/react-native/generated/src/operationsInterfaces/service.d.ts +8 -1
  197. package/dist/react-native/generated/src/operationsInterfaces/service.d.ts.map +1 -1
  198. package/dist/react-native/generated/src/operationsInterfaces/service.js.map +1 -1
  199. package/dist/react-native/generated/src/storageClient.js +2 -2
  200. package/dist/react-native/generated/src/storageClient.js.map +1 -1
  201. package/dist/react-native/generatedModels.d.ts +7 -2
  202. package/dist/react-native/generatedModels.d.ts.map +1 -1
  203. package/dist/react-native/generatedModels.js.map +1 -1
  204. package/dist/react-native/index.d.ts +1 -1
  205. package/dist/react-native/index.d.ts.map +1 -1
  206. package/dist/react-native/index.js.map +1 -1
  207. package/dist/react-native/utils/constants.d.ts.map +1 -1
  208. package/dist/react-native/utils/constants.js +2 -2
  209. package/dist/react-native/utils/constants.js.map +1 -1
  210. package/package.json +27 -26
@@ -1,9 +1,10 @@
1
- import type { StorageSharedKeyCredential } from "@azure/storage-common";
1
+ import { StorageSharedKeyCredential, UserDelegationKey } from "@azure/storage-common";
2
2
  import { FileSASPermissions } from "./FileSASPermissions.js";
3
3
  import type { SasIPRange } from "./SasIPRange.js";
4
4
  import type { SASProtocol } from "./SASQueryParameters.js";
5
5
  import { SASQueryParameters } from "./SASQueryParameters.js";
6
6
  import { ShareSASPermissions } from "./ShareSASPermissions.js";
7
+ import { UserDelegationKeyCredential } from "@azure/storage-common";
7
8
  /**
8
9
  * ONLY AVAILABLE IN NODE.JS RUNTIME.
9
10
  *
@@ -51,6 +52,12 @@ export interface FileSASSignatureValues {
51
52
  * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy
52
53
  */
53
54
  identifier?: string;
55
+ /**
56
+ * Optional. Beginning in version 2025-07-05, this value specifies the Entra ID of the user who is authorized to
57
+ * use the resulting SAS URL. The resulting SAS URL must be used in conjunction with an Entra ID token that has been
58
+ * issued to the user specified in this value.
59
+ */
60
+ delegatedUserObjectId?: string;
54
61
  /**
55
62
  * Optional. The cache-control header for the SAS.
56
63
  */
@@ -72,23 +79,17 @@ export interface FileSASSignatureValues {
72
79
  */
73
80
  contentType?: string;
74
81
  }
75
- /**
76
- * ONLY AVAILABLE IN NODE.JS RUNTIME.
77
- *
78
- * Creates an instance of SASQueryParameters.
79
- *
80
- * Only accepts required settings needed to create a SAS. For optional settings please
81
- * set corresponding properties directly, such as permissions, startsOn and identifier.
82
- *
83
- * WARNING: When identifier is not provided, permissions and expiresOn are required.
84
- * You MUST assign value to identifier or expiresOn & permissions manually if you initial with
85
- * this constructor.
86
- *
87
- * @param fileSASSignatureValues -
88
- * @param sharedKeyCredential -
89
- */
82
+ export declare function generateFileSASQueryParameters(fileSASSignatureValues: FileSASSignatureValues, userDelegationKey: UserDelegationKey, accountName: string): SASQueryParameters;
90
83
  export declare function generateFileSASQueryParameters(fileSASSignatureValues: FileSASSignatureValues, sharedKeyCredential: StorageSharedKeyCredential): SASQueryParameters;
91
- export declare function generateFileSASQueryParametersInternal(fileSASSignatureValues: FileSASSignatureValues, sharedKeyCredential: StorageSharedKeyCredential): {
84
+ export declare function generateFileSASQueryParametersInternal(fileSASSignatureValues: FileSASSignatureValues, sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey, accountName?: string): {
85
+ sasQueryParameters: SASQueryParameters;
86
+ stringToSign: string;
87
+ };
88
+ export declare function generateFileSASQueryParametersDefault(fileSASSignatureValues: FileSASSignatureValues, sharedKeyCredential: StorageSharedKeyCredential): {
89
+ sasQueryParameters: SASQueryParameters;
90
+ stringToSign: string;
91
+ };
92
+ export declare function generateFileSASQueryParametersUDK20250705(fileSASSignatureValues: FileSASSignatureValues, userDelegationKeyCredential: UserDelegationKeyCredential, accountName: string): {
92
93
  sasQueryParameters: SASQueryParameters;
93
94
  stringToSign: string;
94
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FileSASSignatureValues.d.ts","sourceRoot":"","sources":["../../src/FileSASSignatureValues.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D;;;;GAIG;AAEH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,CAAC;IAEvD;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,mBAAmB,EAAE,0BAA0B,GAC9C,kBAAkB,CAGpB;AAED,wBAAgB,sCAAsC,CACpD,sBAAsB,EAAE,sBAAsB,EAC9C,mBAAmB,EAAE,0BAA0B,GAC9C;IAAE,kBAAkB,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA8ElE"}
1
+ {"version":3,"file":"FileSASSignatureValues.d.ts","sourceRoot":"","sources":["../../src/FileSASSignatureValues.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEpE;;;;GAIG;AAEH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,CAAC;IAEvD;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IAErB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,8BAA8B,CAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,MAAM,GAClB,kBAAkB,CAAC;AAEtB,wBAAgB,8BAA8B,CAC5C,sBAAsB,EAAE,sBAAsB,EAC9C,mBAAmB,EAAE,0BAA0B,GAC9C,kBAAkB,CAAC;AA8BtB,wBAAgB,sCAAsC,CACpD,sBAAsB,EAAE,sBAAsB,EAC9C,sCAAsC,EAAE,0BAA0B,GAAG,iBAAiB,EACtF,WAAW,CAAC,EAAE,MAAM,GACnB;IAAE,kBAAkB,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA+BlE;AAED,wBAAgB,qCAAqC,CACnD,sBAAsB,EAAE,sBAAsB,EAC9C,mBAAmB,EAAE,0BAA0B,GAC9C;IAAE,kBAAkB,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CA8ElE;AAED,wBAAgB,yCAAyC,CACvD,sBAAsB,EAAE,sBAAsB,EAC9C,2BAA2B,EAAE,2BAA2B,EACxD,WAAW,EAAE,MAAM,GAClB;IAAE,kBAAkB,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAwFlE"}
@@ -4,12 +4,16 @@
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.generateFileSASQueryParameters = generateFileSASQueryParameters;
6
6
  exports.generateFileSASQueryParametersInternal = generateFileSASQueryParametersInternal;
7
+ exports.generateFileSASQueryParametersDefault = generateFileSASQueryParametersDefault;
8
+ exports.generateFileSASQueryParametersUDK20250705 = generateFileSASQueryParametersUDK20250705;
9
+ const storage_common_1 = require("@azure/storage-common");
7
10
  const FileSASPermissions_js_1 = require("./FileSASPermissions.js");
8
11
  const SasIPRange_js_1 = require("./SasIPRange.js");
9
12
  const SASQueryParameters_js_1 = require("./SASQueryParameters.js");
10
13
  const ShareSASPermissions_js_1 = require("./ShareSASPermissions.js");
11
14
  const constants_js_1 = require("./utils/constants.js");
12
15
  const utils_common_js_1 = require("./utils/utils.common.js");
16
+ const storage_common_2 = require("@azure/storage-common");
13
17
  /**
14
18
  * ONLY AVAILABLE IN NODE.JS RUNTIME.
15
19
  *
@@ -25,11 +29,31 @@ const utils_common_js_1 = require("./utils/utils.common.js");
25
29
  * @param fileSASSignatureValues -
26
30
  * @param sharedKeyCredential -
27
31
  */
28
- function generateFileSASQueryParameters(fileSASSignatureValues, sharedKeyCredential) {
29
- return generateFileSASQueryParametersInternal(fileSASSignatureValues, sharedKeyCredential)
30
- .sasQueryParameters;
32
+ function generateFileSASQueryParameters(fileSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
33
+ return generateFileSASQueryParametersInternal(fileSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName).sasQueryParameters;
31
34
  }
32
- function generateFileSASQueryParametersInternal(fileSASSignatureValues, sharedKeyCredential) {
35
+ function generateFileSASQueryParametersInternal(fileSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
36
+ const version = fileSASSignatureValues.version ? fileSASSignatureValues.version : constants_js_1.SERVICE_VERSION;
37
+ const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof storage_common_1.StorageSharedKeyCredential
38
+ ? sharedKeyCredentialOrUserDelegationKey
39
+ : undefined;
40
+ let userDelegationKeyCredential;
41
+ if (sharedKeyCredential === undefined && accountName !== undefined) {
42
+ userDelegationKeyCredential = new storage_common_2.UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
43
+ }
44
+ if (sharedKeyCredential !== undefined) {
45
+ return generateFileSASQueryParametersDefault(fileSASSignatureValues, sharedKeyCredential);
46
+ }
47
+ else {
48
+ if (version >= "2025-07-05") {
49
+ return generateFileSASQueryParametersUDK20250705(fileSASSignatureValues, userDelegationKeyCredential, accountName);
50
+ }
51
+ else {
52
+ throw new RangeError("'version' must be >= '2025-07-05' when generating user delegation SAS using user delegation key.");
53
+ }
54
+ }
55
+ }
56
+ function generateFileSASQueryParametersDefault(fileSASSignatureValues, sharedKeyCredential) {
33
57
  if (!fileSASSignatureValues.identifier &&
34
58
  !(fileSASSignatureValues.permissions && fileSASSignatureValues.expiresOn)) {
35
59
  throw new RangeError("Must provide 'permissions' and 'expiresOn' for File SAS generation when 'identifier' is not provided.");
@@ -75,6 +99,62 @@ function generateFileSASQueryParametersInternal(fileSASSignatureValues, sharedKe
75
99
  stringToSign: stringToSign,
76
100
  };
77
101
  }
102
+ function generateFileSASQueryParametersUDK20250705(fileSASSignatureValues, userDelegationKeyCredential, accountName) {
103
+ if (!(fileSASSignatureValues.permissions && fileSASSignatureValues.expiresOn)) {
104
+ throw new RangeError("Must provide 'permissions' and 'expiresOn' for File SAS generation when generating user delegation SAS.");
105
+ }
106
+ const version = fileSASSignatureValues.version ? fileSASSignatureValues.version : constants_js_1.SERVICE_VERSION;
107
+ let resource = "s";
108
+ if (fileSASSignatureValues.filePath) {
109
+ resource = "f";
110
+ }
111
+ let verifiedPermissions;
112
+ // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
113
+ if (fileSASSignatureValues.permissions) {
114
+ if (fileSASSignatureValues.filePath) {
115
+ verifiedPermissions = FileSASPermissions_js_1.FileSASPermissions.parse(fileSASSignatureValues.permissions.toString()).toString();
116
+ }
117
+ else {
118
+ verifiedPermissions = ShareSASPermissions_js_1.ShareSASPermissions.parse(fileSASSignatureValues.permissions.toString()).toString();
119
+ }
120
+ }
121
+ // Signature is generated on the un-url-encoded values.
122
+ const stringToSign = [
123
+ verifiedPermissions,
124
+ fileSASSignatureValues.startsOn
125
+ ? (0, utils_common_js_1.truncatedISO8061Date)(fileSASSignatureValues.startsOn, false)
126
+ : "",
127
+ fileSASSignatureValues.expiresOn
128
+ ? (0, utils_common_js_1.truncatedISO8061Date)(fileSASSignatureValues.expiresOn, false)
129
+ : "",
130
+ getCanonicalName(accountName, fileSASSignatureValues.shareName, fileSASSignatureValues.filePath),
131
+ userDelegationKeyCredential.userDelegationKey.signedObjectId,
132
+ userDelegationKeyCredential.userDelegationKey.signedTenantId,
133
+ userDelegationKeyCredential.userDelegationKey.signedStartsOn
134
+ ? (0, utils_common_js_1.truncatedISO8061Date)(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)
135
+ : "",
136
+ userDelegationKeyCredential.userDelegationKey.signedExpiresOn
137
+ ? (0, utils_common_js_1.truncatedISO8061Date)(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)
138
+ : "",
139
+ userDelegationKeyCredential.userDelegationKey.signedService,
140
+ userDelegationKeyCredential.userDelegationKey.signedVersion,
141
+ undefined, // shared key delegation signed tenant id.
142
+ fileSASSignatureValues.delegatedUserObjectId,
143
+ fileSASSignatureValues.ipRange ? (0, SasIPRange_js_1.ipRangeToString)(fileSASSignatureValues.ipRange) : "",
144
+ fileSASSignatureValues.protocol,
145
+ version,
146
+ fileSASSignatureValues.cacheControl,
147
+ fileSASSignatureValues.contentDisposition,
148
+ fileSASSignatureValues.contentEncoding,
149
+ fileSASSignatureValues.contentLanguage,
150
+ fileSASSignatureValues.contentType,
151
+ ].join("\n");
152
+ const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
153
+ return {
154
+ sasQueryParameters: new SASQueryParameters_js_1.SASQueryParameters(version, signature, verifiedPermissions, undefined, undefined, fileSASSignatureValues.protocol, fileSASSignatureValues.startsOn, fileSASSignatureValues.expiresOn, fileSASSignatureValues.ipRange, fileSASSignatureValues.identifier, resource, fileSASSignatureValues.cacheControl, fileSASSignatureValues.contentDisposition, fileSASSignatureValues.contentEncoding, fileSASSignatureValues.contentLanguage, fileSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, fileSASSignatureValues.delegatedUserObjectId),
155
+ stringToSign: stringToSign,
156
+ };
157
+ }
78
158
  function getCanonicalName(accountName, shareName, filePath) {
79
159
  // Share: "/file/account/sharename"
80
160
  // File: "/file/account/sharename/filename"
@@ -1 +1 @@
1
- {"version":3,"file":"FileSASSignatureValues.js","sourceRoot":"","sources":["../../src/FileSASSignatureValues.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { StorageSharedKeyCredential } from \"@azure/storage-common\";\nimport { FileSASPermissions } from \"./FileSASPermissions.js\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { ShareSASPermissions } from \"./ShareSASPermissions.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 * FileSASSignatureValues is used to help generating File service SAS tokens for shares or files.\n */\n\nexport interface FileSASSignatureValues {\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 ShareSASPermissions} or {@link FileSASPermissions} depending on the resource\n * being accessed for help constructing the permissions string.\n */\n permissions?: FileSASPermissions | ShareSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the share the SAS user may access.\n */\n shareName: string;\n\n /**\n * Optional. The path of the file like, \"directory/FileName\" or \"FileName\".\n */\n filePath?: string;\n\n /**\n * Optional. The name of the access policy on the share 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. 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/**\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 fileSASSignatureValues -\n * @param sharedKeyCredential -\n */\nexport function generateFileSASQueryParameters(\n fileSASSignatureValues: FileSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters {\n return generateFileSASQueryParametersInternal(fileSASSignatureValues, sharedKeyCredential)\n .sasQueryParameters;\n}\n\nexport function generateFileSASQueryParametersInternal(\n fileSASSignatureValues: FileSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n if (\n !fileSASSignatureValues.identifier &&\n !(fileSASSignatureValues.permissions && fileSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for File SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = fileSASSignatureValues.version ? fileSASSignatureValues.version : SERVICE_VERSION;\n let resource: string = \"s\";\n if (fileSASSignatureValues.filePath) {\n resource = \"f\";\n }\n\n let verifiedPermissions: string | undefined;\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n if (fileSASSignatureValues.permissions) {\n if (fileSASSignatureValues.filePath) {\n verifiedPermissions = FileSASPermissions.parse(\n fileSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ShareSASPermissions.parse(\n fileSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions,\n fileSASSignatureValues.startsOn\n ? truncatedISO8061Date(fileSASSignatureValues.startsOn, false)\n : \"\",\n fileSASSignatureValues.expiresOn\n ? truncatedISO8061Date(fileSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n fileSASSignatureValues.shareName,\n fileSASSignatureValues.filePath,\n ),\n fileSASSignatureValues.identifier,\n fileSASSignatureValues.ipRange ? ipRangeToString(fileSASSignatureValues.ipRange) : \"\",\n fileSASSignatureValues.protocol,\n version,\n fileSASSignatureValues.cacheControl,\n fileSASSignatureValues.contentDisposition,\n fileSASSignatureValues.contentEncoding,\n fileSASSignatureValues.contentLanguage,\n fileSASSignatureValues.contentType,\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 fileSASSignatureValues.protocol,\n fileSASSignatureValues.startsOn,\n fileSASSignatureValues.expiresOn,\n fileSASSignatureValues.ipRange,\n fileSASSignatureValues.identifier,\n resource,\n fileSASSignatureValues.cacheControl,\n fileSASSignatureValues.contentDisposition,\n fileSASSignatureValues.contentEncoding,\n fileSASSignatureValues.contentLanguage,\n fileSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction getCanonicalName(accountName: string, shareName: string, filePath?: string): string {\n // Share: \"/file/account/sharename\"\n // File: \"/file/account/sharename/filename\"\n // File: \"/file/account/sharename/directoryname/filename\"\n const elements: string[] = [`/file/${accountName}/${shareName}`];\n if (filePath) {\n elements.push(`/${filePath}`);\n }\n return elements.join(\"\");\n}\n"]}
1
+ {"version":3,"file":"FileSASSignatureValues.js","sourceRoot":"","sources":["../../src/FileSASSignatureValues.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { StorageSharedKeyCredential, UserDelegationKey } from \"@azure/storage-common\";\nimport { FileSASPermissions } from \"./FileSASPermissions.js\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport type { SASProtocol } from \"./SASQueryParameters.js\";\nimport { SASQueryParameters } from \"./SASQueryParameters.js\";\nimport { ShareSASPermissions } from \"./ShareSASPermissions.js\";\nimport { SERVICE_VERSION } from \"./utils/constants.js\";\nimport { truncatedISO8061Date } from \"./utils/utils.common.js\";\nimport { UserDelegationKeyCredential } from \"@azure/storage-common\";\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * FileSASSignatureValues is used to help generating File service SAS tokens for shares or files.\n */\n\nexport interface FileSASSignatureValues {\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 ShareSASPermissions} or {@link FileSASPermissions} depending on the resource\n * being accessed for help constructing the permissions string.\n */\n permissions?: FileSASPermissions | ShareSASPermissions;\n\n /**\n * Optional. IP ranges allowed in this SAS.\n */\n ipRange?: SasIPRange;\n\n /**\n * The name of the share the SAS user may access.\n */\n shareName: string;\n\n /**\n * Optional. The path of the file like, \"directory/FileName\" or \"FileName\".\n */\n filePath?: string;\n\n /**\n * Optional. The name of the access policy on the share 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 * 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\nexport function generateFileSASQueryParameters(\n fileSASSignatureValues: FileSASSignatureValues,\n userDelegationKey: UserDelegationKey,\n accountName: string,\n): SASQueryParameters;\n\nexport function generateFileSASQueryParameters(\n fileSASSignatureValues: FileSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): SASQueryParameters;\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 fileSASSignatureValues -\n * @param sharedKeyCredential -\n */\n\nexport function generateFileSASQueryParameters(\n fileSASSignatureValues: FileSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): SASQueryParameters {\n return generateFileSASQueryParametersInternal(\n fileSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey,\n accountName,\n ).sasQueryParameters;\n}\n\nexport function generateFileSASQueryParametersInternal(\n fileSASSignatureValues: FileSASSignatureValues,\n sharedKeyCredentialOrUserDelegationKey: StorageSharedKeyCredential | UserDelegationKey,\n accountName?: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n const version = fileSASSignatureValues.version ? fileSASSignatureValues.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) {\n return generateFileSASQueryParametersDefault(fileSASSignatureValues, sharedKeyCredential!);\n } else {\n if (version >= \"2025-07-05\") {\n return generateFileSASQueryParametersUDK20250705(\n fileSASSignatureValues,\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\nexport function generateFileSASQueryParametersDefault(\n fileSASSignatureValues: FileSASSignatureValues,\n sharedKeyCredential: StorageSharedKeyCredential,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n if (\n !fileSASSignatureValues.identifier &&\n !(fileSASSignatureValues.permissions && fileSASSignatureValues.expiresOn)\n ) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for File SAS generation when 'identifier' is not provided.\",\n );\n }\n\n const version = fileSASSignatureValues.version ? fileSASSignatureValues.version : SERVICE_VERSION;\n let resource: string = \"s\";\n if (fileSASSignatureValues.filePath) {\n resource = \"f\";\n }\n\n let verifiedPermissions: string | undefined;\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n if (fileSASSignatureValues.permissions) {\n if (fileSASSignatureValues.filePath) {\n verifiedPermissions = FileSASPermissions.parse(\n fileSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ShareSASPermissions.parse(\n fileSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions,\n fileSASSignatureValues.startsOn\n ? truncatedISO8061Date(fileSASSignatureValues.startsOn, false)\n : \"\",\n fileSASSignatureValues.expiresOn\n ? truncatedISO8061Date(fileSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n sharedKeyCredential.accountName,\n fileSASSignatureValues.shareName,\n fileSASSignatureValues.filePath,\n ),\n fileSASSignatureValues.identifier,\n fileSASSignatureValues.ipRange ? ipRangeToString(fileSASSignatureValues.ipRange) : \"\",\n fileSASSignatureValues.protocol,\n version,\n fileSASSignatureValues.cacheControl,\n fileSASSignatureValues.contentDisposition,\n fileSASSignatureValues.contentEncoding,\n fileSASSignatureValues.contentLanguage,\n fileSASSignatureValues.contentType,\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 fileSASSignatureValues.protocol,\n fileSASSignatureValues.startsOn,\n fileSASSignatureValues.expiresOn,\n fileSASSignatureValues.ipRange,\n fileSASSignatureValues.identifier,\n resource,\n fileSASSignatureValues.cacheControl,\n fileSASSignatureValues.contentDisposition,\n fileSASSignatureValues.contentEncoding,\n fileSASSignatureValues.contentLanguage,\n fileSASSignatureValues.contentType,\n ),\n stringToSign: stringToSign,\n };\n}\n\nexport function generateFileSASQueryParametersUDK20250705(\n fileSASSignatureValues: FileSASSignatureValues,\n userDelegationKeyCredential: UserDelegationKeyCredential,\n accountName: string,\n): { sasQueryParameters: SASQueryParameters; stringToSign: string } {\n if (!(fileSASSignatureValues.permissions && fileSASSignatureValues.expiresOn)) {\n throw new RangeError(\n \"Must provide 'permissions' and 'expiresOn' for File SAS generation when generating user delegation SAS.\",\n );\n }\n\n const version = fileSASSignatureValues.version ? fileSASSignatureValues.version : SERVICE_VERSION;\n let resource: string = \"s\";\n if (fileSASSignatureValues.filePath) {\n resource = \"f\";\n }\n\n let verifiedPermissions: string | undefined;\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n if (fileSASSignatureValues.permissions) {\n if (fileSASSignatureValues.filePath) {\n verifiedPermissions = FileSASPermissions.parse(\n fileSASSignatureValues.permissions.toString(),\n ).toString();\n } else {\n verifiedPermissions = ShareSASPermissions.parse(\n fileSASSignatureValues.permissions.toString(),\n ).toString();\n }\n }\n\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions,\n fileSASSignatureValues.startsOn\n ? truncatedISO8061Date(fileSASSignatureValues.startsOn, false)\n : \"\",\n fileSASSignatureValues.expiresOn\n ? truncatedISO8061Date(fileSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(\n accountName,\n fileSASSignatureValues.shareName,\n fileSASSignatureValues.filePath,\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 undefined, // shared key delegation signed tenant id.\n fileSASSignatureValues.delegatedUserObjectId,\n fileSASSignatureValues.ipRange ? ipRangeToString(fileSASSignatureValues.ipRange) : \"\",\n fileSASSignatureValues.protocol,\n version,\n fileSASSignatureValues.cacheControl,\n fileSASSignatureValues.contentDisposition,\n fileSASSignatureValues.contentEncoding,\n fileSASSignatureValues.contentLanguage,\n fileSASSignatureValues.contentType,\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 fileSASSignatureValues.protocol,\n fileSASSignatureValues.startsOn,\n fileSASSignatureValues.expiresOn,\n fileSASSignatureValues.ipRange,\n fileSASSignatureValues.identifier,\n resource,\n fileSASSignatureValues.cacheControl,\n fileSASSignatureValues.contentDisposition,\n fileSASSignatureValues.contentEncoding,\n fileSASSignatureValues.contentLanguage,\n fileSASSignatureValues.contentType,\n userDelegationKeyCredential.userDelegationKey,\n fileSASSignatureValues.delegatedUserObjectId,\n ),\n stringToSign: stringToSign,\n };\n}\n\nfunction getCanonicalName(accountName: string, shareName: string, filePath?: string): string {\n // Share: \"/file/account/sharename\"\n // File: \"/file/account/sharename/filename\"\n // File: \"/file/account/sharename/directoryname/filename\"\n const elements: string[] = [`/file/${accountName}/${shareName}`];\n if (filePath) {\n elements.push(`/${filePath}`);\n }\n return elements.join(\"\");\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { UserDelegationKey } from "@azure/storage-common";
1
2
  import type { SasIPRange } from "./SasIPRange.js";
2
3
  /**
3
4
  * Protocols for generated SAS.
@@ -60,6 +61,12 @@ export declare class SASQueryParameters {
60
61
  * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy
61
62
  */
62
63
  readonly identifier?: string;
64
+ /**
65
+ * Optional. Beginning in version 2025-07-05, this value specifies the Entra ID of the user who is authorized to
66
+ * use the resulting SAS URL. The resulting SAS URL must be used in conjunction with an Entra ID token that has been
67
+ * issued to the user specified in this value.
68
+ */
69
+ readonly delegatedUserObjectId?: string;
63
70
  /**
64
71
  * Optional. The storage share or file path (only for {@link FileSASSignatureValues}).
65
72
  */
@@ -88,6 +95,36 @@ export declare class SASQueryParameters {
88
95
  * Value for content-type header in Blob/File Service SAS.
89
96
  */
90
97
  readonly contentType?: string;
98
+ /**
99
+ * The Azure Active Directory object ID in GUID format.
100
+ * Property of user delegation key.
101
+ */
102
+ private readonly signedOid?;
103
+ /**
104
+ * The Azure Active Directory tenant ID in GUID format.
105
+ * Property of user delegation key.
106
+ */
107
+ private readonly signedTenantId?;
108
+ /**
109
+ * The date-time the key is active.
110
+ * Property of user delegation key.
111
+ */
112
+ private readonly signedStartsOn?;
113
+ /**
114
+ * The date-time the key expires.
115
+ * Property of user delegation key.
116
+ */
117
+ private readonly signedExpiresOn?;
118
+ /**
119
+ * Abbreviation of the Azure Storage service that accepts the user delegation key.
120
+ * Property of user delegation key.
121
+ */
122
+ private readonly signedService?;
123
+ /**
124
+ * The service version that created the user delegation key.
125
+ * Property of user delegation key.
126
+ */
127
+ private readonly signedVersion?;
91
128
  /**
92
129
  * Inner value of getter ipRange.
93
130
  */
@@ -118,7 +155,7 @@ export declare class SASQueryParameters {
118
155
  * @param contentLanguage - Representing the content-language header (only for Blob/File Service SAS)
119
156
  * @param contentType - Representing the content-type header (only for Blob/File Service SAS)
120
157
  */
121
- constructor(version: string, signature: string, permissions?: string, services?: string, resourceTypes?: string, protocol?: SASProtocol, startsOn?: Date, expiresOn?: Date, ipRange?: SasIPRange, identifier?: string, resource?: string, cacheControl?: string, contentDisposition?: string, contentEncoding?: string, contentLanguage?: string, contentType?: string);
158
+ constructor(version: string, signature: string, permissions?: string, services?: string, resourceTypes?: string, protocol?: SASProtocol, startsOn?: Date, expiresOn?: Date, ipRange?: SasIPRange, identifier?: string, resource?: string, cacheControl?: string, contentDisposition?: string, contentEncoding?: string, contentLanguage?: string, contentType?: string, userDelegationKey?: UserDelegationKey, delegatedUserObjectId?: string);
122
159
  /**
123
160
  * Encodes all SAS query parameters into a string that can be appended to a URL.
124
161
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SASQueryParameters.d.ts","sourceRoot":"","sources":["../../src/SASQueryParameters.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD;;GAEG;AACH,oBAAY,WAAW;IACrB;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,YAAY,eAAe;CAC5B;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,SAAgB,QAAQ,CAAC,EAAE,WAAW,CAAC;IAEvC;;OAEG;IACH,SAAgB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhC;;OAEG;IACH,SAAgB,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjC;;;;OAIG;IACH,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,SAAgB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvC;;;;OAIG;IACH,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtC;;OAEG;IACH,SAAgB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5C;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzC;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzC;;OAEG;IACH,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAa;IAE3C;;;;OAIG;IACH,IAAW,OAAO,IAAI,UAAU,GAAG,SAAS,CAQ3C;IAED;;;;;;;;;;;;;;;;;;;OAmBG;gBAED,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,WAAW,EACtB,QAAQ,CAAC,EAAE,IAAI,EACf,SAAS,CAAC,EAAE,IAAI,EAChB,OAAO,CAAC,EAAE,UAAU,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EACxB,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM;IAoBtB;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAwFzB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;CAWhC"}
1
+ {"version":3,"file":"SASQueryParameters.d.ts","sourceRoot":"","sources":["../../src/SASQueryParameters.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD;;GAEG;AACH,oBAAY,WAAW;IACrB;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,YAAY,eAAe;CAC5B;AAED;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,SAAgB,QAAQ,CAAC,EAAE,WAAW,CAAC;IAEvC;;OAEG;IACH,SAAgB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAEhC;;OAEG;IACH,SAAgB,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjC;;;;OAIG;IACH,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,SAAgB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvC;;;;OAIG;IACH,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;OAIG;IACH,SAAgB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/C;;OAEG;IACH,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,SAAgB,SAAS,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtC;;OAEG;IACH,SAAgB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5C;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzC;;OAEG;IACH,SAAgB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzC;;OAEG;IACH,SAAgB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IAEpC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAS;IAEzC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAO;IAEvC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAO;IAExC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IAExC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAS;IAExC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAa;IAE3C;;;;OAIG;IACH,IAAW,OAAO,IAAI,UAAU,GAAG,SAAS,CAQ3C;IAED;;;;;;;;;;;;;;;;;;;OAmBG;gBAED,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,WAAW,EACtB,QAAQ,CAAC,EAAE,IAAI,EACf,SAAS,CAAC,EAAE,IAAI,EAChB,OAAO,CAAC,EAAE,UAAU,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EACxB,eAAe,CAAC,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,qBAAqB,CAAC,EAAE,MAAM;IA8BhC;;;OAGG;IACI,QAAQ,IAAI,MAAM;IA4HzB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;CAWhC"}
@@ -67,6 +67,12 @@ class SASQueryParameters {
67
67
  * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy
68
68
  */
69
69
  identifier;
70
+ /**
71
+ * Optional. Beginning in version 2025-07-05, this value specifies the Entra ID of the user who is authorized to
72
+ * use the resulting SAS URL. The resulting SAS URL must be used in conjunction with an Entra ID token that has been
73
+ * issued to the user specified in this value.
74
+ */
75
+ delegatedUserObjectId;
70
76
  /**
71
77
  * Optional. The storage share or file path (only for {@link FileSASSignatureValues}).
72
78
  */
@@ -95,6 +101,36 @@ class SASQueryParameters {
95
101
  * Value for content-type header in Blob/File Service SAS.
96
102
  */
97
103
  contentType;
104
+ /**
105
+ * The Azure Active Directory object ID in GUID format.
106
+ * Property of user delegation key.
107
+ */
108
+ signedOid;
109
+ /**
110
+ * The Azure Active Directory tenant ID in GUID format.
111
+ * Property of user delegation key.
112
+ */
113
+ signedTenantId;
114
+ /**
115
+ * The date-time the key is active.
116
+ * Property of user delegation key.
117
+ */
118
+ signedStartsOn;
119
+ /**
120
+ * The date-time the key expires.
121
+ * Property of user delegation key.
122
+ */
123
+ signedExpiresOn;
124
+ /**
125
+ * Abbreviation of the Azure Storage service that accepts the user delegation key.
126
+ * Property of user delegation key.
127
+ */
128
+ signedService;
129
+ /**
130
+ * The service version that created the user delegation key.
131
+ * Property of user delegation key.
132
+ */
133
+ signedVersion;
98
134
  /**
99
135
  * Inner value of getter ipRange.
100
136
  */
@@ -133,7 +169,7 @@ class SASQueryParameters {
133
169
  * @param contentLanguage - Representing the content-language header (only for Blob/File Service SAS)
134
170
  * @param contentType - Representing the content-type header (only for Blob/File Service SAS)
135
171
  */
136
- constructor(version, signature, permissions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType) {
172
+ constructor(version, signature, permissions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, delegatedUserObjectId) {
137
173
  this.version = version;
138
174
  this.services = services;
139
175
  this.resourceTypes = resourceTypes;
@@ -150,6 +186,15 @@ class SASQueryParameters {
150
186
  this.contentEncoding = contentEncoding;
151
187
  this.contentLanguage = contentLanguage;
152
188
  this.contentType = contentType;
189
+ if (userDelegationKey) {
190
+ this.signedOid = userDelegationKey.signedObjectId;
191
+ this.signedTenantId = userDelegationKey.signedTenantId;
192
+ this.signedStartsOn = userDelegationKey.signedStartsOn;
193
+ this.signedExpiresOn = userDelegationKey.signedExpiresOn;
194
+ this.signedService = userDelegationKey.signedService;
195
+ this.signedVersion = userDelegationKey.signedVersion;
196
+ this.delegatedUserObjectId = delegatedUserObjectId;
197
+ }
153
198
  }
154
199
  /**
155
200
  * Encodes all SAS query parameters into a string that can be appended to a URL.
@@ -173,6 +218,13 @@ class SASQueryParameters {
173
218
  "rsce",
174
219
  "rscl",
175
220
  "rsct",
221
+ "skoid", // Signed object ID
222
+ "sktid", // Signed tenant ID
223
+ "skt", // Signed key start time
224
+ "ske", // Signed key expiry time
225
+ "sks", // Signed key service
226
+ "skv", // Signed key version
227
+ "sduoid", // Signed key user delegation object ID
176
228
  ];
177
229
  const queries = [];
178
230
  for (const param of params) {
@@ -225,6 +277,27 @@ class SASQueryParameters {
225
277
  case "rsct":
226
278
  this.tryAppendQueryParameter(queries, param, this.contentType);
227
279
  break;
280
+ case "skoid":
281
+ this.tryAppendQueryParameter(queries, param, this.signedOid);
282
+ break;
283
+ case "sktid": // Signed tenant ID
284
+ this.tryAppendQueryParameter(queries, param, this.signedTenantId);
285
+ break;
286
+ case "skt": // Signed key start time
287
+ this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? (0, utils_common_js_1.truncatedISO8061Date)(this.signedStartsOn, false) : undefined);
288
+ break;
289
+ case "ske": // Signed key expiry time
290
+ this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? (0, utils_common_js_1.truncatedISO8061Date)(this.signedExpiresOn, false) : undefined);
291
+ break;
292
+ case "sks": // Signed key service
293
+ this.tryAppendQueryParameter(queries, param, this.signedService);
294
+ break;
295
+ case "skv": // Signed key version
296
+ this.tryAppendQueryParameter(queries, param, this.signedVersion);
297
+ break;
298
+ case "sduoid": // Signed key user delegation object ID
299
+ this.tryAppendQueryParameter(queries, param, this.delegatedUserObjectId);
300
+ break;
228
301
  }
229
302
  }
230
303
  return queries.join("&");
@@ -1 +1 @@
1
- {"version":3,"file":"SASQueryParameters.js","sourceRoot":"","sources":["../../src/SASQueryParameters.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,mDAAkD;AAClD,6DAA+D;AAE/D;;GAEG;AACH,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB;;OAEG;IACH,8BAAe,CAAA;IAEf;;OAEG;IACH,0CAA2B,CAAA;AAC7B,CAAC,EAVW,WAAW,2BAAX,WAAW,QAUtB;AAED;;;;;;;;GAQG;AACH,MAAa,kBAAkB;IAC7B;;OAEG;IACa,OAAO,CAAS;IAEhC;;OAEG;IACa,QAAQ,CAAe;IAEvC;;OAEG;IACa,QAAQ,CAAQ;IAEhC;;OAEG;IACa,SAAS,CAAQ;IAEjC;;;;OAIG;IACa,WAAW,CAAU;IAErC;;;OAGG;IACa,QAAQ,CAAU;IAElC;;;OAGG;IACa,aAAa,CAAU;IAEvC;;;;OAIG;IACa,UAAU,CAAU;IAEpC;;OAEG;IACa,QAAQ,CAAU;IAElC;;OAEG;IACa,SAAS,CAAS;IAElC;;OAEG;IACa,YAAY,CAAU;IAEtC;;OAEG;IACa,kBAAkB,CAAU;IAE5C;;OAEG;IACa,eAAe,CAAU;IAEzC;;OAEG;IACa,eAAe,CAAU;IAEzC;;OAEG;IACa,WAAW,CAAU;IAErC;;OAEG;IACc,YAAY,CAAc;IAE3C;;;;OAIG;IACH,IAAW,OAAO;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG;gBAC1B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;aAC/B,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YACE,OAAe,EACf,SAAiB,EACjB,WAAoB,EACpB,QAAiB,EACjB,aAAsB,EACtB,QAAsB,EACtB,QAAe,EACf,SAAgB,EAChB,OAAoB,EACpB,UAAmB,EACnB,QAAiB,EACjB,YAAqB,EACrB,kBAA2B,EAC3B,eAAwB,EACxB,eAAwB,EACxB,WAAoB;QAEpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,MAAM,MAAM,GAAa;YACvB,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,KAAK;YACL,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,MAAM;YACN,MAAM;YACN,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAC;QACF,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,QAAQ,KAAK,EAAE,CAAC;gBACd,KAAK,IAAI;oBACP,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3D,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5D,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBACjE,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5D,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,uBAAuB,CAC1B,OAAO,EACP,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,sCAAoB,EAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CACvE,CAAC;oBACF,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,uBAAuB,CAC1B,OAAO,EACP,KAAK,EACL,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,sCAAoB,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CACzE,CAAC;oBACF,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,uBAAuB,CAC1B,OAAO,EACP,KAAK,EACL,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,+BAAe,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CACzD,CAAC;oBACF,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBAC9D,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC5D,MAAM;gBACR,KAAK,IAAI;oBACP,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC/D,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7D,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACtE,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACnE,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;oBACnE,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC/D,MAAM;YACV,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACK,uBAAuB,CAAC,OAAiB,EAAE,GAAW,EAAE,KAAc;QAC5E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC9B,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF;AA5QD,gDA4QC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport { truncatedISO8061Date } from \"./utils/utils.common.js\";\n\n/**\n * Protocols for generated SAS.\n */\nexport enum SASProtocol {\n /**\n * Protocol that allows HTTPS only\n */\n Https = \"https\",\n\n /**\n * Protocol that allows both HTTPS and HTTP\n */\n HttpsAndHttp = \"https,http\",\n}\n\n/**\n * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly\n * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link FileSASSignatureValues}\n * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should\n * be taken here in case there are existing query parameters, which might affect the appropriate means of appending\n * these query parameters).\n *\n * NOTE: Instances of this class are immutable.\n */\nexport class SASQueryParameters {\n /**\n * The storage API version.\n */\n public readonly version: string;\n\n /**\n * Optional. The allowed HTTP protocol(s).\n */\n public readonly protocol?: SASProtocol;\n\n /**\n * Optional. The start time for this SAS token.\n */\n public readonly startsOn?: Date;\n\n /**\n * Optional only when identifier is provided. The expiry time for this SAS token.\n */\n public readonly expiresOn?: Date;\n\n /**\n * Optional only when identifier is provided.\n * Please refer to {@link AccountSASPermissions}, {@link FileSASPermissions}, or {@link ShareSASPermissions} for\n * more details.\n */\n public readonly permissions?: string;\n\n /**\n * Optional. The storage services being accessed (only for Account SAS). Please refer to {@link AccountSASServices}\n * for more details.\n */\n public readonly services?: string;\n\n /**\n * Optional. The storage resource types being accessed (only for Account SAS). Please refer to\n * {@link AccountSASResourceTypes} for more details.\n */\n public readonly resourceTypes?: string;\n\n /**\n * Optional. The signed identifier (only for {@link FileSASSignatureValues}).\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy\n */\n public readonly identifier?: string;\n\n /**\n * Optional. The storage share or file path (only for {@link FileSASSignatureValues}).\n */\n public readonly resource?: string;\n\n /**\n * The signature for the SAS token.\n */\n public readonly signature: string;\n\n /**\n * Value for cache-control header in Blob/File Service SAS.\n */\n public readonly cacheControl?: string;\n\n /**\n * Value for content-disposition header in Blob/File Service SAS.\n */\n public readonly contentDisposition?: string;\n\n /**\n * Value for content-encoding header in Blob/File Service SAS.\n */\n public readonly contentEncoding?: string;\n\n /**\n * Value for content-length header in Blob/File Service SAS.\n */\n public readonly contentLanguage?: string;\n\n /**\n * Value for content-type header in Blob/File Service SAS.\n */\n public readonly contentType?: string;\n\n /**\n * Inner value of getter ipRange.\n */\n private readonly ipRangeInner?: SasIPRange;\n\n /**\n * Optional. IP range allowed for this SAS.\n *\n * @readonly\n */\n public get ipRange(): SasIPRange | undefined {\n if (this.ipRangeInner) {\n return {\n end: this.ipRangeInner.end,\n start: this.ipRangeInner.start,\n };\n }\n return undefined;\n }\n\n /**\n * Creates an instance of SASQueryParameters.\n *\n * @param version - Representing the storage version\n * @param signature - Representing the signature for the SAS token\n * @param permissions - Representing the storage permissions\n * @param services - Representing the storage services being accessed (only for Account SAS)\n * @param resourceTypes - Representing the storage resource types being accessed (only for Account SAS)\n * @param protocol - Representing the allowed HTTP protocol(s)\n * @param startsOn - Representing the start time for this SAS token\n * @param expiresOn - Representing the expiry time for this SAS token\n * @param ipRange - Representing the range of valid IP addresses for this SAS token\n * @param identifier - Representing the signed identifier (only for Service SAS)\n * @param resource - Representing the storage container or blob (only for Service SAS)\n * @param cacheControl - Representing the cache-control header (only for Blob/File Service SAS)\n * @param contentDisposition - Representing the content-disposition header (only for Blob/File Service SAS)\n * @param contentEncoding - Representing the content-encoding header (only for Blob/File Service SAS)\n * @param contentLanguage - Representing the content-language header (only for Blob/File Service SAS)\n * @param contentType - Representing the content-type header (only for Blob/File Service SAS)\n */\n constructor(\n version: string,\n signature: string,\n permissions?: string,\n services?: string,\n resourceTypes?: string,\n protocol?: SASProtocol,\n startsOn?: Date,\n expiresOn?: Date,\n ipRange?: SasIPRange,\n identifier?: string,\n resource?: string,\n cacheControl?: string,\n contentDisposition?: string,\n contentEncoding?: string,\n contentLanguage?: string,\n contentType?: string,\n ) {\n this.version = version;\n this.services = services;\n this.resourceTypes = resourceTypes;\n this.expiresOn = expiresOn;\n this.permissions = permissions;\n this.protocol = protocol;\n this.startsOn = startsOn;\n this.ipRangeInner = ipRange;\n this.identifier = identifier;\n this.resource = resource;\n this.signature = signature;\n this.cacheControl = cacheControl;\n this.contentDisposition = contentDisposition;\n this.contentEncoding = contentEncoding;\n this.contentLanguage = contentLanguage;\n this.contentType = contentType;\n }\n\n /**\n * Encodes all SAS query parameters into a string that can be appended to a URL.\n *\n */\n public toString(): string {\n const params: string[] = [\n \"sv\",\n \"ss\",\n \"srt\",\n \"spr\",\n \"st\",\n \"se\",\n \"sip\",\n \"si\",\n \"sr\",\n \"sp\",\n \"sig\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n ];\n const queries: string[] = [];\n\n for (const param of params) {\n switch (param) {\n case \"sv\":\n this.tryAppendQueryParameter(queries, param, this.version);\n break;\n case \"ss\":\n this.tryAppendQueryParameter(queries, param, this.services);\n break;\n case \"srt\":\n this.tryAppendQueryParameter(queries, param, this.resourceTypes);\n break;\n case \"spr\":\n this.tryAppendQueryParameter(queries, param, this.protocol);\n break;\n case \"st\":\n this.tryAppendQueryParameter(\n queries,\n param,\n this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined,\n );\n break;\n case \"se\":\n this.tryAppendQueryParameter(\n queries,\n param,\n this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined,\n );\n break;\n case \"sip\":\n this.tryAppendQueryParameter(\n queries,\n param,\n this.ipRange ? ipRangeToString(this.ipRange) : undefined,\n );\n break;\n case \"si\":\n this.tryAppendQueryParameter(queries, param, this.identifier);\n break;\n case \"sr\":\n this.tryAppendQueryParameter(queries, param, this.resource);\n break;\n case \"sp\":\n this.tryAppendQueryParameter(queries, param, this.permissions);\n break;\n case \"sig\":\n this.tryAppendQueryParameter(queries, param, this.signature);\n break;\n case \"rscc\":\n this.tryAppendQueryParameter(queries, param, this.cacheControl);\n break;\n case \"rscd\":\n this.tryAppendQueryParameter(queries, param, this.contentDisposition);\n break;\n case \"rsce\":\n this.tryAppendQueryParameter(queries, param, this.contentEncoding);\n break;\n case \"rscl\":\n this.tryAppendQueryParameter(queries, param, this.contentLanguage);\n break;\n case \"rsct\":\n this.tryAppendQueryParameter(queries, param, this.contentType);\n break;\n }\n }\n return queries.join(\"&\");\n }\n\n /**\n * A private helper method used to filter and append query key/value pairs into an array.\n *\n * @param queries -\n * @param key -\n * @param value -\n */\n private tryAppendQueryParameter(queries: string[], key: string, value?: string): void {\n if (!value) {\n return;\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n if (key.length > 0 && value.length > 0) {\n queries.push(`${key}=${value}`);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"SASQueryParameters.js","sourceRoot":"","sources":["../../src/SASQueryParameters.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { UserDelegationKey } from \"@azure/storage-common\";\nimport type { SasIPRange } from \"./SasIPRange.js\";\nimport { ipRangeToString } from \"./SasIPRange.js\";\nimport { truncatedISO8061Date } from \"./utils/utils.common.js\";\n\n/**\n * Protocols for generated SAS.\n */\nexport enum SASProtocol {\n /**\n * Protocol that allows HTTPS only\n */\n Https = \"https\",\n\n /**\n * Protocol that allows both HTTPS and HTTP\n */\n HttpsAndHttp = \"https,http\",\n}\n\n/**\n * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly\n * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link FileSASSignatureValues}\n * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should\n * be taken here in case there are existing query parameters, which might affect the appropriate means of appending\n * these query parameters).\n *\n * NOTE: Instances of this class are immutable.\n */\nexport class SASQueryParameters {\n /**\n * The storage API version.\n */\n public readonly version: string;\n\n /**\n * Optional. The allowed HTTP protocol(s).\n */\n public readonly protocol?: SASProtocol;\n\n /**\n * Optional. The start time for this SAS token.\n */\n public readonly startsOn?: Date;\n\n /**\n * Optional only when identifier is provided. The expiry time for this SAS token.\n */\n public readonly expiresOn?: Date;\n\n /**\n * Optional only when identifier is provided.\n * Please refer to {@link AccountSASPermissions}, {@link FileSASPermissions}, or {@link ShareSASPermissions} for\n * more details.\n */\n public readonly permissions?: string;\n\n /**\n * Optional. The storage services being accessed (only for Account SAS). Please refer to {@link AccountSASServices}\n * for more details.\n */\n public readonly services?: string;\n\n /**\n * Optional. The storage resource types being accessed (only for Account SAS). Please refer to\n * {@link AccountSASResourceTypes} for more details.\n */\n public readonly resourceTypes?: string;\n\n /**\n * Optional. The signed identifier (only for {@link FileSASSignatureValues}).\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/establishing-a-stored-access-policy\n */\n public readonly 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 public readonly delegatedUserObjectId?: string;\n\n /**\n * Optional. The storage share or file path (only for {@link FileSASSignatureValues}).\n */\n public readonly resource?: string;\n\n /**\n * The signature for the SAS token.\n */\n public readonly signature: string;\n\n /**\n * Value for cache-control header in Blob/File Service SAS.\n */\n public readonly cacheControl?: string;\n\n /**\n * Value for content-disposition header in Blob/File Service SAS.\n */\n public readonly contentDisposition?: string;\n\n /**\n * Value for content-encoding header in Blob/File Service SAS.\n */\n public readonly contentEncoding?: string;\n\n /**\n * Value for content-length header in Blob/File Service SAS.\n */\n public readonly contentLanguage?: string;\n\n /**\n * Value for content-type header in Blob/File Service SAS.\n */\n public readonly contentType?: string;\n\n /**\n * The Azure Active Directory object ID in GUID format.\n * Property of user delegation key.\n */\n private readonly signedOid?: string;\n\n /**\n * The Azure Active Directory tenant ID in GUID format.\n * Property of user delegation key.\n */\n private readonly signedTenantId?: string;\n\n /**\n * The date-time the key is active.\n * Property of user delegation key.\n */\n private readonly signedStartsOn?: Date;\n\n /**\n * The date-time the key expires.\n * Property of user delegation key.\n */\n private readonly signedExpiresOn?: Date;\n\n /**\n * Abbreviation of the Azure Storage service that accepts the user delegation key.\n * Property of user delegation key.\n */\n private readonly signedService?: string;\n\n /**\n * The service version that created the user delegation key.\n * Property of user delegation key.\n */\n private readonly signedVersion?: string;\n\n /**\n * Inner value of getter ipRange.\n */\n private readonly ipRangeInner?: SasIPRange;\n\n /**\n * Optional. IP range allowed for this SAS.\n *\n * @readonly\n */\n public get ipRange(): SasIPRange | undefined {\n if (this.ipRangeInner) {\n return {\n end: this.ipRangeInner.end,\n start: this.ipRangeInner.start,\n };\n }\n return undefined;\n }\n\n /**\n * Creates an instance of SASQueryParameters.\n *\n * @param version - Representing the storage version\n * @param signature - Representing the signature for the SAS token\n * @param permissions - Representing the storage permissions\n * @param services - Representing the storage services being accessed (only for Account SAS)\n * @param resourceTypes - Representing the storage resource types being accessed (only for Account SAS)\n * @param protocol - Representing the allowed HTTP protocol(s)\n * @param startsOn - Representing the start time for this SAS token\n * @param expiresOn - Representing the expiry time for this SAS token\n * @param ipRange - Representing the range of valid IP addresses for this SAS token\n * @param identifier - Representing the signed identifier (only for Service SAS)\n * @param resource - Representing the storage container or blob (only for Service SAS)\n * @param cacheControl - Representing the cache-control header (only for Blob/File Service SAS)\n * @param contentDisposition - Representing the content-disposition header (only for Blob/File Service SAS)\n * @param contentEncoding - Representing the content-encoding header (only for Blob/File Service SAS)\n * @param contentLanguage - Representing the content-language header (only for Blob/File Service SAS)\n * @param contentType - Representing the content-type header (only for Blob/File Service SAS)\n */\n constructor(\n version: string,\n signature: string,\n permissions?: string,\n services?: string,\n resourceTypes?: string,\n protocol?: SASProtocol,\n startsOn?: Date,\n expiresOn?: Date,\n ipRange?: SasIPRange,\n identifier?: string,\n resource?: string,\n cacheControl?: string,\n contentDisposition?: string,\n contentEncoding?: string,\n contentLanguage?: string,\n contentType?: string,\n userDelegationKey?: UserDelegationKey,\n delegatedUserObjectId?: string,\n ) {\n this.version = version;\n this.services = services;\n this.resourceTypes = resourceTypes;\n this.expiresOn = expiresOn;\n this.permissions = permissions;\n this.protocol = protocol;\n this.startsOn = startsOn;\n this.ipRangeInner = ipRange;\n this.identifier = identifier;\n this.resource = resource;\n this.signature = signature;\n this.cacheControl = cacheControl;\n this.contentDisposition = contentDisposition;\n this.contentEncoding = contentEncoding;\n this.contentLanguage = contentLanguage;\n this.contentType = contentType;\n\n if (userDelegationKey) {\n this.signedOid = userDelegationKey.signedObjectId;\n this.signedTenantId = userDelegationKey.signedTenantId;\n this.signedStartsOn = userDelegationKey.signedStartsOn;\n this.signedExpiresOn = userDelegationKey.signedExpiresOn;\n this.signedService = userDelegationKey.signedService;\n this.signedVersion = userDelegationKey.signedVersion;\n this.delegatedUserObjectId = delegatedUserObjectId;\n }\n }\n\n /**\n * Encodes all SAS query parameters into a string that can be appended to a URL.\n *\n */\n public toString(): string {\n const params: string[] = [\n \"sv\",\n \"ss\",\n \"srt\",\n \"spr\",\n \"st\",\n \"se\",\n \"sip\",\n \"si\",\n \"sr\",\n \"sp\",\n \"sig\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n \"skoid\", // Signed object ID\n \"sktid\", // Signed tenant ID\n \"skt\", // Signed key start time\n \"ske\", // Signed key expiry time\n \"sks\", // Signed key service\n \"skv\", // Signed key version\n \"sduoid\", // Signed key user delegation object ID\n ];\n const queries: string[] = [];\n\n for (const param of params) {\n switch (param) {\n case \"sv\":\n this.tryAppendQueryParameter(queries, param, this.version);\n break;\n case \"ss\":\n this.tryAppendQueryParameter(queries, param, this.services);\n break;\n case \"srt\":\n this.tryAppendQueryParameter(queries, param, this.resourceTypes);\n break;\n case \"spr\":\n this.tryAppendQueryParameter(queries, param, this.protocol);\n break;\n case \"st\":\n this.tryAppendQueryParameter(\n queries,\n param,\n this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined,\n );\n break;\n case \"se\":\n this.tryAppendQueryParameter(\n queries,\n param,\n this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined,\n );\n break;\n case \"sip\":\n this.tryAppendQueryParameter(\n queries,\n param,\n this.ipRange ? ipRangeToString(this.ipRange) : undefined,\n );\n break;\n case \"si\":\n this.tryAppendQueryParameter(queries, param, this.identifier);\n break;\n case \"sr\":\n this.tryAppendQueryParameter(queries, param, this.resource);\n break;\n case \"sp\":\n this.tryAppendQueryParameter(queries, param, this.permissions);\n break;\n case \"sig\":\n this.tryAppendQueryParameter(queries, param, this.signature);\n break;\n case \"rscc\":\n this.tryAppendQueryParameter(queries, param, this.cacheControl);\n break;\n case \"rscd\":\n this.tryAppendQueryParameter(queries, param, this.contentDisposition);\n break;\n case \"rsce\":\n this.tryAppendQueryParameter(queries, param, this.contentEncoding);\n break;\n case \"rscl\":\n this.tryAppendQueryParameter(queries, param, this.contentLanguage);\n break;\n case \"rsct\":\n this.tryAppendQueryParameter(queries, param, this.contentType);\n break;\n case \"skoid\":\n this.tryAppendQueryParameter(queries, param, this.signedOid);\n break;\n case \"sktid\": // Signed tenant ID\n this.tryAppendQueryParameter(queries, param, this.signedTenantId);\n break;\n case \"skt\": // Signed key start time\n this.tryAppendQueryParameter(\n queries,\n param,\n this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined,\n );\n break;\n case \"ske\": // Signed key expiry time\n this.tryAppendQueryParameter(\n queries,\n param,\n this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined,\n );\n break;\n case \"sks\": // Signed key service\n this.tryAppendQueryParameter(queries, param, this.signedService);\n break;\n case \"skv\": // Signed key version\n this.tryAppendQueryParameter(queries, param, this.signedVersion);\n break;\n case \"sduoid\": // Signed key user delegation object ID\n this.tryAppendQueryParameter(queries, param, this.delegatedUserObjectId);\n break;\n }\n }\n return queries.join(\"&\");\n }\n\n /**\n * A private helper method used to filter and append query key/value pairs into an array.\n *\n * @param queries -\n * @param key -\n * @param value -\n */\n private tryAppendQueryParameter(queries: string[], key: string, value?: string): void {\n if (!value) {\n return;\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n if (key.length > 0 && value.length > 0) {\n queries.push(`${key}=${value}`);\n }\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { AbortSignalLike } from "@azure/abort-controller";
2
- import type { FileServiceProperties, ShareCreateResponse, ShareDeleteResponse, ServiceGetPropertiesResponse, ServiceSetPropertiesResponse, ServiceListSharesSegmentHeaders, ListSharesResponseModel, SharePropertiesInternal } from "./generatedModels.js";
2
+ import type { FileServiceProperties, ShareCreateResponse, ShareDeleteResponse, ServiceGetPropertiesResponse, ServiceSetPropertiesResponse, ServiceListSharesSegmentHeaders, ListSharesResponseModel, SharePropertiesInternal, ServiceGetUserDelegationKeyResponse } from "./generatedModels.js";
3
3
  import type { Pipeline } from "./Pipeline.js";
4
4
  import type { CommonOptions } from "./StorageClient.js";
5
5
  import { StorageClient } from "./StorageClient.js";
@@ -129,6 +129,16 @@ export interface ServiceGenerateAccountSasUrlOptions {
129
129
  */
130
130
  ipRange?: SasIPRange;
131
131
  }
132
+ /**
133
+ * Options to configure the Service - Get User Delegation Key.
134
+ */
135
+ export interface ServiceGetUserDelegationKeyOptions extends CommonOptions {
136
+ /**
137
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
138
+ * For example, use the @azure/abort-controller to create an `AbortSignal`.
139
+ */
140
+ abortSignal?: AbortSignalLike;
141
+ }
132
142
  /**
133
143
  * A ShareServiceClient represents a URL to the Azure Storage File service allowing you
134
144
  * to manipulate file shares.
@@ -423,5 +433,17 @@ export declare class ShareServiceClient extends StorageClient {
423
433
  * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
424
434
  */
425
435
  generateSasStringToSign(expiresOn?: Date, permissions?: AccountSASPermissions, resourceTypes?: string, options?: ServiceGenerateAccountSasUrlOptions): string;
436
+ /**
437
+ * ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).
438
+ *
439
+ * Retrieves a user delegation key for the File service. This is only a valid operation when using
440
+ * bearer token authentication.
441
+ *
442
+ * @see https://learn.microsoft.com/rest/api/storageservices/get-user-delegation-key
443
+ *
444
+ * @param startsOn - The start time for the user delegation SAS. Must be within 7 days of the current time
445
+ * @param expiresOn - The end time for the user delegation SAS. Must be within 7 days of the current time
446
+ */
447
+ getUserDelegationKey(startsOn: Date, expiresOn: Date, options?: ServiceGetUserDelegationKeyOptions): Promise<ServiceGetUserDelegationKeyResponse>;
426
448
  }
427
449
  //# sourceMappingURL=ShareServiceClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShareServiceClient.d.ts","sourceRoot":"","sources":["../../src/ShareServiceClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ShareServiceClient.d.ts","sourceRoot":"","sources":["../../src/ShareServiceClient.ts"],"names":[],"mappings":"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"}