@azure/storage-file-datalake 12.27.0-beta.1 → 12.27.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 (299) hide show
  1. package/dist/browser/DataLakeFileSystemClient.d.ts +13 -13
  2. package/dist/browser/DataLakeFileSystemClient.js +136 -93
  3. package/dist/browser/DataLakeFileSystemClient.js.map +1 -1
  4. package/dist/browser/DataLakeLeaseClient.js +1 -0
  5. package/dist/browser/DataLakeLeaseClient.js.map +1 -1
  6. package/dist/browser/DataLakeServiceClient.d.ts +6 -6
  7. package/dist/browser/DataLakeServiceClient.js +28 -11
  8. package/dist/browser/DataLakeServiceClient.js.map +1 -1
  9. package/dist/browser/Pipeline.js +24 -15
  10. package/dist/browser/Pipeline.js.map +1 -1
  11. package/dist/browser/StorageClient.js +43 -3
  12. package/dist/browser/StorageClient.js.map +1 -1
  13. package/dist/browser/StorageContextClient.js +2 -3
  14. package/dist/browser/StorageContextClient.js.map +1 -1
  15. package/dist/browser/clients.d.ts +33 -33
  16. package/dist/browser/clients.js +269 -89
  17. package/dist/browser/clients.js.map +1 -1
  18. package/dist/browser/generated/src/operations/fileSystemOperations.js +1 -0
  19. package/dist/browser/generated/src/operations/fileSystemOperations.js.map +1 -1
  20. package/dist/browser/generated/src/operations/pathOperations.js +1 -0
  21. package/dist/browser/generated/src/operations/pathOperations.js.map +1 -1
  22. package/dist/browser/generated/src/operations/service.js +1 -0
  23. package/dist/browser/generated/src/operations/service.js.map +1 -1
  24. package/dist/browser/generated/src/storageClient.js +15 -4
  25. package/dist/browser/generated/src/storageClient.js.map +1 -1
  26. package/dist/browser/index-browser.d.mts.map +1 -1
  27. package/dist/browser/index-browser.mjs.map +1 -1
  28. package/dist/browser/index.d.ts +1 -1
  29. package/dist/browser/index.js +1 -1
  30. package/dist/browser/models.d.ts +1 -1
  31. package/dist/browser/models.js.map +1 -1
  32. package/dist/browser/sas/AccountSASPermissions.d.ts +1 -1
  33. package/dist/browser/sas/AccountSASPermissions.js +34 -36
  34. package/dist/browser/sas/AccountSASPermissions.js.map +1 -1
  35. package/dist/browser/sas/AccountSASResourceTypes.d.ts +1 -1
  36. package/dist/browser/sas/AccountSASResourceTypes.js +13 -15
  37. package/dist/browser/sas/AccountSASResourceTypes.js.map +1 -1
  38. package/dist/browser/sas/AccountSASServices.js +16 -18
  39. package/dist/browser/sas/AccountSASServices.js.map +1 -1
  40. package/dist/browser/sas/AccountSASSignatureValues.d.ts +3 -3
  41. package/dist/browser/sas/AccountSASSignatureValues.js +1 -1
  42. package/dist/browser/sas/AccountSASSignatureValues.js.map +1 -1
  43. package/dist/browser/sas/DataLakeSASPermissions.js +39 -41
  44. package/dist/browser/sas/DataLakeSASPermissions.js.map +1 -1
  45. package/dist/browser/sas/DataLakeSASSignatureValues.d.ts +1 -1
  46. package/dist/browser/sas/DataLakeSASSignatureValues.js +4 -3
  47. package/dist/browser/sas/DataLakeSASSignatureValues.js.map +1 -1
  48. package/dist/browser/sas/DirectorySASPermissions.d.ts +1 -1
  49. package/dist/browser/sas/DirectorySASPermissions.js +44 -46
  50. package/dist/browser/sas/DirectorySASPermissions.js.map +1 -1
  51. package/dist/browser/sas/FileSystemSASPermissions.d.ts +1 -1
  52. package/dist/browser/sas/FileSystemSASPermissions.js +44 -46
  53. package/dist/browser/sas/FileSystemSASPermissions.js.map +1 -1
  54. package/dist/browser/sas/SASQueryParameters.d.ts +2 -2
  55. package/dist/browser/sas/SASQueryParameters.js +131 -2
  56. package/dist/browser/sas/SASQueryParameters.js.map +1 -1
  57. package/dist/browser/transforms.js +8 -1
  58. package/dist/browser/transforms.js.map +1 -1
  59. package/dist/browser/utils/Batch.js +29 -21
  60. package/dist/browser/utils/Batch.js.map +1 -1
  61. package/dist/browser/utils/BufferScheduler.js +70 -44
  62. package/dist/browser/utils/BufferScheduler.js.map +1 -1
  63. package/dist/browser/utils/DataLakeAclChangeFailedError.js +8 -0
  64. package/dist/browser/utils/DataLakeAclChangeFailedError.js.map +1 -1
  65. package/dist/browser/utils/PathClientInternal.js +4 -0
  66. package/dist/browser/utils/PathClientInternal.js.map +1 -1
  67. package/dist/browser/utils/constants.d.ts.map +1 -1
  68. package/dist/browser/utils/constants.js +1 -1
  69. package/dist/browser/utils/constants.js.map +1 -1
  70. package/dist/browser/utils/utils.common.d.ts +2 -2
  71. package/dist/browser/utils/utils.common.js +5 -7
  72. package/dist/browser/utils/utils.common.js.map +1 -1
  73. package/dist/commonjs/DataLakeFileSystemClient.d.ts +13 -13
  74. package/dist/commonjs/DataLakeFileSystemClient.js +136 -93
  75. package/dist/commonjs/DataLakeFileSystemClient.js.map +1 -1
  76. package/dist/commonjs/DataLakeLeaseClient.js +1 -0
  77. package/dist/commonjs/DataLakeLeaseClient.js.map +1 -1
  78. package/dist/commonjs/DataLakeServiceClient.d.ts +6 -6
  79. package/dist/commonjs/DataLakeServiceClient.js +28 -11
  80. package/dist/commonjs/DataLakeServiceClient.js.map +1 -1
  81. package/dist/commonjs/Pipeline.js +32 -23
  82. package/dist/commonjs/Pipeline.js.map +1 -1
  83. package/dist/commonjs/StorageClient.js +43 -3
  84. package/dist/commonjs/StorageClient.js.map +1 -1
  85. package/dist/commonjs/StorageContextClient.js +2 -3
  86. package/dist/commonjs/StorageContextClient.js.map +1 -1
  87. package/dist/commonjs/clients.d.ts +33 -33
  88. package/dist/commonjs/clients.js +269 -89
  89. package/dist/commonjs/clients.js.map +1 -1
  90. package/dist/commonjs/credentials/UserDelegationKeyCredential.d.ts +1 -1
  91. package/dist/commonjs/credentials/UserDelegationKeyCredential.js +13 -1
  92. package/dist/commonjs/credentials/UserDelegationKeyCredential.js.map +1 -1
  93. package/dist/commonjs/generated/src/operations/fileSystemOperations.js +1 -0
  94. package/dist/commonjs/generated/src/operations/fileSystemOperations.js.map +1 -1
  95. package/dist/commonjs/generated/src/operations/pathOperations.js +1 -0
  96. package/dist/commonjs/generated/src/operations/pathOperations.js.map +1 -1
  97. package/dist/commonjs/generated/src/operations/service.js +1 -0
  98. package/dist/commonjs/generated/src/operations/service.js.map +1 -1
  99. package/dist/commonjs/generated/src/storageClient.js +15 -4
  100. package/dist/commonjs/generated/src/storageClient.js.map +1 -1
  101. package/dist/commonjs/models.d.ts +1 -1
  102. package/dist/commonjs/models.js.map +1 -1
  103. package/dist/commonjs/sas/AccountSASPermissions.d.ts +1 -1
  104. package/dist/commonjs/sas/AccountSASPermissions.js +34 -36
  105. package/dist/commonjs/sas/AccountSASPermissions.js.map +1 -1
  106. package/dist/commonjs/sas/AccountSASResourceTypes.d.ts +1 -1
  107. package/dist/commonjs/sas/AccountSASResourceTypes.js +13 -15
  108. package/dist/commonjs/sas/AccountSASResourceTypes.js.map +1 -1
  109. package/dist/commonjs/sas/AccountSASServices.js +16 -18
  110. package/dist/commonjs/sas/AccountSASServices.js.map +1 -1
  111. package/dist/commonjs/sas/AccountSASSignatureValues.d.ts +3 -3
  112. package/dist/commonjs/sas/AccountSASSignatureValues.js +1 -1
  113. package/dist/commonjs/sas/AccountSASSignatureValues.js.map +1 -1
  114. package/dist/commonjs/sas/DataLakeSASPermissions.js +39 -41
  115. package/dist/commonjs/sas/DataLakeSASPermissions.js.map +1 -1
  116. package/dist/commonjs/sas/DataLakeSASSignatureValues.d.ts +1 -1
  117. package/dist/commonjs/sas/DataLakeSASSignatureValues.js +4 -3
  118. package/dist/commonjs/sas/DataLakeSASSignatureValues.js.map +1 -1
  119. package/dist/commonjs/sas/DirectorySASPermissions.d.ts +1 -1
  120. package/dist/commonjs/sas/DirectorySASPermissions.js +44 -46
  121. package/dist/commonjs/sas/DirectorySASPermissions.js.map +1 -1
  122. package/dist/commonjs/sas/FileSystemSASPermissions.d.ts +1 -1
  123. package/dist/commonjs/sas/FileSystemSASPermissions.js +44 -46
  124. package/dist/commonjs/sas/FileSystemSASPermissions.js.map +1 -1
  125. package/dist/commonjs/sas/SASQueryParameters.d.ts +2 -2
  126. package/dist/commonjs/sas/SASQueryParameters.js +131 -2
  127. package/dist/commonjs/sas/SASQueryParameters.js.map +1 -1
  128. package/dist/commonjs/transforms.js +8 -1
  129. package/dist/commonjs/transforms.js.map +1 -1
  130. package/dist/commonjs/tsdoc-metadata.json +11 -11
  131. package/dist/commonjs/utils/Batch.js +29 -21
  132. package/dist/commonjs/utils/Batch.js.map +1 -1
  133. package/dist/commonjs/utils/BufferScheduler.js +70 -44
  134. package/dist/commonjs/utils/BufferScheduler.js.map +1 -1
  135. package/dist/commonjs/utils/DataLakeAclChangeFailedError.js +8 -0
  136. package/dist/commonjs/utils/DataLakeAclChangeFailedError.js.map +1 -1
  137. package/dist/commonjs/utils/PathClientInternal.js +4 -0
  138. package/dist/commonjs/utils/PathClientInternal.js.map +1 -1
  139. package/dist/commonjs/utils/constants.d.ts.map +1 -1
  140. package/dist/commonjs/utils/constants.js +1 -1
  141. package/dist/commonjs/utils/constants.js.map +1 -1
  142. package/dist/commonjs/utils/utils.common.d.ts +2 -2
  143. package/dist/commonjs/utils/utils.common.js +5 -7
  144. package/dist/commonjs/utils/utils.common.js.map +1 -1
  145. package/dist/commonjs/utils/utils.d.ts +1 -1
  146. package/dist/commonjs/utils/utils.d.ts.map +1 -1
  147. package/dist/commonjs/utils/utils.js +4 -4
  148. package/dist/commonjs/utils/utils.js.map +1 -1
  149. package/dist/esm/DataLakeFileSystemClient.d.ts +13 -13
  150. package/dist/esm/DataLakeFileSystemClient.js +136 -93
  151. package/dist/esm/DataLakeFileSystemClient.js.map +1 -1
  152. package/dist/esm/DataLakeLeaseClient.js +1 -0
  153. package/dist/esm/DataLakeLeaseClient.js.map +1 -1
  154. package/dist/esm/DataLakeServiceClient.d.ts +6 -6
  155. package/dist/esm/DataLakeServiceClient.js +28 -11
  156. package/dist/esm/DataLakeServiceClient.js.map +1 -1
  157. package/dist/esm/Pipeline.js +24 -15
  158. package/dist/esm/Pipeline.js.map +1 -1
  159. package/dist/esm/StorageClient.js +43 -3
  160. package/dist/esm/StorageClient.js.map +1 -1
  161. package/dist/esm/StorageContextClient.js +2 -3
  162. package/dist/esm/StorageContextClient.js.map +1 -1
  163. package/dist/esm/clients.d.ts +33 -33
  164. package/dist/esm/clients.js +269 -89
  165. package/dist/esm/clients.js.map +1 -1
  166. package/dist/esm/credentials/UserDelegationKeyCredential.d.ts +1 -1
  167. package/dist/esm/credentials/UserDelegationKeyCredential.js +13 -1
  168. package/dist/esm/credentials/UserDelegationKeyCredential.js.map +1 -1
  169. package/dist/esm/generated/src/operations/fileSystemOperations.js +1 -0
  170. package/dist/esm/generated/src/operations/fileSystemOperations.js.map +1 -1
  171. package/dist/esm/generated/src/operations/pathOperations.js +1 -0
  172. package/dist/esm/generated/src/operations/pathOperations.js.map +1 -1
  173. package/dist/esm/generated/src/operations/service.js +1 -0
  174. package/dist/esm/generated/src/operations/service.js.map +1 -1
  175. package/dist/esm/generated/src/storageClient.js +15 -4
  176. package/dist/esm/generated/src/storageClient.js.map +1 -1
  177. package/dist/esm/models.d.ts +1 -1
  178. package/dist/esm/models.js.map +1 -1
  179. package/dist/esm/sas/AccountSASPermissions.d.ts +1 -1
  180. package/dist/esm/sas/AccountSASPermissions.js +34 -36
  181. package/dist/esm/sas/AccountSASPermissions.js.map +1 -1
  182. package/dist/esm/sas/AccountSASResourceTypes.d.ts +1 -1
  183. package/dist/esm/sas/AccountSASResourceTypes.js +13 -15
  184. package/dist/esm/sas/AccountSASResourceTypes.js.map +1 -1
  185. package/dist/esm/sas/AccountSASServices.js +16 -18
  186. package/dist/esm/sas/AccountSASServices.js.map +1 -1
  187. package/dist/esm/sas/AccountSASSignatureValues.d.ts +3 -3
  188. package/dist/esm/sas/AccountSASSignatureValues.js +1 -1
  189. package/dist/esm/sas/AccountSASSignatureValues.js.map +1 -1
  190. package/dist/esm/sas/DataLakeSASPermissions.js +39 -41
  191. package/dist/esm/sas/DataLakeSASPermissions.js.map +1 -1
  192. package/dist/esm/sas/DataLakeSASSignatureValues.d.ts +1 -1
  193. package/dist/esm/sas/DataLakeSASSignatureValues.js +4 -3
  194. package/dist/esm/sas/DataLakeSASSignatureValues.js.map +1 -1
  195. package/dist/esm/sas/DirectorySASPermissions.d.ts +1 -1
  196. package/dist/esm/sas/DirectorySASPermissions.js +44 -46
  197. package/dist/esm/sas/DirectorySASPermissions.js.map +1 -1
  198. package/dist/esm/sas/FileSystemSASPermissions.d.ts +1 -1
  199. package/dist/esm/sas/FileSystemSASPermissions.js +44 -46
  200. package/dist/esm/sas/FileSystemSASPermissions.js.map +1 -1
  201. package/dist/esm/sas/SASQueryParameters.d.ts +2 -2
  202. package/dist/esm/sas/SASQueryParameters.js +131 -2
  203. package/dist/esm/sas/SASQueryParameters.js.map +1 -1
  204. package/dist/esm/transforms.js +8 -1
  205. package/dist/esm/transforms.js.map +1 -1
  206. package/dist/esm/utils/Batch.js +29 -21
  207. package/dist/esm/utils/Batch.js.map +1 -1
  208. package/dist/esm/utils/BufferScheduler.js +70 -44
  209. package/dist/esm/utils/BufferScheduler.js.map +1 -1
  210. package/dist/esm/utils/DataLakeAclChangeFailedError.js +8 -0
  211. package/dist/esm/utils/DataLakeAclChangeFailedError.js.map +1 -1
  212. package/dist/esm/utils/PathClientInternal.js +4 -0
  213. package/dist/esm/utils/PathClientInternal.js.map +1 -1
  214. package/dist/esm/utils/constants.d.ts.map +1 -1
  215. package/dist/esm/utils/constants.js +1 -1
  216. package/dist/esm/utils/constants.js.map +1 -1
  217. package/dist/esm/utils/utils.common.d.ts +2 -2
  218. package/dist/esm/utils/utils.common.js +5 -7
  219. package/dist/esm/utils/utils.common.js.map +1 -1
  220. package/dist/esm/utils/utils.d.ts +1 -1
  221. package/dist/esm/utils/utils.d.ts.map +1 -1
  222. package/dist/esm/utils/utils.js +2 -2
  223. package/dist/esm/utils/utils.js.map +1 -1
  224. package/dist/react-native/DataLakeFileSystemClient.d.ts +13 -13
  225. package/dist/react-native/DataLakeFileSystemClient.js +136 -93
  226. package/dist/react-native/DataLakeFileSystemClient.js.map +1 -1
  227. package/dist/react-native/DataLakeLeaseClient.js +1 -0
  228. package/dist/react-native/DataLakeLeaseClient.js.map +1 -1
  229. package/dist/react-native/DataLakeServiceClient.d.ts +6 -6
  230. package/dist/react-native/DataLakeServiceClient.js +28 -11
  231. package/dist/react-native/DataLakeServiceClient.js.map +1 -1
  232. package/dist/react-native/Pipeline.js +24 -15
  233. package/dist/react-native/Pipeline.js.map +1 -1
  234. package/dist/react-native/StorageClient.js +43 -3
  235. package/dist/react-native/StorageClient.js.map +1 -1
  236. package/dist/react-native/StorageContextClient.js +2 -3
  237. package/dist/react-native/StorageContextClient.js.map +1 -1
  238. package/dist/react-native/clients.d.ts +33 -33
  239. package/dist/react-native/clients.js +269 -89
  240. package/dist/react-native/clients.js.map +1 -1
  241. package/dist/react-native/credentials/UserDelegationKeyCredential.d.ts +1 -1
  242. package/dist/react-native/credentials/UserDelegationKeyCredential.js +13 -1
  243. package/dist/react-native/credentials/UserDelegationKeyCredential.js.map +1 -1
  244. package/dist/react-native/generated/src/operations/fileSystemOperations.js +1 -0
  245. package/dist/react-native/generated/src/operations/fileSystemOperations.js.map +1 -1
  246. package/dist/react-native/generated/src/operations/pathOperations.js +1 -0
  247. package/dist/react-native/generated/src/operations/pathOperations.js.map +1 -1
  248. package/dist/react-native/generated/src/operations/service.js +1 -0
  249. package/dist/react-native/generated/src/operations/service.js.map +1 -1
  250. package/dist/react-native/generated/src/storageClient.js +15 -4
  251. package/dist/react-native/generated/src/storageClient.js.map +1 -1
  252. package/dist/react-native/models.d.ts +1 -1
  253. package/dist/react-native/models.js.map +1 -1
  254. package/dist/react-native/sas/AccountSASPermissions.d.ts +1 -1
  255. package/dist/react-native/sas/AccountSASPermissions.js +34 -36
  256. package/dist/react-native/sas/AccountSASPermissions.js.map +1 -1
  257. package/dist/react-native/sas/AccountSASResourceTypes.d.ts +1 -1
  258. package/dist/react-native/sas/AccountSASResourceTypes.js +13 -15
  259. package/dist/react-native/sas/AccountSASResourceTypes.js.map +1 -1
  260. package/dist/react-native/sas/AccountSASServices.js +16 -18
  261. package/dist/react-native/sas/AccountSASServices.js.map +1 -1
  262. package/dist/react-native/sas/AccountSASSignatureValues.d.ts +3 -3
  263. package/dist/react-native/sas/AccountSASSignatureValues.js +1 -1
  264. package/dist/react-native/sas/AccountSASSignatureValues.js.map +1 -1
  265. package/dist/react-native/sas/DataLakeSASPermissions.js +39 -41
  266. package/dist/react-native/sas/DataLakeSASPermissions.js.map +1 -1
  267. package/dist/react-native/sas/DataLakeSASSignatureValues.d.ts +1 -1
  268. package/dist/react-native/sas/DataLakeSASSignatureValues.js +4 -3
  269. package/dist/react-native/sas/DataLakeSASSignatureValues.js.map +1 -1
  270. package/dist/react-native/sas/DirectorySASPermissions.d.ts +1 -1
  271. package/dist/react-native/sas/DirectorySASPermissions.js +44 -46
  272. package/dist/react-native/sas/DirectorySASPermissions.js.map +1 -1
  273. package/dist/react-native/sas/FileSystemSASPermissions.d.ts +1 -1
  274. package/dist/react-native/sas/FileSystemSASPermissions.js +44 -46
  275. package/dist/react-native/sas/FileSystemSASPermissions.js.map +1 -1
  276. package/dist/react-native/sas/SASQueryParameters.d.ts +2 -2
  277. package/dist/react-native/sas/SASQueryParameters.js +131 -2
  278. package/dist/react-native/sas/SASQueryParameters.js.map +1 -1
  279. package/dist/react-native/transforms.js +8 -1
  280. package/dist/react-native/transforms.js.map +1 -1
  281. package/dist/react-native/utils/Batch.js +29 -21
  282. package/dist/react-native/utils/Batch.js.map +1 -1
  283. package/dist/react-native/utils/BufferScheduler.js +70 -44
  284. package/dist/react-native/utils/BufferScheduler.js.map +1 -1
  285. package/dist/react-native/utils/DataLakeAclChangeFailedError.js +8 -0
  286. package/dist/react-native/utils/DataLakeAclChangeFailedError.js.map +1 -1
  287. package/dist/react-native/utils/PathClientInternal.js +4 -0
  288. package/dist/react-native/utils/PathClientInternal.js.map +1 -1
  289. package/dist/react-native/utils/constants.d.ts.map +1 -1
  290. package/dist/react-native/utils/constants.js +1 -1
  291. package/dist/react-native/utils/constants.js.map +1 -1
  292. package/dist/react-native/utils/utils.common.d.ts +2 -2
  293. package/dist/react-native/utils/utils.common.js +5 -7
  294. package/dist/react-native/utils/utils.common.js.map +1 -1
  295. package/dist/react-native/utils/utils.d.ts +1 -1
  296. package/dist/react-native/utils/utils.d.ts.map +1 -1
  297. package/dist/react-native/utils/utils.js +2 -2
  298. package/dist/react-native/utils/utils.js.map +1 -1
  299. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"utils.common.js","sourceRoot":"","sources":["../../../src/utils/utils.common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { HttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport type { ContainerEncryptionScope, WithResponse } from \"@azure/storage-blob\";\nimport type {\n CpkInfo,\n FileSystemEncryptionScope,\n PathAccessControlItem,\n PathPermissions,\n} from \"../models.js\";\n\nimport {\n DevelopmentConnectionString,\n EncryptionAlgorithmAES25,\n HeaderConstants,\n PathStylePorts,\n UrlConstants,\n} from \"./constants.js\";\nimport type { HttpResponse } from \"@azure/storage-blob\";\nimport type { HttpHeadersLike } from \"@azure/core-http-compat\";\nimport { toAcl, toPermissions } from \"../transforms.js\";\n\n/**\n * Reserved URL characters must be properly escaped for Storage services like Blob or File.\n *\n * ## URL encode and escape strategy for JS SDKs\n *\n * When customers pass a URL string into XxxClient classes constructors, the URL string may already be URL encoded or not.\n * But before sending to Azure Storage server, the URL must be encoded. However, it's hard for a SDK to guess whether the URL\n * string has been encoded or not. We have 2 potential strategies, and chose strategy two for the XxxClient constructors.\n *\n * ### Strategy One: Assume the customer URL string is not encoded, and always encode URL string in SDK.\n *\n * This is what legacy V2 SDK does, simple and works for most of the cases.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%253A\" and send to server. A blob named \"b%3A\" will be created.\n *\n * But this strategy will make it not possible to create a blob with \"?\" in it's name. Because when customer URL string is\n * \"http://account.blob.core.windows.net/con/blob?name\", the \"?name\" will be treated as URL paramter instead of blob name.\n * If customer URL string is \"http://account.blob.core.windows.net/con/blob%3Fname\", a blob named \"blob%3Fname\" will be created.\n * V2 SDK doesn't have this issue because it doesn't allow customer pass in a full URL, it accepts a separate blob name and encodeURIComponent for it.\n * We cannot accept a SDK cannot create a blob name with \"?\". So we implement strategy two:\n *\n * ### Strategy Two: SDK doesn't assume the URL has been encoded or not. It will just escape the special characters.\n *\n * This is what V10 Blob Go SDK does. It accepts a URL type in Go, and call url.EscapedPath() to escape the special chars unescaped.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will escape \":\" like \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%3A\" to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%253A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%253A\" to server. A blob named \"b%3A\" will be created.\n *\n * This strategy gives us flexibility to create with any special characters. But \"%\" will be treated as a special characters, if the URL string\n * is not encoded, there shouldn't a \"%\" in the URL string, otherwise the URL is not a valid URL.\n * If customer needs to create a blob with \"%\" in it's blob name, use \"%25\" instead of \"%\". Just like above 3rd sample.\n * And following URL strings are invalid:\n * - \"http://account.blob.core.windows.net/con/b%\"\n * - \"http://account.blob.core.windows.net/con/b%2\"\n * - \"http://account.blob.core.windows.net/con/b%G\"\n *\n * Another special character is \"?\", use \"%2F\" to represent a blob name with \"?\" in a URL string.\n *\n * ### Strategy for containerName, blobName or other specific XXXName parameters in methods such as `containerClient.getBlobClient(blobName)`\n *\n * We will apply strategy one, and call encodeURIComponent for these parameters like blobName. Because what customers passes in is a plain name instead of a URL.\n *\n * @see https://learn.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n * @see https://learn.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata\n *\n * @param url -\n */\nexport function escapeURLPath(url: string): string {\n const urlParsed = new URL(url);\n\n let path = urlParsed.pathname;\n path = path || \"/\";\n\n path = escape(path);\n urlParsed.pathname = path;\n\n return urlParsed.toString();\n}\n\nexport interface ConnectionString {\n kind: \"AccountConnString\" | \"SASConnString\";\n url: string;\n accountName: string;\n accountKey?: any;\n accountSas?: string;\n proxyUri?: string; // Development Connection String may contain proxyUri\n}\n\nfunction getProxyUriFromDevConnString(connectionString: string): string {\n // Development Connection String\n // https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key\n let proxyUri = \"\";\n if (connectionString.search(\"DevelopmentStorageProxyUri=\") !== -1) {\n // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri\n const matchCredentials = connectionString.split(\";\");\n for (const element of matchCredentials) {\n if (element.trim().startsWith(\"DevelopmentStorageProxyUri=\")) {\n proxyUri = element.trim().match(\"DevelopmentStorageProxyUri=(.*)\")![1];\n }\n }\n }\n return proxyUri;\n}\n\nexport function getValueInConnString(\n connectionString: string,\n argument:\n | \"BlobEndpoint\"\n | \"AccountName\"\n | \"AccountKey\"\n | \"DefaultEndpointsProtocol\"\n | \"EndpointSuffix\"\n | \"SharedAccessSignature\",\n): string {\n const elements = connectionString.split(\";\");\n for (const element of elements) {\n if (element.trim().startsWith(argument)) {\n return element.trim().match(argument + \"=(.*)\")![1];\n }\n }\n return \"\";\n}\n\n/**\n * Extracts the parts of an Azure Storage account connection string.\n *\n * @param connectionString - Connection string.\n * @returns String key value pairs of the storage account's url and credentials.\n */\nexport function extractConnectionStringParts(connectionString: string): ConnectionString {\n let proxyUri = \"\";\n\n if (connectionString.startsWith(\"UseDevelopmentStorage=true\")) {\n // Development connection string\n proxyUri = getProxyUriFromDevConnString(connectionString);\n connectionString = DevelopmentConnectionString;\n }\n\n // Matching BlobEndpoint in the Account connection string\n let blobEndpoint = getValueInConnString(connectionString, \"BlobEndpoint\");\n // Slicing off '/' at the end if exists\n // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)\n blobEndpoint = blobEndpoint.endsWith(\"/\") ? blobEndpoint.slice(0, -1) : blobEndpoint;\n\n if (\n connectionString.search(\"DefaultEndpointsProtocol=\") !== -1 &&\n connectionString.search(\"AccountKey=\") !== -1\n ) {\n // Account connection string\n\n let defaultEndpointsProtocol = \"\";\n let accountName = \"\";\n let accountKey = Buffer.from(\"accountKey\", \"base64\");\n let endpointSuffix = \"\";\n\n // Get account name and key\n accountName = getValueInConnString(connectionString, \"AccountName\");\n accountKey = Buffer.from(getValueInConnString(connectionString, \"AccountKey\"), \"base64\");\n\n if (!blobEndpoint) {\n // BlobEndpoint is not present in the Account connection string\n // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`\n\n defaultEndpointsProtocol = getValueInConnString(connectionString, \"DefaultEndpointsProtocol\");\n const protocol = defaultEndpointsProtocol!.toLowerCase();\n if (protocol !== \"https\" && protocol !== \"http\") {\n throw new Error(\n \"Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'\",\n );\n }\n\n endpointSuffix = getValueInConnString(connectionString, \"EndpointSuffix\");\n if (!endpointSuffix) {\n throw new Error(\"Invalid EndpointSuffix in the provided Connection String\");\n }\n blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n }\n\n if (!accountName) {\n throw new Error(\"Invalid AccountName in the provided Connection String\");\n } else if (accountKey.length === 0) {\n throw new Error(\"Invalid AccountKey in the provided Connection String\");\n }\n\n return {\n kind: \"AccountConnString\",\n url: blobEndpoint,\n accountName,\n accountKey,\n proxyUri,\n };\n } else {\n // SAS connection string\n\n const accountSas = getValueInConnString(connectionString, \"SharedAccessSignature\");\n let accountName = getValueInConnString(connectionString, \"AccountName\");\n // if accountName is empty, try to read it from BlobEndpoint\n if (!accountName) {\n accountName = getAccountNameFromUrl(blobEndpoint);\n }\n if (!blobEndpoint) {\n throw new Error(\"Invalid BlobEndpoint in the provided SAS Connection String\");\n } else if (!accountSas) {\n throw new Error(\"Invalid SharedAccessSignature in the provided SAS Connection String\");\n }\n\n return { kind: \"SASConnString\", url: blobEndpoint, accountName, accountSas };\n }\n}\n\n/**\n * Internal escape method implemented Strategy Two mentioned in escapeURL() description.\n *\n * @param text -\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nfunction escape(text: string): string {\n return encodeURIComponent(text)\n .replace(/%2F/g, \"/\") // Don't escape for \"/\"\n .replace(/'/g, \"%27\") // Escape for \"'\"\n .replace(/\\+/g, \"%20\")\n .replace(/%25/g, \"%\"); // Revert encoded \"%\"\n}\n\n/**\n * Append a string to URL path. Will remove duplicated \"/\" in front of the string\n * when URL path ends with a \"/\".\n *\n * @param url - Source URL string\n * @param name - String to be appended to URL\n * @returns An updated URL string\n */\nexport function appendToURLPath(url: string, name: string): string {\n const urlParsed = new URL(url);\n\n let path = urlParsed.pathname;\n path = path ? (path.endsWith(\"/\") ? `${path}${name}` : `${path}/${name}`) : name;\n urlParsed.pathname = path;\n\n return urlParsed.toString();\n}\n\n/**\n * Append a string to URL query.\n *\n * @param url - Source URL string.\n * @param queryParts - String to be appended to the URL query.\n * @returns An updated URL string.\n */\nexport function appendToURLQuery(url: string, queryParts: string): string {\n const urlParsed = new URL(url);\n\n let query = urlParsed.search;\n if (query) {\n query += \"&\" + queryParts;\n } else {\n query = queryParts;\n }\n\n urlParsed.search = query;\n return urlParsed.toString();\n}\n\n/**\n * Set URL parameter name and value. If name exists in URL parameters, old value\n * will be replaced by name key. If not provide value, the parameter will be deleted.\n *\n * @param url - Source URL string\n * @param name - Parameter name\n * @param value - Parameter value\n * @returns An updated URL string\n */\nexport function setURLParameter(url: string, name: string, value?: string): string {\n const urlParsed = new URL(url);\n const encodedName = encodeURIComponent(name);\n const encodedValue = value ? encodeURIComponent(value) : undefined;\n // mutating searchParams will change the encoding, so we have to do this ourselves\n const searchString = urlParsed.search === \"\" ? \"?\" : urlParsed.search;\n\n const searchPieces: string[] = [];\n\n for (const pair of searchString.slice(1).split(\"&\")) {\n if (pair) {\n const [key] = pair.split(\"=\", 2);\n if (key !== encodedName) {\n searchPieces.push(pair);\n }\n }\n }\n if (encodedValue) {\n searchPieces.push(`${encodedName}=${encodedValue}`);\n }\n\n urlParsed.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n\n return urlParsed.toString();\n}\n\n/**\n * Get URL parameter by name.\n *\n * @param url -\n * @param name -\n */\nexport function getURLParameter(url: string, name: string): string | string[] | undefined {\n const urlParsed = new URL(url);\n return urlParsed.searchParams.get(name) ?? undefined;\n}\n\n/**\n * Set URL host.\n *\n * @param url - Source URL string\n * @param host - New host string\n * @returns An updated URL string\n */\nexport function setURLHost(url: string, host: string): string {\n const urlParsed = new URL(url);\n urlParsed.hostname = host;\n return urlParsed.toString();\n}\n\n/**\n * Get URL path from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPath(url: string): string | undefined {\n try {\n const urlParsed = new URL(url);\n return urlParsed.pathname;\n } catch (e) {\n return undefined;\n }\n}\n\n/**\n * Set URL path.\n *\n * @param url -\n * @param path -\n */\nexport function setURLPath(url: string, path: string): string {\n const urlParsed = new URL(url);\n urlParsed.pathname = path;\n return urlParsed.toString();\n}\n\n/**\n * Get URL scheme from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLScheme(url: string): string | undefined {\n try {\n const urlParsed = new URL(url);\n return urlParsed.protocol.endsWith(\":\") ? urlParsed.protocol.slice(0, -1) : urlParsed.protocol;\n } catch (e) {\n return undefined;\n }\n}\n\n/**\n * Get URL path and query from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPathAndQuery(url: string): string | undefined {\n const urlParsed = new URL(url);\n const pathString = urlParsed.pathname;\n if (!pathString) {\n throw new RangeError(\"Invalid url without valid path.\");\n }\n\n let queryString = urlParsed.search || \"\";\n queryString = queryString.trim();\n if (queryString !== \"\") {\n queryString = queryString.startsWith(\"?\") ? queryString : `?${queryString}`; // Ensure query string start with '?'\n }\n\n return `${pathString}${queryString}`;\n}\n\n/**\n * Get URL query key value pairs from an URL string.\n *\n * @param url -\n */\nexport function getURLQueries(url: string): { [key: string]: string } {\n let queryString = new URL(url).search;\n if (!queryString) {\n return {};\n }\n\n queryString = queryString.trim();\n queryString = queryString.startsWith(\"?\") ? queryString.substring(1) : queryString;\n\n let querySubStrings: string[] = queryString.split(\"&\");\n querySubStrings = querySubStrings.filter((value: string) => {\n const indexOfEqual = value.indexOf(\"=\");\n const lastIndexOfEqual = value.lastIndexOf(\"=\");\n return (\n indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1\n );\n });\n\n const queries: { [key: string]: string } = {};\n for (const querySubString of querySubStrings) {\n const splitResults = querySubString.split(\"=\");\n const key: string = splitResults[0];\n const value: string = splitResults[1];\n queries[key] = value;\n }\n\n return queries;\n}\n\n/**\n * Set URL query string.\n *\n * @param url -\n * @param queryString -\n */\nexport function setURLQueries(url: string, queryString: string): string {\n const urlParsed = new URL(url);\n urlParsed.search = queryString;\n return urlParsed.toString();\n}\n\n/**\n * Rounds a date off to seconds.\n *\n * @param date -\n * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;\n * If false, YYYY-MM-DDThh:mm:ssZ will be returned.\n * @returns Date string in ISO8061 format, with or without 7 milliseconds component\n */\nexport function truncatedISO8061Date(date: Date, withMilliseconds: boolean = true): string {\n // Date.toISOString() will return like \"2018-10-29T06:34:36.139Z\"\n const dateString = date.toISOString();\n\n return withMilliseconds\n ? dateString.substring(0, dateString.length - 1) + \"0000\" + \"Z\"\n : dateString.substring(0, dateString.length - 5) + \"Z\";\n}\n\n/**\n * Base64 encode.\n *\n * @param content -\n */\nexport function base64encode(content: string): string {\n return !isNodeLike ? btoa(content) : Buffer.from(content).toString(\"base64\");\n}\n\n/**\n * Base64 decode.\n *\n * @param encodedString -\n */\nexport function base64decode(encodedString: string): string {\n return !isNodeLike ? atob(encodedString) : Buffer.from(encodedString, \"base64\").toString();\n}\n\n/**\n * Generate a 64 bytes base64 block ID string.\n *\n * @param blockIndex -\n */\nexport function generateBlockID(blockIDPrefix: string, blockIndex: number): string {\n // To generate a 64 bytes base64 string, source string should be 48\n const maxSourceStringLength = 48;\n\n // A blob can have a maximum of 100,000 uncommitted blocks at any given time\n const maxBlockIndexLength = 6;\n\n const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;\n\n if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {\n blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);\n }\n const res =\n blockIDPrefix +\n blockIndex.toString().padStart(maxSourceStringLength - blockIDPrefix.length, \"0\");\n return base64encode(res);\n}\n\nexport function sanitizeURL(url: string): string {\n let safeURL: string = url;\n if (getURLParameter(safeURL, UrlConstants.Parameters.SIGNATURE)) {\n safeURL = setURLParameter(safeURL, UrlConstants.Parameters.SIGNATURE, \"*****\");\n }\n\n return safeURL;\n}\n\nexport function sanitizeHeaders(originalHeader: HttpHeaders): HttpHeaders {\n const headers: HttpHeaders = createHttpHeaders();\n for (const [name, value] of originalHeader) {\n if (name.toLowerCase() === HeaderConstants.AUTHORIZATION.toLowerCase()) {\n headers.set(name, \"*****\");\n } else if (name.toLowerCase() === HeaderConstants.X_MS_COPY_SOURCE) {\n headers.set(name, sanitizeURL(value));\n } else {\n headers.set(name, value);\n }\n }\n\n return headers;\n}\n/**\n * If two strings are equal when compared case insensitive.\n *\n * @param str1 -\n * @param str2 -\n */\nexport function iEqual(str1: string, str2: string): boolean {\n return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();\n}\n\n/**\n * Extracts account name from the url\n * @param url - url to extract the account name from\n * @returns with the account name\n */\nexport function getAccountNameFromUrl(url: string): string {\n const parsedUrl = new URL(url);\n let accountName;\n try {\n if (parsedUrl.hostname.split(\".\")[1] === \"blob\") {\n // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n accountName = parsedUrl.hostname.split(\".\")[0];\n } else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/\n // .getPath() -> /devstoreaccount1/\n accountName = parsedUrl.pathname.split(\"/\")[1];\n } else {\n // Custom domain case: \"https://customdomain.com/containername/blob\".\n accountName = \"\";\n }\n return accountName;\n } catch (error: any) {\n throw new Error(\"Unable to extract accountName with provided information.\");\n }\n}\n\nexport function isIpEndpointStyle(parsedUrl: URL): boolean {\n const host = parsedUrl.host;\n\n // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.\n // Case 2: localhost(:port) or host.docker.internal, use broad regex to match port part.\n // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.\n // For valid host please refer to https://man7.org/linux/man-pages/man7/hostname.7.html.\n return (\n /^.*:.*:.*$|^(localhost|host.docker.internal)(:[0-9]+)?$|^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}(:[0-9]+)?$/.test(\n host,\n ) ||\n (Boolean(parsedUrl.port) && PathStylePorts.includes(parsedUrl.port))\n );\n}\n\n/**\n * This is to convert a Windows File Time ticks to a Date object.\n */\nexport function windowsFileTimeTicksToTime(timeNumber: string | undefined): Date | undefined {\n if (!timeNumber) return undefined;\n // A windows file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed\n // since 12:00 A.M. January 1, 1601 Coordinated Universal Time (UTC).\n // JS Date accepts a value that represents milliseconds from 12:00 A.M. January 1, 1970\n // So, we'll handle the calculations in milliseconds from here\n\n // Time in milliseconds since \"12:00 A.M. January 1, 1601\"\n const timeElapsed = parseInt(timeNumber) / 10000;\n\n if (timeElapsed === 0) return undefined;\n\n // Reference - https://stackoverflow.com/a/24188106/4137356\n\n // Milliseconds calculated relative to \"12:00 A.M. January 1, 1970\" (will be negative)\n const initialFrameOfReference = Date.UTC(1601, 0, 1);\n\n // TimeRelativeTo1970 = (TimeAt1601 - TimeAt1970) + (Current - TimeAt1601) = (Current - TimeAt1970)\n return new Date(initialFrameOfReference + timeElapsed);\n}\n\nexport function ensureCpkIfSpecified(cpk: CpkInfo | undefined, isHttps: boolean): void {\n if (cpk && !isHttps) {\n throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n }\n\n if (cpk && !cpk.encryptionAlgorithm) {\n cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n }\n}\n\nexport function ToBlobContainerEncryptionScope(\n fileSystemEncryptionScope?: FileSystemEncryptionScope,\n): ContainerEncryptionScope | undefined {\n if (!fileSystemEncryptionScope) return undefined;\n\n if (!fileSystemEncryptionScope.defaultEncryptionScope) return undefined;\n\n return {\n defaultEncryptionScope: fileSystemEncryptionScope.defaultEncryptionScope,\n preventEncryptionScopeOverride: true,\n };\n}\n\n/**\n * Escape the file or directory name but keep path separator ('/').\n */\nexport function EscapePath(pathName: string): string {\n const split = pathName.split(\"/\");\n for (let i = 0; i < split.length; i++) {\n split[i] = encodeURIComponent(split[i]);\n }\n return split.join(\"/\");\n}\n\n/**\n * A typesafe helper for ensuring that a given response object has\n * the original _response attached.\n * @param response - A response object from calling a client operation\n * @returns The same object, but with known _response property\n */\nexport function assertResponse<T extends object, Headers = undefined, Body = undefined>(\n response: T,\n): WithResponse<T, Headers, Body> {\n if (`_response` in response) {\n return response as WithResponse<T, Headers, Body>;\n }\n\n throw new TypeError(`Unexpected response object ${response}`);\n}\n\nexport interface PathGetPropertiesRawResponseWithExtraPropertiesLike {\n encryptionContext?: string;\n owner?: string;\n group?: string;\n permissions?: PathPermissions;\n acl: PathAccessControlItem[];\n _response: HttpResponse & {\n parsedHeaders: {\n encryptionContext?: string;\n owner?: string;\n group?: string;\n permissions?: PathPermissions;\n acl: PathAccessControlItem[];\n };\n };\n}\n\nfunction ParseHeaderValue(\n rawResponse: PathGetPropertiesRawResponseWithExtraPropertiesLike,\n headerName: string,\n): string | undefined {\n if (rawResponse._response) {\n const headers = rawResponse._response.headers as HttpHeadersLike;\n if (headers) {\n return headers.get(headerName);\n }\n }\n\n return undefined;\n}\n\n/**\n * Parse extra properties values from headers in raw response.\n */\nexport function ParsePathGetPropertiesExtraHeaderValues(\n rawResponse: PathGetPropertiesRawResponseWithExtraPropertiesLike,\n): PathGetPropertiesRawResponseWithExtraPropertiesLike {\n const response = rawResponse;\n response.encryptionContext = ParseHeaderValue(rawResponse, \"x-ms-encryption-context\");\n response.owner = ParseHeaderValue(rawResponse, \"x-ms-owner\");\n response.group = ParseHeaderValue(rawResponse, \"x-ms-group\");\n response.permissions = toPermissions(ParseHeaderValue(rawResponse, \"x-ms-permissions\"));\n response.acl = toAcl(ParseHeaderValue(rawResponse, \"x-ms-acl\"));\n if (response._response?.parsedHeaders) {\n response._response.parsedHeaders.encryptionContext = response.encryptionContext;\n response._response.parsedHeaders.owner = response.owner;\n response._response.parsedHeaders.group = response.group;\n response._response.parsedHeaders.permissions = response.permissions;\n response._response.parsedHeaders.acl = response.acl;\n }\n return response;\n}\n"]}
