@azure/storage-common 12.0.0-beta.2 → 12.0.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 (378) hide show
  1. package/dist/browser/BuffersStream.js +14 -0
  2. package/dist/browser/BuffersStream.js.map +1 -1
  3. package/dist/browser/PooledBuffer.js +13 -5
  4. package/dist/browser/PooledBuffer.js.map +1 -1
  5. package/dist/browser/StorageBrowserPolicyFactory.d.ts +16 -0
  6. package/dist/browser/StorageBrowserPolicyFactory.d.ts.map +1 -0
  7. package/dist/browser/StorageBrowserPolicyFactory.js +19 -0
  8. package/dist/browser/StorageBrowserPolicyFactory.js.map +1 -0
  9. package/dist/browser/StorageRetryPolicyFactory.d.ts +66 -0
  10. package/dist/browser/StorageRetryPolicyFactory.d.ts.map +1 -0
  11. package/dist/browser/StorageRetryPolicyFactory.js +28 -0
  12. package/dist/browser/StorageRetryPolicyFactory.js.map +1 -0
  13. package/dist/browser/credentials/AnonymousCredential.d.ts +19 -0
  14. package/dist/browser/credentials/AnonymousCredential.d.ts.map +1 -0
  15. package/dist/browser/credentials/AnonymousCredential.js +22 -0
  16. package/dist/browser/credentials/AnonymousCredential.js.map +1 -0
  17. package/dist/browser/credentials/Credential.d.ts +20 -0
  18. package/dist/browser/credentials/Credential.d.ts.map +1 -0
  19. package/dist/browser/credentials/Credential.js +18 -0
  20. package/dist/browser/credentials/Credential.js.map +1 -0
  21. package/dist/browser/credentials/StorageSharedKeyCredential-browser.d.mts.map +1 -0
  22. package/dist/browser/credentials/StorageSharedKeyCredential-browser.mjs.map +1 -0
  23. package/dist/browser/credentials/StorageSharedKeyCredential.d.ts +3 -0
  24. package/dist/browser/credentials/StorageSharedKeyCredential.js +5 -0
  25. package/dist/browser/index-browser.d.mts.map +1 -0
  26. package/dist/browser/index-browser.mjs.map +1 -0
  27. package/dist/browser/index.d.ts +17 -1
  28. package/dist/browser/index.js +17 -1
  29. package/dist/browser/log.d.ts +5 -0
  30. package/dist/browser/log.d.ts.map +1 -0
  31. package/dist/browser/log.js +8 -0
  32. package/dist/browser/log.js.map +1 -0
  33. package/dist/browser/policies/AnonymousCredentialPolicy.d.ts +15 -0
  34. package/dist/browser/policies/AnonymousCredentialPolicy.d.ts.map +1 -0
  35. package/dist/browser/policies/AnonymousCredentialPolicy.js +20 -0
  36. package/dist/browser/policies/AnonymousCredentialPolicy.js.map +1 -0
  37. package/dist/browser/policies/CredentialPolicy.d.ts +22 -0
  38. package/dist/browser/policies/CredentialPolicy.d.ts.map +1 -0
  39. package/dist/browser/policies/CredentialPolicy.js +29 -0
  40. package/dist/browser/policies/CredentialPolicy.js.map +1 -0
  41. package/dist/browser/policies/RequestPolicy.d.ts +45 -0
  42. package/dist/browser/policies/RequestPolicy.d.ts.map +1 -0
  43. package/dist/browser/policies/RequestPolicy.js +42 -0
  44. package/dist/browser/policies/RequestPolicy.js.map +1 -0
  45. package/dist/browser/policies/StorageBrowserPolicy.d.ts +28 -0
  46. package/dist/browser/policies/StorageBrowserPolicy.d.ts.map +1 -0
  47. package/dist/browser/policies/StorageBrowserPolicy.js +47 -0
  48. package/dist/browser/policies/StorageBrowserPolicy.js.map +1 -0
  49. package/dist/browser/policies/StorageBrowserPolicyV2.d.ts +11 -0
  50. package/dist/browser/policies/StorageBrowserPolicyV2.d.ts.map +1 -0
  51. package/dist/browser/policies/StorageBrowserPolicyV2.js +31 -0
  52. package/dist/browser/policies/StorageBrowserPolicyV2.js.map +1 -0
  53. package/dist/browser/policies/StorageCorrectContentLengthPolicy-browser.d.mts.map +1 -0
  54. package/dist/browser/policies/StorageCorrectContentLengthPolicy-browser.mjs.map +1 -0
  55. package/dist/browser/policies/StorageCorrectContentLengthPolicy.d.ts +10 -0
  56. package/dist/browser/policies/StorageCorrectContentLengthPolicy.js +18 -0
  57. package/dist/browser/policies/StorageRetryPolicy.d.ts +62 -0
  58. package/dist/browser/policies/StorageRetryPolicy.d.ts.map +1 -0
  59. package/dist/browser/policies/StorageRetryPolicy.js +220 -0
  60. package/dist/browser/policies/StorageRetryPolicy.js.map +1 -0
  61. package/dist/browser/policies/StorageRetryPolicyType.d.ts +14 -0
  62. package/dist/browser/policies/StorageRetryPolicyType.d.ts.map +1 -0
  63. package/dist/browser/policies/StorageRetryPolicyType.js +17 -0
  64. package/dist/browser/policies/StorageRetryPolicyType.js.map +1 -0
  65. package/dist/browser/policies/StorageRetryPolicyV2.d.ts +11 -0
  66. package/dist/browser/policies/StorageRetryPolicyV2.d.ts.map +1 -0
  67. package/dist/browser/policies/StorageRetryPolicyV2.js +165 -0
  68. package/dist/browser/policies/StorageRetryPolicyV2.js.map +1 -0
  69. package/dist/browser/policies/StorageSharedKeyCredentialPolicy.d.ts +54 -0
  70. package/dist/browser/policies/StorageSharedKeyCredentialPolicy.d.ts.map +1 -0
  71. package/dist/browser/policies/StorageSharedKeyCredentialPolicy.js +145 -0
  72. package/dist/browser/policies/StorageSharedKeyCredentialPolicy.js.map +1 -0
  73. package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2-browser.d.mts.map +1 -0
  74. package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2-browser.mjs.map +1 -0
  75. package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2.d.ts +17 -0
  76. package/dist/browser/policies/StorageSharedKeyCredentialPolicyV2.js +18 -0
  77. package/dist/browser/utils/SharedKeyComparator.d.ts +2 -0
  78. package/dist/browser/utils/SharedKeyComparator.d.ts.map +1 -0
  79. package/dist/browser/utils/SharedKeyComparator.js +73 -0
  80. package/dist/browser/utils/SharedKeyComparator.js.map +1 -0
  81. package/dist/browser/utils/constants.d.ts +39 -0
  82. package/dist/browser/utils/constants.d.ts.map +1 -0
  83. package/dist/browser/utils/constants.js +64 -0
  84. package/dist/browser/utils/constants.js.map +1 -0
  85. package/dist/browser/utils/tracing.d.ts +6 -0
  86. package/dist/browser/utils/tracing.d.ts.map +1 -0
  87. package/dist/browser/utils/tracing.js +14 -0
  88. package/dist/browser/utils/tracing.js.map +1 -0
  89. package/dist/browser/utils/utils.common.d.ts +305 -0
  90. package/dist/browser/utils/utils.common.d.ts.map +1 -0
  91. package/dist/browser/utils/utils.common.js +544 -0
  92. package/dist/browser/utils/utils.common.js.map +1 -0
  93. package/dist/commonjs/BufferScheduler.js +70 -44
  94. package/dist/commonjs/BufferScheduler.js.map +1 -1
  95. package/dist/commonjs/BuffersStream.js +14 -0
  96. package/dist/commonjs/BuffersStream.js.map +1 -1
  97. package/dist/commonjs/PooledBuffer.js +13 -5
  98. package/dist/commonjs/PooledBuffer.js.map +1 -1
  99. package/dist/commonjs/StorageBrowserPolicyFactory.d.ts +16 -0
  100. package/dist/commonjs/StorageBrowserPolicyFactory.d.ts.map +1 -0
  101. package/dist/commonjs/StorageBrowserPolicyFactory.js +23 -0
  102. package/dist/commonjs/StorageBrowserPolicyFactory.js.map +1 -0
  103. package/dist/commonjs/StorageRetryPolicyFactory.d.ts +66 -0
  104. package/dist/commonjs/StorageRetryPolicyFactory.d.ts.map +1 -0
  105. package/dist/commonjs/StorageRetryPolicyFactory.js +33 -0
  106. package/dist/commonjs/StorageRetryPolicyFactory.js.map +1 -0
  107. package/dist/commonjs/credentials/AnonymousCredential.d.ts +19 -0
  108. package/dist/commonjs/credentials/AnonymousCredential.d.ts.map +1 -0
  109. package/dist/commonjs/credentials/AnonymousCredential.js +26 -0
  110. package/dist/commonjs/credentials/AnonymousCredential.js.map +1 -0
  111. package/dist/commonjs/credentials/Credential.d.ts +20 -0
  112. package/dist/commonjs/credentials/Credential.d.ts.map +1 -0
  113. package/dist/commonjs/credentials/Credential.js +22 -0
  114. package/dist/commonjs/credentials/Credential.js.map +1 -0
  115. package/dist/commonjs/credentials/StorageSharedKeyCredential.d.ts +38 -0
  116. package/dist/commonjs/credentials/StorageSharedKeyCredential.d.ts.map +1 -0
  117. package/dist/commonjs/credentials/StorageSharedKeyCredential.js +52 -0
  118. package/dist/commonjs/credentials/StorageSharedKeyCredential.js.map +1 -0
  119. package/dist/commonjs/index.d.ts +17 -0
  120. package/dist/commonjs/index.d.ts.map +1 -1
  121. package/dist/commonjs/index.js +19 -1
  122. package/dist/commonjs/index.js.map +1 -1
  123. package/dist/commonjs/log.d.ts +5 -0
  124. package/dist/commonjs/log.d.ts.map +1 -0
  125. package/dist/commonjs/log.js +11 -0
  126. package/dist/commonjs/log.js.map +1 -0
  127. package/dist/commonjs/policies/AnonymousCredentialPolicy.d.ts +15 -0
  128. package/dist/commonjs/policies/AnonymousCredentialPolicy.d.ts.map +1 -0
  129. package/dist/commonjs/policies/AnonymousCredentialPolicy.js +24 -0
  130. package/dist/commonjs/policies/AnonymousCredentialPolicy.js.map +1 -0
  131. package/dist/commonjs/policies/CredentialPolicy.d.ts +22 -0
  132. package/dist/commonjs/policies/CredentialPolicy.d.ts.map +1 -0
  133. package/dist/commonjs/policies/CredentialPolicy.js +33 -0
  134. package/dist/commonjs/policies/CredentialPolicy.js.map +1 -0
  135. package/dist/commonjs/policies/RequestPolicy.d.ts +45 -0
  136. package/dist/commonjs/policies/RequestPolicy.d.ts.map +1 -0
  137. package/dist/commonjs/policies/RequestPolicy.js +46 -0
  138. package/dist/commonjs/policies/RequestPolicy.js.map +1 -0
  139. package/dist/commonjs/policies/StorageBrowserPolicy.d.ts +28 -0
  140. package/dist/commonjs/policies/StorageBrowserPolicy.d.ts.map +1 -0
  141. package/dist/commonjs/policies/StorageBrowserPolicy.js +51 -0
  142. package/dist/commonjs/policies/StorageBrowserPolicy.js.map +1 -0
  143. package/dist/commonjs/policies/StorageBrowserPolicyV2.d.ts +11 -0
  144. package/dist/commonjs/policies/StorageBrowserPolicyV2.d.ts.map +1 -0
  145. package/dist/commonjs/policies/StorageBrowserPolicyV2.js +35 -0
  146. package/dist/commonjs/policies/StorageBrowserPolicyV2.js.map +1 -0
  147. package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.d.ts +10 -0
  148. package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.d.ts.map +1 -0
  149. package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.js +31 -0
  150. package/dist/commonjs/policies/StorageCorrectContentLengthPolicy.js.map +1 -0
  151. package/dist/commonjs/policies/StorageRetryPolicy.d.ts +62 -0
  152. package/dist/commonjs/policies/StorageRetryPolicy.d.ts.map +1 -0
  153. package/dist/commonjs/policies/StorageRetryPolicy.js +225 -0
  154. package/dist/commonjs/policies/StorageRetryPolicy.js.map +1 -0
  155. package/dist/commonjs/policies/StorageRetryPolicyType.d.ts +14 -0
  156. package/dist/commonjs/policies/StorageRetryPolicyType.d.ts.map +1 -0
  157. package/dist/commonjs/policies/StorageRetryPolicyType.js +20 -0
  158. package/dist/commonjs/policies/StorageRetryPolicyType.js.map +1 -0
  159. package/dist/commonjs/policies/StorageRetryPolicyV2.d.ts +11 -0
  160. package/dist/commonjs/policies/StorageRetryPolicyV2.d.ts.map +1 -0
  161. package/dist/commonjs/policies/StorageRetryPolicyV2.js +169 -0
  162. package/dist/commonjs/policies/StorageRetryPolicyV2.js.map +1 -0
  163. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.d.ts +54 -0
  164. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.d.ts.map +1 -0
  165. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.js +149 -0
  166. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicy.js.map +1 -0
  167. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.d.ts +17 -0
  168. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.d.ts.map +1 -0
  169. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.js +136 -0
  170. package/dist/commonjs/policies/StorageSharedKeyCredentialPolicyV2.js.map +1 -0
  171. package/dist/commonjs/tsdoc-metadata.json +11 -11
  172. package/dist/commonjs/utils/SharedKeyComparator.d.ts +2 -0
  173. package/dist/commonjs/utils/SharedKeyComparator.d.ts.map +1 -0
  174. package/dist/commonjs/utils/SharedKeyComparator.js +76 -0
  175. package/dist/commonjs/utils/SharedKeyComparator.js.map +1 -0
  176. package/dist/commonjs/utils/constants.d.ts +39 -0
  177. package/dist/commonjs/utils/constants.d.ts.map +1 -0
  178. package/dist/commonjs/utils/constants.js +67 -0
  179. package/dist/commonjs/utils/constants.js.map +1 -0
  180. package/dist/commonjs/utils/tracing.d.ts +6 -0
  181. package/dist/commonjs/utils/tracing.d.ts.map +1 -0
  182. package/dist/commonjs/utils/tracing.js +17 -0
  183. package/dist/commonjs/utils/tracing.js.map +1 -0
  184. package/dist/commonjs/utils/utils.common.d.ts +305 -0
  185. package/dist/commonjs/utils/utils.common.d.ts.map +1 -0
  186. package/dist/commonjs/utils/utils.common.js +573 -0
  187. package/dist/commonjs/utils/utils.common.js.map +1 -0
  188. package/dist/esm/BufferScheduler.js +70 -44
  189. package/dist/esm/BufferScheduler.js.map +1 -1
  190. package/dist/esm/BuffersStream.js +14 -0
  191. package/dist/esm/BuffersStream.js.map +1 -1
  192. package/dist/esm/PooledBuffer.js +13 -5
  193. package/dist/esm/PooledBuffer.js.map +1 -1
  194. package/dist/esm/StorageBrowserPolicyFactory.d.ts +16 -0
  195. package/dist/esm/StorageBrowserPolicyFactory.d.ts.map +1 -0
  196. package/dist/esm/StorageBrowserPolicyFactory.js +19 -0
  197. package/dist/esm/StorageBrowserPolicyFactory.js.map +1 -0
  198. package/dist/esm/StorageRetryPolicyFactory.d.ts +66 -0
  199. package/dist/esm/StorageRetryPolicyFactory.d.ts.map +1 -0
  200. package/dist/esm/StorageRetryPolicyFactory.js +28 -0
  201. package/dist/esm/StorageRetryPolicyFactory.js.map +1 -0
  202. package/dist/esm/credentials/AnonymousCredential.d.ts +19 -0
  203. package/dist/esm/credentials/AnonymousCredential.d.ts.map +1 -0
  204. package/dist/esm/credentials/AnonymousCredential.js +22 -0
  205. package/dist/esm/credentials/AnonymousCredential.js.map +1 -0
  206. package/dist/esm/credentials/Credential.d.ts +20 -0
  207. package/dist/esm/credentials/Credential.d.ts.map +1 -0
  208. package/dist/esm/credentials/Credential.js +18 -0
  209. package/dist/esm/credentials/Credential.js.map +1 -0
  210. package/dist/esm/credentials/StorageSharedKeyCredential.d.ts +38 -0
  211. package/dist/esm/credentials/StorageSharedKeyCredential.d.ts.map +1 -0
  212. package/dist/esm/credentials/StorageSharedKeyCredential.js +48 -0
  213. package/dist/esm/credentials/StorageSharedKeyCredential.js.map +1 -0
  214. package/dist/esm/index.d.ts +17 -0
  215. package/dist/esm/index.d.ts.map +1 -1
  216. package/dist/esm/index.js +17 -0
  217. package/dist/esm/index.js.map +1 -1
  218. package/dist/esm/log.d.ts +5 -0
  219. package/dist/esm/log.d.ts.map +1 -0
  220. package/dist/esm/log.js +8 -0
  221. package/dist/esm/log.js.map +1 -0
  222. package/dist/esm/policies/AnonymousCredentialPolicy.d.ts +15 -0
  223. package/dist/esm/policies/AnonymousCredentialPolicy.d.ts.map +1 -0
  224. package/dist/esm/policies/AnonymousCredentialPolicy.js +20 -0
  225. package/dist/esm/policies/AnonymousCredentialPolicy.js.map +1 -0
  226. package/dist/esm/policies/CredentialPolicy.d.ts +22 -0
  227. package/dist/esm/policies/CredentialPolicy.d.ts.map +1 -0
  228. package/dist/esm/policies/CredentialPolicy.js +29 -0
  229. package/dist/esm/policies/CredentialPolicy.js.map +1 -0
  230. package/dist/esm/policies/RequestPolicy.d.ts +45 -0
  231. package/dist/esm/policies/RequestPolicy.d.ts.map +1 -0
  232. package/dist/esm/policies/RequestPolicy.js +42 -0
  233. package/dist/esm/policies/RequestPolicy.js.map +1 -0
  234. package/dist/esm/policies/StorageBrowserPolicy.d.ts +28 -0
  235. package/dist/esm/policies/StorageBrowserPolicy.d.ts.map +1 -0
  236. package/dist/esm/policies/StorageBrowserPolicy.js +47 -0
  237. package/dist/esm/policies/StorageBrowserPolicy.js.map +1 -0
  238. package/dist/esm/policies/StorageBrowserPolicyV2.d.ts +11 -0
  239. package/dist/esm/policies/StorageBrowserPolicyV2.d.ts.map +1 -0
  240. package/dist/esm/policies/StorageBrowserPolicyV2.js +31 -0
  241. package/dist/esm/policies/StorageBrowserPolicyV2.js.map +1 -0
  242. package/dist/esm/policies/StorageCorrectContentLengthPolicy.d.ts +10 -0
  243. package/dist/esm/policies/StorageCorrectContentLengthPolicy.d.ts.map +1 -0
  244. package/dist/esm/policies/StorageCorrectContentLengthPolicy.js +27 -0
  245. package/dist/esm/policies/StorageCorrectContentLengthPolicy.js.map +1 -0
  246. package/dist/esm/policies/StorageRetryPolicy.d.ts +62 -0
  247. package/dist/esm/policies/StorageRetryPolicy.d.ts.map +1 -0
  248. package/dist/esm/policies/StorageRetryPolicy.js +220 -0
  249. package/dist/esm/policies/StorageRetryPolicy.js.map +1 -0
  250. package/dist/esm/policies/StorageRetryPolicyType.d.ts +14 -0
  251. package/dist/esm/policies/StorageRetryPolicyType.d.ts.map +1 -0
  252. package/dist/esm/policies/StorageRetryPolicyType.js +17 -0
  253. package/dist/esm/policies/StorageRetryPolicyType.js.map +1 -0
  254. package/dist/esm/policies/StorageRetryPolicyV2.d.ts +11 -0
  255. package/dist/esm/policies/StorageRetryPolicyV2.d.ts.map +1 -0
  256. package/dist/esm/policies/StorageRetryPolicyV2.js +165 -0
  257. package/dist/esm/policies/StorageRetryPolicyV2.js.map +1 -0
  258. package/dist/esm/policies/StorageSharedKeyCredentialPolicy.d.ts +54 -0
  259. package/dist/esm/policies/StorageSharedKeyCredentialPolicy.d.ts.map +1 -0
  260. package/dist/esm/policies/StorageSharedKeyCredentialPolicy.js +145 -0
  261. package/dist/esm/policies/StorageSharedKeyCredentialPolicy.js.map +1 -0
  262. package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.d.ts +17 -0
  263. package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.d.ts.map +1 -0
  264. package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.js +132 -0
  265. package/dist/esm/policies/StorageSharedKeyCredentialPolicyV2.js.map +1 -0
  266. package/dist/esm/utils/SharedKeyComparator.d.ts +2 -0
  267. package/dist/esm/utils/SharedKeyComparator.d.ts.map +1 -0
  268. package/dist/esm/utils/SharedKeyComparator.js +73 -0
  269. package/dist/esm/utils/SharedKeyComparator.js.map +1 -0
  270. package/dist/esm/utils/constants.d.ts +39 -0
  271. package/dist/esm/utils/constants.d.ts.map +1 -0
  272. package/dist/esm/utils/constants.js +64 -0
  273. package/dist/esm/utils/constants.js.map +1 -0
  274. package/dist/esm/utils/tracing.d.ts +6 -0
  275. package/dist/esm/utils/tracing.d.ts.map +1 -0
  276. package/dist/esm/utils/tracing.js +14 -0
  277. package/dist/esm/utils/tracing.js.map +1 -0
  278. package/dist/esm/utils/utils.common.d.ts +305 -0
  279. package/dist/esm/utils/utils.common.d.ts.map +1 -0
  280. package/dist/esm/utils/utils.common.js +544 -0
  281. package/dist/esm/utils/utils.common.js.map +1 -0
  282. package/dist/react-native/BufferScheduler.js +70 -44
  283. package/dist/react-native/BufferScheduler.js.map +1 -1
  284. package/dist/react-native/BuffersStream.js +14 -0
  285. package/dist/react-native/BuffersStream.js.map +1 -1
  286. package/dist/react-native/PooledBuffer.js +13 -5
  287. package/dist/react-native/PooledBuffer.js.map +1 -1
  288. package/dist/react-native/StorageBrowserPolicyFactory.d.ts +16 -0
  289. package/dist/react-native/StorageBrowserPolicyFactory.d.ts.map +1 -0
  290. package/dist/react-native/StorageBrowserPolicyFactory.js +19 -0
  291. package/dist/react-native/StorageBrowserPolicyFactory.js.map +1 -0
  292. package/dist/react-native/StorageRetryPolicyFactory.d.ts +66 -0
  293. package/dist/react-native/StorageRetryPolicyFactory.d.ts.map +1 -0
  294. package/dist/react-native/StorageRetryPolicyFactory.js +28 -0
  295. package/dist/react-native/StorageRetryPolicyFactory.js.map +1 -0
  296. package/dist/react-native/credentials/AnonymousCredential.d.ts +19 -0
  297. package/dist/react-native/credentials/AnonymousCredential.d.ts.map +1 -0
  298. package/dist/react-native/credentials/AnonymousCredential.js +22 -0
  299. package/dist/react-native/credentials/AnonymousCredential.js.map +1 -0
  300. package/dist/react-native/credentials/Credential.d.ts +20 -0
  301. package/dist/react-native/credentials/Credential.d.ts.map +1 -0
  302. package/dist/react-native/credentials/Credential.js +18 -0
  303. package/dist/react-native/credentials/Credential.js.map +1 -0
  304. package/dist/react-native/credentials/StorageSharedKeyCredential.d.ts +38 -0
  305. package/dist/react-native/credentials/StorageSharedKeyCredential.d.ts.map +1 -0
  306. package/dist/react-native/credentials/StorageSharedKeyCredential.js +48 -0
  307. package/dist/react-native/credentials/StorageSharedKeyCredential.js.map +1 -0
  308. package/dist/react-native/index.d.ts +17 -0
  309. package/dist/react-native/index.d.ts.map +1 -1
  310. package/dist/react-native/index.js +17 -0
  311. package/dist/react-native/index.js.map +1 -1
  312. package/dist/react-native/log.d.ts +5 -0
  313. package/dist/react-native/log.d.ts.map +1 -0
  314. package/dist/react-native/log.js +8 -0
  315. package/dist/react-native/log.js.map +1 -0
  316. package/dist/react-native/policies/AnonymousCredentialPolicy.d.ts +15 -0
  317. package/dist/react-native/policies/AnonymousCredentialPolicy.d.ts.map +1 -0
  318. package/dist/react-native/policies/AnonymousCredentialPolicy.js +20 -0
  319. package/dist/react-native/policies/AnonymousCredentialPolicy.js.map +1 -0
  320. package/dist/react-native/policies/CredentialPolicy.d.ts +22 -0
  321. package/dist/react-native/policies/CredentialPolicy.d.ts.map +1 -0
  322. package/dist/react-native/policies/CredentialPolicy.js +29 -0
  323. package/dist/react-native/policies/CredentialPolicy.js.map +1 -0
  324. package/dist/react-native/policies/RequestPolicy.d.ts +45 -0
  325. package/dist/react-native/policies/RequestPolicy.d.ts.map +1 -0
  326. package/dist/react-native/policies/RequestPolicy.js +42 -0
  327. package/dist/react-native/policies/RequestPolicy.js.map +1 -0
  328. package/dist/react-native/policies/StorageBrowserPolicy.d.ts +28 -0
  329. package/dist/react-native/policies/StorageBrowserPolicy.d.ts.map +1 -0
  330. package/dist/react-native/policies/StorageBrowserPolicy.js +47 -0
  331. package/dist/react-native/policies/StorageBrowserPolicy.js.map +1 -0
  332. package/dist/react-native/policies/StorageBrowserPolicyV2.d.ts +11 -0
  333. package/dist/react-native/policies/StorageBrowserPolicyV2.d.ts.map +1 -0
  334. package/dist/react-native/policies/StorageBrowserPolicyV2.js +31 -0
  335. package/dist/react-native/policies/StorageBrowserPolicyV2.js.map +1 -0
  336. package/dist/react-native/policies/StorageCorrectContentLengthPolicy.d.ts +10 -0
  337. package/dist/react-native/policies/StorageCorrectContentLengthPolicy.d.ts.map +1 -0
  338. package/dist/react-native/policies/StorageCorrectContentLengthPolicy.js +27 -0
  339. package/dist/react-native/policies/StorageCorrectContentLengthPolicy.js.map +1 -0
  340. package/dist/react-native/policies/StorageRetryPolicy.d.ts +62 -0
  341. package/dist/react-native/policies/StorageRetryPolicy.d.ts.map +1 -0
  342. package/dist/react-native/policies/StorageRetryPolicy.js +220 -0
  343. package/dist/react-native/policies/StorageRetryPolicy.js.map +1 -0
  344. package/dist/react-native/policies/StorageRetryPolicyType.d.ts +14 -0
  345. package/dist/react-native/policies/StorageRetryPolicyType.d.ts.map +1 -0
  346. package/dist/react-native/policies/StorageRetryPolicyType.js +17 -0
  347. package/dist/react-native/policies/StorageRetryPolicyType.js.map +1 -0
  348. package/dist/react-native/policies/StorageRetryPolicyV2.d.ts +11 -0
  349. package/dist/react-native/policies/StorageRetryPolicyV2.d.ts.map +1 -0
  350. package/dist/react-native/policies/StorageRetryPolicyV2.js +165 -0
  351. package/dist/react-native/policies/StorageRetryPolicyV2.js.map +1 -0
  352. package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.d.ts +54 -0
  353. package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.d.ts.map +1 -0
  354. package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.js +145 -0
  355. package/dist/react-native/policies/StorageSharedKeyCredentialPolicy.js.map +1 -0
  356. package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.d.ts +17 -0
  357. package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.d.ts.map +1 -0
  358. package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.js +132 -0
  359. package/dist/react-native/policies/StorageSharedKeyCredentialPolicyV2.js.map +1 -0
  360. package/dist/react-native/utils/SharedKeyComparator.d.ts +2 -0
  361. package/dist/react-native/utils/SharedKeyComparator.d.ts.map +1 -0
  362. package/dist/react-native/utils/SharedKeyComparator.js +73 -0
  363. package/dist/react-native/utils/SharedKeyComparator.js.map +1 -0
  364. package/dist/react-native/utils/constants.d.ts +39 -0
  365. package/dist/react-native/utils/constants.d.ts.map +1 -0
  366. package/dist/react-native/utils/constants.js +64 -0
  367. package/dist/react-native/utils/constants.js.map +1 -0
  368. package/dist/react-native/utils/tracing.d.ts +6 -0
  369. package/dist/react-native/utils/tracing.d.ts.map +1 -0
  370. package/dist/react-native/utils/tracing.js +14 -0
  371. package/dist/react-native/utils/tracing.js.map +1 -0
  372. package/dist/react-native/utils/utils.common.d.ts +305 -0
  373. package/dist/react-native/utils/utils.common.d.ts.map +1 -0
  374. package/dist/react-native/utils/utils.common.js +544 -0
  375. package/dist/react-native/utils/utils.common.js.map +1 -0
  376. package/package.json +12 -6
  377. package/dist/browser/index.d.ts.map +0 -1
  378. package/dist/browser/index.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * RetryPolicy types.
