@azure/storage-blob-changefeed 12.0.0-preview.3 → 12.0.0-preview.5

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 (507) hide show
  1. package/LICENSE +3 -3
  2. package/README.md +87 -47
  3. package/{types/3.1/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.d.ts +10 -9
  4. package/dist/browser/AvroReaderFactory.d.ts.map +1 -0
  5. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/AvroReaderFactory.js +2 -2
  6. package/dist/browser/AvroReaderFactory.js.map +1 -0
  7. package/dist/browser/BlobChangeFeedClient.d.ts +201 -0
  8. package/dist/browser/BlobChangeFeedClient.d.ts.map +1 -0
  9. package/dist/browser/BlobChangeFeedClient.js +242 -0
  10. package/dist/browser/BlobChangeFeedClient.js.map +1 -0
  11. package/{types/3.1/storage-blob-changefeed/src → dist/browser}/ChangeFeed.d.ts +37 -37
  12. package/dist/browser/ChangeFeed.d.ts.map +1 -0
  13. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeed.js +20 -32
  14. package/dist/browser/ChangeFeed.js.map +1 -0
  15. package/dist/browser/ChangeFeedFactory.d.ts +13 -0
  16. package/dist/browser/ChangeFeedFactory.d.ts.map +1 -0
  17. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChangeFeedFactory.js +45 -32
  18. package/dist/browser/ChangeFeedFactory.js.map +1 -0
  19. package/{types/latest/storage-blob-changefeed/src → dist/browser}/Chunk.d.ts +4 -5
  20. package/dist/browser/Chunk.d.ts.map +1 -0
  21. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Chunk.js +13 -8
  22. package/dist/browser/Chunk.js.map +1 -0
  23. package/{types/latest/storage-blob-changefeed/src → dist/browser}/ChunkFactory.d.ts +7 -6
  24. package/dist/browser/ChunkFactory.d.ts.map +1 -0
  25. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/ChunkFactory.js +11 -7
  26. package/dist/browser/ChunkFactory.js.map +1 -0
  27. package/{types/latest/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.d.ts +4 -4
  28. package/dist/browser/LazyLoadingBlobStream.d.ts.map +1 -0
  29. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStream.js +25 -36
  30. package/dist/browser/LazyLoadingBlobStream.js.map +1 -0
  31. package/dist/browser/LazyLoadingBlobStreamFactory.d.ts +7 -0
  32. package/dist/browser/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  33. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/LazyLoadingBlobStreamFactory.js +2 -2
  34. package/dist/browser/LazyLoadingBlobStreamFactory.js.map +1 -0
  35. package/{types/latest/storage-blob-changefeed/src → dist/browser}/Segment.d.ts +5 -5
  36. package/dist/browser/Segment.d.ts.map +1 -0
  37. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Segment.js +16 -19
  38. package/dist/browser/Segment.js.map +1 -0
  39. package/{types/3.1/storage-blob-changefeed/src → dist/browser}/SegmentFactory.d.ts +29 -29
  40. package/dist/browser/SegmentFactory.d.ts.map +1 -0
  41. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/SegmentFactory.js +12 -23
  42. package/dist/browser/SegmentFactory.js.map +1 -0
  43. package/{types/3.1/storage-blob-changefeed/src → dist/browser}/Shard.d.ts +28 -28
  44. package/dist/browser/Shard.d.ts.map +1 -0
  45. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/Shard.js +9 -16
  46. package/dist/browser/Shard.js.map +1 -0
  47. package/{types/latest/storage-blob-changefeed/src → dist/browser}/ShardFactory.d.ts +5 -5
  48. package/dist/browser/ShardFactory.d.ts.map +1 -0
  49. package/dist/browser/ShardFactory.js +55 -0
  50. package/dist/browser/ShardFactory.js.map +1 -0
  51. package/dist/browser/index.d.ts +4 -0
  52. package/dist/browser/index.d.ts.map +1 -0
  53. package/dist/browser/index.js +6 -0
  54. package/dist/browser/index.js.map +1 -0
  55. package/dist/browser/log.d.ts.map +1 -0
  56. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/log.js +1 -1
  57. package/dist/browser/log.js.map +1 -0
  58. package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/BlobChangeFeedEvent.d.ts +5 -5
  59. package/dist/browser/models/BlobChangeFeedEvent.d.ts.map +1 -0
  60. package/dist/browser/models/BlobChangeFeedEvent.js +4 -0
  61. package/dist/browser/models/BlobChangeFeedEvent.js.map +1 -0
  62. package/dist/browser/models/ChangeFeedCursor.d.ts.map +1 -0
  63. package/dist/browser/models/ChangeFeedCursor.js +4 -0
  64. package/dist/browser/models/ChangeFeedCursor.js.map +1 -0
  65. package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/models.d.ts +2 -2
  66. package/dist/browser/models/models.d.ts.map +1 -0
  67. package/dist/browser/models/models.js +4 -0
  68. package/dist/browser/models/models.js.map +1 -0
  69. package/dist/browser/package.json +3 -0
  70. package/dist/browser/utils/constants.d.ts.map +1 -0
  71. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/constants.js +2 -2
  72. package/dist/browser/utils/constants.js.map +1 -0
  73. package/dist/browser/utils/tracing.d.ts +6 -0
  74. package/dist/browser/utils/tracing.d.ts.map +1 -0
  75. package/dist/browser/utils/tracing.js +14 -0
  76. package/dist/browser/utils/tracing.js.map +1 -0
  77. package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.d.ts +0 -1
  78. package/dist/browser/utils/utils.browser.d.ts.map +1 -0
  79. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.browser.js +1 -1
  80. package/dist/browser/utils/utils.browser.js.map +1 -0
  81. package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.common.d.ts +3 -10
  82. package/dist/browser/utils/utils.common.d.ts.map +1 -0
  83. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.common.js +26 -91
  84. package/dist/browser/utils/utils.common.js.map +1 -0
  85. package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/utils.node.d.ts +1 -2
  86. package/dist/browser/utils/utils.node.d.ts.map +1 -0
  87. package/{dist-esm/storage-blob-changefeed/src → dist/browser}/utils/utils.node.js +2 -2
  88. package/dist/browser/utils/utils.node.js.map +1 -0
  89. package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/AvroReaderFactory.d.ts +2 -1
  90. package/dist/commonjs/AvroReaderFactory.d.ts.map +1 -0
  91. package/dist/commonjs/AvroReaderFactory.js +21 -0
  92. package/dist/commonjs/AvroReaderFactory.js.map +1 -0
  93. package/dist/commonjs/BlobChangeFeedClient.d.ts +201 -0
  94. package/dist/commonjs/BlobChangeFeedClient.d.ts.map +1 -0
  95. package/dist/commonjs/BlobChangeFeedClient.js +248 -0
  96. package/dist/commonjs/BlobChangeFeedClient.js.map +1 -0
  97. package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/ChangeFeed.d.ts +6 -6
  98. package/dist/commonjs/ChangeFeed.d.ts.map +1 -0
  99. package/dist/commonjs/ChangeFeed.js +108 -0
  100. package/dist/commonjs/ChangeFeed.js.map +1 -0
  101. package/dist/commonjs/ChangeFeedFactory.d.ts +13 -0
  102. package/dist/commonjs/ChangeFeedFactory.d.ts.map +1 -0
  103. package/dist/commonjs/ChangeFeedFactory.js +126 -0
  104. package/dist/commonjs/ChangeFeedFactory.js.map +1 -0
  105. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/Chunk.d.ts +27 -28
  106. package/dist/commonjs/Chunk.d.ts.map +1 -0
  107. package/dist/commonjs/Chunk.js +49 -0
  108. package/dist/commonjs/Chunk.js.map +1 -0
  109. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/ChunkFactory.d.ts +23 -22
  110. package/dist/commonjs/ChunkFactory.d.ts.map +1 -0
  111. package/dist/commonjs/ChunkFactory.js +37 -0
  112. package/dist/commonjs/ChunkFactory.js.map +1 -0
  113. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/LazyLoadingBlobStream.d.ts +46 -46
  114. package/dist/commonjs/LazyLoadingBlobStream.d.ts.map +1 -0
  115. package/dist/commonjs/LazyLoadingBlobStream.js +96 -0
  116. package/dist/commonjs/LazyLoadingBlobStream.js.map +1 -0
  117. package/dist/commonjs/LazyLoadingBlobStreamFactory.d.ts +7 -0
  118. package/dist/commonjs/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  119. package/dist/commonjs/LazyLoadingBlobStreamFactory.js +13 -0
  120. package/dist/commonjs/LazyLoadingBlobStreamFactory.js.map +1 -0
  121. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/Segment.d.ts +29 -29
  122. package/dist/commonjs/Segment.d.ts.map +1 -0
  123. package/dist/commonjs/Segment.js +73 -0
  124. package/dist/commonjs/Segment.js.map +1 -0
  125. package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/SegmentFactory.d.ts +5 -5
  126. package/dist/commonjs/SegmentFactory.d.ts.map +1 -0
  127. package/dist/commonjs/SegmentFactory.js +51 -0
  128. package/dist/commonjs/SegmentFactory.js.map +1 -0
  129. package/{types/latest/storage-blob-changefeed/src → dist/commonjs}/Shard.d.ts +6 -6
  130. package/dist/commonjs/Shard.d.ts.map +1 -0
  131. package/dist/commonjs/Shard.js +50 -0
  132. package/dist/commonjs/Shard.js.map +1 -0
  133. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/ShardFactory.d.ts +21 -21
  134. package/dist/commonjs/ShardFactory.d.ts.map +1 -0
  135. package/dist/commonjs/ShardFactory.js +59 -0
  136. package/dist/commonjs/ShardFactory.js.map +1 -0
  137. package/dist/commonjs/index.d.ts +4 -0
  138. package/dist/commonjs/index.d.ts.map +1 -0
  139. package/dist/commonjs/index.js +9 -0
  140. package/dist/commonjs/index.js.map +1 -0
  141. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/log.d.ts +5 -5
  142. package/dist/commonjs/log.d.ts.map +1 -0
  143. package/dist/commonjs/log.js +11 -0
  144. package/dist/commonjs/log.js.map +1 -0
  145. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/models/BlobChangeFeedEvent.d.ts +233 -233
  146. package/dist/commonjs/models/BlobChangeFeedEvent.d.ts.map +1 -0
  147. package/dist/commonjs/models/BlobChangeFeedEvent.js +5 -0
  148. package/dist/commonjs/models/BlobChangeFeedEvent.js.map +1 -0
  149. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/models/ChangeFeedCursor.d.ts +17 -17
  150. package/dist/commonjs/models/ChangeFeedCursor.d.ts.map +1 -0
  151. package/dist/commonjs/models/ChangeFeedCursor.js +5 -0
  152. package/dist/commonjs/models/ChangeFeedCursor.js.map +1 -0
  153. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/models/models.d.ts +23 -23
  154. package/dist/commonjs/models/models.d.ts.map +1 -0
  155. package/dist/commonjs/models/models.js +5 -0
  156. package/dist/commonjs/models/models.js.map +1 -0
  157. package/dist/commonjs/package.json +3 -0
  158. package/{types/latest → dist/commonjs}/tsdoc-metadata.json +11 -11
  159. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/constants.d.ts +9 -9
  160. package/dist/commonjs/utils/constants.d.ts.map +1 -0
  161. package/dist/commonjs/utils/constants.js +14 -0
  162. package/dist/commonjs/utils/constants.js.map +1 -0
  163. package/dist/commonjs/utils/tracing.d.ts +6 -0
  164. package/dist/commonjs/utils/tracing.d.ts.map +1 -0
  165. package/dist/commonjs/utils/tracing.js +17 -0
  166. package/dist/commonjs/utils/tracing.js.map +1 -0
  167. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/utils.browser.d.ts +14 -15
  168. package/dist/commonjs/utils/utils.browser.d.ts.map +1 -0
  169. package/dist/commonjs/utils/utils.browser.js +34 -0
  170. package/dist/commonjs/utils/utils.browser.js.map +1 -0
  171. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/utils.common.d.ts +37 -44
  172. package/dist/commonjs/utils/utils.common.d.ts.map +1 -0
  173. package/dist/commonjs/utils/utils.common.js +180 -0
  174. package/dist/commonjs/utils/utils.common.js.map +1 -0
  175. package/{types/3.1/storage-blob-changefeed/src → dist/commonjs}/utils/utils.node.d.ts +14 -15
  176. package/dist/commonjs/utils/utils.node.d.ts.map +1 -0
  177. package/dist/commonjs/utils/utils.node.js +32 -0
  178. package/dist/commonjs/utils/utils.node.js.map +1 -0
  179. package/dist/esm/AvroReaderFactory.d.ts +10 -0
  180. package/dist/esm/AvroReaderFactory.d.ts.map +1 -0
  181. package/dist/esm/AvroReaderFactory.js +17 -0
  182. package/dist/esm/AvroReaderFactory.js.map +1 -0
  183. package/dist/esm/BlobChangeFeedClient.d.ts +201 -0
  184. package/dist/esm/BlobChangeFeedClient.d.ts.map +1 -0
  185. package/dist/esm/BlobChangeFeedClient.js +242 -0
  186. package/dist/esm/BlobChangeFeedClient.js.map +1 -0
  187. package/dist/esm/ChangeFeed.d.ts +37 -0
  188. package/dist/esm/ChangeFeed.d.ts.map +1 -0
  189. package/dist/esm/ChangeFeed.js +104 -0
  190. package/dist/esm/ChangeFeed.js.map +1 -0
  191. package/dist/esm/ChangeFeedFactory.d.ts +13 -0
  192. package/dist/esm/ChangeFeedFactory.d.ts.map +1 -0
  193. package/dist/esm/ChangeFeedFactory.js +122 -0
  194. package/dist/esm/ChangeFeedFactory.js.map +1 -0
  195. package/dist/esm/Chunk.d.ts +27 -0
  196. package/dist/esm/Chunk.d.ts.map +1 -0
  197. package/dist/esm/Chunk.js +45 -0
  198. package/dist/esm/Chunk.js.map +1 -0
  199. package/dist/esm/ChunkFactory.d.ts +23 -0
  200. package/dist/esm/ChunkFactory.d.ts.map +1 -0
  201. package/dist/esm/ChunkFactory.js +33 -0
  202. package/dist/esm/ChunkFactory.js.map +1 -0
  203. package/dist/esm/LazyLoadingBlobStream.d.ts +46 -0
  204. package/dist/esm/LazyLoadingBlobStream.d.ts.map +1 -0
  205. package/dist/esm/LazyLoadingBlobStream.js +92 -0
  206. package/dist/esm/LazyLoadingBlobStream.js.map +1 -0
  207. package/dist/esm/LazyLoadingBlobStreamFactory.d.ts +7 -0
  208. package/dist/esm/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  209. package/dist/esm/LazyLoadingBlobStreamFactory.js +9 -0
  210. package/dist/esm/LazyLoadingBlobStreamFactory.js.map +1 -0
  211. package/dist/esm/Segment.d.ts +29 -0
  212. package/dist/esm/Segment.d.ts.map +1 -0
  213. package/dist/esm/Segment.js +69 -0
  214. package/dist/esm/Segment.js.map +1 -0
  215. package/dist/esm/SegmentFactory.d.ts +29 -0
  216. package/dist/esm/SegmentFactory.d.ts.map +1 -0
  217. package/dist/esm/SegmentFactory.js +47 -0
  218. package/dist/esm/SegmentFactory.js.map +1 -0
  219. package/dist/esm/Shard.d.ts +28 -0
  220. package/dist/esm/Shard.d.ts.map +1 -0
  221. package/dist/esm/Shard.js +46 -0
  222. package/dist/esm/Shard.js.map +1 -0
  223. package/dist/esm/ShardFactory.d.ts +21 -0
  224. package/dist/esm/ShardFactory.d.ts.map +1 -0
  225. package/dist/esm/ShardFactory.js +55 -0
  226. package/dist/esm/ShardFactory.js.map +1 -0
  227. package/dist/esm/index.d.ts +4 -0
  228. package/dist/esm/index.d.ts.map +1 -0
  229. package/dist/esm/index.js +6 -0
  230. package/dist/esm/index.js.map +1 -0
  231. package/dist/esm/log.d.ts +5 -0
  232. package/dist/esm/log.d.ts.map +1 -0
  233. package/dist/esm/log.js +8 -0
  234. package/dist/esm/log.js.map +1 -0
  235. package/dist/esm/models/BlobChangeFeedEvent.d.ts +233 -0
  236. package/dist/esm/models/BlobChangeFeedEvent.d.ts.map +1 -0
  237. package/dist/esm/models/BlobChangeFeedEvent.js +4 -0
  238. package/dist/esm/models/BlobChangeFeedEvent.js.map +1 -0
  239. package/dist/esm/models/ChangeFeedCursor.d.ts +17 -0
  240. package/dist/esm/models/ChangeFeedCursor.d.ts.map +1 -0
  241. package/dist/esm/models/ChangeFeedCursor.js +4 -0
  242. package/dist/esm/models/ChangeFeedCursor.js.map +1 -0
  243. package/dist/esm/models/models.d.ts +23 -0
  244. package/dist/esm/models/models.d.ts.map +1 -0
  245. package/dist/esm/models/models.js +4 -0
  246. package/dist/esm/models/models.js.map +1 -0
  247. package/dist/esm/package.json +3 -0
  248. package/dist/esm/utils/constants.d.ts +9 -0
  249. package/dist/esm/utils/constants.d.ts.map +1 -0
  250. package/dist/esm/utils/constants.js +11 -0
  251. package/dist/esm/utils/constants.js.map +1 -0
  252. package/dist/esm/utils/tracing.d.ts +6 -0
  253. package/dist/esm/utils/tracing.d.ts.map +1 -0
  254. package/dist/esm/utils/tracing.js +14 -0
  255. package/dist/esm/utils/tracing.js.map +1 -0
  256. package/dist/esm/utils/utils.browser.d.ts +14 -0
  257. package/dist/esm/utils/utils.browser.d.ts.map +1 -0
  258. package/dist/esm/utils/utils.browser.js +29 -0
  259. package/dist/esm/utils/utils.browser.js.map +1 -0
  260. package/dist/esm/utils/utils.common.d.ts +37 -0
  261. package/dist/esm/utils/utils.common.d.ts.map +1 -0
  262. package/dist/esm/utils/utils.common.js +170 -0
  263. package/dist/esm/utils/utils.common.js.map +1 -0
  264. package/dist/esm/utils/utils.node.d.ts +14 -0
  265. package/dist/esm/utils/utils.node.d.ts.map +1 -0
  266. package/dist/esm/utils/utils.node.js +28 -0
  267. package/dist/esm/utils/utils.node.js.map +1 -0
  268. package/dist/react-native/AvroReaderFactory.d.ts +10 -0
  269. package/dist/react-native/AvroReaderFactory.d.ts.map +1 -0
  270. package/dist/react-native/AvroReaderFactory.js +17 -0
  271. package/dist/react-native/AvroReaderFactory.js.map +1 -0
  272. package/dist/react-native/BlobChangeFeedClient.d.ts +201 -0
  273. package/dist/react-native/BlobChangeFeedClient.d.ts.map +1 -0
  274. package/dist/react-native/BlobChangeFeedClient.js +242 -0
  275. package/dist/react-native/BlobChangeFeedClient.js.map +1 -0
  276. package/dist/react-native/ChangeFeed.d.ts +37 -0
  277. package/dist/react-native/ChangeFeed.d.ts.map +1 -0
  278. package/dist/react-native/ChangeFeed.js +104 -0
  279. package/dist/react-native/ChangeFeed.js.map +1 -0
  280. package/dist/react-native/ChangeFeedFactory.d.ts +13 -0
  281. package/dist/react-native/ChangeFeedFactory.d.ts.map +1 -0
  282. package/dist/react-native/ChangeFeedFactory.js +122 -0
  283. package/dist/react-native/ChangeFeedFactory.js.map +1 -0
  284. package/dist/react-native/Chunk.d.ts +27 -0
  285. package/dist/react-native/Chunk.d.ts.map +1 -0
  286. package/dist/react-native/Chunk.js +45 -0
  287. package/dist/react-native/Chunk.js.map +1 -0
  288. package/dist/react-native/ChunkFactory.d.ts +23 -0
  289. package/dist/react-native/ChunkFactory.d.ts.map +1 -0
  290. package/dist/react-native/ChunkFactory.js +33 -0
  291. package/dist/react-native/ChunkFactory.js.map +1 -0
  292. package/dist/react-native/LazyLoadingBlobStream.d.ts +46 -0
  293. package/dist/react-native/LazyLoadingBlobStream.d.ts.map +1 -0
  294. package/dist/react-native/LazyLoadingBlobStream.js +92 -0
  295. package/dist/react-native/LazyLoadingBlobStream.js.map +1 -0
  296. package/dist/react-native/LazyLoadingBlobStreamFactory.d.ts +7 -0
  297. package/dist/react-native/LazyLoadingBlobStreamFactory.d.ts.map +1 -0
  298. package/dist/react-native/LazyLoadingBlobStreamFactory.js +9 -0
  299. package/dist/react-native/LazyLoadingBlobStreamFactory.js.map +1 -0
  300. package/dist/react-native/Segment.d.ts +29 -0
  301. package/dist/react-native/Segment.d.ts.map +1 -0
  302. package/dist/react-native/Segment.js +69 -0
  303. package/dist/react-native/Segment.js.map +1 -0
  304. package/dist/react-native/SegmentFactory.d.ts +29 -0
  305. package/dist/react-native/SegmentFactory.d.ts.map +1 -0
  306. package/dist/react-native/SegmentFactory.js +47 -0
  307. package/dist/react-native/SegmentFactory.js.map +1 -0
  308. package/dist/react-native/Shard.d.ts +28 -0
  309. package/dist/react-native/Shard.d.ts.map +1 -0
  310. package/dist/react-native/Shard.js +46 -0
  311. package/dist/react-native/Shard.js.map +1 -0
  312. package/dist/react-native/ShardFactory.d.ts +21 -0
  313. package/dist/react-native/ShardFactory.d.ts.map +1 -0
  314. package/dist/react-native/ShardFactory.js +55 -0
  315. package/dist/react-native/ShardFactory.js.map +1 -0
  316. package/dist/react-native/index.d.ts +4 -0
  317. package/dist/react-native/index.d.ts.map +1 -0
  318. package/dist/react-native/index.js +6 -0
  319. package/dist/react-native/index.js.map +1 -0
  320. package/dist/react-native/log.d.ts +5 -0
  321. package/dist/react-native/log.d.ts.map +1 -0
  322. package/dist/react-native/log.js +8 -0
  323. package/dist/react-native/log.js.map +1 -0
  324. package/dist/react-native/models/BlobChangeFeedEvent.d.ts +233 -0
  325. package/dist/react-native/models/BlobChangeFeedEvent.d.ts.map +1 -0
  326. package/dist/react-native/models/BlobChangeFeedEvent.js +4 -0
  327. package/dist/react-native/models/BlobChangeFeedEvent.js.map +1 -0
  328. package/dist/react-native/models/ChangeFeedCursor.d.ts +17 -0
  329. package/dist/react-native/models/ChangeFeedCursor.d.ts.map +1 -0
  330. package/dist/react-native/models/ChangeFeedCursor.js +4 -0
  331. package/dist/react-native/models/ChangeFeedCursor.js.map +1 -0
  332. package/dist/react-native/models/models.d.ts +23 -0
  333. package/dist/react-native/models/models.d.ts.map +1 -0
  334. package/dist/react-native/models/models.js +4 -0
  335. package/dist/react-native/models/models.js.map +1 -0
  336. package/dist/react-native/package.json +3 -0
  337. package/dist/react-native/utils/constants.d.ts +9 -0
  338. package/dist/react-native/utils/constants.d.ts.map +1 -0
  339. package/dist/react-native/utils/constants.js +11 -0
  340. package/dist/react-native/utils/constants.js.map +1 -0
  341. package/dist/react-native/utils/tracing.d.ts +6 -0
  342. package/dist/react-native/utils/tracing.d.ts.map +1 -0
  343. package/dist/react-native/utils/tracing.js +14 -0
  344. package/dist/react-native/utils/tracing.js.map +1 -0
  345. package/dist/react-native/utils/utils.browser.d.ts +14 -0
  346. package/dist/react-native/utils/utils.browser.d.ts.map +1 -0
  347. package/dist/react-native/utils/utils.browser.js +29 -0
  348. package/dist/react-native/utils/utils.browser.js.map +1 -0
  349. package/dist/react-native/utils/utils.common.d.ts +37 -0
  350. package/dist/react-native/utils/utils.common.d.ts.map +1 -0
  351. package/dist/react-native/utils/utils.common.js +170 -0
  352. package/dist/react-native/utils/utils.common.js.map +1 -0
  353. package/dist/react-native/utils/utils.node.d.ts +14 -0
  354. package/dist/react-native/utils/utils.node.d.ts.map +1 -0
  355. package/dist/react-native/utils/utils.node.js +28 -0
  356. package/dist/react-native/utils/utils.node.js.map +1 -0
  357. package/package.json +89 -104
  358. package/CHANGELOG.md +0 -15
  359. package/dist/index.js +0 -1644
  360. package/dist/index.js.map +0 -1
  361. package/dist-esm/storage-blob-changefeed/src/AvroReaderFactory.js.map +0 -1
  362. package/dist-esm/storage-blob-changefeed/src/BlobChangeFeedClient.js +0 -221
  363. package/dist-esm/storage-blob-changefeed/src/BlobChangeFeedClient.js.map +0 -1
  364. package/dist-esm/storage-blob-changefeed/src/ChangeFeed.js.map +0 -1
  365. package/dist-esm/storage-blob-changefeed/src/ChangeFeedFactory.js.map +0 -1
  366. package/dist-esm/storage-blob-changefeed/src/Chunk.js.map +0 -1
  367. package/dist-esm/storage-blob-changefeed/src/ChunkFactory.js.map +0 -1
  368. package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStream.js.map +0 -1
  369. package/dist-esm/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.js.map +0 -1
  370. package/dist-esm/storage-blob-changefeed/src/Segment.js.map +0 -1
  371. package/dist-esm/storage-blob-changefeed/src/SegmentFactory.js.map +0 -1
  372. package/dist-esm/storage-blob-changefeed/src/Shard.js.map +0 -1
  373. package/dist-esm/storage-blob-changefeed/src/ShardFactory.js +0 -78
  374. package/dist-esm/storage-blob-changefeed/src/ShardFactory.js.map +0 -1
  375. package/dist-esm/storage-blob-changefeed/src/index.js +0 -6
  376. package/dist-esm/storage-blob-changefeed/src/index.js.map +0 -1
  377. package/dist-esm/storage-blob-changefeed/src/log.js.map +0 -1
  378. package/dist-esm/storage-blob-changefeed/src/models/BlobChangeFeedEvent.js +0 -4
  379. package/dist-esm/storage-blob-changefeed/src/models/BlobChangeFeedEvent.js.map +0 -1
  380. package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js +0 -4
  381. package/dist-esm/storage-blob-changefeed/src/models/ChangeFeedCursor.js.map +0 -1
  382. package/dist-esm/storage-blob-changefeed/src/models/models.js +0 -4
  383. package/dist-esm/storage-blob-changefeed/src/models/models.js.map +0 -1
  384. package/dist-esm/storage-blob-changefeed/src/utils/constants.js.map +0 -1
  385. package/dist-esm/storage-blob-changefeed/src/utils/tracing.js +0 -12
  386. package/dist-esm/storage-blob-changefeed/src/utils/tracing.js.map +0 -1
  387. package/dist-esm/storage-blob-changefeed/src/utils/utils.browser.js.map +0 -1
  388. package/dist-esm/storage-blob-changefeed/src/utils/utils.common.js.map +0 -1
  389. package/dist-esm/storage-blob-changefeed/src/utils/utils.node.js.map +0 -1
  390. package/dist-esm/storage-internal-avro/src/AvroConstants.js +0 -7
  391. package/dist-esm/storage-internal-avro/src/AvroConstants.js.map +0 -1
  392. package/dist-esm/storage-internal-avro/src/AvroParser.js +0 -313
  393. package/dist-esm/storage-internal-avro/src/AvroParser.js.map +0 -1
  394. package/dist-esm/storage-internal-avro/src/AvroReadable.js +0 -5
  395. package/dist-esm/storage-internal-avro/src/AvroReadable.js.map +0 -1
  396. package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js +0 -47
  397. package/dist-esm/storage-internal-avro/src/AvroReadableFromBlob.js.map +0 -1
  398. package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js +0 -82
  399. package/dist-esm/storage-internal-avro/src/AvroReadableFromStream.js.map +0 -1
  400. package/dist-esm/storage-internal-avro/src/AvroReader.js +0 -105
  401. package/dist-esm/storage-internal-avro/src/AvroReader.js.map +0 -1
  402. package/dist-esm/storage-internal-avro/src/index.browser.js +0 -6
  403. package/dist-esm/storage-internal-avro/src/index.browser.js.map +0 -1
  404. package/dist-esm/storage-internal-avro/src/index.js +0 -6
  405. package/dist-esm/storage-internal-avro/src/index.js.map +0 -1
  406. package/dist-esm/storage-internal-avro/src/utils/utils.common.js +0 -16
  407. package/dist-esm/storage-internal-avro/src/utils/utils.common.js.map +0 -1
  408. package/types/3.1/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts +0 -2
  409. package/types/3.1/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts +0 -2
  410. package/types/3.1/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts +0 -172
  411. package/types/3.1/storage-blob-changefeed/src/ChangeFeedFactory.d.ts +0 -12
  412. package/types/3.1/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts +0 -6
  413. package/types/3.1/storage-blob-changefeed/src/index.d.ts +0 -4
  414. package/types/3.1/storage-blob-changefeed/src/utils/tracing.d.ts +0 -11
  415. package/types/3.1/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts +0 -2
  416. package/types/3.1/storage-blob-changefeed/test/changefeed.spec.d.ts +0 -2
  417. package/types/3.1/storage-blob-changefeed/test/chunk.spec.d.ts +0 -2
  418. package/types/3.1/storage-blob-changefeed/test/segment.spec.d.ts +0 -2
  419. package/types/3.1/storage-blob-changefeed/test/shard.spec.d.ts +0 -2
  420. package/types/3.1/storage-blob-changefeed/test/utils/index.d.ts +0 -13
  421. package/types/3.1/storage-blob-changefeed/test/utils/testutils.common.d.ts +0 -64
  422. package/types/3.1/storage-blob-changefeed.d.ts +0 -427
  423. package/types/3.1/storage-internal-avro/src/AvroConstants.d.ts +0 -5
  424. package/types/3.1/storage-internal-avro/src/AvroParser.d.ts +0 -57
  425. package/types/3.1/storage-internal-avro/src/AvroReadable.d.ts +0 -16
  426. package/types/3.1/storage-internal-avro/src/AvroReadableFromBlob.d.ts +0 -9
  427. package/types/3.1/storage-internal-avro/src/AvroReadableFromStream.d.ts +0 -11
  428. package/types/3.1/storage-internal-avro/src/AvroReader.d.ts +0 -33
  429. package/types/3.1/storage-internal-avro/src/index.browser.d.ts +0 -4
  430. package/types/3.1/storage-internal-avro/src/index.d.ts +0 -4
  431. package/types/3.1/storage-internal-avro/src/utils/utils.common.d.ts +0 -6
  432. package/types/3.1/storage-internal-avro/test/browser/avroreadable.spec.d.ts +0 -2
  433. package/types/3.1/storage-internal-avro/test/node/avroreadable.spec.d.ts +0 -2
  434. package/types/3.1/storage-internal-avro/test/node/avroreader.spec.d.ts +0 -2
  435. package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts +0 -2
  436. package/types/latest/storage-blob-changefeed/samples-dev/blobChangeFeedClient.d.ts.map +0 -1
  437. package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts +0 -2
  438. package/types/latest/storage-blob-changefeed/samples-dev/resumeListChanges.d.ts.map +0 -1
  439. package/types/latest/storage-blob-changefeed/src/AvroReaderFactory.d.ts.map +0 -1
  440. package/types/latest/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts +0 -172
  441. package/types/latest/storage-blob-changefeed/src/BlobChangeFeedClient.d.ts.map +0 -1
  442. package/types/latest/storage-blob-changefeed/src/ChangeFeed.d.ts.map +0 -1
  443. package/types/latest/storage-blob-changefeed/src/ChangeFeedFactory.d.ts +0 -12
  444. package/types/latest/storage-blob-changefeed/src/ChangeFeedFactory.d.ts.map +0 -1
  445. package/types/latest/storage-blob-changefeed/src/Chunk.d.ts.map +0 -1
  446. package/types/latest/storage-blob-changefeed/src/ChunkFactory.d.ts.map +0 -1
  447. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStream.d.ts.map +0 -1
  448. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts +0 -6
  449. package/types/latest/storage-blob-changefeed/src/LazyLoadingBlobStreamFactory.d.ts.map +0 -1
  450. package/types/latest/storage-blob-changefeed/src/Segment.d.ts.map +0 -1
  451. package/types/latest/storage-blob-changefeed/src/SegmentFactory.d.ts.map +0 -1
  452. package/types/latest/storage-blob-changefeed/src/Shard.d.ts.map +0 -1
  453. package/types/latest/storage-blob-changefeed/src/ShardFactory.d.ts.map +0 -1
  454. package/types/latest/storage-blob-changefeed/src/index.d.ts +0 -4
  455. package/types/latest/storage-blob-changefeed/src/index.d.ts.map +0 -1
  456. package/types/latest/storage-blob-changefeed/src/log.d.ts.map +0 -1
  457. package/types/latest/storage-blob-changefeed/src/models/BlobChangeFeedEvent.d.ts.map +0 -1
  458. package/types/latest/storage-blob-changefeed/src/models/ChangeFeedCursor.d.ts.map +0 -1
  459. package/types/latest/storage-blob-changefeed/src/models/models.d.ts.map +0 -1
  460. package/types/latest/storage-blob-changefeed/src/utils/constants.d.ts.map +0 -1
  461. package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts +0 -11
  462. package/types/latest/storage-blob-changefeed/src/utils/tracing.d.ts.map +0 -1
  463. package/types/latest/storage-blob-changefeed/src/utils/utils.browser.d.ts.map +0 -1
  464. package/types/latest/storage-blob-changefeed/src/utils/utils.common.d.ts.map +0 -1
  465. package/types/latest/storage-blob-changefeed/src/utils/utils.node.d.ts.map +0 -1
  466. package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts +0 -2
  467. package/types/latest/storage-blob-changefeed/test/blobchangefeedclient.spec.d.ts.map +0 -1
  468. package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts +0 -2
  469. package/types/latest/storage-blob-changefeed/test/changefeed.spec.d.ts.map +0 -1
  470. package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts +0 -2
  471. package/types/latest/storage-blob-changefeed/test/chunk.spec.d.ts.map +0 -1
  472. package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts +0 -2
  473. package/types/latest/storage-blob-changefeed/test/segment.spec.d.ts.map +0 -1
  474. package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts +0 -2
  475. package/types/latest/storage-blob-changefeed/test/shard.spec.d.ts.map +0 -1
  476. package/types/latest/storage-blob-changefeed/test/utils/index.d.ts +0 -13
  477. package/types/latest/storage-blob-changefeed/test/utils/index.d.ts.map +0 -1
  478. package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts +0 -64
  479. package/types/latest/storage-blob-changefeed/test/utils/testutils.common.d.ts.map +0 -1
  480. package/types/latest/storage-blob-changefeed.d.ts +0 -442
  481. package/types/latest/storage-internal-avro/src/AvroConstants.d.ts +0 -5
  482. package/types/latest/storage-internal-avro/src/AvroConstants.d.ts.map +0 -1
  483. package/types/latest/storage-internal-avro/src/AvroParser.d.ts +0 -57
  484. package/types/latest/storage-internal-avro/src/AvroParser.d.ts.map +0 -1
  485. package/types/latest/storage-internal-avro/src/AvroReadable.d.ts +0 -16
  486. package/types/latest/storage-internal-avro/src/AvroReadable.d.ts.map +0 -1
  487. package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts +0 -9
  488. package/types/latest/storage-internal-avro/src/AvroReadableFromBlob.d.ts.map +0 -1
  489. package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts +0 -11
  490. package/types/latest/storage-internal-avro/src/AvroReadableFromStream.d.ts.map +0 -1
  491. package/types/latest/storage-internal-avro/src/AvroReader.d.ts +0 -33
  492. package/types/latest/storage-internal-avro/src/AvroReader.d.ts.map +0 -1
  493. package/types/latest/storage-internal-avro/src/index.browser.d.ts +0 -4
  494. package/types/latest/storage-internal-avro/src/index.browser.d.ts.map +0 -1
  495. package/types/latest/storage-internal-avro/src/index.d.ts +0 -4
  496. package/types/latest/storage-internal-avro/src/index.d.ts.map +0 -1
  497. package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts +0 -6
  498. package/types/latest/storage-internal-avro/src/utils/utils.common.d.ts.map +0 -1
  499. package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts +0 -2
  500. package/types/latest/storage-internal-avro/test/browser/avroreadable.spec.d.ts.map +0 -1
  501. package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts +0 -2
  502. package/types/latest/storage-internal-avro/test/node/avroreadable.spec.d.ts.map +0 -1
  503. package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts +0 -2
  504. package/types/latest/storage-internal-avro/test/node/avroreader.spec.d.ts.map +0 -1
  505. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/log.d.ts +0 -0
  506. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/models/ChangeFeedCursor.d.ts +0 -0
  507. /package/{types/latest/storage-blob-changefeed/src → dist/browser}/utils/constants.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeFeed.js","sourceRoot":"","sources":["../../src/ChangeFeed.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport type { Segment } from \"./Segment.js\";\nimport type { SegmentFactory } from \"./SegmentFactory.js\";\nimport type { BlobChangeFeedEvent } from \"./models/BlobChangeFeedEvent.js\";\nimport type { ChangeFeedCursor } from \"./models/ChangeFeedCursor.js\";\nimport { getSegmentsInYear, minDate, getHost } from \"./utils/utils.common.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Options to configure {@link ChangeFeed.getChange} operation.\n */\nexport interface ChangeFeedGetChangeOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport class ChangeFeed {\n /**\n * BlobContainerClient for making List Blob requests and creating Segments.\n */\n private readonly containerClient?: ContainerClient;\n\n private readonly segmentFactory?: SegmentFactory;\n\n private readonly years: number[];\n\n private segments: string[];\n\n private currentSegment?: Segment;\n\n private lastConsumable?: Date;\n\n private startTime?: Date;\n\n private endTime?: Date;\n\n private end?: Date;\n\n constructor();\n constructor(\n containerClient: ContainerClient,\n segmentFactory: SegmentFactory,\n years: number[],\n segments: string[],\n currentSegment: Segment,\n lastConsumable: Date,\n startTime?: Date,\n endTime?: Date,\n );\n\n constructor(\n containerClient?: ContainerClient,\n segmentFactory?: SegmentFactory,\n years?: number[],\n segments?: string[],\n currentSegment?: Segment,\n lastConsumable?: Date,\n startTime?: Date,\n endTime?: Date,\n ) {\n this.containerClient = containerClient;\n this.segmentFactory = segmentFactory;\n this.years = years || [];\n this.segments = segments || [];\n this.currentSegment = currentSegment;\n this.lastConsumable = lastConsumable;\n this.startTime = startTime;\n this.endTime = endTime;\n if (this.lastConsumable) {\n this.end = minDate(this.lastConsumable, this.endTime);\n }\n }\n\n private async advanceSegmentIfNecessary(options: ChangeFeedGetChangeOptions = {}): Promise<void> {\n return tracingClient.withSpan(\n \"ChangeFeed-advanceSegmentIfNecessary\",\n options,\n async (updatedOptions) => {\n if (!this.currentSegment) {\n throw new Error(\"Empty Change Feed shouldn't call this function.\");\n }\n\n // If the current segment has more Events, we don't need to do anything.\n if (this.currentSegment.hasNext()) {\n return;\n }\n\n // If the current segment is completed, remove it\n if (this.segments.length > 0) {\n this.currentSegment = await this.segmentFactory!.create(\n this.containerClient!,\n this.segments.shift()!,\n undefined,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n }\n // If segments is empty, refill it\n else if (this.segments.length === 0 && this.years.length > 0) {\n const year = this.years.shift();\n this.segments = await getSegmentsInYear(\n this.containerClient!,\n year!,\n this.startTime,\n this.end,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n\n if (this.segments.length > 0) {\n this.currentSegment = await this.segmentFactory!.create(\n this.containerClient!,\n this.segments.shift()!,\n undefined,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n } else {\n this.currentSegment = undefined;\n }\n }\n },\n );\n }\n\n public hasNext(): boolean {\n // Empty ChangeFeed, using currentSegment as the indicator.\n if (!this.currentSegment) {\n return false;\n }\n\n if (this.segments.length === 0 && this.years.length === 0 && !this.currentSegment.hasNext()) {\n return false;\n }\n\n return this.currentSegment.dateTime < this.end!;\n }\n\n public async getChange(\n options: ChangeFeedGetChangeOptions = {},\n ): Promise<BlobChangeFeedEvent | undefined> {\n return tracingClient.withSpan(\"ChangeFeed-getChange\", options, async (updatedOptions) => {\n let event: BlobChangeFeedEvent | undefined = undefined;\n while (event === undefined && this.hasNext()) {\n event = await this.currentSegment!.getChange({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n await this.advanceSegmentIfNecessary({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n }\n return event;\n });\n }\n\n public getCursor(): ChangeFeedCursor {\n if (!this.currentSegment) {\n throw new Error(\"Empty Change Feed shouldn't call this function.\");\n }\n\n return {\n CursorVersion: 1,\n UrlHost: getHost(this.containerClient!.url)!,\n EndTime: this.endTime?.toJSON(),\n CurrentSegmentCursor: this.currentSegment!.getCursor(),\n };\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { BlobServiceClient } from "@azure/storage-blob";
2
+ import { ChangeFeed } from "./ChangeFeed.js";
3
+ import { SegmentFactory } from "./SegmentFactory.js";
4
+ import type { BlobChangeFeedListChangesOptions } from "./models/models.js";
5
+ export declare class ChangeFeedFactory {
6
+ private readonly segmentFactory;
7
+ private readonly maxTransferSize?;
8
+ constructor(maxTransferSize?: number);
9
+ constructor(segmentFactory: SegmentFactory);
10
+ private static validateCursor;
11
+ create(blobServiceClient: BlobServiceClient, continuationToken?: string, options?: BlobChangeFeedListChangesOptions): Promise<ChangeFeed>;
12
+ }
13
+ //# sourceMappingURL=ChangeFeedFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeFeedFactory.d.ts","sourceRoot":"","sources":["../../src/ChangeFeedFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAe3E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;gBAE9B,eAAe,CAAC,EAAE,MAAM;gBACxB,cAAc,EAAE,cAAc;IA0B1C,OAAO,CAAC,MAAM,CAAC,cAAc;IAShB,MAAM,CACjB,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,UAAU,CAAC;CA0GvB"}
@@ -0,0 +1,122 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { ChangeFeed } from "./ChangeFeed.js";
4
+ import { CHANGE_FEED_CONTAINER_NAME, CHANGE_FEED_META_SEGMENT_PATH } from "./utils/constants.js";
5
+ import { ceilToNearestHour, floorToNearestHour, getYearsPaths, getSegmentsInYear, minDate, getHost, parseDateFromSegmentPath, } from "./utils/utils.common.js";
6
+ import { bodyToString } from "./utils/utils.node.js";
7
+ import { SegmentFactory } from "./SegmentFactory.js";
8
+ import { ShardFactory } from "./ShardFactory.js";
9
+ import { ChunkFactory } from "./ChunkFactory.js";
10
+ import { AvroReaderFactory } from "./AvroReaderFactory.js";
11
+ import { tracingClient } from "./utils/tracing.js";
12
+ import { LazyLoadingBlobStreamFactory } from "./LazyLoadingBlobStreamFactory.js";
13
+ function isSegmentFactory(segmentFactoryOrMaxTransferSize) {
14
+ return segmentFactoryOrMaxTransferSize.create !== undefined;
15
+ }
16
+ export class ChangeFeedFactory {
17
+ segmentFactory;
18
+ maxTransferSize;
19
+ constructor(segmentFactoryOrMaxTransferSize) {
20
+ let segmentFactory;
21
+ if (segmentFactoryOrMaxTransferSize) {
22
+ if (Number.isFinite(segmentFactoryOrMaxTransferSize)) {
23
+ this.maxTransferSize = segmentFactoryOrMaxTransferSize;
24
+ }
25
+ else if (isSegmentFactory(segmentFactoryOrMaxTransferSize)) {
26
+ segmentFactory = segmentFactoryOrMaxTransferSize;
27
+ }
28
+ }
29
+ if (segmentFactory) {
30
+ this.segmentFactory = segmentFactory;
31
+ }
32
+ else {
33
+ this.segmentFactory = new SegmentFactory(new ShardFactory(new ChunkFactory(new AvroReaderFactory(), new LazyLoadingBlobStreamFactory(), this.maxTransferSize)));
34
+ }
35
+ }
36
+ static validateCursor(containerClient, cursor) {
37
+ if (getHost(containerClient.url) !== cursor.UrlHost) {
38
+ throw new Error("Cursor URL host does not match container URL host.");
39
+ }
40
+ if (cursor.CursorVersion !== 1) {
41
+ throw new Error("Unsupported cursor version.");
42
+ }
43
+ }
44
+ async create(blobServiceClient, continuationToken, options = {}) {
45
+ return tracingClient.withSpan("ChangeFeedFactory-create", options, async (updatedOptions) => {
46
+ const containerClient = blobServiceClient.getContainerClient(CHANGE_FEED_CONTAINER_NAME);
47
+ let cursor = undefined;
48
+ // Create cursor.
49
+ if (continuationToken) {
50
+ cursor = JSON.parse(continuationToken);
51
+ ChangeFeedFactory.validateCursor(containerClient, cursor);
52
+ options.start = parseDateFromSegmentPath(cursor.CurrentSegmentCursor.SegmentPath);
53
+ options.end = new Date(cursor.EndTime);
54
+ }
55
+ // Round start and end time if we are not using the cursor.
56
+ else {
57
+ options.start = floorToNearestHour(options.start);
58
+ options.end = ceilToNearestHour(options.end);
59
+ }
60
+ // Check if Change Feed has been enabled for this account.
61
+ const changeFeedContainerExists = await containerClient.exists({
62
+ abortSignal: options.abortSignal,
63
+ tracingOptions: updatedOptions.tracingOptions,
64
+ });
65
+ if (!changeFeedContainerExists) {
66
+ throw new Error("Change Feed hasn't been enabled on this account, or is currently being enabled.");
67
+ }
68
+ if (options.start && options.end && options.start >= options.end) {
69
+ return new ChangeFeed();
70
+ }
71
+ // Get last consumable.
72
+ const blobClient = containerClient.getBlobClient(CHANGE_FEED_META_SEGMENT_PATH);
73
+ let blobDownloadRes;
74
+ try {
75
+ blobDownloadRes = await blobClient.download(undefined, undefined, {
76
+ abortSignal: options.abortSignal,
77
+ tracingOptions: updatedOptions.tracingOptions,
78
+ });
79
+ }
80
+ catch (err) {
81
+ if (err.statusCode === 404) {
82
+ return new ChangeFeed();
83
+ }
84
+ else {
85
+ throw err;
86
+ }
87
+ }
88
+ const lastConsumable = new Date(JSON.parse(await bodyToString(blobDownloadRes)).lastConsumable);
89
+ // Get year paths
90
+ const years = await getYearsPaths(containerClient, {
91
+ abortSignal: options.abortSignal,
92
+ tracingOptions: updatedOptions.tracingOptions,
93
+ });
94
+ // Dequeue any years that occur before start time.
95
+ if (options.start) {
96
+ const startYear = options.start.getUTCFullYear();
97
+ while (years.length > 0 && years[0] < startYear) {
98
+ years.shift();
99
+ }
100
+ }
101
+ if (years.length === 0) {
102
+ return new ChangeFeed();
103
+ }
104
+ let segments = [];
105
+ while (segments.length === 0 && years.length !== 0) {
106
+ segments = await getSegmentsInYear(containerClient, years.shift(), options.start, minDate(lastConsumable, options.end), {
107
+ abortSignal: options.abortSignal,
108
+ tracingOptions: updatedOptions.tracingOptions,
109
+ });
110
+ }
111
+ if (segments.length === 0) {
112
+ return new ChangeFeed();
113
+ }
114
+ const currentSegment = await this.segmentFactory.create(containerClient, segments.shift(), cursor?.CurrentSegmentCursor, {
115
+ abortSignal: options.abortSignal,
116
+ tracingOptions: updatedOptions.tracingOptions,
117
+ });
118
+ return new ChangeFeed(containerClient, this.segmentFactory, years, segments, currentSegment, lastConsumable, options.start, options.end);
119
+ });
120
+ }
121
+ }
122
+ //# sourceMappingURL=ChangeFeedFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeFeedFactory.js","sourceRoot":"","sources":["../../src/ChangeFeedFactory.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BlobServiceClient, ContainerClient } from \"@azure/storage-blob\";\nimport { ChangeFeed } from \"./ChangeFeed.js\";\nimport type { ChangeFeedCursor } from \"./models/ChangeFeedCursor.js\";\nimport { CHANGE_FEED_CONTAINER_NAME, CHANGE_FEED_META_SEGMENT_PATH } from \"./utils/constants.js\";\nimport {\n ceilToNearestHour,\n floorToNearestHour,\n getYearsPaths,\n getSegmentsInYear,\n minDate,\n getHost,\n parseDateFromSegmentPath,\n} from \"./utils/utils.common.js\";\nimport { bodyToString } from \"./utils/utils.node.js\";\nimport { SegmentFactory } from \"./SegmentFactory.js\";\nimport { ShardFactory } from \"./ShardFactory.js\";\nimport { ChunkFactory } from \"./ChunkFactory.js\";\nimport { AvroReaderFactory } from \"./AvroReaderFactory.js\";\nimport type { Segment } from \"./Segment.js\";\nimport type { BlobChangeFeedListChangesOptions } from \"./models/models.js\";\nimport { tracingClient } from \"./utils/tracing.js\";\nimport { LazyLoadingBlobStreamFactory } from \"./LazyLoadingBlobStreamFactory.js\";\n\ninterface MetaSegments {\n version?: number;\n lastConsumable: string;\n}\n\nfunction isSegmentFactory(\n segmentFactoryOrMaxTransferSize: SegmentFactory | number,\n): segmentFactoryOrMaxTransferSize is SegmentFactory {\n return (segmentFactoryOrMaxTransferSize as SegmentFactory).create !== undefined;\n}\n\nexport class ChangeFeedFactory {\n private readonly segmentFactory: SegmentFactory;\n private readonly maxTransferSize?: number;\n\n constructor(maxTransferSize?: number);\n constructor(segmentFactory: SegmentFactory);\n constructor(segmentFactoryOrMaxTransferSize?: SegmentFactory | number) {\n let segmentFactory: SegmentFactory | undefined;\n if (segmentFactoryOrMaxTransferSize) {\n if (Number.isFinite(segmentFactoryOrMaxTransferSize)) {\n this.maxTransferSize = segmentFactoryOrMaxTransferSize as number;\n } else if (isSegmentFactory(segmentFactoryOrMaxTransferSize)) {\n segmentFactory = segmentFactoryOrMaxTransferSize as SegmentFactory;\n }\n }\n\n if (segmentFactory) {\n this.segmentFactory = segmentFactory;\n } else {\n this.segmentFactory = new SegmentFactory(\n new ShardFactory(\n new ChunkFactory(\n new AvroReaderFactory(),\n new LazyLoadingBlobStreamFactory(),\n this.maxTransferSize,\n ),\n ),\n );\n }\n }\n\n private static validateCursor(containerClient: ContainerClient, cursor: ChangeFeedCursor): void {\n if (getHost(containerClient.url) !== cursor.UrlHost) {\n throw new Error(\"Cursor URL host does not match container URL host.\");\n }\n if (cursor.CursorVersion !== 1) {\n throw new Error(\"Unsupported cursor version.\");\n }\n }\n\n public async create(\n blobServiceClient: BlobServiceClient,\n continuationToken?: string,\n options: BlobChangeFeedListChangesOptions = {},\n ): Promise<ChangeFeed> {\n return tracingClient.withSpan(\"ChangeFeedFactory-create\", options, async (updatedOptions) => {\n const containerClient = blobServiceClient.getContainerClient(CHANGE_FEED_CONTAINER_NAME);\n let cursor: ChangeFeedCursor | undefined = undefined;\n // Create cursor.\n if (continuationToken) {\n cursor = JSON.parse(continuationToken);\n ChangeFeedFactory.validateCursor(containerClient, cursor!);\n options.start = parseDateFromSegmentPath(cursor!.CurrentSegmentCursor.SegmentPath!);\n options.end = new Date(cursor!.EndTime!);\n }\n // Round start and end time if we are not using the cursor.\n else {\n options.start = floorToNearestHour(options.start);\n options.end = ceilToNearestHour(options.end);\n }\n\n // Check if Change Feed has been enabled for this account.\n const changeFeedContainerExists = await containerClient.exists({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n if (!changeFeedContainerExists) {\n throw new Error(\n \"Change Feed hasn't been enabled on this account, or is currently being enabled.\",\n );\n }\n\n if (options.start && options.end && options.start >= options.end) {\n return new ChangeFeed();\n }\n\n // Get last consumable.\n const blobClient = containerClient.getBlobClient(CHANGE_FEED_META_SEGMENT_PATH);\n let blobDownloadRes;\n try {\n blobDownloadRes = await blobClient.download(undefined, undefined, {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n } catch (err: any) {\n if (err.statusCode === 404) {\n return new ChangeFeed();\n } else {\n throw err;\n }\n }\n const lastConsumable = new Date(\n (JSON.parse(await bodyToString(blobDownloadRes)) as MetaSegments).lastConsumable,\n );\n\n // Get year paths\n const years: number[] = await getYearsPaths(containerClient, {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n\n // Dequeue any years that occur before start time.\n if (options.start) {\n const startYear = options.start.getUTCFullYear();\n while (years.length > 0 && years[0] < startYear) {\n years.shift();\n }\n }\n if (years.length === 0) {\n return new ChangeFeed();\n }\n\n let segments: string[] = [];\n while (segments.length === 0 && years.length !== 0) {\n segments = await getSegmentsInYear(\n containerClient,\n years.shift()!,\n options.start,\n minDate(lastConsumable, options.end),\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n }\n if (segments.length === 0) {\n return new ChangeFeed();\n }\n const currentSegment: Segment = await this.segmentFactory.create(\n containerClient,\n segments.shift()!,\n cursor?.CurrentSegmentCursor,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n\n return new ChangeFeed(\n containerClient,\n this.segmentFactory,\n years,\n segments,\n currentSegment,\n lastConsumable,\n options.start,\n options.end,\n );\n });\n }\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import type { AvroReader, AvroParseOptions } from "@azure/storage-internal-avro";
2
+ import type { BlobChangeFeedEvent } from "./models/BlobChangeFeedEvent.js";
3
+ import type { CommonOptions } from "@azure/storage-blob";
4
+ import type { AbortSignalLike } from "@azure/abort-controller";
5
+ /**
6
+ * Options to configure {@link Chunk.getChange} operation.
7
+ */
8
+ export interface ChunkGetChangeOptions extends CommonOptions {
9
+ /**
10
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
11
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
12
+ */
13
+ abortSignal?: AbortSignalLike;
14
+ }
15
+ export declare class Chunk {
16
+ readonly chunkPath: string;
17
+ private readonly avroReader;
18
+ private readonly iter;
19
+ private _blockOffset;
20
+ get blockOffset(): number;
21
+ private _eventIndex;
22
+ get eventIndex(): number;
23
+ constructor(avroReader: AvroReader, blockOffset: number, eventIndex: number, chunkPath: string, avroOptions?: AvroParseOptions);
24
+ hasNext(): boolean;
25
+ getChange(): Promise<BlobChangeFeedEvent | undefined>;
26
+ }
27
+ //# sourceMappingURL=Chunk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chunk.d.ts","sourceRoot":"","sources":["../../src/Chunk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,qBAAa,KAAK;aAkBE,SAAS,EAAE,MAAM;IAjBnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoD;IAEzE,OAAO,CAAC,YAAY,CAAS;IAC7B,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,OAAO,CAAC,WAAW,CAAS;IAC5B,IAAW,UAAU,IAAI,MAAM,CAE9B;gBAGC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EACF,SAAS,EAAE,MAAM,EACjC,WAAW,GAAE,gBAAqB;IAS7B,OAAO,IAAI,OAAO;IAIZ,SAAS,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;CAmBnE"}
@@ -0,0 +1,45 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { rawEventToBlobChangeFeedEvent } from "./utils/utils.common.js";
4
+ export class Chunk {
5
+ chunkPath;
6
+ avroReader;
7
+ iter;
8
+ _blockOffset;
9
+ get blockOffset() {
10
+ return this._blockOffset;
11
+ }
12
+ _eventIndex;
13
+ get eventIndex() {
14
+ return this._eventIndex;
15
+ }
16
+ constructor(avroReader, blockOffset, eventIndex, chunkPath, avroOptions = {}) {
17
+ this.chunkPath = chunkPath;
18
+ this.avroReader = avroReader;
19
+ this._blockOffset = blockOffset;
20
+ this._eventIndex = eventIndex;
21
+ this.iter = this.avroReader.parseObjects(avroOptions);
22
+ }
23
+ hasNext() {
24
+ return this.avroReader.hasNext();
25
+ }
26
+ async getChange() {
27
+ if (!this.hasNext()) {
28
+ return undefined;
29
+ }
30
+ const next = await this.iter.next();
31
+ this._eventIndex = this.avroReader.objectIndex;
32
+ this._blockOffset = this.avroReader.blockOffset;
33
+ if (next.done) {
34
+ return undefined;
35
+ }
36
+ else {
37
+ const eventRaw = next.value;
38
+ if (eventRaw === null) {
39
+ return undefined;
40
+ }
41
+ return rawEventToBlobChangeFeedEvent(eventRaw);
42
+ }
43
+ }
44
+ }
45
+ //# sourceMappingURL=Chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chunk.js","sourceRoot":"","sources":["../../src/Chunk.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAMlC,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAaxE,MAAM,OAAO,KAAK;IAkBE;IAjBD,UAAU,CAAa;IACvB,IAAI,CAAoD;IAEjE,YAAY,CAAS;IAC7B,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,WAAW,CAAS;IAC5B,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,YACE,UAAsB,EACtB,WAAmB,EACnB,UAAkB,EACF,SAAiB,EACjC,cAAgC,EAAE;QADlB,cAAS,GAAT,SAAS,CAAQ;QAGjC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,SAAS;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AvroReader, AvroParseOptions } from \"@azure/storage-internal-avro\";\nimport type { BlobChangeFeedEvent } from \"./models/BlobChangeFeedEvent.js\";\nimport type { CommonOptions } from \"@azure/storage-blob\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { rawEventToBlobChangeFeedEvent } from \"./utils/utils.common.js\";\n\n/**\n * Options to configure {@link Chunk.getChange} operation.\n */\nexport interface ChunkGetChangeOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport class Chunk {\n private readonly avroReader: AvroReader;\n private readonly iter: AsyncIterableIterator<Record<string, any> | null>;\n\n private _blockOffset: number;\n public get blockOffset(): number {\n return this._blockOffset;\n }\n\n private _eventIndex: number;\n public get eventIndex(): number {\n return this._eventIndex;\n }\n\n constructor(\n avroReader: AvroReader,\n blockOffset: number,\n eventIndex: number,\n public readonly chunkPath: string,\n avroOptions: AvroParseOptions = {},\n ) {\n this.avroReader = avroReader;\n this._blockOffset = blockOffset;\n this._eventIndex = eventIndex;\n\n this.iter = this.avroReader.parseObjects(avroOptions);\n }\n\n public hasNext(): boolean {\n return this.avroReader.hasNext();\n }\n\n public async getChange(): Promise<BlobChangeFeedEvent | undefined> {\n if (!this.hasNext()) {\n return undefined;\n }\n\n const next = await this.iter.next();\n this._eventIndex = this.avroReader.objectIndex;\n this._blockOffset = this.avroReader.blockOffset;\n if (next.done) {\n return undefined;\n } else {\n const eventRaw = next.value;\n if (eventRaw === null) {\n return undefined;\n }\n\n return rawEventToBlobChangeFeedEvent(eventRaw);\n }\n }\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import type { AvroReaderFactory } from "./AvroReaderFactory.js";
2
+ import type { ContainerClient, CommonOptions } from "@azure/storage-blob";
3
+ import { Chunk } from "./Chunk.js";
4
+ import type { AbortSignalLike } from "@azure/abort-controller";
5
+ import type { LazyLoadingBlobStreamFactory } from "./LazyLoadingBlobStreamFactory.js";
6
+ /**
7
+ * Options to configure {@link ChunkFactory.create} operation.
8
+ */
9
+ export interface CreateChunkOptions extends CommonOptions {
10
+ /**
11
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
12
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
13
+ */
14
+ abortSignal?: AbortSignalLike;
15
+ }
16
+ export declare class ChunkFactory {
17
+ private readonly avroReaderFactory;
18
+ private readonly lazyLoadingBlobStreamFactory;
19
+ private readonly maxTransferSize?;
20
+ constructor(avroReaderFactory: AvroReaderFactory, lazyLoadingBlobStreamFactory: LazyLoadingBlobStreamFactory, maxTransferSize?: number);
21
+ create(containerClient: ContainerClient, chunkPath: string, blockOffset?: number, eventIndex?: number, options?: CreateChunkOptions): Promise<Chunk>;
22
+ }
23
+ //# sourceMappingURL=ChunkFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChunkFactory.d.ts","sourceRoot":"","sources":["../../src/ChunkFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAItF;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+B;IAC5E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;gBAGxC,iBAAiB,EAAE,iBAAiB,EACpC,4BAA4B,EAAE,4BAA4B,EAC1D,eAAe,CAAC,EAAE,MAAM;IAOb,MAAM,CACjB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,KAAK,CAAC;CAiClB"}
@@ -0,0 +1,33 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { Chunk } from "./Chunk.js";
4
+ import { streamToAvroReadable } from "./utils/utils.node.js";
5
+ import { CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE } from "./utils/constants.js";
6
+ export class ChunkFactory {
7
+ avroReaderFactory;
8
+ lazyLoadingBlobStreamFactory;
9
+ maxTransferSize;
10
+ constructor(avroReaderFactory, lazyLoadingBlobStreamFactory, maxTransferSize) {
11
+ this.avroReaderFactory = avroReaderFactory;
12
+ this.lazyLoadingBlobStreamFactory = lazyLoadingBlobStreamFactory;
13
+ this.maxTransferSize = maxTransferSize;
14
+ }
15
+ async create(containerClient, chunkPath, blockOffset, eventIndex, options = {}) {
16
+ const blobClient = containerClient.getBlobClient(chunkPath);
17
+ blockOffset = blockOffset || 0;
18
+ eventIndex = eventIndex || 0;
19
+ const dataStream = streamToAvroReadable(this.lazyLoadingBlobStreamFactory.create(blobClient, blockOffset, this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE, options));
20
+ let avroReader;
21
+ if (blockOffset !== 0) {
22
+ const headerStream = streamToAvroReadable(this.lazyLoadingBlobStreamFactory.create(blobClient, 0, this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE, options));
23
+ avroReader = this.avroReaderFactory.create(dataStream, headerStream, blockOffset, eventIndex);
24
+ }
25
+ else {
26
+ avroReader = this.avroReaderFactory.create(dataStream);
27
+ }
28
+ return new Chunk(avroReader, blockOffset, eventIndex, chunkPath, {
29
+ abortSignal: options.abortSignal,
30
+ });
31
+ }
32
+ }
33
+ //# sourceMappingURL=ChunkFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChunkFactory.js","sourceRoot":"","sources":["../../src/ChunkFactory.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,qCAAqC,EAAE,MAAM,sBAAsB,CAAC;AAc7E,MAAM,OAAO,YAAY;IACN,iBAAiB,CAAoB;IACrC,4BAA4B,CAA+B;IAC3D,eAAe,CAAU;IAE1C,YACE,iBAAoC,EACpC,4BAA0D,EAC1D,eAAwB;QAExB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;QACjE,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,eAAgC,EAChC,SAAiB,EACjB,WAAoB,EACpB,UAAmB,EACnB,UAA8B,EAAE;QAEhC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5D,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC;QAC/B,UAAU,GAAG,UAAU,IAAI,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAG,oBAAoB,CACrC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CACtC,UAAU,EACV,WAAW,EACX,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,qCAAqC,EACnF,OAAO,CACR,CACF,CAAC;QAEF,IAAI,UAAsB,CAAC;QAC3B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,oBAAoB,CACvC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CACtC,UAAU,EACV,CAAC,EACD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,qCAAqC,EACnF,OAAO,CACR,CACF,CAAC;YACF,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE;YAC/D,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AvroReaderFactory } from \"./AvroReaderFactory.js\";\nimport type { ContainerClient, CommonOptions } from \"@azure/storage-blob\";\nimport { Chunk } from \"./Chunk.js\";\nimport { streamToAvroReadable } from \"./utils/utils.node.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { LazyLoadingBlobStreamFactory } from \"./LazyLoadingBlobStreamFactory.js\";\nimport { CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE } from \"./utils/constants.js\";\nimport type { AvroReader } from \"@azure/storage-internal-avro\";\n\n/**\n * Options to configure {@link ChunkFactory.create} operation.\n */\nexport interface CreateChunkOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\nexport class ChunkFactory {\n private readonly avroReaderFactory: AvroReaderFactory;\n private readonly lazyLoadingBlobStreamFactory: LazyLoadingBlobStreamFactory;\n private readonly maxTransferSize?: number;\n\n constructor(\n avroReaderFactory: AvroReaderFactory,\n lazyLoadingBlobStreamFactory: LazyLoadingBlobStreamFactory,\n maxTransferSize?: number,\n ) {\n this.avroReaderFactory = avroReaderFactory;\n this.lazyLoadingBlobStreamFactory = lazyLoadingBlobStreamFactory;\n this.maxTransferSize = maxTransferSize;\n }\n\n public async create(\n containerClient: ContainerClient,\n chunkPath: string,\n blockOffset?: number,\n eventIndex?: number,\n options: CreateChunkOptions = {},\n ): Promise<Chunk> {\n const blobClient = containerClient.getBlobClient(chunkPath);\n blockOffset = blockOffset || 0;\n eventIndex = eventIndex || 0;\n\n const dataStream = streamToAvroReadable(\n this.lazyLoadingBlobStreamFactory.create(\n blobClient,\n blockOffset,\n this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE,\n options,\n ),\n );\n\n let avroReader: AvroReader;\n if (blockOffset !== 0) {\n const headerStream = streamToAvroReadable(\n this.lazyLoadingBlobStreamFactory.create(\n blobClient,\n 0,\n this.maxTransferSize ? this.maxTransferSize : CHANGE_FEED_CHUNK_BLOCK_DOWNLOAD_SIZE,\n options,\n ),\n );\n avroReader = this.avroReaderFactory.create(dataStream, headerStream, blockOffset, eventIndex);\n } else {\n avroReader = this.avroReaderFactory.create(dataStream);\n }\n\n return new Chunk(avroReader, blockOffset, eventIndex, chunkPath, {\n abortSignal: options.abortSignal,\n });\n }\n}\n"]}
@@ -0,0 +1,46 @@
1
+ import type { ReadableOptions } from "node:stream";
2
+ import { Readable } from "node:stream";
3
+ import type { BlobClient, CommonOptions } from "@azure/storage-blob";
4
+ import type { AbortSignalLike } from "@azure/abort-controller";
5
+ /**
6
+ * Options to configure the LazyLoadingBlobStream.
7
+ */
8
+ export interface LazyLoadingBlobStreamOptions extends ReadableOptions, CommonOptions {
9
+ /**
10
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
11
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
12
+ */
13
+ abortSignal?: AbortSignalLike;
14
+ }
15
+ /**
16
+ * This class generates a readable stream from a blobClient's data.
17
+ */
18
+ export declare class LazyLoadingBlobStream extends Readable {
19
+ /**
20
+ * BlobClient to make download calls with.
21
+ */
22
+ private readonly blobClient;
23
+ /**
24
+ * The offset within the blob of the next block we will download.
25
+ */
26
+ private offset;
27
+ private readonly blockSize;
28
+ private lastDownloadBytes;
29
+ private lastDownloadData?;
30
+ private blobLength;
31
+ private options?;
32
+ /**
33
+ * Creates an instance of LazyLoadingBlobStream.
34
+ *
35
+ * @param byteLength - The total length of data contained in the buffers
36
+ */
37
+ constructor(blobClient: BlobClient, offset: number, blockSize: number, options?: LazyLoadingBlobStreamOptions);
38
+ private downloadBlock;
39
+ /**
40
+ * Internal _read() that will be called when the stream wants to pull more data in.
41
+ *
42
+ * @param size - Optional. The size of data to be read
43
+ */
44
+ _read(size?: number): Promise<void>;
45
+ }
46
+ //# sourceMappingURL=LazyLoadingBlobStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyLoadingBlobStream.d.ts","sourceRoot":"","sources":["../../src/LazyLoadingBlobStream.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,eAAe,EAAE,aAAa;IAClF;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAUD;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAElC,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,OAAO,CAAC,CAA+B;IAE/C;;;;OAIG;gBAED,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,4BAA4B;YAW1B,aAAa;IA8B3B;;;;OAIG;IACU,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoCjD"}
@@ -0,0 +1,92 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { Readable } from "node:stream";
4
+ import { tracingClient } from "./utils/tracing.js";
5
+ /**
6
+ * This class generates a readable stream from a blobClient's data.
7
+ */
8
+ export class LazyLoadingBlobStream extends Readable {
9
+ /**
10
+ * BlobClient to make download calls with.
11
+ */
12
+ blobClient;
13
+ /**
14
+ * The offset within the blob of the next block we will download.
15
+ */
16
+ offset;
17
+ blockSize;
18
+ lastDownloadBytes;
19
+ lastDownloadData;
20
+ blobLength;
21
+ options;
22
+ /**
23
+ * Creates an instance of LazyLoadingBlobStream.
24
+ *
25
+ * @param byteLength - The total length of data contained in the buffers
26
+ */
27
+ constructor(blobClient, offset, blockSize, options) {
28
+ super(options);
29
+ this.blobClient = blobClient;
30
+ this.offset = offset;
31
+ this.blockSize = blockSize;
32
+ this.lastDownloadBytes = -1;
33
+ this.blobLength = -1;
34
+ this.options = options;
35
+ }
36
+ async downloadBlock(options = {}) {
37
+ return tracingClient.withSpan("LazyLoadingBlobStream-downloadBlock", options, async (updatedOptions) => {
38
+ const properties = await this.blobClient.getProperties({
39
+ abortSignal: options.abortSignal,
40
+ tracingOptions: updatedOptions.tracingOptions,
41
+ });
42
+ this.blobLength = properties.contentLength;
43
+ this.lastDownloadBytes = Math.min(this.blockSize, this.blobLength - this.offset);
44
+ if (this.lastDownloadBytes === 0) {
45
+ this.lastDownloadData = undefined;
46
+ return;
47
+ }
48
+ this.lastDownloadData = await this.blobClient.downloadToBuffer(this.offset, this.lastDownloadBytes, {
49
+ abortSignal: options.abortSignal,
50
+ tracingOptions: updatedOptions.tracingOptions,
51
+ });
52
+ this.offset += this.lastDownloadBytes;
53
+ });
54
+ }
55
+ /**
56
+ * Internal _read() that will be called when the stream wants to pull more data in.
57
+ *
58
+ * @param size - Optional. The size of data to be read
59
+ */
60
+ async _read(size) {
61
+ return tracingClient.withSpan("LazyLoadingBlobStream-read", this.options ?? {}, async (updatedOptions) => {
62
+ if (!size) {
63
+ size = this.readableHighWaterMark;
64
+ }
65
+ let count = 0;
66
+ let chunkSize = 0;
67
+ const chunksToPush = [];
68
+ do {
69
+ if (this.lastDownloadData === undefined || this.lastDownloadData?.byteLength === 0) {
70
+ await this.downloadBlock({
71
+ abortSignal: this.options?.abortSignal,
72
+ tracingOptions: updatedOptions?.tracingOptions,
73
+ });
74
+ }
75
+ if (this.lastDownloadData?.byteLength) {
76
+ chunkSize = Math.min(size - count, this.lastDownloadData?.byteLength);
77
+ chunksToPush.push(this.lastDownloadData.slice(0, chunkSize));
78
+ this.lastDownloadData = this.lastDownloadData.slice(chunkSize);
79
+ count += chunkSize;
80
+ }
81
+ else {
82
+ chunkSize = 0;
83
+ }
84
+ } while (chunkSize > 0 && count < size);
85
+ this.push(Buffer.concat(chunksToPush));
86
+ if (count < size) {
87
+ this.push(null);
88
+ }
89
+ });
90
+ }
91
+ }
92
+ //# sourceMappingURL=LazyLoadingBlobStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyLoadingBlobStream.js","sourceRoot":"","sources":["../../src/LazyLoadingBlobStream.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ReadableOptions } from \"node:stream\";\nimport { Readable } from \"node:stream\";\nimport type { BlobClient, CommonOptions } from \"@azure/storage-blob\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { tracingClient } from \"./utils/tracing.js\";\n\n/**\n * Options to configure the LazyLoadingBlobStream.\n */\nexport interface LazyLoadingBlobStreamOptions extends ReadableOptions, CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\ninterface LazyLoadingBlobStreamDownloadBlockOptions extends CommonOptions {\n /**\n * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.\n * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.\n */\n abortSignal?: AbortSignalLike;\n}\n\n/**\n * This class generates a readable stream from a blobClient's data.\n */\nexport class LazyLoadingBlobStream extends Readable {\n /**\n * BlobClient to make download calls with.\n */\n private readonly blobClient: BlobClient;\n\n /**\n * The offset within the blob of the next block we will download.\n */\n private offset: number;\n\n private readonly blockSize: number;\n\n private lastDownloadBytes: number;\n\n private lastDownloadData?: Buffer;\n\n private blobLength: number;\n\n private options?: LazyLoadingBlobStreamOptions;\n\n /**\n * Creates an instance of LazyLoadingBlobStream.\n *\n * @param byteLength - The total length of data contained in the buffers\n */\n constructor(\n blobClient: BlobClient,\n offset: number,\n blockSize: number,\n options?: LazyLoadingBlobStreamOptions,\n ) {\n super(options);\n this.blobClient = blobClient;\n this.offset = offset;\n this.blockSize = blockSize;\n this.lastDownloadBytes = -1;\n this.blobLength = -1;\n this.options = options;\n }\n\n private async downloadBlock(options: LazyLoadingBlobStreamDownloadBlockOptions = {}) {\n return tracingClient.withSpan(\n \"LazyLoadingBlobStream-downloadBlock\",\n options,\n async (updatedOptions) => {\n const properties = await this.blobClient.getProperties({\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n });\n this.blobLength = properties.contentLength!;\n\n this.lastDownloadBytes = Math.min(this.blockSize, this.blobLength - this.offset);\n if (this.lastDownloadBytes === 0) {\n this.lastDownloadData = undefined;\n return;\n }\n\n this.lastDownloadData = await this.blobClient.downloadToBuffer(\n this.offset,\n this.lastDownloadBytes,\n {\n abortSignal: options.abortSignal,\n tracingOptions: updatedOptions.tracingOptions,\n },\n );\n this.offset += this.lastDownloadBytes;\n },\n );\n }\n\n /**\n * Internal _read() that will be called when the stream wants to pull more data in.\n *\n * @param size - Optional. The size of data to be read\n */\n public async _read(size?: number): Promise<void> {\n return tracingClient.withSpan(\n \"LazyLoadingBlobStream-read\",\n this.options ?? {},\n async (updatedOptions) => {\n if (!size) {\n size = this.readableHighWaterMark;\n }\n let count = 0;\n let chunkSize = 0;\n const chunksToPush = [];\n do {\n if (this.lastDownloadData === undefined || this.lastDownloadData?.byteLength === 0) {\n await this.downloadBlock({\n abortSignal: this.options?.abortSignal,\n tracingOptions: updatedOptions?.tracingOptions,\n });\n }\n if (this.lastDownloadData?.byteLength) {\n chunkSize = Math.min(size - count, this.lastDownloadData?.byteLength);\n chunksToPush.push(this.lastDownloadData.slice(0, chunkSize));\n this.lastDownloadData = this.lastDownloadData.slice(chunkSize);\n count += chunkSize;\n } else {\n chunkSize = 0;\n }\n } while (chunkSize > 0 && count < size);\n\n this.push(Buffer.concat(chunksToPush));\n\n if (count < size) {\n this.push(null);\n }\n },\n );\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { BlobClient } from "@azure/storage-blob";
2
+ import type { LazyLoadingBlobStreamOptions } from "./LazyLoadingBlobStream.js";
3
+ import { LazyLoadingBlobStream } from "./LazyLoadingBlobStream.js";
4
+ export declare class LazyLoadingBlobStreamFactory {
5
+ create(blobClient: BlobClient, offset: number, blockSize: number, options?: LazyLoadingBlobStreamOptions): LazyLoadingBlobStream;
6
+ }
7
+ //# sourceMappingURL=LazyLoadingBlobStreamFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyLoadingBlobStreamFactory.d.ts","sourceRoot":"","sources":["../../src/LazyLoadingBlobStreamFactory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,qBAAa,4BAA4B;IAChC,MAAM,CACX,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB;CAGzB"}
@@ -0,0 +1,9 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { LazyLoadingBlobStream } from "./LazyLoadingBlobStream.js";
4
+ export class LazyLoadingBlobStreamFactory {
5
+ create(blobClient, offset, blockSize, options) {
6
+ return new LazyLoadingBlobStream(blobClient, offset, blockSize, options);
7
+ }
8
+ }
9
+ //# sourceMappingURL=LazyLoadingBlobStreamFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyLoadingBlobStreamFactory.js","sourceRoot":"","sources":["../../src/LazyLoadingBlobStreamFactory.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAIlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,OAAO,4BAA4B;IAChC,MAAM,CACX,UAAsB,EACtB,MAAc,EACd,SAAiB,EACjB,OAAsC;QAEtC,OAAO,IAAI,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { BlobClient } from \"@azure/storage-blob\";\nimport type { LazyLoadingBlobStreamOptions } from \"./LazyLoadingBlobStream.js\";\nimport { LazyLoadingBlobStream } from \"./LazyLoadingBlobStream.js\";\n\nexport class LazyLoadingBlobStreamFactory {\n public create(\n blobClient: BlobClient,\n offset: number,\n blockSize: number,\n options?: LazyLoadingBlobStreamOptions,\n ): LazyLoadingBlobStream {\n return new LazyLoadingBlobStream(blobClient, offset, blockSize, options);\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import type { BlobChangeFeedEvent } from "./models/BlobChangeFeedEvent.js";
2
+ import type { Shard } from "./Shard.js";
3
+ import type { SegmentCursor } from "./models/ChangeFeedCursor.js";
4
+ import type { CommonOptions } from "@azure/storage-blob";
5
+ import type { AbortSignalLike } from "@azure/abort-controller";
6
+ /**
7
+ * Options to configure {@link Segment.getChange} operation.
8
+ */
9
+ export interface SegmentGetChangeOptions extends CommonOptions {
10
+ /**
11
+ * An implementation of the `AbortSignalLike` interface to signal the request to cancel the operation.
12
+ * For example, use the &commat;azure/abort-controller to create an `AbortSignal`.
13
+ */
14
+ abortSignal?: AbortSignalLike;
15
+ }
16
+ export declare class Segment {
17
+ private readonly manifestPath;
18
+ private readonly shards;
19
+ private shardDone;
20
+ private shardDoneCount;
21
+ private shardIndex;
22
+ private _dateTime;
23
+ get dateTime(): Date;
24
+ constructor(shards: Shard[], shardIndex: number, dateTime: Date, manifestPath: string);
25
+ hasNext(): boolean;
26
+ getChange(options?: SegmentGetChangeOptions): Promise<BlobChangeFeedEvent | undefined>;
27
+ getCursor(): SegmentCursor;
28
+ }
29
+ //# sourceMappingURL=Segment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Segment.d.ts","sourceRoot":"","sources":["../../src/Segment.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,8BAA8B,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,qBAAa,OAAO;IAoBhB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAnB/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAGjC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,UAAU,CAAS;IAI3B,OAAO,CAAC,SAAS,CAAO;IACxB,IAAW,QAAQ,IAAI,IAAI,CAE1B;gBAGC,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,IAAI,EACG,YAAY,EAAE,MAAM;IAUhC,OAAO,IAAI,OAAO;IAIZ,SAAS,CACpB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IA8BpC,SAAS,IAAI,aAAa;CAelC"}