1
+ {"version":3,"file":"utils.common.js","sourceRoot":"","sources":["../../../src/utils/utils.common.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { HttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport type { ContainerEncryptionScope, WithResponse } from \"@azure/storage-blob\";\nimport type {\n CpkInfo,\n FileSystemEncryptionScope,\n PathAccessControlItem,\n PathPermissions,\n} from \"../models.js\";\n\nimport {\n DevelopmentConnectionString,\n EncryptionAlgorithmAES25,\n HeaderConstants,\n PathStylePorts,\n UrlConstants,\n} from \"./constants.js\";\nimport type { HttpResponse } from \"@azure/storage-blob\";\nimport type { HttpHeadersLike } from \"@azure/core-http-compat\";\nimport { toAcl, toPermissions } from \"../transforms.js\";\n\n/**\n * Reserved URL characters must be properly escaped for Storage services like Blob or File.\n *\n * ## URL encode and escape strategy for JS SDKs\n *\n * When customers pass a URL string into XxxClient classes constructors, the URL string may already be URL encoded or not.\n * But before sending to Azure Storage server, the URL must be encoded. However, it's hard for a SDK to guess whether the URL\n * string has been encoded or not. We have 2 potential strategies, and chose strategy two for the XxxClient constructors.\n *\n * ### Strategy One: Assume the customer URL string is not encoded, and always encode URL string in SDK.\n *\n * This is what legacy V2 SDK does, simple and works for most of the cases.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%253A\" and send to server. A blob named \"b%3A\" will be created.\n *\n * But this strategy will make it not possible to create a blob with \"?\" in it's name. Because when customer URL string is\n * \"http://account.blob.core.windows.net/con/blob?name\", the \"?name\" will be treated as URL paramter instead of blob name.\n * If customer URL string is \"http://account.blob.core.windows.net/con/blob%3Fname\", a blob named \"blob%3Fname\" will be created.\n * V2 SDK doesn't have this issue because it doesn't allow customer pass in a full URL, it accepts a separate blob name and encodeURIComponent for it.\n * We cannot accept a SDK cannot create a blob name with \"?\". So we implement strategy two:\n *\n * ### Strategy Two: SDK doesn't assume the URL has been encoded or not. It will just escape the special characters.\n *\n * This is what V10 Blob Go SDK does. It accepts a URL type in Go, and call url.EscapedPath() to escape the special chars unescaped.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will escape \":\" like \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%3A\" to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%253A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%253A\" to server. A blob named \"b%3A\" will be created.\n *\n * This strategy gives us flexibility to create with any special characters. But \"%\" will be treated as a special characters, if the URL string\n * is not encoded, there shouldn't a \"%\" in the URL string, otherwise the URL is not a valid URL.\n * If customer needs to create a blob with \"%\" in it's blob name, use \"%25\" instead of \"%\". Just like above 3rd sample.\n * And following URL strings are invalid:\n * - \"http://account.blob.core.windows.net/con/b%\"\n * - \"http://account.blob.core.windows.net/con/b%2\"\n * - \"http://account.blob.core.windows.net/con/b%G\"\n *\n * Another special character is \"?\", use \"%2F\" to represent a blob name with \"?\" in a URL string.\n *\n * ### Strategy for containerName, blobName or other specific XXXName parameters in methods such as `containerClient.getBlobClient(blobName)`\n *\n * We will apply strategy one, and call encodeURIComponent for these parameters like blobName. Because what customers passes in is a plain name instead of a URL.\n *\n * @see https://learn.microsoft.com/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n * @see https://learn.microsoft.com/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata\n *\n * @param url -\n */\nexport function escapeURLPath(url: string): string {\n const urlParsed = new URL(url);\n\n let path = urlParsed.pathname;\n path = path || \"/\";\n\n path = escape(path);\n urlParsed.pathname = path;\n\n return urlParsed.toString();\n}\n\nexport interface ConnectionString {\n kind: \"AccountConnString\" | \"SASConnString\";\n url: string;\n accountName: string;\n accountKey?: any;\n accountSas?: string;\n proxyUri?: string; // Development Connection String may contain proxyUri\n}\n\nfunction getProxyUriFromDevConnString(connectionString: string): string {\n // Development Connection String\n // https://learn.microsoft.com/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key\n let proxyUri = \"\";\n if (connectionString.search(\"DevelopmentStorageProxyUri=\") !== -1) {\n // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri\n const matchCredentials = connectionString.split(\";\");\n for (const element of matchCredentials) {\n if (element.trim().startsWith(\"DevelopmentStorageProxyUri=\")) {\n proxyUri = element.trim().match(\"DevelopmentStorageProxyUri=(.*)\")![1];\n }\n }\n }\n return proxyUri;\n}\n\nexport function getValueInConnString(\n connectionString: string,\n argument:\n | \"BlobEndpoint\"\n | \"AccountName\"\n | \"AccountKey\"\n | \"DefaultEndpointsProtocol\"\n | \"EndpointSuffix\"\n | \"SharedAccessSignature\",\n): string {\n const elements = connectionString.split(\";\");\n for (const element of elements) {\n if (element.trim().startsWith(argument)) {\n return element.trim().match(argument + \"=(.*)\")![1];\n }\n }\n return \"\";\n}\n\n/**\n * Extracts the parts of an Azure Storage account connection string.\n *\n * @param connectionString - Connection string.\n * @returns String key value pairs of the storage account's url and credentials.\n */\nexport function extractConnectionStringParts(connectionString: string): ConnectionString {\n let proxyUri = \"\";\n\n if (connectionString.startsWith(\"UseDevelopmentStorage=true\")) {\n // Development connection string\n proxyUri = getProxyUriFromDevConnString(connectionString);\n connectionString = DevelopmentConnectionString;\n }\n\n // Matching BlobEndpoint in the Account connection string\n let blobEndpoint = getValueInConnString(connectionString, \"BlobEndpoint\");\n // Slicing off '/' at the end if exists\n // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)\n blobEndpoint = blobEndpoint.endsWith(\"/\") ? blobEndpoint.slice(0, -1) : blobEndpoint;\n\n if (\n connectionString.search(\"DefaultEndpointsProtocol=\") !== -1 &&\n connectionString.search(\"AccountKey=\") !== -1\n ) {\n // Account connection string\n\n let defaultEndpointsProtocol = \"\";\n let accountName = \"\";\n let accountKey = Buffer.from(\"accountKey\", \"base64\");\n let endpointSuffix = \"\";\n\n // Get account name and key\n accountName = getValueInConnString(connectionString, \"AccountName\");\n accountKey = Buffer.from(getValueInConnString(connectionString, \"AccountKey\"), \"base64\");\n\n if (!blobEndpoint) {\n // BlobEndpoint is not present in the Account connection string\n // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`\n\n defaultEndpointsProtocol = getValueInConnString(connectionString, \"DefaultEndpointsProtocol\");\n const protocol = defaultEndpointsProtocol!.toLowerCase();\n if (protocol !== \"https\" && protocol !== \"http\") {\n throw new Error(\n \"Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'\",\n );\n }\n\n endpointSuffix = getValueInConnString(connectionString, \"EndpointSuffix\");\n if (!endpointSuffix) {\n throw new Error(\"Invalid EndpointSuffix in the provided Connection String\");\n }\n blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n }\n\n if (!accountName) {\n throw new Error(\"Invalid AccountName in the provided Connection String\");\n } else if (accountKey.length === 0) {\n throw new Error(\"Invalid AccountKey in the provided Connection String\");\n }\n\n return {\n kind: \"AccountConnString\",\n url: blobEndpoint,\n accountName,\n accountKey,\n proxyUri,\n };\n } else {\n // SAS connection string\n\n const accountSas = getValueInConnString(connectionString, \"SharedAccessSignature\");\n let accountName = getValueInConnString(connectionString, \"AccountName\");\n // if accountName is empty, try to read it from BlobEndpoint\n if (!accountName) {\n accountName = getAccountNameFromUrl(blobEndpoint);\n }\n if (!blobEndpoint) {\n throw new Error(\"Invalid BlobEndpoint in the provided SAS Connection String\");\n } else if (!accountSas) {\n throw new Error(\"Invalid SharedAccessSignature in the provided SAS Connection String\");\n }\n\n return { kind: \"SASConnString\", url: blobEndpoint, accountName, accountSas };\n }\n}\n\n/**\n * Internal escape method implemented Strategy Two mentioned in escapeURL() description.\n *\n * @param text -\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nfunction escape(text: string): string {\n return encodeURIComponent(text)\n .replace(/%2F/g, \"/\") // Don't escape for \"/\"\n .replace(/'/g, \"%27\") // Escape for \"'\"\n .replace(/\\+/g, \"%20\")\n .replace(/%25/g, \"%\"); // Revert encoded \"%\"\n}\n\n/**\n * Append a string to URL path. Will remove duplicated \"/\" in front of the string\n * when URL path ends with a \"/\".\n *\n * @param url - Source URL string\n * @param name - String to be appended to URL\n * @returns An updated URL string\n */\nexport function appendToURLPath(url: string, name: string): string {\n const urlParsed = new URL(url);\n\n let path = urlParsed.pathname;\n path = path ? (path.endsWith(\"/\") ? `${path}${name}` : `${path}/${name}`) : name;\n urlParsed.pathname = path;\n\n return urlParsed.toString();\n}\n\n/**\n * Append a string to URL query.\n *\n * @param url - Source URL string.\n * @param queryParts - String to be appended to the URL query.\n * @returns An updated URL string.\n */\nexport function appendToURLQuery(url: string, queryParts: string): string {\n const urlParsed = new URL(url);\n\n let query = urlParsed.search;\n if (query) {\n query += \"&\" + queryParts;\n } else {\n query = queryParts;\n }\n\n urlParsed.search = query;\n return urlParsed.toString();\n}\n\n/**\n * Set URL parameter name and value. If name exists in URL parameters, old value\n * will be replaced by name key. If not provide value, the parameter will be deleted.\n *\n * @param url - Source URL string\n * @param name - Parameter name\n * @param value - Parameter value\n * @returns An updated URL string\n */\nexport function setURLParameter(url: string, name: string, value?: string): string {\n const urlParsed = new URL(url);\n const encodedName = encodeURIComponent(name);\n const encodedValue = value ? encodeURIComponent(value) : undefined;\n // mutating searchParams will change the encoding, so we have to do this ourselves\n const searchString = urlParsed.search === \"\" ? \"?\" : urlParsed.search;\n\n const searchPieces: string[] = [];\n\n for (const pair of searchString.slice(1).split(\"&\")) {\n if (pair) {\n const [key] = pair.split(\"=\", 2);\n if (key !== encodedName) {\n searchPieces.push(pair);\n }\n }\n }\n if (encodedValue) {\n searchPieces.push(`${encodedName}=${encodedValue}`);\n }\n\n urlParsed.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n\n return urlParsed.toString();\n}\n\n/**\n * Get URL parameter by name.\n *\n * @param url -\n * @param name -\n */\nexport function getURLParameter(url: string, name: string): string | string[] | undefined {\n const urlParsed = new URL(url);\n return urlParsed.searchParams.get(name) ?? undefined;\n}\n\n/**\n * Set URL host.\n *\n * @param url - Source URL string\n * @param host - New host string\n * @returns An updated URL string\n */\nexport function setURLHost(url: string, host: string): string {\n const urlParsed = new URL(url);\n urlParsed.hostname = host;\n return urlParsed.toString();\n}\n\n/**\n * Get URL path from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPath(url: string): string | undefined {\n try {\n const urlParsed = new URL(url);\n return urlParsed.pathname;\n } catch (e) {\n return undefined;\n }\n}\n\n/**\n * Set URL path.\n *\n * @param url -\n * @param path -\n */\nexport function setURLPath(url: string, path: string): string {\n const urlParsed = new URL(url);\n urlParsed.pathname = path;\n return urlParsed.toString();\n}\n\n/**\n * Get URL scheme from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLScheme(url: string): string | undefined {\n try {\n const urlParsed = new URL(url);\n return urlParsed.protocol.endsWith(\":\") ? urlParsed.protocol.slice(0, -1) : urlParsed.protocol;\n } catch (e) {\n return undefined;\n }\n}\n\n/**\n * Get URL path and query from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPathAndQuery(url: string): string | undefined {\n const urlParsed = new URL(url);\n const pathString = urlParsed.pathname;\n if (!pathString) {\n throw new RangeError(\"Invalid url without valid path.\");\n }\n\n let queryString = urlParsed.search || \"\";\n queryString = queryString.trim();\n if (queryString !== \"\") {\n queryString = queryString.startsWith(\"?\") ? queryString : `?${queryString}`; // Ensure query string start with '?'\n }\n\n return `${pathString}${queryString}`;\n}\n\n/**\n * Get URL query key value pairs from an URL string.\n *\n * @param url -\n */\nexport function getURLQueries(url: string): { [key: string]: string } {\n let queryString = new URL(url).search;\n if (!queryString) {\n return {};\n }\n\n queryString = queryString.trim();\n queryString = queryString.startsWith(\"?\") ? queryString.substring(1) : queryString;\n\n let querySubStrings: string[] = queryString.split(\"&\");\n querySubStrings = querySubStrings.filter((value: string) => {\n const indexOfEqual = value.indexOf(\"=\");\n const lastIndexOfEqual = value.lastIndexOf(\"=\");\n return (\n indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1\n );\n });\n\n const queries: { [key: string]: string } = {};\n for (const querySubString of querySubStrings) {\n const splitResults = querySubString.split(\"=\");\n const key: string = splitResults[0];\n const value: string = splitResults[1];\n queries[key] = value;\n }\n\n return queries;\n}\n\n/**\n * Set URL query string.\n *\n * @param url -\n * @param queryString -\n */\nexport function setURLQueries(url: string, queryString: string): string {\n const urlParsed = new URL(url);\n urlParsed.search = queryString;\n return urlParsed.toString();\n}\n\n/**\n * Rounds a date off to seconds.\n *\n * @param date -\n * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;\n * If false, YYYY-MM-DDThh:mm:ssZ will be returned.\n * @returns Date string in ISO8061 format, with or without 7 milliseconds component\n */\nexport function truncatedISO8061Date(date: Date, withMilliseconds: boolean = true): string {\n // Date.toISOString() will return like \"2018-10-29T06:34:36.139Z\"\n const dateString = date.toISOString();\n\n return withMilliseconds\n ? dateString.substring(0, dateString.length - 1) + \"0000\" + \"Z\"\n : dateString.substring(0, dateString.length - 5) + \"Z\";\n}\n\n/**\n * Base64 encode.\n *\n * @param content -\n */\nexport function base64encode(content: string): string {\n return !isNodeLike ? btoa(content) : Buffer.from(content).toString(\"base64\");\n}\n\n/**\n * Base64 decode.\n *\n * @param encodedString -\n */\nexport function base64decode(encodedString: string): string {\n return !isNodeLike ? atob(encodedString) : Buffer.from(encodedString, \"base64\").toString();\n}\n\n/**\n * Generate a 64 bytes base64 block ID string.\n *\n * @param blockIndex -\n */\nexport function generateBlockID(blockIDPrefix: string, blockIndex: number): string {\n // To generate a 64 bytes base64 string, source string should be 48\n const maxSourceStringLength = 48;\n\n // A blob can have a maximum of 100,000 uncommitted blocks at any given time\n const maxBlockIndexLength = 6;\n\n const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;\n\n if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {\n blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);\n }\n const res =\n blockIDPrefix +\n blockIndex.toString().padStart(maxSourceStringLength - blockIDPrefix.length, \"0\");\n return base64encode(res);\n}\n\nexport function sanitizeURL(url: string): string {\n let safeURL: string = url;\n if (getURLParameter(safeURL, UrlConstants.Parameters.SIGNATURE)) {\n safeURL = setURLParameter(safeURL, UrlConstants.Parameters.SIGNATURE, \"*****\");\n }\n\n return safeURL;\n}\n\nexport function sanitizeHeaders(originalHeader: HttpHeaders): HttpHeaders {\n const headers: HttpHeaders = createHttpHeaders();\n for (const [name, value] of originalHeader) {\n if (name.toLowerCase() === HeaderConstants.AUTHORIZATION.toLowerCase()) {\n headers.set(name, \"*****\");\n } else if (name.toLowerCase() === HeaderConstants.X_MS_COPY_SOURCE) {\n headers.set(name, sanitizeURL(value));\n } else {\n headers.set(name, value);\n }\n }\n\n return headers;\n}\n/**\n * If two strings are equal when compared case insensitive.\n *\n * @param str1 -\n * @param str2 -\n */\nexport function iEqual(str1: string, str2: string): boolean {\n return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();\n}\n\n/**\n * Extracts account name from the url\n * @param url - url to extract the account name from\n * @returns with the account name\n */\nexport function getAccountNameFromUrl(url: string): string {\n const parsedUrl = new URL(url);\n let accountName;\n try {\n if (parsedUrl.hostname.split(\".\")[1] === \"blob\") {\n // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n accountName = parsedUrl.hostname.split(\".\")[0];\n } else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/\n // .getPath() -> /devstoreaccount1/\n accountName = parsedUrl.pathname.split(\"/\")[1];\n } else {\n // Custom domain case: \"https://customdomain.com/containername/blob\".\n accountName = \"\";\n }\n return accountName;\n } catch (error: any) {\n throw new Error(\"Unable to extract accountName with provided information.\");\n }\n}\n\nexport function isIpEndpointStyle(parsedUrl: URL): boolean {\n const host = parsedUrl.host;\n\n // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.\n // Case 2: localhost(:port) or host.docker.internal, use broad regex to match port part.\n // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.\n // For valid host please refer to https://man7.org/linux/man-pages/man7/hostname.7.html.\n return (\n /^.*:.*:.*$|^(localhost|host.docker.internal)(:[0-9]+)?$|^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}(:[0-9]+)?$/.test(\n host,\n ) ||\n (Boolean(parsedUrl.port) && PathStylePorts.includes(parsedUrl.port))\n );\n}\n\n/**\n * This is to convert a Windows File Time ticks to a Date object.\n */\nexport function windowsFileTimeTicksToTime(timeNumber: string | undefined): Date | undefined {\n if (!timeNumber) return undefined;\n // A windows file time is a 64-bit value that represents the number of 100-nanosecond intervals that have elapsed\n // since 12:00 A.M. January 1, 1601 Coordinated Universal Time (UTC).\n // JS Date accepts a value that represents milliseconds from 12:00 A.M. January 1, 1970\n // So, we'll handle the calculations in milliseconds from here\n\n // Time in milliseconds since \"12:00 A.M. January 1, 1601\"\n const timeElapsed = parseInt(timeNumber) / 10000;\n\n if (timeElapsed === 0) return undefined;\n\n // Reference - https://stackoverflow.com/a/24188106/4137356\n\n // Milliseconds calculated relative to \"12:00 A.M. January 1, 1970\" (will be negative)\n const initialFrameOfReference = Date.UTC(1601, 0, 1);\n\n // TimeRelativeTo1970 = (TimeAt1601 - TimeAt1970) + (Current - TimeAt1601) = (Current - TimeAt1970)\n return new Date(initialFrameOfReference + timeElapsed);\n}\n\nexport function ensureCpkIfSpecified(cpk: CpkInfo | undefined, isHttps: boolean): void {\n if (cpk && !isHttps) {\n throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n }\n\n if (cpk && !cpk.encryptionAlgorithm) {\n cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n }\n}\n\nexport function ToBlobContainerEncryptionScope(\n fileSystemEncryptionScope?: FileSystemEncryptionScope,\n): ContainerEncryptionScope | undefined {\n if (!fileSystemEncryptionScope) return undefined;\n\n if (!fileSystemEncryptionScope.defaultEncryptionScope) return undefined;\n\n return {\n defaultEncryptionScope: fileSystemEncryptionScope.defaultEncryptionScope,\n preventEncryptionScopeOverride: true,\n };\n}\n\n/**\n * Escape the file or directory name but keep path separator ('/').\n */\nexport function EscapePath(pathName: string): string {\n const split = pathName.split(\"/\");\n for (let i = 0; i < split.length; i++) {\n split[i] = encodeURIComponent(split[i]);\n }\n return split.join(\"/\");\n}\n\n/**\n * A typesafe helper for ensuring that a given response object has\n * the original _response attached.\n * @param response - A response object from calling a client operation\n * @returns The same object, but with known _response property\n */\nexport function assertResponse<T extends object, Headers = undefined, Body = undefined>(\n response: T,\n): WithResponse<T, Headers, Body> {\n if (`_response` in response) {\n return response as WithResponse<T, Headers, Body>;\n }\n\n throw new TypeError(`Unexpected response object ${response}`);\n}\n\nexport interface PathGetPropertiesRawResponseWithExtraPropertiesLike {\n encryptionContext?: string;\n owner?: string;\n group?: string;\n permissions?: PathPermissions;\n acl: PathAccessControlItem[];\n _response: HttpResponse & {\n parsedHeaders: {\n encryptionContext?: string;\n owner?: string;\n group?: string;\n permissions?: PathPermissions;\n acl: PathAccessControlItem[];\n };\n };\n}\n\nfunction ParseHeaderValue(\n rawResponse: PathGetPropertiesRawResponseWithExtraPropertiesLike,\n headerName: string,\n): string | undefined {\n if (rawResponse._response) {\n const headers = rawResponse._response.headers as HttpHeadersLike;\n if (headers) {\n return headers.get(headerName);\n }\n }\n\n return undefined;\n}\n\n/**\n * Parse extra properties values from headers in raw response.\n */\nexport function ParsePathGetPropertiesExtraHeaderValues(\n rawResponse: PathGetPropertiesRawResponseWithExtraPropertiesLike,\n): PathGetPropertiesRawResponseWithExtraPropertiesLike {\n const response = rawResponse;\n response.encryptionContext = ParseHeaderValue(rawResponse, \"x-ms-encryption-context\");\n response.owner = ParseHeaderValue(rawResponse, \"x-ms-owner\");\n response.group = ParseHeaderValue(rawResponse, \"x-ms-group\");\n response.permissions = toPermissions(ParseHeaderValue(rawResponse, \"x-ms-permissions\"));\n response.acl = toAcl(ParseHeaderValue(rawResponse, \"x-ms-acl\"));\n if (response._response?.parsedHeaders) {\n response._response.parsedHeaders.encryptionContext = response.encryptionContext;\n response._response.parsedHeaders.owner = response.owner;\n response._response.parsedHeaders.group = response.group;\n response._response.parsedHeaders.permissions = response.permissions;\n response._response.parsedHeaders.acl = response.acl;\n }\n return response;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import * as fs from "node:fs";
1
+ import fs from "node:fs";
2
2
  /**
3
3
  * Reads a readable stream into buffer. Fill the buffer from offset to end.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,8BAA0B,CAAC;AAE9C,eAAO,MAAM,kBAAkB,4BAAsB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,CAAC,cAAc,EAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,8BAA0B,CAAC;AAE9C,eAAO,MAAM,kBAAkB,4BAAsB,CAAC"}
@@ -6,8 +6,8 @@ exports.fsCreateReadStream = exports.fsStat = void 0;
6
6
  exports.streamToBuffer = streamToBuffer;
7
7
  exports.streamToBuffer2 = streamToBuffer2;
8
8
  const tslib_1 = require("tslib");
9
- const fs = tslib_1.__importStar(require("node:fs"));
10
- const util = tslib_1.__importStar(require("node:util"));
9
+ const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
10
+ const node_util_1 = tslib_1.__importDefault(require("node:util"));
11
11
  /**
12
12
  * Reads a readable stream into buffer. Fill the buffer from offset to end.
13
13
  *
@@ -86,6 +86,6 @@ async function streamToBuffer2(stream, buffer, encoding) {
86
86
  *
87
87
  * Promisified version of fs.stat().
88
88
  */
89
- exports.fsStat = util.promisify(fs.stat);
90
- exports.fsCreateReadStream = fs.createReadStream;
89
+ exports.fsStat = node_util_1.default.promisify(node_fs_1.default.stat);
90
+ exports.fsCreateReadStream = node_fs_1.default.createReadStream;
91
91
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport * as fs from \"node:fs\";\nimport * as util from \"node:util\";\n\n/**\n * Reads a readable stream into buffer. Fill the buffer from offset to end.\n *\n * @param stream - A Node.js Readable stream\n * @param buffer - Buffer to be filled, length must greater than or equal to offset\n * @param offset - From which position in the buffer to be filled, inclusive\n * @param end - To which position in the buffer to be filled, exclusive\n * @param encoding - Encoding of the Readable stream\n */\nexport async function streamToBuffer(\n stream: NodeJS.ReadableStream,\n buffer: Buffer,\n offset: number,\n end: number,\n encoding?: BufferEncoding,\n): Promise<void> {\n let pos = 0; // Position in stream\n const count = end - offset; // Total amount of data needed in stream\n\n return new Promise<void>((resolve, reject) => {\n stream.on(\"readable\", () => {\n if (pos >= count) {\n resolve();\n return;\n }\n\n let chunk = stream.read();\n if (!chunk) {\n return;\n }\n if (typeof chunk === \"string\") {\n chunk = Buffer.from(chunk, encoding);\n }\n\n // How much data needed in this chunk\n const chunkLength = pos + chunk.length > count ? count - pos : chunk.length;\n\n buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);\n pos += chunkLength;\n });\n\n stream.on(\"end\", () => {\n if (pos < count) {\n reject(\n new Error(\n `Stream drains before getting enough data needed. Data read: ${pos}, data need: ${count}`,\n ),\n );\n }\n resolve();\n });\n\n stream.on(\"error\", reject);\n });\n}\n\n/**\n * Reads a readable stream into buffer entirely.\n *\n * @param stream - A Node.js Readable stream\n * @param buffer - Buffer to be filled, length must greater than or equal to offset\n * @param encoding - Encoding of the Readable stream\n * @returns with the count of bytes read.\n * @throws `RangeError` If buffer size is not big enough.\n */\nexport async function streamToBuffer2(\n stream: NodeJS.ReadableStream,\n buffer: Buffer,\n encoding?: BufferEncoding,\n): Promise<number> {\n let pos = 0; // Position in stream\n const bufferSize = buffer.length;\n\n return new Promise<number>((resolve, reject) => {\n stream.on(\"readable\", () => {\n let chunk = stream.read();\n if (!chunk) {\n return;\n }\n if (typeof chunk === \"string\") {\n chunk = Buffer.from(chunk, encoding);\n }\n\n if (pos + chunk.length > bufferSize) {\n reject(new Error(`Stream exceeds buffer size. Buffer size: ${bufferSize}`));\n return;\n }\n\n buffer.fill(chunk, pos, pos + chunk.length);\n pos += chunk.length;\n });\n\n stream.on(\"end\", () => {\n resolve(pos);\n });\n\n stream.on(\"error\", reject);\n });\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Promisified version of fs.stat().\n */\nexport const fsStat = util.promisify(fs.stat);\n\nexport const fsCreateReadStream = fs.createReadStream;\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/utils/utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport fs from \"node:fs\";\nimport util from \"node:util\";\n\n/**\n * Reads a readable stream into buffer. Fill the buffer from offset to end.\n *\n * @param stream - A Node.js Readable stream\n * @param buffer - Buffer to be filled, length must greater than or equal to offset\n * @param offset - From which position in the buffer to be filled, inclusive\n * @param end - To which position in the buffer to be filled, exclusive\n * @param encoding - Encoding of the Readable stream\n */\nexport async function streamToBuffer(\n stream: NodeJS.ReadableStream,\n buffer: Buffer,\n offset: number,\n end: number,\n encoding?: BufferEncoding,\n): Promise<void> {\n let pos = 0; // Position in stream\n const count = end - offset; // Total amount of data needed in stream\n\n return new Promise<void>((resolve, reject) => {\n stream.on(\"readable\", () => {\n if (pos >= count) {\n resolve();\n return;\n }\n\n let chunk = stream.read();\n if (!chunk) {\n return;\n }\n if (typeof chunk === \"string\") {\n chunk = Buffer.from(chunk, encoding);\n }\n\n // How much data needed in this chunk\n const chunkLength = pos + chunk.length > count ? count - pos : chunk.length;\n\n buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);\n pos += chunkLength;\n });\n\n stream.on(\"end\", () => {\n if (pos < count) {\n reject(\n new Error(\n `Stream drains before getting enough data needed. Data read: ${pos}, data need: ${count}`,\n ),\n );\n }\n resolve();\n });\n\n stream.on(\"error\", reject);\n });\n}\n\n/**\n * Reads a readable stream into buffer entirely.\n *\n * @param stream - A Node.js Readable stream\n * @param buffer - Buffer to be filled, length must greater than or equal to offset\n * @param encoding - Encoding of the Readable stream\n * @returns with the count of bytes read.\n * @throws `RangeError` If buffer size is not big enough.\n */\nexport async function streamToBuffer2(\n stream: NodeJS.ReadableStream,\n buffer: Buffer,\n encoding?: BufferEncoding,\n): Promise<number> {\n let pos = 0; // Position in stream\n const bufferSize = buffer.length;\n\n return new Promise<number>((resolve, reject) => {\n stream.on(\"readable\", () => {\n let chunk = stream.read();\n if (!chunk) {\n return;\n }\n if (typeof chunk === \"string\") {\n chunk = Buffer.from(chunk, encoding);\n }\n\n if (pos + chunk.length > bufferSize) {\n reject(new Error(`Stream exceeds buffer size. Buffer size: ${bufferSize}`));\n return;\n }\n\n buffer.fill(chunk, pos, pos + chunk.length);\n pos += chunk.length;\n });\n\n stream.on(\"end\", () => {\n resolve(pos);\n });\n\n stream.on(\"error\", reject);\n });\n}\n\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Promisified version of fs.stat().\n */\nexport const fsStat = util.promisify(fs.stat);\n\nexport const fsCreateReadStream = fs.createReadStream;\n"]}
@@ -72,7 +72,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
72
72
  * Creates a new file system under the specified account. If the file system with