5
+ */
6
+ export var StorageRetryPolicyType;
7
+ (function (StorageRetryPolicyType) {
8
+ /**
9
+ * Exponential retry. Retry time delay grows exponentially.
10
+ */
11
+ StorageRetryPolicyType[StorageRetryPolicyType["EXPONENTIAL"] = 0] = "EXPONENTIAL";
12
+ /**
13
+ * Linear retry. Retry time delay grows linearly.
14
+ */
15
+ StorageRetryPolicyType[StorageRetryPolicyType["FIXED"] = 1] = "FIXED";
16
+ })(StorageRetryPolicyType || (StorageRetryPolicyType = {}));
17
+ //# sourceMappingURL=StorageRetryPolicyType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageRetryPolicyType.js","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicyType.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC;;GAEG;AACH,MAAM,CAAN,IAAY,sBASX;AATD,WAAY,sBAAsB;IAChC;;OAEG;IACH,iFAAW,CAAA;IACX;;OAEG;IACH,qEAAK,CAAA;AACP,CAAC,EATW,sBAAsB,KAAtB,sBAAsB,QASjC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * RetryPolicy types.\n */\nexport enum StorageRetryPolicyType {\n /**\n * Exponential retry. Retry time delay grows exponentially.\n */\n EXPONENTIAL,\n /**\n * Linear retry. Retry time delay grows linearly.\n */\n FIXED,\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import type { PipelinePolicy } from "@azure/core-rest-pipeline";
2
+ import { type StorageRetryOptions } from "../StorageRetryPolicyFactory.js";
3
+ /**
4
+ * Name of the {@link storageRetryPolicy}
5
+ */
6
+ export declare const storageRetryPolicyName = "storageRetryPolicy";
7
+ /**
8
+ * Retry policy with exponential retry and linear retry implemented.
9
+ */
10
+ export declare function storageRetryPolicy(options?: StorageRetryOptions): PipelinePolicy;
11
+ //# sourceMappingURL=StorageRetryPolicyV2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageRetryPolicyV2.d.ts","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicyV2.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAKnG;;GAEG;AACH,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AA0B3D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,cAAc,CAgKpF"}
@@ -0,0 +1,165 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { AbortError } from "@azure/abort-controller";
4
+ import { isRestError, RestError } from "@azure/core-rest-pipeline";
5
+ import { getErrorMessage } from "@azure/core-util";
6
+ import { StorageRetryPolicyType } from "../StorageRetryPolicyFactory.js";
7
+ import { URLConstants } from "../utils/constants.js";
8
+ import { delay, setURLHost, setURLParameter } from "../utils/utils.common.js";
9
+ import { logger } from "../log.js";
10
+ /**
11
+ * Name of the {@link storageRetryPolicy}
12
+ */
13
+ export const storageRetryPolicyName = "storageRetryPolicy";
14
+ // Default values of StorageRetryOptions
15
+ const DEFAULT_RETRY_OPTIONS = {
16
+ maxRetryDelayInMs: 120 * 1000,
17
+ maxTries: 4,
18
+ retryDelayInMs: 4 * 1000,
19
+ retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,
20
+ secondaryHost: "",
21
+ tryTimeoutInMs: undefined, // Use server side default timeout strategy
22
+ };
23
+ const retriableErrors = [
24
+ "ETIMEDOUT",
25
+ "ESOCKETTIMEDOUT",
26
+ "ECONNREFUSED",
27
+ "ECONNRESET",
28
+ "ENOENT",
29
+ "ENOTFOUND",
30
+ "TIMEOUT",
31
+ "EPIPE",
32
+ "REQUEST_SEND_ERROR",
33
+ ];
34
+ const RETRY_ABORT_ERROR = new AbortError("The operation was aborted.");
35
+ /**
36
+ * Retry policy with exponential retry and linear retry implemented.
37
+ */
38
+ export function storageRetryPolicy(options = {}) {
39
+ const retryPolicyType = options.retryPolicyType ?? DEFAULT_RETRY_OPTIONS.retryPolicyType;
40
+ const maxTries = options.maxTries ?? DEFAULT_RETRY_OPTIONS.maxTries;
41
+ const retryDelayInMs = options.retryDelayInMs ?? DEFAULT_RETRY_OPTIONS.retryDelayInMs;
42
+ const maxRetryDelayInMs = options.maxRetryDelayInMs ?? DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs;
43
+ const secondaryHost = options.secondaryHost ?? DEFAULT_RETRY_OPTIONS.secondaryHost;
44
+ const tryTimeoutInMs = options.tryTimeoutInMs ?? DEFAULT_RETRY_OPTIONS.tryTimeoutInMs;
45
+ function shouldRetry({ isPrimaryRetry, attempt, response, error, }) {
46
+ if (attempt >= maxTries) {
47
+ logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${maxTries}, no further try.`);
48
+ return false;
49
+ }
50
+ if (error) {
51
+ for (const retriableError of retriableErrors) {
52
+ if (error.name.toUpperCase().includes(retriableError) ||
53
+ error.message.toUpperCase().includes(retriableError) ||
54
+ (error.code && error.code.toString().toUpperCase() === retriableError)) {
55
+ logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);
56
+ return true;
57
+ }
58
+ }
59
+ if (error?.code === "PARSE_ERROR" &&
60
+ error?.message.startsWith(`Error "Error: Unclosed root tag`)) {
61
+ logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
62
+ return true;
63
+ }
64
+ }
65
+ // If attempt was against the secondary & it returned a StatusNotFound (404), then
66
+ // the resource was not found. This may be due to replication delay. So, in this
67
+ // case, we'll never try the secondary again for this operation.
68
+ if (response || error) {
69
+ const statusCode = response?.status ?? error?.statusCode ?? 0;
70
+ if (!isPrimaryRetry && statusCode === 404) {
71
+ logger.info(`RetryPolicy: Secondary access with 404, will retry.`);
72
+ return true;
73
+ }
74
+ // Server internal error or server timeout
75
+ if (statusCode === 503 || statusCode === 500) {
76
+ logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);
77
+ return true;
78
+ }
79
+ }
80
+ // [Copy source error code] Feature is pending on service side, skip retry on copy source error for now.
81
+ // if (response) {
82
+ // // Retry select Copy Source Error Codes.
83
+ // if (response?.status >= 400) {
84
+ // const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);
85
+ // if (copySourceError !== undefined) {
86
+ // switch (copySourceError) {
87
+ // case "InternalError":
88
+ // case "OperationTimedOut":
89
+ // case "ServerBusy":
90
+ // return true;
91
+ // }
92
+ // }
93
+ // }
94
+ // }
95
+ return false;
96
+ }
97
+ function calculateDelay(isPrimaryRetry, attempt) {
98
+ let delayTimeInMs = 0;
99
+ if (isPrimaryRetry) {
100
+ switch (retryPolicyType) {
101
+ case StorageRetryPolicyType.EXPONENTIAL:
102
+ delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * retryDelayInMs, maxRetryDelayInMs);
103
+ break;
104
+ case StorageRetryPolicyType.FIXED:
105
+ delayTimeInMs = retryDelayInMs;
106
+ break;
107
+ }
108
+ }
109
+ else {
110
+ delayTimeInMs = Math.random() * 1000;
111
+ }
112
+ logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);
113
+ return delayTimeInMs;
114
+ }
115
+ return {
116
+ name: storageRetryPolicyName,
117
+ async sendRequest(request, next) {
118
+ // Set the server-side timeout query parameter "timeout=[seconds]"
119
+ if (tryTimeoutInMs) {
120
+ request.url = setURLParameter(request.url, URLConstants.Parameters.TIMEOUT, String(Math.floor(tryTimeoutInMs / 1000)));
121
+ }
122
+ const primaryUrl = request.url;
123
+ const secondaryUrl = secondaryHost ? setURLHost(request.url, secondaryHost) : undefined;
124
+ let secondaryHas404 = false;
125
+ let attempt = 1;
126
+ let retryAgain = true;
127
+ let response;
128
+ let error;
129
+ while (retryAgain) {
130
+ const isPrimaryRetry = secondaryHas404 ||
131
+ !secondaryUrl ||
132
+ !["GET", "HEAD", "OPTIONS"].includes(request.method) ||
133
+ attempt % 2 === 1;
134
+ request.url = isPrimaryRetry ? primaryUrl : secondaryUrl;
135
+ response = undefined;
136
+ error = undefined;
137
+ try {
138
+ logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? "Primary" : "Secondary"}`);
139
+ response = await next(request);
140
+ secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
141
+ }
142
+ catch (e) {
143
+ if (isRestError(e)) {
144
+ logger.error(`RetryPolicy: Caught error, message: ${e.message}, code: ${e.code}`);
145
+ error = e;
146
+ }
147
+ else {
148
+ logger.error(`RetryPolicy: Caught error, message: ${getErrorMessage(e)}`);
149
+ throw e;
150
+ }
151
+ }
152
+ retryAgain = shouldRetry({ isPrimaryRetry, attempt, response, error });
153
+ if (retryAgain) {
154
+ await delay(calculateDelay(isPrimaryRetry, attempt), request.abortSignal, RETRY_ABORT_ERROR);
155
+ }
156
+ attempt++;
157
+ }
158
+ if (response) {
159
+ return response;
160
+ }
161
+ throw error ?? new RestError("RetryPolicy failed without known error.");
162
+ },
163
+ };
164
+ }
165
+ //# sourceMappingURL=StorageRetryPolicyV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageRetryPolicyV2.js","sourceRoot":"","sources":["../../../src/policies/StorageRetryPolicyV2.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n PipelinePolicy,\n PipelineRequest,\n SendRequest,\n PipelineResponse,\n} from \"@azure/core-rest-pipeline\";\nimport { isRestError, RestError } from \"@azure/core-rest-pipeline\";\nimport { getErrorMessage } from \"@azure/core-util\";\nimport { StorageRetryPolicyType, type StorageRetryOptions } from \"../StorageRetryPolicyFactory.js\";\nimport { URLConstants } from \"../utils/constants.js\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common.js\";\nimport { logger } from \"../log.js\";\n\n/**\n * Name of the {@link storageRetryPolicy}\n */\nexport const storageRetryPolicyName = \"storageRetryPolicy\";\n\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n} as const;\n\nconst retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\",\n] as const;\n\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport function storageRetryPolicy(options: StorageRetryOptions = {}): PipelinePolicy {\n const retryPolicyType = options.retryPolicyType ?? DEFAULT_RETRY_OPTIONS.retryPolicyType;\n const maxTries = options.maxTries ?? DEFAULT_RETRY_OPTIONS.maxTries;\n const retryDelayInMs = options.retryDelayInMs ?? DEFAULT_RETRY_OPTIONS.retryDelayInMs;\n const maxRetryDelayInMs = options.maxRetryDelayInMs ?? DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs;\n const secondaryHost = options.secondaryHost ?? DEFAULT_RETRY_OPTIONS.secondaryHost;\n const tryTimeoutInMs = options.tryTimeoutInMs ?? DEFAULT_RETRY_OPTIONS.tryTimeoutInMs;\n\n function shouldRetry({\n isPrimaryRetry,\n attempt,\n response,\n error,\n }: {\n isPrimaryRetry: boolean;\n attempt: number;\n response?: PipelineResponse;\n error?: RestError;\n }): boolean {\n if (attempt >= maxTries) {\n logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${maxTries}, no further try.`);\n return false;\n }\n if (error) {\n for (const retriableError of retriableErrors) {\n if (\n error.name.toUpperCase().includes(retriableError) ||\n error.message.toUpperCase().includes(retriableError) ||\n (error.code && error.code.toString().toUpperCase() === retriableError)\n ) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n if (\n error?.code === \"PARSE_ERROR\" &&\n error?.message.startsWith(`Error \"Error: Unclosed root tag`)\n ) {\n logger.info(\n \"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\",\n );\n return true;\n }\n }\n\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || error) {\n const statusCode = response?.status ?? error?.statusCode ?? 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n\n // [Copy source error code] Feature is pending on service side, skip retry on copy source error for now.\n // if (response) {\n // // Retry select Copy Source Error Codes.\n // if (response?.status >= 400) {\n // const copySourceError = response.headers.get(HeaderConstants.X_MS_CopySourceErrorCode);\n // if (copySourceError !== undefined) {\n // switch (copySourceError) {\n // case \"InternalError\":\n // case \"OperationTimedOut\":\n // case \"ServerBusy\":\n // return true;\n // }\n // }\n // }\n // }\n\n return false;\n }\n function calculateDelay(isPrimaryRetry: boolean, attempt: number): number {\n let delayTimeInMs = 0;\n\n if (isPrimaryRetry) {\n switch (retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min(\n (Math.pow(2, attempt - 1) - 1) * retryDelayInMs,\n maxRetryDelayInMs,\n );\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = retryDelayInMs;\n break;\n }\n } else {\n delayTimeInMs = Math.random() * 1000;\n }\n\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delayTimeInMs;\n }\n return {\n name: storageRetryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (tryTimeoutInMs) {\n request.url = setURLParameter(\n request.url,\n URLConstants.Parameters.TIMEOUT,\n String(Math.floor(tryTimeoutInMs / 1000)),\n );\n }\n const primaryUrl = request.url;\n const secondaryUrl = secondaryHost ? setURLHost(request.url, secondaryHost) : undefined;\n let secondaryHas404 = false;\n let attempt = 1;\n let retryAgain = true;\n let response: PipelineResponse | undefined;\n let error: RestError | undefined;\n while (retryAgain) {\n const isPrimaryRetry: boolean =\n secondaryHas404 ||\n !secondaryUrl ||\n ![\"GET\", \"HEAD\", \"OPTIONS\"].includes(request.method) ||\n attempt % 2 === 1;\n request.url = isPrimaryRetry ? primaryUrl : secondaryUrl!;\n response = undefined;\n error = undefined;\n try {\n logger.info(\n `RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`,\n );\n response = await next(request);\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n } catch (e: unknown) {\n if (isRestError(e)) {\n logger.error(`RetryPolicy: Caught error, message: ${e.message}, code: ${e.code}`);\n error = e;\n } else {\n logger.error(`RetryPolicy: Caught error, message: ${getErrorMessage(e)}`);\n throw e;\n }\n }\n retryAgain = shouldRetry({ isPrimaryRetry, attempt, response, error });\n if (retryAgain) {\n await delay(\n calculateDelay(isPrimaryRetry, attempt),\n request.abortSignal,\n RETRY_ABORT_ERROR,\n );\n }\n attempt++;\n }\n if (response) {\n return response;\n }\n throw error ?? new RestError(\"RetryPolicy failed without known error.\");\n },\n };\n}\n"]}
@@ -0,0 +1,54 @@
1
+ import type { RequestPolicy, RequestPolicyOptionsLike as RequestPolicyOptions, WebResourceLike as WebResource } from "@azure/core-http-compat";
2
+ import type { StorageSharedKeyCredential } from "../credentials/StorageSharedKeyCredential.js";
3
+ import { CredentialPolicy } from "./CredentialPolicy.js";
4
+ /**
5
+ * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
6
+ */
7
+ export declare class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
8
+ /**
9
+ * Reference to StorageSharedKeyCredential which generates StorageSharedKeyCredentialPolicy
10
+ */
11
+ private readonly factory;
12
+ /**
13
+ * Creates an instance of StorageSharedKeyCredentialPolicy.
14
+ * @param nextPolicy -
15
+ * @param options -
16
+ * @param factory -
17
+ */
18
+ constructor(nextPolicy: RequestPolicy, options: RequestPolicyOptions, factory: StorageSharedKeyCredential);
19
+ /**
20
+ * Signs request.
21
+ *
22
+ * @param request -
23
+ */
24
+ protected signRequest(request: WebResource): WebResource;
25
+ /**
26
+ * Retrieve header value according to shared key sign rules.
27
+ * @see https://learn.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
28
+ *
29
+ * @param request -
30
+ * @param headerName -
31
+ */
32
+ private getHeaderValueToSign;
33
+ /**
34
+ * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
35
+ * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
36
+ * 2. Convert each HTTP header name to lowercase.
37
+ * 3. Sort the headers lexicographically by header name, in ascending order.
38
+ * Each header may appear only once in the string.
39
+ * 4. Replace any linear whitespace in the header value with a single space.
40
+ * 5. Trim any whitespace around the colon in the header.
41
+ * 6. Finally, append a new-line character to each canonicalized header in the resulting list.
42
+ * Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
43
+ *
44
+ * @param request -
45
+ */
46
+ private getCanonicalizedHeadersString;
47
+ /**
48
+ * Retrieves the webResource canonicalized resource string.
49
+ *
50
+ * @param request -
51
+ */
52
+ private getCanonicalizedResourceString;
53
+ }
54
+ //# sourceMappingURL=StorageSharedKeyCredentialPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageSharedKeyCredentialPolicy.d.ts","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,IAAI,oBAAoB,EAChD,eAAe,IAAI,WAAW,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;GAEG;AACH,qBAAa,gCAAiC,SAAQ,gBAAgB;IACpE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD;;;;;OAKG;gBAED,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,0BAA0B;IAMrC;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW;IA2CxD;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,6BAA6B;IA2BrC;;;;OAIG;IACH,OAAO,CAAC,8BAA8B;CA0BvC"}
@@ -0,0 +1,145 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { HeaderConstants } from "../utils/constants.js";
4
+ import { getURLPath, getURLQueries } from "../utils/utils.common.js";
5
+ import { CredentialPolicy } from "./CredentialPolicy.js";
6
+ import { compareHeader } from "../utils/SharedKeyComparator.js";
7
+ /**
8
+ * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
9
+ */
10
+ export class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
11
+ /**
12
+ * Reference to StorageSharedKeyCredential which generates StorageSharedKeyCredentialPolicy
13
+ */
14
+ factory;
15
+ /**
16
+ * Creates an instance of StorageSharedKeyCredentialPolicy.
17
+ * @param nextPolicy -
18
+ * @param options -
19
+ * @param factory -
20
+ */
21
+ constructor(nextPolicy, options, factory) {
22
+ super(nextPolicy, options);
23
+ this.factory = factory;
24
+ }
25
+ /**
26
+ * Signs request.
27
+ *
28
+ * @param request -
29
+ */
30
+ signRequest(request) {
31
+ request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
32
+ if (request.body &&
33
+ (typeof request.body === "string" || request.body !== undefined) &&
34
+ request.body.length > 0) {
35
+ request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
36
+ }
37
+ const stringToSign = [
38
+ request.method.toUpperCase(),
39
+ this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
40
+ this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
41
+ this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LENGTH),
42
+ this.getHeaderValueToSign(request, HeaderConstants.CONTENT_MD5),
43
+ this.getHeaderValueToSign(request, HeaderConstants.CONTENT_TYPE),
44
+ this.getHeaderValueToSign(request, HeaderConstants.DATE),
45
+ this.getHeaderValueToSign(request, HeaderConstants.IF_MODIFIED_SINCE),
46
+ this.getHeaderValueToSign(request, HeaderConstants.IF_MATCH),
47
+ this.getHeaderValueToSign(request, HeaderConstants.IF_NONE_MATCH),
48
+ this.getHeaderValueToSign(request, HeaderConstants.IF_UNMODIFIED_SINCE),
49
+ this.getHeaderValueToSign(request, HeaderConstants.RANGE),
50
+ ].join("\n") +
51
+ "\n" +
52
+ this.getCanonicalizedHeadersString(request) +
53
+ this.getCanonicalizedResourceString(request);
54
+ const signature = this.factory.computeHMACSHA256(stringToSign);
55
+ request.headers.set(HeaderConstants.AUTHORIZATION, `SharedKey ${this.factory.accountName}:${signature}`);
56
+ // console.log(`[URL]:${request.url}`);
57
+ // console.log(`[HEADERS]:${request.headers.toString()}`);
58
+ // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
59
+ // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
60
+ return request;
61
+ }
62
+ /**
63
+ * Retrieve header value according to shared key sign rules.
64
+ * @see https://learn.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
65
+ *
66
+ * @param request -
67
+ * @param headerName -
68
+ */
69
+ getHeaderValueToSign(request, headerName) {
70
+ const value = request.headers.get(headerName);
71
+ if (!value) {
72
+ return "";
73
+ }
74
+ // When using version 2015-02-21 or later, if Content-Length is zero, then
75
+ // set the Content-Length part of the StringToSign to an empty string.
76
+ // https://learn.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
77
+ if (headerName === HeaderConstants.CONTENT_LENGTH && value === "0") {
78
+ return "";
79
+ }
80
+ return value;
81
+ }
82
+ /**
83
+ * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
84
+ * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
85
+ * 2. Convert each HTTP header name to lowercase.
86
+ * 3. Sort the headers lexicographically by header name, in ascending order.
87
+ * Each header may appear only once in the string.
88
+ * 4. Replace any linear whitespace in the header value with a single space.
89
+ * 5. Trim any whitespace around the colon in the header.
90
+ * 6. Finally, append a new-line character to each canonicalized header in the resulting list.
91
+ * Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.
92
+ *
93
+ * @param request -
94
+ */
95
+ getCanonicalizedHeadersString(request) {
96
+ let headersArray = request.headers.headersArray().filter((value) => {
97
+ return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);
98
+ });
99
+ headersArray.sort((a, b) => {
100
+ return compareHeader(a.name.toLowerCase(), b.name.toLowerCase());
101
+ });
102
+ // Remove duplicate headers
103
+ headersArray = headersArray.filter((value, index, array) => {
104
+ if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
105
+ return false;
106
+ }
107
+ return true;
108
+ });
109
+ let canonicalizedHeadersStringToSign = "";
110
+ headersArray.forEach((header) => {
111
+ canonicalizedHeadersStringToSign += `${header.name
112
+ .toLowerCase()
113
+ .trimRight()}:${header.value.trimLeft()}\n`;
114
+ });
115
+ return canonicalizedHeadersStringToSign;
116
+ }
117
+ /**
118
+ * Retrieves the webResource canonicalized resource string.
119
+ *
120
+ * @param request -
121
+ */
122
+ getCanonicalizedResourceString(request) {
123
+ const path = getURLPath(request.url) || "/";
124
+ let canonicalizedResourceString = "";
125
+ canonicalizedResourceString += `/${this.factory.accountName}${path}`;
126
+ const queries = getURLQueries(request.url);
127
+ const lowercaseQueries = {};
128
+ if (queries) {
129
+ const queryKeys = [];
130
+ for (const key in queries) {
131
+ if (Object.prototype.hasOwnProperty.call(queries, key)) {
132
+ const lowercaseKey = key.toLowerCase();
133
+ lowercaseQueries[lowercaseKey] = queries[key];
134
+ queryKeys.push(lowercaseKey);
135
+ }
136
+ }
137
+ queryKeys.sort();
138
+ for (const key of queryKeys) {
139
+ canonicalizedResourceString += `\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;
140
+ }
141
+ }
142
+ return canonicalizedResourceString;
143
+ }
144
+ }
145
+ //# sourceMappingURL=StorageSharedKeyCredentialPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageSharedKeyCredentialPolicy.js","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicy.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n RequestPolicy,\n RequestPolicyOptionsLike as RequestPolicyOptions,\n WebResourceLike as WebResource,\n} from \"@azure/core-http-compat\";\nimport type { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential.js\";\nimport { HeaderConstants } from \"../utils/constants.js\";\nimport { getURLPath, getURLQueries } from \"../utils/utils.common.js\";\nimport { CredentialPolicy } from \"./CredentialPolicy.js\";\nimport { compareHeader } from \"../utils/SharedKeyComparator.js\";\n\n/**\n * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.\n */\nexport class StorageSharedKeyCredentialPolicy extends CredentialPolicy {\n /**\n * Reference to StorageSharedKeyCredential which generates StorageSharedKeyCredentialPolicy\n */\n private readonly factory: StorageSharedKeyCredential;\n\n /**\n * Creates an instance of StorageSharedKeyCredentialPolicy.\n * @param nextPolicy -\n * @param options -\n * @param factory -\n */\n constructor(\n nextPolicy: RequestPolicy,\n options: RequestPolicyOptions,\n factory: StorageSharedKeyCredential,\n ) {\n super(nextPolicy, options);\n this.factory = factory;\n }\n\n /**\n * Signs request.\n *\n * @param request -\n */\n protected signRequest(request: WebResource): WebResource {\n request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());\n\n if (\n request.body &&\n (typeof request.body === \"string\" || (request.body as Buffer) !== undefined) &&\n request.body.length > 0\n ) {\n request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));\n }\n\n const stringToSign: string =\n [\n request.method.toUpperCase(),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LENGTH),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_MD5),\n this.getHeaderValueToSign(request, HeaderConstants.CONTENT_TYPE),\n this.getHeaderValueToSign(request, HeaderConstants.DATE),\n this.getHeaderValueToSign(request, HeaderConstants.IF_MODIFIED_SINCE),\n this.getHeaderValueToSign(request, HeaderConstants.IF_MATCH),\n this.getHeaderValueToSign(request, HeaderConstants.IF_NONE_MATCH),\n this.getHeaderValueToSign(request, HeaderConstants.IF_UNMODIFIED_SINCE),\n this.getHeaderValueToSign(request, HeaderConstants.RANGE),\n ].join(\"\\n\") +\n \"\\n\" +\n this.getCanonicalizedHeadersString(request) +\n this.getCanonicalizedResourceString(request);\n\n const signature: string = this.factory.computeHMACSHA256(stringToSign);\n request.headers.set(\n HeaderConstants.AUTHORIZATION,\n `SharedKey ${this.factory.accountName}:${signature}`,\n );\n\n // console.log(`[URL]:${request.url}`);\n // console.log(`[HEADERS]:${request.headers.toString()}`);\n // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);\n // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);\n return request;\n }\n\n /**\n * Retrieve header value according to shared key sign rules.\n * @see https://learn.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key\n *\n * @param request -\n * @param headerName -\n */\n private getHeaderValueToSign(request: WebResource, headerName: string): string {\n const value = request.headers.get(headerName);\n\n if (!value) {\n return \"\";\n }\n\n // When using version 2015-02-21 or later, if Content-Length is zero, then\n // set the Content-Length part of the StringToSign to an empty string.\n // https://learn.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key\n if (headerName === HeaderConstants.CONTENT_LENGTH && value === \"0\") {\n return \"\";\n }\n\n return value;\n }\n\n /**\n * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:\n * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.\n * 2. Convert each HTTP header name to lowercase.\n * 3. Sort the headers lexicographically by header name, in ascending order.\n * Each header may appear only once in the string.\n * 4. Replace any linear whitespace in the header value with a single space.\n * 5. Trim any whitespace around the colon in the header.\n * 6. Finally, append a new-line character to each canonicalized header in the resulting list.\n * Construct the CanonicalizedHeaders string by concatenating all headers in this list into a single string.\n *\n * @param request -\n */\n private getCanonicalizedHeadersString(request: WebResource): string {\n let headersArray = request.headers.headersArray().filter((value) => {\n return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);\n });\n\n headersArray.sort((a, b): number => {\n return compareHeader(a.name.toLowerCase(), b.name.toLowerCase());\n });\n\n // Remove duplicate headers\n headersArray = headersArray.filter((value, index, array) => {\n if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {\n return false;\n }\n return true;\n });\n\n let canonicalizedHeadersStringToSign: string = \"\";\n headersArray.forEach((header) => {\n canonicalizedHeadersStringToSign += `${header.name\n .toLowerCase()\n .trimRight()}:${header.value.trimLeft()}\\n`;\n });\n\n return canonicalizedHeadersStringToSign;\n }\n\n /**\n * Retrieves the webResource canonicalized resource string.\n *\n * @param request -\n */\n private getCanonicalizedResourceString(request: WebResource): string {\n const path = getURLPath(request.url) || \"/\";\n\n let canonicalizedResourceString: string = \"\";\n canonicalizedResourceString += `/${this.factory.accountName}${path}`;\n\n const queries = getURLQueries(request.url);\n const lowercaseQueries: { [key: string]: string } = {};\n if (queries) {\n const queryKeys: string[] = [];\n for (const key in queries) {\n if (Object.prototype.hasOwnProperty.call(queries, key)) {\n const lowercaseKey = key.toLowerCase();\n lowercaseQueries[lowercaseKey] = queries[key];\n queryKeys.push(lowercaseKey);\n }\n }\n\n queryKeys.sort();\n for (const key of queryKeys) {\n canonicalizedResourceString += `\\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;\n }\n }\n\n return canonicalizedResourceString;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageSharedKeyCredentialPolicyV2-browser.d.mts","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicyV2-browser.mts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,cAAc,EACf,MAAM,2BAA2B,CAAC;AACnC;;GAEG;AACH,eAAO,MAAM,oCAAoC,qCAAqC,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,uCAAuC;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,uCAAuC,GAChD,cAAc,CAOhB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageSharedKeyCredentialPolicyV2-browser.mjs","sourceRoot":"","sources":["../../../src/policies/StorageSharedKeyCredentialPolicyV2-browser.mts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAQlC;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,kCAAkC,CAAC;AAUvF;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,QAAiD;IAEjD,OAAO;QACL,IAAI,EAAE,oCAAoC;QAC1C,KAAK,CAAC,WAAW,CAAC,OAAwB,EAAE,IAAiB;YAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n PipelinePolicy,\n} from \"@azure/core-rest-pipeline\";\n/**\n * The programmatic identifier of the storageSharedKeyCredentialPolicy.\n */\nexport const storageSharedKeyCredentialPolicyName = \"storageSharedKeyCredentialPolicy\";\n\n/**\n * Options used to configure StorageSharedKeyCredentialPolicy.\n */\nexport interface StorageSharedKeyCredentialPolicyOptions {\n accountName: string;\n accountKey: Buffer;\n}\n\n/**\n * storageSharedKeyCredentialPolicy handles signing requests using storage account keys.\n */\nexport function storageSharedKeyCredentialPolicy(\n _options: StorageSharedKeyCredentialPolicyOptions,\n): PipelinePolicy {\n return {\n name: storageSharedKeyCredentialPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {\n return next(request);\n },\n };\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { PipelinePolicy } from "@azure/core-rest-pipeline";
2
+ /**
3
+ * The programmatic identifier of the storageSharedKeyCredentialPolicy.
4
+ */
5
+ export declare const storageSharedKeyCredentialPolicyName = "storageSharedKeyCredentialPolicy";
6
+ /**
7
+ * Options used to configure StorageSharedKeyCredentialPolicy.
8
+ */
9
+ export interface StorageSharedKeyCredentialPolicyOptions {
10
+ accountName: string;
11
+ accountKey: Buffer;
12
+ }
13
+ /**
14
+ * storageSharedKeyCredentialPolicy handles signing requests using storage account keys.
15
+ */
16
+ export declare function storageSharedKeyCredentialPolicy(_options: StorageSharedKeyCredentialPolicyOptions): PipelinePolicy;
17
+ //# sourceMappingURL=StorageSharedKeyCredentialPolicyV2-browser.d.mts.map
@@ -0,0 +1,18 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /**
4
+ * The programmatic identifier of the storageSharedKeyCredentialPolicy.
5
+ */
6
+ export const storageSharedKeyCredentialPolicyName = "storageSharedKeyCredentialPolicy";
7
+ /**
8
+ * storageSharedKeyCredentialPolicy handles signing requests using storage account keys.
9
+ */
10
+ export function storageSharedKeyCredentialPolicy(_options) {
11
+ return {
12
+ name: storageSharedKeyCredentialPolicyName,
13
+ async sendRequest(request, next) {
14
+ return next(request);
15
+ },
16
+ };
17
+ }
18
+ //# sourceMappingURL=StorageSharedKeyCredentialPolicyV2-browser.mjs.map
@@ -0,0 +1,2 @@
1
+ export declare function compareHeader(lhs: string, rhs: string): number;
2
+ //# sourceMappingURL=SharedKeyComparator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedKeyComparator.d.ts","sourceRoot":"","sources":["../../../src/utils/SharedKeyComparator.ts"],"names":[],"mappings":"AAqCA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI9D"}
@@ -0,0 +1,73 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ /*
4
+ * We need to imitate .Net culture-aware sorting, which is used in storage service.
5
+ * Below tables contain sort-keys for en-US culture.
6
+ */
7
+ const table_lv0 = new Uint32Array([
8
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
9
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x71c, 0x0, 0x71f, 0x721,
10
+ 0x723, 0x725, 0x0, 0x0, 0x0, 0x72d, 0x803, 0x0, 0x0, 0x733, 0x0, 0xd03, 0xd1a, 0xd1c, 0xd1e,
11
+ 0xd20, 0xd22, 0xd24, 0xd26, 0xd28, 0xd2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe02, 0xe09, 0xe0a,
12
+ 0xe1a, 0xe21, 0xe23, 0xe25, 0xe2c, 0xe32, 0xe35, 0xe36, 0xe48, 0xe51, 0xe70, 0xe7c, 0xe7e, 0xe89,
13
+ 0xe8a, 0xe91, 0xe99, 0xe9f, 0xea2, 0xea4, 0xea6, 0xea7, 0xea9, 0x0, 0x0, 0x0, 0x743, 0x744, 0x748,
14
+ 0xe02, 0xe09, 0xe0a, 0xe1a, 0xe21, 0xe23, 0xe25, 0xe2c, 0xe32, 0xe35, 0xe36, 0xe48, 0xe51, 0xe70,
15
+ 0xe7c, 0xe7e, 0xe89, 0xe8a, 0xe91, 0xe99, 0xe9f, 0xea2, 0xea4, 0xea6, 0xea7, 0xea9, 0x0, 0x74c,
16
+ 0x0, 0x750, 0x0,
17
+ ]);
18
+ const table_lv2 = new Uint32Array([
19
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
20
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
21
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
22
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
23
+ 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
24
+ 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
25
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
26
+ ]);
27
+ const table_lv4 = new Uint32Array([
28
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
29
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
30
+ 0x0, 0x8012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8212, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
31
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
32
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
33
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
34
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
35
+ ]);
36
+ export function compareHeader(lhs, rhs) {
37
+ if (isLessThan(lhs, rhs))
38
+ return -1;
39
+ return 1;
40
+ }
41
+ function isLessThan(lhs, rhs) {
42
+ const tables = [table_lv0, table_lv2, table_lv4];
43
+ let curr_level = 0;
44
+ let i = 0;
45
+ let j = 0;
46
+ while (curr_level < tables.length) {
47
+ if (curr_level === tables.length - 1 && i !== j) {
48
+ return i > j;
49
+ }
50
+ const weight1 = i < lhs.length ? tables[curr_level][lhs[i].charCodeAt(0)] : 0x1;
51
+ const weight2 = j < rhs.length ? tables[curr_level][rhs[j].charCodeAt(0)] : 0x1;
52
+ if (weight1 === 0x1 && weight2 === 0x1) {
53
+ i = 0;
54
+ j = 0;
55
+ ++curr_level;
56
+ }
57
+ else if (weight1 === weight2) {
58
+ ++i;
59
+ ++j;
60
+ }
61
+ else if (weight1 === 0) {
62
+ ++i;
63
+ }
64
+ else if (weight2 === 0) {
65
+ ++j;
66
+ }
67
+ else {
68
+ return weight1 < weight2;
69
+ }
70
+ }
71
+ return false;
72
+ }
73
+ //# sourceMappingURL=SharedKeyComparator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedKeyComparator.js","sourceRoot":"","sources":["../../../src/utils/SharedKeyComparator.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/*\n * We need to imitate .Net culture-aware sorting, which is used in storage service.\n * Below tables contain sort-keys for en-US culture.\n */\nconst table_lv0 = new Uint32Array([\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x71c, 0x0, 0x71f, 0x721,\n 0x723, 0x725, 0x0, 0x0, 0x0, 0x72d, 0x803, 0x0, 0x0, 0x733, 0x0, 0xd03, 0xd1a, 0xd1c, 0xd1e,\n 0xd20, 0xd22, 0xd24, 0xd26, 0xd28, 0xd2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe02, 0xe09, 0xe0a,\n 0xe1a, 0xe21, 0xe23, 0xe25, 0xe2c, 0xe32, 0xe35, 0xe36, 0xe48, 0xe51, 0xe70, 0xe7c, 0xe7e, 0xe89,\n 0xe8a, 0xe91, 0xe99, 0xe9f, 0xea2, 0xea4, 0xea6, 0xea7, 0xea9, 0x0, 0x0, 0x0, 0x743, 0x744, 0x748,\n 0xe02, 0xe09, 0xe0a, 0xe1a, 0xe21, 0xe23, 0xe25, 0xe2c, 0xe32, 0xe35, 0xe36, 0xe48, 0xe51, 0xe70,\n 0xe7c, 0xe7e, 0xe89, 0xe8a, 0xe91, 0xe99, 0xe9f, 0xea2, 0xea4, 0xea6, 0xea7, 0xea9, 0x0, 0x74c,\n 0x0, 0x750, 0x0,\n]);\nconst table_lv2 = new Uint32Array([\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,\n 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,\n 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n]);\nconst table_lv4 = new Uint32Array([\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x8012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8212, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n]);\n\nexport function compareHeader(lhs: string, rhs: string): number {\n if (isLessThan(lhs, rhs)) return -1;\n\n return 1;\n}\n\nfunction isLessThan(lhs: string, rhs: string): boolean {\n const tables = [table_lv0, table_lv2, table_lv4];\n let curr_level = 0;\n let i = 0;\n let j = 0;\n while (curr_level < tables.length) {\n if (curr_level === tables.length - 1 && i !== j) {\n return i > j;\n }\n const weight1 = i < lhs.length ? tables[curr_level][lhs[i].charCodeAt(0)] : 0x1;\n const weight2 = j < rhs.length ? tables[curr_level][rhs[j].charCodeAt(0)] : 0x1;\n if (weight1 === 0x1 && weight2 === 0x1) {\n i = 0;\n j = 0;\n ++curr_level;\n } else if (weight1 === weight2) {\n ++i;\n ++j;\n } else if (weight1 === 0) {\n ++i;\n } else if (weight2 === 0) {\n ++j;\n } else {\n return weight1 < weight2;\n }\n }\n return false;\n}\n"]}