73
73
  * the same name already exists, the operation fails.
74
74
  *
75
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-container
75
+ * @see https://learn.microsoft.com/rest/api/storageservices/create-container
76
76
  *
77
77
  * @param options - Optional. Options when creating file system.
78
78
  */
@@ -81,7 +81,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
81
81
  * Creates a new file system under the specified account. If the file system with
82
82
  * the same name already exists, it is not changed.
83
83
  *
84
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/create-container
84
+ * @see https://learn.microsoft.com/rest/api/storageservices/create-container
85
85
  *
86
86
  * @param options -
87
87
  */
@@ -99,7 +99,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
99
99
  /**
100
100
  * Delete current file system.
101
101
  *
102
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container
102
+ * @see https://learn.microsoft.com/rest/api/storageservices/delete-container
103
103
  *
104
104
  * @param options - Optional. Options when deleting file system.
105
105
  */
@@ -107,7 +107,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
107
107
  /**
108
108
  * Delete current file system if it exists.
109
109
  *
110
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container
110
+ * @see https://learn.microsoft.com/rest/api/storageservices/delete-container
111
111
  *
112
112
  * @param options -
113
113
  */
@@ -121,7 +121,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
121
121
  * the `listFileSystems` method of {@link DataLakeServiceClient} using the `includeMetadata` option, which
122
122
  * will retain their original casing.
123
123
  *
124
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties
124
+ * @see https://learn.microsoft.com/rest/api/storageservices/get-container-properties
125
125
  *
126
126
  * @param options - Optional. Options when getting file system properties.
127
127
  */
@@ -132,7 +132,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
132
132
  * If no option provided, or no metadata defined in the parameter, the file system
133
133
  * metadata will be removed.
134
134
  *
135
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-container-metadata
135
+ * @see https://learn.microsoft.com/rest/api/storageservices/set-container-metadata
136
136
  *
137
137
  * @param metadata - Replace existing metadata with this value.
138
138
  * If no value provided the existing metadata will be removed.
@@ -146,7 +146,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
146
146
  * WARNING: JavaScript Date will potentially lose precision when parsing startsOn and expiresOn strings.
147
147
  * For example, new Date("2018-12-31T03:44:23.8827891Z").toISOString() will get "2018-12-31T03:44:23.882Z".
148
148
  *
149
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-acl
149
+ * @see https://learn.microsoft.com/rest/api/storageservices/get-container-acl
150
150
  *
151
151
  * @param options - Optional. Options when getting file system access policy.
152
152
  */
@@ -159,7 +159,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
159
159
  * If no access or containerAcl provided, the existing file system ACL will be
160
160
  * removed.
161
161
  *
162
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/set-container-acl
162
+ * @see https://learn.microsoft.com/rest/api/storageservices/set-container-acl
163
163
  *
164
164
  * @param access - Optional. The level of public access to data in the file system.
165
165
  * @param fileSystemAcl - Optional. Array of elements each having a unique Id and details of the access policy.
@@ -415,7 +415,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
415
415
  /**
416
416
  * Restores a soft deleted path.
417
417
  *
418
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/undelete-blob
418
+ * @see https://learn.microsoft.com/rest/api/storageservices/undelete-blob
419
419
  *
420
420
  * @param deletedPath - Required. The path of the deleted path.
421
421
  *
@@ -429,7 +429,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
429
429
  * Generates a Service Shared Access Signature (SAS) URI based on the client properties
430
430
  * and parameters passed in. The SAS is signed by the shared key credential of the client.
431
431
  *
432
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
432
+ * @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
433
433
  *
434
434
  * @param options - Optional parameters.
435
435
  * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
@@ -441,7 +441,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
441
441
  * Generates string to sign for a Service Shared Access Signature (SAS) URI based on the client properties
442
442
  * and parameters passed in. The SAS is signed by the shared key credential of the client.
443
443
  *
444
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
444
+ * @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
445
445
  *
446
446
  * @param options - Optional parameters.
447
447
  * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
@@ -451,7 +451,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
451
451
  * Generates a Service Shared Access Signature (SAS) URI based on the client properties
452
452
  * and parameters passed in. The SAS is signed by the input user delegation key.
453
453
  *
454
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
454
+ * @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
455
455
  *
456
456
  * @param options - Optional parameters.
457
457
  * @param userDelegationKey - Return value of `blobServiceClient.getUserDelegationKey()`
@@ -462,7 +462,7 @@ export declare class DataLakeFileSystemClient extends StorageClient {
462
462
  * Generates string to sign for a Service Shared Access Signature (SAS) URI based on the client properties
463
463
  * and parameters passed in. The SAS is signed by the input user delegation key.
464
464
  *
465
- * @see https://learn.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
465
+ * @see https://learn.microsoft.com/rest/api/storageservices/constructing-a-service-sas
466
466
  *
467
467
  * @param options - Optional parameters.
468
468
  * @param userDelegationKey - Return value of `blobServiceClient.getUserDelegationKey()`